Components

Checkbox

The checkbox component is used in forms when a user needs to select multiple values from several options. They may also be used as a way for users to agree to specific terms or opt into a service.

If items are mutually exclusive, use a radio instead.

Import

  • Checkbox: The checkbox component
  • CheckboxGroup: A wrapper that groups checkboxes
import { Checkbox, CheckboxGroup } from '@outfitio/outkit';

Usage

CheckboxGroup

The CheckboxGroup component is used to manage the checked state of its children.

You can also display the checkbox group horizontally by passing the isInline prop.

Disabled checkbox

Invalid checkbox

Indeterminate

Indeterminate checkboxes are a user may need to select or deselect all checkboxes within a nested structure.

Checkbox sizes

Pass the size prop to change the size of the Checkbox. Values can be either sm, md or lg.

Accessibility

  • Screen readers convey the state of the checkbox automatically. The isIndeterminate prop conveys the state of the checkbox using aria-checked="mixed".
  • Use the disabled prop to apply the HTML disabled attribute to the checkbox input. This prevents users from being able to interact with the checkbox, and conveys its inactive state to assistive technologies.
  • In the event there is no visible label for the checkbox - for example, within the context of a table column - use the aria-label prop to provide a label for assistive technologies. Alternatively, use aria-labelledby to point to an alternate label.

Best Practice

  • Checkboxes must work independently from each other. Selecting one checkbox shouldn’t change the selection status of another checkbox in the list, unless the checkbox is used to make a bulk selection of multiple items.
  • When toggling a setting, checkboxes should correspond to the positive or active state of the setting. For example Turn on notifications instead of Turn off notifications.
  • Use sentence case for checkbox labels, where the first word is capitalised and the rest are lowercase, unless the term is a proper noun
  • When within a checkbox group, items should be organised in a logical order, such as alphabetical, numerical, time-based, or another clear system.

Props

Checkbox Props

NameTypeDefaultDescription
idstringThe id assigned to input field
namestringThe name of the input field in a checkbox (Useful for form submission)
valuestring or numberThe value to be used in the checkbox input. This is the value that will be returned on form submission.
variantColorstringThe color of the checkbox when it's checked. This should be one of the color keys in the theme (e.g."green", "red")
defaultIsCheckedbooleanIf true, the checkbox will be initially checked.
isCheckedbooleanIf true, the checkbox will be checked. You'll need to pass onChange to update it's value (since it's now controlled)
isIndeterminatebooleanIf true, the checkbox will be indeterminate. This only affects the icon shown inside checkbox
isFullWidthbooleanIf true, the checkbox should take up the full width of the parent.
sizesm, md, lgmdThe size (width and height) of the checkbox
isDisabledbooleanIf true, the checkbox will be disabled
isInvalidbooleanIf true, the checkbox is marked as invalid. Changes style of unchecked state.
childrenReact.ReactNodeThe children of the checkbox.
onChangefunctionFunction called when the state of the checkbox changes.
onBlurfunctionFunction called when you blur out of the checkbox.
onFocusfunctionFunction called when the checkbox receive focus.
aria-labelstringAn accessible label for the checkbox in event there's no visible label or children passed
aria-labelledbystringId that points to the label for the checkbox in event no children was passed

CheckboxGroup Props

CheckboxGroup composes Box so you can pass all Box props.

NameTypeDefaultDescription
idstringThe id of the checkbox group.
namestringThe name of the checkbox group. This attribute is
valueArray<Checkbox["value"]>The value of the checkbox group
defaultValueArray<Checkbox["value"]>The initial value of the checkbox group
variantColorstringThe color of the checkbox when it's checked. This should be one of the color keys in the theme (e.g."green", "red")
onChange(values: Array<Checkbox["value"]>): voidThe callback fired when any children Checkbox is checked or unchecked
childrenReact.ReactNodeThe content of the checkbox group. Must be the Checkbox component
spacingStyledSystem.MarginProps8pxThe space between each checkbox
sizesm, md, lgmdThe size of the checkbox, it's forwarded to all children checkbox.
isInlinebooleanIf true, the checkboxes will aligned horizontally.