- Accordion
- Alert
- Alert Dialog
- Aspect Ratio
- Attachment
- Avatar
- Badge
- Breadcrumb
- Bubble
- Button
- Button Group
- Calendar
- Card
- Carousel
- Chart
- Checkbox
- Collapsible
- Combobox
- Command
- Context Menu
- Data Table
- Date Picker
- Dialog
- Direction
- Drawer
- Dropdown Menu
- Empty
- Field
- Hover Card
- Input
- Input Group
- Input OTP
- Item
- Kbd
- Label
- Marker
- Message
- Message Scroller
- Native Select
- Pagination
- Popover
- Progress
- Questionnaire
- Radio Group
- Resizable
- Scroll Area
- Select
- Separator
- Sheet
- Sidebar
- Skeleton
- Slider
- Sonner
- Spinner
- Switch
- Table
- Tabs
- Textarea
- Toast
- Toggle
- Toggle Group
- Tooltip
- Typography
"use client"
import * as React from "react"インストール#
pnpm dlx shadcn@latest add button-group
使用法#
import {
ButtonGroup,
ButtonGroupSeparator,
ButtonGroupText,
} from "@/components/ui/button-group"<ButtonGroup>
<Button>Button 1</Button>
<Button>Button 2</Button>
</ButtonGroup>構成#
ButtonGroup を構築するには、次の構成を使用します。
ButtonGroup
├── Button or Input
├── ButtonGroupSeparator
└── ButtonGroupTextアクセシビリティ#
ButtonGroupコンポーネントには、role属性がgroupに設定されています。- Tab を使用して、グループ内のボタン間を移動します。
- ボタングループにラベルを付けるには、
aria-labelまたはaria-labelledbyを使用します。
<ButtonGroup aria-label="Button group">
<Button>Button 1</Button>
<Button>Button 2</Button>
</ButtonGroup>ButtonGroup と ToggleGroup の比較#
- アクションを実行するボタンをグループ化する場合は、
ButtonGroupコンポーネントを使用します。 - 状態を切り替えるボタンをグループ化する場合は、
ToggleGroupコンポーネントを使用します。
方向#
ボタン グループのレイアウトを変更するには、orientation プロップを設定します。
import { MinusIcon, PlusIcon } from "lucide-react"
import { Button } from "@/components/ui/aria/button"サイズ#
個々のボタンの size プロップを使用してボタンのサイズを制御します。
import { PlusIcon } from "lucide-react"
import { Button } from "@/components/ui/aria/button"ネスト#
<ButtonGroup> コンポーネントをネストして、間隔をあけてボタン グループを作成します。
import { AudioLinesIcon, PlusIcon } from "lucide-react"
import { Button } from "@/components/ui/aria/button"区切り#
ButtonGroupSeparator コンポーネントは、グループ内のボタンを視覚的に分割します。
バリアント outline のボタンには境界線があるため、セパレータは必要ありません。他のバリアントでは、視覚的な階層を改善するためにセパレーターを使用することをお勧めします。
import { Button } from "@/components/ui/aria/button"
import {
ButtonGroup,分割#
ButtonGroupSeparator で区切られた 2 つのボタンを追加して、分割ボタン グループを作成します。
import { IconPlus } from "@tabler/icons-react"
import { Button } from "@/components/ui/aria/button"入力#
Input コンポーネントをボタンでラップします。
import { SearchIcon } from "lucide-react"
import { Button } from "@/components/ui/aria/button"入力グループ#
InputGroup コンポーネントをラップして、複雑な入力レイアウトを作成します。
"use client"
import * as React from "react"ドロップダウン メニュー#
DropdownMenu コンポーネントを使用して分割ボタン グループを作成します。
"use client"
import {選択#
Select コンポーネントとペアリングします。
"use client"
import * as React from "react"ポップオーバー#
Popover コンポーネントと一緒に使用します。
import { BotIcon, ChevronDownIcon } from "lucide-react"
import { Button } from "@/components/ui/aria/button"RTL#
shadcn/ui で RTL サポートを有効にするには、RTL 構成ガイド を参照してください。
"use client"
import * as React from "react"API リファレンス#
ButtonGroup#
ButtonGroup コンポーネントは、関連するボタンを一貫したスタイルでグループ化するコンテナーです。
| プロップ | タイプ | デフォルト |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
<ButtonGroup>
<Button>Button 1</Button>
<Button>Button 2</Button>
</ButtonGroup>複数のボタン グループをネストして、間隔のある複雑なレイアウトを作成します。詳細については、nested の例を参照してください。
<ButtonGroup>
<ButtonGroup />
<ButtonGroup />
</ButtonGroup>ButtonGroupSeparator#
ButtonGroupSeparator コンポーネントは、グループ内のボタンを視覚的に分割します。
| プロップ | タイプ | デフォルト |
|---|---|---|
orientation | "horizontal" | "vertical" | "vertical" |
<ButtonGroup>
<Button>Button 1</Button>
<ButtonGroupSeparator />
<Button>Button 2</Button>
</ButtonGroup>ButtonGroupText#
このコンポーネントを使用して、ボタン グループ内のテキストを表示します。
| プロップ | タイプ | デフォルト |
|---|---|---|
render | boolean | false |
<ButtonGroup>
<ButtonGroupText>Text</ButtonGroupText>
<Button>Button</Button>
</ButtonGroup>render プロップを使用して、カスタム コンポーネントをテキスト (ラベルなど) としてレンダリングします。
import { ButtonGroupText } from "@/components/ui/button-group"
import { Label } from "@/components/ui/label"
export function ButtonGroupTextDemo() {
return (
<ButtonGroup>
<ButtonGroupText
render={(props) => (
<Label {...props} htmlFor="name">
Text
</Label>
)}
/>
<Input placeholder="Type something here..." id="name" />
</ButtonGroup>
)
}