Ir al contenido principal

Sistema de colores

Última actualización:

El sistema de color de Frutjam utiliza tokens CSS semánticos diseñados para cumplir con las relaciones de contraste WCAG AA desde el primer momento. Sin JavaScript, compatible con el modo oscuro, compatible con Tailwind CSS v4. Funciona con Django, HTMX, Laravel y cualquier pila de solo CSS.

Frutjam utiliza propiedades personalizadas de CSS como tokens de diseño para todos los colores. Cada color se define por tema y funciona automáticamente con las clases de utilidad CSS de Tailwind, sin necesidad de configuración adicional. Solo CSS, no se requiere JavaScript. Contraste WCAG AA garantizado en cada par de colores, funciona con Django, HTMX, Laravel, React y cualquier proyecto Tailwind CSS v4.

Nombres de colores

Frutjam define los siguientes roles semánticos de color. Cada color tiene un token on-{color} coincidente para el texto en primer plano accesible.

Contraste WCAG AA garantizado. Cada par on-{color} se ajusta manualmente en OKLCH para cumplir con los requisitos de contraste WCAG AA. A diferencia de las bibliotecas que calculan automáticamente los colores de primer plano, Frutjam le ofrece pares explícitos y verificados, para que sus componentes sean accesibles por diseño, no por casualidad.
Color Simbólico Objetivo
base--color-baseFondo de la página
neutral--color-neutralSuperficies, barras laterales, superposiciones
primary--color-primaryColor de marca principal
secondary--color-secondaryColor de marca secundaria
accent--color-accentColor de acento/resaltado
info--color-infoMensajes informativos
success--color-successEstados de éxito
warning--color-warningEstados de advertencia
error--color-errorError y estados destructivos.

Clases de utilidad de color

Todos los colores de Frutjam funcionan con cualquier utilidad de color CSS de Tailwind. Reemplace {color} con cualquier nombre de color de la tabla anterior.

Clase Descripción
bg-{color}Color de fondo
text-{color}Color del texto
border-{color}Color del borde
ring-{color}Color del anillo
outline-{color}color de contorno
shadow-{color}color de sombra
fill-{color}Color de relleno SVG
stroke-{color}color de trazo SVG
decoration-{color}Color de decoración del texto
caret-{color}Color de intercalación de entrada
placeholder-{color}Color del texto del marcador de posición
divide-{color}Color del borde divisorio
html
1
2
3
<div class="bg-primary text-on-primary p-4 rounded">Primary background</div>
<div class="bg-secondary text-on-secondary p-4 rounded">Secondary background</div>
<div class="border border-primary text-primary p-4 rounded">Primary border and text</div>

Modificador de opacidad

Controle la opacidad del color con el modificador /{value}, como cualquier color de Tailwind.

html
1
2
3
<div class="bg-primary/10 text-primary p-4 rounded">10% primary background</div>
<div class="bg-primary/20 text-primary p-4 rounded">20% primary background</div>
<div class="text-on-base/60 p-4">60% opacity text</div>

Variables CSS del tema

Estos son los tokens raíz que defines al crear un tema personalizado. Todos los demás tokens de colores se calculan automáticamente a partir de estos.

Variables CSS Descripción
--scheme-colorEsquema de colores: claro u oscuro
--border-radiusRadio del borde base para componentes
--color-baseColor de fondo de la página
--color-on-baseColor de texto predeterminado en el fondo base
--color-neutralColor de superficie neutro
--color-on-neutralColor del texto en superficies neutras.
--color-primaryColor de marca principal
--color-on-primaryColor del texto en fondos primarios
--color-secondaryColor de marca secundaria
--color-on-secondaryColor del texto en fondos secundarios.
--color-accentColor de acento
--color-on-accentColor del texto en fondos acentuados
--color-infoColor de información
--color-on-infoColor del texto en fondos de información.
--color-successColor del éxito
--color-on-successColor de texto en fondos de éxito.
--color-warningColor de advertencia
--color-on-warningColor del texto en fondos de advertencia
--color-errorColor de error
--color-on-errorColor del texto en fondos de error

Fichas de color calculadas

Frutjam calcula automáticamente estos tokens a partir de las variables de tu tema raíz; no los configuras manualmente. Están disponibles para su uso en CSS personalizado.

Escala (50–950)

Cada color genera una escala completa de tintes/sombras de 11 pasos. Reemplace {color} con cualquier nombre de color.

Variables CSS Descripción
--color-{color}-50Tono más claro (mezcla de colores 4%)
--color-{color}-100tinte muy claro
--color-{color}-200tinte claro
--color-{color}-300Tinte medio claro
--color-{color}-400ligero tinte
--color-{color}-500Color base (igual que --color-{color})
--color-{color}-600Ligera sombra
--color-{color}-700Sombra media
--color-{color}-800sombra oscura
--color-{color}-900sombra muy oscura
--color-{color}-950tono más oscuro

Suave y suave. Activo

Variantes con reconocimiento de estado para elementos interactivos, que se adaptan automáticamente a temas claros y oscuros.

Variables CSS Descripción
--color-{color}-softFondo teñido sutil para variantes suaves
--color-on-{color}-softColor de texto para usar en fondos suaves
--color-{color}-activeTono oscurecido/aclarado para estados activos y suspendidos
--color-bodyColor del texto del cuerpo calculado (ligeramente suavizado desde on-base)

Ejemplo de tema personalizado

Anule los tokens raíz para crear un tema personalizado. Frutjam calcula todas las escalas y estados automáticamente.

css
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@import "tailwindcss";
@plugin "frutjam";

[data-theme="mytheme"] {
  --scheme-color: light;
  --border-radius: 0.5rem;

  --color-base: oklch(98% 0 0);
  --color-on-base: oklch(15% 0 0);

  --color-neutral: oklch(20% 0 0);
  --color-on-neutral: oklch(98% 0 0);

  --color-primary: oklch(55% 0.25 260);
  --color-on-primary: oklch(98% 0 0);

  --color-secondary: oklch(60% 0.20 320);
  --color-on-secondary: oklch(98% 0 0);

  --color-accent: oklch(65% 0.22 180);
  --color-on-accent: oklch(15% 0 0);

  --color-info: oklch(68% 0.17 237);
  --color-on-info: oklch(15% 0 0);

  --color-success: oklch(75% 0.20 150);
  --color-on-success: oklch(15% 0 0);

  --color-warning: oklch(82% 0.19 90);
  --color-on-warning: oklch(15% 0 0);

  --color-error: oklch(58% 0.24 27);
  --color-on-error: oklch(98% 0 0);
}