Svelte-kennsluefni
Svelte-safn Lily er kanónísk útfærsla: Svelte 5 runes, tegundum bundnir props, dreifing rest-prop og tvíátta binding með
bind:value.
Það sem þú munt byggja
Lítið tengiliðaeyðublað — innsláttarreitur með merkimiða, sendihnappur, tvíátta binding, raunveruleg lyklaborðs- og skjálesarahegðun — fyrst ber, svo stílað, á um 10 mínútum.
Áður en þú byrjar
Þú þarft git, Node 22 eða nýrra og pnpm 10 eða nýrra. Hvaða Svelte 5 verkefni sem er virkar — nýtt npx sv create forrit dugar.
Skref 1 — Náðu í kóðann
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
Íhlutirnir eru í src/lib/components/{Name}/, ein mappa fyrir hvern íhlut með .svelte skránni, prófum hennar, stories og skjölum hlið við hlið. Afritaðu möppurnar sem þú þarft í forritið þitt, eða hafðu geymsluna sem háð og fluttu inn beint.
Skref 2 — Fyrsti íhluturinn þinn
<script>
import Button from "#lib/components/Button/Button.svelte";
function save() { console.log("saved"); }
</script>
<Button onclick={save}>Save</Button>
Birtir <button class="button" type="button">. Propsin eru tegundabundin: type, disabled,
pressed (birtir aria-pressed fyrir rofahnappa), label ( aria-label yfirskrift) og hvaða aukaeigind sem er dreifist á rótina.
Skref 3 — Settu saman lítið eyðublað
<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 tekur sýnilega label sem sinn eigin prop frekar en innfelldan merkimiðaíhlut — gefðu hann einu sinni, á Fieldog TextInputá label sér um aðgengilega heitið. TextInput's value er
$bindable rune prop, svo bind:value gefur þér tvíátta bindingu strax.
Staðfest 2026-08-29: þetta nákvæma snifs var þýtt í gegnum svelte/server og athugað með tilliti til eins, rétt tengds <label for> — fyrri drög innfeldu sérstakan Label inni í Field, sem birti
tvo merkimiða (annan tóman) því Field birtir þegar sinn eigin út frá label prop. Sá
samsetta tengiliðaeyðublaðsleiðin
er sama mynstur, prófað með raunverulegum e2e- og axe-prófum.
Athugaðu verkið: keyrðu forritið og eyðublaðið lítur einfalt út — nákvæmlega eins og ætlað er: stíllinn er enn framundan. Ýttu á Tab: fókusinn færist í gegnum hverja stýringu, merkimiðinn er lesinn upp og sending virkar. Hegðunin er tilbúin; útlitið er þitt og er næst.
Skref 4 — Stílaðu það
Allt hér að ofan birtist sem hrein uppbygging, tilbúin fyrir stílana þína. Stílaðu klasakrókana —
.button, .text-input, .label,
.field — í altæka stílblaðinu þínu, eða tengdu tilbúið þema í app.html:
<link rel="stylesheet" href="/themes/dark.css" />
Lagfæringar fyrir hverja tilvik fara um class prop, sem bætist við grunnkrókinn: <Button class="wide"> birtir
class="button wide".
Skref 5 — Sjáðu allt virka
SvelteKit dæmaforritið er sama safnið fullstílað, með lifandi sýnidæmum, Playwright e2e-prófum og axe-core aðgengisgrunnlínu:
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æstu skref
- Þemu — skipti á keyrslutíma með Svelte theme-picker hjálpartækinu.
- Stillingahjálpartæki — tungumál og textastærð.
- Íhlutasafn — eiginleikar, ARIA og lyklaborð fyrir hvern íhlut.
Spurningar á leiðinni? hjálparsíðan er full af svörum — og ef skref gæti verið skýrara, segðu okkur og við bætum kennsluefnið með ánægju.