Checkbox Group component for grouping multiple checkboxes with multi-selection mode, supporting parent/child nesting.
Basic
Show code Hide code
import { CheckboxGroup } from '@mylighthouse/prism-react';
import { useState } from 'react';
export default function BasicExample(): React.ReactElement {
const [value, setValue] = useState<string[]>(['a']);
return (
<CheckboxGroup onChange={setValue} value={value}>
<CheckboxGroup.Legend>Options</CheckboxGroup.Legend>
<CheckboxGroup.Item value="a">Option A</CheckboxGroup.Item>
<CheckboxGroup.Item value="b">Option B</CheckboxGroup.Item>
<CheckboxGroup.Item value="c">Option C</CheckboxGroup.Item>
</CheckboxGroup>
);
} Nested Controls
Add allValues to CheckboxGroup and a parent item (without a value) to get a controlling parent checkbox.
Show code Hide code
import { CheckboxGroup } from '@mylighthouse/prism-react';
import { useState } from 'react';
const allOptions = ['a', 'b', 'c'];
export default function NestedExample(): React.ReactElement {
const [value, setValue] = useState<string[]>(['a']);
return (
<CheckboxGroup allValues={allOptions} onChange={setValue} value={value}>
<CheckboxGroup.Legend>Options</CheckboxGroup.Legend>
<CheckboxGroup.Item parent>All options</CheckboxGroup.Item>
<CheckboxGroup.Item nested value="a">
Option A
</CheckboxGroup.Item>
<CheckboxGroup.Item nested value="b">
Option B
</CheckboxGroup.Item>
<CheckboxGroup.Item nested value="c">
Option C
</CheckboxGroup.Item>
</CheckboxGroup>
);
} Sizes
Set isSmall for more compact controls. Use for dense forms or table filters; keep default size for primary flows.
Show code Hide code
import { CheckboxGroup } from '@mylighthouse/prism-react';
import { useState } from 'react';
export default function SizesExample(): React.ReactElement {
const [defaultValue, setDefaultValue] = useState<string[]>([]);
const [smallValue, setSmallValue] = useState<string[]>([]);
return (
<>
<CheckboxGroup onChange={setDefaultValue} value={defaultValue}>
<CheckboxGroup.Legend>Default</CheckboxGroup.Legend>
<CheckboxGroup.Item value="a">Option A</CheckboxGroup.Item>
<CheckboxGroup.Item value="b">Option B</CheckboxGroup.Item>
</CheckboxGroup>
<CheckboxGroup isSmall onChange={setSmallValue} value={smallValue}>
<CheckboxGroup.Legend>Small</CheckboxGroup.Legend>
<CheckboxGroup.Item value="a">Option A</CheckboxGroup.Item>
<CheckboxGroup.Item value="b">Option B</CheckboxGroup.Item>
</CheckboxGroup>
</>
);
} Disabled
Disabled checkboxes have a subdued background and do not allow focus or pointer interactions.
Show code Hide code
import { CheckboxGroup } from '@mylighthouse/prism-react';
import { useState } from 'react';
export default function DisabledExample(): React.ReactElement {
const [groupValue, setGroupValue] = useState<string[]>(['a']);
const [itemValue, setItemValue] = useState<string[]>(['a']);
return (
<>
<CheckboxGroup disabled onChange={setGroupValue} value={groupValue}>
<CheckboxGroup.Legend>Group disabled</CheckboxGroup.Legend>
<CheckboxGroup.Item value="a">Option A</CheckboxGroup.Item>
<CheckboxGroup.Item value="b">Option B</CheckboxGroup.Item>
<CheckboxGroup.Item value="c">Option C</CheckboxGroup.Item>
</CheckboxGroup>
<CheckboxGroup onChange={setItemValue} value={itemValue}>
<CheckboxGroup.Legend>Item disabled</CheckboxGroup.Legend>
<CheckboxGroup.Item value="a">Option A</CheckboxGroup.Item>
<CheckboxGroup.Item disabled value="b">
Option B
</CheckboxGroup.Item>
<CheckboxGroup.Item value="c">Option C</CheckboxGroup.Item>
</CheckboxGroup>
</>
);
} API Reference
CheckboxGroup
| Name | Default | Type | Description |
|---|---|---|---|
onChange * | -- | (value: string[]) => void | -- |
value * | -- | string[] | -- |
allValues | -- | string[] | -- |
className | -- | string | -- |
disabled | -- | boolean | -- |
isSmall | -- | boolean | -- |
CheckboxGroup.Item
| Name | Default | Type | Description |
|---|---|---|---|
disabled | -- | boolean | -- |
nested | -- | boolean | -- |
parent | -- | true | -- |
value | -- | string | -- |
CheckboxGroup.Legend
No component-specific props