From 9fac11e66827d4af6b6c58083fe314029c927684 Mon Sep 17 00:00:00 2001 From: Ronni Baslund Date: Sun, 24 May 2026 17:08:14 +0200 Subject: [PATCH] feat(operator): notification drawer behind the topbar bell MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Right-anchored slide-in inbox triggered by the bell button. Backend is a follow-up — for now this is a visual + behavior shell with mock fixtures, same pattern as INCIDENT / FLAGS / OP_AUDIT. - data/fixtures.ts: new NotificationItem type + 6 seed rows from the design (DMARC, invitation, invoice, SAML, ticket reply, failed sign-in) - useNotifications composable: isOpen + items + unreadCount + markRead + markAllRead. Items deep-clone the fixture on first import so toggling unread doesn't mutate the shared seed. - NotificationDrawer component: Teleport + scrim + slide animation, header/list/footer. Each row shows tone-tinted icon tile + title + description + timestamp + left-rail unread dot. Click a row to mark read; click Mark all read or Preferences in the footer. - OpTopbar: bell now opens the drawer and only shows .icon-btn-dot when unreadCount > 0. - Layout mounts alongside the other floating components. Dismissal: backdrop click, Escape, X, and route-change watcher (so Preferences → /settings closes the drawer cleanly). --- .../components/NotificationDrawer.vue | 236 ++++++++++++++++++ apps/operator/components/OpTopbar.vue | 5 +- apps/operator/composables/useNotifications.ts | 33 +++ apps/operator/data/fixtures.ts | 27 ++ apps/operator/layouts/default.vue | 1 + 5 files changed, 300 insertions(+), 2 deletions(-) create mode 100644 apps/operator/components/NotificationDrawer.vue create mode 100644 apps/operator/composables/useNotifications.ts diff --git a/apps/operator/components/NotificationDrawer.vue b/apps/operator/components/NotificationDrawer.vue new file mode 100644 index 0000000..946e717 --- /dev/null +++ b/apps/operator/components/NotificationDrawer.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/apps/operator/components/OpTopbar.vue b/apps/operator/components/OpTopbar.vue index 125e0af..4a9ed95 100644 --- a/apps/operator/components/OpTopbar.vue +++ b/apps/operator/components/OpTopbar.vue @@ -1,5 +1,6 @@