Minimal Design
System
Directrices de diseño listas para implementar. Espacios generosos, tipografía limpia y paleta contenida para máxima claridad y foco.
Tokens y fundamentos
Los tokens son la fuente única de verdad. Siempre usa el nombre del token, nunca valores raw.
Paleta de color
5 colores semánticos + superficie + texto. Paleta contenida para máxima coherencia visual.
Escala tipográfica
Desktop-first expressive scale. Inter para display, Open Sans para body, Inconsolata para código y labels técnicos.
Escala de espaciado
Base 4px. Escala: 4/8/12/16/24/32. Nunca usar valores fuera de la escala salvo casos excepcionales documentados.
Botones
Anatomía: [icono opcional] + etiqueta. Estados obligatorios: default, hover, focus-visible, disabled.
Badges y etiquetas
Solo para estado o categoría. Fuente mono, uppercase, letra pequeña. Nunca decorativas.
Campos de formulario
Focus con ring --color-secondary. Label siempre visible (no solo placeholder). Error con --color-danger.
Alertas y mensajes de sistema
Border-left 4px como señal de color. Siempre incluir título + descripción accionable.
Cards y contenedores
Padding mínimo: space-6 (24px). Radius: --radius-md. Usar sombra solo en elevated.
WCAG 2.2 AA — Contraste de color
Criterio 1.4.3: ratio mínimo 4.5:1 para texto normal, 3:1 para texto grande (≥18px bold o ≥24px).
| Par de colores | Uso | Ratio | WCAG AA |
|---|---|---|---|
|
Primary sobre Blanco
|
Texto body principal | 19.1 : 1 | ✓ AA |
|
Secondary sobre Blanco
|
Links, labels, eyebrows | 8.7 : 1 | ✓ AA |
|
Primary sobre Surface
|
Texto en fondos neutros | 17.8 : 1 | ✓ AA |
|
Blanco sobre Secondary
|
Botón secundario | 8.7 : 1 | ✓ AA |
|
Text-muted sobre Blanco
|
Texto secundario / metadatos | 4.7 : 1 | ✓ AA |
|
Warning sobre Blanco
|
Texto warning directo ⚠ | 2.9 : 1 | ✗ — usar como borde/fondo solo |
Qué evitar
Implementaciones prohibidas y sus alternativas correctas.
Espaciado arbitrario
Usar siempre tokens
Color raw en código
Nombre semántico siempre
Placeholder como label
Label explícito + placeholder
Checklist de revisión de código
Ejecutar en cada code review antes de merge a main. Cada item debe poder verificarse sin subjetividad.
- TOKENS Y COLORES
-
✓
Todos los colores usan
var(--color-*), sin valores hex raw en el código de producción. - ✓ Los pares de texto+fondo cumplen ratio ≥ 4.5:1. Verificado con WebAIM Contrast Checker o Storybook a11y addon.
- No se usa --color-warning como color de texto directo sobre fondos claros.
- TIPOGRAFÍA Y ESPACIADO
-
✓
Todos los
font-familyusanvar(--font-display|body|mono). -
✓
Todos los
margin/padding/gapusanvar(--space-*). Excepciones documentadas en comentario. - No hay valores fuera de escala (4/8/12/16/24/32) sin justificación documentada.
- COMPONENTES
-
✓
Todos los botones e inputs tienen estado
:focus-visiblecon outline visible (mínimo 2px, offset 2px). -
✓
Los inputs tienen
<label>asociado confor/aria-label. No solo placeholder. - Las badges solo se usan para estado o categoría semántica. No como decoración.
-
Los botones disabled tienen
aria-disabled="true"y no responden a eventos de puntero. - CONTENIDO Y TONO
- ✓ Los textos de botón son verbos de acción concisos: "Activar", "Configurar", "Ver informe". No "Haz clic aquí".
- ✓ Los mensajes de error indican la causa y la acción correctora. No solo "Error".
- No hay frases de marketing vacías en la UI: "potenciamos tu futuro", "soluciones innovadoras", etc.