CheckboxGroup

A CheckboxGroup allows users to select one or more items from a list of choices.

Email Notification Preferences
Get notified about new features and improvements
Important notifications about your account safety
Receive promotions, offers, and newsletters
 
size 
orientation 
labelPosition 
 
contextualHelp 
isEmphasized 
isDisabled 
import {CheckboxGroup, Checkbox} from '@react-spectrum/s2/CheckboxGroup';

<CheckboxGroup label="Email Notification Preferences">
  <Checkbox
    value="product"
    description="Get notified about new features and improvements">
    Product Updates
  </Checkbox>
  <Checkbox
    value="security"
    description="Important notifications about your account safety">
    Security Alerts
  </Checkbox>
  <Checkbox
    value="marketing"
    description="Receive promotions, offers, and newsletters">
    Marketing Emails
  </Checkbox>
</CheckboxGroup>

Value

Use the value or defaultValue prop to set the selected items, and onChange to handle selection changes.

Favorite sports

Current selection: soccer, baseball

import {CheckboxGroup, Checkbox} from '@react-spectrum/s2/CheckboxGroup';
import {useState} from 'react';

function Example() {
  let [selected, setSelected] = useState(['soccer', 'baseball']);

  return (
    <>
      <CheckboxGroup
        label="Favorite sports"
        value={selected}
        onChange={setSelected}>
        <Checkbox value="soccer">Soccer</Checkbox>
        <Checkbox value="baseball">Baseball</Checkbox>
        <Checkbox value="basketball">Basketball</Checkbox>
      </CheckboxGroup>
      <p>Current selection: {selected.join(', ')}</p>
    </>
  );
}

Forms

Use the name prop to submit the selected checkboxes to the server. Set the isRequired prop on the <CheckboxGroup> to validate the user selects at least one checkbox, or on individual checkboxes. See the Forms guide to learn more.

Sandwich condiments 
Agree to the following
import {CheckboxGroup, Checkbox} from '@react-spectrum/s2/CheckboxGroup';
import {Button} from '@react-spectrum/s2/Button';
import {Form} from '@react-spectrum/s2/Form';
import {style} from '@react-spectrum/s2/style' with {type: 'macro'};

<Form>
  <CheckboxGroup
    label="Sandwich condiments"
    name="condiments"
    isRequired>
    <Checkbox value="lettuce">Lettuce</Checkbox>
    <Checkbox value="tomato">Tomato</Checkbox>
    <Checkbox value="onion">Onion</Checkbox>
    <Checkbox value="sprouts">Sprouts</Checkbox>
  </CheckboxGroup>
  <CheckboxGroup label="Agree to the following" name="terms">
    <Checkbox value="terms" isRequired>Terms and conditions</Checkbox>
    <Checkbox value="privacy" isRequired>Privacy policy</Checkbox>
    <Checkbox value="cookies" isRequired>Cookie policy</Checkbox>
  </CheckboxGroup>
  <Button type="submit" styles={style({marginTop: 8})}>Submit</Button>
</Form>

API

<CheckboxGroup>
  <Checkbox />
</CheckboxGroup>

CheckboxGroup

NameTypeDefault
size'S''M''L''XL'Default: 'M'

The size of the Checkboxes in the CheckboxGroup.

orientationDefault: 'vertical'

The axis the checkboxes should align with.

childrenReactNodeDefault:

The Checkboxes contained within the CheckboxGroup.

isEmphasizedbooleanDefault:

By default, checkboxes are not emphasized (gray). The emphasized (blue) version provides visual prominence.

isDisabledbooleanDefault:

Whether the input is disabled.

isReadOnlybooleanDefault:

Whether the input can be selected but not changed by the user.

stylesDefault:

Spectrum-defined styles, returned by the style() macro.

valuestring[]Default:

The current value (controlled).

defaultValuestring[]Default:

The default value (uncontrolled).

onChange(value: T) => voidDefault:

Handler that is called when the value changes.