Switch
A toggle control enabling users to switch between "on" and "off" states.
	<script lang="ts">
  import { Label, Switch } from "bits-ui";
</script>
 
<div class="flex items-center space-x-3">
  <Switch.Root
    id="dnd"
    class="peer inline-flex h-[36px] min-h-[36px] w-[60px] shrink-0 cursor-pointer items-center rounded-full px-[3px] transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-foreground focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-foreground data-[state=unchecked]:bg-dark-10 data-[state=unchecked]:shadow-mini-inset dark:data-[state=checked]:bg-foreground"
  >
    <Switch.Thumb
      class="pointer-events-none block size-[30px] shrink-0 rounded-full bg-background transition-transform data-[state=checked]:translate-x-6 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:shadow-mini dark:border dark:border-background/30 dark:bg-foreground dark:shadow-popover dark:data-[state=unchecked]:border"
    />
  </Switch.Root>
  <Label.Root for="dnd" class="text-sm font-medium">Do not disturb</Label.Root>
</div>
	
Structure
	<script lang="ts">
	import { Switch } from "bits-ui";
</script>
 
<Switch.Root>
	<Switch.Thumb />
	<Switch.Input />
</Switch.Root>
	
API Reference
The root switch component used to set and manage the state of the switch.
| Property | Type | Description | 
|---|---|---|
| checked | boolean | Whether or not the switch is checked. Default:  false | 
| onCheckedChange | function | A callback function called when the checked state of the switch changes. Default:  —— undefined | 
| disabled | boolean | Whether or not the switch is disabled. Default:  false | 
| includeInput | boolean | Whether or not to include the input element in the switch. This will automatically add a hidden input element to the switch that will be checked when the switch is checked. Default:  false | 
| inputAttrs | object | Attributes to be spread onto the hidden input element. Default:  —— undefined | 
| name | string | The name of the hidden input element, used to identify the input in form submissions. Default:  —— undefined | 
| required | boolean | Whether or not the switch is required to be checked. Default:  false | 
| value | string | The value of the hidden input element to be used in form submissions when the switch is checked. Default:  —— undefined | 
| 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 | The switch's checked state. | 
| data-checked | —— | Present when the switch is checked. | 
| data-disabled | —— | Present when the switch is disabled. | 
| data-switch-root | —— | Present on the root element. | 
The thumb on the switch used to indicate the switch's state.
| Property | Type | Description | 
|---|---|---|
| asChild | boolean | Whether to use render delegation with this component or not. Default:  false | 
| el | HTMLSpanElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default:  —— undefined | 
| Slot Property | Type | Description | 
|---|---|---|
| attrs | object | Additional attributes to apply to the element if using the  | 
| checked | boolean | Whether or not the switch is checked. | 
| Data Attribute | Value | Description | 
|---|---|---|
| data-state | enum | The switch's checked state. | 
| data-checked | —— | Present when the switch is checked. | 
| data-switch-thumb | —— | Present on the thumb element. |