Skip to main content

What it is

The text stack that identifies a field and reports its state: the label, an optional required-or-optional marker, and — beneath the field — helper text that becomes error text the moment the field is invalid. This page covers the whole labeling concept, not just the visible label word. FieldLabel is never used alone; every Forms component composes with it.

Live example

Exports

This page treats the label, helper text, and error text as one authored concept because a reader makes one decision about all three together.

Vocabulary

Field label and control label are two different layouts, not two words for one thing. A field label sits above a stacked control (Input, Select) and is what this page’s Tokens section calls form-label-font-weight. A control label sits inline beside Checkbox, Radio, or Switch, and is governed by a different token, form-control-label-min-height. Confusing the two produces a request for “the label’s font weight” against a component whose label is inline and unrelated to that token.

Choose FieldLabel when

  • A reader fills in or chooses a value for a field. There is no field exempted as “obvious enough” to skip a visible label — see TITAN-FLD-01.
  • The field needs to report something beyond present-or-absent: that it is required, that it failed validation, or a hint that a placeholder cannot hold once the reader starts typing.

Choose something else when

Anatomy

Variants, sizes, and states

Edge and failure states

Tokens

Composition

Pairs with every Forms component, in one of two positions per Vocabulary: above a stacked field (Input, Select, DatePicker) or beside an inline control (Checkbox, Radio, Switch). Reading order top to bottom for a stacked field is label, field, then helper or error text.

Content

Accessibility

What this component does not handle: deciding when a field is invalid, or moving focus to the first invalid field on submit — both belong to Form validation.

Constraints

Retired

Known issues

FieldLabel: open issues

Divergences, open decisions, and undocumented gaps for FieldLabel.

Why it works this way

One slot for helper and error, not two. A field whose height changes when it becomes invalid moves every control below it — the same problem Button solves by holding its width while loading. Sharing one slot keeps a form’s layout stable regardless of validation state. Field label and control label are kept as separate vocabulary because they are separate layouts with separate tokens, not a single idea expressed two ways. Merging them would make “the label” ambiguous on exactly the two component types — checkboxes and switches — where getting the position wrong is most visible. Required is the unmarked default, optional is the marked exception, per TITAN-FLD-02, because most fields in a typical form are required — marking the majority case saves less reading than marking the minority case does.

Status

  • Input · Select · Checkbox — every field-style and control-style component composes with this one
  • Form validation — decides when a field is invalid
  • UI labels — casing and phrasing rules this page’s Content section follows
Last modified on September 2, 2026