8.0k New

Toggle

A two-state button that can be either on or off.

Docs API Reference

Epicenter

Local-first, open source apps

Special Sponsor
<script lang="ts">
	import BookmarkIcon from "@lucide/svelte/icons/bookmark";
	import { Toggle } from "$lib/components/ui/toggle/index.js";
</script>
 
<Toggle aria-label="Toggle bookmark" size="sm" variant="outline">
	<BookmarkIcon class="group-aria-pressed/toggle:fill-foreground" />
	Bookmark
</Toggle>

Installation

pnpm dlx shadcn-svelte@latest add toggle

Usage

<script lang="ts">
  import { Toggle } from "$lib/components/ui/toggle/index.js";
</script>
<Toggle>Toggle</Toggle>

Outline

Use variant="outline" for an outline style.

<script lang="ts">
	import BoldIcon from "@lucide/svelte/icons/bold";
	import ItalicIcon from "@lucide/svelte/icons/italic";
	import { Toggle } from "$lib/components/ui/toggle/index.js";
</script>
 
<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

<script lang="ts">
	import ItalicIcon from "@lucide/svelte/icons/italic";
	import { Toggle } from "$lib/components/ui/toggle/index.js";
</script>
 
<Toggle aria-label="Toggle italic">
	<ItalicIcon />
	Italic
</Toggle>

Size

Use the size prop to change the size of the toggle.

<script lang="ts">
	import { Toggle } from "$lib/components/ui/toggle/index.js";
</script>
 
<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

<script lang="ts">
	import { Toggle } from "$lib/components/ui/toggle/index.js";
</script>
 
<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>