Themâu

Mae gan gydrannau Lily fachau dosbarth sefydlog a sero CSS — felly taflen arddull yn unig yw thema. Mae'r tiwtorial hwn yn mynd o "gysylltu un ffeil" i "adael i'r defnyddiwr newid thema yn ystod rhedeg, wedi'i barhau".

Beth fyddwch chi'n ei adeiladu

Ap y gall y defnyddiwr newid ei olwg gyfan — gan ddechrau gydag un daflen arddull gysylltiedig, gan orffen â newidiwr thema parhaus yn ystod rhedeg — mewn tua 15 munud.

Cyn i chi ddechrau

Gorffennwch yn gyntaf y tiwtorial fframwaith ar gyfer eich pentwr yn gyntaf, fel bod gennych ffurflen Lily fach i'w themeiddio. Mae popeth yma'n gweithio ym mhob un o'r saith fframwaith; mae'r samplau cod yn dangos Svelte a HTML syml.

Cam 1 — Cysylltu thema barod

themes/ Mae'r cyfeiriadur yn cynnwys 45 taflen arddull annibynnol. Copïwch nhw i asedau statig eich ap a chysylltwch un:

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

Uchafbwyntiau'r set:

  • Y sector cyhoeddus — NHS England / Scotland / Wales, pob un mewn amrywiadau sy'n wynebu cleifion ac ymarferwyr; GOV.UK (united-kingdom-government-digital-service); USWDS (united-states-web-design-system).
  • Wedi'u hysbrydoli gan werthwyr — adobe-spectrum, mozilla-protocol.
  • Pwrpas cyffredinol — light, dark, nord, dracula, wireframe, corporate, synthwave, a llawer mwy.

Gwiriwch eich gwaith: ail-lwythwch y dudalen. Mae'r un marcio ag a adeiladoch yn y tiwtorial fframwaith bellach wedi'i steilio'n llawn — botymau, mewnbynnau, labeli, cylchoedd ffocws. Gwnaeth un llinell o HTML hynny — arhosodd pob cydran yn union fel yr oedd.

Cam 2 — Diystyru unrhyw beth

Mae dewiswyr y thema wedi'u lapio yn :where(...)sydd â phenodolrwydd sero — felly mae unrhyw reol a ysgrifennwch yn ennill, yn syml:

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

Cam 3 — Newid yn ystod rhedeg gyda theme-picker

theme-picker mae'r cynorthwyydd yn fotwm eicon di-ben + blwch rhestr sy'n berchen ar gylch bywyd cyfan y thema: mae'n llwytho'r daflen arddull a ddewiswyd drwy gyfnewid un <link> a reolir (dim ond y thema weithredol a nôl), yn gosod data-theme="{slug}" ar y ddogfen, ac yn parhau'n ddewisol i localStorage. Dangosir Svelte yma; mae porthladdoedd React, Vue, Angular, HTML, Nunjucks a Blazor yn cyfateb contract wrth gontract:

<script>
  import ThemePicker from "@lilydesignsystem/svelte-theme-picker";
</script>

<ThemePicker
  label="Theme"
  themesUrl="/assets/themes/"
  themes={["light", "dark", "nord", "wireframe"]}
  storageKey="my-app-theme"
/>

Dyna'r integreiddio cyfan. Mae ymddygiad y bysellfwrdd yn dilyn patrwm blwch rhestr WAI-ARIA APG; mae'r rheolydd ei hun yn ddi-ben (bachyn dosbarth .theme-picker), felly mae'n codi pa bynnag thema sy'n weithredol.

Gwiriwyd 2026-08-29: llunniwyd yr union ddarn hwn yn erbyn y pecyn 0.1.1 cyhoeddedig drwy svelte/server.

Cam 4 — Ymateb i'r thema yn eich CSS eich hun

Gan fod y cynorthwyydd yn gosod data-theme ar wraidd y ddogfen, gall eich arddulliau eich hun ganghennu arno:

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

Nodiadau ar gyfer rendro ar y gweinydd

Mae'r cynorthwyydd yn gwneud pob ysgrifennu DOM y tu mewn i gylch bywyd mount/effect y fframwaith, felly mae'n ddiogel ar gyfer SSR yn ôl cynllun. I osgoi fflach wrth y paentiad cyntaf, rendrwch <link> a data-theme y thema gychwynnol ar y gweinydd (er enghraifft o gwci) — mae cadwrfa'r cynorthwyydd Svelte yn cludo enghraifft cwci SvelteKit y gellir ei rhedeg, ac mae'r catalogau eraill yn cofnodi'r un patrwm ar gyfer eu pentyrrau.

Y camau nesaf

  • Cynorthwywyr dewisiadau — yr un patrwm ar gyfer iaith, maint testun, rhannu a mewnbynnu dyddiad/amser.
  • Cyfrannwch thema — mae pob un yn un daflen arddull annibynnol sy'n targedu'r bachau dosbarth; gweler cyfrannu.

Cwestiynau ar y ffordd? Mae'r dudalen gymorth yn llawn atebion — ac os gellid gwneud cam yn gliriach, dywedwch wrthym a byddwn yn falch o wella'r tiwtorial.