Component
Button Group
A set of related buttons joined into a single connected control. Ideal for toggleable or segmented options.
Usage
Use button groups for tightly related actions or view-switching (e.g. List / Grid). Avoid grouping more than 5 buttons.
Playground
Preview
Configure
Code
"use client"
import { useState } from "react"
import { ButtonGroup, ButtonGroupItem } from "@/components/ui/button-group"
export function ViewSwitcher() {
const [active, setActive] = useState(0)
return (
<ButtonGroup variant="outline">
<ButtonGroupItem variant="outline" active={active === 0} onClick={() => setActive(0)}>Day</ButtonGroupItem>
<ButtonGroupItem variant="outline" active={active === 1} onClick={() => setActive(1)}>Week</ButtonGroupItem>
<ButtonGroupItem variant="outline" active={active === 2} onClick={() => setActive(2)}>Month</ButtonGroupItem>
</ButtonGroup>
)
}Do
- Use for 2–5 closely related options
- Visually distinguish the active/selected button
- Keep button labels short, 1–2 words each
Don't
- Don't use more than 5 buttons in a group, use a Select instead
- Don't mix icon-only and label buttons in the same group