Demo
Ein Markup, drei Adapter, austauschbare Themes. Framework und Theme lassen sich frei kombinieren – die Komponente sieht immer gleich aus und verhält sich gleich. Der Code unter der Vorschau zeigt genau die gewählte Kombination.
Vanilla@synatix/vanilla + @synatix/theme-kredit
import { enhanceButton } from "@synatix/vanilla";
import "@synatix/theme-kredit/theme.css";
// Ein Container im Markup trägt data-theme="kredit".
const root = document.querySelector(
"[data-scope='button']"
);
const cleanup = enhanceButton(root);Vanilla@synatix/vanilla + @synatix/theme-cpool
import { enhanceButton } from "@synatix/vanilla";
import "@synatix/theme-cpool/theme.css";
// Ein Container im Markup trägt data-theme="cpool".
const root = document.querySelector(
"[data-scope='button']"
);
const cleanup = enhanceButton(root);Vanilla@synatix/vanilla
import { enhanceButton } from "@synatix/vanilla";
const root = document.querySelector(
"[data-scope='button']"
);
const cleanup = enhanceButton(root);React@synatix/react + @synatix/theme-kredit
import { Button } from "@synatix/react";
import "@synatix/theme-kredit/theme.css";
export function Example() {
return (
<div data-theme="kredit">
<Button tone="accent">Anfrage starten</Button>
</div>
);
}React@synatix/react + @synatix/theme-cpool
import { Button } from "@synatix/react";
import "@synatix/theme-cpool/theme.css";
export function Example() {
return (
<div data-theme="cpool">
<Button tone="accent">Anfrage starten</Button>
</div>
);
}React@synatix/react
import { Button } from "@synatix/react";
export function Example() {
return (
<Button tone="accent">Anfrage starten</Button>
);
}Svelte@synatix/svelte + @synatix/theme-kredit
<script>
import { Button } from "@synatix/svelte";
import "@synatix/theme-kredit/theme.css";
</script>
<div data-theme="kredit">
<Button tone="accent">Anfrage starten</Button>
</div>Svelte@synatix/svelte + @synatix/theme-cpool
<script>
import { Button } from "@synatix/svelte";
import "@synatix/theme-cpool/theme.css";
</script>
<div data-theme="cpool">
<Button tone="accent">Anfrage starten</Button>
</div>Svelte@synatix/svelte
<script>
import { Button } from "@synatix/svelte";
</script>
<Button tone="accent">Anfrage starten</Button>Anatomie
Feste Parts dienen als Selektoren für CSS und Tests.
<div data-scope="button" data-part="root">
<span data-part="icon">…</span>
<span data-part="label">…</span>
<span data-part="spinner">…</span>
</div>Props
| Prop | Typ | Standard | Beschreibung |
|---|---|---|---|
variant | "primary" | "secondary" | "ghost" | "primary" | Bestimmt die visuelle Hierarchie. |
size | "sm" | "md" | "lg" | "md" | Steuert Höhe und Innenabstand. |
loading | boolean | false | Verhindert weitere Klicks und zeigt den Fortschritt. |
disabled | boolean | false | Deaktiviert die Aktion. |
Tastatur
| Taste | Verhalten |
|---|---|
Tab | Setzt den Fokus auf das nächste bedienbare Element. |
Shift + Tab | Setzt den Fokus auf das vorherige Element. |
Enter / Leertaste | Löst die Aktion aus. |