Saltar al contenido principal

PRD-022 · Design System oficial

El lenguaje visual de Cielo

Fuente única de verdad para color, tipografía, espaciado, radios, elevación, breakpoints, estados, movimiento e iconografía. Cualquier módulo nuevo hereda este sistema automáticamente: se compone con sus componentes y nunca declara estilos propios.

Color
Tipografía
Espaciado y retícula
Border radius
Sombras y elevación
Breakpoints
Estados
Movimiento
Iconografía

Principios

Seis reglas que mantienen la consistencia

Se aplican a todas las áreas: sitio público, plataforma del alumno, panel administrativo y Business OS.

Un único origen de valores

Todos los tokens viven en src/styles.css. Ningún componente declara colores, sombras ni radios propios.

Componer, nunca duplicar

Antes de crear una pantalla se reutiliza el inventario oficial. Si falta una pieza, se añade al sistema, no al módulo.

Semántica antes que estética

El color comunica significado: sky informa, success confirma, warning avisa, destructive detiene y gold distingue lo premium.

Ritmo y jerarquía constantes

Mismo contenedor, mismos gaps y misma escala tipográfica en el sitio público, la plataforma, el panel y el Business OS.

Accesibilidad de serie

Contraste WCAG 2.2 AA, foco visible en todo elemento interactivo y respeto por prefers-reduced-motion.

Herencia automática

Un módulo nuevo que use Container, stack-page, surface-panel y el inventario oficial ya cumple el sistema sin CSS adicional.

Fundamentos

Design Tokens

Color

Definido en oklch con contraste verificado (WCAG 2.2 AA). El dorado es exclusivo de premium, certificados y logros.

Primario

Azul profundo · identidad

Azul cielo

Secundario · datos y foco

Dorado

Premium · logros

Fondo

Blanco cálido

Superficie

Tarjetas y paneles

Éxito

Confirmación

Advertencia

Atención

Error

Bloqueo

TokenUsoUtilidad
backgroundFondo global (blanco cálido / grafito en oscuro)bg-background
surfaceSuperficie elevada neutrabg-surface
cardTarjetas, paneles y widgetsbg-card
primaryIdentidad y acciones principalesbg-primary
primary-softFondos tintados de la marcabg-primary-soft
skyColor secundario: foco, datos, énfasisbg-sky
sky-softFondos informativos suavesbg-sky-soft
goldSolo premium, certificados y logrosbg-gold
muted / muted-foregroundTexto y fondos secundariostext-muted-foreground
success / warning / info / destructiveEstados semánticos (+ variantes -soft)bg-success-soft
border / border-strongBordes por defecto y de énfasisborder-border
ringAnillo de foco accesiblefocus-cielo
overlayVelo de modales, sheets y drawerssurface-overlay
chart-1 … chart-5Series de gráficas, en orden fijotext-chart-1

Tipografía

Instrument Serif para display y cifras; Manrope para interfaz y lectura.

H1 — Liderazgo con propósito

H2 — Formación que transforma

H3 — Acompañamiento cercano

H4 — Subtítulo de sección

Texto destacado (lead) para introducciones.

Texto base para lectura continua, con altura de línea generosa.

Label UI · etiqueta de interfaz

Caption · metadatos y notas.

Eyebrow · etiqueta de sección

1.248

TokenUsoUtilidad
font-displayInstrument Serif — h1…h4 y KPIsfont-display
font-sansManrope — interfaz, cuerpo y datosfont-sans
font-monoIdentificadores técnicos y códigofont-mono
h1 … h4clamp() fluido, interlineado 1.06h1
text-leadEntradilla de seccióntext-lead
eyebrowAntetítulo en mayúsculas espaciadaseyebrow
label-uiEtiqueta de interfaz y formularioslabel-ui
text-captionTexto auxiliar y notastext-caption
text-kpiCifra protagonista de dashboardstext-kpi
tabularCifras alineadas en tablastabular

Espaciado y retícula

Base 4px, ritmo vertical constante.

4

8

12

16

24

32

48

64

TokenUsoUtilidad
spacing (4px)Unidad base de toda la escalap-4
Contenedormax-w-6xl con padding 24/40pxContainer
Sección públicapy-20 / sm:py-28Section
Pantalla internaRitmo vertical de 32px entre bloquesstack-page
Rejilla de KPIs1 → 2 → 4 columnas, gap 16pxgrid-kpi
Rejilla de tarjetas1 → 2 → 3 columnas, gap 24pxgrid-cards
Padding de panel24px (20px en KPIs)p-6

Border radius

sm

lg

xl

2xl

3xl

full

TokenUsoUtilidad
radius-smChips internos y celdasrounded-sm
radius-lgInputs, selects y botonesrounded-lg
radius-xlPopovers, menús y superficies internasrounded-xl
radius-2xlTarjetas, paneles y widgetsrounded-2xl
radius-3xlModales y superficies mayoresrounded-3xl
fullBadges, avatares y pillsrounded-full

Sombras y elevación

shadow-e1

shadow-e2

shadow-e3

shadow-e4

