Skip to content

Design Tokens — Mush2 Frontend ​

Sistema de tokens centralizado. Todos los valores provienen de :root en src/index.css. Regla férrea: Ningún componente debe usar valores hardcodeados. Siempre referenciar la variable CSS.


1. Color ​

1.1 Semantic palette ​

TokenValorUso
--spore-green#6bfb9aAcción primaria, elementos activos, acento principal
--teal#44e2cdAcento secundario, hover state en sidebar
--amber#ffb657Advertencia, estado de alerta media
--error-red#ffb4abError, estado crítico, peligro
--spore-glowrgba(74, 222, 128, 0.2)Sombra glow de elementos activos

1.2 Surface hierarchy ​

TokenValorRol
--bg-deep#0a0f0dFondo raíz (body)
--surface-container-lowest#0a0f0dNivel más profundo (alias de bg-deep)
--surface-dim#0f1412Superficie base de paneles
--surface-container-low#181d1aSidebar, fondos secundarios
--surface-container#1c211eCards, contenedores estándar
--surface-container-high#262b29Hover de cards, headers de sección
--surface-container-highest#313633Input backgrounds, variante elevada
--surface-variant#313633Variante de superficie, item activo
--surface-bright#353a38Superficie brillante, hover de botones

1.3 Outline ​

TokenValorUso
--outline-variant#3d4a3eBordes sutiles de cards, separadores
--outline#869486Bordes fuertes, íconos inactivos

1.4 Texto (On-colors) ​

TokenValorUso
--on-surface#dfe4e0Texto principal sobre superficies
--on-surface-variant#bccabbTexto secundario, labels, metadata
--on-primary#003919Texto sobre fondo primary (btn-primary)
--on-primary-container#005e2dTexto sobre primary-container
--on-error#690005Texto sobre fondo error
--on-error-container#ffdad6Texto sobre error-container

1.5 Containers ​

TokenValorUso
--primary-container#4ade80Fondo de contenedor primario (badges, alerts)
--error-container#93000aFondo de contenedor de error

1.6 Legacy aliases (compatibilidad) ​

AliasResuelve aMigrar a
--bg--surface-dimUsar --surface-dim
--surface--surface-containerUsar --surface-container
--surface2--outline-variantUsar --outline-variant
--text--on-surfaceUsar --on-surface
--text2--on-surface-variantUsar --on-surface-variant
--accent--spore-greenUsar --spore-green
--green--spore-greenUsar --spore-green
--red--error-redUsar --error-red
--orange--amberUsar --amber
--radius--radius-lgUsar --radius-lg

Nota: Los aliases existen para componentes de la primera versión. Los componentes nuevos deben usar los tokens semánticos directamente.


2. Tipografía ​

2.1 Font families ​

TokenValorUso
--font-body'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serifBody, headings, texto general
--font-mono'JetBrains Mono', 'Fira Code', monospaceData displays, labels, terminal, código

2.2 Utility classes tipográficas ​

Clase CSSFontSizeWeightLetter-spacingUso
.text-label-caps--font-mono10px7000.1emLabels, badges, headers de sección
.text-headline-lg--font-body24px600normalTítulos de página, headlines grandes
.text-headline-md--font-body18px600normalSubtítulos, títulos de card
.text-body-md--font-body14px400normalPárrafos, contenido general
.text-data-sm--font-mono12px500normalData secundaria, timestamps
.text-display-data--font-mono48px600-0.02emValores numéricos grandes (responsive: 32px en mobile)

2.3 Size utility classes ​

Clases atómicas para casos específicos: .text-7px, .text-8px, .text-9px, .text-10px, .text-11px, .text-12px, .text-14px, .text-16px, .text-18px, .text-20px, .text-32px, .text-36px, .text-48px, .text-64px, .text-96px.


3. Espaciado ​

TokenValorUso
--space-unit4pxUnidad mínima de espaciado
--space-stack-sm8pxPadding interno pequeño, gap entre elementos relacionados
--space-stack-md16pxPadding interno estándar
--space-gutter12pxGap entre cards en grid
--space-container-padding24pxPadding de página (.app-content)

Gap utility classes: .gap-1 (4px), .gap-2 (8px), .gap-3 (12px), .gap-4 (16px), .gap-5 (20px), .gap-6 (24px), .gap-8 (32px).

Padding/Margin: .p-4 (16px), .p-5 (20px), .py-20 (80px), .px-6 (24px), .mt-2 (8px), .mb-4 (16px), etc.


4. Border radius ​

