Checkbox Group

Manages selection state across multiple checkboxes.

checkbox-group-demo.tsx
"use client"
 
import { useState } from "react"
 
import { Checkbox } from "@/components/ui/checkbox"
import { CheckboxGroup } from "@/components/ui/checkbox-group"
import { Label } from "@/components/ui/label"
 
const groceries = ["milk", "cheese", "bread", "apples"]
 
export function CheckboxGroupDemo() {
	const [checkedItems, setCheckedItems] = useState<string[]>([])
 
	return (
		<CheckboxGroup
			aria-labelledby="groceries"
			value={checkedItems}
			onValueChange={(value) => setCheckedItems(value)}
			allValues={groceries}
		>
			<Label className="flex items-center gap-2">
				<Checkbox
					parent
					indeterminate={
						checkedItems.length > 0 && checkedItems.length !== groceries.length
					}
				/>
				Groceries
			</Label>
 
			{groceries.map((grocery) => (
				<Label className="ml-4 flex items-center gap-2" key={grocery}>
					<Checkbox name={grocery} />
					{grocery.charAt(0).toUpperCase() + grocery.slice(1)}
				</Label>
			))}
		</CheckboxGroup>
	)
}

Installation

npx shadcn@latest add https://9ui.dev/r/checkbox-group.json

Usage

Imports
import { CheckboxGroup } from "@/components/ui/checkbox-group"
Anatomy
<CheckboxGroup />