Cada componente está construido sobre los tokens de Flow. Aquí encontrarás variantes, estados, tokens mapeados y código de referencia.
El sistema de botones de Flow usa 4 variantes jerárquicas, 3 tamaños y estados consistentes. El botón primario siempre usa green-500 con texto charcoal — oscuro sobre brillante.
| Variante | Background | Texto | Borde | Uso |
|---|---|---|---|---|
| Primary | green-500 | charcoal | — | CTA principal, una por sección |
| Secondary | transparent | charcoal | charcoal 1.5px | Acción secundaria junto a primary |
| Ghost | transparent | green-600 | — | Acciones terciarias, links en contexto |
| Danger | #e84545 | #fff | — | Eliminar, cancelar — solo acciones destructivas |
| Tamaño | Padding | Font Size | Radius |
|---|---|---|---|
| Small | 8px 16px | 13px | 6px |
| Default | 12px 24px | 15px | 8px |
| Large | 16px 32px | 17px | 10px |
| Estado | Cambio visual | Token / valor |
|---|---|---|
| Hover | Bg → green-600, translateY(-1px), shadow-md | --green-600 --shadow-md |
| Focus | Ring 3px green-500 α25% | rgba(59,235,100,0.25) |
| Active | translateY(0), sin shadow | — |
| Disabled | Bg → border, texto → tertiary | --border --tertiary |
Las cards son el contenedor principal de información. Siempre con borde sutil, fondo offwhite, y transición a green en hover. Nunca dependas del shadow para crear jerarquía — usa borde.
| Propiedad | Token | Valor |
|---|---|---|
| Background | surface.secondary | #f0eee9 |
| Border | border.default | #cfd5d3 1px |
| Border Hover | border.active | #3beb64 |
| Radius | radius.medium | 12px |
| Padding | spacing.scale-4 | 24px |
| Shadow Hover | elevation.md | 0 4px 12px rgba(15,44,36,0.08) |
Inputs claros, feedback inmediato, y focus ring verde. El fondo del input es cream (no blanco) para mantener la calidez de marca. El estado de error usa #e84545 sin ambigüedad.
| Estado | Border | Background | Extra |
|---|---|---|---|
| Default | #cfd5d3 1.5px | cream (#f7f5f3) | — |
| Focus | green-500 1.5px | cream | Ring: 0 0 0 3px rgba(59,235,100,0.12) |
| Error | #e84545 1.5px | cream | Ring: 0 0 0 3px rgba(232,69,69,0.12) |
| Disabled | #cfd5d3 1.5px | offwhite | color: tertiary, cursor: not-allowed |
accent-color: var(--green-500) para el color nativo del browser. El toggle es custom con transición de 150ms.Tablas limpias con header offwhite, row hover sutil en green α3%, y bordes de 1px. No usar zebra-striping — el hover es suficiente para tracking visual.
| Programa | Participantes | Satisfacción | Estado |
|---|---|---|---|
| Onboarding XP | 342 | 96% | Activo |
| Leader Sprint Q1 | 48 | 91% | Activo |
| Sales Bootcamp | 125 | 88% | En revisión |
| Service Design Lab | 67 | — | Borrador |
| Elemento | Token | Valor |
|---|---|---|
| Header bg | component.table.header-bg | #f0eee9 |
| Header border | component.table.border | #cfd5d3 2px bottom |
| Row border | component.table.border | #cfd5d3 1px bottom |
| Row hover | green-500 α3% | rgba(59,235,100,0.03) |
| Padding | spacing.scale-3 | 12px 16px |
Badges para estado y categorización. Tags para filtrado y etiquetas removibles. Ambos siempre con border-radius completo (pill shape).
| Variante | Background | Color | Uso |
|---|---|---|---|
| Green | green-500 α12% | darkgreen | Activo, completado, éxito |
| Charcoal | charcoal α8% | charcoal | Neutral, borrador, inactivo |
| Warning | #f0a730 α12% | #b07a1e | Pendiente, en revisión |
| Error | #e84545 α10% | #e84545 | Error, cancelado, rechazado |
Cuatro niveles semánticos. Cada alerta abre con un ícono Lucide de 20px. Los colores de feedback están definidos en color.semantic.feedback.
| Tipo | Token color | Ícono | Background α |
|---|---|---|---|
| Success | feedback.success (#2fd954) | check-circle | 8% |
| Error | feedback.error (#e84545) | alert-circle | 6% |
| Warning | feedback.warning (#f0a730) | alert-triangle | 8% |
| Info | feedback.info (secondary) | info | 4% |
Fondo con overlay charcoal α40%. El modal usa surface.primary (cream) con shadow-lg. Máximo 440px de ancho. Siempre incluir acción de cierre.
| Elemento | Token | Valor |
|---|---|---|
| Overlay | charcoal α40% | rgba(15,44,36,0.4) |
| Background | surface.primary | #f7f5f3 |
| Shadow | elevation.lg | 0 8px 24px rgba(15,44,36,0.12) |
| Radius | radius.large | 16px |
| Max width | — | 440px |
| z-index | zIndex.modal | 400 |
Iniciales sobre fondo offwhite con borde sutil. Tres tamaños. En grupo, se solapan con margin negativo y borde cream para separación visual.
| Tamaño | Dimensión | Font size |
|---|---|---|
| Small | 32×32px | 12px |
| Default | 40×40px | 14px |
| Large | 56×56px | 20px |
Track en offwhite, fill en green-500. Altura 8px con radius 4px. Transición suave de 300ms en el ancho.
Placeholder animado con shimmer offwhite→almostwhite→offwhite. Usa el mismo radius del componente que reemplaza. Animación de 1.5s infinita.