Teemat
Lily-komponenteilla on vakaat luokkakoukut ja nolla CSS:ää — joten teema on vain tyylitiedosto. Tämä opas etenee kohdasta "linkitä yksi tiedosto" kohtaan "anna käyttäjän vaihtaa teemaa ajon aikana, pysyvästi tallennettuna".
Mitä rakennat
Sovellus, jonka koko ulkoasun käyttäjä voi muuttaa — alkaen yhdestä linkitetystä tyylitiedostosta ja päättyen pysyvään ajonaikaiseen teemanvaihtajaan — noin 15 minuutissa.
Ennen kuin aloitat
Suorita ensin kehysopas ensin omalle pinollesi, jotta sinulla on pieni Lily-lomake teemoitettavaksi. Kaikki täällä toimii kaikissa seitsemässä kehyksessä; koodiesimerkit näyttävät Sveltea ja pelkkää HTML:ää.
Vaihe 1 — Linkitä valmis teema
themes/ hakemisto sisältää 45 itsenäistä tyylitiedostoa. Kopioi ne sovelluksesi staattisiin resursseihin ja linkitä yksi:
<link rel="stylesheet" href="/assets/themes/united-kingdom-national-health-service-england-for-patients.css" />
Joukon kohokohtia:
-
Julkinen sektori — NHS England / Scotland / Wales, kukin potilas- ja ammattilaissuuntautuneina muunnelmina; GOV.UK (
united-kingdom-government-digital-service); USWDS (united-states-web-design-system). - Toimittajien inspiroimat —
adobe-spectrum,mozilla-protocol. -
Yleiskäyttöiset —
light,dark,nord,dracula,wireframe,corporate,synthwaveja monia muita.
Tarkista työsi: lataa sivu uudelleen. Sama merkintä, jonka rakensit kehysoppaassa, on nyt täysin tyylitelty — painikkeet, kentät, nimiöt, kohdistusrenkaat. Yksi HTML-rivi teki sen — jokainen komponentti pysyi täsmälleen entisellään.
Vaihe 2 — Ohita mikä tahansa
Teemavalitsimet on kääritty :where(...)jolla on nolla spesifisyyttä — joten mikä tahansa kirjoittamasi sääntö voittaa, yksinkertaisesti:
/* After the theme link: your brand button, everything else themed */
.button {
background: #7c3aed;
border-radius: 9999px;
}
Vaihe 3 — Vaihto ajon aikana theme-pickerillä
theme-picker apuväline on headless-kuvakepainike + listbox, joka omistaa koko teeman elinkaaren: se lataa valitun tyylitiedoston vaihtamalla yhden hallitun <link>
-elementin (vain aktiivinen teema haetaan), asettaa
data-theme="{slug}" dokumenttiin ja tallentaa halutessa pysyvästi kohteeseen localStorage. Tässä näytetään Svelte; React-, Vue-, Angular-, HTML-, Nunjucks- ja Blazor-portit vastaavat sopimus sopimukselta:
<script>
import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>
<ThemePicker
label="Theme"
themesUrl="/assets/themes/"
themes={["light", "dark", "nord", "wireframe"]}
storageKey="my-app-theme"
/>
Siinä koko integraatio. Näppäimistökäyttäytyminen noudattaa WAI-ARIA APG -listbox-mallia; itse ohjain on headless (luokkakoukku
.theme-picker), joten se omaksuu minkä tahansa aktiivisen teeman.
Varmistettu 2026-08-29: tämä täsmällinen koodinpätkä käännettiin julkaistua 0.1.1 -pakettia vastaan komennolla
svelte/server.
Vaihe 4 — Reagoi teemaan omassa CSS:ssäsi
Koska apuväline asettaa data-theme dokumentin juureen, omat tyylisi voivat haarautua sen mukaan:
[data-theme="dark"] .site-logo { filter: invert(1); }
Huomioita palvelinrenderöintiin
Apuväline tekee kaikki DOM-kirjoitukset kehyksen mount-/effect-elinkaaressa, joten se on rakenteeltaan SSR-turvallinen. Välttääksesi välähdyksen ensimmäisessä maalauksessa renderöi alkuteeman <link> ja
data-theme palvelimella (esimerkiksi evästeestä) — Svelte-apuvälineen repossa on ajettava SvelteKit-evästeesimerkki, ja muut luettelot dokumentoivat saman mallin omille pinoilleen.
Seuraavat askeleet
- Asetusapuvälineet — sama malli kielelle, tekstikoolle, jaolle ja päivämäärän/ajan syötölle.
- Lahjoita teema — kukin on yksi itsenäinen tyylitiedosto, joka kohdistuu luokkakoukkuihin; katso osallistuminen.
Kysymyksiä matkan varrella? Ohjesivu on täynnä vastauksia — ja jos jokin vaihe voisi olla selkeämpi, kerro meille ja parannamme opasta mielellämme.