{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "textarea",
  "title": "Textarea",
  "dependencies": [
    "@base-ui/react"
  ],
  "registryDependencies": [
    "https://ui.hotfix.jobs/r/tokens.json",
    "https://ui.hotfix.jobs/r/utils.json"
  ],
  "files": [
    {
      "path": "registry/components/ui/textarea.tsx",
      "content": "\"use client\";\n\nimport { Field as FieldPrimitive } from \"@base-ui/react/field\";\nimport { mergeProps } from \"@base-ui/react/merge-props\";\nimport type * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TextareaSize = \"sm\" | \"md\" | \"lg\";\nexport type TextareaVariant = \"default\" | \"unstyled\";\n\nexport type TextareaProps = React.ComponentProps<\"textarea\"> & {\n  size?: TextareaSize;\n  variant?: TextareaVariant;\n};\n\nconst paddingBySize: Record<TextareaSize, string> = {\n  sm: \"px-2.5 py-1.5 text-small\",\n  md: \"px-3 py-2 text-small\",\n  lg: \"px-3.5 py-2.5 text-regular\",\n};\n\nexport function Textarea({\n  className,\n  rows,\n  size = \"md\",\n  variant = \"default\",\n  ...props\n}: TextareaProps): React.ReactElement {\n  const unstyled = variant === \"unstyled\";\n\n  return (\n    <span\n      className={cn(\n        \"relative inline-flex w-full text-ink\",\n        !unstyled && \"rounded-[var(--radius-8)]\",\n        !unstyled && [\n          \"bg-fill-1 hover:bg-fill-2\",\n          \"outline-none has-focus-visible:[outline-style:solid] has-focus-visible:outline-[length:var(--focus-ring-width)] has-focus-visible:outline-[var(--focus-ring-color)] has-focus-visible:outline-offset-0\",\n          \"transition-[color,background-color,outline-color] duration-[var(--duration-state)] ease-[var(--ease-standard)]\",\n        ],\n        \"has-disabled:opacity-50 has-disabled:cursor-not-allowed\",\n        \"group-data-[invalid]/field:[outline-style:solid] group-data-[invalid]/field:outline-[length:1px] group-data-[invalid]/field:outline-error\",\n        \"has-[[aria-invalid=true]]:[outline-style:solid] has-[[aria-invalid=true]]:outline-[length:1px] has-[[aria-invalid=true]]:outline-error\",\n        className,\n      )}\n      data-slot=\"textarea-control\"\n    >\n      <FieldPrimitive.Control\n        render={(defaultProps: React.ComponentProps<\"textarea\">) => (\n          <textarea\n            className={cn(\n              \"field-sizing-content min-h-24 w-full rounded-[inherit] bg-transparent outline-none resize-y\",\n              \"placeholder:text-ink-subtle\",\n              paddingBySize[size],\n            )}\n            data-slot=\"textarea\"\n            rows={rows}\n            {...mergeProps(defaultProps, props)}\n          />\n        )}\n      />\n    </span>\n  );\n}\n\nexport { FieldPrimitive };\n",
      "type": "registry:ui",
      "target": "components/ui/textarea.tsx"
    }
  ],
  "type": "registry:ui"
}