Switch Primitive
Switch is a Starwind Runtime primitive in the single-boolean-control contract family. Astro and React share one semantic component API. React coordinates reactive state through controlled and default props plus callbacks. Astro renders initial state and coordinates later changes through DOM events and Runtime methods. Raw HTML uses Runtime attributes, DOM events, and imperative methods.
Anatomy
Use the Astro primitive adapter to render Switch anatomy with the Runtime wiring included.
---import { Switch } from "@starwind-ui/astro/switch";---
<Switch.Root> <Switch.Thumb /></Switch.Root>Use the React primitive adapter when Switch state participates in React rendering.
import { Switch } from "@starwind-ui/react/switch";
export function Example() { return ( <Switch.Root> <Switch.Thumb /> </Switch.Root> );}Render the Switch data-sw-* contract yourself, then initialize createSwitch.
<span data-sw-switch role="switch"> <span data-sw-switch-thumb></span> <input data-sw-switch-input type="checkbox" aria-hidden="true" tabindex="-1" /></span>
<script type="module"> import { createSwitch } from "@starwind-ui/runtime/switch";
const root = document.querySelector("[data-sw-switch]"); if (root) { createSwitch(root); }</script>API Reference
Root
The main element that owns the Switch Runtime instance.
- Default element
- span
- Discovery hook
- data-sw-switch
- Role
- switch
Props
checked boolean -
- Description
- Controls whether Switch is checked.
- Kind
- control
- Targets
- -
- Full type
- boolean
- React
Use checked for controlled state and defaultChecked for default state, and onCheckedChange for change proposals.
checkeddefaultCheckedonCheckedChange
- Astro
Use checked or defaultChecked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
checkeddefaultCheckedstarwind:checked-changesetChecked
- Runtime / HTML
Use data-default-checked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
data-default-checkedstarwind:checked-changesetChecked
defaultChecked boolean false
- Description
- Sets whether Switch starts checked for uncontrolled usage.
- Kind
- control
- Targets
- -
- Full type
- boolean
- React
Use checked for controlled state and defaultChecked for default state, and onCheckedChange for change proposals.
checkeddefaultCheckedonCheckedChange
- Astro
Use checked or defaultChecked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
checkeddefaultCheckedstarwind:checked-changesetChecked
- Runtime / HTML
Use data-default-checked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
data-default-checkedstarwind:checked-changesetChecked
disabled boolean false
- Description
- Disables the Root part.
- Kind
- option
- Targets
- -
- Full type
- boolean
form string -
- Description
- Associates the control with a form element.
- Kind
- option
- Targets
- -
- Full type
- string
id string -
- Description
- Sets the id used by the associated native control.
- Kind
- option
- Targets
- -
- Full type
- string
name string -
- Description
- Sets the submitted form field name.
- Kind
- option
- Targets
- -
- Full type
- string
nativeButton boolean false
- Description
- Renders the control as a native button element.
- Kind
- rendering
- Targets
- root
- Full type
- boolean
readOnly boolean false
- Description
- Marks the control as read-only.
- Kind
- option
- Targets
- -
- Full type
- boolean
required boolean false
- Description
- Marks the form control as required.
- Kind
- option
- Targets
- -
- Full type
- boolean
uncheckedValue string -
- Description
- Sets the value submitted when the checkbox is unchecked.
- Kind
- option
- Targets
- -
- Full type
- string
value string -
- Description
- Controls the current Switch value.
- Kind
- option
- Targets
- -
- Full type
- string
onCheckedChange (checked: boolean, details: SwitchCheckedChangeDetails) => void -
- Description
- Runs when the Switch checked state changes.
- Kind
- callback
- Targets
- -
- Full type
- (checked: boolean, details: SwitchCheckedChangeDetails) => void
- React
Use checked for controlled state and defaultChecked for default state, and onCheckedChange for change proposals.
checkeddefaultCheckedonCheckedChange
- Astro
Use checked or defaultChecked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
checkeddefaultCheckedstarwind:checked-changesetChecked
- Runtime / HTML
Use data-default-checked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
data-default-checkedstarwind:checked-changesetChecked
Events
checkedChange onCheckedChange checked: boolean
- Description
- Fires when the checked state changes for Switch.
- DOM event
- starwind:checked-change
- Details type
- SwitchCheckedChangeDetails
- Timing
- before-state-commit
- Cancelable
- Yes
- Cancellation sequence
- Check internal eligibility and intent.
- Create one details object for the proposal.
- Call the Runtime callback with the details object when the controller exposes one.
- Dispatch the cancelable DOM event with the same details object, including when the callback canceled it.
- Read details.isCanceled, including cancellation caused by preventDefault().
- Apply the accepted state.
- Notify Runtime subscribers and other accepted-only observers.
State
checked boolean checked / defaultChecked
- Description
- Tracks whether Switch is checked.
- Initial attribute
- data-default-checked
- Runtime getter
- getChecked
- Runtime setter
- setChecked
- React
Use checked for controlled state and defaultChecked for default state, and onCheckedChange for change proposals.
checkeddefaultCheckedonCheckedChange
- Astro
Use checked or defaultChecked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
checkeddefaultCheckedstarwind:checked-changesetChecked
- Runtime / HTML
Use data-default-checked for initial state, listen for starwind:checked-change, and call setChecked for later updates.
data-default-checkedstarwind:checked-changesetChecked
Data Attributes
Runtime hooks
State
Metadata
Thumb
The draggable thumb for Switch.
- Default element
- span
- Discovery hook
- data-sw-switch-thumb
- Role
- -
Data Attributes
Runtime hooks
Input
The native input synchronized by Switch.
- Default element
- input
- Discovery hook
- data-sw-switch-input
- Role
- -
Data Attributes
Runtime hooks
Unchecked Input
The hidden native input used when Switch submits an unchecked value.
- Default element
- input
- Discovery hook
- data-sw-switch-unchecked-input
- Role
- -
Data Attributes
Runtime hooks
Runtime API
- Factory
createSwitch- Import
@starwind-ui/runtime/switch- Root hook
- root
data-sw-switch - Option props
- checked, defaultChecked, disabled, form, id, name, readOnly, required, uncheckedValue, value
Runtime Setters
Form Participation
| Fact | Value |
|---|---|
| Form props | form, id, name, required, uncheckedValue, value |
| Hidden input | input (checkbox) |
| Field integration | Yes |
Related Styled Components
Changelog
View version history v1.0.0 3 releases
v1.0.0
- Promoted this Primitive's vendoring version to the stable 1.0.0 baseline. Its existing API and Runtime behavior carry forward from the previous release.
v0.1.1
- Marked generated React Primitive files as client modules so vendored installs preserve client boundaries in React server frameworks.
- Kept generated React state-change callbacks and DOM events cancelable until the Runtime accepts the proposed state, then synchronized rendered state.
- Preserved native form association when React reconciles controlled checked state.
v0.1.0
- Introduced checked state, form participation, and checked-change events.