From 11621339d90e6d6b33cbbc9ac5afb44b0da1f4a1 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Thu, 29 Jan 2026 12:11:17 +0100 Subject: [PATCH] ui: refresh communities page --- frontend/src/layouts/Layout.astro | 144 ++++++++++ frontend/src/pages/communities.astro | 401 +++++++++++++++++++-------- 2 files changed, 425 insertions(+), 120 deletions(-) diff --git a/frontend/src/layouts/Layout.astro b/frontend/src/layouts/Layout.astro index 839bcdd..551005c 100644 --- a/frontend/src/layouts/Layout.astro +++ b/frontend/src/layouts/Layout.astro @@ -330,6 +330,150 @@ const publicDemoSite = isEnabled((globalThis as any).process?.env?.PUBLIC_DEMO_S :where(button):active { transform: translateY(1px); } + + :root { + --ui-container-max: 1200px; + --ui-page-pad-y: 2rem; + --ui-glass-bg: rgba(24, 24, 27, 0.65); + --ui-glass-border: rgba(255, 255, 255, 0.08); + --ui-soft-highlight: rgba(129, 140, 248, 0.16); + } + + .ui-container { + max-width: var(--ui-container-max); + margin: 0 auto; + padding: 0 2rem; + } + + .ui-page { + padding: var(--ui-page-pad-y) 0; + } + + .ui-page-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 1rem; + margin-bottom: 1.5rem; + } + + .ui-page-title h1 { + font-size: 2rem; + font-weight: 700; + letter-spacing: -0.02em; + margin: 0; + } + + .ui-subtitle { + color: var(--color-text-muted); + font-size: 0.9375rem; + margin-top: 0.25rem; + } + + .ui-actions { + display: flex; + align-items: center; + justify-content: flex-end; + gap: 0.75rem; + flex-wrap: wrap; + } + + .ui-card { + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + } + + .ui-card-glass { + background: var(--ui-glass-bg); + border-color: var(--ui-glass-border); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + } + + .ui-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.625rem 1rem; + border-radius: var(--radius-sm); + font-weight: 600; + font-size: 0.875rem; + line-height: 1; + white-space: nowrap; + } + + .ui-btn-primary { + background: var(--color-primary); + color: var(--color-on-primary); + } + + .ui-btn-primary:hover { + background: var(--color-primary-hover); + color: var(--color-on-primary); + transform: translateY(-1px); + box-shadow: 0 10px 30px rgba(99, 102, 241, 0.24); + } + + .ui-btn-secondary { + background: transparent; + border-color: var(--color-border); + color: var(--color-text); + } + + .ui-btn-secondary:hover { + border-color: var(--color-border-hover); + background: rgba(255, 255, 255, 0.06); + color: var(--color-text); + } + + :where(input.ui-input, select.ui-select) { + width: 100%; + border-radius: var(--radius-md); + } + + .ui-kpis { + display: flex; + gap: 0.75rem; + flex-wrap: wrap; + } + + .ui-kpi { + padding: 0.75rem 0.875rem; + border-radius: var(--radius-md); + border: 1px solid var(--color-border); + background: rgba(0, 0, 0, 0.18); + min-width: 140px; + } + + .ui-kpi-value { + font-size: 1.25rem; + font-weight: 700; + letter-spacing: -0.01em; + } + + .ui-kpi-label { + margin-top: 0.125rem; + color: var(--color-text-muted); + font-size: 0.8125rem; + } + + @media (max-width: 768px) { + .ui-container { + padding: 0 1rem; + } + + .ui-page-header { + flex-direction: column; + align-items: stretch; + } + + .ui-actions { + justify-content: flex-start; + } + }