A container for grouping related icon buttons with shared background and consistent styling. Perfect for toolbars and action bars.
size="small"(no size prop)size="large"Image, GIF, and emoji picker buttons
{ tooltip: "enabled" }Move up, move down, delete buttons
{ conditional: true }Rich text editor toolbar
{ active: "boolean" }Paragraph alignment options
{ size: "small" }Visual dividers between button groups
{ withSeparator: true }Buttons with disabled prop
{ disabled: true }Common action buttons
{ size: "default" }Using iconUrl for custom SVG icons
{ iconUrl: "string" }Compose toolbar layout
{ layout: "flex" }Disable tooltips for specific items
{ disableTooltip: true }Change tooltip placement
{ tooltipSide: ""top"" }Some buttons active, others not
{ active: "boolean[]" }import { ButtonGroup, ButtonGroupItem } from "@/components/ui/button-group";
import { Image, Film, Smile } from "lucide-react";
// Basic usage
<ButtonGroup>
<ButtonGroupItem icon={<Image />} tooltip="Add image" />
<ButtonGroupItem icon={<Film />} tooltip="Add video" />
<ButtonGroupItem icon={<Smile />} tooltip="Add emoji" />
</ButtonGroup>
// With custom SVG icons (mask)
<ButtonGroup>
<ButtonGroupItem iconUrl="/icons/image.svg" tooltip="Add image" />
<ButtonGroupItem iconUrl="/icons/gif.svg" tooltip="Add GIF" />
</ButtonGroup>
// With active state
<ButtonGroup>
<ButtonGroupItem icon={<Bold />} tooltip="Bold" active />
<ButtonGroupItem icon={<Italic />} tooltip="Italic" />
</ButtonGroup>
// Different sizes
<ButtonGroup size="small">...</ButtonGroup>
<ButtonGroup size="default">...</ButtonGroup>
<ButtonGroup size="large">...</ButtonGroup>