"use client" /** * NotificationBell — shell utility-bar trigger + panel. * * Backed by mock data (`lib/mock/notifications.ts`) until a real * notifications feed/backend exists. Local read/unread state only — * nothing persists across reloads. */ import * as React from "react" import { Link } from "react-router-dom" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { ScrollArea } from "@/components/ui/scroll-area" import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip" import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { cn } from "@/lib/utils" import { MOCK_NOTIFICATIONS, type NotificationItem } from "@/lib/mock/notifications" const VARIANT_DOT_CLASS: Record = { info: "bg-primary", success: "bg-[var(--insight-severity-success,theme(colors.green.500))]", warning: "bg-[var(--insight-severity-warning)]", } export function NotificationBell({ className }: { className?: string }) { const [items, setItems] = React.useState(MOCK_NOTIFICATIONS) const [open, setOpen] = React.useState(false) const unreadCount = items.filter(item => !item.read).length function markAllRead() { setItems(prev => prev.map(item => ({ ...item, read: true }))) } function markRead(id: string) { setItems(prev => prev.map(item => (item.id === id ? { ...item, read: true } : item))) } return (