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

CheCheckboxGroupCheCheckbox をグループ化するレイアウトラッパーです。childrenCheCheckbox を並べて使います。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ラベルテキストstringNo
sizeチェックボックスのサイズ。variant="box" では常に "s" 固定のため指定不可"m" | "s""m"No
variantスタイルバリアント"default" | "box""default"No
errorエラー状態booleanfalseNo
labelMaxLinesラベルの省略行数numberNo
checked制御された状態値booleanNo
defaultChecked初期状態(非制御時)booleanfalseNo
disabled無効化booleanfalseNo
onCheckedChange状態変更コールバック(checked: boolean, event: Event) => voidNo

CheCheckboxGroup

属性詳細デフォルト必須
childrenCheCheckbox 要素React.ReactNodeYes
directionレイアウト方向"vertical" | "horizontal""vertical"No
itemMaxWidth横並び時の各アイテムの最大幅number | string640No
allValues全チェックボックスの値string[]No
value制御された選択値string[]No
defaultValue初期選択値(非制御時)string[]No
onValueChange選択変更コールバック(value: string[], event) => voidNo
disabledグループ全体を無効化booleanfalseNo

Controlled(インタラクティブデモ)

checkedonCheckedChange を使った制御コンポーネントパターンのデモです。

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}
    />
  );
};