Stateful — A Button System Built for Every State

A documentation-grade teal button system: 8 interactive states (default, hover, active, focus-ring, disabled, loading spinner, success check, icon-only) across solid, outline and ghost variants in three sizes, with an async click-to-confirmation flow, all in pill-shaped Inter buttons on a clean slate canvas.

Stateful — A Button System Built for Every State preview

Summary

A complete, state-aware button system on a light slate canvas with a teal accent. One sticky-nav landing page that documents the full button kit: an 8-state x 3-variant matrix (default, hover, active, focus-ring, disabled, loading spinner, success check, icon-only), an icon-button bank on a dark panel, a small/medium/large size ladder, and a horizontal idle-to-success async lifecycle. Pill-shaped buttons, Inter typeface, generous rounded panels with soft shadows.

Style

Crisp, documentation-grade product style. Light slate background, near-black ink text, a single teal accent used for primary actions and rings. Fully rounded (pill) buttons, large 22px-radius white panels with hairline borders and soft layered shadows, a faint teal dot-grid background texture, and one dark contrast section for the icon-button bank.

Layout & Structure

A single vertical landing page, max-width ~1152px (max-w-6xl), centered. Sticky translucent header, two-column hero with a floating live-preview card, a full-width state matrix panel, a dark icon-button bank, a three-column size ladder, a centered async-flow strip, a centered CTA panel, and a slim footer. Collapses to single column and stacked cells on mobile.

Sticky nav

Hero

State matrix

Icon button bank

Size ladder

Async lifecycle strip

CTA panel

Footer

Special Notes

Single teal accent only; do not introduce other hues. Buttons must be fully pill-shaped (radius 9999px) and use Inter. Every variant must render all eight states, and the focus ring must be the exact double-shadow #f8fafc + #5eead4. Keep one dark (ink-900) section for the icon-button bank for contrast; everything else is light slate. Loading uses an animated spinner, success uses a check icon, disabled uses muted slate. No em-dashes in copy.

Use this prompt