TokenUsoUtilidad
shadow-e1Nivel base: tarjetas y paneles en repososhadow-e1
shadow-e2Elementos accionables y botones sólidosshadow-e2
shadow-e3Flotantes: popovers, menús, toastsshadow-e3
shadow-e4Modales, sheets y hover elevadoshadow-e4
shadow-focusHalo de foco en campos de formulariofocus-visible:shadow-[var(--shadow-focus)]

Breakpoints

TokenUsoUtilidad
xs · 384pxMóvil grandexs:
sm · 640pxMóvil horizontalsm:
md · 768pxTabletmd:
lg · 1024pxLaptop y sidebar fijolg:
xl · 1280pxEscritorioxl:
2xl · 1536pxPantallas amplias2xl:

Estados

TokenUsoUtilidad
hoverElevación o tinte suave, nunca cambio de color de marcahover-lift / hover-glow
focus-visibleAnillo de 2px con color --ring y offset 2pxfocus-cielo
activeCompresión sutil al pulsar (0.985)press
selectedBorde azul cielo con halo del 12%state-selected
loadingSkeleton o shimmer, nunca spinners de bloqueoshimmer
disabledOpacidad 50% y sin eventosstate-disabled
errorBorde destructivo y mensaje semánticoaria-[invalid=true]

Movimiento

reveal
reveal-soft
reveal-scale
TokenUsoUtilidad
ease-cieloCurva única de la marcaease-[var(--ease-cielo)]
duration-instant · 120msCambios de color y tinteduration-[120ms]
duration-quick · 180msHover, foco y pulsaciónduration-200
duration-soft · 380msElevación y desplazamientoduration-[380ms]
revealEntrada de bloques al montarreveal
reveal-soft / reveal-scaleEntradas suaves y de tarjetasreveal-soft
shimmerCarga de contenidoshimmer

Iconografía

TokenUsoUtilidad
icon-xs · 14pxDentro de badges y microtextosicon-xs
icon-sm · 16pxTamaño por defecto en interfazicon-sm
icon-md · 20pxCabeceras de widget y estados vacíosicon-md
icon-lg · 24pxHero y cabeceras destacadasicon-lg
icon-tileContenedor 36px con fondo azul cieloicon-tile
icon-tile-lgContenedor 44px con borde y degradadoicon-tile-lg

Biblioteca

Componentes reutilizables

Inventario oficial. Antes de crear una pantalla se compone con estas piezas; si falta una, se añade al sistema, nunca al módulo.

Botones

KPIs y widgets

Misma retícula en alumno, admin y Business OS.

Alumnos activos

1.248

+12%

MRR

18.4k €

+6,2%

Retención

94%

estable

Abandono

2,1%

-0,4%

Progreso del programa

Libertad Infinita

68% completado · 8 de 12 módulos

Actividad reciente

  1. Nueva mentoría reservada

    hace 2 h
  2. Certificado emitido

    ayer
  3. Pago confirmado

    3 días

Tarjetas

Tarjeta estándar
Radio 2xl, borde suave y elevación e1.
Contenido de la tarjeta con jerarquía tipográfica consistente.
Premium
Gold
El dorado solo distingue lo premium.
Certificaciones, logros y planes superiores.

Sin resultados

Estado vacío único para tablas, listados y widgets.

Formularios

Retroalimentación

Default
Soft
Sky
Éxito
Aviso
Error
Premium
Contorno

Superficies flotantes y navegación

Pestañas con superficie de tarjeta en el estado activo.

Datos y carga

AlumnoProgramaEstadoProgreso
Ana DuarteLibertad Infinita
Activo
82%
Marco SilvaFinanzas con Fe
Pendiente
34%

Herencia automática

Inventario oficial de componentes

Cada pieza indica su origen y la regla que debe respetarse. Es el contrato visual de la plataforma.

ComponenteOrigenRegla
Buttons@/components/ui/buttonVariantes cielo, sky, gold, outline, quiet y ghost. Alturas 32/36/40/48.
Cards@/components/ui/cardRadio 2xl, borde suave y shadow-e1. Interacción con hover-lift.
Inputs@/components/ui/input · textareaAltura 40, radio lg y halo de foco azul cielo.
Selects@/components/ui/selectIdéntico al input; panel con surface-floating.
Modals@/components/ui/dialog · alert-dialog · sheet · drawerVelo surface-overlay y superficie surface-dialog.
Tables@/components/ui/table · DataTableCabecera en mayúsculas, cifras tabulares y filas con hover.
Widgets@/components/ui/kpi (Widget)Contenedor único de bloque con título, icono y acción.
KPIs@/components/ui/kpi (KpiCard)text-kpi, etiqueta en mayúsculas y tendencia semántica.
Dashboardsgrid-kpi · grid-cards · stack-pageMisma retícula en alumno, admin y Business OS.
Charts@/components/ui/chartSeries siempre en el orden chart-1 → chart-5.
Calendars@/components/ui/calendarCeldas con radio lg y día seleccionado en primary.
Alerts@/components/ui/alertTonos default, info, sky, success, warning, destructive y gold.
Toasts@/components/ui/sonnerSuperficie flotante e3; se monta una sola vez en la raíz.
Badges@/components/ui/badgeTonos suaves; gold reservado a premium y logros.
Timeline@/components/ui/timelineCronologías de progreso, actividad y auditoría.
NavigationAppShell · Header · FooterSe deriva de architecture.ts; sidebar con acento sky.