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
With description
Visible to everyone in the workspace.
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.
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.