{
  "id": "textarea",
  "name": "Textarea",
  "level": "atom",
  "status": "stable",
  "purpose": "Multi-line text input.",
  "description": "Native multi-line text entry. Mirrors Input's recipe (boundary, hover, focus) and adds a vertical-only resize handle while editable (none when disabled or read-only). Disabled keeps an opaque box; text is 16 px on touch so iOS does not zoom on focus. Composes with Label via `id` / `htmlFor`. The `invalid` prop drives both the visible danger ring and `aria-invalid`; pair it with a visible error message via `aria-describedby`.",
  "role": "input",
  "import": "@rrios-forge/ui/atoms/textarea",
  "exports": [
    "Textarea",
    "textareaVariants",
    "TEXTAREA_SIZES"
  ],
  "source": "packages/ui/src/atoms/textarea",
  "axes": [
    {
      "axis": "size",
      "part": null,
      "values": [
        "sm",
        "md",
        "lg"
      ],
      "default": "md",
      "meaning": "Ergonomic scale, in three families (control, text, container)."
    },
    {
      "axis": "invalid",
      "part": null,
      "values": [
        "true",
        "false"
      ],
      "default": "false",
      "meaning": "Fails validation: a danger edge, announced as invalid; pair it with an error message."
    }
  ],
  "needs": [
    {
      "need": "Field with label + helper + error",
      "answer": "`Field` + `Input`/`Textarea`/`Select`"
    }
  ],
  "patterns": [],
  "a11yExceptions": [],
  "decisions": [
    {
      "id": "ADR-019",
      "title": "Composer organism (message/post authoring surface)"
    }
  ],
  "stories": [
    {
      "name": "Playground",
      "id": "components-atoms-textarea--playground",
      "interaction": false,
      "snapshots": [
        "dark",
        "light"
      ],
      "skipsSnapshot": false,
      "docs": "/?path=/story/components-atoms-textarea--playground",
      "frame": "/iframe.html?id=components-atoms-textarea--playground&viewMode=story"
    },
    {
      "name": "Sizes",
      "id": "components-atoms-textarea--sizes",
      "interaction": false,
      "snapshots": [
        "dark",
        "light"
      ],
      "skipsSnapshot": false,
      "docs": "/?path=/story/components-atoms-textarea--sizes",
      "frame": "/iframe.html?id=components-atoms-textarea--sizes&viewMode=story"
    },
    {
      "name": "States",
      "id": "components-atoms-textarea--states",
      "interaction": false,
      "snapshots": [
        "dark",
        "high-contrast",
        "light"
      ],
      "skipsSnapshot": false,
      "docs": "/?path=/story/components-atoms-textarea--states",
      "frame": "/iframe.html?id=components-atoms-textarea--states&viewMode=story"
    },
    {
      "name": "Invalid",
      "id": "components-atoms-textarea--invalid",
      "interaction": false,
      "snapshots": [
        "dark",
        "high-contrast",
        "light"
      ],
      "skipsSnapshot": false,
      "docs": "/?path=/story/components-atoms-textarea--invalid",
      "frame": "/iframe.html?id=components-atoms-textarea--invalid&viewMode=story"
    },
    {
      "name": "With label",
      "id": "components-atoms-textarea--with-label",
      "interaction": false,
      "snapshots": [
        "dark",
        "light"
      ],
      "skipsSnapshot": false,
      "docs": "/?path=/story/components-atoms-textarea--with-label",
      "frame": "/iframe.html?id=components-atoms-textarea--with-label&viewMode=story"
    }
  ],
  "storyFile": "tooling/storybook/stories/components/atoms/textarea.stories.tsx"
}
