{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"textarea","type":"registry:component","title":"Textarea","description":"Textarea that grows with its content instead of scrolling, down to three rows and up to a scrollable cap.","author":"Ryan","dependencies":["clsx","tailwind-merge"],"registryDependencies":[],"files":[{"path":"components/motion/textarea.tsx","type":"registry:component","target":"@components/motion/textarea.tsx","content":"\"use client\";\n// easeui.dev/components/motion/textarea\n\nimport { forwardRef, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement>;\n\n/**\n * Textarea that grows with its content instead of scrolling, down to three\n * rows and up to a scrollable cap. Shares Input's focus ring.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n  { className, rows = 3, ...props },\n  ref,\n) {\n  return (\n    <textarea\n      ref={ref}\n      rows={rows}\n      className={cn(\n        \"block max-h-64 w-full resize-none rounded-xl bg-card px-3 py-2 text-base text-foreground shadow-[0_0_0_1px_var(--border-strong)] outline-none transition-shadow duration-150 ease-out sm:text-sm\",\n        \"[field-sizing:content]\",\n        \"placeholder:text-muted-foreground\",\n        \"focus:shadow-[0_0_0_2px_var(--accent)]\",\n        \"aria-invalid:shadow-[0_0_0_2px_var(--destructive)]\",\n        \"disabled:cursor-not-allowed disabled:opacity-50\",\n        className,\n      )}\n      {...props}\n    />\n  );\n});\n"},{"path":"lib/utils.ts","type":"registry:lib","target":"@lib/utils.ts","content":"import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"}]}