AvanzaCast/docs/design-tokens.md

159 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Guía de Design Tokens — AvanzaCast
=================================
Propósito
--------
Esta guía centraliza los tokens de diseño usados por AvanzaCast (colores, tipografías, tamaños, espaciados y sombras). Está pensada para desarrolladores y diseñadores: explica los tokens disponibles, su uso semántico y mapas a clases de Tailwind ya configuradas en `packages/studio-panel/tailwind.config.cjs`.
Resumen rápido
---------------
- Paleta principal: tokens `studio-*` (bg, muted, accent, accent-2)
- Tipografías: `inter` (principal) y `requiner` (logo)
- Tamaños tipográficos: `figma-transmision`, `figma-personas`, `figma-h1`, `figma-h2`, `figma-base`
- Pesos: `figma-light`, `figma-regular`, `figma-medium`, `figma-bold`
Colores (paleta)
-----------------
Uso semántico y clases Tailwind (extendidas en `tailwind.config.cjs`):
- studio-bg — #41444A
- Uso: fondo de header, barras principales.
- Clase: `bg-studio-bg`.
- studio-dark — #12151D
- Uso: fondos muy oscuros, overlays principales.
- Clase: `bg-studio-dark`.
- studio-muted — #7E8791
- Uso: texto secundario, subtítulos, metadatos.
- Clase: `text-studio-muted`.
- studio-muted-2 — #77818F
- Uso: texto alternativo, placeholders.
- Clase: `text-studio-muted-2`.
- studio-accent — #3B82F6
- Uso: acentos primarios (botones, enlaces activos).
- Clase: `bg-studio-accent` (o `text-studio-accent`).
- studio-accent-2 — #EF4444
- Uso: acento secundario / estado destructivo.
- Clase: `bg-studio-accent-2`.
Tokens clásicos (utility mapping)
- Fondo principal: `bg-studio-bg` (header)
- Texto secundario: `text-studio-muted`
- Botón primario: `bg-studio-accent` o gradiente `from-blue-600 to-blue-500`
- Indicador en vivo: punto rojo `bg-red-500`
Tipografías y tamaños
---------------------
Font families (extendidas en Tailwind):
- `font-inter` -> Inter (principal UI)
- `font-requiner` -> Requiner (logo)
Tamaños definidos (tailwind custom):
- `text-[figma-h1]` = 32px / lineHeight 40px (clase generada: `text-[figma-h1]`)
- `text-[figma-h2]` = 24px / lineHeight 32px
- `text-[figma-transmision]` = 12.8px / lineHeight 15.5px
- `text-[figma-personas]` = 11.3px / lineHeight 13.7px
- `text-[figma-base]` = 16px / lineHeight 24px
Pesos semánticos (clases personalizadas en `tailwind.config.cjs`):
- `font-figma-light` -> 300
- `font-figma-regular` -> 400
- `font-figma-medium` -> 500
- `font-figma-bold` -> 700
Recomendaciones de uso tipográfico
- Titulares: `text-[figma-h1]` / `text-[figma-h2]` según jerarquía, `font-figma-medium` o `font-figma-bold`.
- Labels pequeños y metadatos: `text-[figma-personas]` + `font-figma-regular`.
- UI body copy: `text-[figma-base]` + `font-figma-regular`.
Espaciado (scale)
------------------
Recomiendo usar las utilidades de espacio de Tailwind (p, px, py, gap) con esta convención semántica:
- xs: 4px -> `p-1`, `gap-1`
- sm: 8px -> `p-2`, `gap-2`
- md (base): 12px -> `p-3`, `gap-3`
- lg: 16px -> `p-4`, `gap-4`
- xl: 24px -> `p-6`, `gap-6`
En el header aplicamos: `h-14` (56px), `gap-3` (12px) y `px-4` para los laterales.
Border-radius (radio)
---------------------
- `rounded-sm` ~ 4px
- `rounded-md` ~ 8px
- `rounded-full` -> 9999px (botones circulares)
- En Brand usamos `rounded-xl` (~12px) para el contenedor del logo.
Sombras y elevación
--------------------
- Elevación leve (cards, buttons): `shadow-sm` -> `box-shadow: 0 1px 2px rgba(...)`.
- Elevación media (modales): `shadow-lg`.
- Borde sutil en header: `border-b border-white/4`.
Iconografía y tamaños
---------------------
- Iconos pequeños: `w-4 h-4` (16px)
- Iconos medios: `w-5 h-5` (20px)
- Avatares / logos: 4048px (`w-10` / `w-12`)
Estados y microinteracciones
----------------------------
- Hover: usar `hover:bg-white/6` o `hover:brightness-95` según el elemento.
- Focus visible: ya definimos en CSS global `:focus-visible` con outline azul; preferir `focus:outline-none` y rely en `focus-visible` para accesibilidad.
- Disabled: aplicar `opacity-50 cursor-not-allowed pointer-events-none`.
Ejemplos de uso (Tailwind)
--------------------------
- Header brand:
- Contenedor: `flex items-center gap-3 min-w-0`
- Título: `text-[figma-h2] font-figma-medium text-white`
- Subtítulo: `text-[figma-transmision] font-figma-regular text-studio-muted`
- Live badge:
- `inline-flex items-center gap-2 px-3 py-0.5 rounded-full bg-black/40 ring-1 ring-white/6 font-inter`
- Punto: `w-2 h-2 rounded-full bg-red-500 animate-pulse`
- Botón primario (ej. Grabar):
- `rounded-full inline-flex items-center gap-2 px-3 py-1 bg-gradient-to-br from-red-600 to-red-500 text-white shadow-sm`
Cómo mantener los tokens (developer notes)
-----------------------------------------
1. Centraliza tokens en `tailwind.config.cjs` dentro de `theme.extend` (colores, fontFamily, fontSize, fontWeight).
2. Evita usar colores hex en componentes: siempre usar `bg-studio-bg`, `text-studio-muted`, etc.
3. Si se necesita un nuevo token, agrégalo a `tailwind.config.cjs` y documenta aquí bajo "Actualizaciones" con fecha y autor.
Ejemplo: añadir un color token en `tailwind.config.cjs`
```js
// tailwind.config.cjs (theme.extend)
colors: {
'studio-bg': '#41444A',
'studio-muted': '#7E8791',
// ...
}
```
Guía rápida de accesibilidad
----------------------------
- Siempre añadir `aria-label` en `IconButton` y `role=status` en badges dinámicos.
- Usar `sr-only` para mensajes redundantes de accesibilidad.
- Mantener contraste suficiente para texto y elementos interactivos (usar herramientas de contraste para verificar).
Mantenimiento y gobernanza
---------------------------
- Cada cambio de token debe registrar una entrada en este documento con la fecha y la razón.
- Mantener consistencia entre Figma y `tailwind.config.cjs`: al actualizar estilos en Figma, actualizar tokens y revisar componentes.
Historial y próximas acciones
-----------------------------
- 2025-11-10: Creación inicial de la guía y mapeo de tokens usados en `packages/studio-panel`.
- Próximo: extraer sombras y radios exactos desde Figma y sincronizar con `tailwind.config.cjs` si se requiere match pixel-perfect.
Contacto
--------
Si necesitas que incluya valores exactos extraídos de Figma (letter-spacing, exact color tokens, o exportar assets) indícalo y automatizo la extracción de tokens y la actualización de `tailwind.config.cjs`.