Skip to main content
PROYECTOVIVIANA

TextArea

A multi-line text input with label, description, and validation support. Shares the same accessibility and styling patterns as TextField.

Import

import { TextArea } from '@proyecto-viviana/solid-spectrum';

Basic Usage

A controlled multi-line text input.

Tell us about yourself

Characters: 0

const [value, setValue] = createSignal('');

<TextArea
  label="Description"
  value={value()}
  onChange={setValue}
  placeholder="Enter a description..."
  description="Tell us about yourself"
/>

Sizes

Small, medium, and large size variants.

<TextArea label="Small" size="sm" placeholder="Small..." />
<TextArea label="Medium" size="md" placeholder="Medium..." />
<TextArea label="Large" size="lg" placeholder="Large..." />

Validation

Required and invalid states with error messages.

Please enter a valid description (min 20 chars)
<TextArea label="Required" isRequired placeholder="Required field" />
<TextArea
  label="With Error"
  isInvalid
  errorMessage="This field is required"
/>

Variants

Outline and filled visual styles.

<TextArea label="Outline" variant="outline" placeholder="Outline style" />
<TextArea label="Filled" variant="filled" placeholder="Filled style" />

Disabled

A disabled TextArea cannot be edited.

<TextArea label="Disabled" value="Cannot edit this" isDisabled />

Props

PropTypeDefaultDescription
labelstringVisible label
valuestringControlled value
defaultValuestringUncontrolled initial value
onChange(value: string) => voidCalled on every keystroke
placeholderstringPlaceholder text
size'sm' | 'md' | 'lg''md'Size variant
variant'outline' | 'filled''outline'Visual style
isDisabledbooleanfalsePrevents interaction
isRequiredbooleanfalseMarks field as required
isInvalidbooleanfalseShows error styling
errorMessagestringValidation error message
descriptionstringHelper text below the field
rowsnumberInitial number of visible text rows

Accessibility

  • Uses native <textarea> for proper semantics
  • Label is associated via htmlFor / id
  • Error messages linked with aria-describedby
  • Required state communicated via aria-required
  • Invalid state communicated via aria-invalid