Sistema de grilla, breakpoints, contenedores, ritmo de espaciado y patrones de composición para todas las superficies digitales de Flow.
| Propiedad | Token | Valor |
|---|---|---|
| Columnas | grid.columns | 12 |
| Gutter — Mobile | grid.gutter.mobile | 16px |
| Gutter — Tablet | grid.gutter.tablet | 24px |
| Gutter — Desktop | grid.gutter.desktop | 32px |
| Breakpoint | Token | Min-width | Gutter | Margin | Columnas típicas |
|---|---|---|---|---|---|
| Mobile | breakpoint.mobile | 0px | 16px | 16px | 4 (o stack) |
| Tablet | breakpoint.tablet | 768px | 24px | 32px | 8 |
| Desktop | breakpoint.desktop | 1024px | 32px | 48px | 12 |
| Wide | breakpoint.wide | 1440px | 32px | auto (centrado) | 12 |
Siempre escribir CSS base para mobile y añadir complejidad con min-width. Nunca usar max-width como patrón principal — rompe la cascada natural del diseño responsivo.
| Contenedor | Token | Ancho | Uso |
|---|---|---|---|
| Small | grid.container.sm | 640px | Blog, artículos, lectura long-form |
| Medium | grid.container.md | 768px | Formularios, contenido centrado |
| Large | grid.container.lg | 1024px | Páginas estándar, dashboards |
| Extra Large | grid.container.xl | 1280px | Landing pages, layouts amplios |
| Max | grid.container.max | 1440px | Máximo absoluto — nunca exceder |
| Escala | Token | Valor | Uso semántico |
|---|---|---|---|
| Scale 1 | spacing.scale-1 | 4px | Micro — separación de iconos inline, padding mínimo |
| Scale 2 | spacing.scale-2 | 8px | Tight — gap entre elementos agrupados, padding interior |
| Scale 3 | spacing.scale-3 | 16px | Default — padding de componentes, margin entre párrafos |
| Scale 4 | spacing.scale-4 | 24px | Comfortable — padding de cards, gap de grilla |
| Scale 5 | spacing.scale-5 | 32px | Section — separación entre subsecciones |
| Scale 6 | spacing.scale-6 | 48px | Large — espacio entre secciones menores |
| Scale 7 | spacing.scale-7 | 64px | Major — separación entre secciones principales |
| Scale 8 | spacing.scale-8 | 96px | Hero — padding superior/inferior de heros |
| Scale 9 | spacing.scale-9 | 128px | Maximum — respiración máxima, above the fold |
Nunca usar valores arbitrarios como 10px, 15px, 22px o 50px. Cada espacio en la interfaz debe corresponder a un nivel de la escala. Esto garantiza ritmo vertical y consistencia visual.
Dejar mínimo 64px (scale-7) entre secciones principales. Usar scale-6 (48px) antes de cada nuevo bloque de contenido. Permitir que el padding interior de cards sea generoso — scale-4 (24px) mínimo.
Comprimir contenido para "aprovechar espacio". Reducir padding por debajo de 16px en componentes. Usar márgenes de 0 entre secciones. Llenar cada centímetro de pantalla con contenido.
Para verificar la regla del 40%: hacer screenshot → convertir a blanco (contenido) y negro (vacío) → si el negro no llega al 40%, el layout necesita más aire. En Flow, el espacio en blanco es parte del diseño, no espacio desperdiciado.
| Patrón | Desktop | Tablet | Mobile |
|---|---|---|---|
| Grid 3-col | 3 columnas | 2 columnas | 1 columna (stack) |
| Grid 4-col | 4 columnas | 2 columnas | 1 columna (stack) |
| Sidebar + Main | Sidebar fijo + main fluido | Sidebar colapsado (hamburger) | Sin sidebar, nav overlay |
| Hero text + imagen | Lado a lado (6+6) | Lado a lado (6+6) comprimido | Stack (imagen arriba, texto abajo) |
| Tabla de datos | Tabla completa | Tabla con scroll horizontal | Cards apiladas (reflow) |
| Nav principal | Links visibles | Links reducidos | Hamburger menu |
| Elemento | Desktop (web) | Mobile | Reducción |
|---|---|---|---|
| Display | 64px / 900 | 36px / 900 | ~56% |
| H1 | 48px / 700 | 32px / 700 | ~67% |
| H2 | 36px / 600 | 24px / 600 | ~67% |
| H3 | 24px / 500 | 20px / 500 | ~83% |
| Body | 16px / 400 | 16px / 400 | Sin cambio |
| Caption | 13px / 300 | 12px / 300 | ~92% |
Nunca usar z-index: 9999 o cualquier valor fuera de esta escala. Si un componente necesita estar encima de otro, usar el nivel semántico correcto. Los 7 niveles cubren el 100% de los casos de UI.
| Nivel | Token | Valor | Componentes |
|---|---|---|---|
| Base | zIndex.base | 0 | Contenido estático, secciones |
| Raised | zIndex.raised | 1 | Cards en hover, elementos elevados |
| Dropdown | zIndex.dropdown | 100 | Selects, menús, popovers |
| Sticky | zIndex.sticky | 200 | Nav, TOC, sticky headers |
| Overlay | zIndex.overlay | 300 | Backdrop de modales, dimmer |
| Modal | zIndex.modal | 400 | Diálogos, confirmaciones |
| Toast | zIndex.toast | 500 | Notificaciones, snackbars |
| Tooltip | zIndex.tooltip | 600 | Tooltips, hints |