A drop zone that reacts as a file approaches: the dashed border pulls tight into a solid accent ring, the icon lifts, and on drop each file appears as a row with a progress bar that fills (simulated here) and a remove button. Clicking the zone opens the native picker; images get a thumbnail.
`dragenter` increments and `dragleave` decrements a counter; `.over` is on while it is > 0, swapping the 2 px dashed fg@25% border for a solid accent ring and lifting the icon 4 px (0.2 s). Drop or picker change builds rows; each row's bar animates width 0 → 100 % over a random 0.8–1.6 s (replace with real upload progress). Remove revokes the object URL.
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.