Arcana UI
Components

Textarea

Multiline text input with auto-resize, character count, and full form integration.

Import

import { Textarea } from '@arcana-ui/core'

Usage

<Textarea label="Message" placeholder="Type your message..." />
<Textarea label="Bio" maxLength={160} showCount />
<Textarea label="Notes" autoResize />
<Textarea label="Description" rows={6} />
<Textarea label="Feedback" error="Please describe the issue" />
<Textarea label="Readonly" readOnly value="Can't edit this" />

Props

PropTypeDefaultDescription
labelstringVisible label
hintstringHelper text below the textarea
errorstringError message (sets aria-invalid)
autoResizebooleanfalseGrow with content automatically
showCountbooleanfalseShow character count (requires maxLength)
maxLengthnumberMaximum character limit
rowsnumber3Initial row height
classNamestringAdditional CSS classes on wrapper
...restTextareaHTMLAttributesAll native textarea attributes

Auto-resize

<Textarea
  label="Notes"
  autoResize
  placeholder="This textarea grows as you type..."
/>

Character count

<Textarea
  label="Bio"
  maxLength={160}
  showCount
  placeholder="Tell us about yourself"
/>

Shows a live counter like "0 / 160" that updates as the user types. When over the limit, the counter turns red.

Controlled

const [text, setText] = useState('')
 
<Textarea
  label="Message"
  value={text}
  onChange={(e) => setText(e.target.value)}
  maxLength={500}
  showCount
/>

Accessibility

  • Same label/error association as Input via htmlFor and aria-describedby
  • aria-invalid set when error is provided
  • Character count announces to screen readers via aria-live
  • Input — single-line text
  • Form — form layout and validation

On this page