{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "textarea",
  "title": "Textarea",
  "description": "shadcn's textarea, restyled to the brand and to Input's own class list — a form must not show two borders, two focus rings or two placeholder colours across its single- and multi-line fields, and stock shadcn styles the two differently (it fades the border on focus; the kit rings, on --text rather than orange, because orange fails WCAG SC 1.4.11 on white). aria-invalid draws Input's measured treatment: a 2px --danger edge, the border plus a solid 1px ring, because --danger is never an opacity fade here. dark:bg-input/30 is dropped too — dark is a token set in this kit, not a variant, and --border is never a fill. field-sizing-content grows the box with what is typed; min-h-24 is a three-line floor rather than shadcn's two, because the callers are prose fields and `rows` still overrides it.",
  "registryDependencies": [
    "@waimakers/utils",
    "@waimakers/theme"
  ],
  "files": [
    {
      "path": "src/components/ui/textarea.tsx",
      "content": "import type * as React from \"react\";\n\nimport { cn, focusRing, invalidRing } from \"../../lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"flex field-sizing-content min-h-24 w-full rounded-md border border-input bg-background px-3 py-2 text-sm text-foreground transition-colors ease-brand\",\n        \"placeholder:text-muted-foreground\",\n        focusRing,\n        invalidRing,\n        \"disabled:cursor-not-allowed disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n}\n\nexport { Textarea };\n",
      "type": "registry:ui",
      "target": "components/ui/textarea.tsx"
    }
  ],
  "type": "registry:ui"
}