All studies05 / 74
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.
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.