Beschriftung
Eine Beschriftung für Eingabefelder, Kontrollkästchen, Schalter und Optionsfeldgruppen – durch Klicken wird das Steuerelement aktiviert, gesetzt in der neobrutalistischen Überschriftenschrift.
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
Das Label beschriftet ein Formular-Steuerelement – verknüpfe es mit der id des Steuerelements, und Klicks auf den Text fokussieren oder schalten das Feld. Diese Variante ist ein gestyltes natives <label>-Element ohne Primitive-Abhängigkeit, gesetzt in der neobrutalistischen Überschriften-Schrift.
Typische Anwendungsfälle:
- Alleinstehende Steuerelemente – eine einzelne Checkbox, ein Switch oder eine Radio-Gruppe, die kein volles
Fieldrechtfertigt: Einwilligungs-Checkboxen, Benachrichtigungs-Umschalter. - Einstellungszeilen – Switch-plus-Label-Paare, bei denen die gesamte Beschriftung als Klickfläche dient.
- Eigene Formularlayouts – Raster und Inline-Anordnungen, in die die gestapelte Struktur von
Fieldnicht passt.
Verwende für Formularfelder die Komponente Field, die Label, Beschreibung und Fehlerbehandlung bereits integriert enthält.
Installation#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/label.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/label.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/label.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/label.json
Installiere die folgenden Abhängigkeiten:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Kopiere den folgenden Code und füge ihn in dein Projekt ein.
"use client"
import * as React from "react"
import { Label as LabelPrimitive } from "radix-ui"
import { cn } from "@/lib/utils"
function Label({
className,
...props
}: React.ComponentProps<typeof LabelPrimitive.Root>) {
return (
<LabelPrimitive.Root
data-slot="label"
className={cn(
"flex items-center gap-2 text-sm leading-none font-head font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
className
)}
{...props}
/>
)
}
export { Label }
Passe die Importpfade an dein Projekt-Setup an.
Verwendung#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Label in einem Field#
Verwende für Formularfelder die Komponente Field, die
die Komponenten FieldLabel, FieldDescription und FieldError bereits integriert enthält.
<Field>
<FieldLabel htmlFor="email">Your email address</FieldLabel>
<Input id="email" />
</Field>import { Button } from "@/components/ui/button"
import { Checkbox } from "@/components/ui/checkbox"
import {RTL#
Um RTL-Unterstützung in Neobrutalism zu aktivieren, sieh dir die RTL-Konfigurationsanleitung an.
"use client"
import * as React from "react"Barrierefreiheit#
Label rendert ein natives <label>-Element: Stimme htmlFor auf die id des Steuerelements ab (oder verschachtle das Steuerelement im Label), dann kündigen Screenreader den Text als zugänglichen Namen des Steuerelements an, während Klicks auf das Label es fokussieren oder umschalten. Die Styles enthalten select-none, ein Doppelklick auf das Label wählt dessen Text also nicht aus. <label> funktioniert nur mit Formular-Steuerelementen – lass für eigene Widgets stattdessen aria-labelledby auf die id des Labels zeigen.
API-Referenz#
Weitere Informationen findest du in der Dokumentation von Base UI Label.