Ir para o conteúdo principal

Sistema de cores

Última atualização:

O sistema de cores da Frutjam usa tokens CSS semânticos projetados para atender às taxas de contraste WCAG AA prontas para uso. Sem JavaScript, compatível com modo escuro, compatível com Tailwind CSS v4. Funciona com Django, HTMX, Laravel e qualquer pilha somente CSS.

Frutjam usa propriedades personalizadas CSS como tokens de design para todas as cores. Cada cor é definida por tema e funciona automaticamente com classes de utilitários CSS do Tailwind – sem necessidade de configuração extra. Somente CSS, sem necessidade de JavaScript. Contraste WCAG AA garantido em todos os pares de cores, funciona com Django, HTMX, Laravel, React e qualquer projeto Tailwind CSS v4.

Nomes de cores

Frutjam define os seguintes papéis semânticos de cores. Cada cor possui um token on-{color} correspondente para texto acessível em primeiro plano.

Contraste WCAG AA garantido. Cada par on-{color} é ajustado manualmente em OKLCH para atender aos requisitos de contraste WCAG AA. Ao contrário das bibliotecas que calculam as cores de primeiro plano automaticamente, o Frutjam oferece pares explícitos e verificados — para que seus componentes sejam acessíveis por design, e não por acaso.
Cor Símbolo Propósito
base--color-basePlano de fundo da página
neutral--color-neutralSuperfícies, barras laterais, sobreposições
primary--color-primaryCor principal da marca
secondary--color-secondaryCor da marca secundária
accent--color-accentCor de destaque/destaque
info--color-infoMensagens informativas
success--color-successEstados de sucesso
warning--color-warningEstados de aviso
error--color-errorErro e estados destrutivos

Classes de utilitários de cores

Todas as cores Frutjam funcionam com qualquer utilitário de cores Tailwind CSS. Substitua {color} por qualquer nome de cor da tabela acima.

Aula Descrição
bg-{color}Cor de fundo
text-{color}Cor do texto
border-{color}Cor da borda
ring-{color}Cor do anel
outline-{color}Cor do contorno
shadow-{color}Cor da sombra
fill-{color}Cor de preenchimento SVG
stroke-{color}Cor do traço SVG
decoration-{color}Cor da decoração do texto
caret-{color}Cor do cursor de entrada
placeholder-{color}Cor do texto do espaço reservado
divide-{color}Cor da borda do divisor
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 opacidade

Controle a opacidade da cor com o modificador /{value}, como qualquer cor do 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>

Variáveis ​​CSS do tema

Estes são os tokens raiz que você define ao criar um tema personalizado. Todos os outros tokens de cores são calculados automaticamente a partir deles.

Variável CSS Descrição
--scheme-colorEsquema de cores: claro ou escuro
--border-radiusRaio da borda base para componentes
--color-baseCor de fundo da página
--color-on-baseCor de texto padrão no plano de fundo base
--color-neutralCor de superfície neutra
--color-on-neutralCor do texto em superfícies neutras
--color-primaryCor principal da marca
--color-on-primaryCor do texto em fundos primários
--color-secondaryCor da marca secundária
--color-on-secondaryCor do texto em fundos secundários
--color-accentCor de destaque
--color-on-accentCor do texto em fundos acentuados
--color-infoCor da informação
--color-on-infoCor do texto em fundos de informações
--color-successCor do sucesso
--color-on-successCor do texto em fundos de sucesso
--color-warningCor de aviso
--color-on-warningCor do texto em fundos de aviso
--color-errorCor do erro
--color-on-errorCor do texto em fundos de erro

Tokens de cores computados

O Frutjam calcula automaticamente esses tokens a partir das variáveis ​​do tema raiz — você não os define manualmente. Eles estão disponíveis para uso em CSS personalizado.

Escala (50–950)

Cada cor gera uma escala completa de matiz/sombra de 11 etapas. Substitua {color} por qualquer nome de cor.

Variável CSS Descrição
--color-{color}-50Tonalidade mais clara (4% mistura de cores)
--color-{color}-100Tonalidade muito clara
--color-{color}-200Tonalidade clara
--color-{color}-300Tonalidade média-clara
--color-{color}-400Tonalidade leve
--color-{color}-500Cor base (igual a --color-{color})
--color-{color}-600Sombra leve
--color-{color}-700Sombra média
--color-{color}-800Sombra escura
--color-{color}-900Sombra muito escura
--color-{color}-950Tom mais escuro

Suave e macio. Ativo

Variantes com reconhecimento de estado para elementos interativos, adaptando-se automaticamente a temas claros e escuros.

Variável CSS Descrição
--color-{color}-softFundo colorido sutil para variantes suaves
--color-on-{color}-softCor do texto para uso em fundos suaves
--color-{color}-activeSombra escurecida/clara para estados ativos e pairados
--color-bodyCor do texto do corpo computada (ligeiramente suavizada em relação ao on-base)

Exemplo de tema personalizado

Substitua os tokens raiz para criar um tema personalizado. Frutjam calcula todas as escalas e estados automaticamente.

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