チェックボックス・ラジオボタン(Checkbox / Radio)

複数選択・単一選択・トグルスイッチUIを、Mantine・Ant Design・shadcn/ui・Chakra UI・MUI・CSS/カスタム の6種で比較。 グループ化・indeterminate状態・Switchコンポーネントなど、実践的なユースケースをインタラクティブに確認できます。

Mantine Checkbox / Radio / Switch

Mantineが提供するフォーム系コンポーネント群。Checkbox・Radio・Switch すべてが統一されたAPIを持ち、 filled/outline バリアント、indeterminate状態、Checkbox.Group / Radio.Group によるグループ化、 onLabel/offLabel を使ったSwitch のカスタマイズが可能。

Checkbox.GroupRadio.GroupSwitch内蔵indeterminate対応5サイズ
読み込み中...
tsx
'use client';
import { useState } from 'react';
import { MantineProvider, Checkbox, Radio, Stack } from '@mantine/core';
import '@mantine/core/styles.css';

const options = ['React', 'Vue', 'Svelte', 'Angular'];

export function MantineCheckboxRadioDemo() {
  const [checked, setChecked] = useState<string[]>(['React']);
  const [radio, setRadio] = useState('React');

  return (
    <MantineProvider>
      <Stack gap="lg">
        <div>
          <p className="text-sm font-medium mb-2">Checkbox(複数選択)</p>
          <Checkbox.Group value={checked} onChange={setChecked}>
            <Stack gap="xs">
              {options.map((opt) => (
                <Checkbox key={opt} value={opt} label={opt} />
              ))}
            </Stack>
          </Checkbox.Group>
        </div>
        <div>
          <p className="text-sm font-medium mb-2">Radio(単一選択)</p>
          <Radio.Group value={radio} onChange={setRadio}>
            <Stack gap="xs">
              {options.map((opt) => (
                <Radio key={opt} value={opt} label={opt} />
              ))}
            </Stack>
          </Radio.Group>
        </div>
      </Stack>
    </MantineProvider>
  );
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、Mantineを使ったチェックボックス・ラジオボタンを実装してください。
- 使用ライブラリ: @mantine/core の Checkbox・Radio・Switch コンポーネント
- Checkbox.Group で複数選択グループを宣言的に定義
- Radio.Group でラジオボタングループを宣言的に定義
- indeterminate prop でチェックボックスの中間状態を表現
- filled・outline バリアントでスタイルを切り替え
- Switch コンポーネントに onLabel・offLabel でカスタムラベルを追加
- disabled prop でグレーアウト+クリック不可を実現
- xs〜xl の5サイズ(size prop)に対応

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

ライブラリ比較

項目MantineAnt Designshadcn/uiChakra UIMUICSS カスタム
グループ化✅ Checkbox.Group / Radio.Group✅ Checkbox.Group / Radio.Group✅ RadioGroup / 手動でCheckbox管理✅ CheckboxGroup / RadioGroup.Root✅ FormGroup / RadioGroup⚠️ 手動でstateを管理
indeterminate✅ indeterminate prop✅ indeterminate prop✅ checked="indeterminate"✅ checked="indeterminate"✅ indeterminate prop⚠️ 自作(SVGで表現)
ボタン型Radio❌ 標準では非対応✅ Radio.Button⚠️ 手動で自作⚠️ 手動で自作❌ 標準では非対応⚠️ 自作(完全自由)
Switchコンポーネント✅ Switch(onLabel/offLabel)✅ Switch(checkedChildren)✅ Switch✅ Switch.Root✅ Switch内蔵⚠️ 自作(CSS transition)
サイズバリエーション✅ xs〜xl(5段階)✅ small / middle / large⚠️ 自作(Tailwindで調整)✅ sm / md / lg✅ small・medium(2段階)✅ 自由に設定可能
カラー✅ color prop✅ color prop⚠️ Tailwindで調整✅ colorPalette prop✅ color prop(primary・secondary・error等)✅ 完全自由
アクセシビリティ✅ WAI-ARIA準拠✅ WAI-ARIA準拠✅ WAI-ARIA準拠(Radix UI)✅ WAI-ARIA準拠✅ WAI-ARIA準拠⚠️ ネイティブinputを活用
フォームライブラリ連携✅ React Hook Form / Zod✅ Ant Form との統合✅ React Hook Form連携容易✅ React Hook Form 連携可✅ React Hook Form連携容易✅ React Hook Form連携容易
バンドルサイズ⚠️ 中(全体で大)⚠️ 中(全体で大)✅ 使った分だけ⚠️ 中(emotion含む)⚠️ 中(Emotion込み)✅ ゼロ追加

選択のポイント

  • Mantine — Checkbox.Group / Radio.Group による宣言的なグループ化と、filled/outline バリアントで デザインの統一がしやすい。Switch も onLabel/offLabel でリッチに表現できる。 Mantine を採用しているプロジェクトなら一択。
  • Ant Design — Radio.Button によるボタン型ラジオが便利で、カレンダーや切り替えUIによく使われる。 indeterminate を使った「全選択」パターンのサポートが手厚く、管理画面向きの実装が揃っている。
  • MUI — 週670万DLと圧倒的なシェアを誇るMaterial Design準拠のライブラリ。エンタープライズ〜スタートアップまで幅広く採用され、ドキュメントや事例が豊富。Emotion(CSS-in-JS)を使用するため、Tailwind CSS v4との併用時はスタイルをMUI側のpropsで制御することを推奨。
  • shadcn/ui — Radix UI ベースで WAI-ARIA 完全準拠。Checkbox の indeterminate 状態を標準サポート。 コードが手元にあるためデザインの完全カスタマイズが可能。 React Hook Form との相性も良く、フォーム実装に適している。
  • Chakra UI — Checkbox.Root / Control / Label の複合パターンで、 レイアウトの自由度とアクセシビリティを両立。Switch も同様の複合パターンで提供される。 v3 での API 変更が大きいため、ドキュメントは必ず v3 を参照すること。
  • CSS カスタム — デザインシステムに完全準拠したいとき、アニメーションや色を細部まで制御したいときに最適。 ネイティブ input を非表示にしつつアクセシビリティを保持できる。 React Hook Form との連携も素直に書ける。

チェックボックス・ラジオボタンは、複数または単一の選択肢からユーザーが選ぶフォームコンポーネント。チェックボックスは複数選択可、ラジオは排他選択。

アンケートの選択肢・設定のON/OFF・フィルター条件の複数選択・利用規約への同意など、ユーザーの意思決定が必要なフォームで使われる。

主なバリエーション
  • 基本チェックボックス型
  • カスタムスタイル型
  • インジケーター付きラジオ型
  • カードラジオ型(選択肢をカードで表示)
  • 不定状態(indeterminate)対応型