Label
Teks keterangan untuk kolom input, kotak centang, tombol geser, dan kelompok tombol radio — klik akan mengaktifkan elemen kontrol tersebut, ditampilkan dengan font judul bergaya neobrutalis.
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
Label memberi keterangan pada kontrol formulir — pasangkan dengan id kontrolnya, dan klik pada teks akan memfokuskan atau men-toggle kolom tersebut. Varian ini adalah elemen <label> natif yang diberi gaya tanpa dependensi primitif, ditata dengan font judul neobrutalis.
Gunakan komponen ini saat:
- Kontrol mandiri — checkbox, switch, atau grup radio tunggal yang belum memerlukan
Fieldlengkap: kotak persetujuan, toggle notifikasi. - Baris pengaturan — pasangan switch dan label dengan seluruh keterangan sebagai target klik.
- Tata letak formulir kustom — grid dan susunan sebaris yang tidak cocok dengan struktur bertumpuk milik
Field.
Untuk kolom formulir, gunakan komponen Field yang sudah menyertakan penanganan label, deskripsi, dan kesalahan bawaan.
Instalasi#
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
Instal dependensi berikut:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Salin dan tempel kode berikut ke dalam proyek Anda.
"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 }
Perbarui jalur impor agar sesuai dengan pengaturan proyek Anda.
Penggunaan#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Label di dalam Field#
Untuk bidang formulir, gunakan komponen Field yang
menyertakan komponen bawaan FieldLabel, FieldDescription, dan 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#
Untuk mengaktifkan dukungan RTL di Neobrutalism, lihat panduan konfigurasi RTL.
"use client"
import * as React from "react"Aksesibilitas#
Label merender elemen <label> natif: cocokkan htmlFor dengan id kontrolnya (atau sarangkan kontrol di dalam label) maka pembaca layar mengumumkan teksnya sebagai nama aksesibel kontrol tersebut, sementara klik pada label memfokuskan atau men-toggle-nya. Gayanya menyertakan select-none, sehingga mengklik dua kali label tidak menyeleksi teksnya. <label> hanya berasosiasi dengan kontrol formulir — untuk widget kustom, arahkan aria-labelledby ke id milik label.
Referensi API#
Lihat dokumentasi Base UI Label untuk informasi selengkapnya.