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 |
---|---|---|---|
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 | - |
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.. | - |
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. |