A control that allows the user to toggle between checked and not checked.
Supports indeterminate state.
Full keyboard navigation.
Can be controlled or uncontrolled.
Install the component from your command line.
npm install @radix-ui/react-checkbox
Import all parts and piece them together.
import * as Checkbox from '@radix-ui/react-checkbox';
export default () => (
<Checkbox.Root>
<Checkbox.Indicator />
</Checkbox.Root>
);
Contains all the parts of a checkbox. An input
will also render when used within a form
to ensure events propagate correctly.
Renders when the checkbox is in a checked or indeterminate state. You can style this element directly, or you can use it as a wrapper to put an icon into, or both.
You can set the checkbox to indeterminate
by taking control of its state.
import { DividerHorizontalIcon, CheckIcon } from '@radix-ui/react-icons';
import * as Checkbox from '@radix-ui/react-checkbox';
export default () => {
const [checked, setChecked] = React.useState('indeterminate');
return (
<>
<StyledCheckbox checked={checked} onCheckedChange={setChecked}>
<Checkbox.Indicator>
{checked === 'indeterminate' && <DividerHorizontalIcon />}
{checked === true && <CheckIcon />}
</Checkbox.Indicator>
</StyledCheckbox>
<button
type="button"
onClick={() =>
setChecked((prevIsChecked) =>
prevIsChecked === 'indeterminate' ? false : 'indeterminate'
)
}
>
Toggle indeterminate
</button>
</>
);
};
Adheres to the tri-state Checkbox WAI-ARIA design pattern.