Etykieta
Podpis dla pól wprowadzania danych, pól wyboru, przełączników i grup przycisków opcji — kliknięcie aktywuje element sterujący; napis jest wyświetlany czcionką w stylu neobrutalistycznym.
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
Label podpisuje kontrolkę formularza — sparuj go z id kontrolki, a kliknięcia w tekst będą fokusować lub przełączać pole. Ten wariant to ostylowany natywny element <label> bez zależności od prymitywu, złożony neobrutalistycznym krojem nagłówkowym.
Sięgnij po ten komponent, gdy:
- Samodzielne kontrolki — pojedynczy checkbox, przełącznik lub grupa radio, które nie potrzebują pełnego
Field: zgody, przełączniki powiadomień. - Wiersze ustawień — pary przełącznik–etykieta, w których cały podpis jest celem kliknięcia.
- Niestandardowe układy formularzy — siatki i układy w linii, do których pionowa struktura
Fieldnie pasuje.
W polach formularzy używaj komponentu Field, który ma wbudowaną obsługę etykiety, opisu i błędów.
Instalacja#
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
Zainstaluj następujące zależności:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Skopiuj i wklej poniższy kod do swojego projektu.
"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 }
Zaktualizuj ścieżki importu, aby pasowały do konfiguracji twojego projektu.
Użycie#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Label w Field#
W przypadku pól formularza użyj komponentu Field,
który zawiera wbudowane komponenty FieldLabel, FieldDescription i FieldError.
<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#
Aby włączyć obsługę RTL w Neobrutalism, zobacz przewodnik konfiguracji RTL.
"use client"
import * as React from "react"Dostępność#
Label renderuje natywny element <label>: dopasuj htmlFor do id kontrolki (albo zagnieźdź kontrolkę wewnątrz etykiety), a czytniki ekranu ogłoszą tekst jako dostępną nazwę kontrolki, kliknięcia w etykietę zaś będą ją fokusować lub przełączać. Style zawierają select-none, więc dwuklik na etykiecie nie zaznacza jej tekstu. <label> wiąże się tylko z kontrolkami formularza — dla niestandardowych widgetów skieruj zamiast tego aria-labelledby na id etykiety.
Referencja API#
Zobacz dokumentację Base UI Label, aby uzyskać więcej informacji.