DIANA

Diseño Aplicaciones Navarra

Color

El sistema de color se organiza en dos capas: primitivos (valores concretos de paleta) y semánticos (tokens que definen el rol del color en la interfaz). Los componentes siempre usan tokens semánticos; nunca valores en hexadecimal directamente.

Paleta primitiva

Los primitivos definen los colores base del sistema. No deben usarse directamente en componentes. El patrón de nombre es --gn-color-{familia}-{escala}.

rojo
50 · 200 · 500 · 700 · 900
gris
white · 50 · 200 · 300 · 400 · 500 · 700 · 900
azul
50 · 200 · 500 · 700 · 900
amarillo
50 · 200 · 500 · 700 · 900
verde
50 · 200 · 500 · 700 · 900

Color primario

--gn-color-primary es el token de acción principal del sistema. Sus variantes cubren los estados interactivos de botones, enlaces y controles de formulario.

--gn-color-primary
Default
primary-hover
Hover
primary-click
Click / Active
primary-disabled
Disabled

Colores de estado

Cada estado tiene cinco escalones: lighter (fondo sutil), light (énfasis leve o borde), base (color principal), dark y darker (texto fuerte o contraste). Pasa el ratón sobre cada muestra para ver el nombre del token.

info
lighter · light · base · dark · darker
éxito
aviso
error

Tokens semánticos de color

Los componentes nunca usan primitivos directamente; usan tokens semánticos que describen el rol del color. Esto permite que los temas y modos redefinan la apariencia sin tocar los componentes.

Los tokens semánticos se agrupan en cuatro categorías:

Texto

  • --gn-color-text-default
  • --gn-color-text-default-light
  • --gn-color-text-default-disabled
  • --gn-color-text-invert
  • --gn-color-text-invert-light
  • --gn-color-text-error
  • --gn-color-text-error-disabled

Relleno

  • --gn-color-fill-default
  • --gn-color-fill-primary
  • --gn-color-fill-neutral-lighter
  • --gn-color-fill-neutral-light
  • --gn-color-fill-neutral-base
  • --gn-color-fill-neutral-dark
  • --gn-color-fill-dark
  • --gn-color-fill-dark-transparent
  • --gn-color-fill-invert
  • --gn-color-fill-invert-light

Borde

  • --gn-color-border-primary
  • --gn-color-border-neutral-light
  • --gn-color-border-neutral-base
  • --gn-color-border-neutral-dark
  • --gn-color-border-black
  • --gn-color-border-error
  • --gn-color-border-focus
  • --gn-color-border-invert
  • --gn-color-border-invert-light

Los tokens *-disabled y los de estados activos/foco están también disponibles. Consulta src/tokens/tokens.css para la referencia completa.

Tokens de enlace

Los estados de enlace usan su propia familia semántica: --gn-color-link-*. En el tema por defecto los enlaces usan gris oscuro y se tiñen de rojo en interacción; en .gn-theme--blue cambian a azul.

link-default
Reposo
link-hover
Hover
link-focus
Foco
link-click
Click / Activo

El estilo visual completo del enlace (subrayado, grosor, offset) está implementado en .prose a. Ver página de Tipografía.

Variante de tema

La clase .gn-theme--blue en un contenedor padre sobreescribe --gn-color-primary de rojo corporativo a azul (--gn-color-blue-500). Se usa en secciones de navegación institucional o contextos con fondo azul. El resto de tokens semánticos permanece igual.

Modos de color y temas

La exportación de Semantic-color.zip incluye actualmente estos modos:

  • default.tokens.json (base)
  • blue.tokens.json (tema alternativo)
  • Invert.tokens.json (tema invertido)

Reglas de salida en CSS:

  • default se publica en :root (modo base del sistema).
  • blue se publica en .gn-theme--blue con solo variables distintas frente a default.
  • Invert se publica en .gn-theme--invert con solo variables distintas frente a default.

Ejemplo de uso:

...
...

Importante: token invert vs tema invert

  • Un token como --gn-color-text-invert es un token semántico individual.
  • Invert.tokens.json es un modo completo exportado desde Figma.

No son equivalentes: el primero define un valor concreto; el segundo redefine múltiples tokens del sistema dentro de un scope de tema.