feat(ui/alerts): mount NotificationBell in TopBar

Renders the `<NotificationBell />` as the first child of `<TopBar>` (before
`<SearchTrigger>`). The bell links to `/alerts/inbox` and shows the unread
alert count for the currently selected environment.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
hsiegeln
2026-04-20 13:47:16 +02:00
parent 54e4217e21
commit 891dcaef32

View File

@@ -23,6 +23,7 @@ import type { SearchResult, SidebarTreeNode, DropdownItem, ButtonGroupItem, Exch
import sidebarLogo from '@cameleer/design-system/assets/cameleer-logo.svg'; import sidebarLogo from '@cameleer/design-system/assets/cameleer-logo.svg';
import { Box, Settings, FileText, ChevronRight, Square, Pause, Star, X, User, Plus, EyeOff, Bell } from 'lucide-react'; import { Box, Settings, FileText, ChevronRight, Square, Pause, Star, X, User, Plus, EyeOff, Bell } from 'lucide-react';
import { AboutMeDialog } from './AboutMeDialog'; import { AboutMeDialog } from './AboutMeDialog';
import { NotificationBell } from './NotificationBell';
import css from './LayoutShell.module.css'; import css from './LayoutShell.module.css';
import { useQueryClient } from '@tanstack/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { useCatalog } from '../api/queries/catalog'; import { useCatalog } from '../api/queries/catalog';
@@ -899,6 +900,7 @@ function LayoutContent() {
onLogout={handleLogout} onLogout={handleLogout}
onNavigate={navigate} onNavigate={navigate}
> >
<NotificationBell />
<SearchTrigger onClick={() => setPaletteOpen(true)} /> <SearchTrigger onClick={() => setPaletteOpen(true)} />
<ButtonGroup <ButtonGroup
items={STATUS_ITEMS} items={STATUS_ITEMS}