Command Palette
Search for a command to run...
Toggle
A two-state button that can be either on or off.
A toggle component built on top of Radix UI Toggle.
Installation
npx shadcn@latest add toggle
Usage
import { Toggle } from "@/components/ui/toggle"
<Toggle>Bold</Toggle>
Examples
Default
import { Bold } from "lucide-react"import { Toggle } from "@/components/ui/toggle"export default function ToggleDemo() {return ( <Toggle aria-label="Toggle bold"> <Bold className="h-4 w-4" /> </Toggle>)}
Outline
import { Italic } from "lucide-react"import { Toggle } from "@/components/ui/toggle"export default function ToggleOutline() {return ( <Toggle variant="outline" aria-label="Toggle italic"> <Italic className="h-4 w-4" /> </Toggle>)}
With Text
import { Italic } from "lucide-react"import { Toggle } from "@/components/ui/toggle"export default function ToggleWithText() {return ( <Toggle aria-label="Toggle italic"> <Italic /> Italic </Toggle>)}
Disabled
import { Underline } from "lucide-react"import { Toggle } from "@/components/ui/toggle"export default function ToggleDisabled() {return ( <Toggle aria-label="Toggle underline" disabled> <Underline className="h-4 w-4" /> </Toggle>)}
Size
import { Italic } from "lucide-react"import { Toggle } from "@/components/ui/toggle"export default function ToggleSizes() {return ( <div className="flex items-center space-x-2"> <Toggle size="sm" aria-label="Toggle italic"> <Italic className="h-4 w-4" /> </Toggle> <Toggle aria-label="Toggle italic"> <Italic className="h-4 w-4" /> </Toggle> <Toggle size="lg" aria-label="Toggle italic"> <Italic className="h-4 w-4" /> </Toggle> </div>)}
Props
Toggle
Extends React.ComponentProps<typeof TogglePrimitive.Root>
| Prop | Type | Default | Description |
| :-- | :-- | :-- | :-- |
| variant
| "default" \| "outline"
| "default"
| The variant of the toggle. |
| size
| "default" \| "sm" \| "lg"
| "default"
| The size of the toggle. |
| pressed
| boolean
| false
| The controlled state of the toggle. |
| defaultPressed
| boolean
| false
| The default state of the toggle when initially rendered. |
| onPressedChange
| (pressed: boolean) => void
| undefined
| Event handler called when the pressed state of the toggle changes. |
| disabled
| boolean
| false
| When true
, prevents the user from interacting with the toggle. |