- Status chip · Badge
The square badge that says what state a thing is in: dot plus label on a 12% soft fill. One vocabulary for the whole admin, owned by status-feedback; catalogue items are always Draft, Available or Retired. - Status filter chip · ToggleGroup
A pressable chip with a count that filters a list by status. The counts on a filter row always add up to the total the page shows. - Environment badge · Badge
Tells staff which copy of the admin they are in: STAGING in ochre, PRODUCTION and LOCAL in slate. Sits in the top bar, right, before the help trigger. - Alert and banner · Alert
An inline message block (Alert) or a full-width strip under the top bar (Banner). Six kinds: info, success, warning, danger, **locked** and **not wired** (the feature exists but the backend is not connected). - Toast · Sonner
A short confirmation that rises from the bottom right and leaves on its own: success, error, warning, info, **undo** and progress. Built as Sonner in the app. - Empty state · composed
What a list or panel shows when it has nothing: first use, no results for a filter, or no permission. Says what is missing and offers the one next step. - Skeleton · Skeleton
Grey shapes in the final layout while data loads, pulsing slowly on one shared token. Off under reduced motion. - Spinner and progress · Progress
A spinner for short, unknown waits inside a control; a progress bar for jobs with a known size (cloth sync, bulk import) and an indeterminate bar for the page loader. - Error states · Alert
Three sizes of failure: an inline error inside a panel, a partial failure that lists what failed and what worked, and a page-level error when the whole surface cannot load. Each names the real cause.