Loader
The app's waiting state: the Adside coin spinning around its vertical axis, with optional eyebrow/caption copy, determinate progress, and a rotating pool of feature tips. Pass isPending for long operations to gate the educational layer; omit it for always-on route loading states.
Bare spinner
CoinSpinner on its own — the smallest waiting state. Honors prefers-reduced-motion (static coin).
Indeterminate with tips
Default. Tip rotation interval shortened to 3.5s for preview — production default is 7s.
With determinate progress
When progress is measurable, the bar replaces the indeterminate loader and the tip stays as secondary content.
No tips fallback
If the tips array is empty or omitted, the component degrades to a clean loader. Useful for surfaces that don't have a tip pool yet.
With image tips
Tips can include a 16:9 image. Renders flush to the top of the card. Uses next/image with unoptimized for remote URLs.
With video tips
Tips can include a 16:9 looping video. Autoplays muted/inline; the poster image carries the frame for users with prefers-reduced-motion enabled.
Interactive — full lifecycle
Click 'Start' to simulate a 12-second operation. You'll see the 800ms mount gate, tip rotation every 3.5s, and the grace exit that holds the current tip up to 1.5s after the operation finishes.