{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "extends": "none",
  "name": "checkbox",
  "title": "checkbox",
  "description": "checkbox",
  "dependencies": [
    "@heroicons/react",
    "react-aria-components",
    "tailwind-merge"
  ],
  "registryDependencies": [
    "https://intentui.com/r/primitive",
    "https://intentui.com/r/field"
  ],
  "files": [
    {
      "path": "src/components/ui/checkbox.tsx",
      "content": "'use client'\n\nimport { CheckIcon, MinusIcon } from '@heroicons/react/20/solid'\nimport {\n  CheckboxButton,\n  type CheckboxButtonProps,\n  CheckboxField as CheckboxFieldPrimitive,\n  type CheckboxFieldProps,\n} from 'react-aria-components/Checkbox'\nimport {\n  CheckboxGroup as CheckboxGroupPrimitive,\n  type CheckboxGroupProps,\n} from 'react-aria-components/CheckboxGroup'\nimport { composeRenderProps } from 'react-aria-components/composeRenderProps'\nimport { twMerge } from 'tailwind-merge'\nimport { cx } from '@/lib/primitive'\nimport { Label } from '@/components/ui/field'\n\nexport function CheckboxGroup({ className, ...props }: CheckboxGroupProps) {\n  return (\n    <CheckboxGroupPrimitive\n      {...props}\n      data-slot=\"control\"\n      className={cx(\n        'space-y-3 has-[[slot=description]]:not-has-[[slot=errorMessage]]:space-y-6 has-[[slot=description]]:**:data-[slot=label]:font-medium **:[[slot=description]]:block',\n        className\n      )}\n    />\n  )\n}\n\nexport function CheckboxField({ className, ...props }: CheckboxFieldProps) {\n  return (\n    <CheckboxFieldPrimitive\n      data-slot=\"control\"\n      {...props}\n      className={cx(\n        'grid grid-cols-[1.125rem_1fr] gap-x-3 gap-y-1 sm:grid-cols-[1rem_1fr]',\n        '*:data-[slot=control]:col-start-1 *:data-[slot=control]:row-start-1 *:data-[slot=control]:mt-0.75 sm:*:data-[slot=control]:mt-1',\n        '*:[[slot=errorMessage]]:col-span-full',\n        '**:data-[slot=control-label]:col-start-2 **:data-[slot=control-label]:row-start-1',\n        '*:[[slot=description]]:col-start-2 *:[[slot=description]]:row-start-2',\n        'has-[[slot=description]]:**:data-[slot=control-label]:font-medium',\n        className\n      )}\n    />\n  )\n}\n\nexport function Checkbox({ className, ...props }: CheckboxButtonProps) {\n  return (\n    <CheckboxButton\n      className={cx('group gap-x-3 inline-flex col-span-full focus:outline-hidden', className)}\n      {...props}\n    >\n      {composeRenderProps(\n        props.children,\n        (children, { isSelected, isIndeterminate, isInvalid }) => {\n          const indicator = isIndeterminate ? (\n            <MinusIcon data-slot=\"check-indicator\" />\n          ) : isSelected ? (\n            <CheckIcon data-slot=\"check-indicator\" />\n          ) : null\n\n          return (\n            <div\n              className={twMerge(\n                'grid grid-cols-[1.125rem_1fr] items-center gap-y-1 has-data-[slot=control-label]:gap-x-3 sm:grid-cols-[1rem_1fr]'\n              )}\n            >\n              <span\n                data-slot=\"indicator\"\n                className={twMerge([\n                  'col-start-1 row-start-1 relative inset-ring inset-ring-input isolate flex shrink-0 items-center justify-center rounded bg-(--control-bg,transparent) text-bg transition group-hover:inset-ring-muted-fg/30 group-focus-visible:inset-ring-ring',\n                  'size-4.5 *:data-[slot=check-indicator]:size-4 sm:size-4 sm:*:data-[slot=check-indicator]:size-3.5',\n                  'in-disabled:bg-muted',\n                  (isSelected || isIndeterminate) && [\n                    'inset-ring-(--checkbox-ring,var(--color-ring)) bg-(--checkbox-bg,var(--color-primary)) text-(--checkbox-fg,var(--color-primary-fg))',\n                    'group-invalid:inset-ring/70 group-invalid:bg-danger group-invalid:text-danger-fg dark:group-invalid:inset-ring-danger-subtle-fg/70',\n                  ],\n                  isInvalid &&\n                    'inset-ring-danger-subtle-fg/70 bg-danger-subtle/5 text-danger-fg ring-danger-subtle-fg/20 group-hover:inset-ring-danger-subtle-fg/70',\n                ])}\n              >\n                {indicator}\n              </span>\n              <Label\n                className=\"col-start-2 row-start-1\"\n                data-slot=\"control-label\"\n                elementType=\"span\"\n              >\n                {children}\n              </Label>\n            </div>\n          )\n        }\n      )}\n    </CheckboxButton>\n  )\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}