Headless-Komponentensystem · Neue Ressource

Melt UI-Designsystem.

Die Store- und Action-Builder von Melt UI ergänzen das Svelte-Markup, für das du verantwortlich bist, um barrierefreies Verhalten. Diese Anleitung verwendet @melt-ui/svelte 0.86.6, um Radio-, Slider- und Switch-Builder über ihre Attribute, Actions und beschreibbaren Stores zu verbinden; sie sind nicht mit den neueren Runes API gleichzusetzen.

OpenDesign-Leitfaden9 Kapitel30 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

Interface-Vorschau des Melt UI-Designsystems

Ändere die Ausrichtung, bewege den Buchstabenabstandsregler und schalte das Raster um. Das ursprüngliche Poster wird anhand der Builder-Stores aktualisiert.

Studie zur typografischen KompositionVollständiges Beispiel öffnen
Builder für @melt-ui/svelte 0.86.6 mit Svelte 5.57.1; explizite Attribute und Actions, kein Melt-Präprozessor erforderlich. · Implementierungsreferenz
02

Designreferenz für das Melt UI-Designsystem

Verifizierte @melt-ui/svelte-Builder für Stores und Aktionen in Version 0.86.6 unter Svelte 5.57.1. Dies ist die dokumentierte Builder-API, nicht die separate Runen-API der nächsten Generation. Melt ist headless; alle unten aufgeführten visuellen Werte für --study-* sind originale Anwendungskonfigurationen, die vollständig bereitgestellt werden.

Originale semantische visuelle Konfiguration

Quelle
Name / RegelWert / KonfigurationVerwendung
--study-canvas#f3f0e9 Äußere Seite.
--study-surface#fffdf8 Steuerungsbereich.
--study-ink#32352e Haupttext.
--study-muted#77796a Unterstützender Text.
--study-line#dbdece Begrenzungen von Regler und Bereich.
--study-action#486348 Ausgewähltes Optionsfeld und aktiver Bereich.
--study-on-action#fffText auf der Aktion.
--study-focus#8aa77c Tastatur-Fokusring.
--study-poster#e0e8bb Originales Posterpapier.
--study-accent#d68f57 Dekorative Orbitform.

Originale Abstands- und Schriftgrößenskalen

Quelle
Name / RegelWert / KonfigurationVerwendung
--study-space-14pxBenannte Anwendungsabstände; kein Melt-Standardwert.
--study-space-28pxBenannte Anwendungsabstände; kein Melt-Standardwert.
--study-space-312pxBenannte Anwendungsabstände; kein Melt-Standardwert.
--study-space-416pxBenannte Anwendungsabstände; kein Melt-Standardwert.
--study-space-624pxBenannte Anwendungsabstände; kein Melt-Standardwert.
--study-space-832pxBenannte Anwendungsabstände; kein Melt-Standardwert.
Text familysystem-ui, sans-serifKeine Abhängigkeit von externen Schriftarten.
Page title34px / 1.15; 29px narrowOriginale Hierarchie der Überschriften.
Poster titleclamp(28px,5.5vw,64px); 28px below 360pxOriginale responsive Anzeigeskala.
Poster tracking0–8px, step 1; default 2pxTatsächlicher, über den Regler gesteuerter Zeichenabstand.
Grid spacing24px × 24pxDekorative Hilfslinien, die über den nativen Schalter ein- und ausgeblendet werden.
Focus ring3px solid #8aa77c; 4px offsetExplizite Behandlung von :focus-visible.

Verträge der nativen Builder

Quelle
Name / RegelWert / KonfigurationVerwendung
createRadioGroup.defaultValueleftEine ausgewählte Ausrichtung.
Radio orientation / loophorizontal / trueDie Pfeiltastennavigation folgt einer horizontalen Gruppe und wird am Ende fortgesetzt.
createSlider.defaultValue[2]Der Store enthält auch bei einem Thumb ein Array.
Slider min / max / step0 / 8 / 1Begrenzte Ganzzahlwerte.
Slider elements.thumbsArray-producing builder storeVersion 0.86.6 gibt Thumbs zurück, kein einzelnes Thumb-Element.
createSwitch.defaultCheckedtrueHilfslinien sind anfangs sichtbar.
Builder attributes + action{...$builder} use:builderDie explizite Syntax funktioniert ohne den optionalen Melt-Präprozessor.
Thumb attributes + action{...thumb} use:thumb.actionJeder generierte Thumb erhält seine eigenen Attribute und seine eigene Aktion.
03

