ahs-cti 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/agentDetailReport-F44HMQ5O.mjs +27 -0
  2. package/dist/agentDetailReport-F44HMQ5O.mjs.map +1 -0
  3. package/dist/{agentPerformanceReport-JZK5DN5E.mjs → agentPerformanceReport-TTOMNENK.mjs} +25 -15
  4. package/dist/{agentPerformanceReport-JZK5DN5E.mjs.map → agentPerformanceReport-TTOMNENK.mjs.map} +1 -1
  5. package/dist/auditReport-QTMAKVTN.mjs +26 -0
  6. package/dist/auditReport-QTMAKVTN.mjs.map +1 -0
  7. package/dist/{callHistory-T3M76D4B.mjs → callHistory-4J4J2XHA.mjs} +20 -10
  8. package/dist/{callHistory-T3M76D4B.mjs.map → callHistory-4J4J2XHA.mjs.map} +1 -1
  9. package/dist/{campaigns-5PVHXBSD.mjs → campaigns-N3UNUGQP.mjs} +23 -13
  10. package/dist/{campaigns-5PVHXBSD.mjs.map → campaigns-N3UNUGQP.mjs.map} +1 -1
  11. package/dist/{caroQualityAuditDashboard-EUDYZ3QY.mjs → caroQualityAuditDashboard-TNS4L2NR.mjs} +12 -2
  12. package/dist/{caroQualityAuditDashboard-EUDYZ3QY.mjs.map → caroQualityAuditDashboard-TNS4L2NR.mjs.map} +1 -1
  13. package/dist/{caroVoiceAI-GGJCVUIQ.mjs → caroVoiceAI-OUTAAIFE.mjs} +12 -2
  14. package/dist/{caroVoiceAI-GGJCVUIQ.mjs.map → caroVoiceAI-OUTAAIFE.mjs.map} +1 -1
  15. package/dist/{cdrReport-ZMDHSZUW.mjs → cdrReport-Z35OLYUL.mjs} +26 -16
  16. package/dist/{cdrReport-ZMDHSZUW.mjs.map → cdrReport-Z35OLYUL.mjs.map} +1 -1
  17. package/dist/chunk-3PNP6G5P.mjs +92 -0
  18. package/dist/chunk-3PNP6G5P.mjs.map +1 -0
  19. package/dist/{chunk-DF5EFKXC.mjs → chunk-45MLTWV7.mjs} +12 -2
  20. package/dist/{chunk-DF5EFKXC.mjs.map → chunk-45MLTWV7.mjs.map} +1 -1
  21. package/dist/chunk-635IIVZE.mjs +24 -0
  22. package/dist/{chunk-FRKV2U3I.mjs.map → chunk-635IIVZE.mjs.map} +1 -1
  23. package/dist/chunk-677RFPP5.mjs +24 -0
  24. package/dist/{chunk-7LE2VTAI.mjs.map → chunk-677RFPP5.mjs.map} +1 -1
  25. package/dist/{chunk-Q6G3MPS7.mjs → chunk-ERSNXW5X.mjs} +11 -1
  26. package/dist/{chunk-Q6G3MPS7.mjs.map → chunk-ERSNXW5X.mjs.map} +1 -1
  27. package/dist/{chunk-H7GRWLYI.mjs → chunk-G6KRLGGC.mjs} +13 -3
  28. package/dist/{chunk-H7GRWLYI.mjs.map → chunk-G6KRLGGC.mjs.map} +1 -1
  29. package/dist/chunk-GFVR3HLK.mjs +24 -0
  30. package/dist/{chunk-6WLG2PXL.mjs.map → chunk-GFVR3HLK.mjs.map} +1 -1
  31. package/dist/{chunk-E6KYWWAI.mjs → chunk-GTI2ZVQX.mjs} +12 -2
  32. package/dist/{chunk-E6KYWWAI.mjs.map → chunk-GTI2ZVQX.mjs.map} +1 -1
  33. package/dist/chunk-H22TUCN3.mjs +24 -0
  34. package/dist/{chunk-AOJRUZTO.mjs.map → chunk-H22TUCN3.mjs.map} +1 -1
  35. package/dist/{chunk-YAQYTUTX.mjs → chunk-HAOFUADN.mjs} +12 -2
  36. package/dist/{chunk-YAQYTUTX.mjs.map → chunk-HAOFUADN.mjs.map} +1 -1
  37. package/dist/{chunk-33QNSXP7.mjs → chunk-JHC7OUQG.mjs} +21 -11
  38. package/dist/chunk-JHC7OUQG.mjs.map +1 -0
  39. package/dist/chunk-KSVNZKRD.mjs +10930 -0
  40. package/dist/chunk-KSVNZKRD.mjs.map +1 -0
  41. package/dist/{chunk-VVDJLUYT.mjs → chunk-M7FJYZF6.mjs} +12 -2
  42. package/dist/{chunk-VVDJLUYT.mjs.map → chunk-M7FJYZF6.mjs.map} +1 -1
  43. package/dist/{chunk-DNTGBNZD.mjs → chunk-NDZDJWXY.mjs} +13 -3
  44. package/dist/{chunk-DNTGBNZD.mjs.map → chunk-NDZDJWXY.mjs.map} +1 -1
  45. package/dist/chunk-S2SMCH2C.mjs +71 -0
  46. package/dist/chunk-S2SMCH2C.mjs.map +1 -0
  47. package/dist/{chunk-IDZWA6HG.mjs → chunk-S34CQVTF.mjs} +14 -4
  48. package/dist/{chunk-IDZWA6HG.mjs.map → chunk-S34CQVTF.mjs.map} +1 -1
  49. package/dist/{chunk-2M3YEXYA.mjs → chunk-SUS5RUCA.mjs} +17 -7
  50. package/dist/{chunk-2M3YEXYA.mjs.map → chunk-SUS5RUCA.mjs.map} +1 -1
  51. package/dist/{chunk-3J7KQNEU.mjs → chunk-TCYBXDAP.mjs} +13 -3
  52. package/dist/{chunk-3J7KQNEU.mjs.map → chunk-TCYBXDAP.mjs.map} +1 -1
  53. package/dist/chunk-VII5JNA6.mjs +24 -0
  54. package/dist/{chunk-WTBVFN4H.mjs.map → chunk-VII5JNA6.mjs.map} +1 -1
  55. package/dist/chunk-W3ECDLUB.mjs +24 -0
  56. package/dist/{chunk-OHJIW3I3.mjs.map → chunk-W3ECDLUB.mjs.map} +1 -1
  57. package/dist/{chunk-VBIDPX5Z.mjs → chunk-Y4PAUTZ4.mjs} +13 -3
  58. package/dist/{chunk-VBIDPX5Z.mjs.map → chunk-Y4PAUTZ4.mjs.map} +1 -1
  59. package/dist/{chunk-NAZO4HKB.mjs → chunk-ZSRD3ZXF.mjs} +12 -2
  60. package/dist/{chunk-NAZO4HKB.mjs.map → chunk-ZSRD3ZXF.mjs.map} +1 -1
  61. package/dist/index.mjs +33 -23
  62. package/dist/index.mjs.map +1 -1
  63. package/dist/{liveStatus-YSBYSVOO.mjs → liveStatus-PRDEL7CK.mjs} +16 -6
  64. package/dist/{liveStatus-YSBYSVOO.mjs.map → liveStatus-PRDEL7CK.mjs.map} +1 -1
  65. package/dist/{loginReport-YIVBJVJD.mjs → loginReport-47QNACQU.mjs} +22 -12
  66. package/dist/{loginReport-YIVBJVJD.mjs.map → loginReport-47QNACQU.mjs.map} +1 -1
  67. package/dist/{managementDashboard-7EMQC2UA.mjs → managementDashboard-SZFYULKA.mjs} +22 -12
  68. package/dist/{managementDashboard-7EMQC2UA.mjs.map → managementDashboard-SZFYULKA.mjs.map} +1 -1
  69. package/dist/{qualityAuditDashboard-ENGQN2WQ.mjs → qualityAuditDashboard-FHRGB77R.mjs} +12 -2
  70. package/dist/{qualityAuditDashboard-ENGQN2WQ.mjs.map → qualityAuditDashboard-FHRGB77R.mjs.map} +1 -1
  71. package/dist-react/agentDetailReport-PDKQKJNL.mjs +23 -0
  72. package/dist-react/agentPerformanceReport-MU2FASNN.mjs +544 -0
  73. package/dist-react/agentPerformanceReport-MU2FASNN.mjs.map +1 -0
  74. package/dist-react/auditReport-WH2KDNYT.mjs +25 -0
  75. package/{dist/auditReport-6ZUJ4UFO.mjs.map → dist-react/auditReport-WH2KDNYT.mjs.map} +1 -1
  76. package/dist-react/callHistory-HXXRYUIV.mjs +832 -0
  77. package/dist-react/callHistory-HXXRYUIV.mjs.map +1 -0
  78. package/dist-react/campaigns-J7KIAATE.mjs +3139 -0
  79. package/dist-react/campaigns-J7KIAATE.mjs.map +1 -0
  80. package/dist-react/caroQualityAuditDashboard-THYPVOCP.mjs +76 -0
  81. package/dist-react/caroQualityAuditDashboard-THYPVOCP.mjs.map +1 -0
  82. package/dist-react/caroVoiceAI-XGDUETXI.mjs +31 -0
  83. package/dist-react/caroVoiceAI-XGDUETXI.mjs.map +1 -0
  84. package/dist-react/cdrReport-SX2FZAO6.mjs +858 -0
  85. package/dist-react/cdrReport-SX2FZAO6.mjs.map +1 -0
  86. package/dist-react/chunk-4YF4IDV6.mjs +72 -0
  87. package/dist-react/chunk-4YF4IDV6.mjs.map +1 -0
  88. package/dist-react/chunk-ADM2JJCP.mjs +190 -0
  89. package/dist-react/chunk-ADM2JJCP.mjs.map +1 -0
  90. package/dist-react/chunk-EN7HM2MD.mjs +688 -0
  91. package/dist-react/chunk-EN7HM2MD.mjs.map +1 -0
  92. package/{dist/chunk-LHE4QGJJ.mjs → dist-react/chunk-F7G2XFRU.mjs} +12 -2
  93. package/{dist/chunk-LHE4QGJJ.mjs.map → dist-react/chunk-F7G2XFRU.mjs.map} +1 -1
  94. package/{dist/chunk-DJP744FF.mjs → dist-react/chunk-GUMGXVIT.mjs} +12 -2
  95. package/{dist/chunk-DJP744FF.mjs.map → dist-react/chunk-GUMGXVIT.mjs.map} +1 -1
  96. package/dist-react/chunk-KRXHK4AU.mjs +127 -0
  97. package/dist-react/chunk-KRXHK4AU.mjs.map +1 -0
  98. package/{dist/chunk-U2UDKXMB.mjs → dist-react/chunk-LWDAC6QU.mjs} +12 -2
  99. package/{dist/chunk-U2UDKXMB.mjs.map → dist-react/chunk-LWDAC6QU.mjs.map} +1 -1
  100. package/dist-react/chunk-LX6I32Y4.mjs +106 -0
  101. package/dist-react/chunk-LX6I32Y4.mjs.map +1 -0
  102. package/dist-react/chunk-MCD5FQNY.mjs +428 -0
  103. package/dist-react/chunk-MCD5FQNY.mjs.map +1 -0
  104. package/dist-react/chunk-MD472UKG.mjs +757 -0
  105. package/{dist/chunk-33QNSXP7.mjs.map → dist-react/chunk-MD472UKG.mjs.map} +1 -1
  106. package/dist-react/chunk-ORNNWQI6.mjs +67 -0
  107. package/dist-react/chunk-ORNNWQI6.mjs.map +1 -0
  108. package/dist-react/chunk-S4J35V4B.mjs +126 -0
  109. package/dist-react/chunk-S4J35V4B.mjs.map +1 -0
  110. package/dist-react/chunk-T53WMN5A.mjs +126 -0
  111. package/dist-react/chunk-T53WMN5A.mjs.map +1 -0
  112. package/dist-react/chunk-UTSRABCL.mjs +96 -0
  113. package/dist-react/chunk-UTSRABCL.mjs.map +1 -0
  114. package/dist-react/incoming-4WP3FJI4.mp3 +0 -0
  115. package/dist-react/incoming.mp3 +0 -0
  116. package/dist-react/index.d.mts +2476 -0
  117. package/dist-react/index.d.ts +2477 -0
  118. package/dist-react/index.js +26713 -0
  119. package/dist-react/index.js.map +1 -0
  120. package/dist-react/index.mjs +4675 -0
  121. package/dist-react/index.mjs.map +1 -0
  122. package/dist-react/liveStatus-IDZ7CPYK.mjs +1087 -0
  123. package/dist-react/liveStatus-IDZ7CPYK.mjs.map +1 -0
  124. package/dist-react/loginReport-F47GUU53.mjs +990 -0
  125. package/dist-react/loginReport-F47GUU53.mjs.map +1 -0
  126. package/dist-react/managementDashboard-GC5E7NEL.mjs +540 -0
  127. package/dist-react/managementDashboard-GC5E7NEL.mjs.map +1 -0
  128. package/dist-react/qualityAuditDashboard-ZAM7HRNH.mjs +76 -0
  129. package/dist-react/qualityAuditDashboard-ZAM7HRNH.mjs.map +1 -0
  130. package/package.json +17 -2
  131. package/dist/agentDetailReport-ZR7U2LLB.mjs +0 -17
  132. package/dist/auditReport-6ZUJ4UFO.mjs +0 -16
  133. package/dist/chunk-6WLG2PXL.mjs +0 -14
  134. package/dist/chunk-7LE2VTAI.mjs +0 -14
  135. package/dist/chunk-AOJRUZTO.mjs +0 -14
  136. package/dist/chunk-FRKV2U3I.mjs +0 -14
  137. package/dist/chunk-OHJIW3I3.mjs +0 -14
  138. package/dist/chunk-WTBVFN4H.mjs +0 -14
  139. /package/{dist/agentDetailReport-ZR7U2LLB.mjs.map → dist-react/agentDetailReport-PDKQKJNL.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../call-control-sdk/lib/pages/managementDashboard/index.tsx","../call-control-sdk/lib/pages/managementDashboard/useManagementDashboard.ts"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo, useRef } from \"react\";\r\nimport {\r\n\tBox, Paper, Stack, Typography, CircularProgress, Alert,\r\n\tTable, TableBody, TableCell, TableContainer, TableHead, TableRow,\r\n\tTextField, InputAdornment, Chip, Radio, RadioGroup, FormControlLabel,\r\n} from \"@mui/material\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport {\r\n\tComposedChart, Bar, Line, XAxis, YAxis, CartesianGrid,\r\n\tTooltip as RTooltip, ResponsiveContainer,\r\n} from \"recharts\";\r\n\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport FileDownloadIcon from \"@mui/icons-material/FileDownload\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\n\r\nimport PageHeader from \"../common/components/PageHeader\";\r\nimport ReportFilterBar, { type QuickRange } from \"../common/components/ReportFilterBar\";\r\nimport AppButton from \"../common/components/AppButton\";\r\nimport { headCellSx as sharedHeadSx } from \"../common/utils/tableStyles\";\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { getManagementDashboard } from \"./useManagementDashboard\";\r\nimport type { MgmtDashboardResponse } from \"./types\";\r\n\r\n/* ═══════════════════════ COLORS ═══════════════════════ */\r\nconst C = {\r\n\tnavy: \"#1a3a6b\", blue: \"#2b6cb0\", green: \"#276749\", amber: \"#c47c00\",\r\n\tred: \"#c53030\", teal: \"#0b7a8f\",\r\n\tsurface: \"#fff\", s2: \"#f7f9fc\", s3: \"#eef2f7\",\r\n\tb1: \"rgba(20,50,100,.07)\", b2: \"rgba(20,50,100,.13)\",\r\n\tt1: \"#2d3748\", t2: \"#4a5568\", t3: \"#718096\",\r\n\tblt: \"#e8f0fc\", glt: \"#e4f6ef\", alt: \"#fdf3e0\", rlt: \"#fde8e8\", tlt: \"#e3f4f7\",\r\n};\r\n\r\n/* ═══════════════════════ STYLES ═══════════════════════ */\r\nconst headSx = { ...sharedHeadSx as object, py: 1, px: 1.5 };\r\nconst cellSx = { fontSize: 12, py: 0.8, px: 1.5, borderBottom: `1px solid ${C.b1}` };\r\nconst monoSx = { fontFamily: \"'JetBrains Mono', monospace\", fontSize: 12, fontWeight: 700 };\r\nconst labelSx = { fontSize: 11, fontWeight: 700, letterSpacing: 0.7, textTransform: \"uppercase\" as const, color: C.t2 };\r\nconst cardPaper = { background: C.surface, border: `1px solid #dce3ef`, borderRadius: \"6px\", overflow: \"hidden\", boxShadow: \"0 1px 4px rgba(0,0,0,.09)\" };\r\nconst cardHeader = { px: 1.5, py: 1, background: C.s2, borderBottom: `1px solid ${C.b1}`, display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" };\r\n\r\n/* ═══════════════════════ EMPTY STATE ═══════════════════════ */\r\nconst EMPTY: MgmtDashboardResponse = {\r\n\tinbound: { total: 0, answered: 0, unanswered: 0, answered_pct: 0, unanswered_pct: 0 },\r\n\toutbound: { total: 0, answered: 0, unanswered: 0, answered_pct: 0, unanswered_pct: 0 },\r\n\ttotals: { total_calls: 0, total_answered: 0, highest_duration: \"00:00:00\", lowest_duration: \"00:00:00\", calls_lt_30sec: 0, avg_inbound_duration: \"00:00:00\", avg_outbound_duration: \"00:00:00\" },\r\n\tabandoned:{ total: 0, called_back: 0, to_call: 0, called_back_pct: 0, to_call_pct: 0, avg_callback_duration: \"00:00:00\" },\r\n\tivr: { total: 0, called_back: 0, to_call: 0, called_back_pct: 0, to_call_pct: 0 },\r\n\twaiting: { avg_wait_time: \"00:00:00\", avg_lang_selection: \"00:00:00\", avg_queue_wait: \"00:00:00\" },\r\n\tcht: [],\r\n\tqueue_calls: [],\r\n\thourly_chart: [],\r\n\trepeated_calls: [],\r\n};\r\n\r\n/* ═══════════════════════ SUB-COMPONENTS ═══════════════════════ */\r\n\r\nfunction DirectionCard({ title, data }: Readonly<{\r\n\ttitle: string;\r\n\tdata: MgmtDashboardResponse[\"inbound\"];\r\n}>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>{title}</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 32, fontWeight: 800, color: C.navy, lineHeight: 1, mb: 1.2 }}>\r\n\t\t\t\t\t{data.total.toLocaleString()}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 1, borderTop: `2px solid ${C.s3}`, pt: 1 }}>\r\n\t\t\t\t\t{[\r\n\t\t\t\t\t\t{ label: \"ANSWERED\", value: data.answered, pct: data.answered_pct, color: C.blue },\r\n\t\t\t\t\t\t{ label: \"UNANSWERED\", value: data.unanswered, pct: data.unanswered_pct, color: C.t3 },\r\n\t\t\t\t\t].map(({ label, value, pct, color }) => (\r\n\t\t\t\t\t\t<Box key={label}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: 10, fontWeight: 700, letterSpacing: 0.5, color: C.t3, mb: 0.3 }}>{label}</Typography>\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"baseline\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 18, fontWeight: 700, color }}>{value.toLocaleString()}</Typography>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3 }}>{pct.toFixed(1)}%</Typography>\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))}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction QueueCallsCard({ data }: Readonly<{ data: MgmtDashboardResponse[\"queue_calls\"] }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>Queue Wise Calls</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t{data.length === 0 && <Typography sx={{ fontSize: 12, color: C.t3, textAlign: \"center\", py: 2 }}>No data</Typography>}\r\n\t\t\t\t{data.map((q, i) => (\r\n\t\t\t\t\t<Box key={q.queue_name} sx={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", py: 0.6, borderBottom: `1px solid #f0f0f0`, \"&:last-child\": { borderBottom: \"none\" } }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 12, fontWeight: 600, color: C.t2 }}>{q.queue_name}</Typography>\r\n\t\t\t\t\t\t<Box sx={{ background: i === 0 ? \"#3182ce\" : \"#90cdf4\", color: i === 0 ? \"#fff\" : \"#1a365d\", borderRadius: \"4px\", px: 1.2, py: 0.3, minWidth: 44, textAlign: \"center\", fontSize: 14, fontWeight: 700 }}>\r\n\t\t\t\t\t\t\t{q.call_count}\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</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction AbandonedCard({ data }: Readonly<{ data: MgmtDashboardResponse[\"abandoned\"] }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>Abandoned Patients</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 30, fontWeight: 800, color: C.navy, lineHeight: 1, mb: 1 }}>\r\n\t\t\t\t\t{data.total.toLocaleString()}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t{[\r\n\t\t\t\t\t{ label: \"Called Back Patients\", value: data.called_back, pct: data.called_back_pct },\r\n\t\t\t\t\t{ label: \"To be Called Patients\", value: data.to_call, pct: data.to_call_pct },\r\n\t\t\t\t].map(({ label, value, pct }) => (\r\n\t\t\t\t\t<Box key={label} sx={{ mb: 0.4 }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, display: \"inline\" }}>{label} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 13, fontWeight: 700, color: C.blue, display: \"inline\" }}>{value} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, fontWeight: 700, color: \"#48bb78\", display: \"inline\" }}>{pct.toFixed(1)}%</Typography>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t))}\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction AvgCallbackCard({ duration }: Readonly<{ duration: string }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>Avg Callback Duration</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 26, fontWeight: 700, color: C.navy, mt: 1, letterSpacing: 1 }}>\r\n\t\t\t\t\t{duration}\r\n\t\t\t\t</Typography>\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction IvrCard({ data }: Readonly<{ data: MgmtDashboardResponse[\"ivr\"] }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>IVR Patients</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 30, fontWeight: 800, color: C.navy, lineHeight: 1, mb: 1 }}>\r\n\t\t\t\t\t{data.total.toLocaleString()}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t{[\r\n\t\t\t\t\t{ label: \"Called Back\", value: data.called_back, pct: data.called_back_pct },\r\n\t\t\t\t\t{ label: \"To Be Called\", value: data.to_call, pct: data.to_call_pct },\r\n\t\t\t\t].map(({ label, value, pct }) => (\r\n\t\t\t\t\t<Box key={label} sx={{ mb: 0.4 }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, display: \"inline\" }}>{label} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 13, fontWeight: 700, color: C.blue, display: \"inline\" }}>{value} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, fontWeight: 700, color: \"#48bb78\", display: \"inline\" }}>{pct.toFixed(1)}%</Typography>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t))}\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction statusColor(status: string) {\r\n\tconst s = status?.toUpperCase();\r\n\tif (s === \"ANSWERED\") return C.green;\r\n\tif (s === \"CANCEL\") return C.red;\r\n\tif (s === \"ABANDONED\") return \"#c05621\";\r\n\treturn C.t2;\r\n}\r\n\r\n/* ═══════════════════════ MAIN CONTENT ═══════════════════════ */\r\n\r\nfunction ManagementDashboardContent() {\r\n\tconst [startDate, setStartDate] = useState<Dayjs | null>(dayjs().startOf(\"day\"));\r\n\tconst [endDate, setEndDate] = useState<Dayjs | null>(dayjs());\r\n\tconst [quickRange, setQuickRange] = useState(\"today\");\r\n\r\n\tconst [data, setData] = useState<MgmtDashboardResponse>(EMPTY);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [error, setError] = useState(\"\");\r\n\tconst [repeatedSearch, setRepeatedSearch] = useState(\"\");\r\n\tconst [chartDir, setChartDir] = useState<\"inbound\" | \"outbound\">(\"inbound\");\r\n\tconst chartRef = useRef<HTMLDivElement>(null);\r\n\r\n\tconst fetchDashboard = useCallback(async () => {\r\n\t\tif (!startDate || !endDate) return;\r\n\t\tsetLoading(true);\r\n\t\tsetError(\"\");\r\n\t\ttry {\r\n\t\t\tconst result = await getManagementDashboard({\r\n\t\t\t\tstart_date: startDate.format(\"YYYY-MM-DD\"),\r\n\t\t\t\tend_date: endDate.format(\"YYYY-MM-DD\"),\r\n\t\t\t});\r\n\t\t\tsetData(result);\r\n\t\t} catch (err: any) {\r\n\t\t\tsetError(err?.response?.data?.detail || err?.message || \"Failed to load dashboard\");\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, [startDate, endDate]);\r\n\r\n\tuseEffect(() => { fetchDashboard(); }, [fetchDashboard]);\r\n\r\n\tconst handleQuickRangeChange = (range: QuickRange) => setQuickRange(range);\r\n\r\n\tconst filteredRepeated = useMemo(() => {\r\n\t\tif (!repeatedSearch) return data.repeated_calls;\r\n\t\tconst q = repeatedSearch.toLowerCase();\r\n\t\treturn data.repeated_calls.filter((r) =>\r\n\t\t\tr.phone_number.toLowerCase().includes(q) ||\r\n\t\t\tr.latest_status.toLowerCase().includes(q) ||\r\n\t\t\tr.latest_call_type.toLowerCase().includes(q)\r\n\t\t);\r\n\t}, [data.repeated_calls, repeatedSearch]);\r\n\r\n\tconst hourlyData = useMemo(() => {\r\n\t\tconst map = new Map(data.hourly_chart.map((h) => [h.hour, h]));\r\n\t\treturn Array.from({ length: 24 }, (_, h) => ({\r\n\t\t\thour: `${String(h).padStart(2, \"0\")}`,\r\n\t\t\tanswered: map.get(h)?.answered ?? 0,\r\n\t\t\tabandoned: map.get(h)?.abandoned ?? 0,\r\n\t\t\tagents: map.get(h)?.agents ?? 0,\r\n\t\t}));\r\n\t}, [data.hourly_chart]);\r\n\r\n\tconst downloadChart = () => {\r\n\t\tconst svgEl = chartRef.current?.querySelector(\"svg\");\r\n\t\tif (!svgEl) return;\r\n\t\tconst svgData = new XMLSerializer().serializeToString(svgEl);\r\n\t\tconst canvas = document.createElement(\"canvas\");\r\n\t\tconst img = new Image();\r\n\t\timg.onload = () => {\r\n\t\t\tcanvas.width = img.width;\r\n\t\t\tcanvas.height = img.height;\r\n\t\t\tconst ctx = canvas.getContext(\"2d\");\r\n\t\t\tif (!ctx) return;\r\n\t\t\tctx.fillStyle = \"#fff\";\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t\tctx.drawImage(img, 0, 0);\r\n\t\t\tconst a = document.createElement(\"a\");\r\n\t\t\ta.download = `hourly_chart_${chartDir}.png`;\r\n\t\t\ta.href = canvas.toDataURL(\"image/png\");\r\n\t\t\ta.click();\r\n\t\t};\r\n\t\timg.src = \"data:image/svg+xml;base64,\" + btoa(unescape(encodeURIComponent(svgData)));\r\n\t};\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t<Box sx={{ background: \"transparent\", minHeight: \"100vh\" }}>\r\n\r\n\t\t\t\t{/* ── HEADER ── */}\r\n\t\t\t\t<PageHeader\r\n\t\t\t\t\ttitle=\"Management Dashboard\"\r\n\t\t\t\t\tactions={\r\n\t\t\t\t\t\t<Stack direction=\"row\" spacing={1} alignItems=\"center\">\r\n\t\t\t\t\t\t\t<AppButton\r\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\t\tstartIcon={<RefreshIcon sx={{ fontSize: \"0.95rem !important\" }} />}\r\n\t\t\t\t\t\t\t\tonClick={fetchDashboard}\r\n\t\t\t\t\t\t\t\tdisabled={loading}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tRefresh\r\n\t\t\t\t\t\t\t</AppButton>\r\n\t\t\t\t\t\t\t<AppButton\r\n\t\t\t\t\t\t\t\tstartIcon={<FileDownloadIcon sx={{ fontSize: \"0.95rem !important\" }} />}\r\n\t\t\t\t\t\t\t\tdisabled={loading || data.totals.total_calls === 0}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tconst rows = data.repeated_calls.map((r) => Object.values(r).join(\",\"));\r\n\t\t\t\t\t\t\t\t\tconst csv = [\"Phone,Date,Count,Status,Type,Comments\", ...rows].join(\"\\n\");\r\n\t\t\t\t\t\t\t\t\tconst a = document.createElement(\"a\");\r\n\t\t\t\t\t\t\t\t\ta.href = URL.createObjectURL(new Blob([csv], { type: \"text/csv\" }));\r\n\t\t\t\t\t\t\t\t\ta.download = `mgmt_dashboard_${startDate?.format(\"YYYY-MM-DD\")}.csv`;\r\n\t\t\t\t\t\t\t\t\ta.click();\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\tExport CSV\r\n\t\t\t\t\t\t\t</AppButton>\r\n\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{/* ── FILTER BAR ── */}\r\n\t\t\t\t<ReportFilterBar\r\n\t\t\t\t\tstartDate={startDate}\r\n\t\t\t\t\tendDate={endDate}\r\n\t\t\t\t\tonStartChange={setStartDate}\r\n\t\t\t\t\tonEndChange={setEndDate}\r\n\t\t\t\t\tshowTime={false}\r\n\t\t\t\t\tquickRange={quickRange}\r\n\t\t\t\t\tonQuickRangeChange={handleQuickRangeChange}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{error && (\r\n\t\t\t\t\t<Alert severity=\"error\" sx={{ mx: 2.5, mt: 1.5 }} onClose={() => setError(\"\")}>{error}</Alert>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{loading && (\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"center\", py: 5 }}>\r\n\t\t\t\t\t\t<CircularProgress size={36} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{!loading && (\r\n\t\t\t\t\t<Box sx={{ px: { xs: 1, md: 2 }, py: 1.5 }}>\r\n\r\n\t\t\t\t\t\t{/* ═══ ROW 1 — 6 stat cards ═══ */}\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\tdisplay: \"grid\",\r\n\t\t\t\t\t\t\tgridTemplateColumns: { xs: \"1fr\", sm: \"repeat(2, 1fr)\", md: \"repeat(3, 1fr)\", lg: \"1.3fr 1.2fr 1.1fr 0.75fr 1.3fr 1.1fr\" },\r\n\t\t\t\t\t\t\tgap: 1.2,\r\n\t\t\t\t\t\t\tmb: 1.2,\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t<DirectionCard title=\"Inbound Calls\" data={data.inbound} />\r\n\t\t\t\t\t\t\t<QueueCallsCard data={data.queue_calls} />\r\n\t\t\t\t\t\t\t<AbandonedCard data={data.abandoned} />\r\n\t\t\t\t\t\t\t<AvgCallbackCard duration={data.abandoned.avg_callback_duration} />\r\n\t\t\t\t\t\t\t<DirectionCard title=\"Outbound Calls\" data={data.outbound} />\r\n\t\t\t\t\t\t\t<IvrCard data={data.ivr} />\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{/* ═══ ROW 2 — 4 metric cards ═══ */}\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\tdisplay: \"grid\",\r\n\t\t\t\t\t\t\tgridTemplateColumns: { xs: \"1fr\", sm: \"repeat(2, 1fr)\", lg: \"1fr 1fr 1.6fr 1.6fr\" },\r\n\t\t\t\t\t\t\tgap: 1.2,\r\n\t\t\t\t\t\t\tmb: 1.2,\r\n\t\t\t\t\t\t}}>\r\n\r\n\t\t\t\t\t\t\t{/* Summary */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Summary</Typography></Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"baseline\", gap: 0.5, mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 22, fontWeight: 800, color: C.navy }}>{data.totals.total_answered.toLocaleString()}</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 14, color: C.t3 }}>/</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 22, fontWeight: 800, color: C.t3 }}>{data.totals.total_calls.toLocaleString()}</Typography>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, mb: 1 }}>Total Calls</Typography>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ mt: 1 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, mb: 0.3 }}>Call Duration</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 2 }}>\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\t<Typography sx={{ fontSize: 10, color: C.t3 }}>Highest</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, color: C.blue, fontSize: 13 }}>{data.totals.highest_duration}</Typography>\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>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 10, color: C.t3 }}>Lowest</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, color: C.blue, fontSize: 13 }}>{data.totals.lowest_duration}</Typography>\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</Box>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ mt: 1 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, display: \"inline\" }}>Calls &lt; 30 sec: </Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, color: C.blue, display: \"inline\", fontSize: 13 }}>{data.totals.calls_lt_30sec.toLocaleString()}</Typography>\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</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Avg Duration */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Avg Total Calls Duration</Typography></Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ p: 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{ label: \"Inbound\", value: data.totals.avg_inbound_duration },\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Outbound\", value: data.totals.avg_outbound_duration },\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<Box key={label} sx={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", py: 1, borderBottom: `1px solid ${C.b1}`, \"&:last-child\": { borderBottom: \"none\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 12, fontWeight: 600, color: C.t2 }}>{label}</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, fontSize: 16, color: C.blue }}>{value}</Typography>\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\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Inbound Avg Waiting */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Inbound Average Waiting</Typography></Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ p: 1.5, display: \"grid\", gridTemplateColumns: \"1fr 1fr 1fr\", gap: 1, mt: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t{[\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Waiting Time\", value: data.waiting.avg_wait_time },\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Language Selection\", value: data.waiting.avg_lang_selection },\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Queue Waiting\", value: data.waiting.avg_queue_wait },\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<Box key={label} sx={{ textAlign: \"center\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 10, fontWeight: 600, color: C.t3, mb: 0.5 }}>{label}</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, fontSize: 18, color: C.blue }}>{value}</Typography>\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\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* CHT Table */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Average CHT</Typography></Box>\r\n\t\t\t\t\t\t\t\t<TableContainer>\r\n\t\t\t\t\t\t\t\t\t<Table size=\"small\">\r\n\t\t\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Call Type</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Call Handling Time</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Talk Duration</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Hold Duration</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t\t\t{data.cht.length === 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow><TableCell colSpan={4} sx={{ textAlign: \"center\", py: 2, color: C.t3, fontSize: 12 }}>No data</TableCell></TableRow>\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{data.cht.map((row) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow key={row.call_type} hover>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontWeight: 600, color: C.t2 }}>{row.call_type}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, color: C.blue }}>{row.call_handling_time}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, color: C.blue }}>{row.talk_duration}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, color: C.blue }}>{row.hold_duration}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</TableRow>\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</TableBody>\r\n\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{/* ═══ ROW 3 — Chart + Repeated Calls ═══ */}\r\n\t\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", lg: \"1fr 1fr\" }, gap: 1.2 }}>\r\n\r\n\t\t\t\t\t\t\t{/* Hourly Chart */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={{ ...cardHeader, flexWrap: \"wrap\", gap: 1 }}>\r\n\t\t\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={labelSx}>Avg Hour Wise Inbound Calls vs Agents</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Stack direction=\"row\" spacing={1.5} sx={{ mt: 0.5 }}>\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{ color: \"#f6a623\", label: \"Answered\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ color: \"#90a4c0\", label: \"Abandoned\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ color: \"#4a5568\", label: \"Agents\" },\r\n\t\t\t\t\t\t\t\t\t\t\t].map(({ color, label }) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box key={label} sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ width: 12, height: 12, borderRadius: \"2px\", background: color }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3 }}>{label}</Typography>\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))}\r\n\t\t\t\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", flexDirection: \"column\", alignItems: \"flex-end\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t<RadioGroup row value={chartDir} onChange={(e) => setChartDir(e.target.value as \"inbound\" | \"outbound\")}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ \"& .MuiFormControlLabel-root\": { mr: 0.5 }, \"& .MuiFormControlLabel-label\": { fontSize: 12 } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<FormControlLabel value=\"inbound\" control={<Radio size=\"small\" />} label=\"Inbound\" />\r\n\t\t\t\t\t\t\t\t\t\t\t<FormControlLabel value=\"outbound\" control={<Radio size=\"small\" />} label=\"Outbound\" />\r\n\t\t\t\t\t\t\t\t\t\t</RadioGroup>\r\n\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={downloadChart}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ fontSize: 11, color: \"#3182ce\", cursor: \"pointer\", border: \"1px solid #bee3f8\", borderRadius: \"4px\", px: 1, py: 0.3 }}\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⬇ DOWNLOAD\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\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\t<Box ref={chartRef} sx={{ p: 1.5, height: 260 }}>\r\n\t\t\t\t\t\t\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\">\r\n\t\t\t\t\t\t\t\t\t\t<ComposedChart data={hourlyData} margin={{ top: 4, right: 30, left: -20, bottom: 0 }} barGap={1}>\r\n\t\t\t\t\t\t\t\t\t\t\t<CartesianGrid strokeDasharray=\"3 3\" stroke={C.b2} vertical={false} />\r\n\t\t\t\t\t\t\t\t\t\t\t<XAxis dataKey=\"hour\" tick={{ fontSize: 9, fill: C.t3 }} interval={1} />\r\n\t\t\t\t\t\t\t\t\t\t\t<YAxis yAxisId=\"left\" tick={{ fontSize: 9, fill: C.t3 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t<YAxis yAxisId=\"right\" orientation=\"right\" tick={{ fontSize: 9, fill: C.t3 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t<RTooltip\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontentStyle={{ fontSize: 11, borderRadius: 6, border: `1px solid ${C.b2}` }}\r\n\t\t\t\t\t\t\t\t\t\t\t\tformatter={(v, n: string) => [v, n.charAt(0).toUpperCase() + n.slice(1)]}\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<Bar yAxisId=\"left\" dataKey=\"answered\" fill=\"#f6a623\" radius={[2, 2, 0, 0]} maxBarSize={14} />\r\n\t\t\t\t\t\t\t\t\t\t\t<Bar yAxisId=\"left\" dataKey=\"abandoned\" fill=\"#90a4c0\" radius={[2, 2, 0, 0]} maxBarSize={14} />\r\n\t\t\t\t\t\t\t\t\t\t\t<Line yAxisId=\"right\" type=\"monotone\" dataKey=\"agents\" stroke=\"#4a5568\" strokeWidth={1.5} dot={{ r: 2, fill: \"#4a5568\" }} />\r\n\t\t\t\t\t\t\t\t\t\t</ComposedChart>\r\n\t\t\t\t\t\t\t\t\t</ResponsiveContainer>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Repeated Calls Table */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t\t\t\t\t\t<Typography sx={labelSx}>Repeated Calls</Typography>\r\n\t\t\t\t\t\t\t\t\t<Chip label={data.repeated_calls.length} size=\"small\" sx={{ background: C.rlt, color: C.red, fontWeight: 700, fontSize: 11 }} />\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ px: 1.5, py: 1 }}>\r\n\t\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"Search…\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={repeatedSearch}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(e) => setRepeatedSearch(e.target.value)}\r\n\t\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\t\tslotProps={{ input: { startAdornment: <InputAdornment position=\"start\"><SearchIcon sx={{ fontSize: 16, color: C.t3 }} /></InputAdornment> } }}\r\n\t\t\t\t\t\t\t\t\t\tsx={{ \"& .MuiInputBase-root\": { fontSize: 12 } }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<TableContainer sx={{ maxHeight: 260, overflow: \"auto\" }}>\r\n\t\t\t\t\t\t\t\t\t<Table size=\"small\" stickyHeader>\r\n\t\t\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Phone Number</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Date</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>No of Calls</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Latest Status</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Latest Call Type</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Comments</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t\t\t{filteredRepeated.length === 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow><TableCell colSpan={6} sx={{ textAlign: \"center\", py: 2, color: C.t3, fontSize: 12 }}>No repeated calls</TableCell></TableRow>\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{filteredRepeated.map((r) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow key={`${r.phone_number}-${r.date}`} hover>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, fontSize: 11 }}>{r.phone_number}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11 }}>{r.date}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontWeight: 700, color: C.navy, fontSize: 13 }}>{r.call_count}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11, fontWeight: 600, color: statusColor(r.latest_status) }}>{r.latest_status}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11 }}>{r.latest_call_type}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11, color: C.t3 }}>{r.comments}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</TableRow>\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</TableBody>\r\n\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n}\r\n\r\nconst ManagementDashboard: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<ManagementDashboardContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default ManagementDashboard;\r\n","import axiosInstance from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type { MgmtDashboardParams, MgmtDashboardResponse } from \"./types\";\r\n\r\nfunction buildQs(params: MgmtDashboardParams): string {\r\n\tconst qs = new URLSearchParams();\r\n\tif (params.start_date) qs.append(\"start_date\", params.start_date);\r\n\tif (params.end_date) qs.append(\"end_date\", params.end_date);\r\n\tif (params.agent_id != null) qs.append(\"agent_id\", String(params.agent_id));\r\n\tconst str = qs.toString();\r\n\treturn str ? `?${str}` : \"\";\r\n}\r\n\r\nexport async function getManagementDashboard(params: MgmtDashboardParams): Promise<MgmtDashboardResponse> {\r\n\tconst res = await axiosInstance.get<MgmtDashboardResponse>(\r\n\t\t`${END_POINT.MANAGEMENT_DASHBOARD}${buildQs(params)}`,\r\n\t);\r\n\treturn res.data;\r\n}\r\n"],"mappings":"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","names":["dayjs"]}
1
+ {"version":3,"sources":["../call-control-sdk/lib/pages/managementDashboard/index.tsx","../call-control-sdk/lib/pages/managementDashboard/useManagementDashboard.ts"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo, useRef } from \"react\";\r\nimport {\r\n\tBox, Paper, Stack, Typography, CircularProgress, Alert,\r\n\tTable, TableBody, TableCell, TableContainer, TableHead, TableRow,\r\n\tTextField, InputAdornment, Chip, Radio, RadioGroup, FormControlLabel,\r\n} from \"@mui/material\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport {\r\n\tComposedChart, Bar, Line, XAxis, YAxis, CartesianGrid,\r\n\tTooltip as RTooltip, ResponsiveContainer,\r\n} from \"recharts\";\r\n\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport FileDownloadIcon from \"@mui/icons-material/FileDownload\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\n\r\nimport PageHeader from \"../common/components/PageHeader\";\r\nimport ReportFilterBar, { type QuickRange } from \"../common/components/ReportFilterBar\";\r\nimport AppButton from \"../common/components/AppButton\";\r\nimport { headCellSx as sharedHeadSx } from \"../common/utils/tableStyles\";\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { getManagementDashboard } from \"./useManagementDashboard\";\r\nimport type { MgmtDashboardResponse } from \"./types\";\r\n\r\n/* ═══════════════════════ COLORS ═══════════════════════ */\r\nconst C = {\r\n\tnavy: \"#1a3a6b\", blue: \"#2b6cb0\", green: \"#276749\", amber: \"#c47c00\",\r\n\tred: \"#c53030\", teal: \"#0b7a8f\",\r\n\tsurface: \"#fff\", s2: \"#f7f9fc\", s3: \"#eef2f7\",\r\n\tb1: \"rgba(20,50,100,.07)\", b2: \"rgba(20,50,100,.13)\",\r\n\tt1: \"#2d3748\", t2: \"#4a5568\", t3: \"#718096\",\r\n\tblt: \"#e8f0fc\", glt: \"#e4f6ef\", alt: \"#fdf3e0\", rlt: \"#fde8e8\", tlt: \"#e3f4f7\",\r\n};\r\n\r\n/* ═══════════════════════ STYLES ═══════════════════════ */\r\nconst headSx = { ...sharedHeadSx as object, py: 1, px: 1.5 };\r\nconst cellSx = { fontSize: 12, py: 0.8, px: 1.5, borderBottom: `1px solid ${C.b1}` };\r\nconst monoSx = { fontFamily: \"'JetBrains Mono', monospace\", fontSize: 12, fontWeight: 700 };\r\nconst labelSx = { fontSize: 11, fontWeight: 700, letterSpacing: 0.7, textTransform: \"uppercase\" as const, color: C.t2 };\r\nconst cardPaper = { background: C.surface, border: `1px solid #dce3ef`, borderRadius: \"6px\", overflow: \"hidden\", boxShadow: \"0 1px 4px rgba(0,0,0,.09)\" };\r\nconst cardHeader = { px: 1.5, py: 1, background: C.s2, borderBottom: `1px solid ${C.b1}`, display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" };\r\n\r\n/* ═══════════════════════ EMPTY STATE ═══════════════════════ */\r\nconst EMPTY: MgmtDashboardResponse = {\r\n\tinbound: { total: 0, answered: 0, unanswered: 0, answered_pct: 0, unanswered_pct: 0 },\r\n\toutbound: { total: 0, answered: 0, unanswered: 0, answered_pct: 0, unanswered_pct: 0 },\r\n\ttotals: { total_calls: 0, total_answered: 0, highest_duration: \"00:00:00\", lowest_duration: \"00:00:00\", calls_lt_30sec: 0, avg_inbound_duration: \"00:00:00\", avg_outbound_duration: \"00:00:00\" },\r\n\tabandoned:{ total: 0, called_back: 0, to_call: 0, called_back_pct: 0, to_call_pct: 0, avg_callback_duration: \"00:00:00\" },\r\n\tivr: { total: 0, called_back: 0, to_call: 0, called_back_pct: 0, to_call_pct: 0 },\r\n\twaiting: { avg_wait_time: \"00:00:00\", avg_lang_selection: \"00:00:00\", avg_queue_wait: \"00:00:00\" },\r\n\tcht: [],\r\n\tqueue_calls: [],\r\n\thourly_chart: [],\r\n\trepeated_calls: [],\r\n};\r\n\r\n/* ═══════════════════════ SUB-COMPONENTS ═══════════════════════ */\r\n\r\nfunction DirectionCard({ title, data }: Readonly<{\r\n\ttitle: string;\r\n\tdata: MgmtDashboardResponse[\"inbound\"];\r\n}>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>{title}</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 32, fontWeight: 800, color: C.navy, lineHeight: 1, mb: 1.2 }}>\r\n\t\t\t\t\t{data.total.toLocaleString()}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: \"1fr 1fr\", gap: 1, borderTop: `2px solid ${C.s3}`, pt: 1 }}>\r\n\t\t\t\t\t{[\r\n\t\t\t\t\t\t{ label: \"ANSWERED\", value: data.answered, pct: data.answered_pct, color: C.blue },\r\n\t\t\t\t\t\t{ label: \"UNANSWERED\", value: data.unanswered, pct: data.unanswered_pct, color: C.t3 },\r\n\t\t\t\t\t].map(({ label, value, pct, color }) => (\r\n\t\t\t\t\t\t<Box key={label}>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontSize: 10, fontWeight: 700, letterSpacing: 0.5, color: C.t3, mb: 0.3 }}>{label}</Typography>\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"baseline\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 18, fontWeight: 700, color }}>{value.toLocaleString()}</Typography>\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3 }}>{pct.toFixed(1)}%</Typography>\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))}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction QueueCallsCard({ data }: Readonly<{ data: MgmtDashboardResponse[\"queue_calls\"] }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>Queue Wise Calls</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t{data.length === 0 && <Typography sx={{ fontSize: 12, color: C.t3, textAlign: \"center\", py: 2 }}>No data</Typography>}\r\n\t\t\t\t{data.map((q, i) => (\r\n\t\t\t\t\t<Box key={q.queue_name} sx={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", py: 0.6, borderBottom: `1px solid #f0f0f0`, \"&:last-child\": { borderBottom: \"none\" } }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 12, fontWeight: 600, color: C.t2 }}>{q.queue_name}</Typography>\r\n\t\t\t\t\t\t<Box sx={{ background: i === 0 ? \"#3182ce\" : \"#90cdf4\", color: i === 0 ? \"#fff\" : \"#1a365d\", borderRadius: \"4px\", px: 1.2, py: 0.3, minWidth: 44, textAlign: \"center\", fontSize: 14, fontWeight: 700 }}>\r\n\t\t\t\t\t\t\t{q.call_count}\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</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction AbandonedCard({ data }: Readonly<{ data: MgmtDashboardResponse[\"abandoned\"] }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>Abandoned Patients</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 30, fontWeight: 800, color: C.navy, lineHeight: 1, mb: 1 }}>\r\n\t\t\t\t\t{data.total.toLocaleString()}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t{[\r\n\t\t\t\t\t{ label: \"Called Back Patients\", value: data.called_back, pct: data.called_back_pct },\r\n\t\t\t\t\t{ label: \"To be Called Patients\", value: data.to_call, pct: data.to_call_pct },\r\n\t\t\t\t].map(({ label, value, pct }) => (\r\n\t\t\t\t\t<Box key={label} sx={{ mb: 0.4 }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, display: \"inline\" }}>{label} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 13, fontWeight: 700, color: C.blue, display: \"inline\" }}>{value} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, fontWeight: 700, color: \"#48bb78\", display: \"inline\" }}>{pct.toFixed(1)}%</Typography>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t))}\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction AvgCallbackCard({ duration }: Readonly<{ duration: string }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>Avg Callback Duration</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'JetBrains Mono', monospace\", fontSize: 26, fontWeight: 700, color: C.navy, mt: 1, letterSpacing: 1 }}>\r\n\t\t\t\t\t{duration}\r\n\t\t\t\t</Typography>\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction IvrCard({ data }: Readonly<{ data: MgmtDashboardResponse[\"ivr\"] }>) {\r\n\treturn (\r\n\t\t<Paper sx={cardPaper}>\r\n\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t<Typography sx={labelSx}>IVR Patients</Typography>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 30, fontWeight: 800, color: C.navy, lineHeight: 1, mb: 1 }}>\r\n\t\t\t\t\t{data.total.toLocaleString()}\r\n\t\t\t\t</Typography>\r\n\t\t\t\t{[\r\n\t\t\t\t\t{ label: \"Called Back\", value: data.called_back, pct: data.called_back_pct },\r\n\t\t\t\t\t{ label: \"To Be Called\", value: data.to_call, pct: data.to_call_pct },\r\n\t\t\t\t].map(({ label, value, pct }) => (\r\n\t\t\t\t\t<Box key={label} sx={{ mb: 0.4 }}>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, display: \"inline\" }}>{label} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 13, fontWeight: 700, color: C.blue, display: \"inline\" }}>{value} </Typography>\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 11, fontWeight: 700, color: \"#48bb78\", display: \"inline\" }}>{pct.toFixed(1)}%</Typography>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t))}\r\n\t\t\t</Box>\r\n\t\t</Paper>\r\n\t);\r\n}\r\n\r\nfunction statusColor(status: string) {\r\n\tconst s = status?.toUpperCase();\r\n\tif (s === \"ANSWERED\") return C.green;\r\n\tif (s === \"CANCEL\") return C.red;\r\n\tif (s === \"ABANDONED\") return \"#c05621\";\r\n\treturn C.t2;\r\n}\r\n\r\n/* ═══════════════════════ MAIN CONTENT ═══════════════════════ */\r\n\r\nfunction ManagementDashboardContent() {\r\n\tconst [startDate, setStartDate] = useState<Dayjs | null>(dayjs().startOf(\"day\"));\r\n\tconst [endDate, setEndDate] = useState<Dayjs | null>(dayjs());\r\n\tconst [quickRange, setQuickRange] = useState(\"today\");\r\n\r\n\tconst [data, setData] = useState<MgmtDashboardResponse>(EMPTY);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [error, setError] = useState(\"\");\r\n\tconst [repeatedSearch, setRepeatedSearch] = useState(\"\");\r\n\tconst [chartDir, setChartDir] = useState<\"inbound\" | \"outbound\">(\"inbound\");\r\n\tconst chartRef = useRef<HTMLDivElement>(null);\r\n\r\n\tconst fetchDashboard = useCallback(async () => {\r\n\t\tif (!startDate || !endDate) return;\r\n\t\tsetLoading(true);\r\n\t\tsetError(\"\");\r\n\t\ttry {\r\n\t\t\tconst result = await getManagementDashboard({\r\n\t\t\t\tstart_date: startDate.format(\"YYYY-MM-DD\"),\r\n\t\t\t\tend_date: endDate.format(\"YYYY-MM-DD\"),\r\n\t\t\t});\r\n\t\t\tsetData(result);\r\n\t\t} catch (err: any) {\r\n\t\t\tsetError(err?.response?.data?.detail || err?.message || \"Failed to load dashboard\");\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, [startDate, endDate]);\r\n\r\n\tuseEffect(() => { fetchDashboard(); }, [fetchDashboard]);\r\n\r\n\tconst handleQuickRangeChange = (range: QuickRange) => setQuickRange(range);\r\n\r\n\tconst filteredRepeated = useMemo(() => {\r\n\t\tif (!repeatedSearch) return data.repeated_calls;\r\n\t\tconst q = repeatedSearch.toLowerCase();\r\n\t\treturn data.repeated_calls.filter((r) =>\r\n\t\t\tr.phone_number.toLowerCase().includes(q) ||\r\n\t\t\tr.latest_status.toLowerCase().includes(q) ||\r\n\t\t\tr.latest_call_type.toLowerCase().includes(q)\r\n\t\t);\r\n\t}, [data.repeated_calls, repeatedSearch]);\r\n\r\n\tconst hourlyData = useMemo(() => {\r\n\t\tconst map = new Map(data.hourly_chart.map((h) => [h.hour, h]));\r\n\t\treturn Array.from({ length: 24 }, (_, h) => ({\r\n\t\t\thour: `${String(h).padStart(2, \"0\")}`,\r\n\t\t\tanswered: map.get(h)?.answered ?? 0,\r\n\t\t\tabandoned: map.get(h)?.abandoned ?? 0,\r\n\t\t\tagents: map.get(h)?.agents ?? 0,\r\n\t\t}));\r\n\t}, [data.hourly_chart]);\r\n\r\n\tconst downloadChart = () => {\r\n\t\tconst svgEl = chartRef.current?.querySelector(\"svg\");\r\n\t\tif (!svgEl) return;\r\n\t\tconst svgData = new XMLSerializer().serializeToString(svgEl);\r\n\t\tconst canvas = document.createElement(\"canvas\");\r\n\t\tconst img = new Image();\r\n\t\timg.onload = () => {\r\n\t\t\tcanvas.width = img.width;\r\n\t\t\tcanvas.height = img.height;\r\n\t\t\tconst ctx = canvas.getContext(\"2d\");\r\n\t\t\tif (!ctx) return;\r\n\t\t\tctx.fillStyle = \"#fff\";\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t\tctx.drawImage(img, 0, 0);\r\n\t\t\tconst a = document.createElement(\"a\");\r\n\t\t\ta.download = `hourly_chart_${chartDir}.png`;\r\n\t\t\ta.href = canvas.toDataURL(\"image/png\");\r\n\t\t\ta.click();\r\n\t\t};\r\n\t\timg.src = \"data:image/svg+xml;base64,\" + btoa(unescape(encodeURIComponent(svgData)));\r\n\t};\r\n\r\n\treturn (\r\n\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t<Box sx={{ background: \"transparent\", minHeight: \"100vh\" }}>\r\n\r\n\t\t\t\t{/* ── HEADER ── */}\r\n\t\t\t\t<PageHeader\r\n\t\t\t\t\ttitle=\"Management Dashboard\"\r\n\t\t\t\t\tactions={\r\n\t\t\t\t\t\t<Stack direction=\"row\" spacing={1} alignItems=\"center\">\r\n\t\t\t\t\t\t\t<AppButton\r\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\r\n\t\t\t\t\t\t\t\tstartIcon={<RefreshIcon sx={{ fontSize: \"0.95rem !important\" }} />}\r\n\t\t\t\t\t\t\t\tonClick={fetchDashboard}\r\n\t\t\t\t\t\t\t\tdisabled={loading}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\tRefresh\r\n\t\t\t\t\t\t\t</AppButton>\r\n\t\t\t\t\t\t\t<AppButton\r\n\t\t\t\t\t\t\t\tstartIcon={<FileDownloadIcon sx={{ fontSize: \"0.95rem !important\" }} />}\r\n\t\t\t\t\t\t\t\tdisabled={loading || data.totals.total_calls === 0}\r\n\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\tconst rows = data.repeated_calls.map((r) => Object.values(r).join(\",\"));\r\n\t\t\t\t\t\t\t\t\tconst csv = [\"Phone,Date,Count,Status,Type,Comments\", ...rows].join(\"\\n\");\r\n\t\t\t\t\t\t\t\t\tconst a = document.createElement(\"a\");\r\n\t\t\t\t\t\t\t\t\ta.href = URL.createObjectURL(new Blob([csv], { type: \"text/csv\" }));\r\n\t\t\t\t\t\t\t\t\ta.download = `mgmt_dashboard_${startDate?.format(\"YYYY-MM-DD\")}.csv`;\r\n\t\t\t\t\t\t\t\t\ta.click();\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\tExport CSV\r\n\t\t\t\t\t\t\t</AppButton>\r\n\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{/* ── FILTER BAR ── */}\r\n\t\t\t\t<ReportFilterBar\r\n\t\t\t\t\tstartDate={startDate}\r\n\t\t\t\t\tendDate={endDate}\r\n\t\t\t\t\tonStartChange={setStartDate}\r\n\t\t\t\t\tonEndChange={setEndDate}\r\n\t\t\t\t\tshowTime={false}\r\n\t\t\t\t\tquickRange={quickRange}\r\n\t\t\t\t\tonQuickRangeChange={handleQuickRangeChange}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{error && (\r\n\t\t\t\t\t<Alert severity=\"error\" sx={{ mx: 2.5, mt: 1.5 }} onClose={() => setError(\"\")}>{error}</Alert>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{loading && (\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"center\", py: 5 }}>\r\n\t\t\t\t\t\t<CircularProgress size={36} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{!loading && (\r\n\t\t\t\t\t<Box sx={{ px: { xs: 1, md: 2 }, py: 1.5 }}>\r\n\r\n\t\t\t\t\t\t{/* ═══ ROW 1 — 6 stat cards ═══ */}\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\tdisplay: \"grid\",\r\n\t\t\t\t\t\t\tgridTemplateColumns: { xs: \"1fr\", sm: \"repeat(2, 1fr)\", md: \"repeat(3, 1fr)\", lg: \"1.3fr 1.2fr 1.1fr 0.75fr 1.3fr 1.1fr\" },\r\n\t\t\t\t\t\t\tgap: 1.2,\r\n\t\t\t\t\t\t\tmb: 1.2,\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t<DirectionCard title=\"Inbound Calls\" data={data.inbound} />\r\n\t\t\t\t\t\t\t<QueueCallsCard data={data.queue_calls} />\r\n\t\t\t\t\t\t\t<AbandonedCard data={data.abandoned} />\r\n\t\t\t\t\t\t\t<AvgCallbackCard duration={data.abandoned.avg_callback_duration} />\r\n\t\t\t\t\t\t\t<DirectionCard title=\"Outbound Calls\" data={data.outbound} />\r\n\t\t\t\t\t\t\t<IvrCard data={data.ivr} />\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{/* ═══ ROW 2 — 4 metric cards ═══ */}\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\tdisplay: \"grid\",\r\n\t\t\t\t\t\t\tgridTemplateColumns: { xs: \"1fr\", sm: \"repeat(2, 1fr)\", lg: \"1fr 1fr 1.6fr 1.6fr\" },\r\n\t\t\t\t\t\t\tgap: 1.2,\r\n\t\t\t\t\t\t\tmb: 1.2,\r\n\t\t\t\t\t\t}}>\r\n\r\n\t\t\t\t\t\t\t{/* Summary */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Summary</Typography></Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ p: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"baseline\", gap: 0.5, mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 22, fontWeight: 800, color: C.navy }}>{data.totals.total_answered.toLocaleString()}</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 14, color: C.t3 }}>/</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"'Barlow Condensed', sans-serif\", fontSize: 22, fontWeight: 800, color: C.t3 }}>{data.totals.total_calls.toLocaleString()}</Typography>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, mb: 1 }}>Total Calls</Typography>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ mt: 1 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, mb: 0.3 }}>Call Duration</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 2 }}>\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\t<Typography sx={{ fontSize: 10, color: C.t3 }}>Highest</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, color: C.blue, fontSize: 13 }}>{data.totals.highest_duration}</Typography>\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>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 10, color: C.t3 }}>Lowest</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, color: C.blue, fontSize: 13 }}>{data.totals.lowest_duration}</Typography>\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</Box>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ mt: 1 }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3, display: \"inline\" }}>Calls &lt; 30 sec: </Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, color: C.blue, display: \"inline\", fontSize: 13 }}>{data.totals.calls_lt_30sec.toLocaleString()}</Typography>\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</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Avg Duration */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Avg Total Calls Duration</Typography></Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ p: 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{ label: \"Inbound\", value: data.totals.avg_inbound_duration },\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Outbound\", value: data.totals.avg_outbound_duration },\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<Box key={label} sx={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", py: 1, borderBottom: `1px solid ${C.b1}`, \"&:last-child\": { borderBottom: \"none\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 12, fontWeight: 600, color: C.t2 }}>{label}</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, fontSize: 16, color: C.blue }}>{value}</Typography>\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\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Inbound Avg Waiting */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Inbound Average Waiting</Typography></Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ p: 1.5, display: \"grid\", gridTemplateColumns: \"1fr 1fr 1fr\", gap: 1, mt: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t{[\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Waiting Time\", value: data.waiting.avg_wait_time },\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Language Selection\", value: data.waiting.avg_lang_selection },\r\n\t\t\t\t\t\t\t\t\t\t{ label: \"Queue Waiting\", value: data.waiting.avg_queue_wait },\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<Box key={label} sx={{ textAlign: \"center\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 10, fontWeight: 600, color: C.t3, mb: 0.5 }}>{label}</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ ...monoSx, fontSize: 18, color: C.blue }}>{value}</Typography>\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\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* CHT Table */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}><Typography sx={labelSx}>Average CHT</Typography></Box>\r\n\t\t\t\t\t\t\t\t<TableContainer>\r\n\t\t\t\t\t\t\t\t\t<Table size=\"small\">\r\n\t\t\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Call Type</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Call Handling Time</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Talk Duration</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Hold Duration</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t\t\t{data.cht.length === 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow><TableCell colSpan={4} sx={{ textAlign: \"center\", py: 2, color: C.t3, fontSize: 12 }}>No data</TableCell></TableRow>\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{data.cht.map((row) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow key={row.call_type} hover>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontWeight: 600, color: C.t2 }}>{row.call_type}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, color: C.blue }}>{row.call_handling_time}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, color: C.blue }}>{row.talk_duration}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, color: C.blue }}>{row.hold_duration}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</TableRow>\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</TableBody>\r\n\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t{/* ═══ ROW 3 — Chart + Repeated Calls ═══ */}\r\n\t\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", lg: \"1fr 1fr\" }, gap: 1.2 }}>\r\n\r\n\t\t\t\t\t\t\t{/* Hourly Chart */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={{ ...cardHeader, flexWrap: \"wrap\", gap: 1 }}>\r\n\t\t\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={labelSx}>Avg Hour Wise Inbound Calls vs Agents</Typography>\r\n\t\t\t\t\t\t\t\t\t\t<Stack direction=\"row\" spacing={1.5} sx={{ mt: 0.5 }}>\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{ color: \"#f6a623\", label: \"Answered\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ color: \"#90a4c0\", label: \"Abandoned\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ color: \"#4a5568\", label: \"Agents\" },\r\n\t\t\t\t\t\t\t\t\t\t\t].map(({ color, label }) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box key={label} sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box sx={{ width: 12, height: 12, borderRadius: \"2px\", background: color }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: 11, color: C.t3 }}>{label}</Typography>\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))}\r\n\t\t\t\t\t\t\t\t\t\t</Stack>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", flexDirection: \"column\", alignItems: \"flex-end\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t<RadioGroup row value={chartDir} onChange={(e) => setChartDir(e.target.value as \"inbound\" | \"outbound\")}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ \"& .MuiFormControlLabel-root\": { mr: 0.5 }, \"& .MuiFormControlLabel-label\": { fontSize: 12 } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<FormControlLabel value=\"inbound\" control={<Radio size=\"small\" />} label=\"Inbound\" />\r\n\t\t\t\t\t\t\t\t\t\t\t<FormControlLabel value=\"outbound\" control={<Radio size=\"small\" />} label=\"Outbound\" />\r\n\t\t\t\t\t\t\t\t\t\t</RadioGroup>\r\n\t\t\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\t\t\tonClick={downloadChart}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ fontSize: 11, color: \"#3182ce\", cursor: \"pointer\", border: \"1px solid #bee3f8\", borderRadius: \"4px\", px: 1, py: 0.3 }}\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⬇ DOWNLOAD\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\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\t<Box ref={chartRef} sx={{ p: 1.5, height: 260 }}>\r\n\t\t\t\t\t\t\t\t\t<ResponsiveContainer width=\"100%\" height=\"100%\">\r\n\t\t\t\t\t\t\t\t\t\t<ComposedChart data={hourlyData} margin={{ top: 4, right: 30, left: -20, bottom: 0 }} barGap={1}>\r\n\t\t\t\t\t\t\t\t\t\t\t<CartesianGrid strokeDasharray=\"3 3\" stroke={C.b2} vertical={false} />\r\n\t\t\t\t\t\t\t\t\t\t\t<XAxis dataKey=\"hour\" tick={{ fontSize: 9, fill: C.t3 }} interval={1} />\r\n\t\t\t\t\t\t\t\t\t\t\t<YAxis yAxisId=\"left\" tick={{ fontSize: 9, fill: C.t3 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t<YAxis yAxisId=\"right\" orientation=\"right\" tick={{ fontSize: 9, fill: C.t3 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t<RTooltip\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontentStyle={{ fontSize: 11, borderRadius: 6, border: `1px solid ${C.b2}` }}\r\n\t\t\t\t\t\t\t\t\t\t\t\tformatter={(v, n: string) => [v, n.charAt(0).toUpperCase() + n.slice(1)]}\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<Bar yAxisId=\"left\" dataKey=\"answered\" fill=\"#f6a623\" radius={[2, 2, 0, 0]} maxBarSize={14} />\r\n\t\t\t\t\t\t\t\t\t\t\t<Bar yAxisId=\"left\" dataKey=\"abandoned\" fill=\"#90a4c0\" radius={[2, 2, 0, 0]} maxBarSize={14} />\r\n\t\t\t\t\t\t\t\t\t\t\t<Line yAxisId=\"right\" type=\"monotone\" dataKey=\"agents\" stroke=\"#4a5568\" strokeWidth={1.5} dot={{ r: 2, fill: \"#4a5568\" }} />\r\n\t\t\t\t\t\t\t\t\t\t</ComposedChart>\r\n\t\t\t\t\t\t\t\t\t</ResponsiveContainer>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Repeated Calls Table */}\r\n\t\t\t\t\t\t\t<Paper sx={cardPaper}>\r\n\t\t\t\t\t\t\t\t<Box sx={cardHeader}>\r\n\t\t\t\t\t\t\t\t\t<Typography sx={labelSx}>Repeated Calls</Typography>\r\n\t\t\t\t\t\t\t\t\t<Chip label={data.repeated_calls.length} size=\"small\" sx={{ background: C.rlt, color: C.red, fontWeight: 700, fontSize: 11 }} />\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<Box sx={{ px: 1.5, py: 1 }}>\r\n\t\t\t\t\t\t\t\t\t<TextField\r\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\tplaceholder=\"Search…\"\r\n\t\t\t\t\t\t\t\t\t\tvalue={repeatedSearch}\r\n\t\t\t\t\t\t\t\t\t\tonChange={(e) => setRepeatedSearch(e.target.value)}\r\n\t\t\t\t\t\t\t\t\t\tfullWidth\r\n\t\t\t\t\t\t\t\t\t\tslotProps={{ input: { startAdornment: <InputAdornment position=\"start\"><SearchIcon sx={{ fontSize: 16, color: C.t3 }} /></InputAdornment> } }}\r\n\t\t\t\t\t\t\t\t\t\tsx={{ \"& .MuiInputBase-root\": { fontSize: 12 } }}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t<TableContainer sx={{ maxHeight: 260, overflow: \"auto\" }}>\r\n\t\t\t\t\t\t\t\t\t<Table size=\"small\" stickyHeader>\r\n\t\t\t\t\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t\t\t\t\t<TableRow>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Phone Number</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Date</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>No of Calls</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Latest Status</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Latest Call Type</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={headSx}>Comments</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t\t\t\t\t{filteredRepeated.length === 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow><TableCell colSpan={6} sx={{ textAlign: \"center\", py: 2, color: C.t3, fontSize: 12 }}>No repeated calls</TableCell></TableRow>\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{filteredRepeated.map((r) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<TableRow key={`${r.phone_number}-${r.date}`} hover>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, ...monoSx, fontSize: 11 }}>{r.phone_number}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11 }}>{r.date}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontWeight: 700, color: C.navy, fontSize: 13 }}>{r.call_count}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11, fontWeight: 600, color: statusColor(r.latest_status) }}>{r.latest_status}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11 }}>{r.latest_call_type}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...cellSx, fontSize: 11, color: C.t3 }}>{r.comments}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</TableRow>\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</TableBody>\r\n\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t</TableContainer>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Box>\r\n\t\t</LocalizationProvider>\r\n\t);\r\n}\r\n\r\nconst ManagementDashboard: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<ManagementDashboardContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default ManagementDashboard;\r\n","import axiosInstance from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type { MgmtDashboardParams, MgmtDashboardResponse } from \"./types\";\r\n\r\nfunction buildQs(params: MgmtDashboardParams): string {\r\n\tconst qs = new URLSearchParams();\r\n\tif (params.start_date) qs.append(\"start_date\", params.start_date);\r\n\tif (params.end_date) qs.append(\"end_date\", params.end_date);\r\n\tif (params.agent_id != null) qs.append(\"agent_id\", String(params.agent_id));\r\n\tconst str = qs.toString();\r\n\treturn str ? `?${str}` : \"\";\r\n}\r\n\r\nexport async function getManagementDashboard(params: MgmtDashboardParams): Promise<MgmtDashboardResponse> {\r\n\tconst res = await axiosInstance.get<MgmtDashboardResponse>(\r\n\t\t`${END_POINT.MANAGEMENT_DASHBOARD}${buildQs(params)}`,\r\n\t);\r\n\treturn res.data;\r\n}\r\n"],"mappings":"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","names":["dayjs"]}
@@ -1,6 +1,16 @@
1
+ import * as __ext_react from "react";
2
+ import * as __ext_react_dom from "react-dom";
3
+ import * as __ext_react_jsx from "react/jsx-runtime";
4
+ var __cjsExternals = { "react": __ext_react, "react-dom": __ext_react_dom, "react/jsx-runtime": __ext_react_jsx };
5
+ var require = function (id) {
6
+ var mod = __cjsExternals[id];
7
+ if (mod) return mod.default || mod;
8
+ throw new Error('Dynamic require of "' + id + '" is not supported');
9
+ };
10
+
1
11
  import {
2
12
  Box_default
3
- } from "./chunk-Q6G3MPS7.mjs";
13
+ } from "./chunk-ERSNXW5X.mjs";
4
14
 
