{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "textarea",
  "title": "Textarea",
  "description": "Auto-growing textarea (field-sizing-content) with 3 variants (outline, soft, ghost), 3 sizes (sm, md, lg) and 3 tones (neutral, success, danger) matching Input. Invalid state also via aria-invalid.",
  "dependencies": [
    "class-variance-authority@^0.7.1"
  ],
  "registryDependencies": [
    "@ai2/tokens"
  ],
  "files": [
    {
      "path": "registry/ai2/ui/textarea.tsx",
      "content": "import type * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst textareaVariants = cva(\n  \"flex field-sizing-content w-full outline-none transition-[color,box-shadow] duration-(--motion-fast) placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-danger aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40\",\n  {\n    variants: {\n      variant: {\n        outline: \"border border-field-border bg-transparent shadow-xs dark:bg-input/30\",\n        soft: \"border border-transparent bg-surface-3 focus-visible:bg-transparent dark:bg-input/50\",\n        ghost: \"border border-transparent bg-transparent hover:bg-surface-3 focus-visible:bg-transparent\",\n      },\n      size: {\n        sm: \"min-h-12 rounded-md px-2.5 py-1.5 text-sm\",\n        md: \"min-h-16 rounded-lg px-3 py-2 text-sm\",\n        lg: \"min-h-20 rounded-lg px-3.5 py-2.5 text-base md:text-sm\",\n      },\n      tone: {\n        neutral: \"\",\n        success:\n          \"border-success focus-visible:border-success focus-visible:ring-success/20 dark:focus-visible:ring-success/40\",\n        danger:\n          \"border-danger focus-visible:border-danger focus-visible:ring-danger/20 dark:focus-visible:ring-danger/40\",\n      },\n    },\n    defaultVariants: { variant: \"outline\", size: \"md\", tone: \"neutral\" },\n  }\n)\n\ninterface TextareaProps\n  extends React.ComponentProps<\"textarea\">,\n    VariantProps<typeof textareaVariants> {}\n\nfunction Textarea({ className, variant, size, tone, ...props }: TextareaProps) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      data-variant={variant ?? \"outline\"}\n      data-tone={tone ?? \"neutral\"}\n      className={cn(textareaVariants({ variant, size, tone, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea, textareaVariants, type TextareaProps }\n",
      "type": "registry:ui"
    }
  ],
  "docs": "Shares variant language with Input so forms stay consistent. It grows with content by default via field-sizing.",
  "categories": [
    "form"
  ],
  "type": "registry:ui"
}