The Button Group component provides an elegant way to group related buttons together with consistent spacing and visual connection. Perfect for navigation, toolbars, and multi-step forms.
Installation
Examples
Default Size
Small Size with Icons
Large Size with Separation
Icon Only
Usage
Basic Usage
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/prismui/button-group"
 
export default function Example() {
  return (
    <ButtonGroup>
      <Button>Previous</Button>
      <Button>Next</Button>
    </ButtonGroup>
  )
}With Icons
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/prismui/button-group"
import { Grid, List } from "lucide-react"
 
export default function Example() {
  return (
    <ButtonGroup size="icon">
      <Button variant="outline">
        <Grid className="h-4 w-4" />
      </Button>
      <Button variant="outline">
        <List className="h-4 w-4" />
      </Button>
    </ButtonGroup>
  )
}Customization
Different Sizes
<ButtonGroup size="sm">
  <Button>Small</Button>
  <Button>Buttons</Button>
</ButtonGroup>Separated Buttons
<ButtonGroup separated>
  <Button variant="outline">With</Button>
  <Button variant="outline">Gaps</Button>
</ButtonGroup>Custom Styling
<ButtonGroup className="shadow-lg">
  <Button className="font-bold">Custom</Button>
  <Button className="font-bold">Styles</Button>
</ButtonGroup>Notes
- Built with class-variance-authority for type-safe variants
- Responsive design with mobile-first approach
- Supports all button variants from Shadcn UI
- Maintains proper focus states and accessibility
- Handles touch devices with appropriate spacing
- Supports vertical stacking on mobile
- TypeScript support with proper types
- Customizable through Tailwind classes
Features
- Multiple size variants
- Optional button separation
- Icon-only mode support
- Responsive layout
- Mobile-friendly design
- Focus management
- Keyboard navigation
- Consistent spacing
Props
| Prop | Type | Description | 
|---|---|---|
| size | "default" | "sm" | "lg" | "icon" | The size of the button group | 
| separated | boolean | Whether to add spacing between buttons | 
| className | string | Additional CSS classes | 
| children | React.ReactNode | The buttons to be grouped |