Back to Heroui

CheckboxGroup

apps/docs/content/docs/react/components/(forms)/checkbox-group.mdx

3.0.34.5 KB
Original Source

Import

tsx
import { CheckboxGroup, Checkbox, Label, Description } from '@heroui/react';

Usage

<ComponentPreview name="checkbox-group-basic" />

Anatomy

Import the CheckboxGroup component and access all parts using dot notation.

tsx
import {CheckboxGroup, Checkbox, Label, Description, FieldError} from '@heroui/react';

export default () => (
  <CheckboxGroup name="interests">
    <Label />
    <Description />
    <Checkbox value="option1">
      <Checkbox.Control>
        <Checkbox.Indicator />
      </Checkbox.Control>
      <Checkbox.Content>
        <Label />
        <Description />
      </Checkbox.Content>
    </Checkbox>
    <FieldError />
  </CheckboxGroup>
);

In Surface

When used inside a Surface component, use variant="secondary" to apply the lower emphasis variant suitable for surface backgrounds.

<ComponentPreview name="checkbox-group-on-surface" />

With Custom Indicator

<ComponentPreview name="checkbox-group-with-custom-indicator" />

Indeterminate

<ComponentPreview name="checkbox-group-indeterminate" />

Controlled

<ComponentPreview name="checkbox-group-controlled" />

Validation

<ComponentPreview name="checkbox-group-validation" />

Disabled

<ComponentPreview name="checkbox-group-disabled" />

Features and Add-ons Example

<ComponentPreview name="checkbox-group-features-and-addons" />

Custom Render Function

<ComponentPreview name="checkbox-group-custom-render-function" />

<RelatedComponents component="checkboxgroup" />

Styling

Passing Tailwind CSS classes

You can customize the CheckboxGroup component:

tsx
import { CheckboxGroup, Checkbox, Label } from '@heroui/react';

function CustomCheckboxGroup() {
  return (
    <CheckboxGroup className="gap-4" name="custom">
      <Checkbox value="option1">
        <Checkbox.Control className="border-2 border-purple-500 data-[selected=true]:bg-purple-500">
          <Checkbox.Indicator className="text-white" />
        </Checkbox.Control>
        <Checkbox.Content>
          <Label>Option 1</Label>
        </Checkbox.Content>
      </Checkbox>
    </CheckboxGroup>
  );
}

Customizing the component classes

To customize the CheckboxGroup component classes, you can use the @layer components directive.

Learn more.

css
@layer components {
  .checkbox-group {
    @apply flex flex-col gap-2;
  }
}

HeroUI follows the BEM methodology to ensure component variants and states are reusable and easy to customize.

CSS Classes

The CheckboxGroup component uses these CSS classes (View source styles):

  • .checkbox-group - Base checkbox group container

API Reference

CheckboxGroup Props

Inherits from React Aria CheckboxGroup.

PropTypeDefaultDescription
valuestring[]-The current selected values (controlled)
defaultValuestring[]-The default selected values (uncontrolled)
onChange(value: string[]) => void-Handler called when the selected values change
isDisabledbooleanfalseWhether the checkbox group is disabled
isRequiredbooleanfalseWhether the checkbox group is required
isReadOnlybooleanfalseWhether the checkbox group is read only
isInvalidbooleanfalseWhether the checkbox group is in an invalid state
namestring-The name of the checkbox group, used when submitting an HTML form
childrenReact.ReactNode | (values: CheckboxGroupRenderProps) => React.ReactNode-Checkbox group content or render prop
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, CheckboxGroupRenderProps>-Overrides the default DOM element with a custom render function.

CheckboxGroupRenderProps

When using the render prop pattern, these values are provided:

PropTypeDescription
valuestring[]The currently selected values
isDisabledbooleanWhether the checkbox group is disabled
isReadOnlybooleanWhether the checkbox group is read only
isInvalidbooleanWhether the checkbox group is in an invalid state
isRequiredbooleanWhether the checkbox group is required