Components
HeroUI v3 CheckboxGroup manages a set of related checkboxes as a single form field with a shared label, description and validation. Built on the real @heroui/react package with @heroui/styles, it supports controlled selection, an indeterminate "select all" parent, disabled state, required-field validation via Form/FieldError, a Surface variant, custom check indicators, a custom render function, and rich card-style add-on rows. A thin re-export of the upstream component so consumers install and render the genuine HeroUI primitive.
npx shadcn@latest add https://21st.dev/r/hero_ui/heroui-checkbox-groupLoading preview...
"use client"
import { Button, Checkbox, FieldError, Form, Label } from "@heroui/react"
import { CheckboxGroup } from "@/components/ui/heroui-checkbox-group"
export function Validation() {
return (
<Form
className="flex flex-col gap-4 px-4"
onSubmit={(e) => {
e.preventDefault();
const formData = new FormData(e.currentTarget);
const values = formData.getAll("preferences");
alert(`Selected preferences: ${values.join(", ")}`);
}}
>
<CheckboxGroup isRequired name="preferences">
<Label>Preferences</Label>
<Checkbox value="email">
<Checkbox.Content>
<Checkbox.Control>
<Checkbox.Indicator />
</Checkbox.Control>
Email notifications
</Checkbox.Content>
</Checkbox>
<Checkbox value="sms">
<Checkbox.Content>
<Checkbox.Control>
<Checkbox.Indicator />
</Checkbox.Control>
SMS notifications
</Checkbox.Content>
</Checkbox>
<Checkbox value="push">
<Checkbox.Content>
<Checkbox.Control>
<Checkbox.Indicator />
</Checkbox.Control>
Push notifications
</Checkbox.Content>
</Checkbox>
<FieldError>Please select at least one notification method.</FieldError>
</CheckboxGroup>
<Button type="submit">Submit</Button>
</Form>
);
}
export default Validation
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...