Tema
Lily-komponenter bærer stabile klassekroker og null CSS — så et tema er bare et stilark. Denne veiledningen går fra «lenk til én fil» til «la brukeren bytte tema ved kjøretid, lagret».
Hva du skal bygge
En app der hele utseendet kan endres av brukeren — fra ett lenket stilark til en vedvarende temabytter ved kjøretid — på omtrent 15 minutter.
Før du begynner
Fullfør rammeverksveiledningen først for stacken din, slik at du har et lite Lily-skjema å gi tema. Alt her fungerer i alle syv rammeverk; kodeeksemplene viser Svelte og ren HTML.
Steg 1 — Lenk til et ferdig tema
themes/ katalogen leveres med 45 frittstående stilark. Kopier dem inn i appens statiske ressurser og lenk til ett:
<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />
Høydepunkter i settet:
-
Offentlig sektor — NHS England / Scotland / Wales, hver i pasientrettede og utøverrettede varianter; GOV.UK (
united-kingdom-government-digital-service); USWDS (united-states-web-design-system). - Leverandørinspirert —
adobe-spectrum,mozilla-protocol. -
Generelt formål —
light,dark,nord,dracula,wireframe,corporate,synthwave, og mange flere.
Sjekk arbeidet ditt: last siden på nytt. Den samme markupen du bygde i rammeverksveiledningen er nå fullt stilet — knapper, inndatafelt, etiketter, fokusringer. Én linje HTML gjorde det — hver komponent forble akkurat som den var.
Steg 2 — Overstyr hva som helst
Temavelgere er pakket inn i :where(...)som har null spesifisitet — så enhver regel du skriver vinner, enkelt og greit:
/* After the theme link: your brand button, everything else themed */
.button {
background: #7c3aed;
border-radius: 9999px;
}
Steg 3 — Bytte ved kjøretid med theme-picker
theme-picker hjelperen er en hodeløs ikonknapp + listeboks som eier hele temaets livssyklus: den laster det valgte stilarket ved å bytte ett administrert <link>
(bare det aktive temaet hentes noensinne), setter
data-theme="{slug}" på dokumentet, og lagrer valgfritt i localStorage. Svelte vises her; portene for React, Vue, Angular, HTML, Nunjucks og Blazor samsvarer kontrakt for kontrakt:
<script>
import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>
<ThemePicker
label="Theme"
themesUrl="/assets/themes/"
themes={["light", "dark", "nord", "wireframe"]}
storageKey="my-app-theme"
/>
Det er hele integrasjonen. Tastaturoppførselen følger WAI-ARIA APG-listeboksmønsteret; selve kontrollen er hodeløs (klassekrok
.theme-picker), så den tar opp hvilket tema som enn er aktivt.
Verifisert 2026-08-29: akkurat denne snutten ble kompilert mot den publiserte 0.1.1 pakken via
svelte/server.
Steg 4 — Reager på temaet i din egen CSS
Fordi hjelperen setter data-theme på dokumentroten, kan dine egne stiler forgrene seg på det:
[data-theme="dark"] .site-logo { filter: invert(1); }
Merknader om server-gjengivelse
Hjelperen utfører all DOM-skriving inni rammeverkets mount/effect-livssyklus, så den er SSR-sikker fra grunnen av. For å unngå flimmer ved første tegning gjengir du det opprinnelige temaets <link> og
data-theme på serveren (for eksempel fra en informasjonskapsel) — Svelte-hjelperepoet leverer et kjørbart SvelteKit-informasjonskapseleksempel, og de andre katalogene dokumenterer samme mønster for sine stacker.
Neste steg
- Preferansehjelpere — samme mønster for språk, tekststørrelse, deling og dato-/tidsinntasting.
- Bidra med et tema — hvert er ett frittstående stilark som retter seg mot klassekrokene; se bidrag.
Spørsmål underveis? hjelpesiden er full av svar — og hvis et steg kan bli tydeligere, fortell oss så forbedrer vi gjerne veiledningen.