Volver a la wiki

Sistema de utility classes mobile — mobile.css (shell s60)

Sistema de utility classes mobile — mobile.css (shell s60)

Contexto

En la sesión s60 (@Esquembri, 2026-05-13) se cerró una deuda técnica heredada de NEXT.md pre-s60: “V1HomeVivo mobile refactor — 64 estilos inline”. Incluyendo las secciones nuevas incorporadas en la misma sesión (Noticias, Salud sistema, FAB extendido), el total de estilos inline eliminados fue 92 (81 en V1HomeVivo.tsx + 11 en BottomNav.tsx).

Estrategia

Resultado cuantitativo

ComponenteInline antesInline despuésReducción
V1HomeVivo.tsx81693 %
BottomNav.tsx110100 %
Total92693 %

Los 6 inline restantes en V1HomeVivo son CSS custom properties dinámicas legítimas — valores que cambian por instancia y que las utility classes consumen vía var():

CSS varDónde se aplicaTipo de valor
--avatar-bgAvatar usuario / PersonChipGradiente generado por nombre
--prio-colorTaskRow · punto de prioridadColor semántico por prioridad
--health-colorHealthCardColor de estado global del sistema
--row-colorFilas de sensor en saludColor por estado de sensor
--fab-bg / --fab-fgIconos FAB extendidoColor por acción rápida
--quick-bg / --quick-fgQuickCard accesosColor de tema por shortcut

Patrones canónicos extraídos

Shell raíz

Cabecera sticky

Indicadores de estado

Avatar

Bloque de saludo

Secciones

Contenedores de filas

Tarjetas

Alerta banner

Tarea (TaskRow)

Persona (PersonChip)

Noticia (NewsCard)

Acceso rápido (QuickCard)

Salud del sistema (HealthCard)

FAB (Floating Action Button)

Convención data-* en lugar de clases condicionales

BottomNav abandonó el patrón color: showActive ? 'var(--accent)' : 'var(--fg-muted)' inline. Ahora usa data-active={showActive} en el elemento DOM y las clases utility aplican el color vía selector de atributo CSS:

.mobile-nav-link[data-active="true"] { color: var(--accent); }
.mobile-nav-link:not([data-active="true"]) { color: var(--fg-muted); }

El mismo patrón se aplica a .mobile-task-row[data-done], .mobile-task-check[data-checked], .mobile-task-title[data-done].

Mejoras de accesibilidad incluidas

Archivos tocados

ArchivoCambio
src/styles/mobile.cssNuevo — ~440 LOC, utility classes del shell mobile completo
src/components/variants/mobile/V1HomeVivo.tsxRefactor — 81 → 6 inline (−93 %)
src/components/shell/BottomNav.tsxRefactor — 11 → 0 inline (−100 %)
src/layouts/AppLayout.astroImport de mobile.css tras tools.css

Véase también

Subir