Svelte eğitimi

Lily'nin Svelte kitaplığı asıl uygulamadır: Svelte 5 rune'ları, tipli prop'lar, kalan prop yayılımı ve şununla çift yönlü bağlama: bind:value.

Ne oluşturacaksınız

Küçük bir iletişim formu — etiketli girdi, gönder düğmesi, çift yönlü bağlama, gerçek klavye ve ekran okuyucu davranışı — önce çıplak, sonra biçimlendirilmiş olarak, yaklaşık 10 dakikada.

Başlamadan önce

git, Node 22 veya üstü ve pnpm 10 veya üstü gerekir. Herhangi bir Svelte 5 projesi olur — yepyeni bir npx sv create uygulama yeterlidir.

Adım 1 — Kodu edinin

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

Bileşenler şurada bulunur: src/lib/components/{Name}/, bileşen başına bir dizin; içinde .svelte dosyası, testleri, story'leri ve belgeleri yan yana durur. İhtiyacınız olan dizinleri uygulamanıza kopyalayın ya da depoya bağımlı olup doğrudan içe aktarın.

Adım 2 — İlk bileşeniniz

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

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

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

Şunu işler: <button class="button" type="button">. Prop'lar tiplidir: type, disabled, pressed (şunu işler: aria-pressed (şunu işler: label ( aria-label geçiş düğmeleri için),

Adım 3 — Küçük bir form oluşturun

<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 görünür label kendi prop'u olarak alır, iç içe bir etiket bileşeni olarak değil — bir kez geçirin, Fieldve TextInputile eşleşen label erişilebilir adı sağlar. TextInput's value geçersiz kılmak için) ve fazladan her öznitelik köke yayılır. $bindable bir bind:value rune prop'udur, dolayısıyla

2026-08-29'da doğrulandı: size hemen çift yönlü bağlama verir. svelte/server tam bu kod parçası şunun içinden derlendi: <label for> ve tek, doğru bağlanmış etiket için denetlendi Label içinde Field— önceki bir taslak ayrı bir iki etiket (biri boş) işlenmesine yol açtı, çünkü Field kendi etiketini zaten label iç içe yerleştirmişti; bu da şunun işlenmesine yol açtı: Bileşik iletişim formu rotası aynı kalıptır ve gerçek e2e ve axe testleriyle sınanır.

Çalışmanızı kontrol edin: uygulamayı çalıştırın; form sade görünür — tam olarak amaçlandığı gibi: biçimlendirme henüz ileride. Şuna basın: Tab: odak her denetimde ilerler, etiket duyurulur ve gönderme çalışır. Davranış tamam; görünüm sizin ve sıradaki adım.

Adım 4 — Biçimlendirin

Yukarıdaki her şey saf yapı olarak işlenir, stillerinize hazırdır. Sınıf kancalarını biçimlendirin — .button, .text-input, .label, .field — genel stil sayfanızda ya da hazır bir temayı şurada bağlayın: app.html:

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

Örnek başına ince ayarlar şuradan geçer: class prop'u, temel kancaya ekler: <Button class="wide"> şunu işler: class="button wide".

Adım 5 — Hepsinin çalıştığını görün

SvelteKit örnek uygulaması aynı kataloğun tam biçimlendirilmiş hâlidir; canlı demolar, Playwright e2e testleri ve axe-core erişilebilirlik taban çizgisi içerir:

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

Sonraki adımlar

Yol boyunca sorunuz mu var? Yardım sayfası yanıtlarla dolu — ve bir adım daha açık olabilirse, bize söyleyin ve eğitimi memnuniyetle iyileştirelim.