ラベル
入力欄、チェックボックス、スイッチ、およびラジオボタングループのキャプションです。クリックするとコントロールが有効になります。ネオブルータリズム風の見出しフォントで表示されています。
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"
Label はフォームコントロールのキャプションです。コントロールの id と結び付けると、テキストをクリックしたときにフィールドへフォーカスしたり切り替えたりできます。このバリアントはプリミティブ依存のないスタイル付きネイティブ <label> 要素 で、ネオブルータリストの見出しフォントです。
次のような場面で使います:
- 単体のコントロール — フルの
Fieldほどではない単独のチェックボックス、スイッチ、ラジオグループ。同意ボックス、通知トグルなど。 - 設定の行 — スイッチ+ラベルで、キャプション全体がクリック対象になる並び。
- カスタムフォームレイアウト —
Fieldの縦積み構造が合わないグリッドやインライン配置。
フォームフィールドには、組み込みのラベル・説明・エラー処理を持つ Field コンポーネントを使ってください。
フォームフィールドには、ラベル・説明・エラー処理を標準で備えた Field コンポーネントをご利用ください。
インストール#
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
以下の依存関係をインストールします。
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
以下のコードをコピーして、プロジェクトに貼り付けます。
"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 }
インポートのパスをプロジェクトの構成に合わせて更新します。
使い方#
import { Label } from "@/components/ui/label"<Label htmlFor="email">Your email address</Label>Field 内の Label#
フォームフィールドには、FieldLabel・FieldDescription・FieldError コンポーネントを標準で備えた
Field コンポーネントをご利用ください。
<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#
Neobrutalism で RTL を有効にする方法は、RTL 設定ガイドをご覧ください。
"use client"
import * as React from "react"アクセシビリティ#
Label はネイティブの <label> を描画します。htmlFor をコントロールの id に合わせる(またはコントロールをラベル内に入れる)と、スクリーンリーダーがテキストをコントロールのアクセシブルネームとして読み上げ、ラベルのクリックでフォーカスやトグルが行われます。スタイルに select-none が含まれるため、ラベルをダブルクリックしてもテキストは選択されません。<label> が関連付けられるのはフォームコントロールだけです。カスタムウィジェットでは、代わりに aria-labelledby でラベルの id を指してください。
APIリファレンス#
詳しくは Base UI のドキュメントをご覧ください。