CreaRack-SL

Bloque D.1 · Design Tokens y Utility Classes centralizadas

Bloque D.1 · Design Tokens y Utility Classes centralizadas

Sprint: s56 · Fecha: 11-05-2026 · PR: #12 (edu/design-tokens-D1)
Archivo maestro: src/styles/globals.css
Runbook de migración: [[runbook—workspace—design-tokens-migration]]

Qué es

El bloque D.1 es la primera fase de centralización del design system visual de CreaRack Pro workspace. Consolida en globals.css todos los valores de estilo que estaban hardcodeados (literales padding: '1px 6px', borderRadius: '4px', etc.) dentro de componentes React individuales.

El objetivo es que los componentes solo consuman variables CSS y utility classes, eliminando la deuda de estilos inline inconsistentes identificada en el REFACTORING_GUIDE.md (P2-5 «Estilos Inline»).


Tokens añadidos

Radius

VariableValorUso canónico
--radius-xs4pxBadges, kbd, chips microscópicos
--radius-md8pxInputs, botones pequeños

Los tokens --radius-sm (6px), --radius (12px), --radius-lg (16px) y --radius-xl (20px) ya existían.

Spacing scale (base 4)

VariableValor rempx equiv.
--space-000
--space-10.25rem4
--space-20.5rem8
--space-30.75rem12
--space-41rem16
--space-51.25rem20
--space-61.5rem24
--space-82rem32
--space-102.5rem40

Equivalen a las clases Tailwind p-1..p-10. Los tokens permiten usarlos también en style={{ }} y en CSS custom sin repetir literales.

Tipografía

VariableValor
--fw-regular400
--fw-medium500
--fw-semibold600
--fw-bold700
--leading-tight1.2
--leading-normal1.5
--leading-relaxed1.7

Transiciones

VariableValor
--t-fast.12s ease
--t-base.2s ease
--t-slow.35s cubic-bezier(.2, .8, .2, 1)

Scrim (overlay de modal)

VariableValor
--scrimrgba(0,0,0,0.6)
--scrim-heavyrgba(0,0,0,0.9)

Utility classes añadidas

.badge — estado semántico

Reemplaza el patrón padding: '1px 6px'; borderRadius: '4px'; textTransform: 'uppercase' disperso en componentes.

<span class="badge danger">critical</span>
<span class="badge warning">degraded</span>
<span class="badge success">online</span>
<span class="badge info">info</span>
<span class="badge pill">Etiqueta</span>

Variantes: .danger, .warning, .success, .info, .pill

.assignee-badge — chip de persona

Acepta una única CSS var personalizada en lugar de 5 estilos sueltos:

<span class="assignee-badge" style="--assignee-color: #3b82f6">Edu</span>

.list-row — fila de lista dentro de card

<div class="list-row">...</div>

Incluye hover state (background: var(--overlay-2)) y transición var(--t-fast).

.empty-state — vacío semántico

<div class="empty-state">Sin tareas pendientes</div>

.section-eyebrow — heading eyebrow

Standalone. Equivale a .card-title fuera de .card-head.

Reemplazan el patrón inline position:fixed; inset:0; background:rgba(0,0,0,X).

<div class="modal-overlay">
  <div class="modal-dialog">...</div>
</div>

<!-- Variante oscura: -->
<div class="modal-overlay heavy">...</div>

Convención data-* en <body>

El bloque D.1 documenta la tabla canónica de atributos que gestiona lib/prefs.ts:applyPrefsToBody:

AtributoValores válidosDefault
data-themedark | light | autodark
data-accentblue | violet | green | amber | cyanblue
data-densitycompact | comfy | spaciouscomfy
data-font-sizesm | md | lg | xlmd
data-fontjakarta | inter | monojakarta
data-widthnormal | widenormal
data-sidebardefault | collapsed | widedefault
data-sidebar-sideleft | rightleft
data-headerdefault | slim | talldefault
data-animon | offon
data-shinelow | default | highdefault
data-detaildefault | minimaldefault
data-radiusdefault | sharp | softdefault
data-varianta | b | ca

Convención de excepciones

Cuando un componente no puede usar una variable (KPI hero, eyebrows microscópicos, logo brand), debe incluir comentario inline:

/* design-exception: KPI hero — tamaño de fuente exclusivo de landing */
font-size: 4.5rem;

Bloques posteriores planificados

BloqueDescripción
D.2Migración de componentes de tabla/grid
D.3Migración de componentes de formulario
D.4Migración de navigation / sidebar

Ver [[runbook—workspace—design-tokens-migration]] para la hoja de ruta completa.


Véase también

  • [[runbook—workspace—design-tokens-migration]]
  • [[crearack—conceptos—interfaz-general]]