{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "checkbox",
  "title": "Checkbox",
  "description": "The shadcn Checkbox on Base UI, not Radix. The ticked box is the accent with its paired ink glyph, because a tick is a mark a person made and the brand's spark marks what a person did; the focus ring is the kit's --text ring rather than orange, which fails WCAG SC 1.4.11 on white. Its edge is the 3:1 control border; an indeterminate box draws a dash instead of the tick; a 32px hit area around the 16px box takes the pointer; aria-invalid draws a 2px --danger edge, the border plus a solid 1px ring, never an opacity fade, measured at 4.38:1 or better on every ground. dark:bg-input/30 is dropped — dark is a token set here, not a variant. It carries no label of its own: Base UI renders a span beside a hidden input, so every caller supplies an id and a Label htmlFor, or an aria-label.",
  "dependencies": [
    "@base-ui/react@1.9.0",
    "lucide-react@1.33.0"
  ],
  "registryDependencies": [
    "@waimakers/utils",
    "@waimakers/theme"
  ],
  "files": [
    {
      "path": "src/components/ui/checkbox.tsx",
      "content": "import { Checkbox as CheckboxPrimitive } from \"@base-ui/react/checkbox\";\nimport { Check, Minus } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn, focusRing, invalidRing } from \"../../lib/utils\";\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input bg-background text-primary-foreground transition-[background-color,border-color,box-shadow] ease-brand\",\n        \"after:absolute after:-inset-2 after:content-['']\",\n        focusRing,\n        invalidRing,\n        \"data-checked:bg-primary data-indeterminate:bg-primary\",\n        \"disabled:cursor-not-allowed disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"flex text-current\"\n        render={(indicatorProps, state) => (\n          <span {...indicatorProps}>\n            {state.indeterminate ? (\n              <Minus\n                aria-hidden\n                data-slot=\"checkbox-mark\"\n                data-mark=\"indeterminate\"\n                className=\"size-3.5\"\n              />\n            ) : (\n              <Check\n                aria-hidden\n                data-slot=\"checkbox-mark\"\n                data-mark=\"checked\"\n                className=\"size-3.5\"\n              />\n            )}\n          </span>\n        )}\n      />\n    </CheckboxPrimitive.Root>\n  );\n}\n\nexport { Checkbox };\n",
      "type": "registry:ui",
      "target": "components/ui/checkbox.tsx"
    }
  ],
  "type": "registry:ui"
}