Toggle-Gruppe

Eine Toggle-Gruppe ist eine Reihe von Optionen, die sich als ein einziges Steuerelement liest. Bau sie aus items und sag mit value, welche an ist.

Einfache Gruppe

toggleGroup({
  label: 'Textausrichtung',
  value: 'center',
  items: [
    { value: 'left', label: 'Links' },
    { value: 'center', label: 'Mitte' },
    { value: 'right', label: 'Rechts' },
  ],
})

Einfache Strings

toggleGroup({ label: 'Dichte', value: 'komfortabel', items: ['kompakt', 'komfortabel', 'großzügig'] })

Das ist die Form, die eine statische Website meistens will: jedes Segment ist eine Seite. Einträge mit einem href werden als Anker gerendert, und der aktive bekommt aria-current="page" — nicht aria-pressed, denn ein Link ist kein Button, den man eingedrückt hat.

toggleGroup({
  label: 'Bereich',
  value: 'ui',
  items: [
    { value: 'docs', label: 'Doku', href: '/de/docs' },
    { value: 'ui', label: 'UI', href: '/de/ui' },
    { value: 'examples', label: 'Beispiele', href: '/de/examples' },
  ],
})

Mehr als eine an

Übergib ein Array als value. Der Container bleibt in beiden Fällen eine schlichte group — eine radiogroup wäre falsch, denn das hier sind gedrückte Buttons und keine Radios.

toggleGroup({
  label: 'Formatierung',
  value: ['bold', 'underline'],
  items: [
    { value: 'bold', label: 'Fett' },
    { value: 'italic', label: 'Kursiv' },
    { value: 'underline', label: 'Unterstrichen' },
  ],
})

Größen und Varianten

stack({ gap: 'md' },
  toggleGroup({ size: 'sm', label: 'Klein', value: 'a', items: ['a', 'b', 'c'] }),
  toggleGroup({ size: 'md', label: 'Mittel', value: 'a', items: ['a', 'b', 'c'] }),
  toggleGroup({ size: 'lg', label: 'Groß', value: 'a', items: ['a', 'b', 'c'] }),
  toggleGroup({ variant: 'ghost', label: 'Ghost', value: 'b', items: ['a', 'b', 'c'] }),
)

Deaktivierte Einträge

toggleGroup({
  label: 'Renderer',
  value: 'static',
  items: [
    { value: 'static', label: 'Statisch' },
    { value: 'islands', label: 'Islands' },
    { value: 'ssr', label: 'SSR', disabled: true },
  ],
})

In einer Werkzeugleiste

stack({ direction: 'row', gap: 'md', wrap: true, align: 'center' },
  toggleGroup({ label: 'Ausrichtung', value: 'Links', size: 'sm', items: ['Links', 'Mitte', 'Rechts'] }),
  divider({ orientation: 'vertical' }),
  toggleGroup({ label: 'Stil', value: ['Fett'], size: 'sm', items: ['Fett', 'Kursiv'] }),
)

Wann etwas anderes passt

Wird die Wahl mit einem Formular abgeschickt, nimm choiceGroup() — echte Radios, kein Skript nötig. Ist jedes Segment eine Seite, nimm lieber die Link-Form von oben. Eine Toggle-Gruppe ist für eine Wahl, auf die die Seite selbst reagiert.

Props

PropTypStandardBeschreibung
itemsArray[]Strings oder { value, label, href, disabled }-Objekte.
valuestring | number | Array—Welcher Eintrag an ist. Ein Array, wenn es mehrere sein können.
labelstring—Zugänglicher Name der Gruppe.
size'sm' | 'md' | 'lg''md'Gilt für jeden Eintrag.
variant'outline' | 'ghost' | 'soft''outline'Wie ein ausgeschalteter Eintrag aussieht.