Svelte oktatóanyag

A Lily Svelte-könyvtára a kanonikus megvalósítás: Svelte 5 runák, típusos propok, a maradék propok szórása és kétirányú kötés ezzel: bind:value.

Mit fogsz építeni

Egy kis kapcsolatfelvételi űrlap — címkézett mező, küldés gomb, kétirányú kötés, valódi billentyűzet- és képernyőolvasó-viselkedés — először csupaszon, aztán stílusosan, nagyjából 10 perc alatt.

Mielőtt elkezdenéd

Szükséged van gitre, Node 22-re vagy újabbra és pnpm 10-re vagy újabbra. Bármelyik Svelte 5 projekt megfelel — egy vadonatúj npx sv create alkalmazás is elég.

1. lépés — Szerezd meg a kódot

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

A komponensek itt vannak: src/lib/components/{Name}/, komponensenként egy könyvtár a .svelte fájllal, a tesztjeivel, a story-jaival és a dokumentációjával egymás mellett. Másold a szükséges könyvtárakat az alkalmazásodba, vagy függj a tárolótól, és importálj közvetlenül.

2. lépés — Az első komponensed

<script>
  import Button from "#lib/components/Button/Button.svelte";

  function save() { console.log("saved"); }
</script>

<Button onclick={save}>Save</Button>

Ezt rendereli: <button class="button" type="button">. A propok típusosak: type, disabled, pressed (ezt rendereli: aria-pressed (ezt rendereli: label (egy aria-label a kapcsológombokhoz),

3. lépés — Állíts össze egy kis űrlapot

<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 a látható label a saját propjaként beágyazott címkekomponens helyett — add át egyszer, a Fieldés TextInputa label biztosítja a hozzáférhető nevet. TextInput's value felülíráshoz), és minden további attribútum a gyökérre szóródik. $bindable egy bind:value rune prop, így a

Ellenőrizve 2026-08-29: azonnal kétirányú kötést ad. svelte/server pontosan ez a kódrészlet le lett fordítva ezzel: <label for> és ellenőrizve lett egyetlen, helyesen kapcsolt címkére Label belül a Field— egy korábbi vázlat külön két címkét renderelt (az egyik üres), mert a Field már magától rendereli a sajátját a label ágyazott bele, ami ezt renderelte: Az összeállított kapcsolatfelvételi űrlap útvonala ugyanez a minta, valódi e2e- és axe-tesztekkel kipróbálva.

Ellenőrizd a munkádat: indítsd el az alkalmazást, és az űrlap csupasznak látszik — pontosan úgy, ahogy szántuk: a stílus még hátravan. Nyomd meg a Tabbillentyűt: a fókusz végigmegy minden vezérlőn, a címkét bemondja, és a küldés működik. A viselkedés kész; a megjelenés a tiéd, és a következő lépés.

4. lépés — Stílus hozzá

Minden fent tiszta szerkezetként renderelődik, készen a stílusaidra. Stílusozd az osztálykampókat — .button, .text-input, .label, .field — a globális stíluslapodban, vagy hivatkozz egy kész témára itt: app.html:

<link rel="stylesheet" href="/themes/dark.css" />

A példányonkénti finomhangolások a class propon keresztül mennek, amely hozzáfűződik az alapkampóhoz: <Button class="wide"> ezt rendereli: class="button wide".

5. lépés — Nézd meg, ahogy az egész működik

A SvelteKit példaalkalmazás ugyanez a katalógus teljesen stílusosan, élő demókkal, Playwright e2e tesztekkel és axe-core akadálymentességi alapvonallal:

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-svelte-sveltekit-examples
pnpm install && pnpm run dev

További lépések

Kérdésed akad útközben? A súgóoldal tele van válaszokkal — és ha egy lépés érthetőbb lehetne, szólj nekünk és szívesen javítjuk az oktatóanyagot.