Vai al contenuto

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 Field completo: 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 Field non entra.

Installazione

pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/label.json
npx shadcn@latest add https://neobrutalism.com/r/base/label.json
yarn dlx shadcn@latest add https://neobrutalism.com/r/base/label.json
bunx --bun shadcn@latest add https://neobrutalism.com/r/base/label.json

Installa le seguenti dipendenze:

pnpm add @base-ui/react
npm install @base-ui/react
yarn add @base-ui/react
bun add @base-ui/react

Copia e incolla il seguente codice nel tuo progetto.

components/ui/label.tsx
"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.