Melt UI Designsystem: Vollständiger Leitfaden

Ein praktischer Leitfaden zur Auswahl, Anwendung und Überprüfung dieses Systems für ein echtes Interface.

DESIGN-melt-ui.md

Umfassende Anleitung, Einstieg in die Implementierung und Links zu den Quellen.

Leitfaden herunterladen

Melt UI Designsystem: Melt fügt Verhalten zu Markup hinzu, das Ihnen gehört

Melt ergänzt dein eigenes Markup um Verhalten

Dieses Beispiel verwendet die Store-/Aktions-API aus @melt-ui/svelte 0.86.6. createRadioGroup, createSlider und createSwitch geben Element-Builder und Zustands-Stores zurück. Gewöhnliche Buttons, Spans und Divs erhalten die Attribute und Aktionen, die sie mit dem Verhalten nativer Steuerelemente verbinden.

Aus diesem OpenDesign-Leitfaden

Das Paket stellt weder das grüne Papier noch die Poster-Typografie oder die Geometrie des Bedienfelds bereit. Diese Entscheidungen sind im vollständigen Original-Stylesheet definiert. Die Dokumentation verweist außerdem auf eine separate, neuere Runen-API. Diese Seite nennt bewusst die verifizierte Builder-Version, statt inkompatible Beispiele beider Generationen zu vermischen.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Attribute verteilen und Aktionen gemeinsam installieren

Attribute und Actions gemeinsam weitergeben

Ein Element benötigt sowohl die Attribute seines Builders als auch dessen Aktion. Im Beispiel kommen Formen wie {...$alignRoot} use:alignRoot und {...$alignItem(value)} use:alignItem zum Einsatz. Die Attribute übermitteln Rollen, Zustand und Positionierung; die Aktion installiert das interaktive Verhalten und übernimmt die Bereinigung.

Die kürzere Syntax use:melt erfordert den optionalen Melt-Präprozessor. Ohne ihn gibt die Laufzeit einen spezifischen Fehler aus, statt den Builder unbemerkt anzuwenden. Der korrigierte Code verwendet durchgehend die explizite Syntax, sodass die folgende Vite-Konfiguration keine versteckte Präprozessor-Abhängigkeit verschweigt. Auch jeder Slider-Thumb gibt seine zurückgegebenen Attribute aus und ruft thumb.action auf.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Das visuelle Headless-System in der Anwendungs-CSS definieren

Das visuelle Headless-System im Anwendungs-CSS definieren

Die Rollen --study-* unterscheiden zwischen äußerer Fläche, Steuerungsfläche, Text, Trennlinie, Aktion, Fokus, Posterpapier und dekorativem Akzent. Die sechs benannten Abstandsgrößen reichen von vier bis zweiunddreißig Pixeln. Es sind eigens gewählte Werte, mit denen sich genau diese Komposition reproduzieren lässt – kein von Melt gepflegter Token-Katalog.

Ausgewählte Optionsfelder und der Schalter verwenden data-state=checked. Die zurückgegebenen Inline-Positionen des Sliders bestimmen, wo Thumb und ausgewählter Bereich erscheinen. Das Stylesheet ergänzt lediglich Geometrie und Farben. Würden diese nativen Positionen durch manuell berechnete Prozentwerte ersetzt, würde das Logik duplizieren und die Unterstützung von Ausrichtung oder Richtung gefährden.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Eine Ausrichtung mit nativer Gruppennavigation ausgewählt lassen

Mit der nativen Gruppennavigation eine Ausrichtung ausgewählt halten

createRadioGroup beginnt mit left, horizontaler Ausrichtung und aktivierter Schleife. Jedes Optionsfeld hat einen stabilen Wert: left, center oder right. Die Textausrichtung des Posters übernimmt den ausgewählten Wert direkt, sodass Tastaturnavigation und Auswahl per Mauszeiger dieselbe sichtbare Komposition beeinflussen.

