Toggle Group
Groups multiple toggle controls, allowing users to enable one or multiple options.
<script lang="ts">
import { ToggleGroup } from "bits-ui";
import { TextB, TextItalic, TextStrikethrough } from "$icons/index.js";
let value: string[] | undefined = ["bold"];
</script>
<ToggleGroup.Root
bind:value
type="multiple"
class="flex h-input items-center gap-x-0.5 rounded-card-sm border border-border bg-background-alt px-[4px] py-1 shadow-mini"
>
<ToggleGroup.Item
aria-label="toggle bold"
value="bold"
class="inline-flex size-10 items-center justify-center rounded-9px bg-background-alt transition-all hover:bg-muted active:scale-98 active:bg-dark-10 data-[state=on]:bg-muted data-[state=off]:text-foreground-alt data-[state=on]:text-foreground active:data-[state=on]:bg-dark-10"
>
<TextB class="size-6" />
</ToggleGroup.Item>
<ToggleGroup.Item
aria-label="toggle italic"
value="italic"
class="inline-flex size-10 items-center justify-center rounded-9px bg-background-alt transition-all hover:bg-muted active:scale-98 active:bg-dark-10 data-[state=on]:bg-muted data-[state=off]:text-foreground-alt data-[state=on]:text-foreground active:data-[state=on]:bg-dark-10"
>
<TextItalic class="size-6" />
</ToggleGroup.Item>
<ToggleGroup.Item
aria-label="toggle strikethrough"
value="strikethrough"
class="inline-flex size-10 items-center justify-center rounded-9px bg-background-alt transition-all hover:bg-muted active:scale-98 active:bg-dark-10 data-[state=on]:bg-muted data-[state=off]:text-foreground-alt data-[state=on]:text-foreground active:data-[state=on]:bg-dark-10"
>
<TextStrikethrough class="size-6" />
</ToggleGroup.Item>
</ToggleGroup.Root>
Structure
<script lang="ts">
import { ToggleGroup } from "bits-ui";
</script>
<ToggleGroup.Root>
<ToggleGroup.Item value="bold">bold</ToggleGroup.Item>
<ToggleGroup.Item value="italic">italic</ToggleGroup.Item>
</ToggleGroup.Root>
API Reference
The root component which contains the toggle group items.
Property | Type | Description |
---|---|---|
value | string | string[] | The value of the toggle group. If the type is multiple, this will be an array of strings, otherwise it will be a string. Default:
undefined |
onValueChange | function | A callback function called when the value of the toggle group changes. The type of the value is dependent on the type of the toggle group. Default:
undefined |
disabled | boolean | Whether or not the switch is disabled. Default:
false |
loop | boolean | Whether or not the toggle group should loop when navigating. Default:
true |
orientation | 'horizontal' | 'vertical' | The orientation of the toggle group. Default:
horizontal |
rovingFocus | boolean | Whether or not the toggle group should use roving focus when navigating. Default:
true |
type | 'single' | 'multiple' | The type of toggle group. Default:
single |
asChild | boolean | Whether to use render delegation with this component or not. Default:
false |
el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:
undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-orientation | —— | The orientation of the toggle group. |
data-toggle-group-root | —— | Present on the root element. |
An individual toggle item within the group.
Property | Type | Description |
---|---|---|
value | string | The value of the item. Default:
undefined |
disabled | boolean | Whether or not the switch is disabled. Default:
false |
asChild | boolean | Whether to use render delegation with this component or not. Default:
false |
el | HTMLButtonElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:
undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | Whether the toggle item is in the on or off state. |
data-value | —— | The value of the toggle item. |
data-orientation | —— | The orientation of the toggle group. |
data-disabled | —— | Present when the toggle item is disabled. |
data-toggle-group-item | —— | Present on the item elements. |