KQ-524 · BELL/TRAY

Bell Tray

A notification bell and its tray. An arriving item swings the bell on recoil, rotated about its crown so it pivots where a bell hangs, and bumps the badge with the same spring; opening drops the tray on glide with its items cascading in under the 600ms budget. Marking all read sweeps the unread dots out one after another, dismissing an item collapses its row on the exit ease, and the bell is a button with aria-expanded whose tray answers to Up, Down and Escape.

KQ-524 · BELL/TRAY
Fernworks
2 unread
  • Calibration sweep09:00
  • Bench 4 handover11:30
  • Vendor call · Basinworks14:00
  • Weekly digest cut17:15

2 unread of 3

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/bell-tray

Props

items
BellTrayItem[]
default
Notifications of { id, title, time, unread }, newest first.
onRead
(ids: string[]) => void
default
Fires with the ids that just became read — one id, or all of them.
onDismiss
(id: string) => void
default
Fires when an item is dismissed; remove it from items to collapse the row.
open / defaultOpen
boolean
default false
Controlled or initial tray state.
onOpenChange
(open: boolean) => void
default
Fires when the bell, Escape, or a click outside changes the tray.
className
string
default
Applied to the bell's positioned wrapper.