Textarea
Multi-line text input with optional auto-grow (useLayoutEffect scrollHeight sampling — no single-frame flicker) and a live character counter.
Source
src/components/ui/textarea.tsxAuto-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.