Status banner
canonOne sentence about the state of a page or a record, with an optional glyph, actions and dismiss; tones neutral, accent, positive, critical (no warning tone).
Owner approved wave A on 4 Oct 2026 (acrm !4579) and wave B on 6 Oct 2026 (acrm !4794, prototype proto/status-banner-b@83b789cc6). Wave A replaced .resv*, .fin-gap-banner, .zav-bez-smlouvy, .imp-reserved, .sr-rep-banner. Wave B replaced the dialog and accounting boxes .acc-fail (4 copies), .acc-warn, .acc-inv-warn, .pay-item-detail__warn, .aichat-warn, .ppf-conflict-title, .tl-log-fail; added title (tone only on glyph + title, body --fg) and actionsPlacement=below (RULES §15.6). No warning tone (RULES §15). Out of scope: .acrm-imp-banner, .dg-strip, .deal-cta; import K ověření / Konflikty still on .imp-reserved CSS until the owner decides. Dev checks: 4 Oct Závazky critical 1:1 with real data; 6 Oct Nová analytika rejected save = critical compact in the dialog, 1440/390 light/dark, brown 0, old classes 0. Other wave-B states not reachable with dev data (verified on fixtures in !4794, 46/52 pairs 0 px). Registry repaired 17 Oct 2026 (review F5): GoogleConnectBanner, RelationshipStatusBanner, RepBanner live in apps/web (see files), not exported by @acrm/ui; dropped from react[].
Used in 40 files · 26 areas · 69× — components/accounting, components/ai-employees, components/assistant, components/callwrapup, components/clen-tymu, components/decisions …
@acrm/ui <StatusBanner>.acrm-statusbanner .acrm-statusbanner.compact .acrm-statusbanner.is-neutral .acrm-statusbanner.is-accent +4SourceStoryOne sentence about the state of a record or a page, with an optional glyph, actions and a dismiss cross. StatusBanner from @acrm/ui, styles .acrm-statusbanner in apps/web/src/ds/status-banner.css. Replaced the reservation strip .resv*, the Google / chat prompts, the finance check strips (.fin-gap-banner, .zav-bez-smlouvy), the import summary strips (.imp-reserved) and the rep strip on Reports (owner approval 4 Oct 2026, acrm !4579), then the boxes in dialogs and accounting — .acc-fail, .acc-warn, .acc-inv-warn, .pay-item-detail__warn, .aichat-warn, .ppf-conflict-title, .tl-log-fail (owner approval 6 Oct 2026, acrm !4794).
When to use
- A page or a detail needs to say one thing about its state: incomplete data, a missing contract, a disconnected channel, whose numbers you are reading.
- A short prompt to act (connect Google, reconnect a chat) that may be dismissed.
- A result summary line after a run (import: added to a segment, kept by other reps).
When not to use
- Field-level validation — use the field's error line.
- A toast for something that just happened and needs no further attention.
- A panel with several parts (who, note, actions in a column) — that is not a status sentence (
.dg-strip, delegation). - A call-to-action card for the next step (
.deal-cta).
Tones
neutral— information; the glyph carries the meaning (lock = shared / restricted, user = someone else's numbers).accent— a prompt to act or a task to check.positive— done.critical— only what needs a decision now: alwaysalert-square-rounded, glyph--critical, title--critical-ink. With atitle, the body stays--fg— red is the glyph and the short title only (RULES §15.6).- Colour carries priority, not category: a failed save or an unbalanced balance sheet is
critical; notes before issuing, exchange rates, a locked VAT period or a cancelled document areneutral. - There is no
warningtone (RULES §15: brown never). Information that something did not happen isneutral, never amber.
Density
default— a strip on a page or in a detail: sp-3 sp-4, radius-lg, 1 px line,--small.compact— a box inside a dialog or a form: sp-3, radius-sm, no line, so the dialog does not grow.
Anatomy
- Glyph (or
dot— a small orange dot instead of a glyph; never both). - Sentence —
<b>carries the name or the number in--fgon neutral. Ortitle(short, in tone, weight 600) + body under it in--fg; the glyph then sits at the first line. - Optional short list under the sentence — neutral colour.
- Actions on the right (DS
Button); on a narrow surface they wrap under the text by themselves.actionsPlacement="below"puts them under the text always — for a decision with a longer explanation (AI suggestion conflict on a product). - Dismiss cross (
onDismiss) — only for prompts, never for a state.
Best practices
- One sentence. Put the name or number in
<b>. - Use
critical+alert-square-roundedfor anything the user must act on to avoid a loss. - Keep explanations in an
InfoTipnext to the title, not as a paragraph in the strip.
- No amber / brown warning.
- No glyph and dot together.
- No second paragraph of explanation (RULES §14).
- Don't stack several banners for one cause — merge them into one sentence or one banner with a title and a list (payroll: run and employee warnings in one banner above the table).
- No paragraph in red — a multi-line
criticalneeds atitle.
Content
State first, then the consequence: „Výpis nemusí být úplný — 1 podezřelý úsek". Prompts start with the verb: „Propojte Google a CRM ožije".
Related
File drop · Progress · Stat tile · Toast
Source: docs/status/status-banner.usage.md · GitLab