Feedback
11 componentsA failure is a sentence on the screen, never a toast. A toast that disappears takes the only evidence with it. And a tooltip is a glance — past about 160 characters the reader has to stop and read, and a thing that must be read belongs on the page.
Nothing yet
Says what would put something here, rather than that there is nothing.
Nothing matches
Names the filter in force, and offers to clear it.
Admins only
A refusal is a sentence: who you are, what the screen decides, and a way out.
Never a centred spinner on an empty page: it says something is happening and nothing about what. Two tokens, so a skeleton is never a grey block on a warm page.
A bar with no figure beside it is a guess dressed as a measurement. This is for a job with a known end — an upload, a quota. `Metric`'s `progress` is a 5px track against a TARGET, which is a different question.
No counties match
Clear a filter to see rows here.
For a slot inside something — a chart with no data, a table body, a panel. The full `EmptyState` is a Card, and a Card inside a Card is the thing the layout rules forbid.
A failure never goes in a toast. A toast disappears, and it takes the only record of what went wrong with it. Failures are an Alert on the screen, beside the thing that failed.
`Toaster` (sonner) is in the kit for the other case: confirming something that SUCCEEDED and needs no action — "Copied", "Link sent". If the reader has to do anything about it, it is not a toast.
Turn it on and Shift+Click any specimen above. The form asks two things; the element, the screen, the numbers around it, the console and the route you took to get here are already captured. Reports go to an in-memory store and are gone on reload.
Queue
Loading reports…