Toggle
A two-state button that can be either on or off.
Kobalte
The Toggle component is built on top of Kobalte Toggle Button, which provides accessible pressed, disabled, and keyboard interaction behavior.
import { BookmarkIcon } from "lucide-solid";import { Toggle } from "~/components/ui/toggle";
export default function ToggleDemo() { return ( <Toggle aria-label="Toggle bookmark" size="sm" variant="outline"> <BookmarkIcon class="group-aria-pressed/toggle:fill-foreground" /> Bookmark </Toggle> );}Installation
Usage
import { Toggle } from "~/components/ui/toggle";<Toggle>Toggle</Toggle>Outline
Use variant="outline" for an outline style.
import { BoldIcon, ItalicIcon } from "lucide-solid";import { Toggle } from "~/components/ui/toggle";
export default function ToggleOutline() { return ( <div class="flex flex-wrap items-center gap-2"> <Toggle variant="outline" aria-label="Toggle italic"> <ItalicIcon /> Italic </Toggle> <Toggle variant="outline" aria-label="Toggle bold"> <BoldIcon /> Bold </Toggle> </div> );}With Text
import { ItalicIcon } from "lucide-solid";import { Toggle } from "~/components/ui/toggle";
export default function ToggleText() { return ( <Toggle aria-label="Toggle italic"> <ItalicIcon /> Italic </Toggle> );}Size
Use the size prop to change the size of the toggle.
import { Toggle } from "~/components/ui/toggle";
export default function ToggleSizes() { return ( <div class="flex flex-wrap items-center gap-2"> <Toggle variant="outline" aria-label="Toggle small" size="sm"> Small </Toggle> <Toggle variant="outline" aria-label="Toggle default" size="default"> Default </Toggle> <Toggle variant="outline" aria-label="Toggle large" size="lg"> Large </Toggle> </div> );}Disabled
Add the disabled prop to prevent interaction.
import { Toggle } from "~/components/ui/toggle";
export default function ToggleDisabled() { return ( <div class="flex flex-wrap items-center gap-2"> <Toggle aria-label="Toggle disabled" disabled> Disabled </Toggle> <Toggle variant="outline" aria-label="Toggle disabled outline" disabled> Disabled </Toggle> </div> );}API Reference
For primitive props and keyboard behavior, see the Kobalte Toggle Button API reference.