Text Area
A multi-line text field framed by a bordered group, with configurable text size, surface, and resize behavior.
Show codeHide code
Installation
import { TextArea, TextAreaGroup } from "@makeplane/propel/components/text-area";Usage
import { TextArea, TextAreaGroup } from "@makeplane/propel/components/text-area";
export default function BasicDemo() {
return (
<TextAreaGroup resize="vertical">
<TextArea
size="lg"
surface="field"
aria-label="Comment"
placeholder="Leave a comment..."
rows={4}
/>
</TextAreaGroup>
);
}Examples
Sizes
size sets the type, one rung below the frame it sits in — md 12 / lg 13 / xl 14 /
2xl 16 px. Prose in a composer reads smaller than a single-line value at the same nominal
size, which is why the two scales are offset. On the field surface each step also pins the
frame’s minimum height.
Show codeHide code
Surfaces
surface picks the control presentation: field pairs with the bordered TextAreaGroup frame, embedded pads itself inside a composer frame that owns the chrome, and inline hugs its line height for compact single-row composers.
Show codeHide code
Resize
TextAreaGroup’s resize prop controls the native drag handle on the bordered frame (so growth
carries the chrome): none locks the size, vertical allows height changes, and both frees both
axes. The leaf itself is never resizable.
Show codeHide code
Auto resize
autoResize grows the control with its value, using the size min-height as the floor. Pair it with
TextAreaGroup resize="none" so the native drag handle does not fight the content height.
maxRows caps the visible lines; further content scrolls.
Show codeHide code
With description
Show codeHide code
API Reference
TextArea
Multi-line text field that automatically works inside Field. Base UI's Field.Control behavior
grafted onto the styled elements TextArea element (rule 1a) — behavior part outer, styled
part as the render target. Base UI ships no textarea control, so Field.Control renders the
styled <textarea> directly (this replaces the former base/text-area wrapper). Pair the
field surface with TextAreaGroup, which owns the native resize handle. autoResize grows
the control with its value; the ready-made TextAreaField turns the native handle off when it is
set.
TextAreaGroup
The bordered frame that wraps a field-surface TextArea leaf. Owns the border, radius,
focus/error border treatments, and the native resize handle so growth carries the chrome with
the content. Children should be that single leaf only — the field surface is min-w-full, so a
sibling inside the frame overflows. Put attach/submit controls outside the group, or use the
embedded / inline surfaces (no group) for composer rows. Pair autoResize on the leaf with
resize="none" so the native drag handle does not fight content-driven height.