Svelte-Tutorial
D'Svelte-Bibliothéik vu Lily ass déi kanonesch Implementatioun: Svelte-5-Runen, typiséiert Props, Verspreeche vun de Rescht-Props an Zwee-Weeër-Bindung mat
bind:value.
Wat Dir bauen wäert
E klengt Kontaktformulaire — Feld mat Etikett, Schécken-Knäppchen, Zwee-Weeër-Bindung, richtegt Tastatur- an Écranliesser-Verhalen — fir d'éischt nackeg, duerno gestalt, an ongeféier 10 Minutten.
Ier Dir ufänkt
Dir braucht git, Node 22 oder méi nei a pnpm 10 oder méi nei. All Svelte-5-Projet funktionéiert — eng brandneu npx sv create -App reecht.
Schrëtt 1 — D'Code kréien
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-svelte-headless
pnpm install
pnpm test # vitest — thousands of component cases
pnpm run storybook # browse all 571 components
D'Komponente sinn am src/lib/components/{Name}/, ee Verzeechnes pro Komponent mat der .svelte -Datei, hiren Tester, hire Stories a hirer Dokumentatioun niewenee. Kopéiert d'Verzeechnesser, déi Dir braucht, an Är App, oder hänkt vum Repo of an importéiert direkt.
Schrëtt 2 — Är éischt Komponent
<script>
import Button from "#lib/components/Button/Button.svelte";
function save() { console.log("saved"); }
</script>
<Button onclick={save}>Save</Button>
Rendert <button class="button" type="button">. D'Props sinn typiséiert: type, disabled,
pressed (rendert aria-pressed (rendert label (en aria-label fir Toggle-Knäppercher),
Schrëtt 3 — E klengt Formulaire zesummestellen
<script>
import Form from "#lib/components/Form/Form.svelte";
import Field from "#lib/components/Field/Field.svelte";
import TextInput from "#lib/components/TextInput/TextInput.svelte";
import Button from "#lib/components/Button/Button.svelte";
let name = $state("");
</script>
<Form label="Contact form" onsubmit={handleSubmit}>
<Field label="Full name" required>
<TextInput id="name" label="Full name" bind:value={name} required />
</Field>
<Button type="submit">Save</Button>
</Form>
Field hëlt dat siichtbart label als seng eege Prop amplaz vun enger verschachtelter Etikett-Komponent — gitt et eemol weider, bei Fieldan TextInputvun label liwwert den zougänglechen Numm. TextInput's value zum Iwwerschreiwen), an all zousätzlechen Attribut gëtt op d'Wuerzel verspreet.
$bindable ass eng bind:value -Rune-Prop, sou datt
Gepréift den 2026-08-29: Iech direkt Zwee-Weeër-Bindung gëtt. svelte/server dësen exakte Snippet gouf iwwer <label for> kompiléiert a gepréift op ee eenzegt, korrekt verlinkt Etikett Label bannen Field— en ale Brouillon huet e separaten
zwee Etiketten (eng eidel) gerendert huet, well Field schonn säin eegenen aus dem label dran verschachtelt, wat gerendert huet
Déi zesummegesat Kontaktformulaire-Route
ass datselwecht Muster, getest mat richtegen e2e- an axe-Tester.
Kontrolléiert Är Aarbecht: start d'App an d'Formulaire gesäit nackeg aus — genee wéi geduecht: d'Gestaltung kënnt nach. Dréckt Tab: de Fokus geet duerch all Kontroll, d'Etikett gëtt ugekënnegt an d'Schécken funktionéiert. D'Verhalen ass fäerdeg; d'Ausgesi ass Är a kënnt als Nächst.
Schrëtt 4 — Gestalt et
Alles hei uewen gëtt als pur Struktur gerendert, prett fir Är Stiler. Gestalt d'Klassen-Hooks —
.button, .text-input, .label,
.field — an Ärem globale Stylesheet, oder verlinkt e fäerdegt Thema am app.html:
<link rel="stylesheet" href="/themes/dark.css" />
Upassunge pro Instanz ginn iwwer d' class -Prop, déi un de Basis-Hook ugehaang gëtt: <Button class="wide"> rendert
class="button wide".
Schrëtt 5 — Alles am Aktioun gesinn
SvelteKit Beispill-App ass datselwecht Katalog voll gestalt, mat Live-Demoen, Playwright-e2e-Tester an enger axe-core-Zougänglechkeetsbaseline:
git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-svelte-sveltekit-examples
pnpm install && pnpm run dev
Nächst Schrëtt
- Themen — Wiessel zur Laafzäit mam Svelte-Helper theme-picker.
- Astellungs-Helperen — Sprooch a Textgréisst.
- Komponentekatalog — Eegeschaften, ARIA an Tastatur pro Komponent.
Froen ënnerwee? D'Hëllefsäit ass voller Äntwerten — a wann e Schrëtt méi kloer kéint sinn, soot et eis a mir verbesseren den Tutorial gär.