Field
Molecule
A form row: a label, the control, and one message line under it. Field exists for the part no control owns on its own: every field family already owns its label, but nothing else in the kit renders helper or error text, so that message is what Field adds.
Playground
Every control sets a real prop of FieldProps. The JSX below updates as you go.
Web
iOS
Android
JSX · FieldProps
Variants
11 examples from src/molecules/field/field.md, each rendered live from its own JSX.
States
Hover, focus and press are pinned so they can be compared side by side; the rest are real props.
Anatomy
1
Label
2
Control
3
Helper or error
4
Required mark
Dimmed parts appear only in some states or variants.
Props
7 props on FieldProps, grouped as they are declared in source. Required props are marked *.
MeasureProps · width steps xxxs 192 · xxs 256 · xs 320 · sm 384 · md 448 · lg 512 · xl 576 · xxl 672 · xxxl 768 · wide 896 · wider 1024 · widest 1152 · page 1280, plus start to pin to the leading edge.
Accessibility and keyboard
Keyboard
Type
Edits the value
Tab
Next field
Escape
Clears when clearable
Semantics
Roles
alert
ARIA on web
aria-describedby
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
When the row wraps a single field-family control that has no label of its own, Field hands the label down to it rather than drawing one alongside, so each platform still places it its own way: a static title above on web and iOS, the floating in-container label on Android, and required goes down with it. Over any other control (a Switch, a group) Field draws the label above with its star, and on iOS and Android the label says "required" in its own name. Set error and it replaces helper in the same slot, so the row never changes height and nothing below it jumps; on the web an error leads with a small alert glyph.
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--bg2
--fd
--ft
--ln2
--tx2
--tx3