Nhãn
Chú thích cho các trường nhập liệu, ô chọn, công tắc và nhóm nút radio — nhấp chuột sẽ kích hoạt điều khiển, được hiển thị bằng phông chữ tiêu đề theo phong cách tân thô mộc.
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
Label là dòng chú thích cho một điều khiển biểu mẫu — ghép nó với id của điều khiển, và mỗi lần bấm vào phần chữ sẽ focus hoặc bật tắt ô đó. Biến thể này là một thẻ <label> native đã được tạo kiểu, không phụ thuộc primitive nào, đặt trong phông tiêu đề neobrutalist.
Nên dùng khi:
- Điều khiển đứng riêng — một checkbox, switch hay nhóm radio lẻ chưa cần đến cả một
Field: ô đồng ý điều khoản, công tắc bật thông báo. - Hàng cài đặt — cặp switch kèm nhãn, nơi cả dòng chú thích đều là vùng bấm được.
- Bố cục biểu mẫu tùy chỉnh — các dạng lưới hay xếp ngang mà cấu trúc xếp dọc của
Fieldkhông phù hợp.
Với các trường biểu mẫu, hãy dùng thành phần Field, vốn đã tích hợp sẵn nhãn, mô tả và xử lý lỗi.
Đối với các trường biểu mẫu, hãy dùng component Field, vốn đã tích hợp sẵn nhãn, mô tả và xử lý lỗi.
Cài đặt#
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
Cài đặt các phụ thuộc sau:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Sao chép và dán đoạn mã sau vào dự án của bạn.
"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 }
Cập nhật các đường dẫn import cho phù hợp với thiết lập dự án của bạn.
Cách dùng#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Label trong một Field#
Đối với các trường biểu mẫu, hãy dùng component Field,
vốn đã tích hợp sẵn các component FieldLabel, FieldDescription và 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#
Để bật hỗ trợ RTL trong Neobrutalism, hãy xem hướng dẫn cấu hình RTL.
"use client"
import * as React from "react"Khả năng truy cập#
Label render một thẻ <label> native: cho htmlFor khớp với id của điều khiển (hoặc lồng điều khiển vào bên trong nhãn) là trình đọc màn hình sẽ đọc phần chữ đó như tên gọi truy cập được của điều khiển, còn khi bấm vào nhãn thì điều khiển được focus hoặc bật tắt. Phần kiểu dáng đã có select-none, nên bấm đúp vào nhãn cũng không chọn phần chữ. Thẻ <label> chỉ liên kết được với các điều khiển biểu mẫu — với widget tùy chỉnh, hãy trỏ aria-labelledby đến id của nhãn.
Tham chiếu API#
Xem tài liệu Base UI Label để biết thêm thông tin.