5
15
  // call-control-sdk/lib/pages/qualityAuditDashboard/index.tsx
6
16
  import { jsx } from "react/jsx-runtime";
@@ -64,4 +74,4 @@ function QualityAuditDashboardPage() {
64
74
  export {
65
75
  QualityAuditDashboardPage as default
66
76
  };
67
- //# sourceMappingURL=qualityAuditDashboard-ENGQN2WQ.mjs.map
77
+ //# sourceMappingURL=qualityAuditDashboard-FHRGB77R.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../call-control-sdk/lib/pages/qualityAuditDashboard/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nconst htmlContent = `<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <title>Quality Audit Dashboard</title>\r\n <style>\r\n * { margin: 0; padding: 0; box-sizing: border-box; }\r\n html, body { width: 100%; height: 100%; overflow: hidden; background: #fff; }\r\n #viz-wrapper {\r\n width: 100vw;\r\n height: 100vh;\r\n overflow: hidden;\r\n position: relative;\r\n }\r\n #viz1780590363108 {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 1500px;\r\n height: 927px;\r\n transform-origin: top left;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n<div id=\"viz-wrapper\">\r\n <div class='tableauPlaceholder' id='viz1780590363108' style='position: absolute'><noscript><a href='#'><img alt='Dashboard Updated ' src='https://public.tableau.com/static/images/Qu/QualityAudit/DashboardUpdated_1/1_rss.png' style='border: none' /></a></noscript><object class='tableauViz' style='display:none;'><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='site_root' value='' /><param name='name' value='QualityAudit/DashboardUpdated_1' /><param name='tabs' value='no' /><param name='toolbar' value='yes' /><param name='static_image' value='https://public.tableau.com/static/images/Qu/QualityAudit/DashboardUpdated_1/1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /><param name='language' value='en-US' /><param name='filter' value='publish=yes' /></object></div>\r\n</div>\r\n<script type='text/javascript'>\r\n var divElement = document.getElementById('viz1780590363108');\r\n var vizElement = divElement.getElementsByTagName('object')[0];\r\n vizElement.style.width = '1500px';\r\n vizElement.style.height = '927px';\r\n var scriptElement = document.createElement('script');\r\n scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';\r\n vizElement.parentNode.insertBefore(scriptElement, vizElement);\r\n\r\n function scaleViz() {\r\n var scaleX = window.innerWidth / 1500;\r\n var scaleY = window.innerHeight / 927;\r\n var scale = Math.min(scaleX, scaleY);\r\n divElement.style.transform = 'scale(' + scale + ')';\r\n }\r\n scaleViz();\r\n window.addEventListener('resize', scaleViz);\r\n</script>\r\n</body>\r\n</html>`;\r\n\r\nexport default function QualityAuditDashboardPage() {\r\n\treturn (\r\n\t\t<Box sx={{ width: \"100%\", height: \"calc(100vh - 64px)\", overflow: \"hidden\" }}>\r\n\t\t\t<iframe\r\n\t\t\t\tsrcDoc={htmlContent}\r\n\t\t\t\ttitle=\"Quality Audit Dashboard\"\r\n\t\t\t\tstyle={{ width: \"100%\", height: \"100%\", border: \"none\", display: \"block\" }}\r\n\t\t\t/>\r\n\t\t</Box>\r\n\t);\r\n}\r\n"],"mappings":";;;;;AAsDG;AAnDH,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDL,SAAR,4BAA6C;AACnD,SACC,oBAAC,eAAI,IAAI,EAAE,OAAO,QAAQ,QAAQ,sBAAsB,UAAU,SAAS,GAC1E;AAAA,IAAC;AAAA;AAAA,MACA,QAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ;AAAA;AAAA,EAC1E,GACD;AAEF;","names":[]}
1
+ {"version":3,"sources":["../call-control-sdk/lib/pages/qualityAuditDashboard/index.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { Box } from \"@mui/material\";\r\n\r\nconst htmlContent = `<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <title>Quality Audit Dashboard</title>\r\n <style>\r\n * { margin: 0; padding: 0; box-sizing: border-box; }\r\n html, body { width: 100%; height: 100%; overflow: hidden; background: #fff; }\r\n #viz-wrapper {\r\n width: 100vw;\r\n height: 100vh;\r\n overflow: hidden;\r\n position: relative;\r\n }\r\n #viz1780590363108 {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 1500px;\r\n height: 927px;\r\n transform-origin: top left;\r\n }\r\n </style>\r\n</head>\r\n<body>\r\n<div id=\"viz-wrapper\">\r\n <div class='tableauPlaceholder' id='viz1780590363108' style='position: absolute'><noscript><a href='#'><img alt='Dashboard Updated ' src='https://public.tableau.com/static/images/Qu/QualityAudit/DashboardUpdated_1/1_rss.png' style='border: none' /></a></noscript><object class='tableauViz' style='display:none;'><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='site_root' value='' /><param name='name' value='QualityAudit/DashboardUpdated_1' /><param name='tabs' value='no' /><param name='toolbar' value='yes' /><param name='static_image' value='https://public.tableau.com/static/images/Qu/QualityAudit/DashboardUpdated_1/1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /><param name='language' value='en-US' /><param name='filter' value='publish=yes' /></object></div>\r\n</div>\r\n<script type='text/javascript'>\r\n var divElement = document.getElementById('viz1780590363108');\r\n var vizElement = divElement.getElementsByTagName('object')[0];\r\n vizElement.style.width = '1500px';\r\n vizElement.style.height = '927px';\r\n var scriptElement = document.createElement('script');\r\n scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';\r\n vizElement.parentNode.insertBefore(scriptElement, vizElement);\r\n\r\n function scaleViz() {\r\n var scaleX = window.innerWidth / 1500;\r\n var scaleY = window.innerHeight / 927;\r\n var scale = Math.min(scaleX, scaleY);\r\n divElement.style.transform = 'scale(' + scale + ')';\r\n }\r\n scaleViz();\r\n window.addEventListener('resize', scaleViz);\r\n</script>\r\n</body>\r\n</html>`;\r\n\r\nexport default function QualityAuditDashboardPage() {\r\n\treturn (\r\n\t\t<Box sx={{ width: \"100%\", height: \"calc(100vh - 64px)\", overflow: \"hidden\" }}>\r\n\t\t\t<iframe\r\n\t\t\t\tsrcDoc={htmlContent}\r\n\t\t\t\ttitle=\"Quality Audit Dashboard\"\r\n\t\t\t\tstyle={{ width: \"100%\", height: \"100%\", border: \"none\", display: \"block\" }}\r\n\t\t\t/>\r\n\t\t</Box>\r\n\t);\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;AAsDG;AAnDH,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgDL,SAAR,4BAA6C;AACnD,SACC,oBAAC,eAAI,IAAI,EAAE,OAAO,QAAQ,QAAQ,sBAAsB,UAAU,SAAS,GAC1E;AAAA,IAAC;AAAA;AAAA,MACA,QAAQ;AAAA,MACR,OAAM;AAAA,MACN,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ;AAAA;AAAA,EAC1E,GACD;AAEF;","names":[]}
@@ -0,0 +1,23 @@
1
+ import * as __ext_react from "react";
2
+ import * as __ext_react_dom from "react-dom";
3
+ import * as __ext_react_jsx from "react/jsx-runtime";
4
+ var __cjsExternals = { "react": __ext_react, "react-dom": __ext_react_dom, "react/jsx-runtime": __ext_react_jsx };
5
+ var require = function (id) {
6
+ var mod = __cjsExternals[id];
7
+ if (mod) return mod.default || mod;
8
+ throw new Error('Dynamic require of "' + id + '" is not supported');
9
+ };
10
+
11
+ import {
12
+ agentDetailReport_default
13
+ } from "./chunk-MD472UKG.mjs";
14
+ import "./chunk-KRXHK4AU.mjs";
15
+ import "./chunk-LX6I32Y4.mjs";
16
+ import "./chunk-UTSRABCL.mjs";
17
+ import "./chunk-4YF4IDV6.mjs";
18
+ import "./chunk-F7G2XFRU.mjs";
19
+ import "./chunk-S4J35V4B.mjs";
20
+ export {
21
+ agentDetailReport_default as default
22
+ };
23
+ //# sourceMappingURL=agentDetailReport-PDKQKJNL.mjs.map