Przejdź do głównej treści

Frutjam's color system uses semantic CSS tokens designed to meet WCAG AA contrast ratios out of the box. No JavaScript, dark mode aware, compatible with Tailwind CSS v4. Works with Django, HTMX, Laravel, and any CSS-only stack.

Frutjam wykorzystuje niestandardowe właściwości CSS jako tokeny projektu dla wszystkich kolorów. Każdy kolor jest zdefiniowany dla motywu i automatycznie współpracuje z klasami narzędzi CSS Tailwind — nie jest wymagana dodatkowa konfiguracja. Tylko CSS, nie wymaga JavaScript. Kontrast WCAG AA gwarantowany dla każdej pary kolorów, współpracuje z Django, HTMX, Laravel, React i dowolnym projektem Tailwind CSS v4.

Nazwy kolorów

Frutjam definiuje następujące semantyczne role kolorów. Każdy kolor ma pasujący token on-{color} dla dostępnego tekstu na pierwszym planie.

Kontrast WCAG AA gwarantowany. Każda para on-{color} jest ręcznie dostrajana w OKLCH, aby spełnić wymagania kontrastu WCAG AA. W przeciwieństwie do bibliotek, które automatycznie obliczają kolory pierwszego planu, Frutjam udostępnia jawne, zweryfikowane pary, dzięki czemu dostęp do komponentów jest zgodny z projektem, a nie przypadkowy.
Kolor Znak Zamiar
base--color-baseTło strony
neutral--color-neutralPowierzchnie, paski boczne, nakładki
primary--color-primaryPodstawowy kolor marki
secondary--color-secondaryKolor drugorzędny marki
accent--color-accentKolor akcentu/podkreślenia
info--color-infoKomunikaty informacyjne
success--color-successStany sukcesu
warning--color-warningStany ostrzegawcze
error--color-errorStany błędne i destrukcyjne

Zajęcia z użyteczności kolorów

Wszystkie kolory Frutjam współpracują z dowolnym narzędziem do tworzenia kolorów CSS Tailwind. Zastąp {color} dowolną nazwą koloru z powyższej tabeli.

Klasa Opis
bg-{color}Kolor tła
text-{color}Kolor tekstu
border-{color}Kolor obramowania
ring-{color}Kolor pierścionka
outline-{color}Kolor konturu
shadow-{color}Kolor cienia
fill-{color}Kolor wypełnienia SVG
stroke-{color}Kolor obrysu SVG
decoration-{color}Kolor dekoracji tekstu
caret-{color}Wprowadź kolor karetki
placeholder-{color}Kolor tekstu zastępczego
divide-{color}Kolor obramowania rozdzielacza
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>

Modyfikator krycia

Kontroluj krycie kolorów za pomocą modyfikatora /{value}, tak jak w przypadku każdego koloru 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>

Zmienne CSS motywu

Są to tokeny główne, które definiujesz podczas tworzenia niestandardowego motywu. Wszystkie inne żetony kolorów są obliczane automatycznie na ich podstawie.

Zmienna CSS Opis
--scheme-colorSchemat kolorów: jasny lub ciemny
--border-radiusPodstawowy promień obramowania komponentów
--color-baseKolor tła strony
--color-on-baseDomyślny kolor tekstu na tle bazowym
--color-neutralNeutralny kolor powierzchni
--color-on-neutralKolor tekstu na neutralnych powierzchniach
--color-primaryPodstawowy kolor marki
--color-on-primaryKolor tekstu na tle podstawowym
--color-secondaryKolor drugorzędny marki
--color-on-secondaryKolor tekstu na tle wtórnym
--color-accentKolor akcentujący
--color-on-accentKolor tekstu na akcentowanym tle
--color-infoKolor informacji
--color-on-infoKolor tekstu na tłach informacyjnych
--color-successKolor sukcesu
--color-on-successKolor tekstu na tle sukcesu
--color-warningKolor ostrzegawczy
--color-on-warningKolor tekstu na tle ostrzeżeń
--color-errorKolor błędu
--color-on-errorKolor tekstu na tle błędów

Obliczone tokeny kolorów

Frutjam automatycznie oblicza te tokeny na podstawie zmiennych motywu głównego — nie ustawia się ich ręcznie. Są one dostępne do użycia w niestandardowym CSS.

Skala (50–950)

Każdy kolor generuje pełną 11-stopniową skalę odcienia. Zamień {color} na dowolną nazwę koloru.

Zmienna CSS Opis
--color-{color}-50Najjaśniejszy odcień (mieszanka kolorów 4%)
--color-{color}-100Bardzo jasny odcień
--color-{color}-200Lekki odcień
--color-{color}-300Odcień średnio jasny
--color-{color}-400Lekki odcień
--color-{color}-500Kolor bazowy (taki sam jak --color-{color})
--color-{color}-600Lekki cień
--color-{color}-700Średni odcień
--color-{color}-800Ciemny odcień
--color-{color}-900Bardzo ciemny odcień
--color-{color}-950Najciemniejszy odcień

Miękkie & Aktywny

Warianty świadome stanu elementów interaktywnych, automatycznie dostosowujące się do jasnych i ciemnych motywów.

Zmienna CSS Opis
--color-{color}-softSubtelnie przyciemnione tło dla miękkich wariantów
--color-on-{color}-softKolor tekstu do stosowania na miękkim tle
--color-{color}-activePrzyciemniony/rozjaśniony odcień dla stanów najechania i aktywności
--color-bodyObliczony kolor tekstu podstawowego (nieznacznie złagodzony w stosunku do w bazie)

Przykład niestandardowego motywu

Zastąp tokeny root, aby utworzyć niestandardowy motyw. Frutjam automatycznie oblicza wszystkie skale i stany.

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