Die Gruppe erhält die zugängliche Beschriftung „Textausrichtung“. Die drei Optionen sind native, Builder-gestützte Optionsfelder und keine gewöhnlichen Buttons mit manuell umgeschalteten Klassen. Ihr Auswahlzustand spiegelt sich sowohl in der Semantik als auch im data-state-Selektor wider, der die gefüllte Darstellung steuert.

  1. Wählen Sie „Zentriert“ und überprüfen Sie die Ausrichtung des Posters.
  2. Fokussieren Sie den Regler für den Zeichenabstand und drücken Sie Ende, um 8px zu erreichen.
  3. Schalten Sie das Layoutraster aus und speichern Sie die resultierende lokale Komposition.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Den Wert auch bei einem Thumb als Array behandeln

Den Wert auch bei einem Thumb als Array behandeln

Der Slider beginnt mit defaultValue:[2], nicht mit einem einzelnen Wert. Der installierte Builder in Version 0.86.6 stellt elements.thumbs bereit, einen Store, der ein Array erzeugt; die Vorlage rendert jeden zurückgegebenen Thumb. Das Poster liest $tracking[0] aus und wendet den Wert als Zeichenabstand in Pixeln an.

Die Grenzen liegen bei null und acht, mit einer Schrittweite von eins. Pos1 und Ende führen zu den Grenzwerten; die Pfeiltasten verschieben den Wert in den festgelegten Schritten. Für diese Komposition mit einem Thumb lesen Sie $tracking[0] aus. Behalten Sie beim Hinzufügen eines weiteren Thumbs das Array-Modell bei, statt einen zweiten, unabhängigen Einzelwert einzuführen.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Visuelle Hilfslinien von den Designwerten getrennt halten

Visuelle Orientierungshilfe und Designwerte getrennt halten

createSwitch beginnt im eingeschalteten Zustand; sein Zustand steuert eine guides-Klasse am Poster. Diese Klasse zeichnet zwei dezente, sich wiederholende Rasterverläufe mit einem Abstand von vierundzwanzig Pixeln. Beim Ausschalten werden die Verläufe entfernt, ohne Ausrichtung oder Zeichenabstand zu verändern.

Die sichtbare Beschriftung „Layoutraster anzeigen“ ist mit der stabilen ID des Schalters verknüpft. Die Bewegung des Schalterknopfs wird mit einem CSS-Übergang animiert; eine Einstellung für reduzierte Bewegung ist ebenfalls vorhanden. Die dekorative Orbit-Illustration ist mit aria-hidden verborgen und interaktivitätslos; sie konkurriert nicht mit der Semantik des tatsächlichen Steuerelements.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Schreibbare Stores koordinieren, ohne den Steuerungszustand zu duplizieren

Schreibbare Stores koordinieren, ohne den Steuerungszustand zu duplizieren

Ausrichtung, Zeichenabstand und Sichtbarkeit des Rasters bleiben schreibbare Stores der Builder. Das gerenderte Poster liest diese Stores direkt aus: text-align verwendet die Ausrichtung, letter-spacing den ersten Sliderwert und eine CSS-Klasse den Schaltzustand des Schalters. Ein separates Anwendungsmodell für dieselben drei Einstellungen würde unnötigen Synchronisierungsaufwand verursachen.

Der gespeicherte Schnappschuss wird aus einer Signatur dieser Werte abgeleitet. Jede Änderung hebt die Bestätigung auf, und beim Zurücksetzen werden left, [2] und true wieder in die Stores geschrieben. Das Array mit einem Element ist wichtig: Die Zuweisung des Skalars 2 würde nicht dem Wertevertrag des Schiebereglers entsprechen, obwohl nur ein Thumb sichtbar ist.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Jedem Builder seine Attribute, Aktion und Bezeichnung zuweisen

Jedem Builder seine Attribute, Aktion und Bezeichnung zuweisen

Die Optionsgruppe erhält die Beschriftung „Textausrichtung“, der Schieberegler-Thumb verweist auf den sichtbaren Text „Buchstabenabstand“ und der Schalter ist seiner sichtbaren Beschriftung zugeordnet. Diese Bezeichnungen gehören auf die tatsächlichen, vom Builder erzeugten Elemente, nicht auf umgebende dekorative Wrapper.

