Components/Inputs/Textarea

Textarea

Inputs

Multi-line text area that auto-grows with content.

Grows vertically as the user types, bounded by minRows and maxRows. Uses a hidden mirror div to measure height without layout jank. Same variant, label, and error system as TextInput.

Usage

import { Textarea } from "nosible-ux"

export default function Example() {
  return (
    <Textarea
      label="Signal notes"
      placeholder="Add context for this watchlist entry..."
      minRows={3}
    />
  )
}

Examples

Bounded growth

Error state

Accessibility

Renders a textarea element. label, error, and description behave identically to TextInput. aria-invalid is set automatically when error is present.

Props

Name TypeDefaultDescription
description
string | undefinedHelper text below the textarea. Suppressed when `error` is present.
error
string | undefinedValidation error. Sets `aria-invalid` and renders Critical Red text.
label
string | undefinedLabel rendered ALL-CAPS in Space Mono above the textarea.
maxRows
number | undefinedundefined (unbounded)Maximum rows before the textarea stops growing and scrolls.
minRows
number | undefined3Minimum number of visible rows.
size
"sm" | "md" | "lg" | undefined"md"Visual size — controls padding and text size.
variant
"default" | "filled" | "outline" | undefined"default"Visual variant.