Témy

Komponenty Lily majú stabilné triedne háčiky a nulové CSS — takže téma je len štýlová šablóna. Tento návod vedie od „pripojte jeden súbor“ k „nechajte používateľa prepínať tému za behu, s trvalým uložením“.

Čo vytvoríte

Aplikácia, ktorej celý vzhľad môže používateľ meniť — od jednej pripojenej štýlovej šablóny až po trvalo uložený prepínač tém za behu — približne za 15 minút.

Skôr než začnete

Najprv dokončite návod k frameworku pre svoj stack najprv, aby ste mali malý formulár Lily, na ktorý tému aplikujete. Všetko tu funguje vo všetkých siedmich frameworkoch; ukážky kódu ukazujú Svelte a čisté HTML.

Krok 1 — Pripojte hotovú tému

themes/ adresár obsahuje 45 samostatných štýlových šablón. Skopírujte ich do statických zdrojov svojej aplikácie a pripojte jednu:

<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />

Z toho, čo sada ponúka:

  • Verejný sektor — NHS England / Scotland / Wales, každé vo variantoch pre pacientov aj pre odborníkov; GOV.UK (united-kingdom-government-digital-service); USWDS (united-states-web-design-system).
  • Inšpirované dodávateľmi — adobe-spectrum, mozilla-protocol.
  • Univerzálne — light, dark, nord, dracula, wireframe, corporate, synthwavea mnoho ďalších.

Skontrolujte svoju prácu: znova načítajte stránku. Rovnaké značky, ktoré ste postavili v návode k frameworku, sú teraz plne ostylované — tlačidlá, vstupy, popisy, fokusové obrysy. Urobil to jeden riadok HTML — každý komponent zostal presne taký, aký bol.

Krok 2 — Prepíšte čokoľvek

Selektory tém sú obalené v :where(...)ktorá má nulovú špecifickosť — takže akékoľvek pravidlo, ktoré napíšete, vyhrá, jednoducho:

/* After the theme link: your brand button, everything else themed */
.button {
  background: #7c3aed;
  border-radius: 9999px;
}

Krok 3 — Prepínanie za behu pomocou theme-picker

theme-picker pomocník je bezhlavé tlačidlo s ikonou + listbox, ktorý vlastní celý životný cyklus témy: načíta vybranú štýlovú šablónu výmenou jedného spravovaného <link> (sťahuje sa len aktívna téma), nastaví data-theme="{slug}" na dokumente a voliteľne trvalo uloží do localStorage. Tu je ukázaný Svelte; porty pre React, Vue, Angular, HTML, Nunjucks a Blazor zodpovedajú zmluvu po zmluve:

<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á integrácia. Správanie klávesnice sleduje vzor listboxu WAI-ARIA APG; samotný ovládací prvok je bezhlavý (triedny háčik .theme-picker), takže prevezme akúkoľvek aktívnu tému.

Overené 2026-08-29: presne táto ukážka bola skompilovaná proti publikovanému balíku 0.1.1 cez svelte/server.

Krok 4 — Reagujte na tému vo vlastnom CSS

Pretože pomocník nastavuje data-theme na koreň dokumentu, vaše vlastné štýly sa podľa toho môžu vetviť:

[data-theme="dark"] .site-logo { filter: invert(1); }

Poznámky k vykresľovaniu na serveri

Pomocník vykonáva všetky zápisy do DOM v životnom cykle mount/effect frameworku, takže je z konštrukcie bezpečný pre SSR. Aby nedošlo k zablikaniu pri prvom vykreslení, vykreslite na serveri <link> a data-theme počiatočnej témy (napríklad z cookie) — repozitár pomocníka Svelte dodáva spustiteľný príklad cookie pre SvelteKit a ostatné katalógy dokumentujú rovnaký vzor pre svoje stacky.

Ďalšie kroky

  • Pomocníci pre predvoľby — rovnaký vzor pre jazyk, veľkosť textu, zdieľanie a zadávanie dátumu/času.
  • Prispejte témou — každá je jedna samostatná štýlová šablóna cielená na triedne háčiky; pozri prispievanie.

Otázky po ceste? Stránka pomocníka je plná odpovedí — a ak by niektorý krok mohol byť jasnejší, dajte nám vedieť a návod radi vylepšíme.