Skonfiguruj wtyczkę Tailwind CSS obsługującą wyłącznie Frutjam CSS. Ustaw domyślne motywy, zdefiniuj niestandardowe tokeny kolorów, przełącz system przedrostków - nie jest wymagana żadna obsługa JavaScript. Domyślne ustawienia dostępne w WCAG, działają z Django, HTMX, Laravel i dowolnym frameworkiem.
Skonfiguruj wtyczkę Tailwind CSS obsługującą wyłącznie Frutjam CSS, aby pasowała do Twojego projektu. Ustawiaj motywy, definiuj niestandardowe tokeny kolorów, przełączaj system przedrostków i wybieraj komponenty — nie jest wymagana żadna obsługa JavaScript. Dostępne ustawienia domyślne WCAG AA. Współpracuje z Django, HTMX, Laravel, React i dowolnym projektem Tailwind CSS v4.
Konfiguracja podstawowa
Dodaj Frutjam do swojego pliku CSS za pomocą dyrektywy @plugin. Nie są wymagane żadne opcje — wszystko działa od razu po wyjęciu z pudełka.
1 2 | @import "tailwindcss"; @plugin "frutjam"; |
Opcje wtyczki
Dostosuj Frutjam, przekazując opcje w bloku @plugin:
1 2 3 4 5 6 7 8 9 | @import "tailwindcss"; @plugin "frutjam" { prefix: fj; reset: true; root: :host; include: button, card, alert; /* or: */ exclude: table, timeline; } |
prefiks
Dodaje przedrostek do wszystkich nazw klas Frutjam, aby uniknąć konfliktów z własnym CSS.
1 2 3 | @plugin "frutjam" { prefix: fj; } |
<button class="fj-btn fj-btn-primary">Send mail</button> |
Zachowanie prefiksu zależy od tego, czy używasz także opcji prefix() Tailwinda:
Tylko przedrostek Frutjam
Nazwy klas Frutjam są poprzedzone prefiksem. Używaj ich bezpośrednio w kodzie HTML.
1 2 3 4 | @import "tailwindcss"; @plugin "frutjam" { prefix: fj; } |
<button class="fj-btn">Button</button> |
Tylko przedrostek wiatru tylnego
prefix() Tailwinda działa jako wariant — wszystkie narzędzia (w tym Frutjam) wymagają prefiksu jako selektora wariantu w HTML.
1 2 | @import "tailwindcss" prefix(tw); @plugin "frutjam"; |
<button class="tw:btn">Button</button> |
Oba przedrostki
Frutjam zmienia nazwy swoich klas (np. fj-btn), a na górze wymagany jest przedrostek wariantu Tailwinda.
1 2 3 4 | @import "tailwindcss" prefix(tw); @plugin "frutjam" { prefix: fj; } |
<button class="tw:fj-btn">Button</button> |
nastawić
Kontroluje, czy Frutjam wprowadza resetowanie elementów podstawowych (styl ponownego uruchomienia). Domyślnie true.
Kiedy true, Frutjam resetuje model pudełka, typografię, listy, multimedia i elementy formularzy — podobnie jak w przypadku wstępnej inspekcji Tailwind. Gdy false, wstrzykiwane są tylko tokeny zmiennych CSS; style elementów surowych są całkowicie pomijane.
Ustaw na false, jeśli używasz już innego frameworka CSS (Bootstrap, Bulma itp.) lub własnego resetu, aby uniknąć konfliktów na elementach takich jak *, html, body, h1-h6 i button.
1 2 3 | @plugin "frutjam" { reset: false; } |
źródło
Selektor CSS, w którym Frutjam rejestruje zmienne tokenu projektu (--color-primary, --color-base itp.). Domyślnie jest to :root.
Istnieją trzy przydatne wartości:
| Wartość | Kiedy używać |
|---|---|
:root | Domyślny. Tokeny są dostępne globalnie na całej stronie. |
:host | Shadow DOM / komponenty sieciowe. Tokeny zakresów wewnątrz komponentu, aby nie wyciekały. |
Dowolny selektor (np. #app) | Zakres tokenów do określonego elementu otoki. Przydatne, gdy Frutjam współistnieje z innym frameworkiem na tej samej stronie. |
Domyślnie — tokeny globalne
1 2 3 | @plugin "frutjam" { root: :root; } |
Shadow DOM / komponenty sieciowe
1 2 3 | @plugin "frutjam" { root: :host; } |
Zasięg do elementu opakowania
Jeśli inny framework kontroluje już :root (np. Bootstrap ustawia własne zmienne --bs-* i kolory treści), zamiast tego wskaż Frutjamowi element kontenera. Spowoduje to przeniesienie color, background-color i wszystkich zmiennych CSS z :root, tak aby miały one zastosowanie tylko wewnątrz tego opakowania.
1 2 3 4 5 | @plugin "frutjam" { prefix: fj; reset: false; root: #my-app; } |
1 2 3 4 | <div id="my-app" data-theme="blueberry"> <!-- Frutjam components here, Bootstrap outside --> <button class="fj-btn fj-btn-primary">Send</button> </div> |
włączać
Załaduj tylko określone komponenty zamiast pełnej biblioteki. Przydatne do zmniejszania wielkości wyjściowej w produkcji.
1 2 3 | @plugin "frutjam" { include: button, card, alert, badge; } |
wykluczać
Załaduj wszystkie komponenty oprócz wymienionych. Użyj, gdy chcesz usunąć tylko kilka komponentów z pełnej kompilacji.
1 2 3 | @plugin "frutjam" { exclude: table, timeline, chat; } |
Utwórz niestandardowy motyw
Aby stworzyć własny motyw, po prostu przypisz wartości kolorów do podanych zmiennych CSS w selektorze [data-theme="nazwa-motywu"]
1. The "Automatic" Approach (Minimal)
W tej wersji pomijamy zmienne --color-on-*. Frutjam wykrywa brakujące zmienne i oblicza optymalny kolor tekstu — zwykle przełączając pomiędzy bardzo jasną lub bardzo ciemną wartością OKLCH — aby mieć pewność, że komponent pozostanie dostępny i czytelny.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @layer theme { :is([data-theme="your-theme-name"]) { --scheme-color: light; --border-radius: 0.25rem; --color-base: oklch(1 0 0); --color-neutral: oklch(0.15 0 0); --color-primary: oklch(51.1% 0.262 276.966); --color-secondary: oklch(0.591 0.293 322.896); --color-accent: oklch(0.541 0.281 293.009); --color-info: oklch(0.685 0.169 237.323); --color-success: oklch(0.792 0.209 151.711); --color-warning: oklch(0.852 0.199 91.936); --color-error: oklch(0.577 0.245 27.325); } } |
2. The "Manual" Approach (Full Control)
W tej wersji wyraźnie definiujemy zmienne --color-on-*. Jest to idealne rozwiązanie, jeśli masz określone wytyczne dotyczące marki (np. użycie przyciemnionego odcienia złamanej bieli zamiast czystej bieli) lub gdy chcesz uzyskać określony „klimat”, np. wyrafinowany wygląd o niskim kontraście, który mimo to przechodzi kontrolę dostępności.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @layer theme { :is([data-theme="your-theme-name"]) { --scheme-color: light; --border-radius: 0.25rem; --color-base: oklch(1 0 0); --color-on-base:oklch(0.22 0 0); --color-neutral: oklch(0.15 0 0); --color-on-neutral: oklch(1 0 0); --color-primary: oklch(51.1% 0.262 276.966); --color-on-primary: oklch(96.2% 0.018 272.314); --color-secondary: oklch(0.591 0.293 322.896); --color-on-secondary: oklch(1 0 0); --color-accent: oklch(0.541 0.281 293.009); --color-on-accent: oklch(1 0 0); --color-info: oklch(0.685 0.169 237.323); --color-on-info: oklch(0.15 0 0); --color-success: oklch(0.792 0.209 151.711); --color-on-success: oklch(0.15 0 0); --color-warning: oklch(0.852 0.199 91.936); --color-on-warning: oklch(0.15 0 0); --color-error: oklch(0.577 0.245 27.325); --color-on-error: oklch(1 0 0); } } |
Aby zastosować niestandardowy motyw do projektu w kodzie HTML, użyj data-theme="nazwa-twojego-motywu" do elementu HTML.
1 2 3 | <html data-theme="your-theme-name"> ... </html> |
Motywy można zagnieżdżać — możesz zastosować konkretny motyw do dowolnej sekcji kodu HTML, zastępując motyw globalny dla tego obszaru.
1 2 3 4 5 6 7 8 | <html data-theme="light"> <div data-theme="dark"> This div uses the dark theme. <span data-theme="your-custom-theme"> This span uses the your-custom-theme </span> </div> </html> |
Dalsze czytanie
- Dostępne wbudowane motywy — przeglądaj Snowberry, Darkberry i wszystkie zawarte motywy
- Odniesienie do systemu kolorów — pełna lista zmiennych kolorów CSS i sposobu ich mapowania na komponenty