Skip to content

Toggle Group

A set of two-state buttons that can be toggled on or off. Supports single or multiple selection.

---
import { AlignCenterIcon, AlignLeftIcon, AlignRightIcon } from '@lucide/astro';
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
---
<ToggleGroup defaultValue="center" variant="outline">
<ToggleGroupItem value="left" aria-label="Align left">
<AlignLeftIcon />
</ToggleGroupItem>
<ToggleGroupItem value="center" aria-label="Align center">
<AlignCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="right" aria-label="Align right">
<AlignRightIcon />
</ToggleGroupItem>
</ToggleGroup>
Terminal window
bunx bejamas add toggle-group
---
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
import { BoldIcon, ItalicIcon, UnderlineIcon } from '@lucide/astro';
---
<ToggleGroup defaultValue="bold" variant="outline">
<ToggleGroupItem value="bold" aria-label="Toggle bold">
<BoldIcon />
</ToggleGroupItem>
<ToggleGroupItem value="italic" aria-label="Toggle italic">
<ItalicIcon />
</ToggleGroupItem>
<ToggleGroupItem value="underline" aria-label="Toggle underline">
<UnderlineIcon />
</ToggleGroupItem>
</ToggleGroup>
---
import { BoldIcon, ItalicIcon, UnderlineIcon } from '@lucide/astro';
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
---
<ToggleGroup multiple defaultValue={["bold", "italic"]} variant="outline">
<ToggleGroupItem value="bold" aria-label="Toggle bold">
<BoldIcon />
</ToggleGroupItem>
<ToggleGroupItem value="italic" aria-label="Toggle italic">
<ItalicIcon />
</ToggleGroupItem>
<ToggleGroupItem value="underline" aria-label="Toggle underline">
<UnderlineIcon />
</ToggleGroupItem>
</ToggleGroup>
---
import { AlignCenterIcon, AlignLeftIcon, AlignRightIcon } from '@lucide/astro';
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
---
<ToggleGroup variant="outline" defaultValue="center">
<ToggleGroupItem value="left" aria-label="Align left">
<AlignLeftIcon />
</ToggleGroupItem>
<ToggleGroupItem value="center" aria-label="Align center">
<AlignCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="right" aria-label="Align right">
<AlignRightIcon />
</ToggleGroupItem>
</ToggleGroup>
---
import { AlignCenterIcon, AlignLeftIcon, AlignRightIcon } from '@lucide/astro';
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
---
<div class="flex flex-col gap-4">
<ToggleGroup size="sm" variant="outline" defaultValue="center">
<ToggleGroupItem value="left" aria-label="Align left">
<AlignLeftIcon />
</ToggleGroupItem>
<ToggleGroupItem value="center" aria-label="Align center">
<AlignCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="right" aria-label="Align right">
<AlignRightIcon />
</ToggleGroupItem>
</ToggleGroup>
<ToggleGroup size="default" variant="outline" defaultValue="center">
<ToggleGroupItem value="left" aria-label="Align left">
<AlignLeftIcon />
</ToggleGroupItem>
<ToggleGroupItem value="center" aria-label="Align center">
<AlignCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="right" aria-label="Align right">
<AlignRightIcon />
</ToggleGroupItem>
</ToggleGroup>
<ToggleGroup size="lg" variant="outline" defaultValue="center">
<ToggleGroupItem value="left" aria-label="Align left">
<AlignLeftIcon />
</ToggleGroupItem>
<ToggleGroupItem value="center" aria-label="Align center">
<AlignCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="right" aria-label="Align right">
<AlignRightIcon />
</ToggleGroupItem>
</ToggleGroup>
</div>
---
import { AlignVerticalJustifyCenterIcon, AlignVerticalJustifyEndIcon, AlignVerticalJustifyStartIcon } from '@lucide/astro';
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
---
<ToggleGroup orientation="vertical" variant="outline" defaultValue="middle">
<ToggleGroupItem value="top" aria-label="Align top">
<AlignVerticalJustifyStartIcon />
</ToggleGroupItem>
<ToggleGroupItem value="middle" aria-label="Align middle">
<AlignVerticalJustifyCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="bottom" aria-label="Align bottom">
<AlignVerticalJustifyEndIcon />
</ToggleGroupItem>
</ToggleGroup>
---
import { AlignCenterIcon, AlignLeftIcon, AlignRightIcon } from '@lucide/astro';
import { ToggleGroup, ToggleGroupItem } from '@bejamas/ui/components/toggle-group';
---
<ToggleGroup disabled variant="outline" defaultValue="center">
<ToggleGroupItem value="left" aria-label="Align left">
<AlignLeftIcon />
</ToggleGroupItem>
<ToggleGroupItem value="center" aria-label="Align center">
<AlignCenterIcon />
</ToggleGroupItem>
<ToggleGroupItem value="right" aria-label="Align right">
<AlignRightIcon />
</ToggleGroupItem>
</ToggleGroup>
EventDetailDescription
toggle-group:change{ value: string[] }Fired when the selection changes
// Set selected values programmatically
element.dispatchEvent(new CustomEvent('toggle-group:set', {
detail: { value: ['bold', 'italic'] }
}));
AttributeElementDescription
data-statetoggle-group-itemCurrent state: on or off
data-disabledtoggle-groupPresent when group is disabled
data-orientationtoggle-groupOrientation: horizontal or vertical
data-varianttoggle-groupVisual variant: default or outline
data-sizetoggle-groupSize: sm, default, or lg