'use client'; import { formatDistanceToNow } from 'date-fns'; import { Bell, BellRing, LoaderCircle } from 'lucide-react'; import type { Task } from '@/lib/types'; import { StatusPill } from '@/components/ui/status-pill'; import { taskTypeLabel } from '@/components/notifications/task-stage-helpers'; import { cn } from '@/lib/utils'; type TaskNotificationsTriggerProps = { unreadCount: number; isPopoverOpen: boolean; setIsPopoverOpen: (value: boolean) => void; isLoading: boolean; activeTasks: Task[]; visibleFinishedTasks: Task[]; awaitingReviewTasks: Task[]; showReadFinished: boolean; setShowReadFinished: (value: boolean) => void; openTaskDetails: (taskId: string) => void; silenceTask: (taskId: string, silenced?: boolean) => Promise; markTaskRead: (taskId: string, read?: boolean) => Promise; className?: string; }; export function TaskNotificationsTrigger({ unreadCount, isPopoverOpen, setIsPopoverOpen, isLoading, activeTasks, visibleFinishedTasks, awaitingReviewTasks, showReadFinished, setShowReadFinished, openTaskDetails, silenceTask, markTaskRead, className }: TaskNotificationsTriggerProps) { const button = ( ); return (
{button} {isPopoverOpen ? ( <>
)) )}

Awaiting review

{visibleFinishedTasks.length === 0 ? (

No finished jobs to review.

) : ( visibleFinishedTasks.map((task) => { const isRead = task.notification_read_at !== null; return (

{taskTypeLabel(task.task_type)}

{task.stage_detail ?? task.stage}

{formatDistanceToNow(new Date(task.updated_at), { addSuffix: true })}

); }) )}
)} ) : null} ); }