Descriptions, comments, notes, addresses, bios, email body composition.
Same as Input — never render Textarea bare in a form.
Don't default to 10+ rows for short notes. Match the visible size to the typical input length.
Names, emails, search queries → Input.
Bold, lists, links, etc. → use a dedicated rich-text editor (not part of @marmoui/ui). Plain text only here.
Use a code editor component (Monaco, CodeMirror, etc.). Textarea has no syntax highlighting or indent handling.
| You want… | Use this |
|---|---|
| Single-line text (name, email, URL) | Input |
| Rich text (bold, lists, links) | A dedicated rich-text editor — not in @marmoui/ui |
| Code editing with syntax highlighting | A code editor component (CodeMirror / Monaco) |
| Multi-value tag entry | TagsInput |
| Markdown editing with preview | A Markdown editor — not in @marmoui/ui |
| Numeric input | NumberInput |
npm install @marmoui/uiyarn add @marmoui/uipnpm add @marmoui/uibun add @marmoui/uiimport { Textarea } from '@marmoui/ui';Simple multi-line text input
<Textarea placeholder="Enter your message..." />Textarea within a form field with label and helper text
Maximum 500 characters
<div className="flex flex-col gap-1.5">
<label className="text-sm font-medium text-ink-dark">Description</label>
<Textarea placeholder="Describe your campaign..." rows={4} />
<p className="text-xs text-ink-light">Maximum 500 characters</p>
</div>Textarea that is not editable
<Textarea disabled value="This content cannot be edited" />Use the rows prop to set a reasonable default height based on expected content length.
Use placeholder text to hint at the expected format or content type.
Use the Input component for short, single-line values like names or emails.
If there's a max length, show remaining characters to prevent frustration.
id and htmlFor attributes.aria-describedby for helper and error text.