"use client" import * as React from "react" import { Link } from "react-router" import { FloatingSheetPanel, FloatingSheetPanelBody, FloatingSheetPanelContent, FloatingSheetPanelHeader, FloatingSheetPanelToolbar, } from "@/lib/floating-sheet-panel" import { Button } from "@/components/ui/button" import { FilterChipGroup } from "@/components/ui/filter-chip-group" import { StatusBadge } from "@/components/ui/status-badge" import { Tip } from "@/components/ui/tip" import { NOTIFICATION_CATEGORY_LABEL, type NotificationItem, } from "@/lib/mock/notifications" import { filterNotifications, groupNotificationsByTime, notificationVariantTint, type NotificationFilter, } from "@/lib/notifications" import { cn } from "@/lib/utils" export interface NotificationSheetProps { open: boolean onOpenChange: (open: boolean) => void items: NotificationItem[] onMarkRead: (id: string) => void onMarkAllRead: () => void } export function NotificationSheet({ open, onOpenChange, items, onMarkRead, onMarkAllRead, }: NotificationSheetProps) { const [filter, setFilter] = React.useState("all") const filtered = filterNotifications(items, filter) const groups = groupNotificationsByTime(filtered) const unreadCount = items.filter(item => !item.read).length React.useEffect(() => { if (!open) setFilter("all") }, [open]) const filterOptions = React.useMemo( () => [ { value: "all" as const, label: "All" }, { value: "unread" as const, label: "Unread", count: unreadCount > 0 ? unreadCount : undefined, }, ], [unreadCount], ) return ( {unreadCount > 0 ? ( ) : null}