Click and the button collapses into a spinning circle, holds while the work happens, then snaps back wide with a check that draws itself and a success label; three seconds later it is a button again. One element handles the whole idle → loading → done → idle cycle.
On click the script stores the pill's width, then sets `width: 52px` so the CSS transition (0.4 s, overshoot curve) shrinks it to a circle while the label fades; a border-spinner shows on the circle. When the task resolves the width transitions back to the stored value, the check path's `stroke-dashoffset` runs 60 → 0 over 0.4 s, and the label swaps to the success text. After 3 s everything resets. Repeated clicks during loading are ignored through `aria-busy`.
From prompt to a block in your page.
The preview is the shipped element inside a neutral demo page. Hover, click, focus: the one interaction it is about is live.
Token sets re-tint it live. The prompt carries the one you chose.
A paste-in snippet, or a component for Next.js, React, Vue, Astro, WordPress, Shopify or Webflow.
It quotes the markup, styles and script verbatim with the tokens and the rules that keep it self-contained.
It inherits your page's font and width; the tokens live on :root; several instances share one script.