form-field — wyrd.component.textarea

Textarea

Multiline text input field with label, description, validation state, and one canonical value-change event. Flutter ignores the web-only resize affordance.

Install @wyrd-company/react or the Flutter package and use it directly — your DESIGN.md does the styling.

01

Examples

Generated from the contract's examples block. Previews are the published @wyrd-company/react component, themed by the brand's role tokens — flip the site's light/dark toggle and they follow.

Code target Applies to every example on component pages.
empty state: default

Add context for collaborators.

Usage
import { WyrdTextarea } from "@wyrd-company/react";

<WyrdTextarea rows={3} label="Notes" description="Add context for collaborators." />

// events: onValueChange
filled state: filled
Usage
import { WyrdTextarea } from "@wyrd-company/react";

<WyrdTextarea defaultValue="Bob prefers concise written updates." rows={4} label="Notes" />

// events: onValueChange
invalid state: invalid
Usage
import { WyrdTextarea } from "@wyrd-company/react";

<WyrdTextarea value="" isInvalid isRequired rows={3} label="Notes" error="Notes are required." />

// events: onValueChange
02

Properties

NameTypeDefaultSummary
value string undefined Controlled text value.
default-value string undefined Initial uncontrolled text value.
rows integer 3 Visible text rows.
resize none | vertical vertical User resize affordance on web; Flutter ignores this property.
is-disabled boolean false Prevents editing and exposes disabled semantics.
is-required boolean false Marks the field as required.
is-invalid boolean false Marks the value as invalid and associates the error slot.
03

Slots & events

SlotCardinalityAcceptsSummary
label exactly-one text Visible label and accessible-name source.
description zero-or-one text Help text associated with the input.
error zero-or-one text Validation error associated when is-invalid is true.
EventPayloadSummary
value-change value, action Canonical value-change event carrying the next string value.
04

Tokens

The contract's token bindings. Open the shared contextual sidebar from any example; primary swatches reflect the color you pick there. Error swatches show the active preset's values; editing any knob switches to custom and resets error to TWW · Ink.

BindingToken
root.gap spacing.xs
label.color color.on-surface
label.text typography.label-md
control.background color.surface
control.foreground color.on-surface
control.placeholder color.on-surface-variant
control.border-color color.outline
control.border-color-focus color.primary
control.border-color-invalid color.error
control.border-width 1px
control.radius rounded.sm
control.padding-x spacing.md
control.padding-y spacing.sm
control.text typography.body-md
description.color color.on-surface-variant
description.text typography.body-md
error.color color.error
error.text typography.body-md
05

States

StateSourceSummary
default platform Empty enabled state.
focus-visible platform Keyboard-visible focus state.
disabled property Disabled state derived from is-disabled.
invalid property Invalid state derived from is-invalid.
required property Required state derived from is-required.
filled property State when value or default-value has content.
06

Accessibility

From the contract's accessibility obligations. Role textbox; Label slot provides the accessible name.

  • Text input follows platform editing keys.
  • Tab moves focus into and out of the field in document order.
  • Required, invalid, and disabled states are exposed through platform semantics.
  • Error text is associated only when invalid.
  • The control exposes multiline text entry semantics where the platform supports it.
  • Verified under: rtl, reduced-motion, cvd-deuteranopia, density-compact, text-expansion.
07

SDUI

Status: serializable. Value-change serializes to a named binding/action channel; resize is a web-only affordance ignored by Flutter.

SerializableMembers
Propertiesvalue, default-value, rows, resize, is-disabled, is-required, is-invalid
Slotslabel, description, error
Eventsvalue-change
The Wyrding Way — a contract-first design system. © Wyrd Company