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}.
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.
Default
Hover
Click / Active
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.
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.
Reposo
Hover
Foco
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:
defaultse publica en:root(modo base del sistema).bluese publica en.gn-theme--bluecon solo variables distintas frente adefault.Invertse publica en.gn-theme--invertcon solo variables distintas frente adefault.
Ejemplo de uso:
Importante: token invert vs tema invert
- Un token como
--gn-color-text-invertes un token semántico individual. Invert.tokens.jsones 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.