Label
コントロールに追従するラベル。無効時には薄くなり、必須または任意の表示も自動で付けます。
pnpm dlx shadcn@latest add https://hextaui.com/r/label.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/label.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
htmlFor をコントロールの id に向けるか、コントロールを囲みます。どちらでも、ラベルはコントロールを見つけてその状態に追従します。<Field /> の中では、id を自動で結び付ける <FieldLabel /> を使ってください。
コントロールに追従
コントロールが無効の間、ラベルは薄くなり not-allowed カーソルを表示します。独自のスタイル用に data-required、data-invalid、data-readonly も公開されます。コントロールが変化しても追従します。
必須と任意
indicator="optional" は required のないコントロールにタグを付け、indicator="required" は付いているコントロールにアスタリスクを追加します。印はスクリーンリーダーからは隠されます。必須フィールドはすでに読み上げられるためです。
Checkbox
チェックボックスを囲んでラベル全体で切り替えるか、htmlFor でラベルを隣に置きます。どちらの場合も、無効なチェックボックスはラベルを薄くします。
アイコン
ラベル内のアイコンは、テキストの隣に収まるようにサイズが調整され、色も抑えられます。
長いコンテンツ
長いラベルは折り返され、区切りのない文字列はレイアウトを広げずに改行されます。
右から左
間隔とインジケーターは文字の読み方向に従います。
- ラベルをクリックするとコントロールにフォーカスが移るか切り替わるため、コントロール単体より大きなターゲットになります。
- ラベルのテキストをダブルクリックしても選択されません。ラベル内のコントロールのダブルクリックは通常どおり動作します。
- すべてのコントロールには名前が必要です。表示されるラベルがない場合は、コントロールに
aria-labelを使ってください。
<label> を描画し、その属性を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
htmlForコントロールの id。ラベルがコントロールを囲む場合は省略してください。 | string | – |
indicatorコントロールの必須状態からラベルに印を付けます。デフォルトではオフです。 | "required" | "optional" | – |
optionalText | ReactNode | "Optional" |
render | ReactElement | (props, state) => ReactElement | <label> |
| 属性 | 説明 |
|---|---|
data-slot="label" | CSS でラベルを指定します。 |
data-disabled | コントロールが無効な間付きます。 |
data-required | コントロールが必須の間付きます。 |
data-invalid | コントロールが無効(invalid)な間付きます。ユーザーが操作した後、または aria-invalid が設定されたときです。 |
data-readonly | コントロールが読み取り専用の間付きます。 |
data-slot="label-indicator" | 必須または任意の印。 |
- Calendar単一、範囲、複数選択に対応する日付グリッドです。月のスライド、範囲のプレビュー、タッチしやすいサイズの日付セルを備えています。
- Checkboxチェックが描かれるように表示されるチェックボックスです。中間状態の親、グループ、ホバーを共有するラベルに対応します。
- Comboboxチップ、グループ、非同期の結果に対応した、絞り込み可能なセレクトです。入力に合わせてポップアップのサイズが変わります。
- Date picker押すとポップオーバーでカレンダーを開くボタンです。スマートフォンではボトムシートになり、単一の日付も範囲も選べます。
- Fieldコントロールに紐付いたラベル、説明、エラーです。バリデーション状態とフォーム向けのレイアウトを備えています。
- Input3つのサイズ、無効状態と読み取り専用状態、ネイティブのバリデーションスタイル、スマートフォンでズームされない16pxのタッチ用フォントを備えたテキスト入力です。
使用しているブロック
Label の上に構築されるブロック。
- Agent Todosエージェントの作業中のプランを表示します。すべてのステップはバックログからToDo、進行中、完了へと移り、リアルタイムの所要時間、失敗、その裏にあるツール呼び出しも確認できます。コンポーザーの上に置くステータスピル、目に見えるプランの変更、実行前にプランを編集できるレビューステップを備えています。
- Chat Sidebarチャットアプリ向けのサイドバーです。上部にロゴ、検索、New chat、その下に独自のリンク、ピン留めされたチャット、チャットを表示するために展開するプロジェクト、日ごとにグループ化された最近のチャットを配置します。行にはホバーメニューと右クリックメニュー、インラインでの名前変更、取り消しできる削除、リアルタイムの返信状態があります。
- TeamAIプロダクトのワークスペース設定向けの、チームメンバーと招待です。入力中の招待をプレビューするシートメーター、貼り付けたリストを確認済みのチップに変える招待ボックス、ロール、検索、フィルター、並べ替えを備えたメンバー、再送のクールダウンとコピーできるリンクを持つ保留中の招待、入力による確認つきのオーナー移譲、取り消しできる削除を備えています。