Textarea

Room to write. Grows predictably, never traps the scroll.

v1.0.0·Updated Jul 8, 2026 · 10:45
Live Demo — Fully Interactive
Height follows the content, capped so it never runs away
Configuration
State
Resize
Counter
Label
Release notes
<Textarea label="Release notes" />
Behavior — The Engineering Contract
PropTypeNotes
label / hintstringMono label above; helper below
autoGrow / maxRowsboolean / numberHeight tracks content, then scrolls
resizevertical · noneUser drag handle; vertical is the default
maxLength / showCountnumber / booleanLive counter; field reddens past the limit
statuserror · successBorder and message colour
disabledbooleanRead-only, opacity 0.42

Use a Textarea for multi-line prose. For a single line use Input; for a fixed short code use Pin Input.

Anatomy
Release notes
1FieldMulti-line box, min-height 92, warm focus ring.
2LabelMono, uppercase, tied to the field.
3Resize gripBottom-right handle; vertical only.
Do's and Don'ts
✓ Do

Size the field to the expected answer. A few lines invites a few lines.

✕ Don't

Don't use a textarea for a one-line value. That is an Input.

✓ Do
18 / 140

Show the counter only when a limit exists, and warn before the wall.

✕ Don't

Don't lock the height so small it traps the scroll. Let it grow or resize.

In context: Examples
A · Comment box

Auto-growing comment field that starts compact and expands as needed.

B · Bio with limit
36 / 140

Profile bios pair the field with a live character budget.

C · Form field
Message

Labeled message field in a contact or support form.

Measurements & Tokens
TokenValueRole
--ta-min-h92pxResting min-height (~3 lines)
--ta-pad10px 12pxInner padding
--ta-line1.55Comfortable reading line-height
--ta-bg#0E0F12Field fill
--ta-focusrgba(255,122,0,.14)3px warm focus ring
--ta-error#EB4A4FOver-limit and error border
Code
<label class="o-field">
  <span class="o-field__label">Release notes</span>
  <textarea class="o-textarea" rows="4" placeholder="Write here…"></textarea>
  <span class="o-field__count">0 / 140</span>
</label>