1. framework components
  2. switch

Switch

Toggle between two states, such as on/off.

Checked: false

Color

Use the Tailwind data attribute syntax to target the state using data-[state=checked]

List

Use the Label component to create a list layout.



Icons

Add icons to act as state indicators.

Direction

Set the text direction (ltr or rtl) using the dir prop.

Anatomy

Here’s an overview of how the Switch component is structured in code:

svelte
<script lang="ts">
	import { Switch } from '@skeletonlabs/skeleton-svelte';
</script>

<Switch>
	<Switch.Control>
		<Switch.Thumb />
	</Switch.Control>
	<Switch.Label />
	<Switch.HiddenInput />
</Switch>

API Reference

Root

Prop Default Type
ids Partial<{ root: string; hiddenInput: string; control: string; label: string; thumb: string; }> | undefined

The ids of the elements in the switch. Useful for composition.

label string | undefined

Specifies the localized strings that identifies the accessibility elements and their states

disabled boolean | undefined

Whether the switch is disabled.

invalid boolean | undefined

If `true`, the switch is marked as invalid.

required boolean | undefined

If `true`, the switch input is marked as required,

readOnly boolean | undefined

Whether the switch is read-only

onCheckedChange ((details: CheckedChangeDetails) => void) | undefined

Function to call when the switch is clicked.

checked boolean | undefined

The controlled checked state of the switch

defaultChecked boolean | undefined

The initial checked state of the switch when rendered. Use when you don't need to control the checked state of the switch.

name string | undefined

The name of the input field in a switch (Useful for form submission).

form string | undefined

The id of the form that the switch belongs to

value "on" string | number | undefined

The value of switch input. Useful for form submission.

dir "ltr" "ltr" | "rtl" | undefined

The document's text/writing direction.

getRootNode (() => ShadowRoot | Node | Document) | undefined

A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.

element Snippet<[HTMLAttributes<"label">]> | undefined

Render the element yourself

Provider

Prop Default Type
value () => SwitchApi<PropTypes>

element Snippet<[HTMLAttributes<"label">]> | undefined

Render the element yourself

Context

Prop Default Type
children Snippet<[() => SwitchApi<PropTypes>]>

Control

Prop Default Type
element Snippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

Thumb

Prop Default Type
element Snippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

Label

Prop Default Type
element Snippet<[HTMLAttributes<"span">]> | undefined

Render the element yourself

HiddenInput

Prop Default Type
element Snippet<[HTMLAttributes<"input">]> | undefined

Render the element yourself

View page on GitHub