Témata
Komponenty Lily mají stabilní třídní háčky a nulové CSS — takže téma je jen stylopis. Tento návod vede od „připojte jeden soubor“ k „nechte uživatele přepínat téma za běhu, s trvalým uložením“.
Co vytvoříte
Aplikace, jejíž celý vzhled může uživatel měnit — od jednoho připojeného stylopisu až po trvale uložený přepínač témat za běhu — zhruba za 15 minut.
Než začnete
Nejprve dokončete návod k frameworku pro svůj stack nejdřív, ať máte malý formulář Lily, na který téma aplikujete. Vše zde funguje ve všech sedmi frameworcích; ukázky kódu ukazují Svelte a čisté HTML.
Krok 1 — Připojte hotové téma
themes/ adresář obsahuje 45 samostatných stylopisů. Zkopírujte je do statických zdrojů své aplikace a připojte jeden:
<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />
Z toho, co sada nabízí:
-
Veřejný sektor — NHS England / Scotland / Wales, každé ve variantách pro pacienty i pro odborníky; GOV.UK (
united-kingdom-government-digital-service); USWDS (united-states-web-design-system). - Inspirovaná dodavateli —
adobe-spectrum,mozilla-protocol. -
Univerzální —
light,dark,nord,dracula,wireframe,corporate,synthwavea mnoho dalších.
Zkontrolujte svou práci: znovu načtěte stránku. Stejné značky, které jste postavili v návodu k frameworku, jsou teď plně ostylované — tlačítka, vstupy, štítky, fokusové obruby. Udělal to jeden řádek HTML — každá komponenta zůstala přesně taková, jaká byla.
Krok 2 — Přepište cokoli
Selektory témat jsou obaleny v :where(...)která má nulovou specifičnost — takže jakékoli pravidlo, které napíšete, vyhraje, prostě:
/* After the theme link: your brand button, everything else themed */
.button {
background: #7c3aed;
border-radius: 9999px;
}
Krok 3 — Přepínání za běhu pomocí theme-picker
theme-picker pomocník je bezhlavé tlačítko s ikonou + listbox, který vlastní celý životní cyklus tématu: načte vybraný stylopis výměnou jednoho spravovaného <link>
(stahuje se jen aktivní téma), nastaví
data-theme="{slug}" na dokumentu a volitelně trvale uloží do localStorage. Zde je ukázán Svelte; porty pro React, Vue, Angular, HTML, Nunjucks a Blazor odpovídají smlouvu po smlouvě:
<script>
import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>
<ThemePicker
label="Theme"
themesUrl="/assets/themes/"
themes={["light", "dark", "nord", "wireframe"]}
storageKey="my-app-theme"
/>
To je celá integrace. Chování klávesnice sleduje vzor listboxu WAI-ARIA APG; samotný ovládací prvek je bezhlavý (třídní háček
.theme-picker), takže převezme jakékoli aktivní téma.
Ověřeno 2026-08-29: přesně tato ukázka byla zkompilována proti publikovanému balíčku 0.1.1 přes
svelte/server.
Krok 4 — Reagujte na téma ve vlastním CSS
Protože pomocník nastavuje data-theme na kořen dokumentu, vaše vlastní styly se podle toho mohou větvit:
[data-theme="dark"] .site-logo { filter: invert(1); }
Poznámky k vykreslování na serveru
Pomocník provádí všechny zápisy do DOM v životním cyklu mount/effect frameworku, takže je z konstrukce bezpečný pro SSR. Aby nedošlo k probliknutí při prvním vykreslení, vykreslete na serveru <link> a
data-theme počátečního tématu (například z cookie) — repozitář pomocníka Svelte dodává spustitelný příklad cookie pro SvelteKit a ostatní katalogy dokumentují stejný vzor pro své stacky.
Další kroky
- Pomocníci pro předvolby — stejný vzor pro jazyk, velikost textu, sdílení a zadávání data/času.
- Přispějte tématem — každé je jeden samostatný stylopis cílící na třídní háčky; viz přispívání.
Otázky cestou? Stránka nápovědy je plná odpovědí — a pokud by nějaký krok mohl být jasnější, dejte nám vědět a návod rádi vylepšíme.