ELEMENTS / BUTTONS
A fill sweeps across the button instead of a separate spinner or toast: a determinate Save, an indeterminate Sync (duration and outcome aren’t known up front, so it sweeps rather than counts), and a multi-stage Publish that hands off between validate, upload and publish.
Save · determinate
Sync · indeterminate
Publish · multi-stage
Nothing in flight.
Every run is simulated locally · nothing leaves this preview