Notification

A workspace alert in a tray: author, source, and a short preview.

Bell

A bell opens the tray in a Popover. NotificationCount sits on the bell and shows unread items; opening an item marks it read and the count follows.

Status

variant="status" is for system events. It leads with a 16px icon and a date, with an optional source, then a title and a description that wraps.

Identity

The default variant is for messages from a person or integration: a 24px avatar, the author, a relative time and an optional source icon. Title and description truncate to one line.

Read

Notifications are unread by default. Set unread={false} once an item has been opened; its title drops to regular weight.

Tray

NotificationTray caps its height at 28rem and NotificationTrayList scrolls with edge fades. The header's overflow menu holds Settings and Clear all.

Notifications

Empty

variant="never" is for a workspace that has never received a notification. variant="caught-up", the default, is for a tray that has been cleared.

Notifications

No notifications yet

Alerts about your workspace will show up here.

Notifications

You're all caught up

Count

Counts above 99 show 99+. Wider counts sit farther right so they nick the bell's corner instead of covering it. At zero the count scales out.

Best practices

When to use

  • Use for workspace alerts people review later: failing calls, SIP errors, credits, webhooks, messages from integrations.
  • Use Toast for a brief confirmation of an action that just happened, and Dialog when a decision is required now.

Behavior

  • Open the tray from a bell in a Popover. NotificationCount shows unread items, caps at 99+, and scales out at zero. Wider counts sit farther right so they nick the bell's corner.
  • Use variant="status" for system events (icon + date + wrapping description). Use the default identity variant for messages from a person or integration (avatar + author + relative time + optional source).
  • Opening an item marks it read: set unread={false} and its title drops to regular weight.
  • NotificationTray caps at 28rem; NotificationTrayList scrolls with edge fades. The header's overflow holds Settings and Clear all, and Clear all is disabled when the tray is empty.

Content

  • Status titles state the problem ("Calls are failing"); descriptions give the scope ("20% of calls to NYL Inbound Agent failed in the last hour.").
  • Use NotificationTrayEmpty variant="never" ("No notifications yet") for a new workspace and variant="caught-up" ("You're all caught up") after clearing.

Accessibility

  • Name the bell with the unread count ("Notifications, 3 unread"); NotificationCount is aria-hidden. Name the overflow control ("Notification actions").