Rótulo
Uma legenda para campos de entrada, caixas de seleção, botões de alternância e grupos de botões de opção — os cliques ativam o controle, escrita na fonte neobrutalista do título.
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
O label dá legenda a um controle de formulário — associe-o ao id do controle e cliques no texto passam a focar ou alternar o campo. Esta variante é um elemento <label> nativo estilizado, sem dependência de primitivo, composto na fonte de título neobrutalista.
Quando usar:
- Controles avulsos — um checkbox, switch ou grupo de radio isolado que não justifica um
Fieldcompleto: caixas de consentimento, alternâncias de notificação. - Linhas de configurações — pares de switch e rótulo em que a legenda inteira é área de clique.
- Layouts de formulário personalizados — grades e arranjos em linha em que a estrutura empilhada do
Fieldnão se encaixa.
Para campos de formulário, use o componente Field, que já inclui rótulo, descrição e tratamento de erros integrados.
Instalação#
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
Instale as seguintes dependências:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Copie e cole o código a seguir no seu projeto.
"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 }
Atualize os caminhos de importação conforme a configuração do seu projeto.
Uso#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Label em um Field#
Para campos de formulário, use o componente
Field, que inclui os componentes
FieldLabel, FieldDescription e FieldError integrados.
<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#
Para ativar o suporte a RTL no Neobrutalism, consulte o guia de configuração de RTL.
"use client"
import * as React from "react"Acessibilidade#
Label renderiza um elemento <label> nativo: faça o htmlFor corresponder ao id do controle (ou aninhe o controle dentro do label) e os leitores de tela anunciam o texto como o nome acessível do controle, enquanto cliques no rótulo o focam ou alternam. Os estilos incluem select-none, então o clique duplo no rótulo não seleciona o texto. <label> só se associa a controles de formulário — para widgets personalizados, aponte aria-labelledby para o id do rótulo.
Referência da API#
Consulte a documentação Base UI Label para obter mais informações.