Skip to main content

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 juego on-{color} token para texto en primer plano accesible.

ColorSimbólicoObjetivo
base--color-baseFondo de la página
neutral--color-neutralSuperficies, barras laterales, superposiciones
primario--color-primaryColor de marca principal
secundario--color-secondaryColor de marca secundaria
acento--color-accentColor de acento/resaltado
información--color-infoMensajes informativos
éxito--color-successEstados de éxito
advertencia--color-warningEstados de advertencia
error--color-errorError y estados destructivos.

Escala de colores (50–950)

Cada color genera una escala de 11 pasos, calculada a partir de las variables del tema raíz con color-mix() en OKLCH en lugar de en el momento de la construcción. Establezca un color de marca y los once pasos se derivarán de él, por lo que nunca los configurará a mano.

Cada paso es una variable CSS y una utilidad Tailwind a la vez: use var(--color-primary-700) en tu propio CSS, o bg-primary-700 en marcado. Pase el cursor sobre una muestra para ver ambos nombres.

Colour50100200300400500600700800900950
primaryprimary 50primary 100primary 200primary 300primary 400primary 500primary 600primary 700primary 800primary 900primary 950
secondarysecondary 50secondary 100secondary 200secondary 300secondary 400secondary 500secondary 600secondary 700secondary 800secondary 900secondary 950
accentaccent 50accent 100accent 200accent 300accent 400accent 500accent 600accent 700accent 800accent 900accent 950
infoinfo 50info 100info 200info 300info 400info 500info 600info 700info 800info 900info 950
successsuccess 50success 100success 200success 300success 400success 500success 600success 700success 800success 900success 950
warningwarning 50warning 100warning 200warning 300warning 400warning 500warning 600warning 700warning 800warning 900warning 950
errorerror 50error 100error 200error 300error 400error 500error 600error 700error 800error 900error 950
neutralneutral 50neutral 100neutral 200neutral 300neutral 400neutral 500neutral 600neutral 700neutral 800neutral 900neutral 950
basebase 50base 100base 200base 300base 400base 500base 600base 700base 800base 900base 950

Debido a que los pasos se calculan a partir de su tema en lugar de estar codificados, esta cuadrícula no es una imagen de los colores de Frutjam. Son tus colores. Cambie el tema y cada muestra de arriba se moverá con él, razón por la cual no hay valores hexadecimales impresos junto a ellos.

Light tint, dark text
Dark shade, light text
Border and text
html
1
2
3
<div class="bg-primary-100 text-primary-900 p-4 rounded">Light tint, dark text</div>
<div class="bg-success-700 text-success-50 p-4 rounded">Dark shade, light text</div>
<div class="border-2 border-error-400 text-error-600 p-4 rounded">Border and text</div>
Variables CSSDescripción
--color-{color}-5080% del tono claro, 20% del color
--color-{color}-10065% luz, 35% color
--color-{color}-20050% luz, 50% color
--color-{color}-30035% luz, 65% color
--color-{color}-40018% luz, 82% color
--color-{color}-500el color en sí, igual que --color-{color}
--color-{color}-60018% de tono oscuro, 82% de color.
--color-{color}-70034% oscuro, 66% color
--color-{color}-80050% oscuro, 50% color
--color-{color}-90065% oscuro, 35% color
--color-{color}-95080% oscuro, 20% color

Clases de utilidad de color

Todos los colores de Frutjam funcionan con cualquier utilidad de color CSS de Tailwind. Reemplazar {color} con cualquier nombre de color de la tabla anterior, seguido opcionalmente de un paso de la escala 50-950: bg-primary, bg-primary-100, text-error-900, border-success-300.

ClaseDescripció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
{utility}-{color}-{step}Cualquiera de los anteriores en un paso de escala, por ejemplo bg-accent-200
Primary background
Secondary background
Primary border and text
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 /{value} modificador, como cualquier color de Tailwind.

10% primary background
20% primary background
60% opacity text
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>

Suave y activo

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

Variables CSSDescripció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 cuerpo del texto calculado (ligeramente suavizado desde on-base)

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 CSSDescripción
--scheme-colorEsquema de colores: light o dark
--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

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);
}

Found this useful?

Star Frutjam on GitHub. It's how other developers discover it.