Component library
Your bank declined this card
Nothing was charged. This usually means a limit or a block on online payments, not a wrong number.
The most expensive error in any product, handled properly: the card stays, the reason is named, and two next steps are offered.
Waiting for the server…
Still open. We will stop at 30 seconds.
The ambiguous failure, handled honestly: packets that leave and never land, and a screen that admits the request may have gone through.
403
This page exists
Your account just is not on its list. You are signed in as sam@acme.co.
or switch to another account
A permission wall that says the page exists, names the account you are signed in as, and turns the dead end into a request.
This page bounced somewhere else
The zero escapes the 404, bounces, squashes and rolls back into line
An image slot that fails gracefully: shimmer, a gentle torn-photo drop-in, and a one-tap retry.
That one is on us
The server failed while loading this page. Nothing you did caused it and nothing you saved was lost.
send this id to support
A server error that takes the blame, says nothing was lost, and hands over the one string support actually needs.
Hazard stripes crawl while the wrench works and the ETA counts down
The page greys out as an offline pill floats up from the bottom
A rate limit that owes you two numbers: how long the wait is, and what the limit actually was.
An error card that counts down on a ring, retries itself, and lands on a drawn-in success check.
A session-expiry pill with a draining time bar; one tap keeps you signed in with a springy confirm.
A friendly crash card: wobbling plug, mono error code, retry that spins
Browse by type
We'd like to measure how the site gets used, with Google Analytics. It sets cookies. Everything the site needs to work runs either way. How we handle data