Multiline text input with FormField chrome and optional autosize.
Introduction
Use Textarea for multiline text entry. Bridge UI provides a dedicated Textarea component instead of combining multiline behavior into TextField.
Choose Textarea when users need to enter paragraphs, comments, or other long-form content. It supports rows, optional autosize, and textarea-specific resize behavior. Use TextField for single-line inputs such as names, emails, or search queries.
Import
import { Textarea } from "@bridge-ui/vue/Components/Textarea";import { Textarea } from "@bridge-ui/react/Components/Textarea";Basic usage
Set rows to control the initial height. Bind the value with value/onChange in React or v-model in Vue. For uncontrolled usage with an initial value, use defaultValue in React or default-value in Vue.
Sizes
Control the textarea size with the size prop. Available sizes: 2xs, xs, sm, md (default), lg, xl, and 2xl.
Rounded
Use the rounded prop to control border radius. Available values: none, xs, sm, md, lg, xl, 2xl, 3xl, 4xl, and full (defaults vary by component).
Autosize
Enable autosize to grow the textarea as the user types. The native resize handle is disabled when autosize is on.
Validation
Set error and errorMessage to show invalid styling and an error message below the field.
Accessibility
Textarea follows the same FormField accessibility pattern as TextField:
- The label is associated with the textarea via htmlFor / id, using controlId.
- description and errorMessage are linked through aria-describedby.
- When error is true, the textarea receives aria-invalid="true".
Anatomy
Textarea composes FormField around a native <textarea>:
FormField (root)
├── Header — label, optional corner text, required indicator
├── Container — variant shell
│ └── Textarea — native multiline input
└── Footer — description or error messageWhen autosize is enabled, the textarea height grows with content and the native resize handle is disabled.
API
| Prop | Type | Default | Description |
|---|---|---|---|
| default-value | string | — | Initial value for uncontrolled usage (without v-model). |
| v-model | string | — | Two-way binding for the textarea value. |
| Prop | Type | Default | Description |
|---|---|---|---|
| defaultValue | string | — | Initial value for uncontrolled usage. |
| onChange | ChangeEventHandler<HTMLTextAreaElement> | — | Native textarea change handler. |
| value | string | — | Textarea value. Use with onChange for controlled state. |
Native textarea attributes (rows, placeholder, maxLength, etc.) are merged onto the textarea element.
Textarea-specific
| Prop | Type | Default | Description |
|---|---|---|---|
| autosize | boolean | — | Whether the textarea resizes with its content. Defaults to true when likeInput is set. |
| likeInput | boolean | false | Compact TextField-like sizing. Enables autosize and rows={1} by default. |
| resize | TextareaResize | "none" | Native resize handle. Ignored when autosize is true. |
Inherited from FormField
| Prop | Type | Default | Description |
|---|---|---|---|
| classes | FormFieldClasses | — | Class overrides per part. |
| color | FormFieldColor | "primary" | Color applied to the field control. |
| controlId | string | — | Associates labels and helper text with the control. Auto-generated when omitted. |
| corner | string | — | Secondary label text at the inline end of the header row. |
| customProps | FormFieldCustomProps | — | Props for each part. label accepts Label props (without children); error label colors come from Label. |
| description | string | — | Helper text below the control. Hidden when error and an error message are set, unless showDescriptionOnError. |
| disabled | boolean | false | Whether the control is disabled. |
| end | string | — | Inline-end text inside the field (suffix). |
| endIcon | IconSource | — | Icon at the inline end. |
| error | boolean | false | Applies invalid styling. Hides description when an error message is shown, unless showDescriptionOnError. |
| errorIcon | IconSource | "alert" | Icon shown when invalid and showErrorIcon is enabled. |
| errorMessage | string | — | Error message below the control. |
| hideErrorMessage | boolean | false | Does not reserve the error row. That row is also omitted while a description is shown. |
| label | string | — | Primary label text above the control. |
| readonly | boolean | false | Whether the control is read-only. |
| required | boolean | false | Shows a red asterisk on the label. |
| rounded | FormFieldRounded | "md" | Border radius of the field control. |
| showDescriptionOnError | boolean | false | Keeps the description visible while the field is invalid. |
| showErrorIcon | boolean | true | Shows an error icon when invalid. |
| size | FormFieldSize | "md" | Typography and control sizing. |
| slots | FormFieldSlots | — | React slots. Vue: #label, #corner, default, #description, #errorMessage, #start, #end. |
| start | string | — | Inline-start text inside the field (prefix). |
| startIcon | IconSource | — | Icon at the inline start. |
| variant | FormFieldVariant | "outline" | Visual variant of the field shell. |