Checkbox
The Checkbox component is used in forms when a user needs to select multiple
values from several options.
Native HTML checkboxes are 100% accessible by default, so we used a very common CSS technique to style the checkboxes.
Import#
import { Checkbox, CheckboxGroup } from "@chakra-ui/react"
Usage#
Basic usage of Checkbox.
Disabled Checkbox#
Checkbox with custom color#
You can override the color scheme of the Checkbox to any color key specified
in theme.colors.
Checkbox sizes#
Pass the size prop to change the size of the Checkbox. Values can be either
sm, md or lg.
Invalid Checkbox#
Changing the spacing#
We added the spacing prop to customize the spacing between the Checkbox and
label text.
<Checkbox spacing="1rem">Option</Checkbox>
Changing the icon color and size#
You can customize the color and size of the check icon by passing the
iconColor and iconSize prop.
<Checkbox iconColor="blue.400" iconSize="1rem">Option</Checkbox>
Indeterminate#
Icon#
CheckboxGroup#
Chakra exports a CheckboxGroup component to help manage the checked state of
its children Checkbox components and conveniently pass a few shared style
props to each. See the props table at the bottom of this page for a list of the
shared styling props.
Hooks#
The useCheckbox hook is exported with state and focus management logic for use
in creating tailor-made checkbox component for your application.
The useCheckboxGroup hook is exported with state management logic for use in
creating tailor-made checkbox group component for your application.
Props#
Checkbox Props#
| Name | Type | Description | Default |
|---|---|---|---|
| aria-describedby | string | - | |
| aria-invalid | true | - | |
| aria-label | string | Defines the string that labels the checkbox element. | - |
| aria-labelledby | string | Refers to the `id` of the element that labels the checkbox element. | - |
| colorScheme | "blue" | "cyan" | "gray" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "whiteAlpha" | "blackAlpha" | "linkedin" | "facebook" | "messenger" | "whatsapp" | "twitter" | "telegram" | "blue" | |
| defaultIsChecked | boolean | If `true`, the checkbox will be initially checked. @deprecated Please use the `defaultChecked` prop, which mirrors default React checkbox behavior. | - |
| icon | React.ReactElement | The checked icon to use | CheckboxIcon |
| iconColor | string | The color of the checkbox icon when checked or indeterminate | - |
| iconSize | string | number | The size of the checkbox icon when checked or indeterminate | - |
| id | string | id assigned to input | - |
| isChecked | boolean | If `true`, the checkbox will be checked. You'll need to pass `onChange` to update its value (since it is now controlled) | - |
| isDisabled | boolean | If `true`, the checkbox will be disabled | - |
| isFocusable | boolean | If `true` and `isDisabled` is passed, the checkbox will remain tabbable but not interactive | - |
| isIndeterminate | boolean | If `true`, the checkbox will be indeterminate. This only affects the icon shown inside checkbox and does not modify the isChecked property. | - |
| isInvalid | boolean | If `true`, the checkbox is marked as invalid. Changes style of unchecked state. | - |
| isReadOnly | boolean | If `true`, the checkbox will be readonly | - |
| isRequired | boolean | If `true`, the checkbox input is marked as required, and `required` attribute will be added | - |
| name | string | The name of the input field in a checkbox (Useful for form submission). | - |
| onChange | ((event: ChangeEvent<HTMLInputElement>) => void) | The callback invoked when the checked state of the `Checkbox` changes.. | - |
| onFocus | ((event: FocusEvent<HTMLInputElement>) => void) | The callback invoked when the checkbox is focused | - |
| size | "sm" | "md" | "lg" | "md" | |
| spacing | SystemProps["marginLeft"] | The spacing between the checkbox and its label text | 0.5rem |
| value | string | number | The value to be used in the checkbox input. This is the value that will be returned on form submission. | - |
| variant | string | Variants for Checkbox are not implemented in the default theme. You can extend the theme to implement them. | - |
CheckboxGroup Props#
| Name | Type | Description | Default |
|---|---|---|---|
| colorScheme | "blue" | "cyan" | "gray" | "green" | "orange" | "pink" | "purple" | "red" | "teal" | "yellow" | "whiteAlpha" | "blackAlpha" | "linkedin" | "facebook" | "messenger" | "whatsapp" | "twitter" | "telegram" | Color Schemes for CheckboxGroup are not implemented in the default theme. You can extend the theme to implement them. | - |
| defaultValue | ReactText[] | The initial value of the checkbox group | - |
| isNative | boolean | If `true`, input elements will receive `checked` attribute instead of `isChecked`. This assumes, you're using native radio inputs | - |
| onChange | ((value: ReactText[]) => void) | The callback fired when any children Checkbox is checked or unchecked | - |
| size | "sm" | "md" | "lg" | - | |
| value | ReactText[] | The value of the checkbox group | - |
| variant | string | Variants for CheckboxGroup are not implemented in the default theme. You can extend the theme to implement them. | - |
Shared Style Props#
The following style props can be set on CheckboxGroup and they will be
forwarded to all children Checkbox components.
| Name | Type | Default | Description |
|---|---|---|---|
| colorScheme | string | The color of the checkbox when it is checked. This should be one of the color keys in the theme (e.g."green", "red"). | |
| children | React.ReactNode | The content of the checkbox group. | |
| size | sm, md, lg | md | The size of the checkbox. |
| variant | string | The variant of the checkbox. |