Skip to main content
Cayuse Design System Lato · 4pt grid · WCAG 2.1 AA

Components · Inputs

Text Area

Multi-line free text. Identical to Text Input in every state; the difference is that the user can see, and should be able to resize, more than one line at a time.

Figma source: Text Area ↗

Examples

Resizable text area
Plain text. Drag the lower-right corner to resize.
html
<div class="cds-field">
  <label class="cds-field__label" for="abstract">Abstract</label>
  <textarea class="cds-textarea" id="abstract" rows="4"
            aria-describedby="abstract-help"></textarea>
  <span class="cds-field__caption" id="abstract-help">Plain text.</span>
</div>
States
Placeholder
Error
Disabled

Figma properties

PropertyValuesNotes
StateDefault · Focus · Disabled · ErrorSame four states as Text Input.
Text TypeBlank · Placeholder · EnteredCurrent contents.
Entered Text / Placeholder CopytextValue and hint.

Usage

When to use it

  • Use where the expected answer runs to a sentence or more — abstracts, justifications, comments.
  • Set rows to roughly the expected answer length, so the field itself signals how much to write.
  • Keep vertical resizing available.
  • Show a character counter when there is a hard limit — and let the user exceed it while telling them by how much, rather than silently truncating.

When not to use it

  • Do not use for a single short value.
  • Do not disable resizing.
  • Do not use for formatted content — that is the Rich Text Editor.
  • Do not let the field grow wider than about 70 characters; long lines are hard to read back.

Accessibility

  • Same labelling rules as Text Input: <label for>, aria-describedby, aria-invalid.
  • Horizontal resizing is disabled deliberately — widening past the container breaks reflow at 320px and fails SC 1.4.10.
  • If a character counter is present, mark it aria-live="polite" so the remaining count is announced without interrupting typing.

Tokens consumed

TokenApplied toResolves to
--input-backgroundField fill--color-white
--input-borderResting border--color-gray-400 → #888c8c
--input-textEntered value--color-black → #111111
--input-focus-borderFocus ring--focus-ring → #44a3db ⚠
--input-error-backgroundFill in error--color-red-100
--input-error-borderBorder in error--color-red-500
--input-disabled-backgroundFill when disabled--color-gray-100
--input-disabled-textValue when disabled--disabled-text → #888c8c
--input-labelLabel--color-black
--input-requiredRequired asterisk--color-red-500
--input-captionHelp text and placeholder--color-gray-500
--input-error-captionError message--color-red-500