Label
Ein Label, das seinem Steuerelement folgt: Es dimmt, wenn es deaktiviert ist, und markiert es von selbst als erforderlich oder optional.
pnpm dlx shadcn@latest add https://hextaui.com/r/label.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 cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/label.tsx Passe die Importpfade an dein Projekt-Setup an.
Richte htmlFor auf die id eines Steuerelements oder umschließe das Steuerelement. In beiden Fällen findet das Label es und folgt seinem Zustand. Innerhalb eines <Field /> verwende <FieldLabel />, das die id für dich verdrahtet.
Folgt seinem Steuerelement
Das Label dimmt und zeigt einen not-allowed-Cursor, solange sein Steuerelement deaktiviert ist, und stellt data-required, data-invalid und data-readonly für eigene Styles bereit. Es bleibt aktuell, wenn sich das Steuerelement ändert.
Erforderlich und optional
indicator="optional" kennzeichnet Steuerelemente ohne required, und indicator="required" fügt Steuerelementen, die es haben, ein Sternchen hinzu. Die Markierung ist für Screenreader ausgeblendet, die Pflichtfelder bereits ansagen.
Checkbox
Umschließe eine Checkbox, damit das ganze Label sie umschaltet, oder platziere das Label per htmlFor daneben. Eine deaktivierte Checkbox dimmt ihr Label in beiden Fällen.
Icon
Icons in einem Label werden dimensioniert und abgedämpft, damit sie neben dem Text passen.
Langer Inhalt
Lange Labels umbrechen, und ununterbrochene Zeichenketten werden getrennt, statt das Layout zu verbreitern.
Rechts nach links
Abstände und der Indikator folgen der Leserichtung.
- Ein Klick auf das Label fokussiert oder schaltet sein Steuerelement um und ist damit eine größere Klickfläche als das Steuerelement allein.
- Ein Doppelklick auf den Label-Text markiert ihn nicht. Doppelklicks auf ein Steuerelement im Label funktionieren wie gewohnt.
- Jedes Steuerelement braucht einen Namen. Ohne sichtbares Label nutze stattdessen
aria-labelam Steuerelement.
Rendert ein <label> und akzeptiert dessen Attribute.
| Prop | Typ | Standard |
|---|---|---|
htmlForDie id des Steuerelements. Lass sie weg, wenn das Label das Steuerelement umschließt. | string | – |
indicatorMarkiere das Label anhand des Required-Zustands des Steuerelements. Standardmäßig aus. | "required" | "optional" | – |
optionalText | ReactNode | "Optional" |
render | ReactElement | (props, state) => ReactElement | <label> |
| Attribut | Beschreibung |
|---|---|
data-slot="label" | Labels per CSS ansprechen. |
data-disabled | Vorhanden, solange das Steuerelement deaktiviert ist. |
data-required | Vorhanden, solange das Steuerelement erforderlich ist. |
data-invalid | Vorhanden, solange das Steuerelement ungültig ist, nach einer Interaktion oder wenn aria-invalid gesetzt ist. |
data-readonly | Vorhanden, solange das Steuerelement schreibgeschützt ist. |
data-slot="label-indicator" | Die Markierung für erforderlich oder optional. |
- CalendarEin Datumsraster für Einzel-, Bereichs- und Mehrfachauswahl, mit gleitenden Monaten, Bereichsvorschau und Tagen in Touch-Größe.
- CheckboxEine Checkbox, deren Häkchen sich einzeichnet, mit unbestimmten übergeordneten Elementen, Gruppen und Labels, die ihren Hover teilen.
- 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.
In Blocks verwendet
Blocks, die auf Label aufbauen.
- Agent TodosZeige den Plan eines Agenten, während er arbeitet. Jeder Schritt wandert von Backlog über To do und In Arbeit zu Erledigt, mit Live-Zeiten, Fehlern und den dahinterliegenden Tool-Aufrufen. Eine Status-Pille für über dem Composer, sichtbare Planänderungen und ein Review-Schritt, um den Plan vor der Ausführung zu bearbeiten.
- Chat SidebarDie Seitenleiste für eine Chat-App. Logo, Suche und Neuer Chat oben, deine eigenen Links darunter, angeheftete Chats, Projekte, die sich aufklappen und ihre Chats zeigen, zuletzt verwendete nach Tag gruppiert und Zeilen mit Hover- und Rechtsklick-Menüs, direktem Umbenennen, Löschen mit Rückgängig und Live-Antwortzuständen.
- TeamTeammitglieder und Einladungen für die Workspace-Einstellungen eines KI-Produkts. Eine Seat-Anzeige, die die Einladungen in der Vorschau zeigt, die du gerade tippst, ein Einladungsfeld, das eine eingefügte Liste in geprüfte Chips verwandelt, Mitglieder mit Rollen, Suche, Filtern und Sortierung, ausstehende Einladungen mit Cooldown fürs erneute Senden und kopierbaren Links, Eigentümerwechsel mit getippter Bestätigung und Entfernen mit Rückgängig.