- Components
- Forms and inputs
- Switch
Switch
Switches allow users to turn an individual option on or off.
Installation
Usage
Use switch for communicating activation (e.g. on/off states), while checkboxes are best used for communicating selection (e.g. multiple table rows). Switches, unlike checkboxes, can't have an error state.
Options
Variant
Use the variant
prop to control the visual style of the switch.
Size
Use the size
prop to control the size of the switch. The default variant is "md"
.
Label
A visual label can be provided using the component children or a hidden label using aria-label
prop.
Disabled
Use the isDisabled
prop to disable the switch.
Uncontrolled
The defaultSelected
prop can be used to set the default state.
Controlled
Use the isSelected
and onChange
props to control the value of the input.
You are on focus mode.
Composition
If you need to customize things further, you can drop down to the composition level.
API Reference
Prop | Type | Default | Description |
---|---|---|---|
size | "sm" | "md" | "lg" | "md" | The size of the switch. |
inputRef | MutableRefObject<HTMLInputElement> | - | A ref for the HTML input element. |
defaultSelected | boolean | - | Whether the element should be selected (uncontrolled). |
isSelected | boolean | - | Whether the element should be selected (controlled). |
value | string | - | The value of the input element, used when submitting an HTML form. |
isDisabled | boolean | - | Whether the input is disabled. |
isReadOnly | boolean | - | Whether the input can be selected but not changed by the user. |
autoFocus | boolean | - | Whether the element should receive focus on render. |
name | string | - | The name of the input element, used when submitting an HTML |
children | ReactNode | (values: CheckboxRenderProps & {defaultChildren: ReactNode | undefined}) => ReactNode | - | The children of the component. A function may be provided to alter the children based on component state. |
Event | Type | Description |
---|---|---|
onChange | (isSelected: boolean) => void | Handler that is called when the Switch's selection state changes. |
onFocus | (e: FocusEvent<Target>) => void | Handler that is called when the Switch receives focus. |
onBlur | (e: FocusEvent<Target>) => void | Handler that is called when the Switch loses focus. |
onFocusChange | (isFocused: boolean) => void | Handler that is called when the Switch's focus status changes. |
onKeyDown | (e: KeyboardEvent) => void | Handler that is called when a key is pressed. |
onKeyUp | (e: KeyboardEvent) => void | Handler that is called when a key is released. |
onHoverStart | (e: HoverEvent) => void | Handler that is called when a hover interaction starts. |
onHoverEnd | (e: HoverEvent) => void | Handler that is called when a hover interaction ends. |
onHoverChange | (isHovering: boolean) => void | Handler that is called when the hover state changes. |
Data attribute | Description |
---|---|
[data-selected] | Whether the switch is selected. |
[data-hovered] | Whether the switch is currently hovered with a mouse. |
[data-pressed] | Whether the switch is currently in a pressed state. |
[data-focused] | Whether the switch is focused, either via a mouse or keyboard. |
[data-focus-visible] | Whether the switch is keyboard focused. |
[data-disabled] | Whether the switch is disabled. |
[data-readonly] | Whether the switch is read only. |
Accessibility
Keyboard interactions
Key | Description |
---|---|
Space Enter | Toggles the component's state. |