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>Installation
Section titled “Installation”bunx bejamas add toggle-groupnpx bejamas add toggle-grouppnpm dlx bejamas add toggle-groupyarn dlx 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>Examples
Section titled “Examples”Multiple Selection
Section titled “Multiple Selection”---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>Outline Variant
Section titled “Outline Variant”---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>Vertical Orientation
Section titled “Vertical Orientation”---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>Disabled
Section titled “Disabled”---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>API Reference
Section titled “API Reference”Events
Section titled “Events”| Event | Detail | Description |
|---|---|---|
toggle-group:change | { value: string[] } | Fired when the selection changes |
Programmatic Control
Section titled “Programmatic Control”// Set selected values programmaticallyelement.dispatchEvent(new CustomEvent('toggle-group:set', { detail: { value: ['bold', 'italic'] }}));Data Attributes
Section titled “Data Attributes”| Attribute | Element | Description |
|---|---|---|
data-state | toggle-group-item | Current state: on or off |
data-disabled | toggle-group | Present when group is disabled |
data-orientation | toggle-group | Orientation: horizontal or vertical |
data-variant | toggle-group | Visual variant: default or outline |
data-size | toggle-group | Size: sm, default, or lg |