Skip to main content

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ário CSS do Tailwind, sem necessidade de configuração extra. Somente CSS, sem necessidade de JavaScript. Contraste WCAG AA garantido em cada par 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 tem uma correspondência on-{color} token para texto acessível em primeiro plano.

CorSímboloPropósito
base--color-basePlano de fundo da página
neutro--color-neutralSuperfícies, barras laterais, sobreposições
primário--color-primaryCor principal da marca
secundário--color-secondaryCor da marca secundária
sotaque--color-accentCor de destaque/destaque
informações--color-infoMensagens informativas
sucesso--color-successEstados de sucesso
aviso--color-warningEstados de aviso
erro--color-errorErro e estados destrutivos

Escala de cores (50–950)

Cada cor gera uma escala de 11 passos, calculada a partir das variáveis ​​do tema raiz com color-mix() no OKLCH e não no momento da construção. Defina uma cor de marca e todas as onze etapas decorrem dela, para que você nunca as defina manualmente.

Cada etapa é uma variável CSS e um utilitário Tailwind ao mesmo tempo: use var(--color-primary-700) em seu próprio CSS ou bg-primary-700 na marcação. Passe o mouse sobre uma amostra para ver os dois nomes.

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

Como as etapas são calculadas a partir do seu tema, e não codificadas, esta grade não é uma imagem das cores de Frutjam. São as suas cores. Mude o tema e cada amostra acima se moverá com ele, e é também por isso que não há valores hexadecimais impressos ao lado deles.

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>
Variável CSSDescrição
--color-{color}-5080% da sombra clara, 20% da cor
--color-{color}-10065% de luz, 35% de cor
--color-{color}-20050% de luz, 50% de cor
--color-{color}-30035% de luz, 65% de cor
--color-{color}-40018% de luz, 82% de cor
--color-{color}-500a cor em si, igual a --color-{color}
--color-{color}-60018% de sombra escura, 82% de cor
--color-{color}-70034% escuro, 66% colorido
--color-{color}-80050% escuro, 50% colorido
--color-{color}-90065% escuro, 35% colorido
--color-{color}-95080% escuro, 20% colorido

Classes de utilitários de cores

Todas as cores Frutjam funcionam com qualquer utilitário de cores Tailwind CSS. Substituir {color} com qualquer nome de cor da tabela acima, opcionalmente seguido por um passo da escala 50-950: bg-primary, bg-primary-100, text-error-900, border-success-300.

AulaDescriçã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
{utility}-{color}-{step}Qualquer um dos itens acima em escala, por exemplo 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 opacidade

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

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

Variável CSSDescriçã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 de on-base)

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 CSSDescrição
--scheme-colorEsquema de cores: light ou dark
--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

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

Found this useful?

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