UI — form

Textarea

Multi-line text input with optional auto-grow (useLayoutEffect scrollHeight sampling — no single-frame flicker) and a live character counter.

Sourcesrc/components/ui/textarea.tsx

Auto-grow

autoGrow expands between minRows and maxRows as the user types. Above maxRows it becomes scrollable; the native resize handle is hidden.

Character counter

maxLength renders a live counter bottom-right — it doesn't enforce the limit (so paste-review still works), but sets aria-invalid and turns red when exceeded.

111 / 240
Shown on your public profile.

Validation variants

Pass an error string to paint the field red and surface the message. success is a quiet green for inline cues.

Release notes can't be empty.
Follows Conventional Commits.

Fixed — user-resizable

Without autoGrow the default native y-resize handle is available — minimum height is 72px.