Toggle Group
A set of toggle buttons where one or more items can be pressed at a time.
export default function ToggleGroupHero() { return ( <div className="flex flex-col items-center gap-3"> <ToggleGroup> <ToggleGroupItem value="left" aria-label="Align left"> <TextAlignLeftIcon /> </ToggleGroupItem> <ToggleGroupItem value="center" aria-label="Align center"> <TextAlignCenterIcon /> </ToggleGroupItem> <ToggleGroupItem value="right" aria-label="Align right"> <TextAlignRightIcon /> </ToggleGroupItem> </ToggleGroup> <ToggleGroup itemVariant="outline" attached> <ToggleGroupItem value="left" aria-label="Align left"> <TextAlignLeftIcon /> </ToggleGroupItem> <ToggleGroupItem value="center" aria-label="Align center"> <TextAlignCenterIcon /> </ToggleGroupItem> <ToggleGroupItem value="right" aria-label="Align right"> <TextAlignRightIcon /> </ToggleGroupItem> </ToggleGroup> </div> ); }
Installation
pnpm dlx shadcn@latest add "https://ora-ui.com/r/toggle-group.json"
Usage
import { ToggleGroup, ToggleGroupItem } from '@/registry/ui/toggle-group';
<ToggleGroup>
<ToggleGroupItem value="a">A</ToggleGroupItem>
<ToggleGroupItem value="b">B</ToggleGroupItem>
<ToggleGroupItem value="c">C</ToggleGroupItem>
</ToggleGroup>;Examples
Variants
The variant prop controls the visual style of each item.
export function ToggleGroupSoft() { return ( <ToggleGroup> <ToggleGroupItem value="left" aria-label="Align left"> <TextAlignLeftIcon /> </ToggleGroupItem> <ToggleGroupItem value="center" aria-label="Align center"> <TextAlignCenterIcon /> </ToggleGroupItem> <ToggleGroupItem value="right" aria-label="Align right"> <TextAlignRightIcon /> </ToggleGroupItem> </ToggleGroup> ); }
Connected
Set spacing={0} with variant="outline" to render items as a single connected control with shared borders.
export default function ToggleGroupConnected() { return ( <ToggleGroup itemVariant="outline" attached> <ToggleGroupItem value="left" aria-label="Align left"> <TextAlignLeftIcon /> </ToggleGroupItem> <ToggleGroupItem value="center" aria-label="Align center"> <TextAlignCenterIcon /> </ToggleGroupItem> <ToggleGroupItem value="right" aria-label="Align right"> <TextAlignRightIcon /> </ToggleGroupItem> <ToggleGroupItem value="justify" aria-label="Align justify"> <TextAlignJustifyIcon /> </ToggleGroupItem> </ToggleGroup> ); }
Vertical
Set orientation="vertical" to stack items in a column.
export default function ToggleGroupVertical() { return ( <ToggleGroup orientation="vertical" itemVariant="outline" attached> <ToggleGroupItem value="bold" aria-label="Bold"> <FontBoldIcon /> </ToggleGroupItem> <ToggleGroupItem value="italic" aria-label="Italic"> <FontItalicIcon /> </ToggleGroupItem> <ToggleGroupItem value="underline" aria-label="Underline"> <UnderlineIcon /> </ToggleGroupItem> </ToggleGroup> ); }
API Reference
ToggleGroup
| Prop | Type | Default |
|---|---|---|
variant | "soft" | "outline" | "solid" | "soft" |
size | "sm" | "md" | "lg" | "md" |
spacing | number | 0 |
orientation | "horizontal" | "vertical" | "horizontal" |
className | string | — |
ToggleGroupItem
Inherits variant and size from the parent ToggleGroup context. Individual items can override either prop directly.
All other props are forwarded to the underlying Base UI Toggle primitive.