Tab Bar
TabBarComponent (tabs: array of {label, icon, href, active, flag}). One page per section, sections visitable and savable in any order: no forced sequence. Replaced a circular numbered-step pattern for all three edit surfaces (Sale, Product, Publisher) once it became clear none of them are actually linear: sale type can be changed at any point, and a draft sale can be saved and resumed across sessions in any order. There is no stepper pattern anywhere in the app today; the two short confirmation flows that used to have one (Order/Refund, Payouts) turned out not to need it either, since a plain back-link and the step's own heading already say where you are.
Tab bar with a completeness flag
The small dot (.tab-bar__tab-flag) marks a section with missing or flagged data, visible even when that tab isn't the active one. It's a coarse "something needs attention here" signal; the specific missing fields live in the Progress checklist below, not in the tab itself.
Paired with the completeness sidebar (.console-layout)
Unlike a stepper's progress bar, this checklist is keyed to DATA STATE, not navigation position: every section's fill status is visible and correct regardless of which tab is currently open, so a user filling things out of order still sees gaps in sections they already left. The Tips panel below it changes copy per section and never repeats what the checklist already shows.