Data Display
v1.0.0Added in 1.0.0
A request's sign-off chain: who approved, who is next and who can still reject, with comments, reminders, history and a compact summary.
Read the chain top to bottom: a green check per approved step, a ring with a clock on the step that waits, numbers on the ones after it, and every approver with a status ring, a decision badge, the time and their comment. When it is your turn a tinted bar asks for your decision: write an optional comment (type @ to mention a colleague, arrows and Enter pick one), then press Approve, Request changes or Reject. Reject opens a dialog (a bottom sheet on phones) that focuses the reason field and will not go on without a reason; Cmd or Ctrl + Enter there confirms, Escape cancels and returns focus. Approve never fires from the keyboard shortcut: decisions are explicit clicks. While a decision saves the pressed button spins and the others wait; an error from the server shows under the buttons. Once it saves, the bar folds away and keyboard focus moves to the flow instead of getting lost. Late approvers get a Send a reminder button, amber once the step is overdue. The last approval pops the final marker with a small bounce. The History row folds the timeline open and closed. In the compact variant the summary (stacked avatars with rings, 2 of 3 approvals, the status) is a button that opens the whole flow in a popover, a sheet on phones. Wider than 512px a horizontal flow lays its steps in a row; narrower it stacks. Everything is announced to screen readers and reduced motion turns the springs into instant changes.
npx wingo-ui@latest add approval-flowPro item: the CLI needs a Pro account. See plans
Michael Hayes is the requester, so a teammate approves
required over $10,000
Overdue since 09/24/2026, 12:00 PMonly over $50,000
Your approval is needed
currentUserId: "u-jessica" · requireRejectComment: true · locale: "en-US" · onDecision → (none yet)