Skip to main content
The notifications bell (tool) + the notifications panel (inbox with For-you / All / Documents / People tabs + a settings view). Fully wireframed, with rich config props: all four layers apply.

Components

Config props

Cheapest customization: do this first. On VeltNotificationsTool / VeltNotificationsPanel:
Boolean attributes only emit when explicitly true/false; shadowDom/panelShadowDom default to true. pageSize/maxDays are ignored unless > 0.

CSS: stateful classes

(Override with !important, R9b.)

Wireframes: slot trees + tokens

VeltNotificationsToolWireframe: .Icon · .Label · .UnreadIcon · .UnreadCount. (Root prop variant.) VeltNotificationsPanelWireframe (abridged: full depth below):
Key tokens: {selectedTab} ('forYou'|'people'|'documents'|'all'), {TABS}, {tabConfig}, {settingsOpen}, {settingsMutedAll}, {notificationsPanelVisible}, {unreadNotificationsForYou} (tool: array → .length for the badge), {notificationsByDate} / {notificationsByUserMap} / {notificationsByDocumentId}. Inside the content list: {notification} (.title, .from.name, .from.photoUrl, .read, .createdAt, .documentName), {isLoadMoreVisible}, {isAllRead}.
Gotchas: {notification.*} only resolves inside the content-list iteration. .Title is a leaf: to change the heading text use the top-level .TitleText slot (there’s no .Title.Text).

Headless hooks

Limitations

All list rendering flows through the content-list iteration (variables scoped there). Tool-only props (considerAllNotifications, panelShadowDom, panelVariant, maxDays) aren’t on the panel. Cross-org feeds:'all' is ignored (only forYou).