"use client"; import { Dropdown, DropdownContent, DropdownTrigger, } from "@/components/ui/dropdown"; import Modal from "@/components/ui/modal"; import { useMarkNotificationAsSeen } from "@/hooks/queries/useNotificationQueries"; import { useIsMobile } from "@/hooks/use-mobile"; import { TNotificationDetailsResponse } from "@/lib/api/types/NotificationHistory"; // Import the type import { cn } from "@/lib/utils"; import Link from "next/link"; import { useState } from "react"; import { BellIcon } from "./icons"; import NotificationList from "./notification-list"; export function Notification() { const [isOpen, setIsOpen] = useState(false); const [isDotVisible, setIsDotVisible] = useState(true); const [unreadNotificationCount, setUnreadNotificationCount] = useState(0); const [isModalOpen, setIsModalOpen] = useState(false); const [currentNotification, setCurrentNotification] = useState(null); const { mutate } = useMarkNotificationAsSeen( currentNotification?.id ?? "", () => setIsModalOpen(false), ); const isMobile = useIsMobile(); const handleNotificationClick = ( notification: TNotificationDetailsResponse, ) => { setCurrentNotification(notification); setIsModalOpen(true); setIsOpen(false); }; return ( <> { setIsOpen(open); if (setIsDotVisible) setIsDotVisible(false); }} > {isDotVisible && ( )}
Notifications {unreadNotificationCount} new
setIsOpen(false)} className="block rounded-lg border border-primary p-2 text-center text-sm font-medium tracking-wide text-primary outline-none transition-colors hover:bg-blue-light-5 focus:bg-blue-light-5 focus:text-primary focus-visible:border-primary dark:border-dark-3 dark:text-dark-6 dark:hover:border-dark-5 dark:hover:bg-dark-3 dark:hover:text-dark-7 dark:focus-visible:border-dark-5 dark:focus-visible:bg-dark-3 dark:focus-visible:text-dark-7" > See all notifications
{ setIsModalOpen(false); }} confirmText="Mark as read" onConfirm={() => { mutate(); }} >

{currentNotification?.title}

{currentNotification?.message}

); }