{
  "name": "checkbox-group",
  "type": "registry:ui",
  "title": "Checkbox Group",
  "description": "Checkbox Group lets users select any number of options from a related set.",
  "registryDependencies": [
    "@siteplane/base",
    "@siteplane/checkbox"
  ],
  "dependencies": [
    "@base-ui/react@1.5.0"
  ],
  "files": [
    {
      "path": "src/components/ui/checkbox-group.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\n\nimport { CheckboxGroup as CheckboxGroupPrimitive } from \"@base-ui/react/checkbox-group\";\nimport type React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n  type SiteplaneControlSize,\n  useResolvedControlSize,\n} from \"@/components/ui/siteplane-provider\";\nimport { CheckboxSizeContext } from \"@/components/ui/checkbox\";\n\nexport interface CheckboxGroupProps\n  extends Omit<CheckboxGroupPrimitive.Props, \"size\"> {\n  size?: SiteplaneControlSize;\n}\n\nexport function CheckboxGroup({\n  className,\n  size,\n  ...props\n}: CheckboxGroupProps): React.ReactElement {\n  const resolvedSize = useResolvedControlSize(size);\n\n  return (\n    <CheckboxSizeContext.Provider value={resolvedSize}>\n      <CheckboxGroupPrimitive\n        className={cn(\"flex flex-col items-start gap-3\", className)}\n        data-size={resolvedSize}\n        data-slot=\"checkbox-group\"\n        {...props}\n      />\n    </CheckboxSizeContext.Provider>\n  );\n}\n\nexport { CheckboxGroupPrimitive };\n"
    }
  ],
  "categories": [
    "form-controls"
  ],
  "docs": "# Checkbox Group\n\n> Siteplane UI release `0.1.1`.\n\n## Public Purpose\n\nCheckbox Group lets users select any number of options from a related set. Use\nRadio Group when exactly one option may be selected.\n\n## Import\n\n`import { Checkbox } from \"@/components/ui/checkbox\";`\n\n`import { CheckboxGroup } from \"@/components/ui/checkbox-group\";`\n\n## Public API\n\n- Give each child `Checkbox` a stable `value`; group `value`,\n  `defaultValue`, and `onValueChange` use arrays.\n- `allValues` enables the first-class select-all contract. Combine it with\n  `<Checkbox parent />` to derive checked and indeterminate state and toggle\n  all children without manual synchronization.\n- Use `size` on the group to size its children, with a local Checkbox size\n  taking precedence.\n\n## Public Motion\n\n- Check, indeterminate, border, focus, and reduced-motion behavior comes from\n  Checkbox.\n- Selection must not change row or card dimensions.\n\n## Public Accessibility\n\n- Name every group through visible context, `aria-label`, or\n  `aria-labelledby`.\n- Pair every Checkbox with visible clickable label text or an accessible label.\n- Put invalid state on the group and render a visible `FieldError`.\n- The parent Checkbox must communicate mixed state when only some children are\n  selected.\n\n## Public Agent Guidance\n\n- Always group related multi-select options in Checkbox Group.\n- Use `allValues` and `Checkbox parent` for select-all behavior instead of\n  rebuilding synchronization with local state.\n- Use `Field` for group labels, descriptions, and validation.\n\n## Public Links\n\n- [Documentation and preview](https://ui.siteplane.io/docs/components/form-controls/checkbox-group)\n\n- [Registry source](https://ui.siteplane.io/r/checkbox-group.json)\n",
  "meta": {
    "siteplane:agentContractVersion": 1,
    "siteplane:docs": "https://ui.siteplane.io/docs/components/form-controls/checkbox-group",
    "siteplane:releaseVersion": "0.1.1",
    "siteplane:sourceOwned": true
  },
  "devDependencies": []
}
