Input
Single-line text entry — token-driven hover, focus ring, validity styling.
Use Input for any short string value: workspace name, slug, email, phone, free-form notes. Pair with Field for label + hint + error semantics. For dense lists or table-inline editing use size="sm".
Install
Pull from the workspace packages (already available if you ran pnpm add):
Examples
Basic
Pair with Field to get a labelled, accessible group out of the box.
Sizes
Match the input height to the surrounding form density.
With slots
startSlot for type hints, endSlot for units, badges, or a dropdown caret.
Invalid & disabled
invalid switches the border to --t-color-red and the focus ring to red transparent. Disabled is set via the disabled prop, not CSS.
Variants
size
sm24 px tall — dense lists, table inline-edit cells.mddefault32 px tall — default form surface (settings, dialogs).Guidelines
✓
Wrap an Input in Field when it has a label, hint, or error.Field wires the label↔input via htmlFor and renders hint/error next to the control with correct typography.
✓
Use startSlot for icons that disambiguate the value (mail, money, URL).Icons cut the user’s scanning time roughly in half on multi-field forms.
✕
Use a bare Input as a "search this list" field.SearchInput already ships the magnifier icon, clearable affordance, and type="search" semantics.
✕
Hide errors in the placeholder.Placeholders disappear on focus — pass the message to Field’s error prop so it stays visible.