Checkbox
Eine Checkbox, deren Häkchen sich einzeichnet, mit unbestimmten übergeordneten Elementen, Gruppen und Labels, die ihren Hover teilen.
pnpm dlx shadcn@latest add https://hextaui.com/r/checkbox.jsonFügt die Komponente, die HextaUI-Theme-Tokens und alle HextaUI-Komponenten hinzu, von denen sie abhängt.
Füge die Theme-Tokens zu deinem globalen CSS hinzu, falls du das noch nicht getan hast.
Installiere die Abhängigkeiten.
pnpm add @base-ui/react @tabler/icons-react cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/checkbox.tsx Passe die Importpfade an dein Projekt-Setup an.
Zustände
disabled, readOnly, indeterminate und aria-invalid. Eine schreibgeschützte Box behält ihren Wert und bleibt fokussierbar, ignoriert aber Klicks und Tasten.
Alle auswählen
In einer <CheckboxGroup /> hakt eine Checkbox mit parent jeden Wert in allValues an. Sie wird unbestimmt, wenn nur einige angehakt sind.
Verschachtelte Gruppen
Gruppen lassen sich verschachteln. Jede übergeordnete spiegelt den Zustand der Gruppe direkt unter ihr, und die oberste deckt alles ab.
Kontrolliert
Übergib checked und onCheckedChange, um den State in deinem eigenen Code zu halten.
Form
Ein verstecktes Input sendet name und value wie eine native Checkbox, und required blockiert das Absenden, bis sie angehakt ist.
Benachbartes Label
Wenn das Label die Box nicht umschließen kann, rendere die Checkbox mit nativeButton als <button> und verweise das Label per htmlFor darauf.
Karten
Umschließe eine ganze Karte mit dem Label, damit die Karte die Trefferfläche ist, und style sie mit has-data-checked.
Langer Inhalt
Die Box bleibt in der ersten Zeile, während ein langes Label und Text ohne Umbruchstelle daneben umbrechen.
Rechts nach links
Die Box sitzt auf der Inline-Start-Seite, und das Label folgt der Leserichtung.
| Taste | Aktion |
|---|---|
| Space | Hakt die Checkbox an oder ab. |
| Enter | Sendet das Formular ab, zu dem die Checkbox gehört, wie eine native Checkbox. Es schaltet die Box nie um. |
| Tab | Setzt den Fokus auf die nächste Checkbox. |
- Umschließe die Checkbox und ihren Text mit einem
<label>. Das Label benennt die Checkbox, und Hovern oder Drücken gibt der Box dasselbe Feedback wie das Hovern der Box selbst. - Gib jeder
<CheckboxGroup />einaria-labeloderaria-labelledby, damit Screenreader ansagen, wofür die Gruppe gedacht ist. - Die Trefferfläche reicht über die 16-px-Box hinaus und wird auf Touchscreens größer.
- Der Haken wird beim Anhaken gezeichnet. Bei reduzierter Bewegung erscheint er ohne Strichanimation.
Basiert auf der Base UI Checkbox und Checkbox Group. Beide akzeptieren die Props der Primitive, die sie umschließen.
| Prop | Typ | Standard |
|---|---|---|
checked | boolean | – |
defaultChecked | boolean | false |
onCheckedChange | (checked: boolean, details) => void | – |
indeterminateZeigt einen Strich: weder angehakt noch nicht angehakt. | boolean | false |
disabled | boolean | false |
readOnlyFokussierbar, aber der Wert lässt sich nicht ändern. | boolean | false |
required | boolean | false |
nameWird mit dem Formular gesendet, wenn angehakt. | string | – |
valueIdentifiziert die Box in einer Gruppe und ist das, was das Formular absendet. Fällt auf name zurück, dann auf „on“. | string | – |
uncheckedValueWird gesendet, wenn nicht angehakt. Standardmäßig nichts. | string | – |
parentSteuert jeden Wert in allValues der Gruppe. Nur innerhalb einer CheckboxGroup. | boolean | false |
inputRef | Ref<HTMLInputElement> | – |
nativeButtonAuf true setzen, wenn render ein <button> ist. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <span> |
| Attribut | Beschreibung |
|---|---|
data-slot="checkbox" | Die Box in CSS ansprechen. |
data-checked | Vorhanden, wenn angehakt. |
data-unchecked | Vorhanden, wenn nicht angehakt. |
data-indeterminate | Vorhanden, wenn unbestimmt. |
data-disabled | Vorhanden, wenn deaktiviert. |
data-readonly | Vorhanden, wenn schreibgeschützt. |
data-required | Vorhanden, wenn erforderlich. |
data-invalid | Vorhanden, wenn ungültig innerhalb eines Base UI Field. |
| Prop | Typ | Standard |
|---|---|---|
valueWerte der angehakten Checkboxen. | string[] | – |
defaultValue | string[] | – |
onValueChange | (value: string[], details) => void | – |
allValuesJeder Wert der Gruppe. Für eine übergeordnete Checkbox erforderlich. | string[] | – |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Attribut | Beschreibung |
|---|---|
data-slot="checkbox-group" | Die Gruppe in CSS ansprechen. |
data-disabled | Vorhanden, wenn die Gruppe deaktiviert ist. |
- CalendarEin Datumsraster für Einzel-, Bereichs- und Mehrfachauswahl, mit gleitenden Monaten, Bereichsvorschau und Tagen in Touch-Größe.
- ComboboxEin filterbares Select mit Chips, Gruppen und asynchronen Ergebnissen, in einem Popup, das sich beim Tippen anpasst.
- Date pickerEin Button, der einen Kalender in einem Popover öffnet, auf Smartphones als Bottom Sheet, für einzelne Daten und Zeiträume.
- FieldLabels, Beschreibungen und Fehler, mit ihrem Steuerelement verbunden, mit Validierungszuständen und Layouts für Formulare.
- InputEin Texteingabefeld mit drei Größen, ungültigen und schreibgeschützten Zuständen, nativem Validierungsstyling und einer 16-px-Schrift für Touch, damit Smartphones nie hineinzoomen.
- Input groupEin Input mit angehängten Icons, Text, Buttons oder Tastaturhinweis, die sich einen Rahmen und einen Fokusring teilen.
In Blocks verwendet
Blocks, die auf Checkbox aufbauen.
- API keysDie API-Schlüssel-Seite eines KI-Produkts, wie in den Konsolen von OpenAI und Anthropic. Schlüssel mit eingeschränkten Berechtigungen und Ablaufdatum erstellen, das Secret einmal sehen mit einem Kopieren, das sich bestätigt, mit Rückgängig widerrufen, direkt umbenennen, mit Übergangsfrist rotieren und die Nutzung pro Schlüssel sehen.
- MarkdownMarkdown für KI-Antworten. Es streamt flüssig und zeigt nie halb getippte Syntax, mit verlinkbaren Überschriften, Tabellen, die du als Markdown oder CSV kopieren kannst, GitHub-Callouts, Aufgabenlisten, Fußnoten, Bildern, Inline-Zitaten und vollständigen Codeblöcken.
- NotificationsDer Bereich „Benachrichtigungen“ in den Einstellungen eines KI-Produkts. Ein Raster aus Kanal und Ereignis mit Toggles für Zeile, Spalte und alle, Ruhezeiten mit einer Live-Zeile zur nächsten Ruhephase, ein E-Mail-Digest, echte Testsendungen für Desktop, E-Mail, Push und Slack, Umgang mit Browser-Berechtigungen und ein Slack-Verbindungsablauf. Passt in jeden Settings-Bereich.
- SecuritySitzungen und Sicherheit für ein KI-Produkt. Aktive Geräte mit Abmelden, bei dem Zeilen animiert verschwinden, eine Passwortänderung mit Live-Stärkeanzeige, Zwei-Faktor-Einrichtung mit echtem QR-Code, einer 6-stelligen Prüfung und herunterladbaren Wiederherstellungscodes, Passkeys über WebAuthn und Kontolöschung hinter einer getippten Bestätigung.