{
  "name": "checkbox",
  "type": "registry:ui",
  "title": "Checkbox",
  "description": "Checkbox represents a Boolean choice or one option within a multi-select group.",
  "registryDependencies": [
    "@siteplane/base"
  ],
  "dependencies": [
    "@base-ui/react@1.5.0",
    "class-variance-authority@0.7.1"
  ],
  "files": [
    {
      "path": "src/components/ui/checkbox.tsx",
      "type": "registry:ui",
      "content": "\"use client\";\n\nimport { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n  type SiteplaneControlSize,\n  useResolvedControlSize,\n} from \"@/components/ui/siteplane-provider\";\n\nexport const checkboxVariants = cva(\n  \"siteplane-checkbox-motion relative inline-flex shrink-0 cursor-pointer items-center justify-center rounded-(--checkbox-radius) border border-input bg-background not-dark:bg-clip-padding shadow-xs/5 outline-none ring-ring transition-[background-color,box-shadow] before:pointer-events-none before:absolute before:inset-0 before:rounded-[inherit] not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_1px_--theme(--color-black/4%)] focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:ring-offset-background aria-invalid:border-destructive/36 focus-visible:aria-invalid:border-destructive/64 focus-visible:aria-invalid:ring-destructive/48 data-disabled:cursor-not-allowed data-disabled:opacity-64 not-data-disabled:not-data-checked:not-aria-invalid:hover:shadow-sm/10 dark:not-data-checked:bg-input/32 dark:aria-invalid:ring-destructive/24 dark:not-data-disabled:not-data-checked:not-aria-invalid:before:shadow-[0_-1px_--theme(--color-white/6%)] [[data-disabled],[data-checked],[aria-invalid]]:shadow-none\",\n  {\n    defaultVariants: {\n      size: \"default\",\n    },\n    variants: {\n      size: {\n        default: \"size-4.5 sm:size-4\",\n        lg: \"size-5 sm:size-4.5\",\n        sm: \"size-4 sm:size-3.5\",\n        xl: \"size-5.5 sm:size-5\",\n      },\n    },\n  },\n);\n\nconst checkboxIconVariants = cva(\"\", {\n  defaultVariants: {\n    size: \"default\",\n  },\n  variants: {\n      size: {\n        default: \"size-3.5 sm:size-3\",\n        lg: \"size-4 sm:size-3.5\",\n        sm: \"size-3 sm:size-2.5\",\n        xl: \"size-4.5 sm:size-4\",\n      },\n  },\n});\n\nexport const CheckboxSizeContext =\n  React.createContext<SiteplaneControlSize | null>(null);\n\nexport interface CheckboxProps\n  extends Omit<CheckboxPrimitive.Root.Props, \"size\">,\n    VariantProps<typeof checkboxVariants> {}\n\nexport function Checkbox({\n  className,\n  size,\n  ...props\n}: CheckboxProps): React.ReactElement {\n  const groupSize = React.useContext(CheckboxSizeContext);\n  const resolvedSize = useResolvedControlSize(size ?? groupSize);\n\n  return (\n    <CheckboxPrimitive.Root\n      className={cn(checkboxVariants({ size: resolvedSize }), className)}\n      data-size={resolvedSize}\n      data-slot=\"checkbox\"\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        className=\"pointer-events-none absolute -inset-px flex items-center justify-center rounded-(--checkbox-radius) text-primary-foreground\"\n        data-slot=\"checkbox-indicator\"\n        render={(props: React.ComponentProps<\"span\">) => (\n          <span {...props}>\n            <svg\n              aria-hidden=\"true\"\n              className={checkboxIconVariants({ size: resolvedSize })}\n              fill=\"none\"\n              height=\"24\"\n              stroke=\"currentColor\"\n              strokeLinecap=\"round\"\n              strokeLinejoin=\"round\"\n              strokeWidth=\"3\"\n              viewBox=\"0 0 24 24\"\n              width=\"24\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path\n                className=\"siteplane-checkbox-check\"\n                d=\"M5.252 12.7 10.2 18.63 18.748 5.37\"\n              />\n              <path className=\"siteplane-checkbox-indeterminate\" d=\"M5.252 12h13.496\" />\n            </svg>\n          </span>\n        )}\n      />\n    </CheckboxPrimitive.Root>\n  );\n}\n\nexport { CheckboxPrimitive };\n"
    }
  ],
  "categories": [
    "form-controls"
  ],
  "docs": "# Checkbox\n\n> Siteplane UI release `0.1.1`.\n\n## Public Purpose\n\nCheckbox represents one Boolean decision or one option in a multi-select group.\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- Use controlled `checked` and `onCheckedChange` or uncontrolled\n  `defaultChecked`.\n- `indeterminate` represents a mixed parent state; it is not a selected value.\n- `size` accepts `\"sm\"`, `\"default\"`, `\"lg\"`, and `\"xl\"` and otherwise\n  inherits `SiteplaneUIProvider controlSize`.\n- Use Checkbox Group for related multi-select options.\n\n## Public Motion\n\n- Checked and indeterminate indicators use native checkbox motion and central\n  exit tokens.\n- Reduced motion moves the indicator directly to its final state.\n- Pointer, hover, focus, invalid, and disabled states remain native.\n\n## Public Accessibility\n\n- Every Checkbox needs visible label text or an accessible label.\n- Connect invalid state to the Checkbox and render a visible `FieldError`.\n- Make row or card compositions clickable without replacing Checkbox semantics.\n- Use indeterminate state only to summarize partial child selection.\n\n## Public Agent Guidance\n\n- Do not use raw checkbox inputs for visible Siteplane controls.\n- Use Checkbox Group for related options.\n- Preserve native indicator, focus, cursor, invalid, disabled, and motion\n  behavior.\n\n## Public Links\n\n- [Documentation and preview](https://ui.siteplane.io/docs/components/form-controls/checkbox)\n\n- [Registry source](https://ui.siteplane.io/r/checkbox.json)\n",
  "meta": {
    "siteplane:agentContractVersion": 1,
    "siteplane:docs": "https://ui.siteplane.io/docs/components/form-controls/checkbox",
    "siteplane:releaseVersion": "0.1.1",
    "siteplane:sourceOwned": true
  },
  "devDependencies": []
}
