Checkbox
チェックが描かれるように表示されるチェックボックスです。中間状態の親、グループ、ホバーを共有するラベルに対応します。
pnpm dlx shadcn@latest add https://hextaui.com/r/checkbox.jsonコンポーネント、HextaUIのテーマトークン、依存するHextaUIコンポーネントを追加します。
まだ追加していない場合は、グローバルCSSにテーマトークンを追加してください。
依存関係をインストールします。
pnpm add @base-ui/react @tabler/icons-react cn次のコードをコピーしてプロジェクトに貼り付けてください。
components/ui/checkbox.tsx インポートパスは、お使いのプロジェクト構成に合わせて更新してください。
状態
disabled、readOnly、indeterminate、aria-invalid。読み取り専用のボックスは値を保持してフォーカス可能なままですが、クリックとキー操作は無視します。
すべて選択
<CheckboxGroup /> の内側では、parent を持つチェックボックスが allValues のすべての値をチェックします。一部だけがチェックされている場合は、不確定状態になります。
ネストしたグループ
グループはネストできます。各親は直下のグループの状態を反映し、最上位の親はすべてを対象にします。
制御
状態を自分のコードで管理するには、checked と onCheckedChange を渡します。
Form
非表示の input が、ネイティブのチェックボックスと同様に name と value を送信し、required はチェックされるまで送信をブロックします。
兄弟のラベル
ラベルでボックスを囲めない場合は、nativeButton を指定してチェックボックスを <button> としてレンダリングし、htmlFor でラベルをそれに向けます。
カード
カード全体をラベルで囲むと、カードがヒット領域になります。スタイルは has-data-checked で指定します。
長いコンテンツ
ボックスは 1 行目にとどまり、長いラベルや区切りのないテキストはその隣で折り返されます。
右から左
ボックスは行頭側に配置され、ラベルは読む方向に従います。
| キー | アクション |
|---|---|
| Space | チェックボックスをチェックまたは解除します。 |
| Enter | ネイティブのチェックボックスと同様に、チェックボックスが属するフォームを送信します。ボックスの状態を切り替えることはありません。 |
| Tab | フォーカスを次のチェックボックスに移動します。 |
- チェックボックスとそのテキストを
<label>で囲みます。ラベルがチェックボックスの名前になり、ラベルへのホバーや押下で、ボックス自体にホバーしたときと同じフィードバックがボックスに表示されます。 - グループの用途をスクリーンリーダーが読み上げられるよう、すべての
<CheckboxGroup />にaria-labelまたはaria-labelledbyを付けてください。 - ヒット領域は 16px のボックスの外側まで広がり、タッチスクリーンではさらに大きくなります。
- チェックされるとチェックマークが描画されます。モーションの低減が有効な場合は、線のアニメーションなしで表示されます。
Base UI の checkbox と checkbox group をベースにしています。どちらも、ラップしているプリミティブの props を受け付けます。
| プロパティ | 型 | デフォルト |
|---|---|---|
checked | boolean | – |
defaultChecked | boolean | false |
onCheckedChange | (checked: boolean, details) => void | – |
indeterminateダッシュを表示します。チェック済みでも未チェックでもない状態です。 | boolean | false |
disabled | boolean | false |
readOnlyフォーカスはできますが、値は変更できません。 | boolean | false |
required | boolean | false |
nameチェックされているときにフォームと一緒に送信される値。 | string | – |
valueグループ内でボックスを識別し、フォームが送信する値になります。name、それもなければ「on」にフォールバックします。 | string | – |
uncheckedValueチェックされていないときに送信される値。デフォルトでは何も送信されません。 | string | – |
parentグループの allValues にあるすべての値を制御します。CheckboxGroup の内側でのみ使えます。 | boolean | false |
inputRef | Ref<HTMLInputElement> | – |
nativeButtonrender が <button> の場合は true に設定します。 | boolean | false |
render | ReactElement | (props, state) => ReactElement | <span> |
| 属性 | 説明 |
|---|---|
data-slot="checkbox" | CSS でボックスを指定します。 |
data-checked | チェックされているときに付与されます。 |
data-unchecked | チェックされていないときに付与されます。 |
data-indeterminate | 不確定状態のときに付与されます。 |
data-disabled | 無効のときに存在します。 |
data-readonly | 読み取り専用のときに付与されます。 |
data-required | 必須のときに付与されます。 |
data-invalid | Base UI の Field 内で無効なときに付与されます。 |
| プロパティ | 型 | デフォルト |
|---|---|---|
valueチェックされているチェックボックスの値。 | string[] | – |
defaultValue | string[] | – |
onValueChange | (value: string[], details) => void | – |
allValuesグループ内のすべての値。親チェックボックスには必須です。 | string[] | – |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| 属性 | 説明 |
|---|---|
data-slot="checkbox-group" | CSSでグループを指定します。 |
data-disabled | グループが無効なときに付与されます。 |
- Calendar単一、範囲、複数選択に対応する日付グリッドです。月のスライド、範囲のプレビュー、タッチしやすいサイズの日付セルを備えています。
- Comboboxチップ、グループ、非同期の結果に対応した、絞り込み可能なセレクトです。入力に合わせてポップアップのサイズが変わります。
- Date picker押すとポップオーバーでカレンダーを開くボタンです。スマートフォンではボトムシートになり、単一の日付も範囲も選べます。
- Fieldコントロールに紐付いたラベル、説明、エラーです。バリデーション状態とフォーム向けのレイアウトを備えています。
- Input3つのサイズ、無効状態と読み取り専用状態、ネイティブのバリデーションスタイル、スマートフォンでズームされない16pxのタッチ用フォントを備えたテキスト入力です。
- Input groupアイコン、テキスト、ボタン、キーボードのヒントを付けられる入力欄です。1つのボーダーとフォーカスリングを共有します。
使用しているブロック
Checkbox の上に構築されるブロック。
- API keysOpenAIやAnthropicのコンソールのような、AIプロダクトのAPIキーのページです。スコープ付きの権限と有効期限を持つキーを作成し、シークレットは一度だけ表示され、コピーで確認でき、取り消しは元に戻せ、その場で名前を変更でき、猶予期間つきでローテーションでき、キーごとの使用量を確認できます。
- MarkdownAIの回答向けに作られたMarkdownです。滑らかにストリーミングされ、入力途中の構文を表示しません。リンクできる見出し、MarkdownやCSVとしてコピーできるテーブル、GitHubのコールアウト、タスクリスト、脚注、画像、インラインの引用、完全なコードブロックに対応します。
- NotificationsAIプロダクトの設定にある通知セクションです。行、列、すべてを切り替えられるチャンネルとイベントのグリッド、次の静音時間をリアルタイムで示す静音時間、メールダイジェスト、デスクトップ、メール、プッシュ、Slackの実際のテスト送信、ブラウザー権限の処理、Slackの接続フローを備えています。どの設定セクションにも組み込めます。
- SecurityAIプロダクト向けのセッションとセキュリティです。行がアニメーションで消えるサインアウトつきのアクティブなデバイス、リアルタイムの強度メーターつきのパスワード変更、本物のQRコードを使う二要素認証の設定、6桁の確認とダウンロードできるリカバリーコード、WebAuthnによるパスキー、入力による確認が必要なアカウント削除を備えています。