CreaRack-SL

s60 — Paridad funcional mobile con DesktopA (V1HomeVivo + BottomNav)

Resumen

El sprint s60 cierra el drift funcional acumulado entre la experiencia desktop y mobile de CreaRack Pro. Tras el refresh visual del workspace (s50–s56), DesktopA incorporó nuevas secciones y herramientas que no se propagaron al HOME mobile. Este sprint corrige eso sin alterar el diseño visual mobile ya consolidado.

Commit: 06a9c518b6a89398d91d41effe00d12393178f5b
Autor: @Esquembri
Fecha: 2026-05-13


Problema que resuelve

ÁreaSituación antes de s60
BottomNav → grupo OperacionesSolo 5 ítems; Hub /tools, Cuaderno, Quick Links, Direcciones inexistentes en mobile
V1HomeVivo → saludoSiempre estático (greeting() + user); DesktopA ya usaba /api/dashboard-message
V1HomeVivo → seccionesSin Noticias ni Salud del sistema; DesktopA las tenía desde s52
V1HomeVivo → FAB3 acciones; faltaba “Nota Cuaderno” → /tools/notebook?new=1

Cambios implementados

1. BottomNav — NavDivider y tools nuevas

  • Nuevo tipo NavDivider { divider: true; label: string } y union NavChild = NavLink | NavDivider.
  • Type guard isDivider() — protege isActiveItem y el renderer del dropup.
  • Grupo “Operaciones” ampliado a 9 ítems con divisor visual “Herramientas”.
  • Renderer del dropup renderiza el divisor como separador tipográfico (uppercase, fg-muted, borderTop).

2. V1HomeVivo — dashboard-message dinámico

  • useState<string|null> + useEffect que llama /api/dashboard-message solo en viewport ≤ 768 px.
  • Si la API devuelve { title }, el saludo estático se reemplaza por el headline dinámico.

3. V1HomeVivo — sección Noticias

  • useMobileData amplía Promise.all con fetchJson<ApiNews[]>('/api/news?limit=3').
  • 3 cards navegables con ★ pinned, chip categoría, fecha relativa (newsRelativeDate), título.
  • Estados loading/empty con border dashed. CTA “Ver todas” → /news.

4. V1HomeVivo — sección Salud del sistema

  • useMobileData amplía Promise.all con fetchJson<ApiHealthRow[]>('/api/health').
  • Card único con estado global (healthOverall) + hasta 4 sensores con dot de color y valor monospace.
  • CTAs: “Ayuda” y “Pulse” → /biblioteca/pulse.

5. V1HomeVivo — FAB ampliado

  • Añadida opción “Nota Cuaderno” (📓) → /tools/notebook?new=1.

Principio de diseño aplicado

Paridad funcional, no paridad visual.
El diseño mobile (sticky header, cards radius 14, SectionLabel uppercase, FAB con rotación 45°, BottomNav 5 grupos) se mantiene intacto. Solo se añade contenido y lógica donde había déficit funcional.


Archivos modificados

ArchivoTipo de cambio
src/components/shell/BottomNav.tsxNuevos tipos, 4 ítems + divisor, renderer actualizado
src/components/variants/mobile/V1HomeVivo.tsx3 secciones nuevas, headline dinámico, FAB ampliado

Véase también

  • [[entity—mobile—component—bottomnav]]
  • [[entity—mobile—component—v1homevivo]]
  • [[entity—monitoring—endpoint—health]]
  • [[entity—news—endpoint—news]]
  • [[entity—dashboard—endpoint—dashboard-message]]