TokenValorUso
--radius-xs4pxSkeleton lines, segmentos pequeños
--radius-sm6pxInputs, icon buttons
--radius-md8pxCards estándar, botones, paneles
--radius-lg12pxGlass cards, modales, contenedores principales
--radius-xl16pxPaneles grandes, contenedores especiales
--radius-full9999pxBadges, dots, toggle switch, pills

5. Efectos y sombras ​

TokenValorUso
--glow-primary0 0 12px rgba(74, 222, 128, 0.2)Sombra glow en elementos primarios activos
--glow-error0 0 12px rgba(255, 180, 171, 0.3)Sombra glow en estados de error
--glass-bgrgba(19, 26, 23, 0.8)Fondo de glass cards (backdrop-filter: blur)
--glass-border#1f2924Borde de glass cards

Clases de glow utilitarias:

  • .active-glow → box-shadow: var(--glow-primary)
  • .active-glow-error → box-shadow: var(--glow-error)

6. Animaciones ​

6.1 Keyframes definidos ​

NombrePropósitoDuración
shimmerSkeleton loading shimmer1.5s infinite
breathePulso de opacidad y escala3s ease-in-out infinite
breathe-nodeBreathing nodes decorativos6s ease-in-out infinite
pulse-glowGlow pulsante con drop-shadow2s ease-in-out infinite
pulse-glow-animGlow con opacidad + filter (status)2s / 3s infinite
status-pulseStatus dot pulse2s cubic-bezier infinite
pulseOpacidad simple2s cubic-bezier infinite
pulse-slowEscala + opacidad lenta4s ease-in-out infinite
spinRotación 360°1s linear infinite
drawPathDash-offset para líneas SVG10s linear infinite
scanLínea de escaneo vertical4s linear infinite
glitchWaveGlitch horizontal2s infinite linear
fadeInOpacidad 0→10.3s
slideUpOpacidad + translateY0.3s
slideDownOpacidad + translateY (-8px)0.3s
shakeTranslateX alternado0.3s

6.2 Clases de animación ​

ClaseAnimaciónUso típico
.breathing-pulsebreatheLEDs activos, dots de estado, nodos SVG
.bioluminescent-pathdrawPathLíneas decorativas SVG
.glow-pulsepulse-glowBotones primarios, cards activas
.shimmer / .skeleton-shimmershimmerSkeleton loading
.status-dot.pulsestatus-pulseDots de estado online/critical
.animate-pulsepulseOpacidad simple
.animate-spinspinLoaders, íconos de carga
.animate-pulse-slowpulse-slowElementos decorativos
.status-glow-runningpulse-glow-animIndicadores de estado running
.status-glow-pausedpulse-glow-anim (3s)Indicadores de estado paused

7. Layout shell ​

Variable implícitaValorUso
Sidebar width (desktop)80pxNavegación principal
Sidebar width (tablet)64pxNavegación colapsada
TopBar height64pxBarra superior fija
StatusFooter height32pxBarra de estado inferior
BottomNav height64pxNavegación mobile
.app-content margin-left80px (desktop) / 64px (tablet) / 0 (mobile)Área de contenido
.app-content margin-top64pxCompensación de TopBar
Breakpoint tablet768pxSidebar colapsada
Breakpoint mobile480pxBottomNav visible

8. Z-index jerarquía ​

CapaValorElementos
Base1Contenido normal
TopBar30Barra superior
Sidebar40Barra lateral
BottomNav50Navegación mobile
Overlay100Modales, SystemAlert, OfflineOverlay

9. Glass card spec ​

.glass-card
  background:   var(--glass-bg)
  border:       1px solid var(--glass-border)
  backdrop-filter: blur(8px)
  transition:   all 0.2s cubic-bezier(0.4, 0, 0.2, 1)

  &:hover
    border-color: var(--spore-green)
    box-shadow:   var(--glow-primary)

Variantes de borde-accento:

  • border-l-4 border-l-primary — dato primario
  • border-l-4 border-l-secondary — dato secundario
  • border-l-4 border-l-error — estado crítico
  • border-t-2 border-t-secondary — card de feature

10. Micro-interacciones estándar ​

ElementoEfecto
Botón clickeablehover:brightness-110 active:scale-95 transition-all
Glass card hoverhover:bg-surface-container-high transition-all duration-300
Toggle switchTransición de color + knob en 200ms
Input focusbox-shadow: 0 0 12px rgba(107,251,154,0.25) + borde primario
Focus visible globaloutline: 2px solid var(--primary); outline-offset: 2px

Mush2 — Sistema IoT de control ambiental