Tokeny Semantyczne

Paczka Tailwind v4 używa semantycznych zmiennych CSS (tokenów projektowych) dla wszystkich kolorów. Te tokeny oddzielają style komponentów od konkretnych wartości kolorów, co ułatwia tworzenie motywów. Konwencja nazewnictwa tokenów jest zgodna z tą samą, której używa shadcn/ui.

System Tokenów

Zamiast zakodowanych na stałe kolorów, takich jak bg-sky-500, komponenty Tailwind v4 używają semantycznych narzędzi, takich jak bg-primary, text-foreground i border-border. Odwzorowują one zmienne CSS, które definiujesz w swoim projekcie.

bg-primary → var(--color-primary)
text-foreground → var(--color-foreground)
border-border → var(--color-border)

Wymagane Tokeny

Zdefiniuj te tokeny w swoim CSS, używając dyrektywy @theme z Tailwind v4:

@theme {
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0.004 285.823);
--color-popover: oklch(1 0 0);
--color-popover-foreground: oklch(0.145 0.004 285.823);
--color-primary: oklch(0.205 0.006 285.885);
--color-primary-foreground: oklch(0.985 0.001 285.823);
--color-muted-foreground: oklch(0.556 0.01 285.823);
--color-accent: oklch(0.96 0.003 285.823);
--color-accent-foreground: oklch(0.205 0.006 285.885);
--color-destructive: oklch(0.577 0.245 27.325);
--color-border: oklch(0.922 0.004 285.823);
--color-input: oklch(0.922 0.004 285.823);
--color-ring: oklch(0.87 0.006 285.823);
}

Referencje Tokenów

TokenUżywane DoPrzykładowe Narzędzia
--color-backgroundTło strony/aplikacjibg-background
--color-foregroundDomyślny kolor tekstutext-foreground
--color-popoverTło wyskakującego okienkabg-popover
--color-popover-foregroundTekst wyskakującego okienkatext-popover-foreground
--color-primaryWybrany dzień, przycisk potwierdzenia, punkty końcowe zakresubg-primary, text-primary
--color-primary-foregroundTekst na tłach podstawowychtext-primary-foreground
--color-muted-foregroundWyciszony tekst (placeholdery, dni tygodnia, przyciski nawigacyjne)text-muted-foreground
--color-accentTła najechania dla dni i przyciskówbg-accent
--color-accent-foregroundTekst na tłach akcentującychtext-accent-foreground
--color-destructiveTekst przycisku wyczyść/niebezpieczeństwotext-destructive
--color-borderOgólne obramowania (stopka, presety, wyskakujące okienko)border-border
--color-inputObramowanie pola wprowadzania/wyzwalaczaborder-input
--color-ringKolor pierścienia fokusuring-ring

Jak Tokeny Odwzorowują się na Komponenty

Oto jak tokeny są stosowane w całym pickerze:

Wyzwalacz

  • Tło: bg-background
  • Obramowanie: border-input
  • Tekst: dziedziczony z text-foreground w korzeniu
  • Placeholder: text-muted-foreground
  • Pierścień fokusu: ring-ring

Wyskakujące okienko

  • Tło: bg-popover
  • Tekst: text-popover-foreground
  • Obramowanie: border-border

Dni Kalendarza

  • Domyślne najechanie: bg-accent / text-accent-foreground
  • Wybrany: bg-primary / text-primary-foreground
  • Dziś: text-primary
  • W zakresie: bg-primary/10
  • Początek/koniec zakresu: bg-primary / text-primary-foreground
  • Wyłączony: text-muted-foreground ze zmniejszoną przezroczystością

Stopka

  • Obramowanie: border-border
  • Przycisk Anuluj: border-input, najechanie bg-accent
  • Przycisk Potwierdź: bg-primary / text-primary-foreground
  • Przycisk Wyczyść: text-destructive

Dostosowywanie Tokenów

Zmień Kolor Podstawowy

Zmień --color-primary i --color-primary-foreground, aby zmienić markę pickera:

@theme {
/* Fioletowy podstawowy */
--color-primary: oklch(0.55 0.25 300);
--color-primary-foreground: oklch(0.98 0.01 300);
}

Ciepła Paleta Kolorów

@theme {
--color-background: oklch(0.99 0.005 80);
--color-foreground: oklch(0.2 0.02 60);
--color-popover: oklch(0.99 0.005 80);
--color-popover-foreground: oklch(0.2 0.02 60);
--color-primary: oklch(0.6 0.2 40);
--color-primary-foreground: oklch(0.98 0.005 80);
--color-accent: oklch(0.95 0.02 80);
--color-accent-foreground: oklch(0.2 0.02 60);
--color-border: oklch(0.9 0.01 80);
--color-input: oklch(0.9 0.01 80);
--color-ring: oklch(0.85 0.02 80);
}

Tokeny Trybu Ciemnego

Dla trybu ciemnego, nadpisz tokeny pod selektorem .dark lub w @media (prefers-color-scheme: dark):

@theme {
--color-background: oklch(1 0 0);
--color-foreground: oklch(0.145 0.004 285.823);
/* ... wartości trybu jasnego */
}
.dark {
--color-background: oklch(0.145 0.004 285.823);
--color-foreground: oklch(0.985 0.001 285.823);
--color-popover: oklch(0.145 0.004 285.823);
--color-popover-foreground: oklch(0.985 0.001 285.823);
--color-primary: oklch(0.985 0.001 285.823);
--color-primary-foreground: oklch(0.205 0.006 285.885);
--color-muted-foreground: oklch(0.556 0.01 285.823);
--color-accent: oklch(0.269 0.006 285.885);
--color-accent-foreground: oklch(0.985 0.001 285.823);
--color-destructive: oklch(0.577 0.245 27.325);
--color-border: oklch(0.269 0.006 285.885);
--color-input: oklch(0.269 0.006 285.885);
--color-ring: oklch(0.369 0.006 285.885);
}

Zobacz Tryb Ciemny, aby uzyskać więcej szczegółów.

Istniejące Projekty shadcn/ui

Jeśli twój projekt ma już zdefiniowane tokeny shadcn/ui, picker użyje ich automatycznie bez dodatkowej konfiguracji. Nazwy tokenów są celowo kompatybilne. Zobacz Rejestr shadcn, aby uzyskać więcej informacji.