The ToggleGroup component provides a set of toggle buttons that can work in single or multiple selection mode.
Installation
import { ToggleGroup, ToggleGroupItem } from "@craftdotui/baseui/components/toggle-group";
<ToggleGroup>
<ToggleGroupItem value="left">Left</ToggleGroupItem>
<ToggleGroupItem value="center">Center</ToggleGroupItem>
<ToggleGroupItem value="right">Right</ToggleGroupItem>
</ToggleGroup>
Components
ToggleGroup
Controlled selected value(s).
Default selected value(s).
Callback when selection changes.
Selection type. Options: single, multiple
orientation
string
default:"horizontal"
Orientation. Options: horizontal, vertical
Visual variant. Options: default, outline
Size for all items. Options: sm, md, lg, icon
ToggleGroupItem
Examples
Text Alignment
import { AlignLeft, AlignCenter, AlignRight } from "lucide-react";
<ToggleGroup type="single">
<ToggleGroupItem value="left" size="icon">
<AlignLeft />
</ToggleGroupItem>
<ToggleGroupItem value="center" size="icon">
<AlignCenter />
</ToggleGroupItem>
<ToggleGroupItem value="right" size="icon">
<AlignRight />
</ToggleGroupItem>
</ToggleGroup>
Text Formatting (Multiple)
import { Bold, Italic, Underline } from "lucide-react";
<ToggleGroup type="multiple">
<ToggleGroupItem value="bold" size="icon">
<Bold />
</ToggleGroupItem>
<ToggleGroupItem value="italic" size="icon">
<Italic />
</ToggleGroupItem>
<ToggleGroupItem value="underline" size="icon">
<Underline />
</ToggleGroupItem>
</ToggleGroup>
Outline Variant
<ToggleGroup variant="outline">
<ToggleGroupItem value="option1">Option 1</ToggleGroupItem>
<ToggleGroupItem value="option2">Option 2</ToggleGroupItem>
<ToggleGroupItem value="option3">Option 3</ToggleGroupItem>
</ToggleGroup>
Vertical Orientation
<ToggleGroup orientation="vertical">
<ToggleGroupItem value="option1">Option 1</ToggleGroupItem>
<ToggleGroupItem value="option2">Option 2</ToggleGroupItem>
</ToggleGroup>
Controlled
const [value, setValue] = useState('center');
<ToggleGroup value={value} onValueChange={setValue}>
<ToggleGroupItem value="left">Left</ToggleGroupItem>
<ToggleGroupItem value="center">Center</ToggleGroupItem>
<ToggleGroupItem value="right">Right</ToggleGroupItem>
</ToggleGroup>
Accessibility
- Built on @base-ui/react for accessibility
- Keyboard navigation (Arrow keys)
- Proper ARIA roles and attributes
- Focus management
- Single or multiple selection modes