{"version":3,"sources":["../call-control-sdk/lib/pages/liveStatus/index.tsx","../call-control-sdk/lib/pages/liveStatus/useLiveStatus.ts","../call-control-sdk/lib/pages/liveStatus/styles.ts"],"sourcesContent":["import React, { useCallback, useState, useEffect } from \"react\";\r\nimport { Box, CircularProgress, Tooltip } from \"@mui/material\";\r\nimport WarningAmberRoundedIcon from \"@mui/icons-material/WarningAmberRounded\";\r\nimport { useCallMonitoring } from \"../../hooks/useCallMonitoring\";\r\nimport type { SupervisorMonitorMode } from \"../../hooks/useCallMonitoring\";\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPermissionGuard } from \"../../components/SDKPermissionGuard\";\r\nimport { SDK_PERMISSIONS } from \"../../permissions/sdk-constants\";\r\nimport { useToast } from \"../../services/toastMessage\";\r\nimport { useNumberMask } from \"../../utils/numberMask\";\r\n\r\nimport {\r\n\tuseLiveStatus,\r\n\tforceLogoutAgent,\r\n\tgetSortedAgents,\r\n\tgetAgentStatusKey,\r\n\tfmtDur,\r\n\tLONG_CALL_SECS,\r\n\tWAITING_THRESHOLD,\r\n} from \"./useLiveStatus\";\r\nimport type { AgentStatusKey } from \"./useLiveStatus\";\r\nimport type { DashboardAgentCard, DashboardQueueCall, MonitoringSession } from \"./types\";\r\nimport {\r\n\tC,\r\n\tSTATUS_COLORS,\r\n\tWallboardRoot,\r\n\tTopBar,\r\n\tBrandLogo,\r\n\tLiveBadge,\r\n\tPulseDot,\r\n\tKpiStrip,\r\n\tKpiCell,\r\n\tKpiValue,\r\n\tKpiLabel,\r\n\tBodyGrid,\r\n\tPanel,\r\n\tPanelHeader,\r\n\tPhTitle,\r\n\tBadge,\r\n\tStatusDot,\r\n\tAgentTable,\r\n\tAgTh,\r\n\tAgTd,\r\n\tPageInfo,\r\n\tQName,\r\n\tQNum,\r\n\tQBar,\r\n\tQBarFill,\r\n\tSbHeader,\r\n\tSbTitle,\r\n\tNoDataBox,\r\n\tFilterPill,\r\n\tFooter,\r\n\tTickerLabel,\r\n\tTickerTrack,\r\n\tTickerInner,\r\n\tTickerSpan,\r\n\tMonitorBtn,\r\n\tMonitorCard,\r\n\tslideUp,\r\n\tpulse,\r\n\trowBlink,\r\n\tAlertIconWrap,\r\n\tALERT_TOOLTIP_SLOT_PROPS,\r\n\tAlertTipTitle,\r\n\tAlertTipText,\r\n} from \"./styles\";\r\n\r\n// Backend sends alertTime as a zone-less local timestamp (e.g. \"2026-08-04T15:21:01.222860\")\r\n// already in the server's timezone. Render the clock time as-is, as \"03:21 PM\".\r\nfunction fmtAlertTime(raw: string): string {\r\n\t// Accepts \"2026-08-04T15:21:01.222860\" or a bare \"15:21:01\"; both are already\r\n\t// in the server's timezone, so the clock time passes through unconverted.\r\n\tconst [h, m] = (raw?.split(\"T\").pop() ?? \"\").split(\":\");\r\n\tconst hr = parseInt(h, 10);\r\n\tif (isNaN(hr) || !m) return raw ?? \"\";\r\n\treturn `${String(hr % 12 || 12).padStart(2, \"0\")}:${m} ${hr >= 12 ? \"PM\" : \"AM\"}`;\r\n}\r\n\r\n/**\r\n * The only two states a supervisor may force-log-out of. ON-CALL would drop a\r\n * live leg mid-conversation and WRAPUP would bin the disposition the agent is\r\n * part-way through, so both are refused — an idle or on-break agent has nothing\r\n * in flight to lose.\r\n *\r\n * Enforced in the UI only; auth/logout itself still accepts any agent. The\r\n * button is disabled rather than hidden so the supervisor can see the control\r\n * exists and read why it isn't available (see the title on MonitorBtn below).\r\n */\r\nconst LOGOUT_SAFE_STATUSES: AgentStatusKey[] = [\"s-idle\", \"s-break\"];\r\n\r\nfunction canForceLogoutAgent(agent: Pick<DashboardAgentCard, \"status\" | \"callDirection\">): boolean {\r\n\treturn LOGOUT_SAFE_STATUSES.includes(getAgentStatusKey(agent.status, agent.callDirection));\r\n}\r\n\r\n// \"MIC_NOT_REGISTERED\" / \"mic-not-registered\" → \"Mic Not Registered\"\r\nfunction fmtAvailabilityIssue(raw: string): string {\r\n\treturn raw\r\n\t\t.replace(/[_-]+/g, \" \")\r\n\t\t.trim()\r\n\t\t.toLowerCase()\r\n\t\t.replace(/\\b\\w/g, (ch) => ch.toUpperCase());\r\n}\r\n\r\n// ─── Agent Table Row ──────────────────────────────────────────────────────────\r\n\r\ninterface AgentTableRowProps {\r\n\tagent: DashboardAgentCard;\r\n\tdurSecs: number;\r\n\tonMonitor?: (agent: DashboardAgentCard, mode: SupervisorMonitorMode) => void;\r\n\tactiveMonitoring?: MonitoringSession | null;\r\n\tonStopMonitoring?: () => void;\r\n\tonForceLogout?: (agent: DashboardAgentCard) => void;\r\n\tisLoggingOut?: boolean;\r\n}\r\n\r\nconst AgentTableRow: React.FC<AgentTableRowProps> = React.memo(({\r\n\tagent,\r\n\tdurSecs,\r\n\tonMonitor,\r\n\tactiveMonitoring,\r\n\tonStopMonitoring,\r\n\tonForceLogout,\r\n\tisLoggingOut,\r\n}) => {\r\n\t// The caller number in this row is masked without `phone_number:view_unmasked`.\r\n\tconst { maskNumber } = useNumberMask();\r\n\tconst statusKey = getAgentStatusKey(agent.status, agent.callDirection);\r\n\tconst sc = STATUS_COLORS[statusKey];\r\n\tconst isOnCall = statusKey === \"s-oncall-in\" || statusKey === \"s-oncall-out\";\r\n\tconst isLong = isOnCall && durSecs >= LONG_CALL_SECS;\r\n\tconst isBeingMonitored = activeMonitoring?.agentId === agent.agentId;\r\n\r\n\tconst statusColor = isOnCall\r\n\t\t? agent.callDirection === \"OUTBOUND\" ? C.blue : C.green\r\n\t\t: sc.text;\r\n\tconst durColor = isLong ? C.red : statusColor;\r\n\r\n\t// Backend availability check — an `alert` row blinks red with a blinking danger\r\n\t// icon; hovering the icon shows availabilityIssue / availabilityMessage.\r\n\tconst hasAlert = agent.alert === true;\r\n\tconst issueLabel = agent.availabilityIssue ? fmtAvailabilityIssue(agent.availabilityIssue) : \"\";\r\n\tconst issueMessage = agent.availabilityMessage || \"\";\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tcomponent=\"tr\"\r\n\t\t\tsx={{\r\n\t\t\t\tbackground: isLong ? \"rgba(204,42,42,.07)\" : sc.bg,\r\n\t\t\t\ttransition: \"background 0.3s\",\r\n\t\t\t\t...(hasAlert && { animation: `${rowBlink} 1s ease infinite` }),\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t{/* Name (+ availability alert) */}\r\n\t\t\t<AgTd sx={{ borderLeft: `2px solid ${hasAlert ? C.red : sc.bar}`, pl: \"8px\", maxWidth: 160 }}>\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\r\n\t\t\t\t\t<Box sx={{ fontFamily: \"'Poppins', Arial, sans-serif\", fontSize: 11, fontWeight: 700, color: C.t1, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }}>\r\n\t\t\t\t\t\t{agent.agentName}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t{isLong && (\r\n\t\t\t\t\t\t<Box component=\"span\" sx={{ fontSize: 7, fontWeight: 700, color: C.red, letterSpacing: 0.3, flexShrink: 0 }}>&gt;7m</Box>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{hasAlert && (\r\n\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\t\tplacement=\"right\"\r\n\t\t\t\t\t\t\tslotProps={ALERT_TOOLTIP_SLOT_PROPS}\r\n\t\t\t\t\t\t\ttitle={\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<AlertTipTitle>{issueLabel || \"Availability alert\"}</AlertTipTitle>\r\n\t\t\t\t\t\t\t\t\t{issueMessage && <AlertTipText>{issueMessage}</AlertTipText>}\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<AlertIconWrap aria-label={issueMessage || issueLabel || \"Availability alert\"}>\r\n\t\t\t\t\t\t\t\t<WarningAmberRoundedIcon />\r\n\t\t\t\t\t\t\t</AlertIconWrap>\r\n\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Extension */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 9, color: C.t3 }}>{agent.extension || \"\"}</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Status */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"4px\", flexWrap: \"nowrap\" }}>\r\n\t\t\t\t\t<StatusDot dotColor={statusColor} animated={isOnCall} />\r\n\t\t\t\t\t<Box sx={{ fontSize: 8, fontWeight: 700, letterSpacing: 0.6, textTransform: \"uppercase\", color: statusColor, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t{agent.breakType ? `${agent.status} (${agent.breakType})` : agent.status}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Call direction — straight from the API's callDirection, blank when there's none */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ fontSize: 8, fontWeight: 700, letterSpacing: 0.6, textTransform: \"uppercase\", whiteSpace: \"nowrap\", color: agent.callDirection?.toUpperCase() === \"OUTBOUND\" ? C.blue : C.green }}>\r\n\t\t\t\t\t{agent.callDirection || \"\"}\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Duration */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 11, fontWeight: 700, color: durColor, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t{fmtDur(durSecs)}\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Caller number */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 9, color: C.t3 }}>\r\n\t\t\t\t\t{maskNumber(agent.activeCallerNumber) || \"\"}\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Queue */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ fontSize: 11, fontWeight: 400, color: C.t1, whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\", maxWidth: 110 }}>\r\n\t\t\t\t\t{agent.queueNames || \"\"}\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Calls today */}\r\n\t\t\t<AgTd>\r\n\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 10, fontWeight: 700, color: C.t2 }}>\r\n\t\t\t\t\t{agent.callsToday}\r\n\t\t\t\t</Box>\r\n\t\t\t</AgTd>\r\n\r\n\t\t\t{/* Actions — monitoring (on-call agents only) + supervisor force-logout (any agent; the\r\n\t\t\t    confirmation dialog is what refuses anyone who isn't idle or on break) */}\r\n\t\t\t{onMonitor !== undefined && (\r\n\t\t\t\t<AgTd>\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", gap: \"3px\", flexWrap: \"nowrap\", alignItems: \"center\" }}>\r\n\t\t\t\t\t\t{isOnCall && onMonitor && (\r\n\t\t\t\t\t\t\tisBeingMonitored ? (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 7, color: C.green, fontWeight: 600, display: \"flex\", alignItems: \"center\", gap: \"2px\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<StatusDot dotColor={C.green} animated />\r\n\t\t\t\t\t\t\t\t\t\t{activeMonitoring?.mode.toUpperCase()}\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<MonitorBtn variant=\"stop\" onClick={onStopMonitoring}>⏹ Stop</MonitorBtn>\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\t\t<SDKPermissionGuard permission={SDK_PERMISSIONS.SUPERVISOR_MONITOR_LISTEN} showFallback={false}>\r\n\t\t\t\t\t\t\t\t\t\t<MonitorBtn variant=\"listen\" onClick={() => onMonitor(agent, \"listen\")} title=\"Start listening\">👂</MonitorBtn>\r\n\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t<SDKPermissionGuard permission={SDK_PERMISSIONS.SUPERVISOR_MONITOR_WHISPER} showFallback={false}>\r\n\t\t\t\t\t\t\t\t\t\t<MonitorBtn variant=\"whisper\" onClick={() => onMonitor(agent, \"whisper\")} title=\"Whisper to agent\">🗣</MonitorBtn>\r\n\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t<SDKPermissionGuard permission={SDK_PERMISSIONS.SUPERVISOR_MONITOR_BARGE} showFallback={false}>\r\n\t\t\t\t\t\t\t\t\t\t<MonitorBtn variant=\"barge\" onClick={() => onMonitor(agent, \"barge\")} title=\"Barge in to call\">📢</MonitorBtn>\r\n\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t</>\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{onForceLogout && (\r\n\t\t\t\t\t\t\t<SDKPermissionGuard permission={SDK_PERMISSIONS.SUPERVISOR_ACCESS} showFallback={false}>\r\n\t\t\t\t\t\t\t\t<MonitorBtn\r\n\t\t\t\t\t\t\t\t\tvariant=\"logout\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => onForceLogout(agent)}\r\n\t\t\t\t\t\t\t\t\tdisabled={isLoggingOut}\r\n\t\t\t\t\t\t\t\t\ttitle={`Log out ${agent.agentName}`}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{isLoggingOut ? \"…\" : \"⏻\"}\r\n\t\t\t\t\t\t\t\t</MonitorBtn>\r\n\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</AgTd>\r\n\t\t\t)}\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ─── Main Component ───────────────────────────────────────────────────────────\r\n\r\ninterface LiveStatusPageProps {\r\n\tisTvDashboard?: boolean;\r\n}\r\n\r\nfunction LiveStatusPageInner({ isTvDashboard = false }: LiveStatusPageProps) {\r\n\tconst toast = useToast();\r\n\t// Masks the customer number in the monitoring dialog below (the agent rows carry\r\n\t// their own copy — see AgentTableRow).\r\n\tconst { maskNumber } = useNumberMask();\r\n\tconst {\r\n\t\tisLoading,\r\n\t\ttopStats,\r\n\t\tagents,\r\n\t\tqueues,\r\n\t\talerts,\r\n\t\tqueuePulse,\r\n\t\tqueueCalls,\r\n\t\tdurations,\r\n\t\tqueueDurations,\r\n\t\tselectedQueueId,\r\n\t\tsetSelectedQueueId,\r\n\t\tclockStr,\r\n\t\tdateStr,\r\n\t\trefresh,\r\n\t} = useLiveStatus();\r\n\r\n\t// Supervisor monitoring state\r\n\tconst { startMonitoring, stopMonitoring, changeMode, isLoading: monitoringLoading } = useCallMonitoring();\r\n\tconst [monitoringSession, setMonitoringSession] = useState<MonitoringSession | null>(null);\r\n\tconst [showMonitorModal, setShowMonitorModal] = useState(false);\r\n\tconst [selectedAgent, setSelectedAgent] = useState<DashboardAgentCard | null>(null);\r\n\tconst [selectedMode, setSelectedMode] = useState<SupervisorMonitorMode>(\"listen\");\r\n\tconst [monitoringError, setMonitoringError] = useState<string | null>(null);\r\n\r\n\t// Supervisor force-logout state\r\n\tconst [logoutTarget, setLogoutTarget] = useState<DashboardAgentCard | null>(null);\r\n\tconst [loggingOutId, setLoggingOutId] = useState<string | null>(null);\r\n\r\n\t// Opens for ANY agent — the dialog itself explains why an on-call / wrap-up\r\n\t// agent can't be logged out and disables its confirm.\r\n\tconst handleRequestForceLogout = useCallback((agent: DashboardAgentCard) => {\r\n\t\tsetLogoutTarget(agent);\r\n\t}, []);\r\n\r\n\tconst handleConfirmForceLogout = useCallback(async () => {\r\n\t\tif (!logoutTarget) return;\r\n\t\tconst agent = logoutTarget;\r\n\t\t// Backstop behind the disabled confirm button.\r\n\t\tif (!canForceLogoutAgent(agent)) return;\r\n\t\tsetLoggingOutId(agent.agentId);\r\n\t\tconst res = await forceLogoutAgent(agent.agentId);\r\n\t\tsetLoggingOutId(null);\r\n\t\tsetLogoutTarget(null);\r\n\t\tif (res.success) {\r\n\t\t\ttoast.showToast(res.message || `${agent.agentName} has been logged out.`, \"success\");\r\n\t\t\trefresh();\r\n\t\t} else {\r\n\t\t\ttoast.showToast(res.message || \"Failed to log out agent.\", \"error\");\r\n\t\t}\r\n\t}, [logoutTarget, refresh, toast]);\r\n\r\n\t// Open monitor modal\r\n\tconst handleOpenMonitorModal = useCallback((agent: DashboardAgentCard, mode: SupervisorMonitorMode) => {\r\n\t\tsetSelectedAgent(agent);\r\n\t\tsetSelectedMode(mode);\r\n\t\tsetShowMonitorModal(true);\r\n\t\tsetMonitoringError(null);\r\n\t}, []);\r\n\r\n\t// Start monitoring\r\n\tconst handleStartMonitoring = useCallback(async () => {\r\n\t\tif (!selectedAgent) return;\r\n\t\tif (!selectedAgent.activeCallUuid) {\r\n\t\t\tsetMonitoringError(\"No active call found for this agent\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetMonitoringError(null);\r\n\r\n\t\tconst response = await startMonitoring({\r\n\t\t\tcall_id: selectedAgent.activeCallUuid,\r\n\t\t\tagent_extension: selectedAgent.extension || \"\",\r\n\t\t\tmode: selectedMode,\r\n\t\t});\r\n\r\n\t\tif (response?.success && response?.session_id) {\r\n\t\t\tsetMonitoringSession({\r\n\t\t\t\tsessionId: response.session_id,\r\n\t\t\t\tagentId: selectedAgent.agentId,\r\n\t\t\t\tagentName: selectedAgent.agentName,\r\n\t\t\t\tagentExt: selectedAgent.extension || \"\",\r\n\t\t\t\tmode: selectedMode,\r\n\t\t\t\tcallUuid: selectedAgent.activeCallUuid,\r\n\t\t\t\tstartTime: Date.now(),\r\n\t\t\t});\r\n\t\t\tsetShowMonitorModal(false);\r\n\t\t\tif (response.message) toast.showToast(response.message, \"success\");\r\n\t\t} else {\r\n\t\t\tsetMonitoringError(response?.message || \"Failed to start monitoring\");\r\n\t\t}\r\n\t}, [selectedAgent, selectedMode, startMonitoring, toast]);\r\n\r\n\t// Stop monitoring\r\n\tconst handleStopMonitoring = useCallback(async () => {\r\n\t\tif (!monitoringSession) return;\r\n\t\tconst response = await stopMonitoring({ call_uuid: monitoringSession.callUuid });\r\n\t\tif (response?.success && response?.message) toast.showToast(response.message, \"success\");\r\n\t\tsetMonitoringSession(null);\r\n\t}, [monitoringSession, stopMonitoring, toast]);\r\n\r\n\t// Change mode\r\n\tconst handleChangeMode = useCallback(async (newMode: SupervisorMonitorMode) => {\r\n\t\tif (!monitoringSession) return;\r\n\t\tconst response = await changeMode({ call_uuid: monitoringSession.callUuid, mode: newMode });\r\n\t\tif (response?.success) {\r\n\t\t\tsetMonitoringSession((prev) => prev ? { ...prev, mode: newMode } : null);\r\n\t\t\tif (response.message) toast.showToast(response.message, \"success\");\r\n\t\t}\r\n\t}, [monitoringSession, changeMode, toast]);\r\n\r\n\t// Close modal\r\n\tconst handleCloseMonitorModal = useCallback(() => {\r\n\t\tsetShowMonitorModal(false);\r\n\t\tsetSelectedAgent(null);\r\n\t\tsetMonitoringError(null);\r\n\t}, []);\r\n\r\n\t// Auto-stop when monitored agent's call ends\r\n\tuseEffect(() => {\r\n\t\tif (!monitoringSession) return;\r\n\t\tconst agent = agents.find((a) => a.agentId === monitoringSession.agentId);\r\n\t\tif (!agent) return;\r\n\t\tconst isOnCall = agent.status?.toUpperCase() === \"ONCALL\";\r\n\t\tconst callUuidChanged = agent.activeCallUuid !== monitoringSession.callUuid;\r\n\t\tif (!isOnCall || callUuidChanged) {\r\n\t\t\tsetMonitoringSession(null);\r\n\t\t\tsetShowMonitorModal(false);\r\n\t\t\ttoast.showToast(\"Monitoring ended — agent call has ended.\", \"info\");\r\n\t\t}\r\n\t}, [agents, monitoringSession, toast]);\r\n\r\n\t// Derived counts\r\n\tconst sorted = getSortedAgents(agents);\r\n\tconst oncallCount = topStats?.onCall ?? agents.filter((a) => getAgentStatusKey(a.status, a.callDirection).startsWith(\"s-oncall\")).length;\r\n\tconst breakCount = topStats?.onBreak ?? agents.filter((a) => getAgentStatusKey(a.status, a.callDirection) === \"s-break\").length;\r\n\tconst longCallCount = agents.filter((a) => getAgentStatusKey(a.status, a.callDirection) === \"s-oncall-in\" && (durations[a.agentId] || 0) >= LONG_CALL_SECS).length;\r\n\tconst availabilityAlertCount = agents.filter((a) => a.alert === true).length;\r\n\r\n\tconst kpiTotalAgents = topStats?.totalAgents ?? agents.length;\r\n\tconst kpiLoginCount = topStats?.loggedIn ?? agents.length;\r\n\tconst kpiIdleCount = topStats?.idleReady ?? agents.filter((a) => getAgentStatusKey(a.status, a.callDirection) === \"s-idle\").length;\r\n\tconst kpiOnCallCount = topStats?.onCall ?? agents.filter((a) => getAgentStatusKey(a.status, a.callDirection).startsWith(\"s-oncall\")).length;\r\n\tconst kpiWrapup = topStats?.wrapup ?? agents.filter((a) => getAgentStatusKey(a.status, a.callDirection) === \"s-wrapup\").length;\r\n\tconst kpiBreak = topStats?.onBreak ?? agents.filter((a) => getAgentStatusKey(a.status, a.callDirection) === \"s-break\").length;\r\n\tconst kpiNotLogged = topStats?.notLogged ?? Math.max(0, kpiTotalAgents - kpiLoginCount);\r\n\r\n\tconst tickerItems = queues.map((q) => ({\r\n\t\ttext: `${q.queueName} Queue — <b>${q.waitingCalls > 0 ? q.waitingCalls + \" waiting\" : \"all clear\"}</b> · avg ${q.avgWaitFormatted}`,\r\n\t\twarn: q.waitingCalls > 0,\r\n\t\tgood: q.waitingCalls === 0,\r\n\t}));\r\n\r\n\tif (isLoading) {\r\n\t\treturn (\r\n\t\t\t<Box sx={{\r\n\t\t\t\theight: \"100vh\", display: \"flex\", flexDirection: \"column\",\r\n\t\t\t\talignItems: \"center\", justifyContent: \"center\", background: \"transparent\", gap: 2,\r\n\t\t\t}}>\r\n\t\t\t\t<CircularProgress size={48} sx={{ color: C.blue }} />\r\n\t\t\t\t<Box sx={{ fontFamily: \"'Poppins', Arial, sans-serif\", fontSize: 16, fontWeight: 600, color: C.t2, letterSpacing: 1, textTransform: \"uppercase\" }}>\r\n\t\t\t\t\tLoading Live Status...\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<WallboardRoot isTv={isTvDashboard}>\r\n\r\n\t\t\t{/* ══ TOP BAR (TV only) ════════════════════════════════════ */}\r\n\t\t\t{isTvDashboard && (\r\n\t\t\t\t<TopBar>\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\r\n\t\t\t\t\t\t<BrandLogo>\r\n\t\t\t\t\t\t\t<svg viewBox=\"0 0 26 26\" fill=\"none\" width={16} height={16}>\r\n\t\t\t\t\t\t\t\t<rect width=\"26\" height=\"26\" rx=\"5\" fill=\"#1A5F6C\" />\r\n\t\t\t\t\t\t\t\t<path d=\"M5 18 Q5 8 13 8 Q21 8 21 18\" stroke=\"#1565c8\" strokeWidth=\"2.5\" fill=\"none\" strokeLinecap=\"round\" />\r\n\t\t\t\t\t\t\t\t<path d=\"M9 18 Q9 12 13 12 Q17 12 17 18\" stroke=\"#0a9a62\" strokeWidth=\"2\" fill=\"none\" strokeLinecap=\"round\" />\r\n\t\t\t\t\t\t\t\t<circle cx=\"13\" cy=\"19\" r=\"2\" fill=\"#1565c8\" />\r\n\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t</BrandLogo>\r\n\t\t\t\t\t\t<Box sx={{ color: \"#fff\" }}>\r\n\t\t\t\t\t\t\t<Box sx={{ fontFamily: \"'Poppins', Arial, sans-serif\", fontSize: 13, fontWeight: 800, letterSpacing: 1.2, lineHeight: 1 }}>AHS</Box>\r\n\t\t\t\t\t\t\t<Box sx={{ fontSize: 7.5, letterSpacing: 1, color: \"rgba(255,255,255,.45)\", textTransform: \"uppercase\" }}>Supervisor Wallboard</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<LiveBadge>\r\n\t\t\t\t\t\t\t<PulseDot />\r\n\t\t\t\t\t\t\tLIVE\r\n\t\t\t\t\t\t</LiveBadge>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box sx={{ textAlign: \"right\" }}>\r\n\t\t\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 14, fontWeight: 700, color: \"#fff\", letterSpacing: 1.5, lineHeight: 1 }}>{clockStr}</Box>\r\n\t\t\t\t\t\t<Box sx={{ fontSize: 7.5, color: \"rgba(255,255,255,.4)\", letterSpacing: 0.5, mt: \"1px\" }}>{dateStr}</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</TopBar>\r\n\t\t\t)}\r\n\r\n\t\t\t{/* ══ KPI STRIP ══════════════════════════════════════════════ */}\r\n\t\t\t<KpiStrip>\r\n\t\t\t\t<KpiCell accentColor=\"#94a3b8\"><KpiValue kcolor={C.t1}>{kpiTotalAgents}</KpiValue><KpiLabel>Total Agents</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.green}><KpiValue kcolor={C.green}>{kpiLoginCount}</KpiValue><KpiLabel>Logged In</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor=\"#cbd5e1\"><KpiValue kcolor=\"#94a3b8\">{kpiNotLogged}</KpiValue><KpiLabel>Not Logged</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.teal}><KpiValue kcolor={C.teal}>{kpiIdleCount}</KpiValue><KpiLabel>Idle / Ready</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.amber}><KpiValue kcolor={C.amber}>{kpiOnCallCount}</KpiValue><KpiLabel>On Call</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.green}><KpiValue kcolor={C.green}>{topStats?.inboundToday ?? 0}</KpiValue><KpiLabel>Inbound</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.blue}><KpiValue kcolor={C.blue}>{topStats?.outboundToday ?? 0}</KpiValue><KpiLabel>Outbound</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.purple}><KpiValue kcolor={C.purple}>{kpiWrapup}</KpiValue><KpiLabel>Wrapup</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.red}><KpiValue kcolor={C.red}>{kpiBreak}</KpiValue><KpiLabel>On Break</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.blue}><KpiValue kcolor={C.blue}>{topStats?.callsToday ?? 0}</KpiValue><KpiLabel>Calls Today</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.red}><KpiValue kcolor={C.red}>{topStats?.abandonedToday ?? 0}</KpiValue><KpiLabel>Abandoned</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.green}><KpiValue kcolor={C.green}>{topStats?.slaThisHrPct != null ? `${topStats.slaThisHrPct}%` : \"\"}</KpiValue><KpiLabel>SLA This Hr</KpiLabel></KpiCell>\r\n\t\t\t\t<KpiCell accentColor={C.amber}><KpiValue kcolor={C.amber}>{topStats?.avgSpeedAnswerFormatted ?? \"00:00\"}</KpiValue><KpiLabel>Avg Speed Ans</KpiLabel></KpiCell>\r\n\t\t\t</KpiStrip>\r\n\r\n\t\t\t{/* ══ BODY ══════════════════════════════════════════════════ */}\r\n\t\t\t<BodyGrid>\r\n\r\n\t\t\t\t{/* Column 1: Agent Status + Calls Waiting in Queue */}\r\n\t\t\t\t<Panel sx={{ maxHeight: { xs: \"none\", lg: \"calc(100vh - 96px)\" } }}>\r\n\t\t\t\t\t<PanelHeader>\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t\t\t\t<PhTitle>Agent Status</PhTitle>\r\n\t\t\t\t\t\t\t<Badge bg={C.amberLt} color={C.amber} border={C.amberBd}>{oncallCount} On-Call</Badge>\r\n\t\t\t\t\t\t\t<Badge bg={C.redLt} color={C.red} border={C.redBd}>{breakCount} Break</Badge>\r\n\t\t\t\t\t\t\t{longCallCount > 0 && (\r\n\t\t\t\t\t\t\t\t<Badge bg={C.redLt} color={C.red} border={C.redBd}>{longCallCount} Long</Badge>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{availabilityAlertCount > 0 && (\r\n\t\t\t\t\t\t\t\t<Badge bg={C.redLt} color={C.red} border={C.redBd}>{availabilityAlertCount} Alert</Badge>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box sx={{ fontSize: 8, color: C.t3 }}>{agents.length} agents</Box>\r\n\t\t\t\t\t</PanelHeader>\r\n\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\toverflowX: \"auto\", overflowY: \"auto\",\r\n\t\t\t\t\t\tmaxHeight: { xs: 350, lg: \"calc(100vh - 380px)\" },\r\n\t\t\t\t\t\t\"&::-webkit-scrollbar\": { width: 3, height: 3 },\r\n\t\t\t\t\t\t\"&::-webkit-scrollbar-track\": { background: C.bg2, borderRadius: 2 },\r\n\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { background: C.t4, borderRadius: 2, \"&:hover\": { background: C.t3 } },\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<AgentTable>\r\n\t\t\t\t\t\t\t<thead>\r\n\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"18%\" }}>Agent</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"7%\" }}>Ext</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"13%\" }}>Status</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"9%\" }}>Direction</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"9%\" }}>Duration</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"11%\" }}>Caller</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"15%\" }}>Queue</AgTh>\r\n\t\t\t\t\t\t\t\t\t<AgTh style={{ width: \"6%\" }}>Calls</AgTh>\r\n\t\t\t\t\t\t\t\t\t{!isTvDashboard && <AgTh style={{ width: \"12%\" }}>Actions</AgTh>}\r\n\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t</thead>\r\n\t\t\t\t\t\t\t<tbody>\r\n\t\t\t\t\t\t\t\t{sorted.length > 0 ? sorted.map((a) => (\r\n\t\t\t\t\t\t\t\t\t<AgentTableRow\r\n\t\t\t\t\t\t\t\t\t\tkey={a.agentId}\r\n\t\t\t\t\t\t\t\t\t\tagent={a}\r\n\t\t\t\t\t\t\t\t\t\tdurSecs={durations[a.agentId] || 0}\r\n\t\t\t\t\t\t\t\t\t\tonMonitor={isTvDashboard ? undefined : handleOpenMonitorModal}\r\n\t\t\t\t\t\t\t\t\t\tactiveMonitoring={monitoringSession}\r\n\t\t\t\t\t\t\t\t\t\tonStopMonitoring={handleStopMonitoring}\r\n\t\t\t\t\t\t\t\t\t\tonForceLogout={isTvDashboard ? undefined : handleRequestForceLogout}\r\n\t\t\t\t\t\t\t\t\t\tisLoggingOut={loggingOutId === a.agentId}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)) : (\r\n\t\t\t\t\t\t\t\t\t<tr><AgTd colSpan={isTvDashboard ? 8 : 9}><NoDataBox>No data available</NoDataBox></AgTd></tr>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</tbody>\r\n\t\t\t\t\t\t</AgentTable>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t{/* ── Waiting in Queue (Placed below Live Status) ── */}\r\n\t\t\t\t\t<Box sx={{ borderTop: `1px solid ${C.b1}`, flexShrink: 0 }}>\r\n\t\t\t\t\t\t<SbHeader sx={{ py: \"9px\" }}>\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"7px\" }}>\r\n\t\t\t\t\t\t\t\t<svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n\t\t\t\t\t\t\t\t\t<path d=\"M14 9.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0Z\" stroke={queueCalls.length > 0 ? C.amber : C.t3} strokeWidth=\"1.4\" />\r\n\t\t\t\t\t\t\t\t\t<path d=\"M8 6.5v3l2 1\" stroke={queueCalls.length > 0 ? C.amber : C.t3} strokeWidth=\"1.4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t<SbTitle sx={{ fontSize: 11, letterSpacing: 1.2, color: C.t2 }}>Calls Waiting in Queue</SbTitle>\r\n\t\t\t\t\t\t\t\t{selectedQueueId != null && (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\tcomponent=\"span\"\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => setSelectedQueueId(null)}\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tfontSize: 10,\r\n\t\t\t\t\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: C.blue,\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\r\n\t\t\t\t\t\t\t\t\t\t\tpadding: \"1px 7px\",\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: 10,\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: C.blueLt,\r\n\t\t\t\t\t\t\t\t\t\t\tborder: `1px solid ${C.blueBd}`,\r\n\t\t\t\t\t\t\t\t\t\t\tml: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\ttransition: \"background .15s ease\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { background: C.bg3 },\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\tShow all\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t<Badge\r\n\t\t\t\t\t\t\t\tbg={queueCalls.length > 0 ? C.redLt : C.bg2}\r\n\t\t\t\t\t\t\t\tcolor={queueCalls.length > 0 ? C.red : C.t3}\r\n\t\t\t\t\t\t\t\tborder={queueCalls.length > 0 ? C.redBd : C.b2}\r\n\t\t\t\t\t\t\t\tsx={{ fontSize: 11, padding: \"2px 9px\", borderRadius: 10, display: \"inline-flex\", alignItems: \"center\", gap: \"5px\" }}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{queueCalls.length > 0 && <StatusDot dotColor={C.red} animated />}\r\n\t\t\t\t\t\t\t\t{queueCalls.length} Waiting\r\n\t\t\t\t\t\t\t</Badge>\r\n\t\t\t\t\t\t</SbHeader>\r\n\r\n\t\t\t\t\t\t{/* Queue Filter Pills */}\r\n\t\t\t\t\t\t{queues.length > 1 && (\r\n\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\tgap: \"6px\",\r\n\t\t\t\t\t\t\t\tpx: \"10px\",\r\n\t\t\t\t\t\t\t\tpy: \"6px\",\r\n\t\t\t\t\t\t\t\tbackground: C.bg1,\r\n\t\t\t\t\t\t\t\tborderBottom: `1px solid ${C.b1}`,\r\n\t\t\t\t\t\t\t\toverflowX: \"auto\",\r\n\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { height: 2 },\r\n\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { background: C.t4, borderRadius: 1 },\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t<FilterPill\r\n\t\t\t\t\t\t\t\t\tactive={selectedQueueId === null}\r\n\t\t\t\t\t\t\t\t\tonClick={() => setSelectedQueueId(null)}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\tAll Queues ({queueCalls.length})\r\n\t\t\t\t\t\t\t\t</FilterPill>\r\n\t\t\t\t\t\t\t\t{queues.map((q) => {\r\n\t\t\t\t\t\t\t\t\tconst count = queueCalls.filter((c) => c.queueId === q.queueId).length;\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<FilterPill\r\n\t\t\t\t\t\t\t\t\t\t\tkey={q.queueId}\r\n\t\t\t\t\t\t\t\t\t\t\tactive={selectedQueueId === q.queueId}\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => setSelectedQueueId(selectedQueueId === q.queueId ? null : q.queueId)}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{q.queueName} ({count})\r\n\t\t\t\t\t\t\t\t\t\t</FilterPill>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t{/* Waiting Calls Table */}\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\toverflowY: \"auto\",\r\n\t\t\t\t\t\t\tmaxHeight: 260,\r\n\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { width: 3 },\r\n\t\t\t\t\t\t\t\"&::-webkit-scrollbar-track\": { background: C.bg2, borderRadius: 2 },\r\n\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { background: C.t4, borderRadius: 2, \"&:hover\": { background: C.t3 } },\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t{(() => {\r\n\t\t\t\t\t\t\t\tconst filtered = selectedQueueId != null\r\n\t\t\t\t\t\t\t\t\t? queueCalls.filter((c) => c.queueId === selectedQueueId)\r\n\t\t\t\t\t\t\t\t\t: queueCalls;\r\n\t\t\t\t\t\t\t\tif (filtered.length === 0) {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<NoDataBox sx={{ gap: \"7px\", padding: \"20px 8px\", fontSize: 12, color: C.green }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<svg width=\"15\" height=\"15\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke={C.green} strokeWidth=\"1.4\" />\r\n\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"M5.5 8.2 7.2 10l3.3-3.6\" stroke={C.green} strokeWidth=\"1.6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n\t\t\t\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t\t\t\t{selectedQueueId != null\r\n\t\t\t\t\t\t\t\t\t\t\t\t? \"No calls waiting in selected queue\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t: \"No calls waiting in queue\"}\r\n\t\t\t\t\t\t\t\t\t\t</NoDataBox>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<AgentTable>\r\n\t\t\t\t\t\t\t\t\t\t<thead>\r\n\t\t\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTh>Caller</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTh>Queue</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTh>DID</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTh>Source</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTh>Wait Time</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTh>Status</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t\t\t</thead>\r\n\t\t\t\t\t\t\t\t\t\t<tbody>\r\n\t\t\t\t\t\t\t\t\t\t\t{filtered.map((qc) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst curSecs = queueDurations[qc.queueEntryId || qc.callUuid] ?? qc.waitSeconds ?? 0;\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Wait time drives the whole row: a left accent bar, a tinted\r\n\t\t\t\t\t\t\t\t\t\t\t\t// background and the chip around the timer all share one tone.\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst tone = curSecs >= 60\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? { fg: C.red, bg: C.redLt, bd: C.redBd }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: curSecs >= 30\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? { fg: C.amber, bg: C.amberLt, bd: C.amberBd }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: { fg: C.green, bg: C.greenLt, bd: C.greenBd };\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst isUrgent = curSecs >= 60;\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent=\"tr\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={qc.queueEntryId || qc.callUuid}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"background .18s ease\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground: isUrgent\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"rgba(204,42,42,.05)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: curSecs >= 30 ? \"rgba(196,124,0,.04)\" : \"transparent\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"& > td:first-of-type\": { borderLeft: `3px solid ${tone.fg}` },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { background: isUrgent ? \"rgba(204,42,42,.11)\" : C.bg2 },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 13, fontWeight: 600, color: C.t1, letterSpacing: 0.3 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{maskNumber(qc.callerNumber) || \"—\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent=\"span\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"inline-flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgap: \"7px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: \"3px 12px 3px 9px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: 999,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground: `linear-gradient(135deg, ${tone.bg} 0%, #ffffff 100%)`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: `1px solid ${tone.bd}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"0 1px 2px rgba(13,30,53,.07)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"box-shadow .18s ease, border-color .18s ease\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { boxShadow: \"0 2px 7px rgba(13,30,53,.14)\", borderColor: tone.fg },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent=\"span\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: 6,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: 6,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"50%\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground: tone.fg,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `0 0 0 3px ${tone.bd}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<QName sx={{ fontSize: 17, fontWeight: 700, color: tone.fg, letterSpacing: 0.2, lineHeight: 1.3 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{qc.queueName || `Queue #${qc.queueId}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</QName>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 13, color: C.t3 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{qc.didNumber || \"—\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 13, color: C.t2, fontWeight: 500 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{qc.source || \"—\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"inline-flex\", alignItems: \"center\", gap: \"5px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontFamily: \"'JetBrains Mono', monospace\", fontWeight: 700, fontSize: 13,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: tone.fg, background: tone.bg, border: `1px solid ${tone.bd}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: 4, padding: \"2px 7px\", lineHeight: 1.4,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{isUrgent && <StatusDot dotColor={C.red} animated />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{fmtDur(curSecs)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge bg={C.amberLt} color={C.amber} border={C.amberBd} sx={{ fontSize: 11, padding: \"2px 8px\", borderRadius: 10 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{qc.status?.toUpperCase() || \"WAITING\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t</tbody>\r\n\t\t\t\t\t\t\t\t\t</AgentTable>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<PageInfo sx={{ mt: \"auto\" }}>\r\n\t\t\t\t\t\t<span>{agents.length} agents · {oncallCount} on call · {agents.filter((a) => getAgentStatusKey(a.status, a.callDirection) === \"s-idle\").length} idle</span>\r\n\t\t\t\t\t\t<span>Auto-refreshes every 5s</span>\r\n\t\t\t\t\t</PageInfo>\r\n\t\t\t\t</Panel>\r\n\r\n\t\t\t\t{/* Column 2: Queue Performance + Queue Pulse + Live Alerts */}\r\n\t\t\t\t<Panel sx={{ borderRight: `1px solid ${C.b1}`, maxHeight: { xs: \"none\", lg: \"calc(100vh - 96px)\" } }}>\r\n\t\t\t\t\t<PanelHeader>\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t\t\t\t<PhTitle>Queue Performance</PhTitle>\r\n\t\t\t\t\t\t\t<Badge bg={C.greenLt} color={C.green} border={C.greenBd}>All Healthy</Badge>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Badge bg={C.bg2} color={C.t3} border={C.b2}>Live SLA</Badge>\r\n\t\t\t\t\t</PanelHeader>\r\n\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\tflex: 1, minHeight: 0, overflowY: \"auto\",\r\n\t\t\t\t\t\t\"&::-webkit-scrollbar\": { width: 3 },\r\n\t\t\t\t\t\t\"&::-webkit-scrollbar-track\": { background: C.bg2, borderRadius: 2 },\r\n\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { background: C.t4, borderRadius: 2, \"&:hover\": { background: C.t3 } },\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Box sx={{ overflowX: \"auto\", \"&::-webkit-scrollbar\": { height: 3 }, \"&::-webkit-scrollbar-track\": { background: C.bg2, borderRadius: 2 }, \"&::-webkit-scrollbar-thumb\": { background: C.t4, borderRadius: 2 } }}>\r\n\t\t\t\t\t\t\t<AgentTable>\r\n\t\t\t\t\t\t\t\t<thead>\r\n\t\t\t\t\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t\t\t\t\t<AgTh>Queue</AgTh><AgTh>Agents</AgTh><AgTh>Active</AgTh><AgTh>Waiting</AgTh>\r\n\t\t\t\t\t\t\t\t\t\t<AgTh>Avg Wait</AgTh><AgTh>Load</AgTh><AgTh>SLA%</AgTh><AgTh>C/hr</AgTh>\r\n\t\t\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t\t\t</thead>\r\n\t\t\t\t\t\t\t\t<tbody>\r\n\t\t\t\t\t\t\t\t\t{queues.length > 0 ? queues.map((q) => {\r\n\t\t\t\t\t\t\t\t\t\tconst loadColor = q.loadPct > 50 ? C.red : q.loadPct > 25 ? C.amber : C.green;\r\n\t\t\t\t\t\t\t\t\t\tconst slaColor = q.slaPct >= 95 ? C.green : q.slaPct >= 85 ? C.amber : C.red;\r\n\t\t\t\t\t\t\t\t\t\tconst isWaitingHigh = q.waitingCalls > WAITING_THRESHOLD;\r\n\t\t\t\t\t\t\t\t\t\tconst isSelected = selectedQueueId === q.queueId;\r\n\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent=\"tr\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tkey={q.queueId}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => setSelectedQueueId((prev) => prev === q.queueId ? null : q.queueId)}\r\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Click to filter waiting calls\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcursor: \"pointer\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"background 0.15s ease\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...(isSelected\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? { background: \"rgba(21,101,200,.1) !important\" }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: isWaitingHigh\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? { animation: `${rowBlink} 1s ease infinite` }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: q.slaPct < 90\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? { background: \"rgba(204,42,42,.04)\" }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: {}),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { background: isSelected ? \"rgba(21,101,200,.14)\" : C.bg3 },\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{isSelected && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ width: 4, height: 14, borderRadius: 1, background: C.blue, flexShrink: 0 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<QName sx={{ color: isSelected ? C.blue : C.t1, fontWeight: isSelected ? 700 : 600 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{q.queueName}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</QName>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd><QNum numColor={C.blue}>{q.totalAgents}</QNum></AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd><QNum numColor={C.amber}>{q.activeAgents}</QNum></AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd><QNum numColor={isWaitingHigh ? C.red : q.waitingCalls > 0 ? C.red : C.green}>{q.waitingCalls}</QNum></AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd><QNum numColor={C.green}>{q.avgWaitFormatted}</QNum></AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"5px\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<QBar><QBarFill w={q.loadPct} barColor={loadColor} /></QBar>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 10, color: C.t3 }}>{q.loadPct}%</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd><QNum numColor={slaColor}>{q.slaPct}%</QNum></AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<AgTd><QNum numColor={C.blue}>{q.callsPerHour}</QNum></AgTd>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t}) : (\r\n\t\t\t\t\t\t\t\t\t\t<tr><AgTd colSpan={8}><NoDataBox>No data available</NoDataBox></AgTd></tr>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</tbody>\r\n\t\t\t\t\t\t\t</AgentTable>\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{/* ── Queue Pulse ── */}\r\n\t\t\t\t\t\t<Box sx={{ borderTop: `1px solid ${C.b1}` }}>\r\n\t\t\t\t\t\t\t<SbHeader>\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"7px\" }}>\r\n\t\t\t\t\t\t\t\t\t<svg width=\"11\" height=\"11\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n\t\t\t\t\t\t\t\t\t\t<path d=\"M1 8h2l2-5 2 9 2-7 2 5 1-2h3\" stroke={C.blue} strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" fill=\"none\" />\r\n\t\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t\t<SbTitle>Queue Pulse</SbTitle>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Badge bg={C.greenLt} color={C.green} border={C.greenBd}>Live</Badge>\r\n\t\t\t\t\t\t\t</SbHeader>\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr 1fr\", borderBottom: `1px solid ${C.b1}` }}>\r\n\t\t\t\t\t\t\t\t{[\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tlabel: \"In Queue\",\r\n\t\t\t\t\t\t\t\t\t\tvalue: queuePulse?.runningInQueue ?? queueCalls.length,\r\n\t\t\t\t\t\t\t\t\t\tcolor: (queuePulse?.runningInQueue ?? queueCalls.length) > 0 ? C.red : C.amber,\r\n\t\t\t\t\t\t\t\t\t\tbg: (queuePulse?.runningInQueue ?? queueCalls.length) > 0 ? C.redLt : C.amberLt,\r\n\t\t\t\t\t\t\t\t\t\tonClick: () => setSelectedQueueId(null),\r\n\t\t\t\t\t\t\t\t\t\tclickable: true,\r\n\t\t\t\t\t\t\t\t\t\ttitle: \"Click to show all waiting calls\",\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{ label: \"Ready\",    value: queuePulse?.readyAgents ?? 0,           color: C.green, bg: C.greenLt },\r\n\t\t\t\t\t\t\t\t\t{ label: \"Avg Wait\", value: queuePulse?.avgWaitFormatted ?? \"--:--\", color: C.blue,  bg: C.blueLt  },\r\n\t\t\t\t\t\t\t\t].map((s) => (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\tkey={s.label}\r\n\t\t\t\t\t\t\t\t\t\tonClick={s.onClick}\r\n\t\t\t\t\t\t\t\t\t\ttitle={s.title}\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tp: \"12px\",\r\n\t\t\t\t\t\t\t\t\t\t\tborderRight: `1px solid ${C.b1}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:last-child\": { borderRight: \"none\" },\r\n\t\t\t\t\t\t\t\t\t\t\tbackground: s.bg,\r\n\t\t\t\t\t\t\t\t\t\t\tcursor: s.clickable ? \"pointer\" : \"default\",\r\n\t\t\t\t\t\t\t\t\t\t\ttransition: \"opacity 0.15s\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": s.clickable ? { opacity: 0.85 } : undefined,\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontFamily: \"'Poppins', Arial, sans-serif\", fontSize: 20, fontWeight: 800, color: s.color, lineHeight: 1 }}>{s.value}</Box>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 8, letterSpacing: 0.8, textTransform: \"uppercase\", color: s.color, mt: \"4px\", fontWeight: 600, opacity: 0.75 }}>{s.label}</Box>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{/* ── Live Alerts ── */}\r\n\t\t\t\t\t\t<Box sx={{ borderTop: `1px solid ${C.b1}` }}>\r\n\t\t\t\t\t\t\t<SbHeader>\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"7px\" }}>\r\n\t\t\t\t\t\t\t\t\t<svg width=\"11\" height=\"11\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n\t\t\t\t\t\t\t\t\t\t<path d=\"M8 1.5a5 5 0 0 1 5 5v2.5l1 2H2l1-2V6.5a5 5 0 0 1 5-5z\" stroke={alerts.length > 0 ? C.amber : C.t3} strokeWidth=\"1.4\" strokeLinejoin=\"round\" />\r\n\t\t\t\t\t\t\t\t\t\t<path d=\"M6.5 13a1.5 1.5 0 0 0 3 0\" stroke={alerts.length > 0 ? C.amber : C.t3} strokeWidth=\"1.4\" strokeLinecap=\"round\" />\r\n\t\t\t\t\t\t\t\t\t</svg>\r\n\t\t\t\t\t\t\t\t\t<SbTitle>Live Alerts</SbTitle>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Badge bg={alerts.length > 0 ? C.amberLt : C.bg2} color={alerts.length > 0 ? C.amber : C.t3} border={alerts.length > 0 ? C.amberBd : C.b2}>{alerts.length}</Badge>\r\n\t\t\t\t\t\t\t</SbHeader>\r\n\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\toverflowY: \"auto\", maxHeight: 260,\r\n\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { width: 3 },\r\n\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-track\": { background: C.bg2, borderRadius: 2 },\r\n\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { background: C.t4, borderRadius: 2, \"&:hover\": { background: C.t3 } },\r\n\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t{alerts.length > 0 ? alerts.map((a, i) => {\r\n\t\t\t\t\t\t\t\t\tconst sk = a.severity?.toLowerCase() === \"critical\" ? \"red\" : a.severity?.toLowerCase() === \"warning\" ? \"amber\" : \"blue\";\r\n\t\t\t\t\t\t\t\t\tconst ALERT_COLORS: Record<string, { bg: string; color: string }> = {\r\n\t\t\t\t\t\t\t\t\t\tred:   { bg: C.redLt,   color: C.red   },\r\n\t\t\t\t\t\t\t\t\t\tamber: { bg: C.amberLt, color: C.amber },\r\n\t\t\t\t\t\t\t\t\t\tblue:  { bg: C.blueLt,  color: C.blue  },\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\tconst ac = ALERT_COLORS[sk] ?? ALERT_COLORS.blue;\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<Box key={i} sx={{ display: \"flex\", gap: \"10px\", px: \"12px\", py: \"9px\", borderBottom: `1px solid ${C.b1}`, background: i % 2 === 0 ? \"transparent\" : C.bg2 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ width: 8, height: 8, borderRadius: \"50%\", background: ac.color, flexShrink: 0, mt: \"3px\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ flex: 1, minWidth: 0 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 11, fontWeight: 600, color: C.t1, mb: \"2px\" }}>{a.alertTitle}</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 9, color: C.t3, lineHeight: 1.4 }}>{a.alertMessage}</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ flexShrink: 0, display: \"flex\", flexDirection: \"column\", alignItems: \"flex-end\", gap: \"4px\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 7, fontWeight: 700, px: \"5px\", py: \"1px\", borderRadius: \"3px\", background: ac.bg, color: ac.color, textTransform: \"uppercase\", letterSpacing: 0.5 }}>{a.severity}</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 9, color: C.t3 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{fmtAlertTime(a.alertTime)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}) : <NoDataBox>No active alerts</NoDataBox>}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Panel>\r\n\r\n\t\t\t</BodyGrid>\r\n\r\n\t\t\t{/* ══ FOOTER TICKER ══════════════════════════════════════════ */}\r\n\t\t\t<Footer>\r\n\t\t\t\t<TickerLabel>AHS Live</TickerLabel>\r\n\t\t\t\t<TickerTrack>\r\n\t\t\t\t\t<TickerInner>\r\n\t\t\t\t\t\t{[...tickerItems, ...tickerItems].map((t, i) => (\r\n\t\t\t\t\t\t\t<TickerSpan key={i} isWarn={t.warn} isGood={t.good} dangerouslySetInnerHTML={{ __html: t.text }} />\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</TickerInner>\r\n\t\t\t\t</TickerTrack>\r\n\t\t\t</Footer>\r\n\r\n\t\t\t{/* ══ SUPERVISOR MONITOR MODAL ════════════════════════════════ */}\r\n\t\t\t{showMonitorModal && selectedAgent && (() => {\r\n\t\t\t\tconst modeConfig = {\r\n\t\t\t\t\tlisten:  { icon: \"👂\", label: \"Listen\",  desc: \"Silent – agent unaware\",  accent: C.blue,    accentLt: \"#e3f2fd\", accentText: \"#1565c0\" },\r\n\t\t\t\t\twhisper: { icon: \"🗣️\", label: \"Whisper\", desc: \"Only agent hears you\",    accent: \"#ef6c00\", accentLt: \"#fff3e0\", accentText: \"#e65100\" },\r\n\t\t\t\t\tbarge:   { icon: \"📢\", label: \"Barge\",   desc: \"Both parties hear you\",   accent: \"#c2185b\", accentLt: \"#fce4ec\", accentText: \"#880e4f\" },\r\n\t\t\t\t} as const;\r\n\t\t\t\tconst m = modeConfig[selectedMode];\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<Box onClick={handleCloseMonitorModal} sx={{ position: \"fixed\", inset: 0, zIndex: 1000 }} />\r\n\t\t\t\t\t\t<MonitorCard>\r\n\t\t\t\t\t\t\t<Box sx={{ height: 3, background: m.accent }} />\r\n\t\t\t\t\t\t\t<Box sx={{ p: \"12px 14px\" }}>\r\n\t\t\t\t\t\t\t\t{/* Header */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", mb: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ width: 32, height: 32, borderRadius: \"10px\", background: m.accentLt, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{m.icon}\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontWeight: 700, fontSize: 13, color: C.t1, lineHeight: 1.2 }}>Monitor Call</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 10, color: C.t3 }}>{selectedAgent.agentName} · ext {selectedAgent.extension || \"\"}</Box>\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<Box component=\"button\" onClick={handleCloseMonitorModal} sx={{ border: \"none\", background: \"none\", cursor: \"pointer\", color: C.t4, fontSize: 18, lineHeight: 1, p: 0, \"&:hover\": { color: C.t2 } }}>×</Box>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{/* Call snapshot */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: \"4px 0\", background: C.bg2, borderRadius: \"8px\", p: \"8px 10px\", mb: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t{[\r\n\t\t\t\t\t\t\t\t\t\t[\"Customer\", maskNumber(selectedAgent.activeCallerNumber) || \"\"],\r\n\t\t\t\t\t\t\t\t\t\t[\"Duration\", fmtDur(durations[selectedAgent.agentId] || 0)],\r\n\t\t\t\t\t\t\t\t\t].map(([label, value]) => (\r\n\t\t\t\t\t\t\t\t\t\t<React.Fragment key={label}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 10, color: C.t3, fontWeight: 500 }}>{label}</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 10, fontWeight: 600, color: C.t1, textAlign: \"right\" }}>{value}</Box>\r\n\t\t\t\t\t\t\t\t\t\t</React.Fragment>\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{/* Mode pills */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: \"6px\", mb: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t{([\"listen\", \"whisper\", \"barge\"] as const).map((mode) => {\r\n\t\t\t\t\t\t\t\t\t\tconst mc = modeConfig[mode];\r\n\t\t\t\t\t\t\t\t\t\tconst active = selectedMode === mode;\r\n\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box key={mode} onClick={() => setSelectedMode(mode)} sx={{ flex: 1, textAlign: \"center\", py: \"5px\", borderRadius: \"20px\", fontSize: 9, fontWeight: 700, letterSpacing: 0.4, cursor: \"pointer\", textTransform: \"uppercase\", transition: \"all 0.15s\", background: active ? mc.accent : C.bg2, color: active ? \"#fff\" : C.t3, border: `1px solid ${active ? mc.accent : \"transparent\"}`, \"&:hover\": { background: active ? mc.accent : C.bg3 } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{mc.icon} {mc.label}\r\n\t\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{/* Mode hint */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 10, color: m.accentText, background: m.accentLt, borderRadius: \"6px\", px: 1.25, py: 0.75, mb: 1.5, display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t<span style={{ fontSize: 11 }}>ℹ️</span> {m.desc} · Your dialer will ring to connect.\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{/* Error */}\r\n\t\t\t\t\t\t\t\t{monitoringError && (\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ mb: 1.5, px: 1.25, py: 0.75, background: C.redLt, borderRadius: \"6px\", color: C.red, fontSize: 11 }}>\r\n\t\t\t\t\t\t\t\t\t\t{monitoringError}\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t{/* Actions */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: \"8px\" }}>\r\n\t\t\t\t\t\t\t\t\t<Box component=\"button\" onClick={handleCloseMonitorModal} sx={{ flex: 1, py: \"7px\", border: `1px solid ${C.b2}`, borderRadius: \"8px\", cursor: \"pointer\", fontSize: 11, fontWeight: 500, background: \"transparent\", color: C.t2, \"&:hover\": { background: C.bg2 } }}>Cancel</Box>\r\n\t\t\t\t\t\t\t\t\t<Box component=\"button\" onClick={handleStartMonitoring} disabled={monitoringLoading} sx={{ flex: 2, py: \"7px\", border: \"none\", borderRadius: \"8px\", cursor: monitoringLoading ? \"not-allowed\" : \"pointer\", fontSize: 11, fontWeight: 700, background: m.accent, color: \"#fff\", opacity: monitoringLoading ? 0.7 : 1, transition: \"opacity 0.15s\", \"&:hover\": { opacity: monitoringLoading ? 0.7 : 0.88 } }}>\r\n\t\t\t\t\t\t\t\t\t\t{monitoringLoading ? \"Starting…\" : `▶ Start ${m.label}`}\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</MonitorCard>\r\n\t\t\t\t\t</>\r\n\t\t\t\t);\r\n\t\t\t})()}\r\n\r\n\t\t\t{/* ══ ACTIVE MONITORING INDICATOR ════════════════════════════ */}\r\n\t\t\t{monitoringSession && (() => {\r\n\t\t\t\tconst sessionModeConfig = {\r\n\t\t\t\t\tlisten:  { icon: \"👂\", accent: C.blue,    accentLt: \"#e3f2fd\", label: \"Listen\"  },\r\n\t\t\t\t\twhisper: { icon: \"🗣️\", accent: \"#ef6c00\", accentLt: \"#fff3e0\", label: \"Whisper\" },\r\n\t\t\t\t\tbarge:   { icon: \"📢\", accent: \"#c2185b\", accentLt: \"#fce4ec\", label: \"Barge\"   },\r\n\t\t\t\t} as const;\r\n\t\t\t\tconst sm = sessionModeConfig[monitoringSession.mode as keyof typeof sessionModeConfig] ?? sessionModeConfig.listen;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Box sx={{ position: \"fixed\", bottom: 20, right: 20, width: 268, background: \"#fff\", borderRadius: \"14px\", boxShadow: \"0 8px 28px rgba(13,30,53,0.16), 0 2px 6px rgba(13,30,53,0.08)\", zIndex: 999, overflow: \"hidden\", animation: `${slideUp} 0.22s cubic-bezier(.22,.68,0,1.2)` }}>\r\n\t\t\t\t\t\t<Box sx={{ height: 3, background: sm.accent }} />\r\n\t\t\t\t\t\t<Box sx={{ p: \"10px 12px\" }}>\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"8px\", mb: 1 }}>\r\n\t\t\t\t\t\t\t\t<Box sx={{ width: 8, height: 8, borderRadius: \"50%\", background: C.green, flexShrink: 0, animation: `${pulse} 1.6s ease infinite` }} />\r\n\t\t\t\t\t\t\t\t<Box sx={{ fontWeight: 700, fontSize: 11, color: C.t1, textTransform: \"uppercase\", letterSpacing: 0.6 }}>\r\n\t\t\t\t\t\t\t\t\t{sm.icon} {sm.label} Active\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ ml: \"auto\", fontFamily: \"'JetBrains Mono', monospace\", fontSize: 11, fontWeight: 600, color: sm.accent }}>\r\n\t\t\t\t\t\t\t\t\t{fmtDur(Math.floor((Date.now() - monitoringSession.startTime) / 1000))}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t<Box sx={{ fontSize: 11, color: C.t2, mb: 1, pl: \"16px\" }}>\r\n\t\t\t\t\t\t\t\t{monitoringSession.agentName}\r\n\t\t\t\t\t\t\t\t<Box component=\"span\" sx={{ color: C.t4, mx: 0.5 }}>·</Box>\r\n\t\t\t\t\t\t\t\text {monitoringSession.agentExt}\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t<Box sx={{ borderTop: `1px solid ${C.b1}`, mb: 1 }} />\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: \"5px\" }}>\r\n\t\t\t\t\t\t\t\t{([\"listen\", \"whisper\", \"barge\"] as const).filter(m => m !== monitoringSession.mode).map((mode) => {\r\n\t\t\t\t\t\t\t\t\tconst mc = sessionModeConfig[mode];\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<MonitorBtn key={mode} variant={mode} onClick={() => handleChangeMode(mode)} style={{ flex: 1, justifyContent: \"center\", padding: \"4px 0\", fontSize: 9, borderRadius: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{mc.icon} {mc.label}\r\n\t\t\t\t\t\t\t\t\t\t</MonitorBtn>\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t<MonitorBtn variant=\"stop\" onClick={handleStopMonitoring} style={{ flex: 1, justifyContent: \"center\", padding: \"4px 0\", fontSize: 9, borderRadius: 4 }}>\r\n\t\t\t\t\t\t\t\t\t⏹ Stop\r\n\t\t\t\t\t\t\t\t</MonitorBtn>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t);\r\n\t\t\t})()}\r\n\r\n\t\t\t{/* ══ FORCE-LOGOUT CONFIRMATION ══════════════════════════════ */}\r\n\t\t\t{logoutTarget && (() => {\r\n\t\t\t\tconst busy = loggingOutId === logoutTarget.agentId;\r\n\t\t\t\tconst targetOnCall = getAgentStatusKey(logoutTarget.status, logoutTarget.callDirection).startsWith(\"s-oncall\");\r\n\t\t\t\t// Idle / on-break only — see LOGOUT_SAFE_STATUSES. The dialog still opens\r\n\t\t\t\t// for everyone else so the supervisor gets told why, with the confirm\r\n\t\t\t\t// button dead rather than the row's ⏻ silently doing nothing.\r\n\t\t\t\tconst logoutAllowed = canForceLogoutAgent(logoutTarget);\r\n\t\t\t\tconst confirmDisabled = busy || !logoutAllowed;\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<Box onClick={() => !busy && setLogoutTarget(null)} sx={{ position: \"fixed\", inset: 0, background: \"rgba(13,30,53,0.28)\", zIndex: 1000 }} />\r\n\t\t\t\t\t\t<MonitorCard>\r\n\t\t\t\t\t\t\t<Box sx={{ height: 3, background: C.red }} />\r\n\t\t\t\t\t\t\t<Box sx={{ p: \"12px 14px\" }}>\r\n\t\t\t\t\t\t\t\t{/* Header */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", mb: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ width: 32, height: 32, borderRadius: \"10px\", background: C.redLt, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: 16 }}>⏻</Box>\r\n\t\t\t\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontWeight: 700, fontSize: 13, color: C.t1, lineHeight: 1.2 }}>Log Out Agent</Box>\r\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 10, color: C.t3 }}>{logoutTarget.agentName} · ext {logoutTarget.extension || \"\"}</Box>\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<Box component=\"button\" onClick={() => !busy && setLogoutTarget(null)} sx={{ border: \"none\", background: \"none\", cursor: \"pointer\", color: C.t4, fontSize: 18, lineHeight: 1, p: 0, \"&:hover\": { color: C.t2 } }}>×</Box>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t<Box sx={{ fontSize: 11, color: C.t2, mb: 1.5, lineHeight: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\tThis ends {logoutTarget.agentName}'s session and signs them out of the dialer.\r\n\t\t\t\t\t\t\t\t\t{!logoutAllowed && (\r\n\t\t\t\t\t\t\t\t\t\t<Box component=\"span\" sx={{ display: \"block\", mt: 0.75, color: C.red, fontWeight: 600 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t⚠ This agent is {targetOnCall ? \"on an active call\" : \"in wrap-up\"} — an agent can\r\n\t\t\t\t\t\t\t\t\t\t\tonly be logged out while idle or on break.\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{/* Actions */}\r\n\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: \"8px\" }}>\r\n\t\t\t\t\t\t\t\t\t<Box component=\"button\" onClick={() => !busy && setLogoutTarget(null)} sx={{ flex: 1, py: \"7px\", border: `1px solid ${C.b2}`, borderRadius: \"8px\", cursor: busy ? \"not-allowed\" : \"pointer\", fontSize: 11, fontWeight: 500, background: \"transparent\", color: C.t2, \"&:hover\": { background: C.bg2 } }}>Cancel</Box>\r\n\t\t\t\t\t\t\t\t\t<Box component=\"button\" onClick={handleConfirmForceLogout} disabled={confirmDisabled} title={logoutAllowed ? undefined : \"Only an idle or on-break agent can be logged out\"} sx={{ flex: 2, py: \"7px\", border: \"none\", borderRadius: \"8px\", cursor: confirmDisabled ? \"not-allowed\" : \"pointer\", fontSize: 11, fontWeight: 700, background: C.red, color: \"#fff\", opacity: confirmDisabled ? (logoutAllowed ? 0.7 : 0.45) : 1, transition: \"opacity 0.15s\", \"&:hover\": { opacity: confirmDisabled ? (logoutAllowed ? 0.7 : 0.45) : 0.88 } }}>\r\n\t\t\t\t\t\t\t\t\t\t{busy ? \"Logging out…\" : \"⏻ Log Out Agent\"}\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</MonitorCard>\r\n\t\t\t\t\t</>\r\n\t\t\t\t);\r\n\t\t\t})()}\r\n\r\n\t\t</WallboardRoot>\r\n\t);\r\n}\r\n\r\n// ─── SDK-wrapped export ───────────────────────────────────────────────────────\r\n\r\nexport default function LiveStatusPage(props: LiveStatusPageProps) {\r\n\treturn (\r\n\t\t<SDKProvider>\r\n\t\t\t<LiveStatusPageInner {...props} />\r\n\t\t</SDKProvider>\r\n\t);\r\n}\r\n","import { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport axiosInstance from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type {\r\n\tDashboardAgentCard,\r\n\tDashboardAlert,\r\n\tDashboardQueueCall,\r\n\tDashboardQueueData,\r\n\tDashboardQueuePulse,\r\n\tDashboardTopStats,\r\n} from \"./types\";\r\n\r\nexport const POLL_INTERVAL_MS = 5000;\r\nexport const LONG_CALL_SECS = 420;\r\nexport const WAITING_THRESHOLD = 3;\r\n\r\n// ─── Helpers ──────────────────────────────────────────────────────────────────\r\n\r\nexport function parseDur(dur: string): number {\r\n\tconst p = (dur || \"00:00:00\").split(\":\").map(Number);\r\n\treturn (p[0] || 0) * 3600 + (p[1] || 0) * 60 + (p[2] || 0);\r\n}\r\n\r\nexport function fmtDur(s: number): string {\r\n\tconst h = Math.floor(s / 3600);\r\n\tconst m = Math.floor((s % 3600) / 60);\r\n\tconst sc = s % 60;\r\n\treturn [h, m, sc].map((x) => String(x).padStart(2, \"0\")).join(\":\");\r\n}\r\n\r\nexport type AgentStatusKey = \"s-oncall-in\" | \"s-oncall-out\" | \"s-wrapup\" | \"s-break\" | \"s-idle\";\r\n\r\nexport const STATUS_PRIORITY: Record<AgentStatusKey, number> = {\r\n\t\"s-oncall-in\": 0,\r\n\t\"s-oncall-out\": 1,\r\n\t\"s-break\": 2,\r\n\t\"s-wrapup\": 3,\r\n\t\"s-idle\": 4,\r\n};\r\n\r\nexport function getAgentStatusKey(status: string, callDirection: string | null): AgentStatusKey {\r\n\tconst lower = (status || \"\").toLowerCase();\r\n\tif (lower.includes(\"idle\") || lower.includes(\"ready\") || lower.includes(\"available\")) return \"s-idle\";\r\n\tif (lower.includes(\"break\") || lower.includes(\"pause\")) return \"s-break\";\r\n\tif (lower.includes(\"wrap\") || lower.includes(\"acw\")) return \"s-wrapup\";\r\n\tif (lower.includes(\"outbound\") || lower.includes(\"outgoing\") || lower.includes(\"dialing\")) return \"s-oncall-out\";\r\n\tif (\r\n\t\tlower.includes(\"call\") || lower.includes(\"busy\") || lower.includes(\"oncall\") ||\r\n\t\tlower.includes(\"on-call\") || lower.includes(\"on_call\") || lower.includes(\"incoming\") ||\r\n\t\tlower.includes(\"ringing\") || lower.includes(\"connected\")\r\n\t) {\r\n\t\treturn callDirection === \"OUTBOUND\" ? \"s-oncall-out\" : \"s-oncall-in\";\r\n\t}\r\n\treturn \"s-idle\";\r\n}\r\n\r\nexport function getSortedAgents(list: DashboardAgentCard[]): DashboardAgentCard[] {\r\n\treturn [...list].sort(\r\n\t\t(a, b) =>\r\n\t\t\t(STATUS_PRIORITY[getAgentStatusKey(a.status, a.callDirection)] ?? 9) -\r\n\t\t\t(STATUS_PRIORITY[getAgentStatusKey(b.status, b.callDirection)] ?? 9),\r\n\t);\r\n}\r\n\r\n// ─── API functions ────────────────────────────────────────────────────────────\r\n\r\nasync function fetchTopStats(): Promise<DashboardTopStats> {\r\n\tconst res = await axiosInstance.get(END_POINT.DASHBOARD_TOP_STATS);\r\n\treturn res.data;\r\n}\r\n\r\nasync function fetchAgents(): Promise<DashboardAgentCard[]> {\r\n\tconst res = await axiosInstance.get(END_POINT.DASHBOARD_AGENTS);\r\n\treturn res.data;\r\n}\r\n\r\nasync function fetchQueues(): Promise<DashboardQueueData[]> {\r\n\tconst res = await axiosInstance.get(END_POINT.DASHBOARD_QUEUES);\r\n\treturn res.data;\r\n}\r\n\r\nasync function fetchAlerts(): Promise<DashboardAlert[]> {\r\n\tconst res = await axiosInstance.get(END_POINT.DASHBOARD_ALERTS);\r\n\treturn res.data;\r\n}\r\n\r\nasync function fetchQueuePulse(): Promise<DashboardQueuePulse> {\r\n\tconst res = await axiosInstance.get(END_POINT.DASHBOARD_QUEUE_PULSE);\r\n\treturn res.data;\r\n}\r\n\r\nasync function fetchQueueCalls(): Promise<DashboardQueueCall[]> {\r\n\tconst res = await axiosInstance.get(END_POINT.DASHBOARD_QUEUE_CALLS);\r\n\treturn res.data;\r\n}\r\n\r\n/**\r\n * Force-logout an agent from the supervisor dashboard. Uses the regular auth\r\n * logout endpoint, targeting another user via the `user_id` QUERY param; the\r\n * dashboard poll then drops them to \"Not Logged\".\r\n *\r\n * The target MUST go in the query string. This used to post `{ userId: agentId }`\r\n * as a body, and the route reads no body at all — so the target was discarded and\r\n * the route fell back to the bearer token's own user: the SUPERVISOR was logged\r\n * out, the agent kept working, and the response still read\r\n * `{\"success\": true, \"message\": \"Logout successful\"}`. Two ways to bring that\r\n * back, both of which stay a 200 and so look fine: moving the target into a body,\r\n * or spelling it `userId` instead of `user_id`.\r\n *\r\n * `agentId` is the BUSINESS identifier (users.user_id, e.g. \"pooji\") — the\r\n * `agentId` on a dashboard row, not its numeric `dbId`, which comes back 401.\r\n *\r\n * MIRRORED: src/services/supervisorService.ts holds the same function for the\r\n * main app's Live Status page. Change both together, or whichever screen the app\r\n * renders keeps the old request shape.\r\n */\r\nexport async function forceLogoutAgent(agentId: string): Promise<{ success: boolean; message?: string }> {\r\n\t// A blank target still sends `user_id=`, which reads as falsy on the backend\r\n\t// and falls back to the caller — the supervisor logging themselves out, with a\r\n\t// 200 saying it worked.\r\n\tif (!agentId?.trim()) {\r\n\t\treturn { success: false, message: \"Cannot log out agent: missing agent id.\" };\r\n\t}\r\n\ttry {\r\n\t\t// No body ON PURPOSE — the target is a query param only.\r\n\t\t// `logout_reason` records WHO ended the session; left unset the endpoint\r\n\t\t// defaults it to \"user_logout\", which reads as the agent signing themselves\r\n\t\t// out. Mirrors LOGOUT_REASON.SUPERVISOR_FORCED in the main app.\r\n\t\tconst res = await axiosInstance.post(END_POINT.AUTH_LOGOUT, null, {\r\n\t\t\tparams: { user_id: agentId, logout_reason: \"supervisor_force_logout\" },\r\n\t\t});\r\n\t\tconst data = res.data ?? {};\r\n\t\treturn { success: data.success !== false, message: data.message };\r\n\t} catch (err: any) {\r\n\t\tconst status = err?.response?.status;\r\n\t\t\r\n\t\t// 401/403 likely means the target agent's session was already invalid/expired\r\n\t\t// Treat as successful logout (session already gone)\r\n\t\tif (status === 401 || status === 403) {\r\n\t\t\tconsole.warn(\"[SDK force logout] Target agent session already invalid/expired; treating as already signed out.\", status);\r\n\t\t\treturn { success: true, message: \"Agent session already ended.\" };\r\n\t\t}\r\n\t\t\r\n\t\treturn { success: false, message: err?.response?.data?.message || \"Failed to log out agent.\" };\r\n\t}\r\n}\r\n\r\n// ─── Hook ─────────────────────────────────────────────────────────────────────\r\n\r\nexport interface UseLiveStatusReturn {\r\n\tisLoading: boolean;\r\n\ttopStats: DashboardTopStats | null;\r\n\tagents: DashboardAgentCard[];\r\n\tqueues: DashboardQueueData[];\r\n\talerts: DashboardAlert[];\r\n\tqueuePulse: DashboardQueuePulse | null;\r\n\tqueueCalls: DashboardQueueCall[];\r\n\tdurations: Record<string, number>;\r\n\tqueueDurations: Record<number | string, number>;\r\n\tselectedQueueId: number | null;\r\n\tsetSelectedQueueId: React.Dispatch<React.SetStateAction<number | null>>;\r\n\tclockStr: string;\r\n\tdateStr: string;\r\n\trefresh: () => void;\r\n}\r\n\r\nexport function useLiveStatus(): UseLiveStatusReturn {\r\n\tconst [isLoading, setIsLoading] = useState(true);\r\n\tconst [topStats, setTopStats] = useState<DashboardTopStats | null>(null);\r\n\tconst [agents, setAgents] = useState<DashboardAgentCard[]>([]);\r\n\tconst [queues, setQueues] = useState<DashboardQueueData[]>([]);\r\n\tconst [alerts, setAlerts] = useState<DashboardAlert[]>([]);\r\n\tconst [queuePulse, setQueuePulse] = useState<DashboardQueuePulse | null>(null);\r\n\tconst [queueCalls, setQueueCalls] = useState<DashboardQueueCall[]>([]);\r\n\tconst [durations, setDurations] = useState<Record<string, number>>({});\r\n\tconst [queueDurations, setQueueDurations] = useState<Record<number | string, number>>({});\r\n\tconst [selectedQueueId, setSelectedQueueId] = useState<number | null>(null);\r\n\tconst [clockStr, setClockStr] = useState(\"--:--:--\");\r\n\tconst [dateStr, setDateStr] = useState(\"\");\r\n\r\n\tconst agentsRef = useRef(agents);\r\n\tagentsRef.current = agents;\r\n\r\n\tconst fetchDashboard = useCallback(async () => {\r\n\t\ttry {\r\n\t\t\tconst [topStatsRes, agentsRes, queuesRes, alertsRes, pulseRes, queueCallsRes] = await Promise.allSettled([\r\n\t\t\t\tfetchTopStats(),\r\n\t\t\t\tfetchAgents(),\r\n\t\t\t\tfetchQueues(),\r\n\t\t\t\tfetchAlerts(),\r\n\t\t\t\tfetchQueuePulse(),\r\n\t\t\t\tfetchQueueCalls(),\r\n\t\t\t]);\r\n\r\n\t\t\tif (topStatsRes.status === \"fulfilled\" && topStatsRes.value) setTopStats(topStatsRes.value);\r\n\t\t\tif (agentsRes.status === \"fulfilled\" && Array.isArray(agentsRes.value)) {\r\n\t\t\t\tsetAgents(agentsRes.value);\r\n\t\t\t\tconst m: Record<string, number> = {};\r\n\t\t\t\tagentsRes.value.forEach((a) => {\r\n\t\t\t\t\tm[a.agentId] = parseDur(a.statusDuration || \"00:00:00\");\r\n\t\t\t\t});\r\n\t\t\t\tsetDurations(m);\r\n\t\t\t}\r\n\t\t\tif (queuesRes.status === \"fulfilled\" && queuesRes.value) setQueues(queuesRes.value);\r\n\t\t\tif (alertsRes.status === \"fulfilled\" && alertsRes.value) setAlerts(alertsRes.value);\r\n\t\t\tif (pulseRes.status === \"fulfilled\" && pulseRes.value) setQueuePulse(pulseRes.value);\r\n\t\t\t\r\n\t\t\tlet list: DashboardQueueCall[] = [];\r\n\t\t\tif (queueCallsRes.status === \"fulfilled\" && queueCallsRes.value) {\r\n\t\t\t\tconst raw = queueCallsRes.value;\r\n\t\t\t\tlist = Array.isArray(raw)\r\n\t\t\t\t\t? raw\r\n\t\t\t\t\t: Array.isArray((raw as any)?.data)\r\n\t\t\t\t\t? (raw as any).data\r\n\t\t\t\t\t: [];\r\n\t\t\t}\r\n\t\t\tsetQueueCalls(list);\r\n\t\t\tconst qm: Record<number | string, number> = {};\r\n\t\t\tlist.forEach((qc) => {\r\n\t\t\t\tconst secs = qc.waitSeconds ?? parseDur(qc.waitDuration || \"00:00:00\");\r\n\t\t\t\tqm[qc.queueEntryId || qc.callUuid] = secs;\r\n\t\t\t});\r\n\t\t\tsetQueueDurations(qm);\r\n\t\t} catch {\r\n\t\t\t// keep current data on unexpected error\r\n\t\t} finally {\r\n\t\t\tsetIsLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\t// Initial fetch + polling\r\n\tuseEffect(() => {\r\n\t\tfetchDashboard();\r\n\t\tconst iv = setInterval(fetchDashboard, POLL_INTERVAL_MS);\r\n\t\treturn () => clearInterval(iv);\r\n\t}, [fetchDashboard]);\r\n\r\n\t// Clock + duration ticker\r\n\tuseEffect(() => {\r\n\t\tconst iv = setInterval(() => {\r\n\t\t\tconst now = new Date();\r\n\t\t\tsetClockStr(\r\n\t\t\t\t[now.getHours(), now.getMinutes(), now.getSeconds()]\r\n\t\t\t\t\t.map((v) => String(v).padStart(2, \"0\"))\r\n\t\t\t\t\t.join(\":\"),\r\n\t\t\t);\r\n\t\t\tsetDateStr(\r\n\t\t\t\tnow.toLocaleDateString(\"en-US\", {\r\n\t\t\t\t\tweekday: \"long\",\r\n\t\t\t\t\tyear: \"numeric\",\r\n\t\t\t\t\tmonth: \"long\",\r\n\t\t\t\t\tday: \"numeric\",\r\n\t\t\t\t}),\r\n\t\t\t);\r\n\t\t\tsetDurations((prev) => {\r\n\t\t\t\tconst next = { ...prev };\r\n\t\t\t\tfor (const key of Object.keys(next)) next[key] = next[key] + 1;\r\n\t\t\t\treturn next;\r\n\t\t\t});\r\n\t\t\tsetQueueDurations((prev) => {\r\n\t\t\t\tconst next = { ...prev };\r\n\t\t\t\tfor (const key of Object.keys(next)) next[key] = next[key] + 1;\r\n\t\t\t\treturn next;\r\n\t\t\t});\r\n\t\t}, 1000);\r\n\t\treturn () => clearInterval(iv);\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tisLoading,\r\n\t\ttopStats,\r\n\t\tagents,\r\n\t\tqueues,\r\n\t\talerts,\r\n\t\tqueuePulse,\r\n\t\tqueueCalls,\r\n\t\tdurations,\r\n\t\tqueueDurations,\r\n\t\tselectedQueueId,\r\n\t\tsetSelectedQueueId,\r\n\t\tclockStr,\r\n\t\tdateStr,\r\n\t\trefresh: fetchDashboard,\r\n\t};\r\n}\r\n","import { Box, styled } from \"@mui/material\";\r\nimport { keyframes } from \"@mui/material/styles\";\r\nimport type { AgentStatusKey } from \"./useLiveStatus\";\r\n\r\n// ─── Keyframes ────────────────────────────────────────────────────────────────\r\n\r\nexport const pulse = keyframes`\r\n  0%, 100% { transform: scale(1); opacity: 1; }\r\n  50% { transform: scale(1.6); opacity: 0.3; }\r\n`;\r\n\r\nexport const slideUp = keyframes`\r\n  from { transform: translateY(16px); opacity: 0; }\r\n  to { transform: translateY(0); opacity: 1; }\r\n`;\r\n\r\nexport const flashBg = keyframes`\r\n  0%, 100% { background: #fdf3e0; }\r\n  50% { background: #fff7e0; }\r\n`;\r\n\r\nexport const rowBlink = keyframes`\r\n  0%, 100% { background: rgba(204,42,42,.07); }\r\n  50% { background: rgba(204,42,42,.2); }\r\n`;\r\n\r\nexport const dangerBlink = keyframes`\r\n  0%, 100% { opacity: 1; }\r\n  50% { opacity: 0.15; }\r\n`;\r\n\r\nexport const ticker = keyframes`\r\n  0% { transform: translateX(0); }\r\n  100% { transform: translateX(-50%); }\r\n`;\r\n\r\n// ─── Color tokens ─────────────────────────────────────────────────────────────\r\n\r\nexport const C = {\r\n\tbg0: \"#eef2f7\", bg1: \"#ffffff\", bg2: \"#f4f7fb\", bg3: \"#e4eaf3\", bg4: \"#d5dfee\",\r\n\tb1: \"rgba(30,60,120,.08)\", b2: \"rgba(30,60,120,.14)\",\r\n\tt1: \"#0d1e35\", t2: \"#3a5278\", t3: \"#7a93b5\", t4: \"#b0c0d5\",\r\n\tgreen: \"#0a9a62\", greenLt: \"#e4f6ef\", greenBd: \"rgba(10,154,98,.2)\",\r\n\tamber: \"#c47c00\", amberLt: \"#fdf3e0\", amberBd: \"rgba(196,124,0,.2)\",\r\n\tblue: \"#1565c8\", blueLt: \"#e8f0fc\", blueBd: \"rgba(21,101,200,.2)\",\r\n\tred: \"#cc2a2a\", redLt: \"#fde8e8\", redBd: \"rgba(204,42,42,.2)\",\r\n\tpurple: \"#6b3fbf\", purpleLt: \"#f0eafa\", purpleBd: \"rgba(107,63,191,.2)\",\r\n\tteal: \"#0b7a8f\", tealLt: \"#e3f4f7\", tealBd: \"rgba(11,122,143,.2)\",\r\n\torange: \"#c45a00\", orangeLt: \"#fdf0e4\",\r\n\tnavy: \"#1A5F6C\",\r\n};\r\n\r\nexport const STATUS_COLORS: Record<AgentStatusKey, { bg: string; border: string; bar: string; text: string }> = {\r\n\t\"s-oncall-in\":  { bg: \"#fff8e1\", border: \"rgba(196,124,0,.3)\",   bar: \"#e68a00\", text: \"#b36b00\" },\r\n\t\"s-oncall-out\": { bg: \"#e3f2fd\", border: \"rgba(21,101,200,.3)\",  bar: \"#1976d2\", text: \"#0d47a1\" },\r\n\t\"s-wrapup\":     { bg: \"#f3e5f5\", border: \"rgba(107,63,191,.3)\",  bar: \"#8e24aa\", text: \"#6a1b9a\" },\r\n\t\"s-break\":      { bg: \"#ffebee\", border: \"rgba(204,42,42,.3)\",   bar: \"#e53935\", text: \"#c62828\" },\r\n\t\"s-idle\":       { bg: \"#e8f5e9\", border: \"rgba(46,125,50,.25)\",  bar: \"#2e7d32\", text: \"#1b5e20\" },\r\n};\r\n\r\n// ─── Wallboard root ───────────────────────────────────────────────────────────\r\n\r\nexport const WallboardRoot = styled(Box, {\r\n\tshouldForwardProp: (prop) => prop !== \"isTv\",\r\n})<{ isTv?: boolean }>(({ theme, isTv }) => ({\r\n\tdisplay: \"grid\",\r\n\tgridTemplateRows: \"auto auto 1fr auto\",\r\n\tminHeight: isTv ? \"100vh\" : \"calc(100vh - 60px)\",\r\n\theight: isTv ? \"100vh\" : \"calc(100vh - 60px)\",\r\n\tfontFamily: \"'Poppins', Arial, sans-serif\",\r\n\tbackground: \"transparent\",\r\n\tcolor: C.t1,\r\n\t[theme.breakpoints.up(\"lg\")]: {\r\n\t\theight: isTv ? \"100vh\" : \"calc(100vh - 60px)\",\r\n\t\toverflow: \"hidden\",\r\n\t},\r\n}));\r\n\r\n// ─── Top bar ──────────────────────────────────────────────────────────────────\r\n\r\nexport const TopBar = styled(Box)(({ theme }) => ({\r\n\tbackground: C.navy,\r\n\tdisplay: \"flex\",\r\n\talignItems: \"center\",\r\n\tjustifyContent: \"space-between\",\r\n\tpadding: \"0 10px\",\r\n\theight: 34,\r\n\tminHeight: 34,\r\n\tborderBottom: `1px solid ${C.blue}`,\r\n\tflexWrap: \"wrap\" as const,\r\n\tgap: 4,\r\n\t[theme.breakpoints.up(\"sm\")]: { padding: \"0 14px\", flexWrap: \"nowrap\" as const },\r\n}));\r\n\r\nexport const BrandLogo = styled(Box)({\r\n\twidth: 22, height: 22, borderRadius: 4, background: \"#fff\",\r\n\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\", overflow: \"hidden\",\r\n});\r\n\r\nexport const LiveBadge = styled(Box)({\r\n\tdisplay: \"flex\", alignItems: \"center\", gap: 4,\r\n\tbackground: \"rgba(10,154,98,.2)\", border: \"1px solid rgba(10,154,98,.4)\",\r\n\tborderRadius: 12, padding: \"2px 7px\",\r\n\tfontSize: 8, fontWeight: 700, letterSpacing: 1.5, color: \"#0ef5a8\", textTransform: \"uppercase\" as const,\r\n});\r\n\r\nexport const PulseDot = styled(\"span\")({\r\n\twidth: 5, height: 5, borderRadius: \"50%\", background: \"#0ef5a8\",\r\n\tdisplay: \"inline-block\",\r\n\tanimation: `${pulse} 1.5s ease infinite`,\r\n});\r\n\r\n// ─── KPI Strip ────────────────────────────────────────────────────────────────\r\n\r\nexport const KpiStrip = styled(Box)(({ theme }) => ({\r\n\tdisplay: \"grid\",\r\n\tgridTemplateColumns: \"repeat(auto-fit, minmax(72px, 1fr))\",\r\n\tbackground: \"transparent\",\r\n\tborderBottom: `1px solid ${C.b1}`,\r\n\t[theme.breakpoints.up(\"xl\")]: {\r\n\t\tgridTemplateColumns: \"repeat(14, 1fr)\",\r\n\t},\r\n}));\r\n\r\nexport const KpiCell = styled(Box)<{ accentColor: string }>(({ accentColor }) => ({\r\n\tpadding: \"4px 0 3px 8px\",\r\n\tborderRight: `1px solid ${C.b1}`,\r\n\tborderBottom: `1px solid ${C.b1}`,\r\n\tposition: \"relative\" as const,\r\n\tcursor: \"default\",\r\n\t\"&:last-child\": { borderRight: \"none\" },\r\n\t\"&::after\": {\r\n\t\tcontent: '\"\"', position: \"absolute\" as const, bottom: 0, left: 0, width: \"100%\", height: 2,\r\n\t\tbackground: accentColor,\r\n\t},\r\n\t\"@media (min-width: 960px)\": { padding: \"5px 0 4px 6px\" },\r\n}));\r\n\r\nexport const KpiValue = styled(\"div\")<{ kcolor: string }>(({ kcolor, theme }) => ({\r\n\tfontFamily: \"'Poppins', Arial, sans-serif\",\r\n\tfontSize: 15,\r\n\tfontWeight: 800,\r\n\tlineHeight: 1,\r\n\tcolor: kcolor,\r\n\t[(theme as any).breakpoints.up(\"md\")]: { fontSize: 17 },\r\n\t[(theme as any).breakpoints.up(\"lg\")]: { fontSize: 20 },\r\n}));\r\n\r\nexport const KpiLabel = styled(\"div\")({\r\n\tfontSize: 8,\r\n\tletterSpacing: 0.8,\r\n\ttextTransform: \"uppercase\" as const,\r\n\tcolor: C.t3,\r\n\tfontWeight: 600,\r\n\tmarginTop: 1,\r\n});\r\n\r\n// ─── Body grid ────────────────────────────────────────────────────────────────\r\n\r\nexport const BodyGrid = styled(Box)(({ theme }) => ({\r\n\tdisplay: \"grid\",\r\n\tgridTemplateColumns: \"1fr\",\r\n\tmarginTop: 0,\r\n\toverflow: \"auto\",\r\n\tminHeight: 0,\r\n\t[theme.breakpoints.up(\"md\")]: { gridTemplateColumns: \"2fr 1fr\" },\r\n\t[theme.breakpoints.up(\"lg\")]: { gridTemplateColumns: \"2fr 1fr\", overflow: \"hidden\" },\r\n}));\r\n\r\nexport const Panel = styled(Box)(({ theme }) => ({\r\n\tdisplay: \"flex\", flexDirection: \"column\" as const, overflow: \"auto\", minHeight: 0,\r\n\tborderRight: `1px solid ${C.b1}`,\r\n\t[theme.breakpoints.up(\"lg\")]: { overflow: \"hidden\" },\r\n}));\r\n\r\nexport const PanelHeader = styled(Box)({\r\n\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\r\n\tpadding: \"4px 10px\", background: \"transparent\", borderBottom: `1px solid ${C.b1}`, flexShrink: 0,\r\n});\r\n\r\nexport const PhTitle = styled(\"span\")({\r\n\tfontFamily: \"'Poppins', Arial, sans-serif\", fontSize: 10, fontWeight: 700,\r\n\tletterSpacing: 1.2, textTransform: \"uppercase\" as const, color: C.t2,\r\n});\r\n\r\nexport const Badge = styled(\"span\")<{ bg: string; color: string; border: string }>(({ bg, color, border }) => ({\r\n\tfontFamily: \"'JetBrains Mono', monospace\", fontSize: 9, fontWeight: 700,\r\n\tpadding: \"1px 6px\", borderRadius: 3, letterSpacing: 0.2,\r\n\tbackground: bg, color, border: `1px solid ${border}`,\r\n}));\r\n\r\nexport const StatusDot = styled(\"span\")<{ dotColor: string; animated?: boolean }>(({ dotColor, animated }) => ({\r\n\twidth: 5, height: 5, borderRadius: \"50%\", flexShrink: 0, background: dotColor,\r\n\t...(animated ? { animation: `${pulse} 1.3s ease infinite` } : {}),\r\n}));\r\n\r\n// ─── Agent table ──────────────────────────────────────────────────────────────\r\n\r\nexport const AgentTable = styled(\"table\")({\r\n\twidth: \"100%\", borderCollapse: \"collapse\", tableLayout: \"auto\",\r\n});\r\n\r\nexport const AgTh = styled(\"th\")({\r\n\tpadding: \"6px 8px\", fontSize: 11, letterSpacing: 0.6, textTransform: \"uppercase\" as const,\r\n\tcolor: C.t1, fontWeight: 700, textAlign: \"left\" as const,\r\n\tborderBottom: `1px solid ${C.b2}`, background: C.bg2,\r\n\twhiteSpace: \"nowrap\" as const, position: \"sticky\" as const, top: 0, zIndex: 1,\r\n});\r\n\r\nexport const AgTd = styled(\"td\")({\r\n\tpadding: \"4px 8px\", fontSize: 11, borderBottom: `1px solid ${C.b1}`,\r\n\tverticalAlign: \"middle\",\r\n});\r\n\r\n// ─── Agent availability alert ─────────────────────────────────────────────────\r\n\r\n/** Blinking danger icon shown next to an agent's name while `alert` is true. */\r\nexport const AlertIconWrap = styled(\"span\")({\r\n\tdisplay: \"inline-flex\", alignItems: \"center\", flexShrink: 0,\r\n\tcolor: C.red, cursor: \"help\",\r\n\tanimation: `${dangerBlink} 1s ease infinite`,\r\n\t\"& svg\": { fontSize: 14 },\r\n});\r\n\r\n/** Tooltip skin for the alert reason — the dashboard's light card, not MUI's dark default. */\r\nexport const ALERT_TOOLTIP_SLOT_PROPS = {\r\n\ttooltip: {\r\n\t\tsx: {\r\n\t\t\tbackground: C.bg1, color: C.t1,\r\n\t\t\tborder: `1px solid ${C.redBd}`, borderLeft: `3px solid ${C.red}`, borderRadius: \"4px\",\r\n\t\t\tboxShadow: \"0 4px 14px rgba(13,30,53,.14)\",\r\n\t\t\tpadding: \"6px 10px\", maxWidth: 260,\r\n\t\t\tfontFamily: \"'Poppins', Arial, sans-serif\",\r\n\t\t},\r\n\t},\r\n\tarrow: { sx: { color: C.bg1, \"&::before\": { border: `1px solid ${C.redBd}` } } },\r\n};\r\n\r\nexport const AlertTipTitle = styled(\"div\")({\r\n\tfontSize: 9, fontWeight: 700, letterSpacing: 0.8, textTransform: \"uppercase\" as const, color: C.red,\r\n});\r\n\r\nexport const AlertTipText = styled(\"div\")({\r\n\tfontSize: 11, lineHeight: 1.4, color: C.t2, marginTop: 2,\r\n});\r\n\r\nexport const PageInfo = styled(Box)({\r\n\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\r\n\tpadding: \"2px 10px\", fontSize: 8, color: C.t3, background: C.bg2,\r\n\tflexShrink: 0, borderTop: `1px solid ${C.b1}`,\r\n});\r\n\r\n// ─── Queue ────────────────────────────────────────────────────────────────────\r\n\r\nexport const QName = styled(\"span\")({\r\n\tfontWeight: 600, color: C.t1, fontFamily: \"'Poppins', Arial, sans-serif\", fontSize: 11,\r\n\t\"@media (min-width: 1280px)\": { fontSize: 12 },\r\n});\r\n\r\nexport const QNum = styled(\"span\")<{ numColor?: string }>(({ numColor }) => ({\r\n\tfontFamily: \"'JetBrains Mono', monospace\", fontWeight: 700, fontSize: 11, color: numColor || C.t1,\r\n}));\r\n\r\nexport const QBar = styled(Box)({ height: 4, background: C.bg3, borderRadius: 2, overflow: \"hidden\", width: 56 });\r\n\r\nexport const QBarFill = styled(Box)<{ w: number; barColor: string }>(({ w, barColor }) => ({\r\n\theight: \"100%\", borderRadius: 3, width: `${w}%`, background: barColor,\r\n}));\r\n\r\n// ─── Section header ───────────────────────────────────────────────────────────\r\n\r\nexport const SbHeader = styled(Box)({\r\n\tpadding: \"7px 12px\", display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\r\n\tbackground: C.bg2, borderBottom: `1px solid ${C.b1}`,\r\n});\r\n\r\nexport const SbTitle = styled(\"span\")({\r\n\tfontSize: 9, fontWeight: 700, letterSpacing: 1.5, textTransform: \"uppercase\" as const, color: C.t3,\r\n});\r\n\r\n// ─── No data ──────────────────────────────────────────────────────────────────\r\n\r\nexport const NoDataBox = styled(Box)({\r\n\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\tpadding: \"12px 8px\", fontSize: 10, fontWeight: 600,\r\n\tcolor: C.t3, letterSpacing: 0.5, fontFamily: \"'Poppins', Arial, sans-serif\",\r\n});\r\n\r\nexport const FilterPill = styled(\"button\")<{ active?: boolean }>(({ active }) => ({\r\n\tpadding: \"4px 12px\",\r\n\tborderRadius: 12,\r\n\tfontSize: 13,\r\n\tfontWeight: 600,\r\n\tletterSpacing: 0.2,\r\n\tborder: `1px solid ${active ? C.blue : C.b2}`,\r\n\tbackground: active ? C.blueLt : C.bg1,\r\n\tcolor: active ? C.blue : C.t2,\r\n\tboxShadow: active ? \"0 1px 3px rgba(21,101,200,.22)\" : \"none\",\r\n\tcursor: \"pointer\",\r\n\ttransition: \"all 0.15s ease\",\r\n\twhiteSpace: \"nowrap\" as const,\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 4,\r\n\t\"&:hover\": {\r\n\t\tbackground: active ? C.blueLt : C.bg3,\r\n\t\tborderColor: C.blue,\r\n\t},\r\n}));\r\n\r\n// ─── Footer ticker ────────────────────────────────────────────────────────────\r\n\r\nexport const Footer = styled(Box)({\r\n\tbackground: C.navy, borderTop: \"1px solid rgba(255,255,255,.08)\",\r\n\tdisplay: \"flex\", alignItems: \"center\", overflow: \"hidden\",\r\n\tminHeight: 18, height: 18,\r\n\tposition: \"sticky\", bottom: 0, zIndex: 5,\r\n});\r\n\r\nexport const TickerLabel = styled(\"div\")({\r\n\tflexShrink: 0, padding: \"0 8px\", fontSize: 7, fontWeight: 700, letterSpacing: 1.2,\r\n\ttextTransform: \"uppercase\" as const, color: \"rgba(255,255,255,.4)\",\r\n\tborderRight: \"1px solid rgba(255,255,255,.1)\", whiteSpace: \"nowrap\" as const,\r\n});\r\n\r\nexport const TickerTrack = styled(Box)({ flex: 1, overflow: \"hidden\", position: \"relative\" as const });\r\n\r\nexport const TickerInner = styled(Box)({\r\n\tdisplay: \"flex\", animation: `${ticker} 50s linear infinite`, whiteSpace: \"nowrap\" as const,\r\n});\r\n\r\nexport const TickerSpan = styled(\"span\")<{ isWarn?: boolean; isGood?: boolean }>(({ isWarn, isGood }) => ({\r\n\tfontSize: 9, color: \"rgba(255,255,255,.55)\", padding: \"0 16px\", letterSpacing: 0.3,\r\n\t\"& b\": {\r\n\t\tcolor: isWarn ? \"#fcd34d\" : isGood ? \"#6ee7b7\" : \"rgba(255,255,255,.85)\", fontWeight: 600,\r\n\t},\r\n}));\r\n\r\n// ─── Supervisor monitoring ────────────────────────────────────────────────────\r\n\r\nexport const MonitorBtn = styled(\"button\")<{ variant: \"listen\" | \"whisper\" | \"barge\" | \"stop\" | \"logout\" }>(({ variant }) => {\r\n\tconst colors = {\r\n\t\tlisten:  { bg: \"#e3f2fd\", color: \"#1976d2\", hoverBg: \"#bbdefb\" },\r\n\t\twhisper: { bg: \"#fff3e0\", color: \"#ef6c00\", hoverBg: \"#ffe0b2\" },\r\n\t\tbarge:   { bg: \"#fce4ec\", color: \"#c2185b\", hoverBg: \"#f8bbd0\" },\r\n\t\tstop:    { bg: \"#ffebee\", color: \"#c62828\", hoverBg: \"#ffcdd2\" },\r\n\t\tlogout:  { bg: \"#eceff1\", color: \"#455a64\", hoverBg: \"#cfd8dc\" },\r\n\t};\r\n\tconst c = colors[variant];\r\n\treturn {\r\n\t\tpadding: \"2px 5px\",\r\n\t\tborder: \"none\",\r\n\t\tborderRadius: 3,\r\n\t\tcursor: \"pointer\",\r\n\t\tfontSize: 8,\r\n\t\tfontWeight: 600,\r\n\t\tdisplay: \"flex\",\r\n\t\talignItems: \"center\",\r\n\t\tgap: 2,\r\n\t\tbackground: c.bg,\r\n\t\tcolor: c.color,\r\n\t\ttransition: \"all 0.2s\",\r\n\t\t\"&:hover\": { background: c.hoverBg },\r\n\t\t\"&:disabled\": { opacity: 0.5, cursor: \"not-allowed\" },\r\n\t};\r\n});\r\n\r\nexport const MonitorCard = styled(Box)({\r\n\tposition: \"fixed\",\r\n\tbottom: 20,\r\n\tright: 20,\r\n\twidth: 296,\r\n\tbackground: \"#fff\",\r\n\tborderRadius: 14,\r\n\tboxShadow: \"0 8px 32px rgba(13,30,53,0.18), 0 2px 8px rgba(13,30,53,0.08)\",\r\n\tzIndex: 1001,\r\n\toverflow: \"hidden\",\r\n\tanimation: `${slideUp} 0.2s cubic-bezier(.22,.68,0,1.2)`,\r\n});\r\n"],"mappings":"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","names":["useCallback","useState","useEffect","Box","Box","useState","useCallback","useEffect","_a","_b","_c"]}