import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { AlertTriangle, X, Sparkles, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { analyticsService } from "@/services/analytics.service"; export default function AiAlertBanner() { const [dismissedIds, setDismissedIds] = useState>(() => new Set()); const [errorDismissed, setErrorDismissed] = useState(false); const { data: resp, isLoading, isError, error } = useQuery({ queryKey: ["ai", "alerts"], queryFn: () => analyticsService.getAlerts(), }); const alerts = resp?.alerts ?? []; const visible = alerts.filter((a, i) => !dismissedIds.has(String(i))); if (isLoading) { return (

Loading alerts…

); } if (isError && !errorDismissed) { return (

Alerts unavailable

{error instanceof Error ? error.message : "Could not load alerts."}

); } if (isError && errorDismissed) return null; if (!alerts.length) { return (

No AI alerts right now.

); } if (!visible.length) return null; return (
{visible.map((alert, idx) => (

{alert.title}

{alert.description}

))}
); }