CheCheckbox
CheCheckbox は、複数の選択肢から任意の項目を選択するためのチェックボックスコンポーネントです。@base-ui/react の Checkbox を利用しています。
variant="box" でカード枠付きスタイル、CheCheckboxGroup でグループ化が可能です。
NoBox(デフォルト)
ラベル付きチェックボックス。サイズは m(デフォルト)と s の 2 種類です。
プレビュー
Size M
Size S
使用例
import { CheCheckbox } from "@sen-corporation/cheese-base";
<CheCheckbox label="利用規約に同意する" />
<CheCheckbox label="小さいサイズ" size="s" />
<CheCheckbox label="エラー" error />
<CheCheckbox label="無効" disabled />
Box
variant="box" でカード枠付きスタイルになります。チェックボックスのサイズは "s" に固定され、size の指定は無視されます。
長文テキスト(LongBox)は labelMaxLines で省略行数を指定できます。
プレビュー
Box
LongBox (Horizontal)
Selected: 2
LongBox (Vertical)
Selected: 2
使用例
import { CheCheckbox, CheCheckboxGroup } from "@sen-corporation/cheese-base";
<CheCheckbox label="ラベル" variant="box" />;
<div className="overflow-x-auto pb-2">
<CheCheckboxGroup
direction="horizontal"
className="w-max flex-nowrap [&>label]:w-[640px]"
>
<CheCheckbox label="短いラベル" value="0" name="opt" variant="box" />
<CheCheckbox
label="ダミーテキストは、デザインの作成時に使用される仮の文章です。"
value="1"
name="opt"
variant="box"
labelMaxLines={3}
/>
</CheCheckboxGroup>
</div>;
Group
CheCheckboxGroup は CheCheckbox をグループ化するレイアウトラッパーです。children に CheCheckbox を並べて使います。direction で縦横のレイアウトを切り替えます。横並び時の各アイテムの最大幅は itemMaxWidth で指定でき、デフォルトは 640px です。
プレビュー
Vertical
Selected: 2
Horizontal
Selected: 2
Box Vertical
Selected: 2
Box Horizontal
Selected: 2
使用例
import { CheCheckbox, CheCheckboxGroup } from "@sen-corporation/cheese-base";
<CheCheckboxGroup>
<CheCheckbox label="オプション 1" value="1" name="option" />
<CheCheckbox label="オプション 2" value="2" name="option" />
</CheCheckboxGroup>
<CheCheckboxGroup direction="horizontal">
<CheCheckbox label="A" value="a" name="h" variant="box" />
<CheCheckbox label="B" value="b" name="h" variant="box" error />
</CheCheckboxGroup>
Props
CheCheckbox
| 属性 | 詳細 | 型 | デフォルト | 必須 |
|---|---|---|---|---|
| label | ラベルテキスト | string | — | No |
| size | チェックボックスのサイズ。variant="box" では常に "s" 固定のため指定不可 | "m" | "s" | "m" | No |
| variant | スタイルバリアント | "default" | "box" | "default" | No |
| error | エラー状態 | boolean | false | No |
| labelMaxLines | ラベルの省略行数 | number | — | No |
| checked | 制御された状態値 | boolean | — | No |
| defaultChecked | 初期状態(非制御時) | boolean | false | No |
| disabled | 無効化 | boolean | false | No |
| onCheckedChange | 状態変更コールバック | (checked: boolean, event: Event) => void | — | No |
CheCheckboxGroup
| 属性 | 詳細 | 型 | デフォルト | 必須 |
|---|---|---|---|---|
| children | CheCheckbox 要素 | React.ReactNode | — | Yes |
| direction | レイアウト方向 | "vertical" | "horizontal" | "vertical" | No |
| itemMaxWidth | 横並び時の各アイテムの最大幅 | number | string | 640 | No |
| allValues | 全チェックボックスの値 | string[] | — | No |
| value | 制御された選択値 | string[] | — | No |
| defaultValue | 初期選択値(非制御時) | string[] | — | No |
| onValueChange | 選択変更コールバック | (value: string[], event) => void | — | No |
| disabled | グループ全体を無効化 | boolean | false | No |
Controlled(インタラクティブデモ)
checked と onCheckedChange を使った制御コンポーネントパターンのデモです。
State: Unchecked
import { useState } from "react";
import { CheCheckbox } from "@sen-corporation/cheese-base";
const Example = () => {
const [checked, setChecked] = useState(false);
return (
<CheCheckbox
label="利用規約に同意する"
checked={checked}
onCheckedChange={setChecked}
/>
);
};