Toggle Group
A set of two-state buttons that can be toggled on or off, where only one button can be pressed at a time.
Usage
import { ToggleGroup } from "@rhinolabs/ui"
import { Bold, Italic, Underline } from "lucide-react"
export default function ToggleGroupDemo() {
return (
<ToggleGroup type="single">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<Bold className="h-4 w-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<Italic className="h-4 w-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="underline" aria-label="Toggle underline">
<Underline className="h-4 w-4" />
</ToggleGroup.Item>
</ToggleGroup>
)
}
Examples
Single Selection
Toggle group with single selection mode.
<ToggleGroup type="single" defaultValue="center">
<ToggleGroup.Item value="left" aria-label="Align left">
<AlignLeft className="h-4 w-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="center" aria-label="Align center">
<AlignCenter className="h-4 w-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="right" aria-label="Align right">
<AlignRight className="h-4 w-4" />
</ToggleGroup.Item>
</ToggleGroup>
Multiple Selection
Toggle group with multiple selection mode.
<ToggleGroup type="multiple">
<ToggleGroup.Item value="bold" aria-label="Toggle bold">
<Bold className="h-4 w-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="italic" aria-label="Toggle italic">
<Italic className="h-4 w-4" />
</ToggleGroup.Item>
<ToggleGroup.Item value="underline" aria-label="Toggle underline">
<Underline className="h-4 w-4" />
</ToggleGroup.Item>
</ToggleGroup>
With Variants
Different toggle group variants and sizes.
<div className="space-y-2">
<ToggleGroup variant="default" type="single">
<ToggleGroup.Item value="a">A</ToggleGroup.Item>
<ToggleGroup.Item value="b">B</ToggleGroup.Item>
<ToggleGroup.Item value="c">C</ToggleGroup.Item>
</ToggleGroup>
<ToggleGroup variant="outline" type="single">
<ToggleGroup.Item value="a">A</ToggleGroup.Item>
<ToggleGroup.Item value="b">B</ToggleGroup.Item>
<ToggleGroup.Item value="c">C</ToggleGroup.Item>
</ToggleGroup>
<ToggleGroup size="lg" type="single">
<ToggleGroup.Item value="a">A</ToggleGroup.Item>
<ToggleGroup.Item value="b">B</ToggleGroup.Item>
<ToggleGroup.Item value="c">C</ToggleGroup.Item>
</ToggleGroup>
</div>
Props
ToggleGroup
Prop | Type | Default | Description |
---|---|---|---|
type | "single" | "multiple" | - | Selection mode |
value | string | string[] | - | Controlled value(s) |
defaultValue | string | string[] | - | Default value(s) |
onValueChange | (value: string | string[]) => void | - | Value change handler |
variant | "default" | "outline" | "default" | Visual style variant |
size | "default" | "sm" | "lg" | "default" | Size of the toggles |
ToggleGroupItem
Prop | Type | Description |
---|---|---|
value | string | The value of the item |
disabled | boolean | Whether the item is disabled |
Design Considerations
- Use clear visual states
- Group related options
- Consider mobile touch targets
- Show active states clearly
- Maintain consistent spacing
Accessibility
- Supports keyboard navigation
- Maintains focus management
- Provides ARIA labels
- Announces selection changes
- Handles disabled states
Last updated on