From 2184eb277c335e5458b128f8794961fe43926042 Mon Sep 17 00:00:00 2001 From: brobert Date: Thu, 16 Oct 2025 00:28:15 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20sustituir=20header=20m=C3=B3vil=20por?= =?UTF-8?q?=20tabbar=20y=20a=C3=B1adir=20logout=20en=20m=C3=B3vil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: aider (openrouter/openai/gpt-5) --- apps/web/src/lib/ui/layout/AppShell.svelte | 61 ++++++++++++++++++++-- apps/web/src/routes/+layout.svelte | 44 ++++++++++------ 2 files changed, 85 insertions(+), 20 deletions(-) diff --git a/apps/web/src/lib/ui/layout/AppShell.svelte b/apps/web/src/lib/ui/layout/AppShell.svelte index 828d3fd..9a87534 100644 --- a/apps/web/src/lib/ui/layout/AppShell.svelte +++ b/apps/web/src/lib/ui/layout/AppShell.svelte @@ -1,6 +1,13 @@
@@ -18,6 +25,11 @@
+ + + @@ -43,6 +55,12 @@ 📅 Calendarios +
+ +
@@ -123,6 +141,11 @@ padding-bottom: var(--space-4); } + /* Barra superior móvil oculta por defecto */ + .mobile-topbar { + display: none; + } + /* Barra de pestañas inferior (solo móvil) */ .tabbar { position: fixed; @@ -139,10 +162,11 @@ @media (max-width: 768px) { .tabbar { display: grid; - grid-template-columns: repeat(4, 1fr); + grid-template-columns: repeat(5, 1fr); align-items: center; } - .tabbar a { + .tabbar a, + .tabbar button { display: inline-flex; align-items: center; justify-content: center; @@ -150,6 +174,15 @@ padding: 6px 8px; color: inherit; text-decoration: none; + background: transparent; + border: none; + } + .tabbar form.logout-tab { + display: flex; + align-items: center; + justify-content: center; + margin: 0; + padding: 0; } .tabbar a.active { color: var(--color-primary); @@ -163,8 +196,9 @@ font-size: 12px; line-height: 1; } - /* Reservar espacio en el main para no tapar contenido */ + /* Reservar espacio en el main para no tapar contenido y la barra superior */ .main { + padding-top: calc(var(--space-4) + 44px + env(safe-area-inset-top)); padding-bottom: calc(var(--space-4) + 48px + env(safe-area-inset-bottom)); } } @@ -173,4 +207,25 @@ display: none; } } + + /* Ocultar header y mostrar topbar en móvil */ + @media (max-width: 768px) { + .app-header { display: none; } + .mobile-topbar { + display: block; + position: sticky; + top: 0; + z-index: 12; + background: var(--color-surface); + border-bottom: 1px solid var(--color-border); + min-height: 44px; + padding-top: env(safe-area-inset-top); + } + .mobile-topbar .topbar-inner { + display: flex; + align-items: center; + min-height: 44px; + font-weight: 600; + } + } diff --git a/apps/web/src/routes/+layout.svelte b/apps/web/src/routes/+layout.svelte index 5dd0f87..2e4d676 100644 --- a/apps/web/src/routes/+layout.svelte +++ b/apps/web/src/routes/+layout.svelte @@ -12,26 +12,36 @@ {#if dev}
+ aria-live="polite"> Modo desarrollo: auth bypass activo
{/if} + +