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.