FSAI Design System
Components

Text Area

Multi-line text field that composes Label, TextAreaPrimitive, and FieldError.

Overview

TextArea is the shared multi-line text field used for notes, descriptions, summaries, and longer freeform input.

It composes:

  • Label
  • TextAreaPrimitive
  • FieldError

Use it the same way you would use Input, but when the content should span multiple lines.

Basic Usage

<TextArea
  label="Description"
  placeholder="Add more context"
  rows={5}
/>

With react-hook-form

<TextArea
  label="About"
  {...register('about')}
  error={errors.about?.message}
/>

This is the standard pattern used in brand-overview editing surfaces.

Props

TextArea supports:

  • label
  • error
  • all normal textarea HTML props such as value, defaultValue, onChange, placeholder, rows, disabled, id, and className

Primitive Relationship

For raw multi-line input styling without label or error handling, use TextAreaPrimitive directly.

For normal forms, use TextArea.

Brand Dashboard And Shared Usage

PatternPathNotes
Brand story editingfsai/packages/shared-ui/src/modules/brandOverview/components/BrandStoryTab/BrandStoryTab.tsxStandard labeled long-form editing field.
Brand overview metadatafsai/packages/shared-ui/src/modules/brandOverview/components/BrandOverviewTab/BrandOverviewTab.tsxUsed alongside other form controls in a card.
Dynamic details editingfsai/packages/shared-ui/src/components/DetailsGrid/DetailsGrid.components.tsxUsed for editable long-text fields inside a richer editing surface.

Guidelines

  • Do use TextArea for descriptions, notes, and other multi-line content
  • Do pass error={errors.field?.message} in forms
  • Do use TextAreaPrimitive only when you explicitly need raw styling without field shell behavior
  • Don't use Input for content that should naturally wrap across lines

On this page