Przejdź do głównej treści

System kolorów

Ostatnia aktualizacja:

System kolorów Frutjam wykorzystuje semantyczne tokeny CSS zaprojektowane tak, aby od razu spełniać współczynniki kontrastu WCAG AA. Brak JavaScript, obsługa trybu ciemnego, kompatybilność z Tailwind CSS v4. Działa z Django, HTMX, Laravel i dowolnym stosem obsługującym tylko CSS.

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
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.

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