Notification

System messages with severity, action and dismissal.

v1.0.0·Updated Jul 10, 2026 · 23:00
Live Demo — Fully Interactive
Four semantic tones — info, success, warning, error
New version available
Reload to get the latest tokens and components.
Changes published
Your update is live and reconciled across every consumer.
Storage almost full
You're at 92% of your plan. Free up space to keep syncing.
Publish failed
Two tokens couldn't be resolved. Your draft was kept intact.
Configuration
Severity
Style
Title
Actions
Dismissible
Storage almost full
You're at 92% of your plan.
<Notification severity="warning" title="Storage almost full" actions={…} onDismiss={fn} />
Behavior — The Engineering Contract
PropTypeNotes
severityinfo · success · warning · errorTone, icon and ARIA live-ness
stylefilled · barTinted fill, or panel + coloured left bar
titlestringOptional short summary above the message
actionsReactNodeOptional resolving buttons — primary + ghost
onDismiss() => voidPresent ⇒ a close × is shown
durationnumber = 5000Auto-dismiss for toasts; 0 keeps it until closed
Event / KeyResult
rolestatus for info/success (polite) · alert for warning/error (assertive)
EscDismisses the focused notification
onDismissFires on × click or auto-dismiss timeout

A notification is how an optimistic action reports back: render the result at once, then confirm on reconcile or roll back with an error the reader can act on. Auto-dismiss the good news; let errors persist until acknowledged.

Anatomy
Verification required
Confirm your email to unlock publishing.
Verify nowLater
1IconThe severity, read at a glance and coloured by tone.
2TitleOptional one-line summary of what happened.
3MessageOne to three lines of detail and next steps.
4ActionsOptional primary + ghost that resolve the message.
5CloseDismiss control; toasts also auto-dismiss.
Do's and Don'ts
✓ Do
Publish failed
Your draft was kept intact.
Retry

Give errors a way out. A retry or a next step beats a dead end.

✕ Don't
Error 0x8004. Contact support.

Don't surface raw codes with no action. Say what happened and what to do.

✓ Do
Changes published
Live and reconciled.

Auto-dismiss the good news. Success should confirm, then get out of the way.

✕ Don't
Something went wrong.
Heads up.
FYI.

Don't stack many at once. Collapse or queue them so one reads at a time.

In context: Examples
A · Toast
Changes published
Live and reconciled.

Corner toast confirming an optimistic action.

B · Inline banner
New version available
Reload to get the latest.

Bar-accent banner at the top of a page.

C · Notification center
EMI due in 3 days
Set up auto-debit.
Loan disbursed
₹25L transferred.

A stacked list in an inbox panel.

Measurements & Tokens
TokenValueRole
--notif-info#3E63DDInfo tone (icon #6B8AFF)
--notif-success#1FA35CSuccess tone (icon #4FCE8B)
--notif-warning#FFB020Warning tone (icon #FFC457)
--notif-error#EB4A4FError tone (icon #F2777B)
--notif-pad14px 16pxCard padding
--notif-radius10pxCorner radius
--notif-bar3pxBar-accent left border width
--notif-duration5000msDefault toast auto-dismiss
Code
<div class="o-notif o-notif--warning" role="alert">
  <span class="o-notif__icon"><!-- severity icon --></span>
  <div class="o-notif__body">
    <div class="o-notif__title">Verification required</div>
    <div class="o-notif__text">Confirm your email to unlock publishing.</div>
    <div class="o-notif__actions">
      <button class="o-btn o-btn--sm">Verify now</button>
      <button class="o-btn o-btn--sm o-btn--ghost">Later</button>
    </div>
  </div>
  <button class="o-notif__close" aria-label="Dismiss">×</button>
</div>