Four notification patterns — inbox with tabs, actionable access request, stacked toasts and grouped digest — with sliding tabs, optimistic read states, fanning stacks and springy groups.
Inbox
inbox.tsxSliding tabs with live counts, rows that mark read on open, archive with collapse and mark-all-read.
| Prop | Type | Default | Description |
|---|---|---|---|
items | InboxItem[] | — | { id, kind: "mention" | "comment" | "review" | "invite", actor, initials, text, target, time, unread }. |
onOpen | (item: InboxItem) => void | — | Called when a row is opened. |
className | string | — | Extra classes on the card. |
Access request
actionable.tsxPick a role, approve or decline with a pending spinner, then a resolved state with undo.
| Prop | Type | Default | Description |
|---|---|---|---|
requester / initials / email / resource / note / time | string | — | Request details. |
defaultRole | "viewer" | "commenter" | "editor" | "commenter" | Preselected access level. |
onApprove / onDecline | (role?) => Promise<void> | void | — | Resolve to confirm; reject to return to idle. |
onUndo | () => void | — | Called when the decision is undone. |
className | string | — | Extra classes on the card. |
Toast stack
toasts.tsxCollapsed deck that fans out on hover or focus; toasts swipe or close away and the rest re-stack.
| Prop | Type | Default | Description |
|---|---|---|---|
toasts | StackToast[] | — | { id, tone: "success" | "info" | "warning", title, body, action? }, oldest first. |
onDismiss | (id: string) => void | — | Pass to control the list yourself. |
onAction | (toast: StackToast) => void | — | Inline action handler. |
peek | number | 2 | Toasts visible behind the front one when collapsed. |
className | string | — | Extra classes on the card. |
Activity digest
digest.tsxUpdates rolled up by day and kind; each group springs open to its events with a staggered reveal.
| Prop | Type | Default | Description |
|---|---|---|---|
title / range | string | — | Heading and caption. |
days | DigestDay[] | — | { label, groups: { id, kind, summary, events }[] }. |
className | string | — | Extra classes on the card. |
Install the whole set
Installs every notification cards variant at once. Each section above has its own command for a single variant.
Pro installs use your private registry token. Add the @geturui-pro registry once — setup guide. The command works after you get Pro.
Accessibility
- Tabs, disclosures and the access-level picker use native roles; unread state is announced, not only shown as a dot.
- Toasts stay reachable by keyboard: focusing the stack fans it out, and every toast has a labelled dismiss button.
- Status pairs colour with an icon and a word, and reduced motion swaps slides and swipes for fades.