npm i @accessible/checkbox
An accessible checkbox component for React. This library allows you to create your own a checkbox with your own styles while maintaining the ability to focus and update a checkbox input with the keyboard.
Check out the example on CodeSandbox
import {Checkbox, Checkmark} from '@accessible/checkbox'
const MyCheckbox = () => (
<label className='my-checkbox'>
<Checkbox name='my-field-name'>
<span className='my-checkbox'>
<Checkmark checkedClass='checked' uncheckedClass='unchecked'>
<span className='checkmark' />
</Checkmark>
</span>
</Checkbox>
Check me!
</label>
)
Creates a visually hidden checkbox input that is focusable and accessible via keyboard navigation.
All props passed to this component are applied to the <input>
. This also creates a context
provider enabling the other components in this library to access the checkbox's state
deep in the tree.
Prop | Type | Default | Required? | Description |
---|---|---|---|---|
checked | boolean |
undefined |
No | Makes the checkbox a controlled component which can no longer be updated with check , uncheck , and toggle controls. |
defaultChecked | boolean |
undefined |
No | Set this to true to make the checkbox checked by default. |
onChange | (checked: boolean) => any |
undefined |
No | Called each time the checked state changes. |
children | React.ReactNode |
undefined |
No | Your custom styled checkbox. |
A convenient component for conditionally adding class names and styles when the component is checked/unchecked.
Prop | Type | Default | Required? | Description |
---|---|---|---|---|
uncheckedClass | string |
undefined |
No | This class name will be applied to the child element when the checkbox is unchecked . |
checkedClass | string |
undefined |
No | This class name will be applied to the child element when the checkbox is checked . |
uncheckedStyle | React.CSSProperties |
undefined |
No | These styles will be applied to the child element when the checkbox is unchecked . |
checkedStyle | React.CSSProperties |
undefined |
No | These styles name will be applied to the child element when the checkbox is checked . |
children | React.ReactNode |
undefined |
Yes | The child you wish to render when the checkbox is checked. |
The child of this component will only render when the <Checkbox>
is in
a checked
state. It must be a child of a <Checkbox>
.
Prop | Type | Default | Required? | Description |
---|---|---|---|---|
children | React.ReactNode |
undefined |
Yes | The child you wish to render when the checkbox is checked. |
The child of this component will only render when the <Checkbox>
is in
an unchecked
state. It must be a child of a <Checkbox>
.
Prop | Type | Default | Required? | Description |
---|---|---|---|---|
children | React.ReactNode |
undefined |
Yes | The child you wish to render when the checkbox is unchecked. |
This component clones its child and adds an onClick
handler to toggle the <Checkbox>
between
checked
and unchecked
states. It must be a child of a <Checkbox>
.
Prop | Type | Default | Required? | Description |
---|---|---|---|---|
children | React.ReactNode |
undefined |
Yes | The child you wish to render when the checkbox is unchecked. |
A React hook that returns the CheckboxContextValue
for the nearest <Checkbox>
parent.
interface CheckboxContextValue {
// Does the checkbox have a `checked` property?
checked: boolean
// Is the checkbox currently focused?
focused: boolean
// Is the checkbox currently disabled?
disabled: boolean
// Checks the checkbox
check: () => void
// Unchecks the checkbox
uncheck: () => void
// Toggles the checkbox `checked` property
toggle: () => void
}
MIT