01Ghost icons inside
When: The default fix for a narrow panel — the field keeps the full row width and the actions cost nothing.
Seen in: The input-adornment convention: a search field's clear ✕, a password reveal eye. Material UI calls it InputAdornment.
committed: Saf-T-Liner C2
02Brand confirm inside
When: Same as 01, but the commit is consequential enough to want a filled affordance rather than a ghost one.
Seen in: Compose/send fields — a filled primary sitting inside the composer's trailing edge.
committed: Saf-T-Liner C2
03Divided tray inside
When: Longer values, where an undivided icon pair can look like part of the text.
Seen in: Date/number steppers and currency selectors that partition a single control.
committed: Saf-T-Liner C2
04Attached group
When: You want the actions to read as real buttons (bigger hit target than an adornment) without paying for a gap.
Seen in: The classic input-group: Bootstrap's input-group, a search box with an attached Go button.
committed: Saf-T-Liner C2
05Compact icons beside (baseline)
When: The smallest possible change from today: same layout, 32px buttons instead of 40px. Still costs ~72px of row.
Seen in: This is the current ValueChangeField, one size down.
committed: Saf-T-Liner C2
06Buttons below
When: Words beat glyphs — the commit is worth labelling, and the panel has vertical room to spare.
Seen in: GitHub comment editing; Jira and Confluence inline edit both drop a Save/Cancel pair under the field.
committed: Saf-T-Liner C2
07Actions on dirty only
When: Fields opened to read as often as to change. The appearing row doubles as the unsaved-changes cue.
Seen in: Settings panes that reveal a Save bar the moment something changes.
committed: Saf-T-Liner C2
08Commit on blur
When: High-frequency editing where confirmation is friction. Needs an undo path — there is no cancel button to reach for.
Seen in: Notion, Linear, Airtable, Google Sheets — click away and it's saved.
committed: Saf-T-Liner C2
09Keyboard hint only
When: Dense, power-user surfaces. Discoverable only by reading the hint, so it fails a mouse-only audience.
Seen in: Slack's message editor spells out 'escape to cancel · enter to save' beneath the box.
committed: Saf-T-Liner C2