Tokens de Diseño
Variables semánticas definidas con @theme en CSS. Colores en espacio OKLCH para percepción uniforme y mejor interpolación en animaciones.
Paleta Semántica
Tabla de Tokens Clave
| Token CSS | Valor OKLCH | Uso | Dark Mode |
|---|---|---|---|
|
--color-primary
|
oklch(40% 0.18 260) | Botones, links, foco | oklch(62% 0.18 260) |
|
--color-success
|
oklch(50% 0.16 145) | Estados positivos, validación | oklch(62% 0.16 145) |
|
--color-destructive
|
oklch(52% 0.22 27) | Errores, acciones destructivas | oklch(65% 0.22 27) |
|
--color-warning
|
oklch(72% 0.18 75) | Alertas, advertencias | oklch(78% 0.18 75) |
|
--color-muted-foreground
|
oklch(50% 0.02 264) | Texto secundario, placeholders | oklch(62% 0.02 264) |
--radius-* escalables4px
6px
8px
12px
16px
9999px
Botones
Construidos con el patrón CVA (Class Variance Authority). Variantes ortogonales para tipo y tamaño, más estados disabled y loading.
const buttonVariants = cva(
'inline-flex items-center rounded-lg text-sm font-medium transition-colors',
{ variants: { variant: {
default: 'bg-primary text-primary-foreground hover:bg-primary/90',
outline: 'border border-border hover:bg-accent',
}}}
)
Formularios
Inputs con soporte de error, helper text y states accesibles. Compatibles con React Hook Form + Zod.
Estados del Input
Badges y Alertas
Sistema de indicadores visuales y mensajes de estado con soporte completo para feedback al usuario.
Badges
Alertas
Dashboard Pattern
Ejemplo real de dashboard usando el sistema de diseño. Compound components Card + Grid + Stats.
-
Lead Nurturing Q3 89%
-
Onboarding SaaS 72%
-
Re-engagement Inactivos 45%
-
Upsell Plan Pro 91%
CSS-First Config
En Tailwind v4 no existe tailwind.config.ts. Todo se define en CSS con la directiva @theme.
app.css — v4
@import "tailwindcss";
@theme {
/* Colores semánticos OKLCH */
--color-primary: oklch(40% 0.18 260);
--color-success: oklch(50% 0.16 145);
--color-destructive: oklch(52% 0.22 27);
/* Radius tokens */
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
/* Animaciones */
--animate-fade-in: fade-in 0.2s ease-out;
@keyframes fade-in {
from { opacity: 0; transform: translateY(-4px); }
to { opacity: 1; transform: translateY(0); }
}
}
/* Dark mode con @custom-variant */
@custom-variant dark (&:where(.dark, .dark *));
.dark {
--color-primary: oklch(62% 0.18 260);
--color-background: oklch(14% 0.025 264);
}
Migración v3 → v4
| v3 | v4 |
|---|---|
| tailwind.config.ts | @theme en CSS |
| @tailwind base | @import "tailwindcss" |
| darkMode: "class" | @custom-variant dark |
| theme.extend.colors | @theme { --color-* } |
| tailwindcss-animate | @keyframes en @theme |
| forwardRef() | ref como prop (React 19) |
Atajos de teclado
Loading States
Skeleton screens con animación shimmer usando gradientes CSS. Evitan layout shift y mejoran la percepción de velocidad.