import { useCallback, useEffect, useState, } from 'react'; import { Activity, BarChart3, Building2, FileCheck2, FileText, FilePenLine, Gauge, Hash, ImageIcon, ListChecks, Layers3, MessageSquare, Phone, TrendingUp, RadioTower, ReceiptText, ClipboardList, Send, Settings, Shield, ShieldOff, ShieldCheck, Users, UserX, } from 'lucide-react'; import { Navigate } from 'react-router-dom'; import { adminApi } from '@/api/adminApi'; import { readSession } from '@/api/session'; import { AppShell } from '@/layouts/AppShell'; export function AdminLayout() { const session = readSession(); const [pendingAuditCount, setPendingAuditCount] = useState(0); const loadPendingAuditCount = useCallback(() => { adminApi.getDashboard() .then((dashboard) => setPendingAuditCount(dashboard.pendingAuditCount ?? 0)) .catch(() => setPendingAuditCount(0)); }, []); useEffect(() => { if (session?.portal !== 'admin') { return; } loadPendingAuditCount(); const timer = window.setInterval(loadPendingAuditCount, 30000); const onFocus = () => loadPendingAuditCount(); window.addEventListener('focus', onFocus); return () => { window.clearInterval(timer); window.removeEventListener('focus', onFocus); }; }, [loadPendingAuditCount, session?.portal]); if (session?.portal !== 'admin') { return ; } return ( ); }