ToggleGroup
ToggleGroupは、複数のToggleをグループ化してオン/オフを管理するコンポーネントです。 単一選択または複数選択モードをサポートします。
Playground
<ToggleGroup type="single" variant="outline" defaultValue="grid">
<ToggleGroupItem value="grid" aria-label="Grid view">
<LayoutGrid />
</ToggleGroupItem>
<ToggleGroupItem value="list" aria-label="List view">
<List />
</ToggleGroupItem>
</ToggleGroup>Types
Variants
Sizes
Icon Only
xssmmddefaultlg| Size | 高さ | 横パディング | アイコン | プレビュー |
|---|---|---|---|---|
xs | 28px | 10px | 14px | |
sm | 32px | 12px | 14px | |
md | 36px | 14px | 16px | |
default | 40px | 16px | 16px | |
lg | 48px | 24px | 16px |
Icon + Text
xssmmddefaultlg| Size | 高さ | 横パディング | Gap | アイコン | フォント | プレビュー |
|---|---|---|---|---|---|---|
xs | 28px | 10px | 4px | 14px | 12px | |
sm | 32px | 12px | 8px | 14px | 13px | |
md | 36px | 14px | 8px | 16px | 14px | |
default | 40px | 16px | 8px | 16px | 14px | |
lg | 48px | 24px | 8px | 16px | 16px |
Features
Use Cases
Finder, Dropbox, ECサイトの商品一覧
Figma, Framer, Flexbox方向切替
Gmail, Notion, タスク管理アプリ
States
Default
通常States。選択されたアイテムはハイライト表示。
Disabled
全アイテムが無効化されたStates。
個別 Disabled
特定のアイテムのみ無効化。
Multiple 選択
複数のアイテムを同時に選択可能。
Orientation
Horizontal (デフォルト)
Vertical
API
Component Structure
ToggleGroup— Radix ToggleGroup.ItemPropsトグルアイテムProps
ToggleGroup
type必須"single" | "multiple"単一選択 or 複数選択モード
valueundefinedstring | string[]制御モードでの選択値
defaultValueundefinedstring | string[]非制御モードでの初期選択値
onValueChangeundefined(value) => void選択変更時のコールバック
variant"default""default" | "outline"アイテムの視覚スタイル
size"default""xs" | "sm" | "md" | "default" | "lg"アイテムのサイズ (28/32/36/40/48px)
radius"default""none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full"角丸のサイズ (6px)
fontWeight"normal""normal" | "semibold"フォント太さ。全アイテムに適用。個別ItemのfontWeightで上書き可能
orientation"horizontal""horizontal" | "vertical"レイアウト方向
disabledfalseboolean全アイテム無効States
| Name | Type | Default | Description |
|---|---|---|---|
type | "single" | "multiple" | 必須 | 単一選択 or 複数選択モード |
value | string | string[] | undefined | 制御モードでの選択値 |
defaultValue | string | string[] | undefined | 非制御モードでの初期選択値 |
onValueChange | (value) => void | undefined | 選択変更時のコールバック |
variant | "default" | "outline" | "default" | アイテムの視覚スタイル |
size | "xs" | "sm" | "md" | "default" | "lg" | "default" | アイテムのサイズ (28/32/36/40/48px) |
radius | "none" | "sm" | "base" | "default" | "lg" | "xl" | "2xl" | "3xl" | "full" | "default" | 角丸のサイズ (6px) |
fontWeight | "normal" | "semibold" | "normal" | フォント太さ。全アイテムに適用。個別ItemのfontWeightで上書き可能 |
orientation | "horizontal" | "vertical" | "horizontal" | レイアウト方向 |
disabled | boolean | false | 全アイテム無効States |
ToggleGroupItem
value必須stringアイテムの一意な値
disabledfalseboolean個別の無効States
variant親から継承"default" | "outline"個別のスタイル上書き
size親から継承"xs" | "sm" | "md" | "default" | "lg"個別のサイズ上書き
radius親から継承"none" | "sm" | ... | "full"個別の角丸上書き
fontWeight親から継承"normal" | "semibold"個別のフォント太さ上書き
| Name | Type | Default | Description |
|---|---|---|---|
value | string | 必須 | アイテムの一意な値 |
disabled | boolean | false | 個別の無効States |
variant | "default" | "outline" | 親から継承 | 個別のスタイル上書き |
size | "xs" | "sm" | "md" | "default" | "lg" | 親から継承 | 個別のサイズ上書き |
radius | "none" | "sm" | ... | "full" | 親から継承 | 個別の角丸上書き |
fontWeight | "normal" | "semibold" | 親から継承 | 個別のフォント太さ上書き |
Customization
すべてのアイテムはデザインシステムのスペーシングルールに基づいたデフォルト値を使用します。 グループのclassNameで全アイテムを一括カスタマイズできます。
横パディングの変更
className="[&>button]:px-10"Icon Onlyの幅変更
className="[&>button]:aspect-auto [&>button]:px-5"Tip:デフォルト値はコンポーネントの一貫性を保つよう設計されています。UI実装上カスタマイズが必要な場合にご活用ください。
ToggleGroup vs ButtonGroup
似たような見た目ですが、用途と動作が異なります。適切なコンポーネントを選択してください。
用途
ToggleGroup: オン/オフStatesの管理
ButtonGroup: アクションボタンのグループ化
States管理
ToggleGroup: 自動 (Radix管理)
ButtonGroup: 手動 (selected prop)
選択モード
ToggleGroup: single / multiple
ButtonGroup: 手動制御のみ
value管理
ToggleGroup: value / onValueChange
ButtonGroup: なし
ユースケース
ToggleGroup: テキスト配置、フォーマット
ButtonGroup: ページネーション、ツールバー
| 特徴 | ToggleGroup | ButtonGroup |
|---|---|---|
| 用途 | オン/オフStatesの管理 | アクションボタンのグループ化 |
| States管理 | 自動 (Radix管理) | 手動 (selected prop) |
| 選択モード | single / multiple | 手動制御のみ |
| value管理 | value / onValueChange | なし |
| ユースケース | テキスト配置、フォーマット | ページネーション、ツールバー |
使い分けのポイント: Statesを保持したい(選択/非選択)場合は ToggleGroup、 クリック時にアクションを実行したい場合は ButtonGroup を使用します。