Etichetta
Una didascalia per campi di immissione, caselle di selezione, interruttori e gruppi di pulsanti opzionali — i clic attivano il controllo, scritta con il carattere neobrutalista dell'intestazione.
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
La label fa da didascalia a un controllo di form — abbinala all’id del controllo e i clic sul testo portano il focus sul campo o lo commutano. Questa variante è un elemento <label> nativo con lo stile applicato, senza dipendenze da primitive, composto nel carattere dei titoli neobrutalista.
Quando usarlo:
- Controlli isolati — una checkbox singola, uno switch o un gruppo radio che non giustificano un
Fieldcompleto: caselle di consenso, interruttori per le notifiche. - Righe di impostazioni — coppie switch ed etichetta in cui l’intera didascalia è un’area di clic.
- Layout di form personalizzati — griglie e disposizioni in linea in cui la struttura impilata di
Fieldnon entra.
Per i campi di un form usa il componente Field, che include già etichetta, descrizione e gestione degli errori.
Installazione#
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
Installa le seguenti dipendenze:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Copia e incolla il seguente codice nel tuo progetto.
"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 }
Aggiorna i percorsi di importazione in base alla configurazione del tuo progetto.
Utilizzo#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Label in un Field#
Per i campi dei moduli, usa il componente Field, che
include i componenti FieldLabel, FieldDescription e FieldError integrati.
<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#
Per abilitare il supporto RTL in Neobrutalism, consulta la guida alla configurazione RTL.
"use client"
import * as React from "react"Accessibilità#
Label rende un elemento <label> nativo: fai corrispondere htmlFor all’id del controllo (oppure annida il controllo dentro la label) e gli screen reader annunceranno il testo come nome accessibile del controllo, mentre i clic sulla label gli danno il focus o lo commutano. Gli stili includono select-none, quindi un doppio clic sulla label non ne seleziona il testo. <label> si associa solo ai controlli di form — per i widget personalizzati fai puntare aria-labelledby all’id della label.
Riferimento API#
Consulta la documentazione Base UI Label per maggiori informazioni.