Die explizite Template-Syntax fügt Attribute und Aktionen gemeinsam ein. Bei Schieberegler-Thumbs enthält das zurückgegebene Element auch seine Aktion, daher bindet die Schleife die Thumb-Attribute ein und ruft thumb.action auf. Beim Gestalten der Schiene und des Bereichs muss die Positionierungsausgabe des Builders erhalten bleiben: Sie beschreibt den tatsächlichen numerischen Zustand und die Richtung, während das Stylesheet Farbe und Geometrie festlegt.

  • Prüfe die tatsächlich berechnete Ausgabe, nicht nur die numerische Beschriftung.
  • Lass die Beschriftungen auf den nativen Builder-Elementen.
  • Berücksichtige bei benutzerdefinierten visuellen Übergängen reduzierte Bewegung.

Unterstützende Spezifikation lesen

Melt UI Designsystem: Den verifizierten Builder API in einem normalen Svelte-Projekt verwenden

Den verifizierten Builder API in einem gewöhnlichen Svelte-Projekt verwenden

Die vollständige Komponente verwendet Svelte-Store-Abonnements mit $alignment, $tracking und $grid. Svelte 5 kann diese etablierte Komponentensyntax kompilieren; der Einstiegspunkt verwendet die aktuelle Mount-Funktion. Eine benutzerdefinierte Icon-Bibliothek oder ein Stylesheet-Paket ist nicht erforderlich, da die gesamte visuelle Ebene oben bereitgestellt wird.

Die folgende standardmäßige Vite-Svelte-Konfiguration fixiert @melt-ui/svelte 0.86.6 und Svelte 5.57.1. Der Melt-Präprozessor wird nicht installiert, da die Komponente bereits die explizite äquivalente Syntax verwendet. Bei der Migration zum neueren Runes-Paket sollte API bewusst umgeschrieben werden, statt nur die Abhängigkeitsversion zu ändern.

Unterstützende Spezifikation lesen

Melt UI Designsystem-Komponentenbeispiele

Vollständige Kombination aus Store- und Aktions-Buildern

createRadioGroup, createSlider und createSwitch fügen gewöhnlichem Markup native Semantik und Verhalten hinzu.

