Skip to content

Textarea

Textarea

<Textarea label="Bio" placeholder="A short bio…" rows={6} />

Install: @helixui/core

import { Textarea } from '@helixui/core'

status: stable · since: 0.1.0

Tags: multi-line, input, text

Anatomy

Label
┌──────────────────────────┐
│ │
│ multi-line input │
│ │
└──────────────────────────┘
Help / error

Layout

  • displayblock
  • widthfill
  • heightcontent
  • intrinsicSizefills width, default 4 rows
  • stackabletrue
  • fullBleedfalse

Visual

A multi-line text input wrapped with built-in label, description, and error message. Resizable vertically by default.

Props

NameTypeDefaultDescription
labelReactNodeVisible label.
descriptionReactNodeHelper text.
errorMessagestring | (v: ValidationResult) => stringError message.
placeholderstringPlaceholder.
rowsnumber4Initial visible rows.
resize'none' | 'vertical' | 'horizontal' | 'both'verticalUser resize affordance.
...restTextFieldPropsForwarded to react-aria’s TextField.

Tokens used

color.bg.surface.default, color.bg.surface.muted, color.border.default, color.border.focus, color.border.danger, color.text.primary, color.text.secondary, color.text.muted, color.text.action.danger, radius.md, space.2, space.3, font.family.sans, font.size.sm, font.size.md, font.weight.medium, font.lineHeight.normal

Accessibility

Notes

  • Built on react-aria-components TextField.

Composes with

ComponentRelationNote
FormparentInside Form.
TextInputalternativeTextInput for single-line.
RichTextEditoralternativeRichTextEditor for formatted content.
Fieldsibling

Prompt examples

These are the AI prompt → JSX mappings used by the helixui prompt DSL and integrations like Cursor / Claude Code.

comment box

“multi-line comment input”

<Textarea label="Comment" rows={4} value={c} onChange={setC} />