Internal World — the button is the loading state by Behzad GhaffarianInternal World — the button is the loading state by Behzad Ghaffarian

Internal World — the button is the loading state

Behzad Ghaffarian

Behzad Ghaffarian

A "Generate" button with a small world inside it. Ninety embers drift in the pill, flee your cursor, and when you press they collide, heat to amber and spring into the answer: DONE ✓.
No spinner, no progress bar, no width change. A 1–3 second wait is invisible work, so the work happens inside the thing you pressed.
Built in canvas with real physics (elastic collisions, springs to glyph points sampled from the label), aria-busy and a polite status region, a calm error path where the embers cool and fall to RETRY, and a reduced-motion fallback that swaps the label only.
Like this project

Posted Oct 20, 2026

A "Generate" button with a small world inside it. Ninety embers drift in the pill, flee your cursor, and when you press they collide.