Copy import {
ButtonGroup,
ButtonGroupSeparator,
ButtonGroupText,
} from "@/components/ui/button-group"
Copy < ButtonGroup >
< Button > Button 1 </ Button >
< Button > Button 2 </ Button >
</ ButtonGroup >
Use the following composition to build a ButtonGroup:
Copy ButtonGroup
├── Button or Input
├── ButtonGroupSeparator
└── ButtonGroupText
The ButtonGroup component has the role attribute set to group.
Use Tab to navigate between the buttons in the group.
Use aria-label or aria-labelledby to label the button group.
Copy < ButtonGroup aria-label = "Button group" >
< Button > Button 1 </ Button >
< Button > Button 2 </ Button >
</ ButtonGroup >
Use the ButtonGroup component when you want to group buttons that perform an action.
Use the ToggleGroup component when you want to group buttons that toggle a state.
Set the orientation prop to change the button group layout.
Control the size of buttons using the size prop on individual buttons.
Nest <ButtonGroup> components to create button groups with spacing.
The ButtonGroupSeparator component visually divides buttons within a group.
Buttons with variant outline do not need a separator since they have a border. For other variants, a separator is recommended to improve the visual hierarchy.
Create a split button group by adding two buttons separated by a ButtonGroupSeparator.
Wrap an Input component with buttons.
Wrap an InputGroup component to create complex input layouts.
Create a split button group with a DropdownMenu component.
Pair with a Select component.
Use with a Popover component.
To enable RTL support, see the RTL configuration guide .
The ButtonGroup component is a container that groups related buttons together with consistent styling.
Copy < ButtonGroup >
< Button > Button 1 </ Button >
< Button > Button 2 </ Button >
</ ButtonGroup >
Nest multiple button groups to create complex layouts with spacing. See the nested example for more details.
Copy < ButtonGroup >
< ButtonGroup />
< ButtonGroup />
</ ButtonGroup >
The ButtonGroupSeparator component visually divides buttons within a group.
Copy < ButtonGroup >
< Button > Button 1 </ Button >
< ButtonGroupSeparator />
< Button > Button 2 </ Button >
</ ButtonGroup >
Use this component to display text within a button group.
Copy < ButtonGroup >
< ButtonGroupText > Text </ ButtonGroupText >
< Button > Button </ Button >
</ ButtonGroup >
Use the render prop to render a custom component as the text, for example a label.
Copy import { ButtonGroupText } from "@/components/ui/button-group"
import { Label } from "@/components/ui/label"
export function ButtonGroupTextDemo () {
return (
< ButtonGroup >
< ButtonGroupText render ={ < Label htmlFor = "name" /> } > Text </ ButtonGroupText >
< Input placeholder = "Type something here..." id = "name" />
</ ButtonGroup >
)
}