The Textarea component provides a multi-line text input with configurable resize behavior, variants, and sizes.
Basic Usage
import { Textarea } from "@paramanu/forms-react"
export default function App() {
return <Textarea placeholder="Enter text..." rows={3} />
<textarea class="pm-textarea pm-textarea--outline pm-textarea--md pm-textarea--resize-vertical" rows="3" placeholder="Enter text..."></textarea>
Variants
import { Textarea } from "@paramanu/forms-react"
export default function App() {
<Textarea variant="outline" placeholder="Outline" />
<Textarea variant="filled" placeholder="Filled" />
<Textarea variant="unstyled" placeholder="Unstyled" />
<textarea class="pm-textarea pm-textarea--outline pm-textarea--md pm-textarea--resize-vertical" placeholder="Outline"></textarea>
<textarea class="pm-textarea pm-textarea--filled pm-textarea--md pm-textarea--resize-vertical" placeholder="Filled"></textarea>
Resize Options
import { Textarea } from "@paramanu/forms-react"
export default function App() {
<Textarea resize="none" placeholder="No resize" />
<Textarea resize="vertical" placeholder="Vertical" />
<Textarea resize="both" placeholder="Both" />
<textarea class="pm-textarea pm-textarea--outline pm-textarea--md pm-textarea--resize-none" placeholder="No resize"></textarea>
<textarea class="pm-textarea pm-textarea--outline pm-textarea--md pm-textarea--resize-vertical" placeholder="Vertical"></textarea>
<textarea class="pm-textarea pm-textarea--outline pm-textarea--md pm-textarea--resize-both" placeholder="Both"></textarea>
Accessibility
| Feature | Detail |
|---|
| Keyboard | Standard textarea keyboard behavior |
aria-invalid | Applied when invalid is true |
aria-disabled | Applied when disabled is true |
| Focus ring | Visible via :focus-visible |
Best Practices
- Always pair with a visible
<label> or aria-label.
- Use
resize="none" only when the layout requires fixed dimensions.
- Set appropriate
rows for expected content length.
Props
| Prop | Type | Default | Description |
|---|
variant | "outline" | "filled" | "unstyled" | "outline" | Visual variant |
size | "xs" | "sm" | "md" | "lg" | "md" | Textarea size |
resize | "none" | "vertical" | "horizontal" | "both" | "vertical" | Resize behavior |
invalid | boolean | false | Invalid state |
disabled | boolean | false | Disabled state |
readOnly | boolean | false | Read-only state |
fullWidth | boolean | false | Full-width layout |
rows | number | - | Visible text lines |
CSS Classes
| Class | Description |
|---|
pm-textarea | Base class |
pm-textarea--outline | Outline variant |
pm-textarea--filled | Filled variant |
pm-textarea--unstyled | Unstyled variant |
pm-textarea--resize-none | No resize |
pm-textarea--resize-vertical | Vertical resize |
pm-textarea--resize-both | Both directions |