{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "checkbox",
  "dependencies": ["@base-ui/react", "@phosphor-icons/react", "class-variance-authority"],
  "registryDependencies": ["checkbox-group", "utils"],
  "files": [
    {
      "path": "registry/ui/checkbox.tsx",
      "content": "'use client';\n\nimport * as React from 'react';\nimport { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { CheckIcon, MinusIcon } from '@phosphor-icons/react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/registry/lib/utils';\nimport { CheckboxGroupContext } from './checkbox-group';\n\ntype CheckboxTheme = 'gray' | 'accent';\n\n/**\n * Slots: checkbox, checkbox-indicator\n */\nconst checkboxVariants = cva(\n  'group/checkbox relative flex size-4 shrink-0 items-center justify-center rounded-sm border transition-colors',\n  {\n    variants: {\n      variant: {\n        solid:\n          'border-line-ui bg-transparent text-ui-label data-checked:border-none data-checked:text-on-fill data-indeterminate:border-none data-indeterminate:text-on-fill',\n        surface:\n          'border-line-ui text-ui-label data-checked:text-secondary data-checked:data-[theme=gray]:text-primary data-indeterminate:text-secondary data-indeterminate:data-[theme=\"gray]:text-primary',\n      },\n      theme: {\n        gray: '',\n        accent: '',\n      },\n    },\n    defaultVariants: {\n      variant: 'solid',\n      theme: 'gray',\n    },\n  }\n);\n\nfunction Checkbox({\n  className,\n  variant,\n  theme,\n  indeterminate,\n  ...props\n}: Omit<CheckboxPrimitive.Root.Props, 'color'> &\n  VariantProps<typeof checkboxVariants> & {\n    indeterminate?: boolean;\n  }) {\n  const ctx = React.useContext(CheckboxGroupContext);\n  const resolvedVariant = variant ?? ctx.variant ?? 'solid';\n  const resolvedTheme = (theme ?? ctx.theme ?? 'gray') as CheckboxTheme;\n\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      data-variant={resolvedVariant}\n      data-theme={resolvedTheme !== 'gray' ? resolvedTheme : undefined}\n      indeterminate={indeterminate}\n      className={cn(\n        checkboxVariants({ variant: resolvedVariant, theme: resolvedTheme }),\n        'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n        'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus',\n        resolvedVariant === 'solid' &&\n          'data-checked:focus-visible:outline-focus-fill data-indeterminate:focus-visible:outline-focus-fill',\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"flex items-center justify-center text-current [&_svg]:size-3\"\n      >\n        {indeterminate ? <MinusIcon /> : <CheckIcon weight=\"bold\" />}\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  );\n}\n\nexport { Checkbox, checkboxVariants };\nexport type { CheckboxTheme };\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}
