import { useQuery } from "@tanstack/react-query"; import { Alert, Box, Button, Chip, CircularProgress, Paper, Stack, Typography, } from "@mui/material"; import { Link } from "react-router"; import { vendorOperationsApi } from "@/domain/vendor-operations/api/vendor-operations-api"; export default function NotificationsPage() { const { data = [], isLoading, error, } = useQuery({ queryKey: ["vendor-operations", "notifications"], queryFn: vendorOperationsApi.notifications, refetchInterval: 30_000, }); const groups = data.reduce((result, item) => { const items = result.get(item.group) ?? []; items.push(item); result.set(item.group, items); return result; }, new Map()); return ( Items requiring attention Medium-severity vendor reminders refresh automatically. They do not create banners or toasts. {isLoading && } {Boolean(error) && {error?.message}} {!isLoading && !error && data.length === 0 && ( No vendor alerts require attention. )} {[...groups.entries()].map(([group, items]) => ( {group} {items.map((item) => ( {item.title} {item.workOrderNumber ?? item.workOrders?.map((workOrder) => workOrder.workOrderNumber).join(" ↔ ")} {item.scheduledAt != null && ( Scheduled {new Date(item.scheduledAt).toLocaleString()} )} {item.action != null && ( )} {item.actions?.map((action) => ( ))} ))} ))} ); }