import { useEffect, useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { fetchRequirementSatisfied, AdminSetupAlertResponse, } from "@/record-management/services/api/alertService"; import { X } from "lucide-react"; export default function AdminSetupAlert({ unitId: propUnitId, }: { unitId?: string; }) { const [unitId, setUnitId] = useState(propUnitId || ""); const [visible, setVisible] = useState(true); // Listen for unitChanged events from Content Management. useEffect(() => { const handler = (e: Event) => { const detail = (e as CustomEvent).detail; queueMicrotask(() => setUnitId(detail)); }; window.addEventListener("unitChanged", handler); return () => window.removeEventListener("unitChanged", handler); }, []); // TanStack Query for fetching requirements const { data, isLoading, refetch } = useQuery({ queryKey: ["admin-setup-requirements", unitId], queryFn: () => fetchRequirementSatisfied(unitId), enabled: !!unitId, }); const requirements = data?.requirements; // Optional: refetch automatically on unit change (real-time trigger) useEffect(() => { if (unitId) { refetch(); } }, [unitId, refetch]); // Hide if no requirements or all are satisfied if (!requirements || Object.values(requirements).every(Boolean)) return null; if (!visible) return null; // hide after dismiss return (
{/* Title */}

Finish site setup

{/* Messages inline */} {isLoading ? (

Loading requirements...

) : (
{!requirements.hasFooter && ⚠️ Missing Footer} {!requirements.hasSeal && ⚠️ Missing Seal} {!requirements.hasHeader && ⚠️ Missing Header} {!requirements.internalPrefix && ( ⚠️ Missing Internal Prefix )} {!requirements.externalPrefix && ( ⚠️ Missing External Prefix )} {!requirements.internalSuffix && ( ⚠️ Missing Internal Suffix )} {!requirements.externalSuffix && ( ⚠️ Missing External Suffix )}
)} {/* Close button */}
); }