All studies

Interaction

Async status button

One button carries a long job from start to finish: it resizes to each label, rolls through reading and drafting, and lands on a sprung check.

05 / 74

Where it earns its place

AI features and slow submits where the person needs to see progress without a separate loader: generating a brief, running an audit, sending a proposal.

What we changed

  • Recast as the brief assistant from an AI integration, with a real prompt and a three-line brief that arrives when the job is done.
  • Kept the original's keyed label swap and the check that springs in a beat after its label.
  • Labels are measured and the width springs to fit each one, instead of a fixed min-width that leaves short labels floating.
  • Split loading into two named steps and made labels roll forward on progress and backward on reset, so direction carries meaning.
  • Uses aria-disabled rather than disabled so keyboard focus survives the job, plus aria-busy and a live region; reduced motion swaps labels instantly.