States

All five states from Figma — Default, Focus (click in), Filled, Error, Disabled.

Default
Filled
Error
Disabled

Sizes

sm · 32px
md · 40px
lg · 48px

Adornments

Leading and trailing icons are ReactNode props. Error state auto-injects a trailing error icon when no trailingIcon is set.

Leading icon
Trailing icon
Error icon

FormField

Bundles label, input, helper text, and error state into a single self-contained component. Wires htmlFor/id and aria-describedby internally.

We'll never share your email.

Read-only — contact support to rotate.

Tokens used

bg/baseInput background
bg/disabledDisabled background
border/subtleDefault border color
action/primaryFocus border color
status/errorError border + icon color
border/disabledDisabled border color
border-width/baseDefault border width (1px)
border-width/boldFocus border width (2px)
text/baseInput text
text/subtlePlaceholder + icon color
text/disabledDisabled text + icon
radius/mdInput container border radius
space/3, space/4Horizontal padding by size
body/sm, body/md, body/lgFont size by size variant
Figma: Done — 90 variantsReact: v1Textarea variant: v2