rows) to the expected response length. Use three to five rows for most descriptions and messages.rows={1}) for multi-line text.label) so users understand the purpose of the field at a glance.ariaLabel) when a visible label isn't possible.rows) — two rows by default. Raise it for longer content such as message bodies or instructions.resize="vertical") — the default. Lets the user make the field taller to review what they've written.resize="none") — removes the handle. Use when the field sits in a fixed layout where a taller field would push other content out of place.resize="horizontal") and both directions (resize="both") — use only when the field is not full width.isFullWidth) — the default. Use for most forms, where the field aligns with the controls above and below it.isFullWidth={false} with cols) — use when the field sits inline with other inputs or elements.isDisabled) — blocks all interaction and updates the background and text color.isInvalid with error) — applies critical styling and renders the error message below the field.minRows with maxRows) — the field starts at the minimum rows and grows as the user types, then scrolls past the maximum. Use for prompts and messages where response length varies widely. The resize handle is hidden while auto-grow is on.shouldSubmitOnEnter) — Enter submits the form and Shift+Enter inserts a new line. Reserve for chat-style inputs where the user sends each entry quickly.description whenever shouldSubmitOnEnter is set.shouldSubmitOnEnter on a form field where line breaks are expected.placeholder empty for most TextAreas — a blank field reads more clearly as unfilled.description text as short, complete sentences explaining what the content is used for, what to include, or any length limit.description when the field has a character limit.label, description, and error accept rich content in place of a plain string: React takes a ReactNode directly; Ember takes the :label, :description, and :error named blocks. Use this for labels with optional indicators, and for descriptions or errors with inline links.error alone applies the invalid styling; isInvalid is not required alongside it.minRows is set; maxRows alone has no effect. minRows overrides rows for the initial height.resize="horizontal" and resize="both" require isFullWidth={false}. On a full-width field, horizontal falls back to none and both falls back to vertical.shouldSubmitOnEnter calls requestSubmit() on the enclosing form; it does nothing when the TextArea is not inside a form.value without onChange or onInput renders an uncontrolled field — the value is applied as the textarea's default.onChange, onInput, onFocus, and onBlur receive the native DOM event in both frameworks, not a React synthetic event.label, ariaLabel, or ariaLabelledby is provided.shouldAllowAutofill defaults to false, which disables browser autofill and password managers. Set it to true where autofill is wanted.unsafe_textareaWrapperClassName applies additional classes to the element wrapping the textarea.<PlumaTextArea> with @argName args. Splattributes land on the textarea element, not the container.