{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "checkbox",
  "title": "Checkbox",
  "description": "Checkbox from the Get IT Done design system.",
  "dependencies": [
    "@radix-ui/react-checkbox@^1.4.1",
    "lucide-react@^0.379.0"
  ],
  "registryDependencies": [
    "https://zero-design.itdone.de/r/labels-context.json",
    "https://zero-design.itdone.de/r/utils.json",
    "https://zero-design.itdone.de/r/theme.json"
  ],
  "files": [
    {
      "path": "registry/ui/checkbox.tsx",
      "content": "'use client';\n\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\nimport { forwardRef } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { usePreset } from '@/components/ui/labels-context';\n\nconst Checkbox = forwardRef<\n  React.ElementRef<typeof CheckboxPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> & {\n    // `sm` uses the compact checkbox size token (Figma Size=sm); default keeps the 20px box. In the zero preset the default is `sm`.\n    size?: 'default' | 'sm';\n  }\n>(({ className, size: sizeProp, ...props }, ref) => {\n  const zero = usePreset() === 'zero';\n  const size = sizeProp ?? (zero ? 'sm' : 'default');\n  return (\n  <CheckboxPrimitive.Root\n    ref={ref}\n    className={cn(\n      'peer',\n      size === 'sm' ? 'h-checkbox-sm w-checkbox-sm' : 'h-5 w-5',\n      'shrink-0',\n      'rounded-tight',\n      'border',\n      'border-solid',\n      // Control boundary role, at least 3:1 on the page (WCAG 1.4.11). `border-input` stays the decorative field border.\n      'border-checkbox-border-default',\n      'bg-background',\n      'transition-[color,background-color,border-color,box-shadow]',\n      'duration-150',\n      'hover:border-checkbox-border-hover',\n      'focus-visible:outline-none',\n      'focus-visible:ring-focus',\n      'focus-visible:ring-offset-focus',\n      'focus-visible:ring-offset-background',\n      'focus-visible:ring-ring-default',\n      'focus-visible:border-ring',\n      'disabled:cursor-not-allowed',\n      'disabled:opacity-disabled',\n      'data-[state=checked]:border-background-brand-bold-default',\n      'data-[state=checked]:bg-background-brand-bold-default',\n      'data-[state=checked]:text-text-on-brand',\n      'data-[state=indeterminate]:border-background-brand-bold-default',\n      'data-[state=indeterminate]:bg-background-brand-bold-default',\n      'data-[state=indeterminate]:text-text-on-brand',\n      className,\n    )}\n    {...props}\n  >\n    <CheckboxPrimitive.Indicator\n      className={cn('flex', 'items-center', 'justify-center', 'text-current')}\n    >\n      <Check aria-hidden className={cn(size === 'sm' ? 'h-3 w-3' : 'h-4 w-4', '[stroke-width:var(--size-icon-stroke-check,3)]')} />\n    </CheckboxPrimitive.Indicator>\n  </CheckboxPrimitive.Root>\n  );\n});\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}