Loading button · Mono
An async action button that morphs from its label to a spinner while the promise runs, then to a success or error state, and announces each step.
Design · Mono19 / 20
Black pill; success and error stay black-and-white and rely on the drawn check or cross.
Motion
The label shrinks away into a lone spinner, which pops into a drawn check (or cross with a shake) when the promise settles.
Accent
An async action button that morphs from its label to a spinner while the promise runs, then to a success or error state, and announces each step.
buttonloadingspinnerasyncsubmitsuccesserrorform