Color

Color

El sistema de color del substrato tiene tres capas — primitiva, semántica y de componente. La marca de cada inquilino vive en la capa semántica; las primitivas son estables entre inquilinos; los componentes referencian semánticas, nunca primitivas directamente.

Modelo de tres capas

   primitive    color.primary-60  →  #234ed8
        ↓
   semantic     interactive-primary  →  {color.primary-60}
        ↓
   component    button.background-default  →  {semantic.interactive-primary}

Un inquilino que quiere que su acción primaria sea turquesa en lugar de azul solo sobreescribe la capa semántica:

"interactive-primary": { "$value": "{color.brand-teal-60}" }

Los componentes no cambian. Las primitivas no cambian. La sobreescritura se propaga a través de todo consumidor de interactive-primary.

Familias primitivas

El substrato distribuye cinco familias de color en la capa primitiva. Los nombres son genéricos — describen un rol, no un significado de negocio.

FamiliaUsar paraPasos
NeutralFondos, bordes, tinta, divisores10–100 (10 pasos)
PrimaryEl color interactivo más prominente del inquilino10–90
PositiveEstado exitoso, retroalimentación positiva10–70
CautionProblemas reversibles, estados por expirar10–70
CriticalFallos, acciones destructivas, errores10–70

Los números indican luminosidad — 10 es el más claro, 90/100 es el más oscuro. Esta convención de escala por pasos es común en los sistemas de color de nivel de producción, de modo que la memoria muscular se transfiere sin importar de cuál sistema venga un diseñador. Cada valor hexadecimal de esta escala es propio de PointSav.

Roles semánticos

La capa semántica mapea roles sobre primitivas. PointSav-brand distribuye un mapeo canónico; los clientes SMB lo bifurcan.

Ink (texto)

TokenUsar para
ink-primaryTexto de cuerpo, encabezados sobre la superficie predeterminada
ink-secondaryLeyendas, texto de ayuda, copy de apoyo
ink-on-interactiveTexto sobre fondos interactivos
ink-on-positive / -caution / -criticalTexto sobre fondos de apoyo
ink-disabledControles deshabilitados
ink-placeholderTexto de marcador de posición en inputs

Surface (fondo)

TokenUsar para
surface-baseFondo de página predeterminado
surface-subtlePaneles con fondo, barras laterales
surface-elevatedModales, popovers, capas sobre la página
surface-inverseInversiones de alto énfasis

Border

TokenUsar para
border-subtleBorde predeterminado entre secciones, tarjetas
border-strongDivisor enfatizado, borde de input
border-interactiveEstado de foco / activo

Interactive (fondo)

TokenUsar para
interactive-primary (+ hover, pressed, disabled)Botones primarios, enlaces primarios
interactive-secondary (+ hover, pressed)Botones secundarios
interactive-ghost (+ hover, pressed)Botones ghost
interactive-critical (+ hover, pressed)Acciones críticas / destructivas

Support (retroalimentación de estado)

TokenUsar para
support-positive (+ -bg)Estado exitoso
support-caution (+ -bg)Problema reversible
support-critical (+ -bg)Fallo
support-info (+ -bg)Contexto neutral

Temas

Un tema de inquilino es un archivo themes/<tenant>.json que sobreescribe la capa semántica. El substrato distribuye pointsav-brand.json; los clientes SMB lo bifurcan.

Un inquilino puede distribuir varios temas:

  • <tenant>-light.json y <tenant>-dark.json para el cambio de tema
  • <tenant>-seasonal-2026-q4.json para campañas de tiempo acotado
  • <tenant>-acquisition-x.json para expansiones de submarca

El futuro endpoint de composición de temas (GET /api/themes/compose?base=...&override=...) permitirá que varios temas se resuelvan en un solo paquete DTCG en el momento de la solicitud — ver el objetivo de salto de la reclamación #38 de Doctrine, L8.

Piso de contraste WCAG

Las elecciones primitivas del substrato garantizan un contraste WCAG 2.2 AAA (7:1) para los pares canónicos texto-sobre-superficie:

  • ink-primary sobre surface-base: 14.7:1
  • ink-on-interactive sobre interactive-primary: 7.4:1
  • ink-secondary sobre surface-base: 8.9:1

Un tema de inquilino que sobreescriba primitivas por debajo del piso WCAG 2.2 AA (4.5:1 texto normal, 3:1 texto grande) falla el endpoint de auditoría (hito posterior). El substrato aplica el piso; el inquilino elige todo lo que está por encima de él.

Información Importante

Divulgación del sistema de diseño

Este sitio proporciona tokens de diseño de código abierto, documentación y software autoalojable publicado por Woodfine Capital Projects Inc. La información aquí es solo para referencia general y no constituye una oferta, garantía ni garantía de idoneidad para ningún propósito particular. Las declaraciones sobre características futuras planeadas, previstas o proyectadas son prospectivas y están sujetas a cambios sin previo aviso; no se asume la obligación de actualizarlas excepto cuando lo exija la ley.