Switch
Binary toggle styled as a slider.
Also known as:
- Slide toggle
- Toggle switch
- ToggleSwitch
- Toggle Button
- Binary Switch
- On/Off Switch
- State Toggle
Overview
Purpose
The Switch component binary toggle styled as a slider.within our design system. It follows our primitive layer principles, ensuring consistency and reusability across applications.
When to Use
- Use when you need collecting user input
- Appropriate for inputs contexts
- Follows primitive component patterns
When Not to Use
- Avoid when simpler alternatives exist
- Don't use for display-only content
- Consider alternatives for edge cases
Live Example
Anatomy
Understanding the structure of the Switch component helps ensure proper implementation and customization.
| Property | Description | Type |
|---|---|---|
| root | Slot rendered into [data-slot="switch"]. | Root |
| field | Slot rendered into [data-slot="switch-field"]. | Slot |
| switchPrimitive | Switch primitive region of the component. | Part |
| input | Input region of the component. | Part |
| track | Track region of the component. | Part |
| thumb | Thumb region of the component. | Part |
| switchField | Switch field region of the component. | Part |
| labelStart | Label start region of the component. | Part |
| labelWrapper | Label wrapper region of the component. | Part |
| label | Label region of the component. | Part |
| description | Description region of the component. | Part |
| switchGroup | Switch group region of the component. | Part |
Variants & States
API Reference
Props
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
size | SwitchSize | No | 'md' | — |
checked | boolean | No | {isControlled ? checked : undefined | — |
defaultChecked | boolean | No | {!isControlled ? defaultChecked : undefined | — |
disabled | boolean | No | false | — |
onChange | (event: React.ChangeEvent<HTMLInputElement>) => void | No | {onChange | — |
className | string | No | '' | — |
id | string | No | providedId || generatedId | — |
children | React.ReactNode | No | == 'string' ? children : undefined) | — |
Accessibility
Standards Compliance
This component follows WCAG 2.1 AA guidelines and includes proper ARIA attributes, keyboard navigation, and screen reader support.
Common Pitfalls
- Misused as yes/no
- unclear semantics.
Accessibility Checklist
- ○ Keyboard navigation support
- ○ Screen reader compatibility
- ○ Color contrast compliance
- ○ Focus management
- ○ ARIA attributes
- ○ Reduced motion support
Usage Guidelines
✓ Do
- Use consistent spacing and sizing
- Follow established patterns
- Provide clear labels and descriptions
- Test with assistive technologies
✗ Don't
- Override core functionality
- Use without proper context
- Ignore accessibility requirements
- Modify without design system approval
Examples
Advanced Usage
Complex patterns including composition, state management, and real-world scenarios.
Development Tools
Use these tools to analyze the component's performance, design tokens, and accessibility during development.
Contribute
Help us improve the Switch component documentation. Found an issue or have suggestions?