svelte
<script>
import {createRadioGroup,createSlider,createSwitch} from '@melt-ui/svelte';
const {elements:{root:alignRoot,item:alignItem},states:{value:alignment}}=createRadioGroup({defaultValue:'left',orientation:'horizontal',loop:true});
const {elements:{root:trackingRoot,range:trackingRange,thumbs},states:{value:tracking}}=createSlider({defaultValue:[2],min:0,max:8,step:1});
const {elements:{root:gridRoot},states:{checked:grid}}=createSwitch({defaultChecked:true});
let saved='';let previous='';
$: current=`${$alignment}|${$tracking[0]}|${$grid}`;
$: if(current!==previous){saved='';previous=current}
function save(){saved=`Saved locally: ${$alignment} aligned, ${$tracking[0]}px tracking, grid ${$grid?'on':'off'}.`}
function reset(){alignment.set('left');tracking.set([2]);grid.set(true);saved=''}
</script>
<main class="poster-shell"><header><p class="eyebrow">TYPE COMPOSITION · LIVE STUDY</p><h1>A small change. A different rhythm.</h1><p>Use native Melt UI builders to change the alignment, tracking and guide visibility of an original typographic poster.</p></header><div class="poster-layout"><section class="controls"><h2>Composition</h2><p class="control-label" id="alignment-label">Text alignment</p><div {...$alignRoot} use:alignRoot aria-labelledby="alignment-label" class="alignment">{#each ['left','center','right'] as value}<button {...$alignItem(value)} use:alignItem class="align-option">{value[0].toUpperCase()+value.slice(1)}</button>{/each}</div><div class="tracking-control"><p class="control-label" id="tracking-label">Letter spacing <strong>{$tracking[0]}px</strong></p><div {...$trackingRoot} use:trackingRoot class="slider"><div {...$trackingRange} use:trackingRange class="slider-range"></div>{#each $thumbs as thumb}<span {...thumb} use:thumb.action aria-labelledby="tracking-label" class="slider-thumb"></span>{/each}</div><div class="scale"><span>0px</span><span>8px</span></div></div><div class="grid-control"><label for="show-grid">Show layout grid</label><button id="show-grid" {...$gridRoot} use:gridRoot class="switch"><span></span></button></div><p class="hint">The grid is a visual aid. It does not change the poster’s text or spacing.</p><button class="primary" on:click={save} disabled={!!saved}>Save composition</button><button class="reset" on:click={reset}>Restore initial settings</button><p class="result" role="status">{saved||'This study changes only the local preview.'}</p></section><section class="poster" class:guides={$grid} style:text-align={$alignment} aria-label="Live typographic poster"><div class="poster-top"><span>TYPE / 2026</span><span>STUDY 04</span></div><div class="poster-orbit" aria-hidden="true"><i></i><b></b></div><div class="poster-title" style:letter-spacing={`${$tracking[0]}px`}><span>SPACE</span><span>TO</span><span>THINK.</span></div><div class="poster-bottom"><p>A pause between<br/>one idea and the next.</p><span>Original type study<br/>{$alignment} · {$tracking[0]}px</span></div></section></div></main>

Code-Referenz

  • Der Schiebereglerwert ist ein Array; das Plakat liest dessen ersten Eintrag aus.
  • Der Code verwendet explizite Attribut-Spreads und Aktionen und setzt keinen nicht erwähnten Präprozessor voraus.
  • Der gespeicherte Zustand wird ungültig, sobald sich ein Builder-Store ändert.

Vollständiges Originalplakat und originale Steuerelement-Stile

Semantische CSS-Variablen, data-state-Selektoren für Steuerelemente, Fokusringe und ein responsives typografisches Plakat.

css
:root{--study-canvas:#f3f0e9;--study-surface:#fffdf8;--study-ink:#32352e;--study-muted:#77796a;--study-line:#dbdece;--study-action:#486348;--study-on-action:#fff;--study-focus:#8aa77c;--study-poster:#e0e8bb;--study-accent:#d68f57;--study-space-1:4px;--study-space-2:8px;--study-space-3:12px;--study-space-4:16px;--study-space-6:24px;--study-space-8:32px}html,body,#app{height:auto;min-height:0;margin:0}*{box-sizing:border-box}body{background:var(--study-canvas);color:var(--study-ink);font-family:system-ui,sans-serif}button{font:inherit;cursor:pointer}button:focus-visible,[role=slider]:focus-visible{outline:3px solid var(--study-focus);outline-offset:4px}button:disabled{opacity:.45;cursor:default}.poster-shell{max-width:1060px;margin:auto;padding:32px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.14em;color:var(--study-muted)}h1{font-size:34px;line-height:1.15;max-width:650px;margin:12px 0}header>p:last-child{font-size:14px;line-height:1.7;color:var(--study-muted);max-width:620px}.poster-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:24px;margin-top:28px}.controls{padding:24px;background:var(--study-surface);border:1px solid var(--study-line);border-radius:14px;align-self:start;min-width:0}.controls h2{font-size:20px;margin:0 0 24px}.control-label{font-size:12px;font-weight:600;margin:0 0 12px}.control-label strong{float:right;color:var(--study-action)}.alignment{display:flex;border:1px solid var(--study-line);padding:4px;border-radius:8px;gap:4px}.align-option{border:0;flex:1;padding:9px 4px;border-radius:5px;font-size:12px;background:transparent;color:var(--study-muted)}.align-option[data-state=checked]{background:var(--study-action);color:var(--study-on-action)}.tracking-control{margin-top:26px}.slider{position:relative;height:24px;display:flex;align-items:center;touch-action:none}.slider:before{content:'';height:4px;background:var(--study-line);position:absolute;inset:10px 0;border-radius:4px}.slider-range{height:4px;position:absolute;background:var(--study-action);border-radius:4px}.slider-thumb{height:20px;width:20px;border:2px solid var(--study-action);background:white;border-radius:50%;cursor:grab}.scale{display:flex;justify-content:space-between;font-size:10px;color:var(--study-muted);margin-top:8px}.grid-control{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--study-line);padding-top:22px;margin-top:24px;font-size:13px}.switch{width:42px;height:24px;padding:3px;border:0;border-radius:999px;background:#b7beaf;flex-shrink:0}.switch span{display:block;width:18px;height:18px;border-radius:50%;background:white;transition:transform .15s}.switch[data-state=checked]{background:var(--study-action)}.switch[data-state=checked] span{transform:translateX(18px)}.hint{font-size:11px;line-height:1.7;color:var(--study-muted);margin:12px 0 24px}.primary{display:block;width:100%;padding:12px;border:0;border-radius:7px;background:var(--study-action);color:white;font-size:13px;font-weight:600}.reset{width:100%;padding:12px 0;border:0;background:transparent;color:var(--study-muted);font-size:11px}.result{font-size:11px;line-height:1.7;color:var(--study-muted);margin:8px 0 0}.poster{background:var(--study-poster);padding:28px;border-radius:14px;min-width:0;overflow:hidden;position:relative}.poster.guides{background-image:linear-gradient(#6680561c 1px,transparent 1px),linear-gradient(90deg,#6680561c 1px,transparent 1px);background-size:24px 24px}.poster-top{display:flex;justify-content:space-between;gap:12px;font-size:9px;font-weight:700;letter-spacing:.1em;position:relative;z-index:1}.poster-orbit{height:130px;position:relative;margin:10px 0 20px}.poster-orbit i{display:block;position:absolute;width:140px;height:140px;background:var(--study-accent);border-radius:50%;right:10%;top:0}.poster-orbit b{display:block;position:absolute;width:140px;height:140px;border:2px solid #617748;border-radius:50%;right:27%;top:0}.poster-title{font-size:clamp(28px,5.5vw,64px);line-height:1.08;font-weight:800;position:relative}.poster-title span{display:block}.poster-bottom{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;border-top:1px solid #9fac7c;margin-top:26px;padding-top:18px;font-size:11px;line-height:1.7}.poster-bottom p{margin:0}.poster-bottom>span{font-size:9px;color:#627046}@media(max-width:740px){.poster-layout{grid-template-columns:minmax(0,1fr)}.poster-shell{padding:20px}h1{font-size:29px}.poster-title{font-size:clamp(30px,9vw,56px)}}@media(max-width:360px){.poster-shell{padding:14px}.controls,.poster{padding:16px}.poster-title{font-size:28px}.poster-orbit{height:110px}.poster-orbit i,.poster-orbit b{width:115px;height:115px}.poster-top{font-size:8px}}@media(prefers-reduced-motion:reduce){.switch span{transition:none}}

Code-Referenz

  • Alle visuellen Tokens sind eigens erstellt und keine offiziellen Melt-Standardwerte.
  • Positionen von Schieberegler-Thumb und -Bereich stammen aus nativen Builder-Attributen.
  • Die Sichtbarkeit des dekorativen Rasters ist unabhängig vom Abstand.
04

Melt UI Designsystem: Agent einrichten

Ausgangspunkt für die Implementierung

Verifizierte Store-/Aktions-API von @melt-ui/svelte 0.86.6 in Svelte 5.57.1. Die explizite Builder-Syntax macht den optionalen Melt-Präprozessor überflüssig. Dies ist nicht das separate Runes-API der nächsten Generation.

javascript
// npm create vite@latest melt-type-study -- --template svelte
// cd melt-type-study && npm install
// npm install [email protected] @melt-ui/[email protected]
// Save the complete examples as src/App.svelte and src/style.css.
// src/main.js:
import {mount} from 'svelte';
import App from './App.svelte';
import './style.css';
mount(App, {target:document.querySelector('#app')});
// index.html: <div id="app"></div><script type="module" src="/src/main.js"></script>
// npm run dev

Ein Prompt für dein Projekt

Agenten-Prompt
Verwende die Store-/Aktions-Builder von @melt-ui/svelte 0.86.6 mit Svelte 5 für die typografische Kompositionsstudie. Füge sowohl Attribute als auch Aktionen an die Elemente von createRadioGroup, createSlider und createSwitch an; verwende die bereitgestellte explizite Syntax, statt einen nicht erwähnten Präprozessor vorauszusetzen. Behalte das Array mit einem Element und den elements.thumbs-Vertrag des Schiebereglers, die Ausrichtungswerte und die Sichtbarkeit des Rasters bei. Binde die berechneten Stile des Plakats direkt an diese Stores, setze gespeichertes Feedback nach Änderungen zurück und stelle left, [2] und true wieder her. Verwende weder das neuere Runes-API noch ein Terminmodell.
05

Melt UI Designsystem: Quellen und Geltungsbereich

Store-/Aktions-Builder von @melt-ui/svelte 0.86.6 mit Svelte 5.57.1. Alle visuellen Tokens und Plakattexte sind eigens erstellt. Beim Speichern wird nur der lokale Vorschauzustand festgehalten; ein Design wird weder exportiert noch veröffentlicht.