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/campaigns/index.tsx","../node_modules/@mui/icons-material/Add.mjs","../node_modules/@mui/icons-material/Archive.mjs","../node_modules/@mui/icons-material/ChevronLeft.mjs","../node_modules/@mui/icons-material/ChevronRight.mjs","../node_modules/@mui/icons-material/Delete.mjs","../node_modules/@mui/icons-material/Edit.mjs","../node_modules/@mui/icons-material/Settings.mjs","../node_modules/@mui/icons-material/UploadFile.mjs","../node_modules/@mui/icons-material/VisibilityOutlined.mjs","../call-control-sdk/lib/components/SDKButton.tsx","../call-control-sdk/lib/pages/campaigns/useCampaigns.ts","../node_modules/@mui/icons-material/Clear.mjs","../call-control-sdk/lib/pages/campaigns/types.ts","../call-control-sdk/lib/pages/campaigns/styles.ts"],"sourcesContent":["import React, { memo, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport {\r\n\tBox,\r\n\tChip,\r\n\tCircularProgress,\r\n\tFormControl,\r\n\tFormControlLabel,\r\n\tCheckbox,\r\n\tIconButton,\r\n\tInputAdornment,\r\n\tMenuItem,\r\n\tOutlinedInput,\r\n\tPaper,\r\n\tSelect,\r\n\tTab,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTableHead,\r\n\tTablePagination,\r\n\tTableRow,\r\n\tTabs,\r\n\tTextField,\r\n\tTooltip,\r\n\tTypography,\r\n\tuseTheme,\r\n} from \"@mui/material\";\r\nimport AddIcon from \"@mui/icons-material/Add\";\r\nimport ArchiveIcon from \"@mui/icons-material/Archive\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport DownloadIcon from \"@mui/icons-material/Download\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport PauseIcon from \"@mui/icons-material/Pause\";\r\nimport PhoneIcon from \"@mui/icons-material/Phone\";\r\nimport PlayArrowIcon from \"@mui/icons-material/PlayArrow\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport SettingsIcon from \"@mui/icons-material/Settings\";\r\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\r\nimport VisibilityOutlinedIcon from \"@mui/icons-material/VisibilityOutlined\";\r\n\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\r\nimport { SDKButton } from \"../../components/SDKButton\";\r\nimport { SDKPermissionGuard } from \"../../components/SDKPermissionGuard\";\r\nimport { SDK_PERMISSIONS } from \"../../permissions/sdk-constants\";\r\nimport { useToast } from \"../../services/toastMessage\";\r\nimport { useSDKPermissions } from \"../../hooks/useSDKPermissions\";\r\nimport { useGetCallerData } from \"../../hooks/useGetCallerData\";\r\nimport { useCampaigns, useLeads, useQueues } from \"./useCampaigns\";\r\nimport { getRecordingByCall } from \"../cdrReport/useCdrReport\";\r\nimport DateRangePicker from \"../common/components/DateRangePicker\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport ClearIcon from \"@mui/icons-material/Clear\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type {\r\n\tCampaign,\r\n\tCampaignCreatePayload,\r\n\tCreateQueuePayload,\r\n\tLead,\r\n\tLeadCallData,\r\n\tLeadCreatePayload,\r\n\tQueue,\r\n\tQueueLinkPayload,\r\n} from \"./types\";\r\nimport {\r\n\tAGENT_TYPES,\r\n\tCAMPAIGN_TYPES,\r\n\tDAYS_OF_WEEK,\r\n\tdefaultFormData,\r\n\tDIALING_MODES_MAP,\r\n\tLEAD_PRIORITY_OPTIONS,\r\n\tLEAD_STATUSES,\r\n} from \"./types\";\r\nimport {\r\n\tlabelSx,\r\n\tsectionTitleSx,\r\n\theadCellSx,\r\n\tbodyCellSx,\r\n\ttableRowSx,\r\n\tinputSx,\r\n\tcampaignCardBaseSx,\r\n\tcampaignCardSelectedSx,\r\n\tdialogHeaderSx,\r\n\tdialogFooterSx,\r\n\tstatusChipSx,\r\n\tleadStatusChipSx,\r\n\tleadPriorityChipSx,\r\n\tdaychipSx,\r\n\tSTATUS_COLORS,\r\n} from \"./styles\";\r\n\r\n// ──── Helpers ─────────────────────────────────────────────────────────────────\r\n\r\nfunction validatePhone(raw: string): string | null {\r\n\tconst trimmed = (raw || \"\").trim();\r\n\tif (!trimmed) return \"Phone number is required\";\r\n\tconst digits = trimmed.startsWith(\"+91\")\r\n\t\t? trimmed.slice(3)\r\n\t\t: trimmed.startsWith(\"91\") && trimmed.length === 12\r\n\t\t\t? trimmed.slice(2)\r\n\t\t\t: trimmed;\r\n\tif (!/^\\d{10}$/.test(digits)) return \"Must be 10 digits, 91+10, or +91+10\";\r\n\treturn null;\r\n}\r\n\r\nfunction campaignToFormData(c: Campaign): CampaignCreatePayload {\r\n\treturn {\r\n\t\tname: c.name || \"\",\r\n\t\tdescription: c.description || \"\",\r\n\t\tcampaignType: (c.campaignType || \"OUTBOUND_CAMPAIGN\").toUpperCase(),\r\n\t\tdialingMode: (c.dialingMode || \"PREVIEW\").toUpperCase(),\r\n\t\tmaxConcurrentCalls: c.maxConcurrentCalls ?? 5,\r\n\t\tcallsPerAgent: c.callsPerAgent ?? 1,\r\n\t\tstartTime: c.startTime ? c.startTime.slice(0, 5) : \"09:00\",\r\n\t\tendTime: c.endTime ? c.endTime.slice(0, 5) : \"17:00\",\r\n\t\tdaysOfWeek: c.daysOfWeek || [1, 2, 3, 4, 5],\r\n\t\ttimezone: c.timezone || \"Asia/Kolkata\",\r\n\t\tscheduledStart: c.scheduledStart || \"\",\r\n\t\tscheduledEnd: c.scheduledEnd || \"\",\r\n\t\tmaxAttempts: c.maxAttempts ?? 3,\r\n\t\tretryIntervalMinutes: c.retryIntervalMinutes ?? 15,\r\n\t\tcallerId: c.callerId || \"\",\r\n\t\tringTimeoutSeconds: c.ringTimeoutSeconds ?? 30,\r\n\t\tanswerTimeoutSeconds: c.answerTimeoutSeconds ?? 30,\r\n\t\tagentType: c.agentType || \"HUMAN\",\r\n\t\taiBotId: null,\r\n\t\tpriority: c.priority ?? 5,\r\n\t\tsettings: c.settings || {},\r\n\t\tqueueLinks: (c.campaignQueues || []).map((q) => ({\r\n\t\t\tqueueId: q.queueId,\r\n\t\t\tpriorityOverride: q.priorityOverride ?? 1,\r\n\t\t\tminWaitBeforeCallback: q.minWaitBeforeCallback ?? 0,\r\n\t\t})),\r\n\t};\r\n}\r\n\r\n// ──── Dialog tab sub-components ───────────────────────────────────────────────\r\n\r\ntype TabFormProps = {\r\n\tformData: CampaignCreatePayload;\r\n\tsetFormData: React.Dispatch<React.SetStateAction<CampaignCreatePayload>>;\r\n};\r\n\r\nfunction BasicInfoTab({ formData, setFormData, isEditMode }: TabFormProps & { isEditMode: boolean }) {\r\n\tconst handleChange = (field: keyof CampaignCreatePayload, value: any) => {\r\n\t\tsetFormData((prev) => {\r\n\t\t\tconst updated = { ...prev, [field]: value };\r\n\t\t\tif (field === \"campaignType\") {\r\n\t\t\t\tupdated.dialingMode = DIALING_MODES_MAP[value as string]?.[0] || \"\";\r\n\t\t\t}\r\n\t\t\treturn updated;\r\n\t\t});\r\n\t};\r\n\r\n\tconst mappedModes = DIALING_MODES_MAP[formData.campaignType] || [];\r\n\tconst availableModes = formData.dialingMode && !mappedModes.includes(formData.dialingMode)\r\n\t\t? [formData.dialingMode, ...mappedModes]\r\n\t\t: mappedModes;\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Basic Info</Typography>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1.5fr 1fr\", lg: \"1.5fr 1fr 1fr\" }, gap: 2, mb: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Campaign Name <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" value={formData.name}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"name\", e.target.value)} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Campaign Type <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.campaignType}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"campaignType\", e.target.value)}\r\n\t\t\t\t\t\t\tdisabled={isEditMode}>\r\n\t\t\t\t\t\t\t{CAMPAIGN_TYPES.map((t) => <MenuItem key={t} value={t}>{t}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ mb: 2 }}>\r\n\t\t\t\t<Typography sx={labelSx}>Description</Typography>\r\n\t\t\t\t<TextField fullWidth size=\"small\" multiline rows={3} value={formData.description}\r\n\t\t\t\t\tonChange={(e) => handleChange(\"description\", e.target.value)} sx={inputSx} />\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Dialing Mode <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.dialingMode}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"dialingMode\", e.target.value)}>\r\n\t\t\t\t\t\t\t{availableModes.map((m) => <MenuItem key={m} value={m}>{m}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Priority</Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.priority ?? 5}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"priority\", Number(e.target.value))}>\r\n\t\t\t\t\t\t\t{LEAD_PRIORITY_OPTIONS.map((o) => <MenuItem key={o.label} value={o.value}>{o.label}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\nfunction DialingConfigTab({ formData, setFormData }: TabFormProps) {\r\n\tconst handleChange = (field: keyof CampaignCreatePayload, value: any) =>\r\n\t\tsetFormData((prev) => ({ ...prev, [field]: value }));\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Dialing Configuration</Typography>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Max Concurrent Calls <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.maxConcurrentCalls}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"maxConcurrentCalls\", parseInt(e.target.value) || 1)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Calls Per Agent</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.callsPerAgent}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"callsPerAgent\", parseFloat(e.target.value) || 1)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 0.1, step: 0.1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Ring Timeout (sec)</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.ringTimeoutSeconds}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"ringTimeoutSeconds\", parseInt(e.target.value) || 30)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 5 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Answer Timeout (sec)</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.answerTimeoutSeconds}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"answerTimeoutSeconds\", parseInt(e.target.value) || 0)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 0 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Max Attempts <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.maxAttempts || \"\"}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"maxAttempts\", parseInt(e.target.value) || 0)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Retry Interval (min)</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.retryIntervalMinutes}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"retryIntervalMinutes\", parseInt(e.target.value) || 5)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Agent Type</Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.agentType}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"agentType\", e.target.value)}>\r\n\t\t\t\t\t\t\t{AGENT_TYPES.map((t) => <MenuItem key={t} value={t}>{t}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\nfunction ScheduleTab({ formData, setFormData }: TabFormProps) {\r\n\tconst handleChange = (field: keyof CampaignCreatePayload, value: any) =>\r\n\t\tsetFormData((prev) => ({ ...prev, [field]: value }));\r\n\r\n\tconst toggleDay = (day: number) =>\r\n\t\tsetFormData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tdaysOfWeek: prev.daysOfWeek.includes(day)\r\n\t\t\t\t? prev.daysOfWeek.filter((d) => d !== day)\r\n\t\t\t\t: [...prev.daysOfWeek, day].sort(),\r\n\t\t}));\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Operating Schedule</Typography>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2, mb: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Start Time <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"time\" value={formData.startTime}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"startTime\", e.target.value)} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>End Time <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"time\" value={formData.endTime}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"endTime\", e.target.value)} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ mb: 2 }}>\r\n\t\t\t\t<Typography sx={labelSx}>Timezone</Typography>\r\n\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t<Select value={formData.timezone} onChange={(e) => handleChange(\"timezone\", e.target.value)}>\r\n\t\t\t\t\t\t{[\"Etc/UTC\",\"US/Eastern\",\"US/Central\",\"US/Mountain\",\"US/Pacific\",\r\n\t\t\t\t\t\t \"Europe/London\",\"Europe/Berlin\",\"Asia/Kolkata\",\"Asia/Tokyo\",\"Australia/Sydney\"\r\n\t\t\t\t\t\t].map((tz) => <MenuItem key={tz} value={tz}>{tz}</MenuItem>)}\r\n\t\t\t\t\t</Select>\r\n\t\t\t\t</FormControl>\r\n\t\t\t</Box>\r\n\t\t\t<Box>\r\n\t\t\t\t<Typography sx={labelSx}>Days of Week</Typography>\r\n\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\", mt: 0.5 }}>\r\n\t\t\t\t\t{DAYS_OF_WEEK.map((day) => (\r\n\t\t\t\t\t\t<Chip\r\n\t\t\t\t\t\t\tkey={day.value}\r\n\t\t\t\t\t\t\tlabel={day.label}\r\n\t\t\t\t\t\t\tonClick={() => toggleDay(day.value)}\r\n\t\t\t\t\t\t\tvariant={formData.daysOfWeek.includes(day.value) ? \"filled\" : \"outlined\"}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tsx={daychipSx(formData.daysOfWeek.includes(day.value))}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Queue Linking Tab ───────────────────────────────────────────────────────\r\n\r\nfunction QueueLinkingTab({\r\n\tformData, setFormData, editingCampaign, parentQueueNameMap, onQueuesRefreshed,\r\n}: TabFormProps & {\r\n\teditingCampaign: Campaign | null;\r\n\tparentQueueNameMap: Record<number, string>;\r\n\tonQueuesRefreshed?: (queues: Queue[]) => void;\r\n}) {\r\n\tconst { showToast } = useToast();\r\n\tconst { fetchQueues, createQueue } = useQueues();\r\n\r\n\tconst queueLinks = formData.queueLinks || [];\r\n\tconst isEditMode = !!editingCampaign;\r\n\tconst campaignQueues = editingCampaign?.campaignQueues || [];\r\n\r\n\tconst [allQueues, setAllQueues] = useState<Queue[]>([]);\r\n\tconst [queueNames, setQueueNames] = useState<Record<number, string>>({});\r\n\tconst [selectedQueueIds, setSelectedQueueIds] = useState<number[]>([]);\r\n\tconst [createOpen, setCreateOpen] = useState(false);\r\n\tconst [newQueue, setNewQueue] = useState<CreateQueuePayload>({ name: \"\", description: \"\" });\r\n\tconst [creatingQueue, setCreatingQueue] = useState(false);\r\n\r\n\tconst loadQueues = useCallback(async () => {\r\n\t\tconst list = await fetchQueues();\r\n\t\tsetAllQueues(list);\r\n\t\tconst map: Record<number, string> = {};\r\n\t\tlist.forEach((q) => { map[q.id] = q.name; });\r\n\t\tsetQueueNames(map);\r\n\t\tonQueuesRefreshed?.(list);\r\n\t}, [fetchQueues, onQueuesRefreshed]);\r\n\r\n\tuseEffect(() => { loadQueues(); }, [loadQueues]);\r\n\r\n\tconst handleCreateQueue = async () => {\r\n\t\tif (!newQueue.name.trim()) {\r\n\t\t\tshowToast(\"Queue name is required\", \"warning\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetCreatingQueue(true);\r\n\t\ttry {\r\n\t\t\tawait createQueue(newQueue);\r\n\t\t\tshowToast(\"Queue created successfully\", \"success\");\r\n\t\t\tsetCreateOpen(false);\r\n\t\t\tsetNewQueue({ name: \"\", description: \"\" });\r\n\t\t\tloadQueues();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to create queue\", \"error\");\r\n\t\t} finally {\r\n\t\t\tsetCreatingQueue(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst linkedIds = new Set(\r\n\t\tisEditMode ? campaignQueues.map((q) => q.queueId) : queueLinks.map((q) => q.queueId),\r\n\t);\r\n\tconst availableQueues = allQueues.filter((q) => !linkedIds.has(q.id));\r\n\r\n\tconst handleAddQueues = () => {\r\n\t\tif (selectedQueueIds.length === 0) return;\r\n\t\tconst newLinks: QueueLinkPayload[] = selectedQueueIds.map((qId) => ({\r\n\t\t\tqueueId: qId, priorityOverride: 5, minWaitBeforeCallback: 0,\r\n\t\t}));\r\n\t\tsetFormData((prev) => ({ ...prev, queueLinks: [...(prev.queueLinks || []), ...newLinks] }));\r\n\t\tshowToast(`${selectedQueueIds.length} queue(s) added`, \"success\");\r\n\t\tsetSelectedQueueIds([]);\r\n\t};\r\n\r\n\tconst handleRemoveQueue = (queueId: number) => {\r\n\t\tsetFormData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tqueueLinks: (prev.queueLinks || []).filter((q) => q.queueId !== queueId),\r\n\t\t}));\r\n\t\tshowToast(\"Queue removed\", \"success\");\r\n\t};\r\n\r\n\tconst handleCellUpdate = (queueId: number, field: keyof QueueLinkPayload, value: string) => {\r\n\t\tconst numVal = parseInt(value) || 0;\r\n\t\tsetFormData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tqueueLinks: (prev.queueLinks || []).map((q) =>\r\n\t\t\t\tq.queueId === queueId ? { ...q, [field]: numVal } : q,\r\n\t\t\t),\r\n\t\t}));\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t{/* Inline Create Queue dialog */}\r\n\t\t\t{createOpen && (\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tposition: \"fixed\", inset: 0, zIndex: 1600,\r\n\t\t\t\t\t\tbackgroundColor: \"rgba(0,0,0,0.45)\",\r\n\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Paper elevation={6} sx={{ width: { xs: \"90vw\", sm: 420 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Create New Queue</Typography>\r\n\t\t\t\t\t\t\t<IconButton size=\"small\" onClick={() => !creatingQueue && setCreateOpen(false)} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box sx={{ p: 2.5, display: \"flex\", flexDirection: \"column\", gap: 1.5 }}>\r\n\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t<Typography sx={labelSx}>Queue Name <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={newQueue.name}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => setNewQueue({ ...newQueue, name: e.target.value })} sx={inputSx} />\r\n\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\t<Typography sx={labelSx}>Description</Typography>\r\n\t\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" multiline rows={3} value={newQueue.description}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => setNewQueue({ ...newQueue, description: e.target.value })} sx={inputSx} />\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\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={() => setCreateOpen(false)} disabled={creatingQueue}>Cancel</SDKButton>\r\n\t\t\t\t\t\t\t<SDKButton onClick={handleCreateQueue} disabled={creatingQueue}\r\n\t\t\t\t\t\t\t\tstartIcon={creatingQueue ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\t\t\tCreate\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Paper>\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\r\n\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", mb: 2 }}>\r\n\t\t\t\t<Typography sx={sectionTitleSx}>Linked Queues</Typography>\r\n\t\t\t\t<SDKButton startIcon={<AddIcon />} onClick={() => setCreateOpen(true)}>\r\n\t\t\t\t\tCreate New Queue\r\n\t\t\t\t</SDKButton>\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* Add Queue — multi-select */}\r\n\t\t\t<Box sx={{\r\n\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\talignItems: { xs: \"stretch\", sm: \"center\" },\r\n\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\tgap: 1.5, mb: 2,\r\n\t\t\t}}>\r\n\t\t\t\t<FormControl size=\"small\" sx={{ flex: 2 }}>\r\n\t\t\t\t\t<Select\r\n\t\t\t\t\t\tmultiple\r\n\t\t\t\t\t\tvalue={selectedQueueIds}\r\n\t\t\t\t\t\tonChange={(e) => setSelectedQueueIds(e.target.value as number[])}\r\n\t\t\t\t\t\tdisplayEmpty\r\n\t\t\t\t\t\trenderValue={(selected) =>\r\n\t\t\t\t\t\t\t(selected as number[]).length === 0\r\n\t\t\t\t\t\t\t\t? <Typography sx={{ color: \"#999\", fontSize: \"0.85rem\" }}>Select queues to link</Typography>\r\n\t\t\t\t\t\t\t\t: (\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t{(selected as number[]).map((id) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Chip key={id} size=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={queueNames[id] || parentQueueNameMap[id] || `Queue #${id}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ height: 22, fontSize: \"0.75rem\", fontWeight: 600, backgroundColor: \"#e0f2f1\", color: \"#00695c\" }} />\r\n\t\t\t\t\t\t\t\t\t\t))}\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}\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tborderRadius: \"8px\", fontSize: \"0.85rem\",\r\n\t\t\t\t\t\t\t\"& .MuiSelect-select\": { display: \"flex\", flexWrap: \"wrap\", gap: 0.5, py: 0.75 },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tMenuProps={{\r\n\t\t\t\t\t\t\tPaperProps: { sx: { maxHeight: 250, borderRadius: \"8px\", mt: 0.5, boxShadow: \"0 4px 20px rgba(0,0,0,0.12)\" } },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{availableQueues.length === 0\r\n\t\t\t\t\t\t\t? <MenuItem value=\"\" disabled>No available queues</MenuItem>\r\n\t\t\t\t\t\t\t: availableQueues.map((q) => (\r\n\t\t\t\t\t\t\t\t<MenuItem key={q.id} value={q.id} sx={{ py: 0.75, px: 1.5, fontSize: \"0.85rem\" }}>\r\n\t\t\t\t\t\t\t\t\t<Checkbox size=\"small\" checked={selectedQueueIds.includes(q.id)}\r\n\t\t\t\t\t\t\t\t\t\tsx={{ p: 0.5, mr: 1, color: \"#1A5F6C\", \"&.Mui-checked\": { color: \"#1A5F6C\" } }} />\r\n\t\t\t\t\t\t\t\t\t{q.name} (ID: {q.id})\r\n\t\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Select>\r\n\t\t\t\t</FormControl>\r\n\t\t\t\t<SDKButton onClick={handleAddQueues} disabled={selectedQueueIds.length === 0} sx={{ whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\tAdd To List\r\n\t\t\t\t</SDKButton>\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* Linked queues table */}\r\n\t\t\t{queueLinks.length === 0 ? (\r\n\t\t\t\t<Paper variant=\"outlined\" sx={{ p: 3, textAlign: \"center\", borderRadius: 2, borderStyle: \"dashed\" }}>\r\n\t\t\t\t\t<Typography sx={{ color: \"#999\", fontSize: \"0.9rem\" }}>\r\n\t\t\t\t\t\tNo queues linked yet. Select queues above to add.\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t</Paper>\r\n\t\t\t) : (\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ borderRadius: 2, overflow: \"visible\" }}>\r\n\t\t\t\t\t<Table size=\"small\">\r\n\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t<TableRow sx={{ backgroundColor: \"#f1f1f1\" }}>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Queue Name</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Priority Override</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Min Wait Before Callback</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={{ ...(headCellSx as any), textAlign: \"right\" }}>Action</TableCell>\r\n\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t{queueLinks.map((q) => (\r\n\t\t\t\t\t\t\t\t<TableRow key={q.queueId} sx={tableRowSx}>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t{queueNames[q.queueId] || parentQueueNameMap[q.queueId] || `Queue #${q.queueId}`}\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t<FormControl size=\"small\" sx={{ width: 120 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Select\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={q.priorityOverride ?? 5}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => handleCellUpdate(q.queueId, \"priorityOverride\", String(e.target.value))}\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{LEAD_PRIORITY_OPTIONS.map((opt) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem key={opt.label} value={opt.value}>{opt.label}</MenuItem>\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</Select>\r\n\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t<TextField size=\"small\" type=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={q.minWaitBeforeCallback}\r\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => handleCellUpdate(q.queueId, \"minWaitBeforeCallback\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\t\t\tslotProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\thtmlInput: { min: 0, style: { fontSize: \"0.85rem\", padding: \"4px 8px\" } },\r\n\t\t\t\t\t\t\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", color: \"#666\" }}>s</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</InputAdornment>\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},\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\tsx={{ width: 100, \"& .MuiOutlinedInput-root\": { borderRadius: \"4px\" } }} />\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...(bodyCellSx as any), textAlign: \"right\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<SDKButton variant=\"danger\" size=\"small\" onClick={() => handleRemoveQueue(q.queueId)}>\r\n\t\t\t\t\t\t\t\t\t\t\tRemove\r\n\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t</TableContainer>\r\n\t\t\t)}\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Leads Tab (inside dialog) ───────────────────────────────────────────────\r\n\r\nfunction LeadsTabInDialog({\r\n\teditingCampaign,\r\n\tonLeadsChange,\r\n}: {\r\n\teditingCampaign: Campaign | null;\r\n\tonLeadsChange?: () => void;\r\n}) {\r\n\tconst { showToast } = useToast();\r\n\tconst showVoicemail = editingCampaign?.campaignType === \"AFTER_HOURS_CALLBACK\";\r\n\tconst { leads, fetchLeads, createLead, uploadLeadsExcel, downloadLeadTemplate } = useLeads();\r\n\tconst [adding, setAdding] = useState(false);\r\n\tconst [leadForm, setLeadForm] = useState<LeadCreatePayload>({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\tconst [search, setSearch] = useState(\"\");\r\n\tconst [uploadFile, setUploadFile] = useState<File | null>(null);\r\n\tconst [uploading, setUploading] = useState(false);\r\n\tconst uploadRef = useRef<HTMLInputElement>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (editingCampaign) fetchLeads(editingCampaign.id, { page: 1, pageSize: 100 });\r\n\t}, [editingCampaign, fetchLeads]);\r\n\r\n\tif (!editingCampaign) {\r\n\t\treturn (\r\n\t\t\t<Box sx={{ p: 4, textAlign: \"center\" }}>\r\n\t\t\t\t<Typography sx={{ color: \"#999\", fontSize: \"0.9rem\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\tSave the campaign first, then you can add leads.\r\n\t\t\t\t</Typography>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\tconst handleAddLead = async () => {\r\n\t\tconst err = validatePhone(leadForm.phoneNumber);\r\n\t\tif (err) { showToast(err, \"warning\"); return; }\r\n\t\tsetAdding(true);\r\n\t\ttry {\r\n\t\t\tawait createLead(editingCampaign.id, { ...leadForm, priority: leadForm.priority ?? 5 });\r\n\t\t\tshowToast(\"Lead added successfully\", \"success\");\r\n\t\t\tsetLeadForm({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\t\t\tfetchLeads(editingCampaign.id, { page: 1, pageSize: 100 });\r\n\t\t\tonLeadsChange?.();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to add lead\", \"error\");\r\n\t\t} finally { setAdding(false); }\r\n\t};\r\n\r\n\tconst handleUpload = async () => {\r\n\t\tif (!uploadFile) return;\r\n\t\tsetUploading(true);\r\n\t\ttry {\r\n\t\t\tawait uploadLeadsExcel(editingCampaign.id, uploadFile);\r\n\t\t\tshowToast(\"Leads uploaded successfully\", \"success\");\r\n\t\t\tsetUploadFile(null);\r\n\t\t\tif (uploadRef.current) uploadRef.current.value = \"\";\r\n\t\t\tfetchLeads(editingCampaign.id, { page: 1, pageSize: 100 });\r\n\t\t\tonLeadsChange?.();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to upload leads\", \"error\");\r\n\t\t} finally { setUploading(false); }\r\n\t};\r\n\r\n\tconst handleDownload = async () => {\r\n\t\ttry { await downloadLeadTemplate(editingCampaign.id); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Download failed\", \"error\"); }\r\n\t};\r\n\r\n\tconst filtered = leads.filter((l) =>\r\n\t\t!search || l.callerName?.toLowerCase().includes(search.toLowerCase()) || l.phoneNumber?.includes(search),\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Add Lead Manually</Typography>\r\n\t\t\t<Paper variant=\"outlined\" sx={{ p: 2, mb: 2.5, borderRadius: 2 }}>\r\n\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2, mb: 2 }}>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Phone Number <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" placeholder=\"+1234567890\" value={leadForm.phoneNumber}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, phoneNumber: e.target.value.replace(/[^0-9+\\-() ]/g, \"\") }))}\r\n\t\t\t\t\t\t\terror={!!leadForm.phoneNumber && !!validatePhone(leadForm.phoneNumber)}\r\n\t\t\t\t\t\t\thelperText={leadForm.phoneNumber ? validatePhone(leadForm.phoneNumber) || \"\" : \"\"}\r\n\t\t\t\t\t\t\tsx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Caller Name</Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={leadForm.callerName || \"\"}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, callerName: e.target.value }))} sx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Source</Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={leadForm.source || \"\"}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, source: e.target.value }))} sx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Priority</Typography>\r\n\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t\t<Select value={leadForm.priority ?? 5}\r\n\t\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, priority: Number(e.target.value) }))}>\r\n\t\t\t\t\t\t\t\t{LEAD_PRIORITY_OPTIONS.map((opt) => <MenuItem key={opt.label} value={opt.value}>{opt.label}</MenuItem>)}\r\n\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box sx={{ gridColumn: \"1 / -1\" }}>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Notes</Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" multiline minRows={2} maxRows={8}\r\n\t\t\t\t\t\t\tvalue={leadForm.notes || \"\"}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, notes: e.target.value }))} sx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"flex-end\" }}>\r\n\t\t\t\t\t<SDKButton onClick={handleAddLead} disabled={adding}\r\n\t\t\t\t\t\tstartIcon={adding ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tAdd Lead\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\r\n\t\t\t<Typography sx={sectionTitleSx}>Upload Leads from File</Typography>\r\n\t\t\t<Paper variant=\"outlined\" sx={{ p: 2, mb: 2.5, borderRadius: 2 }}>\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<UploadFileIcon />} onClick={() => uploadRef.current?.click()}>\r\n\t\t\t\t\t\tChoose File\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t<input ref={uploadRef} type=\"file\" accept=\".csv,.xlsx,.xls\" hidden\r\n\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\tconst f = e.target.files?.[0];\r\n\t\t\t\t\t\t\tif (!f) return;\r\n\t\t\t\t\t\t\tif (![\".csv\", \".xlsx\", \".xls\"].some((ext) => f.name.toLowerCase().endsWith(ext))) {\r\n\t\t\t\t\t\t\t\tshowToast(\"Please select a CSV or Excel file\", \"warning\"); return;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsetUploadFile(f);\r\n\t\t\t\t\t\t}} />\r\n\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", color: \"#666\", flex: 1, fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t{uploadFile ? uploadFile.name : \"No file chosen\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t{uploadFile && (\r\n\t\t\t\t\t\t<SDKButton variant=\"cancel\" size=\"small\"\r\n\t\t\t\t\t\t\tonClick={() => { setUploadFile(null); if (uploadRef.current) uploadRef.current.value = \"\"; }}>\r\n\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<DownloadIcon />} onClick={handleDownload}>\r\n\t\t\t\t\t\tSample Template\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"flex-end\", mt: 1.5 }}>\r\n\t\t\t\t\t<SDKButton onClick={handleUpload} disabled={uploading || !uploadFile}\r\n\t\t\t\t\t\tstartIcon={uploading ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tUpload\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\r\n\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", mb: 1.5 }}>\r\n\t\t\t\t<Typography sx={sectionTitleSx}>Leads ({leads.length})</Typography>\r\n\t\t\t\t<OutlinedInput size=\"small\" value={search} onChange={(e) => setSearch(e.target.value)} placeholder=\"Search...\"\r\n\t\t\t\t\tsx={{ width: 200, fontSize: \"0.85rem\", height: 34, borderRadius: \"20px\" }}\r\n\t\t\t\t\tstartAdornment={<InputAdornment position=\"start\"><SearchIcon sx={{ fontSize: 16, color: \"#aaa\" }} /></InputAdornment>} />\r\n\t\t\t</Box>\r\n\t\t\t{filtered.length === 0 ? (\r\n\t\t\t\t<Paper variant=\"outlined\" sx={{ p: 3, textAlign: \"center\", borderRadius: 2, borderStyle: \"dashed\" }}>\r\n\t\t\t\t\t<Typography sx={{ color: \"#999\", fontSize: \"0.9rem\" }}>\r\n\t\t\t\t\t\t{leads.length === 0 ? \"No leads yet.\" : \"No leads match your search.\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t</Paper>\r\n\t\t\t) : (\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ borderRadius: 2, overflow: \"visible\" }}>\r\n\t\t\t\t\t<Table size=\"small\">\r\n\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t<TableRow sx={{ backgroundColor: \"#f1f1f1\" }}>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Phone Number</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Status</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Source</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Attempts</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Last Outcome</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Notes</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Outcome</TableCell>{showVoicemail && <TableCell sx={headCellSx}>Voice Mail</TableCell>}\r\n\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t{filtered.map((lead) => (\r\n\t\t\t\t\t\t\t\t<TableRow key={lead.id} sx={tableRowSx}>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.phoneNumber}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t<Chip label={lead.status || \"pending\"} size=\"small\" sx={leadStatusChipSx(lead.status)} />\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.source || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.attemptCount ?? 0}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastOutcome || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...(bodyCellSx as any), maxWidth: 200, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t{lead.notes ? <Tooltip title={lead.notes} arrow placement=\"top\"><span>{lead.notes}</span></Tooltip> : \"\"}\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastReason || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t{showVoicemail && <TableCell sx={{ ...bodyCellSx, minWidth: 180 }}>{lead.originalCallId ? <CallRecording callUuid={lead.originalCallId} recordingPath={lead.voicemail} iconOnly /> : \"\"}</TableCell>}\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t</TableContainer>\r\n\t\t\t)}\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Campaign Create / Edit Dialog ───────────────────────────────────────────\r\n\r\ninterface CampaignDialogProps {\r\n\topen: boolean;\r\n\teditingCampaign: Campaign | null;\r\n\tformData: CampaignCreatePayload;\r\n\tsetFormData: React.Dispatch<React.SetStateAction<CampaignCreatePayload>>;\r\n\tsaving: boolean;\r\n\tonSave: () => void;\r\n\tonClose: () => void;\r\n\tparentQueueNameMap: Record<number, string>;\r\n\tonQueuesRefreshed?: (queues: Queue[]) => void;\r\n\tonLeadsChange?: () => void;\r\n}\r\n\r\nconst CampaignDialog = memo(function CampaignDialog({\r\n\topen, editingCampaign, formData, setFormData, saving, onSave, onClose,\r\n\tparentQueueNameMap, onQueuesRefreshed, onLeadsChange,\r\n}: CampaignDialogProps) {\r\n\tconst { showToast } = useToast();\r\n\tconst [tab, setTab] = useState(0);\r\n\tuseEffect(() => { if (open) setTab(0); }, [open]);\r\n\tif (!open) return null;\r\n\r\n\tconst TAB_LABELS = [\"Basic Info\", \"Dialing Configuration\", \"Schedule & Operating Hours\", \"Queue Linking\", \"Leads\"];\r\n\tconst lastSaveTab = 3; // Save shows from tab 0..3 inclusive; Leads (4) is read-only management\r\n\tconst leadsTabDisabled = !editingCampaign;\r\n\r\n\t// In edit mode, keep the Update button disabled until the form actually changes.\r\n\tconst isDirty = !editingCampaign\r\n\t\t|| JSON.stringify(formData) !== JSON.stringify(campaignToFormData(editingCampaign));\r\n\r\n\tconst validateTab = (t: number): boolean => {\r\n\t\tif (t === 0) {\r\n\t\t\tif (!formData.name.trim()) { showToast(\"Please fill Campaign Name\", \"warning\"); return false; }\r\n\t\t\tif (!formData.campaignType) { showToast(\"Please fill Campaign Type\", \"warning\"); return false; }\r\n\t\t\tif (!formData.dialingMode) { showToast(\"Please fill Dialing Mode\", \"warning\"); return false; }\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\tif (!formData.maxConcurrentCalls) { showToast(\"Please fill Max Concurrent Calls\", \"warning\"); return false; }\r\n\t\t\tif (!formData.maxAttempts) { showToast(\"Please fill Max Attempts\", \"warning\"); return false; }\r\n\t\t}\r\n\t\tif (t === 2) {\r\n\t\t\tif (!formData.startTime) { showToast(\"Please fill Start Time\", \"warning\"); return false; }\r\n\t\t\tif (!formData.endTime) { showToast(\"Please fill End Time\", \"warning\"); return false; }\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\tconst handleTabChange = (newTab: number) => {\r\n\t\tif (newTab === 4 && leadsTabDisabled) return;\r\n\t\tif (newTab > tab && !validateTab(tab)) return;\r\n\t\tsetTab(newTab);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tposition: \"fixed\", inset: 0, zIndex: 1300,\r\n\t\t\t\tbackgroundColor: \"rgba(0,0,0,0.45)\",\r\n\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t}}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper\r\n\t\t\t\televation={6}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\twidth: { xs: \"95vw\", sm: 720, md: 880 },\r\n\t\t\t\t\tmaxHeight: \"92vh\",\r\n\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\tboxShadow: \"0 8px 32px rgba(26,95,108,0.18)\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{/* Header */}\r\n\t\t\t\t<Box sx={{\r\n\t\t\t\t\t...dialogHeaderSx,\r\n\t\t\t\t\tbackgroundColor: \"#1A5F6C\",\r\n\t\t\t\t\tcolor: \"#fff\",\r\n\t\t\t\t\t\"& .MuiIconButton-root\": { color: \"#fff\" },\r\n\t\t\t\t}}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">\r\n\t\t\t\t\t\t{editingCampaign ? \"Edit Campaign\" : \"Create Campaign\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{/* Tabs */}\r\n\t\t\t\t<Tabs\r\n\t\t\t\t\tvalue={tab}\r\n\t\t\t\t\tonChange={(_, v) => handleTabChange(v)}\r\n\t\t\t\t\tvariant=\"scrollable\"\r\n\t\t\t\t\tscrollButtons=\"auto\"\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tborderBottom: \"1px solid #eee\",\r\n\t\t\t\t\t\tminHeight: 44,\r\n\t\t\t\t\t\t\"& .MuiTab-root\": {\r\n\t\t\t\t\t\t\tfontSize: \"0.85rem\",\r\n\t\t\t\t\t\t\tminHeight: 44,\r\n\t\t\t\t\t\t\ttextTransform: \"none\",\r\n\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"& .Mui-selected\": { color: \"#1A5F6C\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tTabIndicatorProps={{ style: { height: 3, backgroundColor: \"#1A5F6C\", borderRadius: \"3px 3px 0 0\" } }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{TAB_LABELS.map((label, i) => (\r\n\t\t\t\t\t\t<Tab key={label} label={label} value={i} disabled={i === 4 && leadsTabDisabled} />\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Tabs>\r\n\r\n\t\t\t\t{/* Tab content */}\r\n\t\t\t\t<Box sx={{ flex: 1, overflowY: \"auto\", minHeight: 380 }}>\r\n\t\t\t\t\t{tab === 0 && <BasicInfoTab formData={formData} setFormData={setFormData} isEditMode={!!editingCampaign} />}\r\n\t\t\t\t\t{tab === 1 && <DialingConfigTab formData={formData} setFormData={setFormData} />}\r\n\t\t\t\t\t{tab === 2 && <ScheduleTab formData={formData} setFormData={setFormData} />}\r\n\t\t\t\t\t{tab === 3 && (\r\n\t\t\t\t\t\t<QueueLinkingTab\r\n\t\t\t\t\t\t\tformData={formData}\r\n\t\t\t\t\t\t\tsetFormData={setFormData}\r\n\t\t\t\t\t\t\teditingCampaign={editingCampaign}\r\n\t\t\t\t\t\t\tparentQueueNameMap={parentQueueNameMap}\r\n\t\t\t\t\t\t\tonQueuesRefreshed={onQueuesRefreshed}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{tab === 4 && (\r\n\t\t\t\t\t\t<LeadsTabInDialog\r\n\t\t\t\t\t\t\teditingCampaign={editingCampaign}\r\n\t\t\t\t\t\t\tonLeadsChange={onLeadsChange}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{/* Footer — wizard nav */}\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t{tab > 0 && (\r\n\t\t\t\t\t\t<SDKButton variant=\"outlined\" onClick={() => setTab((t) => t - 1)}>Back</SDKButton>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{tab < lastSaveTab && (\r\n\t\t\t\t\t\t<SDKButton onClick={() => handleTabChange(tab + 1)}>Next</SDKButton>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{tab === lastSaveTab && (\r\n\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\teditingCampaign\r\n\t\t\t\t\t\t\t\t\t? SDK_PERMISSIONS.CAMPAIGNS_UPDATE\r\n\t\t\t\t\t\t\t\t\t: SDK_PERMISSIONS.CAMPAIGNS_CREATE,\r\n\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\tshowFallback={false}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<SDKButton onClick={onSave} disabled={saving || !isDirty}\r\n\t\t\t\t\t\t\t\tstartIcon={saving ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\t\t\t{editingCampaign ? \"Update\" : \"Create\"}\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ──── Add Lead Dialog ─────────────────────────────────────────────────────────\r\n\r\ninterface AddLeadDialogProps {\r\n\topen: boolean;\r\n\tdata: LeadCreatePayload;\r\n\tonChange: (data: LeadCreatePayload) => void;\r\n\tsaving: boolean;\r\n\tonSave: () => void;\r\n\tonClose: () => void;\r\n}\r\n\r\nconst AddLeadDialog = memo(function AddLeadDialog({\r\n\topen, data, onChange, saving, onSave, onClose,\r\n}: AddLeadDialogProps) {\r\n\tif (!open) return null;\r\n\tconst phoneError = data.phoneNumber ? validatePhone(data.phoneNumber) : null;\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tposition: \"fixed\", inset: 0, zIndex: 1400,\r\n\t\t\t\tbackgroundColor: \"rgba(0,0,0,0.45)\",\r\n\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t}}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"95vw\", sm: 560, lg: 720 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Add Lead</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2 }}>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Phone Number <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" placeholder=\"+1234567890\"\r\n\t\t\t\t\t\t\t\tvalue={data.phoneNumber}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, phoneNumber: e.target.value.replace(/[^0-9+\\-() ]/g, \"\") })}\r\n\t\t\t\t\t\t\t\terror={!!phoneError} helperText={phoneError || \"\"} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Caller Name</Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={data.callerName || \"\"}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, callerName: e.target.value })} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Source</Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={data.source || \"\"}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, source: e.target.value })} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Priority</Typography>\r\n\t\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t\t\t<Select value={data.priority ?? 5}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, priority: Number(e.target.value) })}>\r\n\t\t\t\t\t\t\t\t\t{LEAD_PRIORITY_OPTIONS.map((o) => <MenuItem key={o.label} value={o.value}>{o.label}</MenuItem>)}\r\n\t\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box sx={{ gridColumn: \"1 / -1\" }}>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Notes</Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" multiline minRows={2} maxRows={8}\r\n\t\t\t\t\t\t\t\tvalue={data.notes || \"\"}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, notes: e.target.value })} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t<SDKButton onClick={onSave} disabled={saving}\r\n\t\t\t\t\t\tstartIcon={saving ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tAdd Lead\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ──── Confirm Dialog ──────────────────────────────────────────────────────────\r\n\r\nfunction ConfirmDialog({\r\n\topen, title, message, loading, onConfirm, onClose,\r\n}: { open: boolean; title: string; message: string; loading?: boolean; onConfirm: () => void; onClose: () => void; }) {\r\n\tif (!open) return null;\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{ position: \"fixed\", inset: 0, zIndex: 1500, backgroundColor: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"90vw\", sm: 400 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(0,0,0,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, borderBottom: \"none\", pb: 0 }}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">{title}</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ px: 2.5, py: 1.5 }}>\r\n\t\t\t\t\t<Typography fontSize=\"0.85rem\" color=\"#555\" fontFamily=\"poppins, Arial, sans-serif\">{message}</Typography>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t<SDKButton variant=\"danger\" onClick={onConfirm} disabled={loading}\r\n\t\t\t\t\t\tstartIcon={loading ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tConfirm\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Call Recording player ───────────────────────────────────────────────────\r\n\r\nconst fmtRecordingDuration = (s: number): string => {\r\n\tif (!isFinite(s) || s < 0) return \"\";\r\n\tconst m = Math.floor(s / 60);\r\n\tconst sec = Math.floor(s % 60);\r\n\treturn `${m}:${sec.toString().padStart(2, \"0\")}`;\r\n};\r\n\r\n/* Coordinates playback so only one recording is open at a time. */\r\nconst activePlayers = new Set<(activeId: string) => void>();\r\nconst notifyPlay = (activeId: string) => {\r\n\tactivePlayers.forEach((fn) => fn(activeId));\r\n};\r\n\r\nfunction CallRecording({ callUuid, recordingPath, iconOnly = false }: { callUuid: string; recordingPath: string | null; iconOnly?: boolean }) {\r\n\tconst [audioUrl, setAudioUrl] = useState<string | null>(null);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [error, setError] = useState(false);\r\n\tconst [durationSec, setDurationSec] = useState<number | null>(null);\r\n\tconst [currentSec, setCurrentSec] = useState(0);\r\n\tconst unavailable = !recordingPath;\r\n\tconst totalLabel = durationSec != null ? fmtRecordingDuration(durationSec) : \"\";\r\n\r\n\tconst closePlayer = useCallback(() => {\r\n\t\tsetAudioUrl((prev) => {\r\n\t\t\tif (prev && prev.startsWith(\"blob:\")) URL.revokeObjectURL(prev);\r\n\t\t\treturn null;\r\n\t\t});\r\n\t\tsetCurrentSec(0);\r\n\t\tsetDurationSec(null);\r\n\t}, []);\r\n\r\n\t// Close this player whenever another recording starts playing.\r\n\tuseEffect(() => {\r\n\t\tconst onPlay = (activeId: string) => {\r\n\t\t\tif (activeId !== callUuid) closePlayer();\r\n\t\t};\r\n\t\tactivePlayers.add(onPlay);\r\n\t\treturn () => {\r\n\t\t\tactivePlayers.delete(onPlay);\r\n\t\t};\r\n\t}, [callUuid, closePlayer]);\r\n\r\n\tconst handlePlay = async () => {\r\n\t\tif (audioUrl) return;\r\n\t\tnotifyPlay(callUuid);\r\n\t\ttry {\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(false);\r\n\t\t\tconst blob = await getRecordingByCall(callUuid);\r\n\t\t\tsetAudioUrl(URL.createObjectURL(blob));\r\n\t\t} catch {\r\n\t\t\tsetError(true);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleDownload = async () => {\r\n\t\ttry {\r\n\t\t\tconst blob = audioUrl ? await fetch(audioUrl).then((r) => r.blob()) : await getRecordingByCall(callUuid);\r\n\t\t\tconst url = URL.createObjectURL(blob);\r\n\t\t\tconst a = document.createElement(\"a\");\r\n\t\t\ta.href = url;\r\n\t\t\ta.download = `recording_${callUuid}.wav`;\r\n\t\t\ta.click();\r\n\t\t\tURL.revokeObjectURL(url);\r\n\t\t} catch {\r\n\t\t\t/* ignore */\r\n\t\t}\r\n\t};\r\n\r\n\tif (iconOnly) {\r\n\t\tif (audioUrl) {\r\n\t\t\treturn (\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\r\n\t\t\t\t\t<audio controls autoPlay src={audioUrl}\r\n\t\t\t\t\t\tonLoadedMetadata={(e) => setDurationSec(e.currentTarget.duration)}\r\n\t\t\t\t\t\tonTimeUpdate={(e) => setCurrentSec(e.currentTarget.currentTime)}\r\n\t\t\t\t\t\tonEnded={closePlayer}\r\n\t\t\t\t\t\tstyle={{ height: 32, maxWidth: 170 }} />\r\n\t\t\t\t\t{totalLabel && (\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 12, fontWeight: 600, color: \"#1A5F6C\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t{fmtRecordingDuration(currentSec)} / {totalLabel}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<Tooltip title=\"Download\"><IconButton size=\"small\" onClick={handleDownload} sx={{ color: \"#1565c0\" }}><DownloadIcon sx={{ fontSize: 16 }} /></IconButton></Tooltip>\r\n\t\t\t\t</Box>\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t<Tooltip title={unavailable ? \"No recording available for this call.\" : error ? \"Recording unavailable\" : \"Play voicemail\"}>\r\n\t\t\t\t<span>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={handlePlay} disabled={unavailable || loading || error} sx={{ color: unavailable ? \"#bdbdbd\" : \"#1A5F6C\" }}>\r\n\t\t\t\t\t\t{loading ? <CircularProgress size={16} color=\"inherit\" /> : <PlayArrowIcon sx={{ fontSize: 18 }} />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</span>\r\n\t\t\t</Tooltip>\r\n\t\t);\r\n\t}\r\n\r\n\tif (unavailable) {\r\n\t\treturn <Typography sx={{ fontSize: \"0.82rem\", color: \"#999\" }} fontFamily=\"poppins, Arial, sans-serif\">No recording available for this call.</Typography>;\r\n\t}\r\n\r\n\tif (audioUrl) {\r\n\t\treturn (\r\n\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t<audio controls autoPlay src={audioUrl} onEnded={closePlayer} style={{ height: 38, flex: 1 }} />\r\n\t\t\t\t<Tooltip title=\"Download\"><IconButton size=\"small\" onClick={handleDownload} sx={{ color: \"#1565c0\" }}><DownloadIcon sx={{ fontSize: 18 }} /></IconButton></Tooltip>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t<SDKButton variant=\"outlined\" onClick={handlePlay} disabled={loading || error} startIcon={loading ? <CircularProgress size={16} color=\"inherit\" /> : <PlayArrowIcon sx={{ fontSize: 16 }} />}>\r\n\t\t\t\t{error ? \"Recording unavailable\" : \"Play recording\"}\r\n\t\t\t</SDKButton>\r\n\t\t\t<Tooltip title=\"Download\"><span><IconButton size=\"small\" onClick={handleDownload} disabled={loading || error} sx={{ color: \"#1565c0\" }}><DownloadIcon sx={{ fontSize: 18 }} /></IconButton></span></Tooltip>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Call Data Dialog ───────────────────────────────────────────────────────\r\n\r\nfunction CallDataDialog({\r\n\topen, lead, data, loading, error, onClose,\r\n}: { open: boolean; lead: Lead | null; data: LeadCallData | null; loading: boolean; error: string | null; onClose: () => void; }) {\r\n\tif (!open) return null;\r\n\tconst fmt = (v: string | null) => (v ? new Date(v).toLocaleString() : \"—\");\r\n\r\n\t// Reusable field-card + section-title styles keep every value cell identical.\r\n\tconst fieldCardSx = {\r\n\t\tdisplay: \"flex\", flexDirection: \"column\", gap: 0.25,\r\n\t\tp: 1, borderRadius: \"8px\", backgroundColor: \"#fafafa\", border: \"1px solid #eee\",\r\n\t};\r\n\tconst fieldLabelSx = {\r\n\t\tfontSize: \"0.66rem\", fontWeight: 600, color: \"#888\",\r\n\t\ttextTransform: \"uppercase\" as const, letterSpacing: 0.3,\r\n\t};\r\n\tconst fieldValueSx = {\r\n\t\tfontSize: \"0.82rem\", fontWeight: 600, color: \"#1a1a1a\", wordBreak: \"break-word\" as const,\r\n\t};\r\n\tconst sectionTitle = {\r\n\t\tfontSize: \"0.7rem\", fontWeight: 700, color: \"#1A5F6C\",\r\n\t\ttextTransform: \"uppercase\" as const, letterSpacing: 0.5, mb: 0.75,\r\n\t};\r\n\r\n\tconst fieldCard = (label: string, value: React.ReactNode, full?: boolean) => (\r\n\t\t<Box key={label} sx={{ ...fieldCardSx, ...(full ? { gridColumn: \"1 / -1\" } : {}) }}>\r\n\t\t\t<Typography sx={fieldLabelSx} fontFamily=\"poppins, Arial, sans-serif\">{label}</Typography>\r\n\t\t\t<Typography sx={fieldValueSx} fontFamily=\"poppins, Arial, sans-serif\">{value}</Typography>\r\n\t\t</Box>\r\n\t);\r\n\r\n\tconst overview: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Phone Number\", data.phoneNumber || \"—\"],\r\n\t\t[\"Call Type\", data.callType || \"—\"],\r\n\t\t[\"Call Status\", data.callStatus || \"—\"],\r\n\t\t[\"Disposition\", data.disposition || \"—\"],\r\n\t\t[\"Agent Disposition\", data.agentSelectedDisposition || \"—\"],\r\n\t\t[\"Transferred\", data.wasTransferred ? \"Yes\" : \"No\"],\r\n\t\t[\"Hangup By\", data.hangupInitiator || \"—\"],\r\n\t] : [];\r\n\tconst agentQueue: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Agent\", data.agentName || \"—\"],\r\n\t\t[\"Agent ID\", data.agentUserId || \"—\"],\r\n\t\t[\"Extension\", data.extension || \"—\"],\r\n\t\t[\"Queue\", data.queueName || \"—\"],\r\n\t] : [];\r\n\tconst timing: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Start Time\", fmt(data.callStartTime)],\r\n\t\t[\"Connect Time\", fmt(data.connectTime)],\r\n\t] : [];\r\n\tconst durations: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Talk\", data.talkDurationFmt || \"—\"],\r\n\t\t[\"Ringing\", data.ringingDurationFmt || \"—\"],\r\n\t\t[\"Hold\", data.holdDurationFmt || \"—\"],\r\n\t\t[\"Mute\", data.muteDurationFmt || \"—\"],\r\n\t\t[\"Wrap-up\", data.wrapupDurationFmt || \"—\"],\r\n\t\t[\"Queue\", data.queueDurationFmt || \"—\"],\r\n\t\t[\"IVR\", data.ivrDurationFmt || \"—\"],\r\n\t] : [];\r\n\r\n\tconst twoColGrid = { display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\" }, gap: 1.25 };\r\n\tconst compactGrid = { display: \"grid\", gridTemplateColumns: \"repeat(auto-fill, minmax(96px, 1fr))\", gap: 1.25 };\r\n\r\n\treturn (\r\n\t\t<Box sx={{ position: \"fixed\", inset: 0, zIndex: 1500, backgroundColor: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }} onClick={(e) => e.stopPropagation()}>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"92vw\", sm: 600 }, maxHeight: \"85vh\", display: \"flex\", flexDirection: \"column\", borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Call Details</Typography>\r\n\t\t\t\t\t\t{lead?.phoneNumber ? (\r\n\t\t\t\t\t\t\t<Typography fontSize=\"0.72rem\" sx={{ opacity: 0.85 }} fontFamily=\"poppins, Arial, sans-serif\">Latest call for {lead.phoneNumber}</Typography>\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ px: 2.5, py: 2, overflowY: \"auto\" }}>\r\n\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"center\", py: 4 }}><CircularProgress size={30} /></Box>\r\n\t\t\t\t\t) : error ? (\r\n\t\t\t\t\t\t<Typography fontSize=\"0.85rem\" color=\"#d32f2f\" textAlign=\"center\" sx={{ py: 3 }} fontFamily=\"poppins, Arial, sans-serif\">{error}</Typography>\r\n\t\t\t\t\t) : data ? (\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\r\n\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Call Overview</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={twoColGrid}>{overview.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Agent &amp; Queue</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={twoColGrid}>{agentQueue.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Timing</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={twoColGrid}>{timing.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Durations</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={compactGrid}>{durations.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Remarks</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={{ ...fieldCardSx, minHeight: 44 }}>\r\n\t\t\t\t\t\t\t\t\t<Typography sx={fieldValueSx} fontFamily=\"poppins, Arial, sans-serif\">{data.remarks || \"—\"}</Typography>\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>\r\n\t\t\t\t\t\t\t\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Recording</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={fieldCardSx}>\r\n\t\t\t\t\t\t\t\t\t<CallRecording callUuid={data.callUuid} recordingPath={data.recordingPath} />\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</Box>\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Close</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Import Leads Dialog ─────────────────────────────────────────────────────\r\n\r\nfunction ImportLeadsDialog({\r\n\topen, file, onFileChange, uploading, onUpload, onDownloadTemplate, onClose,\r\n}: {\r\n\topen: boolean;\r\n\tfile: File | null;\r\n\tonFileChange: (f: File | null) => void;\r\n\tuploading: boolean;\r\n\tonUpload: () => void;\r\n\tonDownloadTemplate: () => void;\r\n\tonClose: () => void;\r\n}) {\r\n\tconst fileRef = useRef<HTMLInputElement>(null);\r\n\tif (!open) return null;\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{ position: \"fixed\", inset: 0, zIndex: 1400, backgroundColor: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"90vw\", sm: 460 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Import Leads</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t\t\t<Typography fontSize=\"0.82rem\" color=\"#555\" fontFamily=\"poppins, Arial, sans-serif\" mb={2}>\r\n\t\t\t\t\t\tUpload a CSV or Excel file. Use the template for the correct format.\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5, flexWrap: \"wrap\", mb: 1.5 }}>\r\n\t\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<UploadFileIcon />}\r\n\t\t\t\t\t\t\tonClick={() => fileRef.current?.click()}>\r\n\t\t\t\t\t\t\tChoose File\r\n\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t<input ref={fileRef} type=\"file\" accept=\".csv,.xlsx,.xls\" hidden\r\n\t\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\t\tconst f = e.target.files?.[0];\r\n\t\t\t\t\t\t\t\tif (!f) return;\r\n\t\t\t\t\t\t\t\tif ([\".csv\",\".xlsx\",\".xls\"].some((ext) => f.name.toLowerCase().endsWith(ext))) onFileChange(f);\r\n\t\t\t\t\t\t\t}} />\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", color: \"#666\", flex: 1, fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t{file ? file.name : \"No file chosen\"}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t{file && (\r\n\t\t\t\t\t\t\t<SDKButton variant=\"cancel\" size=\"small\"\r\n\t\t\t\t\t\t\t\tonClick={() => { onFileChange(null); if (fileRef.current) fileRef.current.value = \"\"; }}>\r\n\t\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<DownloadIcon />} onClick={onDownloadTemplate}>\r\n\t\t\t\t\t\tDownload Template\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t<SDKButton onClick={onUpload} disabled={uploading || !file}\r\n\t\t\t\t\t\tstartIcon={uploading ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tUpload\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Main content ────────────────────────────────────────────────────────────\r\n\r\nconst CampaignsContent = memo(function CampaignsContent() {\r\n\tconst theme = useTheme();\r\n\tconst { showToast } = useToast();\r\n\tconst { isBitEnabled } = useSDKPermissions();\r\n\tconst callerData = useGetCallerData();\r\n\tconst isAgentIdle = callerData.status === \"IDLE\";\r\n\tconst hasOutboundPermission = isBitEnabled(\"calls\", SDK_PERMISSIONS.CALL_OUTBOUND);\r\n\r\n\tconst {\r\n\t\tcampaigns, loading,\r\n\t\tfetchCampaigns, getCampaignById,\r\n\t\tcreateCampaign, updateCampaign,\r\n\t\tactivateCampaign, pauseCampaign, archiveCampaign,\r\n\t} = useCampaigns();\r\n\r\n\tconst {\r\n\t\tleads, leadTotal, leadsMeta, loading: leadsLoading,\r\n\t\tfetchLeads, createLead, deleteLead, dialPreview, getLeadCallData,\r\n\t\tuploadLeadsExcel, downloadLeadTemplate, exportLeads,\r\n\t} = useLeads();\r\n\r\n\tconst { fetchQueues } = useQueues();\r\n\r\n\t// Queue name lookup for the leads table\r\n\tconst [queueNameMap, setQueueNameMap] = useState<Record<number, string>>({});\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchQueues().then((qs) => {\r\n\t\t\tconst map: Record<number, string> = {};\r\n\t\t\tqs.forEach((q) => { map[q.id] = q.name; });\r\n\t\t\tsetQueueNameMap(map);\r\n\t\t}).catch(() => { /* ignore */ });\r\n\t}, [fetchQueues]);\r\n\r\n\tconst handleQueuesRefreshed = useCallback((qs: Queue[]) => {\r\n\t\tconst map: Record<number, string> = {};\r\n\t\tqs.forEach((q) => { map[q.id] = q.name; });\r\n\t\tsetQueueNameMap(map);\r\n\t}, []);\r\n\r\n\t// Selection & filter\r\n\tconst [selectedId, setSelectedId] = useState<number | null>(null);\r\n\tconst [showArchived, setShowArchived] = useState(false);\r\n\tconst [campaignListCollapsed, setCampaignListCollapsed] = useState(false);\r\n\r\n\t// Campaign dialog\r\n\tconst [dialogOpen, setDialogOpen] = useState(false);\r\n\tconst [editingCampaign, setEditingCampaign] = useState<Campaign | null>(null);\r\n\tconst [formData, setFormData] = useState<CampaignCreatePayload>(defaultFormData);\r\n\tconst [saving, setSaving] = useState(false);\r\n\r\n\t// Archive confirm\r\n\tconst [archiveOpen, setArchiveOpen] = useState(false);\r\n\tconst [archiveTarget, setArchiveTarget] = useState<Campaign | null>(null);\r\n\tconst [archiving, setArchiving] = useState(false);\r\n\r\n\t// Leads\r\n\tconst [leadPage, setLeadPage] = useState(0);\r\n\tconst [leadRowsPerPage, setLeadRowsPerPage] = useState(10);\r\n\tconst [leadSearch, setLeadSearch] = useState(\"\");\r\n\tconst [debouncedSearch, setDebouncedSearch] = useState(\"\");\r\n\tconst [leadStatusFilter, setLeadStatusFilter] = useState(\"All states\");\r\n\tconst [leadStartDate, setLeadStartDate] = useState<Dayjs | null>(null);\r\n\tconst [leadEndDate, setLeadEndDate] = useState<Dayjs | null>(null);\r\n\tconst debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n\t// Add lead dialog\r\n\tconst [addLeadOpen, setAddLeadOpen] = useState(false);\r\n\tconst [addLeadData, setAddLeadData] = useState<LeadCreatePayload>({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\tconst [addLeadSaving, setAddLeadSaving] = useState(false);\r\n\r\n\t// Import dialog\r\n\tconst [importOpen, setImportOpen] = useState(false);\r\n\tconst [importFile, setImportFile] = useState<File | null>(null);\r\n\tconst [importing, setImporting] = useState(false);\r\n\r\n\t// Delete lead confirm\r\n\tconst [deleteLeadOpen, setDeleteLeadOpen] = useState(false);\r\n\tconst [deleteLeadTarget, setDeleteLeadTarget] = useState<Lead | null>(null);\r\n\tconst [deletingLead, setDeletingLead] = useState(false);\r\n\r\n\t// View call data\r\n\tconst [callDataOpen, setCallDataOpen] = useState(false);\r\n\tconst [callDataLead, setCallDataLead] = useState<Lead | null>(null);\r\n\tconst [callDataLoading, setCallDataLoading] = useState(false);\r\n\tconst [callData, setCallData] = useState<LeadCallData | null>(null);\r\n\tconst [callDataError, setCallDataError] = useState<string | null>(null);\r\n\r\n\tconst handleViewCallData = useCallback(async (lead: Lead) => {\r\n\t\tconst callId = lead.latestCallId;\r\n\t\tif (!callId) return;\r\n\t\tsetCallDataLead(lead);\r\n\t\tsetCallDataOpen(true);\r\n\t\tsetCallData(null);\r\n\t\tsetCallDataError(null);\r\n\t\tsetCallDataLoading(true);\r\n\t\ttry {\r\n\t\t\tconst data = await getLeadCallData(callId);\r\n\t\t\tsetCallData(data);\r\n\t\t} catch (e: any) {\r\n\t\t\tsetCallDataError(e?.response?.data?.message || \"Failed to load call data\");\r\n\t\t} finally {\r\n\t\t\tsetCallDataLoading(false);\r\n\t\t}\r\n\t}, [getLeadCallData]);\r\n\r\n\t// Dial loading\r\n\tconst [dialLoading, setDialLoading] = useState<number | null>(null);\r\n\r\n\tconst selected = campaigns.find((c) => c.id === selectedId) ?? null;\r\n\tconst showVoicemail = selected?.campaignType === \"AFTER_HOURS_CALLBACK\";\r\n\tconst visibleCampaigns = campaigns.filter((c) =>\r\n\t\tshowArchived ? true : c.status?.toLowerCase() !== \"archived\"\r\n\t);\r\n\r\n\t// Switch campaigns: reset leads filters/search/page so they don't carry over\r\n\tconst handleSelectCampaign = useCallback((id: number) => {\r\n\t\tif (id === selectedId) return;\r\n\t\tsetLeadStatusFilter(\"All states\");\r\n\t\tsetLeadSearch(\"\");\r\n\t\tsetDebouncedSearch(\"\");\r\n\t\tsetLeadStartDate(null);\r\n\t\tsetLeadEndDate(null);\r\n\t\tsetLeadPage(0);\r\n\t\tsetSelectedId(id);\r\n\t}, [selectedId]);\r\n\r\n\tuseEffect(() => { fetchCampaigns(); }, [fetchCampaigns]);\r\n\r\n\tuseEffect(() => {\r\n\t\tdebounceRef.current = setTimeout(() => setDebouncedSearch(leadSearch.trim()), 400);\r\n\t\treturn () => { if (debounceRef.current) clearTimeout(debounceRef.current); };\r\n\t}, [leadSearch]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!selectedId) return;\r\n\t\tsetLeadPage(0);\r\n\t\tfetchLeads(selectedId, {\r\n\t\t\tpage: 1, pageSize: leadRowsPerPage,\r\n\t\t\tlead_status: leadStatusFilter !== \"All states\" ? leadStatusFilter : undefined,\r\n\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\tstart_date: leadStartDate ? leadStartDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t\tend_date: leadEndDate ? leadEndDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t});\r\n\t}, [selectedId, leadRowsPerPage, leadStatusFilter, debouncedSearch, leadStartDate, leadEndDate, fetchLeads]);\r\n\r\n\tconst refetchLeads = useCallback((page = leadPage, silent = false) => {\r\n\t\tif (!selectedId) return;\r\n\t\tfetchLeads(selectedId, {\r\n\t\t\tpage: page + 1, pageSize: leadRowsPerPage,\r\n\t\t\tlead_status: leadStatusFilter !== \"All states\" ? leadStatusFilter : undefined,\r\n\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\tstart_date: leadStartDate ? leadStartDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t\tend_date: leadEndDate ? leadEndDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t}, { silent });\r\n\t}, [selectedId, leadPage, leadRowsPerPage, leadStatusFilter, debouncedSearch, leadStartDate, leadEndDate, fetchLeads]);\r\n\r\n\tconst clearLeadDates = () => {\r\n\t\tsetLeadStartDate(null);\r\n\t\tsetLeadEndDate(null);\r\n\t\tsetLeadPage(0);\r\n\t};\r\n\r\n\t// Auto-refresh the leads table every 3 seconds (silent — no loading spinner)\r\n\tuseEffect(() => {\r\n\t\tif (!selectedId) return;\r\n\t\tconst intervalId = setInterval(() => { refetchLeads(leadPage, true); }, 3000);\r\n\t\treturn () => clearInterval(intervalId);\r\n\t}, [selectedId, leadPage, refetchLeads]);\r\n\r\n\t// ── Campaign CRUD ──\r\n\r\n\tconst handleOpenCreate = () => {\r\n\t\tsetEditingCampaign(null);\r\n\t\tsetFormData(defaultFormData);\r\n\t\tsetDialogOpen(true);\r\n\t};\r\n\r\n\tconst handleOpenEdit = async (c: Campaign) => {\r\n\t\tsetEditingCampaign(c);\r\n\t\tsetFormData(campaignToFormData(c));\r\n\t\tsetDialogOpen(true);\r\n\t\ttry {\r\n\t\t\tconst fresh = await getCampaignById(c.id);\r\n\t\t\tsetEditingCampaign(fresh);\r\n\t\t\tsetFormData(campaignToFormData(fresh));\r\n\t\t} catch { /* keep existing */ }\r\n\t};\r\n\r\n\tconst handleSave = async () => {\r\n\t\tif (!formData.name.trim()) { showToast(\"Campaign name is required\", \"warning\"); return; }\r\n\t\tsetSaving(true);\r\n\t\tconst startTime = formData.startTime?.length === 5 ? `${formData.startTime}:00` : formData.startTime;\r\n\t\tconst endTime = formData.endTime?.length === 5 ? `${formData.endTime}:00` : formData.endTime;\r\n\t\t// Date pickers give YYYY-MM-DD; the API expects an ISO datetime.\r\n\t\tconst toIso = (d?: string) => (d ? new Date(d).toISOString() : undefined);\r\n\t\tconst scheduledStart = toIso(formData.scheduledStart);\r\n\t\tconst scheduledEnd = toIso(formData.scheduledEnd);\r\n\t\ttry {\r\n\t\t\tif (editingCampaign) {\r\n\t\t\t\tconst updatePayload: Record<string, any> = { ...formData, startTime, endTime };\r\n\t\t\t\tif (scheduledStart) updatePayload.scheduledStart = scheduledStart; else delete updatePayload.scheduledStart;\r\n\t\t\t\tif (scheduledEnd) updatePayload.scheduledEnd = scheduledEnd; else delete updatePayload.scheduledEnd;\r\n\t\t\t\tawait updateCampaign(editingCampaign.id, updatePayload);\r\n\t\t\t\tshowToast(\"Campaign updated\", \"success\");\r\n\t\t\t} else {\r\n\t\t\t\tconst payload: Record<string, any> = { ...formData, startTime, endTime };\r\n\t\t\t\tif (scheduledStart) payload.scheduledStart = scheduledStart; else delete payload.scheduledStart;\r\n\t\t\t\tif (scheduledEnd) payload.scheduledEnd = scheduledEnd; else delete payload.scheduledEnd;\r\n\t\t\t\tif (!payload.callerId) delete payload.callerId;\r\n\t\t\t\tif (!payload.answerTimeoutSeconds) delete payload.answerTimeoutSeconds;\r\n\t\t\t\tif (payload.aiBotId == null) delete payload.aiBotId;\r\n\t\t\t\tif (!payload.queueLinks?.length) delete payload.queueLinks;\r\n\t\t\t\tif (payload.settings && !Object.keys(payload.settings).length) delete payload.settings;\r\n\t\t\t\tconst created = await createCampaign(payload as CampaignCreatePayload);\r\n\t\t\t\tshowToast(\"Campaign created\", \"success\");\r\n\t\t\t\tsetSelectedId(created.id);\r\n\t\t\t}\r\n\t\t\tsetDialogOpen(false);\r\n\t\t\tfetchCampaigns();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to save campaign\", \"error\");\r\n\t\t} finally { setSaving(false); }\r\n\t};\r\n\r\n\tconst handleStart = async (c: Campaign) => {\r\n\t\ttry { await activateCampaign(c.id); showToast(\"Campaign started\", \"success\"); fetchCampaigns(); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Failed to start\", \"error\"); }\r\n\t};\r\n\r\n\tconst handlePause = async (c: Campaign) => {\r\n\t\ttry { await pauseCampaign(c.id); showToast(\"Campaign paused\", \"success\"); fetchCampaigns(); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Failed to pause\", \"error\"); }\r\n\t};\r\n\r\n\tconst confirmArchive = async () => {\r\n\t\tif (!archiveTarget) return;\r\n\t\tsetArchiving(true);\r\n\t\ttry {\r\n\t\t\tawait archiveCampaign(archiveTarget.id);\r\n\t\t\tshowToast(\"Campaign archived\", \"success\");\r\n\t\t\tsetArchiveOpen(false); setArchiveTarget(null); fetchCampaigns();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to archive\", \"error\");\r\n\t\t} finally { setArchiving(false); }\r\n\t};\r\n\r\n\t// ── Leads ──\r\n\r\n\tconst handleAddLead = async () => {\r\n\t\tif (!selectedId) return;\r\n\t\tconst err = validatePhone(addLeadData.phoneNumber);\r\n\t\tif (err) { showToast(err, \"warning\"); return; }\r\n\t\tsetAddLeadSaving(true);\r\n\t\ttry {\r\n\t\t\tawait createLead(selectedId, addLeadData);\r\n\t\t\tshowToast(\"Lead added\", \"success\");\r\n\t\t\tsetAddLeadOpen(false);\r\n\t\t\tsetAddLeadData({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\t\t\trefetchLeads(0); setLeadPage(0);\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to add lead\", \"error\");\r\n\t\t} finally { setAddLeadSaving(false); }\r\n\t};\r\n\r\n\tconst handleImport = async () => {\r\n\t\tif (!selectedId || !importFile) return;\r\n\t\tsetImporting(true);\r\n\t\ttry {\r\n\t\t\tconst result = await uploadLeadsExcel(selectedId, importFile);\r\n\t\t\tshowToast(result?.message || \"Leads uploaded\", \"success\");\r\n\t\t\tsetImportFile(null); setImportOpen(false);\r\n\t\t\trefetchLeads(0); setLeadPage(0);\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Upload failed\", \"error\");\r\n\t\t} finally { setImporting(false); }\r\n\t};\r\n\r\n\tconst handleExport = async () => {\r\n\t\tif (!selectedId) return;\r\n\t\ttry { await exportLeads(selectedId); showToast(\"Leads exported\", \"success\"); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Export failed\", \"error\"); }\r\n\t};\r\n\r\n\tconst handleDownloadTemplate = async () => {\r\n\t\tif (!selectedId) return;\r\n\t\ttry { await downloadLeadTemplate(selectedId); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Download failed\", \"error\"); }\r\n\t};\r\n\r\n\tconst handleDialPreview = async (leadId: number) => {\r\n\t\tif (!selectedId) return;\r\n\t\tsetDialLoading(leadId);\r\n\t\ttry {\r\n\t\t\tconst res = await dialPreview(selectedId, leadId);\r\n\t\t\tshowToast(res?.message || \"Preview dial initiated\", \"success\");\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Dial failed\", \"error\");\r\n\t\t} finally { setDialLoading(null); }\r\n\t};\r\n\r\n\tconst confirmDeleteLead = async () => {\r\n\t\tif (!selectedId || !deleteLeadTarget) return;\r\n\t\tsetDeletingLead(true);\r\n\t\ttry {\r\n\t\t\tawait deleteLead(selectedId, deleteLeadTarget.id);\r\n\t\t\tshowToast(\"Lead deleted\", \"success\");\r\n\t\t\tsetDeleteLeadOpen(false); setDeleteLeadTarget(null);\r\n\t\t\trefetchLeads(leadPage);\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Delete failed\", \"error\");\r\n\t\t} finally { setDeletingLead(false); }\r\n\t};\r\n\r\n\tconst sc = selected;\r\n\tconst scActive = sc?.status?.toLowerCase() === \"active\";\r\n\tconst scDraft = sc?.status?.toLowerCase() === \"draft\";\r\n\tconst scPaused = sc?.status?.toLowerCase() === \"paused\";\r\n\tconst scArchived = sc?.status?.toLowerCase() === \"archived\";\r\n\r\n\t// ── Render ──\r\n\r\n\treturn (\r\n\t\t<Box sx={{ fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\r\n\t\t\t{/* PAGE HEADER */}\r\n\t\t\t<SDKPageHeader\r\n\t\t\t\ttitle=\"Call Scheduling\"\r\n\t\t\t\tactions={\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t\t\t<SDKButton startIcon={<RefreshIcon />}\r\n\t\t\t\t\t\t\tonClick={() => { fetchCampaigns(); if (selectedId) refetchLeads(); }}>\r\n\t\t\t\t\t\t\tRefresh\r\n\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_CREATE,\r\n\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\tshowFallback={false}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<SDKButton startIcon={<AddIcon />} onClick={handleOpenCreate}>\r\n\t\t\t\t\t\t\t\tNew Campaign\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</SDKPermissionGuard>\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{/* TWO-COLUMN LAYOUT */}\r\n\t\t\t<Box sx={{ display: \"flex\", flexDirection: { xs: \"column\", md: \"row\" }, gap: 1.5, p: 1.5 }}>\r\n\r\n\t\t\t\t{/* LEFT — Campaign list */}\r\n\t\t\t\t<Paper\r\n\t\t\t\t\televation={0}\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\twidth: campaignListCollapsed\r\n\t\t\t\t\t\t\t? { xs: \"100%\", md: 48 }\r\n\t\t\t\t\t\t\t: { xs: \"100%\", md: 280, lg: 320 },\r\n\t\t\t\t\t\tminWidth: campaignListCollapsed\r\n\t\t\t\t\t\t\t? { xs: \"auto\", md: 48 }\r\n\t\t\t\t\t\t\t: { xs: \"auto\", md: 240 },\r\n\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\tmaxHeight: { xs: campaignListCollapsed ? \"auto\" : 260, md: \"calc(100vh - 160px)\" },\r\n\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\tborder: \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\r\n\t\t\t\t\t\ttransition: \"width 0.2s ease, min-width 0.2s ease\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{campaignListCollapsed ? (\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tflexDirection: { xs: \"row\", md: \"column\" },\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tgap: 0.75,\r\n\t\t\t\t\t\t\tp: 0.75,\r\n\t\t\t\t\t\t\theight: \"100%\",\r\n\t\t\t\t\t\t\toverflowY: { xs: \"visible\", md: \"auto\" },\r\n\t\t\t\t\t\t\toverflowX: { xs: \"auto\", md: \"visible\" },\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t<Tooltip title=\"Expand campaigns\" arrow placement=\"right\">\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => setCampaignListCollapsed(false)}\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"#1A5F6C\",\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f0f7f8\",\r\n\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"#e0eff1\" },\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<ChevronRightIcon fontSize=\"small\" />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t{visibleCampaigns.map((c, idx) => {\r\n\t\t\t\t\t\t\t\tconst isSel = c.id === selectedId;\r\n\t\t\t\t\t\t\t\tconst status = (c.status || \"draft\").toLowerCase();\r\n\t\t\t\t\t\t\t\tconst statusColor = STATUS_COLORS[status] ?? \"#9e9e9e\";\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\t\t\t\tkey={c.id}\r\n\t\t\t\t\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\t\t\t\t\tplacement=\"right\"\r\n\t\t\t\t\t\t\t\t\t\ttitle={`${c.name} • ${c.status || \"draft\"}`}\r\n\t\t\t\t\t\t\t\t\t>\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\tonClick={() => handleSelectCampaign(c.id)}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 32,\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: 32,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"8px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\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\tjustifyContent: \"center\",\r\n\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\tflexShrink: 0,\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isSel ? \"#fff\" : \"#fafafa\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"#333\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: 700,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"0.8rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderLeft: `3px solid ${statusColor}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: isSel\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `-3px 0 8px ${statusColor}66`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `-2px 0 4px ${statusColor}33`,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"box-shadow 0.15s ease\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `-3px 0 8px ${statusColor}80`,\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>\r\n\t\t\t\t\t\t\t\t\t\t\t{idx + 1}\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\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) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\r\n\t\t\t\t\t\tpx: 2, py: 1.25, borderBottom: \"1px solid #eee\", backgroundColor: \"#fafafa\", gap: 1,\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5, minWidth: 0 }}>\r\n\t\t\t\t\t\t\t<Tooltip title=\"Minimize\" arrow>\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => setCampaignListCollapsed(true)}\r\n\t\t\t\t\t\t\t\t\tsx={{ p: 0.5, color: \"#666\" }}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<ChevronLeftIcon fontSize=\"small\" />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.95rem\", color: \"#333\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\tCampaigns\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\t\tcontrol={\r\n\t\t\t\t\t\t\t\t<Checkbox size=\"small\" checked={showArchived}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => setShowArchived(e.target.checked)} sx={{ p: 0.5 }} />\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlabel={<Typography sx={{ fontSize: \"0.78rem\", color: \"#666\" }}>Show archived</Typography>}\r\n\t\t\t\t\t\t\tsx={{ mr: 0 }}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box sx={{ flex: 1, overflow: \"auto\", p: 1 }}>\r\n\t\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"center\", py: 4 }}>\r\n\t\t\t\t\t\t\t\t<CircularProgress size={24} sx={{ color: \"#1A5F6C\" }} />\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t) : visibleCampaigns.length === 0 ? (\r\n\t\t\t\t\t\t\t<Typography sx={{ textAlign: \"center\", py: 3, color: \"#999\", fontSize: \"0.85rem\" }}>\r\n\t\t\t\t\t\t\t\tNo campaigns\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\tvisibleCampaigns.map((c) => {\r\n\t\t\t\t\t\t\t\tconst isSel = c.id === selectedId;\r\n\t\t\t\t\t\t\t\tconst wStr = `${c.startTime?.slice(0, 5) || \"09:00\"}–${c.endTime?.slice(0, 5) || \"17:00\"}`;\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\t\t\t\tkey={c.id}\r\n\t\t\t\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleSelectCampaign(c.id)}\r\n\t\t\t\t\t\t\t\t\t\tsx={isSel ? campaignCardSelectedSx : {\r\n\t\t\t\t\t\t\t\t\t\t\t...campaignCardBaseSx,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { borderColor: \"#1A5F6C\", backgroundColor: \"#f5fafb\", boxShadow: \"0 2px 6px rgba(26,95,108,0.1)\" },\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={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 600, fontSize: \"0.88rem\", color: \"#1a1a1a\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{c.name}\r\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t<Chip label={c.status || \"draft\"} size=\"small\" sx={statusChipSx(c.status)} />\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<Typography sx={{ fontSize: \"0.73rem\", color: \"#999\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{c.dialingMode} · TZ: {c.timezone || \"Etc/UTC\"} · {wStr}\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t</Paper>\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</Box>\r\n\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Paper>\r\n\r\n\t\t\t\t{/* RIGHT — Detail + Leads */}\r\n\t\t\t\t<Box sx={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: 1.5, minWidth: 0, overflow: \"hidden\" }}>\r\n\t\t\t\t\t{!sc ? (\r\n\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t\t\t\t\t\tminHeight: 200, border: \"2px dashed #d0d0d0\", backgroundColor: \"#fafafa\",\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<Box sx={{ textAlign: \"center\" }}>\r\n\t\t\t\t\t\t\t\t<SettingsIcon sx={{ fontSize: 40, color: \"#ccc\", mb: 1 }} />\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.95rem\", color: \"#999\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\tSelect a campaign to view details\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Paper>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{/* Campaign detail card */}\r\n\t\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\t\t\t\tp: { xs: 1.5, sm: 2.5 },\r\n\t\t\t\t\t\t\t\t\tborder: \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\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{/* Title + Action buttons */}\r\n\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\", alignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"space-between\", flexWrap: \"wrap\", gap: 1, mb: 2,\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: { xs: \"1rem\", sm: \"1.2rem\" }, color: \"#1a1a1a\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{sc.name}\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<Chip label={sc.status || \"draft\"} size=\"small\" sx={statusChipSx(sc.status)} />\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t{!scArchived && (\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_UPDATE,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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<SDKButton variant=\"outlined\" startIcon={<EditIcon />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleOpenEdit(sc)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tEdit\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t\t\t{(scDraft || scPaused) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_CONTROL,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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\t\t<SDKButton startIcon={<PlayArrowIcon />} onClick={() => handleStart(sc)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ backgroundColor: \"#4caf50\", \"&:hover\": { backgroundColor: \"#388e3c\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tStart\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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{scActive && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_CONTROL,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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\t\t<SDKButton startIcon={<PauseIcon />} onClick={() => handlePause(sc)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ backgroundColor: \"#ff9800\", boxShadow: \"0 2px 8px rgba(255,152,0,0.25)\", \"&:hover\": { backgroundColor: \"#f57c00\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tPause\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_DELETE,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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<SDKButton variant=\"danger\" startIcon={<ArchiveIcon />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => { setArchiveTarget(sc); setArchiveOpen(true); }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tArchive\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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{/* Stats row — matches original 4-card grid with accent left border */}\r\n\t\t\t\t\t\t\t\t{sc.description && (\r\n\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.85rem\", color: \"#666\", mb: 1.5, fontFamily: \"poppins, Arial, sans-serif\", lineHeight: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t{sc.description}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\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\tsx={{\r\n\t\t\t\t\t\t\t\t\t\toverflowX: \"auto\",\r\n\t\t\t\t\t\t\t\t\t\tpb: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { height: 6 },\r\n\t\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-track\": { backgroundColor: \"#f0f0f0\", borderRadius: 3 },\r\n\t\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": {\r\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#c0c0c0\",\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: 3,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"#a0a0a0\" },\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>\r\n\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\tflexWrap: \"nowrap\",\r\n\t\t\t\t\t\t\t\t\t\tgap: 1.5,\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{[\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#1565c0\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Type\", value: sc.campaignType || \"N/A\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Mode\", value: sc.dialingMode || \"N/A\" },\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},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#2e7d32\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Agent\", value: sc.agentType || \"HUMAN\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Dialer\", value: leadsMeta?.isDialerEnabled ? \"Enabled\" : \"Disabled\" },\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},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#c62828\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Priority\", value: leadPriorityChipSx(sc.priority).label },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Max Concurrent\", value: String(sc.maxConcurrentCalls ?? 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},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#283593\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Retry\", value: `${sc.retryIntervalMinutes ?? 15}min / ${sc.maxAttempts ?? 3} attempts` },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Leads\", value: `${sc.totalLeads ?? 0} total / ${sc.completedLeads ?? 0} completed / ${sc.successfulCalls ?? 0} success` },\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},\r\n\t\t\t\t\t\t\t\t\t].map((card, idx) => (\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\tkey={idx}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tgap: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpx: 1.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpy: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#fafafa\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderLeft: `3px solid ${card.accent}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tflex: \"0 0 auto\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: 180,\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>\r\n\t\t\t\t\t\t\t\t\t\t\t{card.fields.map((field) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box key={field.label} sx={{ display: \"flex\", alignItems: \"center\", gap: 0.75 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"poppins, Arial, sans-serif\", fontSize: \"0.72rem\", fontWeight: 600, color: \"#888\", whiteSpace: \"nowrap\", flexShrink: 0 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{field.label}:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"poppins, Arial, sans-serif\", fontSize: \"0.75rem\", fontWeight: 700, color: \"#333\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{field.value}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</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</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\t</Box>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Leads section */}\r\n\t\t\t\t\t\t\t<SDKPermissionGuard permission={SDK_PERMISSIONS.CAMPAIGNS_LEADS_READ} showFallback={false}>\r\n\t\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\t\tborder: \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\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{/* Leads toolbar — matches original layout */}\r\n\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\t\t\t\tgap: 1.25,\r\n\t\t\t\t\t\t\t\t\tpx: { xs: 1.5, sm: 2 },\r\n\t\t\t\t\t\t\t\t\tpy: 1.5,\r\n\t\t\t\t\t\t\t\t\tborderBottom: \"1px solid #eee\",\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: \"#fafafa\",\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{/* Row 1: actions + search + status */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\talignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{/* Left: title + action buttons */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"1rem\", color: \"#1a1a1a\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\tLeads\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<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_LEADS_IMPORT,\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\tshowFallback={false}\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<SDKButton variant=\"outlined\" onClick={() => setImportOpen(true)} disabled={scArchived} startIcon={<UploadFileIcon sx={{ fontSize: 15 }} />} size=\"small\" sx={{ height: 36 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tImport Leads\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_LEADS_CREATE,\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\tshowFallback={false}\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<SDKButton variant=\"primary\" onClick={() => setAddLeadOpen(true)} disabled={scArchived} startIcon={<AddIcon sx={{ fontSize: 15 }} />} size=\"small\" sx={{ height: 36 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tAdd Lead\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t{/* Right: search + status filter */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\", width: { xs: \"100%\", sm: \"auto\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t<OutlinedInput\r\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={leadSearch}\r\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => { setLeadSearch(e.target.value); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Search number...\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ width: { xs: \"100%\", sm: 200 }, fontSize: \"0.85rem\", height: 36, borderRadius: \"20px\" }}\r\n\t\t\t\t\t\t\t\t\t\t\tstartAdornment={<InputAdornment position=\"start\"><SearchIcon sx={{ fontSize: 16, color: \"#aaa\" }} /></InputAdornment>}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t<FormControl size=\"small\" sx={{ minWidth: 130 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Select\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={leadStatusFilter}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => { setLeadStatusFilter(e.target.value); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ height: 36, borderRadius: \"30px\", fontSize: \"0.85rem\" }}\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{LEAD_STATUSES.map((s) => <MenuItem key={s} value={s}>{s}</MenuItem>)}\r\n\t\t\t\t\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t\t{/* Row 2: date filters + export */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 1, flexWrap: \"wrap\" }}>\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\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\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\tgap: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\t\tflexWrap: \"wrap\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tpx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpy: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"30px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: \"1px solid #e0e4ea\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f7f9fb\",\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>\r\n\t\t\t\t\t\t\t\t\t\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<DateRangePicker\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartDate={leadStartDate}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tendDate={leadEndDate}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonStartChange={(v) => { setLeadStartDate(v); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonEndChange={(v) => { setLeadEndDate(v); setLeadPage(0); }}\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</LocalizationProvider>\r\n\t\t\t\t\t\t\t\t\t\t\t{(leadStartDate || leadEndDate) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Clear dates\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton size=\"small\" onClick={clearLeadDates} sx={{ p: 0.5, color: \"#7a8599\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ClearIcon sx={{ fontSize: 16 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\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</Box>\r\n\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_READ,\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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<SDKButton variant=\"primary\" onClick={handleExport} disabled={leadsLoading || leadTotal === 0} startIcon={<DownloadIcon sx={{ fontSize: 15 }} />} size=\"small\" sx={{ height: 36 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tExport Excel\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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\r\n\t\t\t\t\t\t\t\t{/* Horizontal scroll wrapper — thin scrollbar, minWidth so columns don't squish */}\r\n\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\toverflowX: \"auto\",\r\n\t\t\t\t\t\t\t\t\toverflowY: \"visible\",\r\n\t\t\t\t\t\t\t\t\tWebkitOverflowScrolling: \"touch\",\r\n\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { height: 4 },\r\n\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { backgroundColor: \"#ccc\", borderRadius: 2 },\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t<Table size=\"small\" sx={{ minWidth: 980 }}>\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 sx={{ backgroundColor: \"#f1f1f1\" }}>\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\t\t\"Number\", \"Status\", \"Priority\", \"Source\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Call ID\", \"Queue Name\", \"Attempts\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Created At\", \"Last Attempt\", \"Next Attempt\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Last Outcome\", \"Completed At\", \"Notes\", \"Outcome\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...(showVoicemail ? [\"Voice Mail\"] : []),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Actions\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t].map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell key={col} sx={{ ...headCellSx, ...(col === \"Actions\" ? { textAlign: \"center\" } : {}) }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\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</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{leadsLoading ? (\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\t\t<TableCell colSpan={showVoicemail ? 16 : 15} align=\"center\" sx={{ py: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} sx={{ color: \"#1A5F6C\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</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) : leads.length === 0 ? (\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\t\t<TableCell colSpan={showVoicemail ? 16 : 15} align=\"center\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ py: 4, color: \"#999\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tNo leads found. Add leads using \"Add Lead\" or \"Import Leads\".\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</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\t\tleads.map((lead) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst nonDeletable = [\"IN_PROGRESS\", \"COMPLETED\", \"FAILED\", \"DO_NOT_CALL\"];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst leadStatus = (lead.status || \"\").toUpperCase();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst deleteDisabled = nonDeletable.includes(leadStatus);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isDialerEnabled = !!leadsMeta?.isDialerEnabled;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isCompleted = leadStatus === \"COMPLETED\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isInProgress = leadStatus === \"IN_PROGRESS\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isDialable =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisDialerEnabled\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& hasOutboundPermission\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& isAgentIdle\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& !isCompleted\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& !isInProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& dialLoading !== lead.id;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst dialTooltip =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!isDialerEnabled ? \"Dialer is not enabled\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: !hasOutboundPermission ? \"No outbound call permission\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: isCompleted ? \"Lead is completed\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: isInProgress ? \"Lead is in progress\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: !isAgentIdle ? \"Agent is not idle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: dialLoading === lead.id ? \"Dialing…\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `Call ${lead.phoneNumber}`;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst { chip: prioChip, label: prioLabel } = leadPriorityChipSx(lead.priority);\r\n\t\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\t<TableRow key={lead.id} sx={tableRowSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.phoneNumber}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Chip label={lead.status || \"pending\"} size=\"small\" sx={leadStatusChipSx(lead.status)} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Chip label={prioLabel} size=\"small\" sx={prioChip} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.source || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, maxWidth: 140, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={lead.originalCallId || \"\"}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{lead.originalCallId || \"\"}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.queueName || \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.attemptCount ?? 0}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.createdAt ? new Date(lead.createdAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.lastAttemptAt ? new Date(lead.lastAttemptAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.nextAttemptAt ? new Date(lead.nextAttemptAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastOutcome || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.completedAt ? new Date(lead.completedAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, maxWidth: 150, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.notes ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={lead.notes} arrow placement=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{lead.notes}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\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</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastReason || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{showVoicemail && <TableCell sx={{ ...bodyCellSx, minWidth: 180 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.originalCallId\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? <CallRecording callUuid={lead.originalCallId} recordingPath={lead.voicemail} iconOnly />\r\n\t\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</TableCell>\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\t<TableCell sx={{ ...bodyCellSx, textAlign: \"center\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Dial button */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={dialTooltip}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleDialPreview(lead.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!isDialable}\r\n\t\t\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\t\t\tcolor: isDialable ? \"#2e7d32\" : \"#bdbdbd\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isDialable ? \"#e8f5e9\" : \"transparent\",\r\n\t\t\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\t\t\ttransition: \"all 0.2s ease-in-out\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isDialable ? \"#43a047\" : \"transparent\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: isDialable ? \"#fff\" : \"#bdbdbd\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransform: isDialable ? \"scale(1.2)\" : \"none\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: isDialable ? \"0 0 8px rgba(67,160,71,0.5)\" : \"none\",\r\n\t\t\t\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\t\t\t}}\r\n\t\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\t\t\t{dialLoading === lead.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? <CircularProgress size={16} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: <PhoneIcon sx={{ fontSize: 18 }} />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* View call data */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={lead.latestCallId ? \"View call details\" : \"No call data available\"}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleViewCallData(lead)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!lead.latestCallId}\r\n\t\t\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\t\t\tml: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: lead.latestCallId ? \"#1A5F6C\" : \"#bdbdbd\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"transparent\" },\r\n\t\t\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\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<VisibilityOutlinedIcon sx={{ fontSize: 18 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Delete button */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_LEADS_DELETE,\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\tshowFallback={false}\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\t<Tooltip title={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteDisabled\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `Cannot delete — status is ${leadStatus.toLowerCase().replace(\"_\", \" \")}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `Delete lead ${lead.phoneNumber}`\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\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => { setDeleteLeadTarget(lead); setDeleteLeadOpen(true); }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={deleteDisabled}\r\n\t\t\t\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\t\t\t\tml: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: deleteDisabled ? \"#bdbdbd\" : \"#c62828\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: deleteDisabled ? \"transparent\" : \"#ffebee\",\r\n\t\t\t\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\t\t\t\ttransition: \"all 0.2s ease-in-out\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: deleteDisabled ? \"transparent\" : \"#d32f2f\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: deleteDisabled ? \"#bdbdbd\" : \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransform: deleteDisabled ? \"none\" : \"scale(1.2)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: deleteDisabled ? \"none\" : \"0 0 8px rgba(211,47,47,0.5)\",\r\n\t\t\t\t\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\t\t\t\t}}\r\n\t\t\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\t\t\t\t<DeleteIcon sx={{ fontSize: 18 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\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\t\t);\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</TableBody>\r\n\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{leads.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t<TablePagination\r\n\t\t\t\t\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\t\t\t\t\tcount={leadTotal}\r\n\t\t\t\t\t\t\t\t\t\tpage={leadPage}\r\n\t\t\t\t\t\t\t\t\t\trowsPerPage={leadRowsPerPage}\r\n\t\t\t\t\t\t\t\t\t\tonPageChange={(_, p) => { setLeadPage(p); refetchLeads(p); }}\r\n\t\t\t\t\t\t\t\t\t\tonRowsPerPageChange={(e) => { setLeadRowsPerPage(parseInt(e.target.value, 10)); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\trowsPerPageOptions={[10, 15, 25, 50, 100]}\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: \"0.82rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"& .MuiTablePagination-toolbar\": { minHeight: 40, px: 1 },\r\n\t\t\t\t\t\t\t\t\t\t\t\"& .MuiTablePagination-selectLabel, & .MuiTablePagination-displayedRows\": { fontSize: \"0.82rem\" },\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)}\r\n\t\t\t\t\t\t\t</Paper>\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)}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* ── Dialogs ── */}\r\n\t\t\t<CampaignDialog\r\n\t\t\t\topen={dialogOpen}\r\n\t\t\t\teditingCampaign={editingCampaign}\r\n\t\t\t\tformData={formData}\r\n\t\t\t\tsetFormData={setFormData}\r\n\t\t\t\tsaving={saving}\r\n\t\t\t\tonSave={handleSave}\r\n\t\t\t\tonClose={() => setDialogOpen(false)}\r\n\t\t\t\tparentQueueNameMap={queueNameMap}\r\n\t\t\t\tonQueuesRefreshed={handleQueuesRefreshed}\r\n\t\t\t\tonLeadsChange={() => { fetchCampaigns(); if (selectedId) refetchLeads(); }}\r\n\t\t\t/>\r\n\t\t\t<AddLeadDialog\r\n\t\t\t\topen={addLeadOpen}\r\n\t\t\t\tdata={addLeadData}\r\n\t\t\t\tonChange={setAddLeadData}\r\n\t\t\t\tsaving={addLeadSaving}\r\n\t\t\t\tonSave={handleAddLead}\r\n\t\t\t\tonClose={() => { setAddLeadOpen(false); setAddLeadData({ phoneNumber: \"\", callerName: \"\", priority: 5 }); }}\r\n\t\t\t/>\r\n\t\t\t<ImportLeadsDialog\r\n\t\t\t\topen={importOpen}\r\n\t\t\t\tfile={importFile}\r\n\t\t\t\tonFileChange={setImportFile}\r\n\t\t\t\tuploading={importing}\r\n\t\t\t\tonUpload={handleImport}\r\n\t\t\t\tonDownloadTemplate={handleDownloadTemplate}\r\n\t\t\t\tonClose={() => { setImportOpen(false); setImportFile(null); }}\r\n\t\t\t/>\r\n\t\t\t<ConfirmDialog\r\n\t\t\t\topen={archiveOpen}\r\n\t\t\t\ttitle=\"Archive Campaign\"\r\n\t\t\t\tmessage={`Archive \"${archiveTarget?.name}\"? It will no longer run.`}\r\n\t\t\t\tloading={archiving}\r\n\t\t\t\tonConfirm={confirmArchive}\r\n\t\t\t\tonClose={() => { setArchiveOpen(false); setArchiveTarget(null); }}\r\n\t\t\t/>\r\n\t\t\t<ConfirmDialog\r\n\t\t\t\topen={deleteLeadOpen}\r\n\t\t\t\ttitle=\"Delete Lead\"\r\n\t\t\t\tmessage={`Delete lead ${deleteLeadTarget?.phoneNumber}? This cannot be undone.`}\r\n\t\t\t\tloading={deletingLead}\r\n\t\t\t\tonConfirm={confirmDeleteLead}\r\n\t\t\t\tonClose={() => { setDeleteLeadOpen(false); setDeleteLeadTarget(null); }}\r\n\t\t\t/>\r\n\t\t\t<CallDataDialog\r\n\t\t\t\topen={callDataOpen}\r\n\t\t\t\tlead={callDataLead}\r\n\t\t\t\tdata={callData}\r\n\t\t\t\tloading={callDataLoading}\r\n\t\t\t\terror={callDataError}\r\n\t\t\t\tonClose={() => { setCallDataOpen(false); setCallData(null); setCallDataError(null); setCallDataLead(null); }}\r\n\t\t\t/>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ──── Default export — wrapped with SDKProvider ───────────────────────────────\r\n\r\nconst Campaigns: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<CampaignsContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default Campaigns;\r\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z\"\n}), 'Add');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"m20.54 5.23-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27M12 17.5 6.5 12H10v-2h4v2h3.5zM5.12 5l.81-1h12l.94 1z\"\n}), 'Archive');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'ChevronLeft');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'ChevronRight');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\"\n}), 'Edit');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z\"\n}), 'UploadFile');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M12 6c3.79 0 7.17 2.13 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5C4.83 8.13 8.21 6 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4m0 5c1.38 0 2.5 1.12 2.5 2.5S13.38 14 12 14s-2.5-1.12-2.5-2.5S10.62 9 12 9m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7\"\n}), 'VisibilityOutlined');","import React from \"react\";\r\nimport { Button, SxProps, Theme, useTheme } from \"@mui/material\";\r\nimport { alpha } from \"@mui/material/styles\";\r\n\r\ntype SDKButtonVariant = \"primary\" | \"danger\" | \"cancel\" | \"outlined\";\r\n\r\ninterface SDKButtonProps {\r\n\tchildren: React.ReactNode;\r\n\tvariant?: SDKButtonVariant;\r\n\tonClick?: React.MouseEventHandler<HTMLButtonElement>;\r\n\tstartIcon?: React.ReactNode;\r\n\tendIcon?: React.ReactNode;\r\n\tdisabled?: boolean;\r\n\ttype?: \"button\" | \"submit\" | \"reset\";\r\n\tsize?: \"small\" | \"medium\" | \"large\";\r\n\tfullWidth?: boolean;\r\n\tsx?: SxProps<Theme>;\r\n}\r\n\r\nconst muiVariant: Record<SDKButtonVariant, \"contained\" | \"outlined\" | \"text\"> = {\r\n\tprimary: \"contained\",\r\n\tdanger: \"contained\",\r\n\tcancel: \"text\",\r\n\toutlined: \"outlined\",\r\n};\r\n\r\nexport function SDKButton({\r\n\tchildren,\r\n\tvariant = \"primary\",\r\n\tonClick,\r\n\tstartIcon,\r\n\tendIcon,\r\n\tdisabled = false,\r\n\ttype = \"button\",\r\n\tsize = \"medium\",\r\n\tfullWidth = false,\r\n\tsx,\r\n}: SDKButtonProps) {\r\n\tconst theme = useTheme();\r\n\tconst primary = theme.palette.primary.main;\r\n\tconst primaryDark = theme.palette.primary.dark;\r\n\r\n\tconst styles: Record<SDKButtonVariant, SxProps<Theme>> = {\r\n\t\tprimary: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tbackgroundColor: primary,\r\n\t\t\tborderRadius: \"30px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\tboxShadow: `0 2px 8px ${alpha(primary, 0.25)}`,\r\n\t\t\t\"&:hover\": {\r\n\t\t\t\tbackgroundColor: primaryDark,\r\n\t\t\t\tboxShadow: `0 4px 12px ${alpha(primary, 0.35)}`,\r\n\t\t\t},\r\n\t\t\t\"&.Mui-disabled\": {\r\n\t\t\t\tbackgroundColor: alpha(primary, 0.4),\r\n\t\t\t\tcolor: \"#fff\",\r\n\t\t\t},\r\n\t\t},\r\n\t\tdanger: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tbackgroundColor: \"#d32f2f\",\r\n\t\t\tborderRadius: \"8px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\t\"&:hover\": { backgroundColor: \"#b71c1c\" },\r\n\t\t\t\"&.Mui-disabled\": { backgroundColor: \"#e57373\", color: \"#fff\" },\r\n\t\t},\r\n\t\tcancel: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tcolor: \"#666\",\r\n\t\t\tborderRadius: \"30px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\tborder: \"1px solid #d0d0d0\",\r\n\t\t\t\"&:hover\": { backgroundColor: \"#f5f5f5\", borderColor: \"#bbb\" },\r\n\t\t},\r\n\t\toutlined: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tcolor: primary,\r\n\t\t\tborderColor: primary,\r\n\t\t\tborderRadius: \"30px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\t\"&:hover\": { borderColor: primaryDark, backgroundColor: alpha(primary, 0.05) },\r\n\t\t},\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Button\r\n\t\t\tvariant={muiVariant[variant]}\r\n\t\t\tonClick={onClick}\r\n\t\t\tstartIcon={startIcon}\r\n\t\t\tendIcon={endIcon}\r\n\t\t\tdisabled={disabled}\r\n\t\t\ttype={type}\r\n\t\t\tsize={size}\r\n\t\t\tfullWidth={fullWidth}\r\n\t\t\tsx={[styles[variant], ...(Array.isArray(sx) ? sx : [sx])]}\r\n\t\t>\r\n\t\t\t{children}\r\n\t\t</Button>\r\n\t);\r\n}\r\n","import { useState, useCallback } from \"react\";\r\nimport axiosInstance, { deepFindArray, deepFindTotal } from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type {\r\n\tCampaign,\r\n\tCampaignCreatePayload,\r\n\tCreateQueuePayload,\r\n\tLead,\r\n\tLeadCallData,\r\n\tLeadCreatePayload,\r\n\tLeadsMeta,\r\n\tLeadsParams,\r\n\tLeadsResponse,\r\n\tQueue,\r\n} from \"./types\";\r\n\r\nexport function useCampaigns() {\r\n\tconst [campaigns, setCampaigns] = useState<Campaign[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchCampaigns = useCallback(async () => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_GET_ALL);\r\n\t\t\tsetCampaigns(Array.isArray(res.data) ? res.data : []);\r\n\t\t} catch {\r\n\t\t\tsetCampaigns([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst getCampaignById = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_GET_BY_ID(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst createCampaign = useCallback(async (data: CampaignCreatePayload): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_CREATE, data);\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst updateCampaign = useCallback(async (id: number, data: Partial<CampaignCreatePayload>): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.put(END_POINT.CAMPAIGNS_UPDATE(id), data);\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst activateCampaign = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_ACTIVATE(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst pauseCampaign = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_PAUSE(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst archiveCampaign = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_ARCHIVE(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tcampaigns,\r\n\t\tloading,\r\n\t\tfetchCampaigns,\r\n\t\tgetCampaignById,\r\n\t\tcreateCampaign,\r\n\t\tupdateCampaign,\r\n\t\tactivateCampaign,\r\n\t\tpauseCampaign,\r\n\t\tarchiveCampaign,\r\n\t};\r\n}\r\n\r\nexport function useLeads() {\r\n\tconst [leads, setLeads] = useState<Lead[]>([]);\r\n\tconst [leadTotal, setLeadTotal] = useState(0);\r\n\tconst [leadsMeta, setLeadsMeta] = useState<LeadsMeta>(null);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchLeads = useCallback(async (campaignId: number, params?: LeadsParams, opts?: { silent?: boolean }): Promise<void> => {\r\n\t\tif (!opts?.silent) setLoading(true);\r\n\t\ttry {\r\n\t\t\tconst qs = new URLSearchParams();\r\n\t\t\tif (params?.page != null) qs.append(\"page\", String(params.page));\r\n\t\t\tif (params?.pageSize != null) qs.append(\"pageSize\", String(params.pageSize));\r\n\t\t\tif (params?.lead_status) qs.append(\"lead_status\", params.lead_status);\r\n\t\t\tif (params?.search) qs.append(\"search\", params.search);\r\n\t\t\tif (params?.start_date) qs.append(\"start_date\", params.start_date);\r\n\t\t\tif (params?.end_date) qs.append(\"end_date\", params.end_date);\r\n\t\t\tconst qsStr = qs.toString();\r\n\t\t\tconst url = `${END_POINT.CAMPAIGNS_LEADS(campaignId)}${qsStr ? `?${qsStr}` : \"\"}`;\r\n\t\t\tconst res = await axiosInstance.get<LeadsResponse>(url);\r\n\t\t\tconst body = res.data as any;\r\n\t\t\t// Find the leads array wherever it sits (flat array, { leads }, { data: { leads } },\r\n\t\t\t// { leads: { data: [...] } }, ...).\r\n\t\t\tconst fetchedLeads = deepFindArray<Lead>(body, [\"leads\"]);\r\n\t\t\tsetLeads(fetchedLeads);\r\n\t\t\t// The real total may sit at body.total, body.data.total, or body.leads.total.\r\n\t\t\tconst foundTotal = deepFindTotal(body);\r\n\t\t\tsetLeadTotal(foundTotal >= 0 ? foundTotal : fetchedLeads.length);\r\n\t\t\tsetLeadsMeta({\r\n\t\t\t\tisDialerEnabled: body?.isDialerEnabled ?? body?.data?.isDialerEnabled,\r\n\t\t\t\tdialingMode: body?.dialingMode ?? body?.data?.dialingMode,\r\n\t\t\t\tcampaignStatus: body?.campaignStatus ?? body?.data?.campaignStatus,\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tsetLeads([]);\r\n\t\t\tsetLeadTotal(0);\r\n\t\t\tsetLeadsMeta(null);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst createLead = useCallback(async (campaignId: number, data: LeadCreatePayload): Promise<Lead> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_LEADS(campaignId), data);\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst deleteLead = useCallback(async (campaignId: number, leadId: number): Promise<void> => {\r\n\t\tawait axiosInstance.delete(END_POINT.CAMPAIGNS_DELETE_LEAD(campaignId, leadId));\r\n\t}, []);\r\n\r\n\tconst dialPreview = useCallback(async (campaignId: number, leadId: number): Promise<{ message: string }> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_DIAL_PREVIEW(campaignId, leadId));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst getLeadCallData = useCallback(async (callUuid: string): Promise<LeadCallData> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CALL_DATA_BY_CALL(callUuid));\r\n\t\t// API wraps the payload as { message, data }\r\n\t\treturn res.data?.data ?? res.data;\r\n\t}, []);\r\n\r\n\tconst uploadLeadsExcel = useCallback(async (campaignId: number, file: File): Promise<any> => {\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append(\"file\", file);\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_LEADS_UPLOAD_EXCEL(campaignId), formData, {\r\n\t\t\theaders: { \"Content-Type\": \"multipart/form-data\" },\r\n\t\t});\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst downloadLeadTemplate = useCallback(async (campaignId: number): Promise<void> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_LEADS_TEMPLATE_EXCEL(campaignId), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\tconst blob = res.data as Blob;\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst a = document.createElement(\"a\");\r\n\t\ta.href = url;\r\n\t\ta.download = \"lead_template.xlsx\";\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.click();\r\n\t\ta.remove();\r\n\t\twindow.URL.revokeObjectURL(url);\r\n\t}, []);\r\n\r\n\tconst exportLeads = useCallback(async (campaignId: number): Promise<void> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_LEADS_EXPORT_EXCEL(campaignId), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\tconst blob = res.data as Blob;\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst a = document.createElement(\"a\");\r\n\t\ta.href = url;\r\n\t\ta.download = \"leads_export.xlsx\";\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.click();\r\n\t\ta.remove();\r\n\t\twindow.URL.revokeObjectURL(url);\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tleads,\r\n\t\tleadTotal,\r\n\t\tleadsMeta,\r\n\t\tloading,\r\n\t\tfetchLeads,\r\n\t\tcreateLead,\r\n\t\tdeleteLead,\r\n\t\tdialPreview,\r\n\t\tgetLeadCallData,\r\n\t\tuploadLeadsExcel,\r\n\t\tdownloadLeadTemplate,\r\n\t\texportLeads,\r\n\t};\r\n}\r\n\r\nexport function useQueues() {\r\n\tconst [queues, setQueues] = useState<Queue[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchQueues = useCallback(async (): Promise<Queue[]> => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.QUEUES_GET_ALL);\r\n\t\t\tconst list: Queue[] = Array.isArray(res.data)\r\n\t\t\t\t? res.data\r\n\t\t\t\t: Array.isArray(res.data?.data) ? res.data.data : [];\r\n\t\t\tsetQueues(list);\r\n\t\t\treturn list;\r\n\t\t} catch {\r\n\t\t\tsetQueues([]);\r\n\t\t\treturn [];\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst createQueue = useCallback(async (payload: CreateQueuePayload): Promise<Queue> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.QUEUES_CREATE, payload);\r\n\t\treturn res.data?.data ?? res.data;\r\n\t}, []);\r\n\r\n\treturn { queues, loading, fetchQueues, createQueue };\r\n}\r\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","export interface CampaignQueue {\r\n\tid: number;\r\n\tcampaignId: number;\r\n\tqueueId: number;\r\n\tpriorityOverride: number | null;\r\n\tminWaitBeforeCallback: number;\r\n\tcreatedAt: string;\r\n}\r\n\r\nexport interface Campaign {\r\n\tid: number;\r\n\ttenantId: number;\r\n\tname: string;\r\n\tdescription: string;\r\n\tcampaignType: string;\r\n\tstatus: string;\r\n\tdialingMode: string;\r\n\tmaxConcurrentCalls: number;\r\n\tcallsPerAgent: number;\r\n\tstartTime: string;\r\n\tendTime: string;\r\n\tdaysOfWeek: number[];\r\n\ttimezone: string;\r\n\tscheduledStart: string | null;\r\n\tscheduledEnd: string | null;\r\n\tmaxAttempts: number;\r\n\tretryIntervalMinutes: number;\r\n\tcallerId: string | null;\r\n\tringTimeoutSeconds: number;\r\n\tanswerTimeoutSeconds: number | null;\r\n\tagentType: string;\r\n\taiBotId: number | null;\r\n\tpriority: number;\r\n\ttotalLeads: number;\r\n\tcompletedLeads: number;\r\n\tsuccessfulCalls: number;\r\n\tsettings: Record<string, any>;\r\n\tcreatedAt: string;\r\n\tupdatedAt: string;\r\n\tcompletionRate: number;\r\n\tcampaignQueues: CampaignQueue[];\r\n}\r\n\r\nexport interface CampaignCreatePayload {\r\n\tname: string;\r\n\tdescription: string;\r\n\tcampaignType: string;\r\n\tdialingMode: string;\r\n\tmaxConcurrentCalls: number;\r\n\tcallsPerAgent: number;\r\n\tstartTime: string;\r\n\tendTime: string;\r\n\tdaysOfWeek: number[];\r\n\ttimezone: string;\r\n\tscheduledStart: string;\r\n\tscheduledEnd: string;\r\n\tmaxAttempts: number;\r\n\tretryIntervalMinutes: number;\r\n\tcallerId: string;\r\n\tringTimeoutSeconds: number;\r\n\tanswerTimeoutSeconds: number;\r\n\tagentType: string;\r\n\taiBotId: number | null;\r\n\tpriority: number;\r\n\tsettings: Record<string, any>;\r\n\tqueueLinks?: QueueLinkPayload[];\r\n}\r\n\r\nexport interface QueueLinkPayload {\r\n\tqueueId: number;\r\n\tpriorityOverride: number;\r\n\tminWaitBeforeCallback: number;\r\n}\r\n\r\nexport interface Lead {\r\n\tid: number;\r\n\tcampaignId: number;\r\n\tphoneNumber: string;\r\n\tcallerName: string;\r\n\tsource: string;\r\n\tsourceReference: string;\r\n\toriginalCallId: string;\r\n\toriginalQueueId: number;\r\n\tqueueName: string | null;\r\n\toriginalWaitTime: number;\r\n\tstatus: string;\r\n\tpriority: number;\r\n\tscheduledAt: string;\r\n\texpiresAt: string;\r\n\tattemptCount: number;\r\n\tlastAttemptAt: string;\r\n\tnextAttemptAt: string;\r\n\tlastOutcome: string;\r\n\tlastReason: string;\r\n\tcompletedAt: string;\r\n\tcustomData: Record<string, any>;\r\n\tnotes: string;\r\n\tcreatedAt: string;\r\n\tupdatedAt: string;\r\n\tlatestCallId: string | null;\r\n\tvoicemail: string | null;\r\n}\r\n\r\nexport interface LeadCallData {\r\n\tcallUuid: string;\r\n\tphoneNumber: string;\r\n\tcallStartTime: string | null;\r\n\tconnectTime: string | null;\r\n\tcallType: string;\r\n\tcallStatus: string;\r\n\tagentName: string | null;\r\n\tagentUserId: string | null;\r\n\tqueueName: string | null;\r\n\textension: string | null;\r\n\ttalkDurationSeconds: number;\r\n\ttalkDurationFmt: string;\r\n\tholdDurationSeconds: number;\r\n\tholdDurationFmt: string;\r\n\tmuteDurationSeconds: number;\r\n\tmuteDurationFmt: string;\r\n\twrapupDurationSeconds: number;\r\n\twrapupDurationFmt: string;\r\n\tringingDurationSeconds: number;\r\n\tringingDurationFmt: string;\r\n\tqueueDurationSeconds: number;\r\n\tqueueDurationFmt: string;\r\n\tivrDurationSeconds: number;\r\n\tivrDurationFmt: string;\r\n\tdisposition: string | null;\r\n\tagentSelectedDisposition: string | null;\r\n\tremarks: string | null;\r\n\twasTransferred: boolean;\r\n\trecordingPath: string | null;\r\n\thangupInitiator: string | null;\r\n}\r\n\r\nexport interface LeadCreatePayload {\r\n\tphoneNumber: string;\r\n\tcallerName: string;\r\n\tsource?: string;\r\n\tpriority?: number;\r\n\tnotes?: string;\r\n\tscheduledAt?: string;\r\n}\r\n\r\nexport interface LeadsResponse {\r\n\tisDialerEnabled: boolean;\r\n\tdialingMode: string;\r\n\tcampaignStatus: string;\r\n\tleads: Lead[];\r\n\ttotal: number;\r\n}\r\n\r\nexport interface LeadsParams {\r\n\tpage?: number;\r\n\tpageSize?: number;\r\n\tlead_status?: string;\r\n\tsearch?: string;\r\n\tstart_date?: string;\r\n\tend_date?: string;\r\n}\r\n\r\nexport interface Queue {\r\n\tid: number;\r\n\tname: string;\r\n\tdescription: string;\r\n\tprocessId?: number;\r\n\tisActive: boolean;\r\n\tincludeInAbandonedCallback?: boolean;\r\n}\r\n\r\nexport interface CreateQueuePayload {\r\n\tname: string;\r\n\tdescription: string;\r\n\tisActive?: boolean;\r\n\tprocessId?: number;\r\n\tincludeInAbandonedCallback?: boolean;\r\n}\r\n\r\nexport type LeadsMeta = Pick<LeadsResponse, \"isDialerEnabled\" | \"dialingMode\" | \"campaignStatus\"> | null;\r\n\r\nexport const CAMPAIGN_TYPES = [\"OUTBOUND_CAMPAIGN\", \"ABANDONED_CALLBACK\"] as const;\r\n\r\nexport const DIALING_MODES_MAP: Record<string, string[]> = {\r\n\tOUTBOUND_CAMPAIGN: [\"PREVIEW\", \"AI_CALLBACK\"],\r\n\tABANDONED_CALLBACK: [\"PROGRESSIVE\", \"PREDICTIVE\"],\r\n};\r\n\r\nexport const AGENT_TYPES = [\"HUMAN\", \"AI\", \"HYBRID\"] as const;\r\n\r\nexport const LEAD_PRIORITY_OPTIONS: { label: string; value: number }[] = [\r\n\t{ label: \"HIGH\", value: 10 },\r\n\t{ label: \"MEDIUM\", value: 5 },\r\n\t{ label: \"LOW\", value: 1 },\r\n];\r\n\r\nexport const DAYS_OF_WEEK = [\r\n\t{ label: \"Sun\", value: 0 }, { label: \"Mon\", value: 1 }, { label: \"Tue\", value: 2 },\r\n\t{ label: \"Wed\", value: 3 }, { label: \"Thu\", value: 4 }, { label: \"Fri\", value: 5 },\r\n\t{ label: \"Sat\", value: 6 },\r\n] as const;\r\n\r\nexport const TIMEZONES = [\r\n\t\"Etc/UTC\", \"US/Eastern\", \"US/Central\", \"US/Mountain\", \"US/Pacific\",\r\n\t\"Europe/London\", \"Europe/Berlin\", \"Asia/Kolkata\", \"Asia/Tokyo\", \"Australia/Sydney\",\r\n] as const;\r\n\r\nexport const STATUS_COLORS: Record<string, string> = {\r\n\tdraft: \"#9e9e9e\",\r\n\tactive: \"#4caf50\",\r\n\tpaused: \"#ff9800\",\r\n\tcompleted: \"#2196f3\",\r\n\tarchived: \"#795548\",\r\n};\r\n\r\nexport const LEAD_STATUSES = [\r\n\t\"All states\", \"PENDING\", \"SCHEDULED\", \"IN_PROGRESS\",\r\n\t\"COMPLETED\", \"FAILED\", \"DO_NOT_CALL\", \"INVALID\", \"CANCELLED\",\r\n] as const;\r\n\r\nexport const defaultFormData: CampaignCreatePayload = {\r\n\tname: \"\", description: \"\", campaignType: \"OUTBOUND_CAMPAIGN\", dialingMode: \"PREVIEW\",\r\n\tmaxConcurrentCalls: 5, callsPerAgent: 1, startTime: \"09:00\", endTime: \"17:00\",\r\n\tdaysOfWeek: [1, 2, 3, 4, 5], timezone: \"Asia/Kolkata\", scheduledStart: \"\", scheduledEnd: \"\",\r\n\tmaxAttempts: 1, retryIntervalMinutes: 15, callerId: \"\", ringTimeoutSeconds: 30,\r\n\tanswerTimeoutSeconds: 30, agentType: \"HUMAN\", aiBotId: null, priority: 5, settings: {},\r\n\tqueueLinks: [],\r\n};\r\n","import type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n// ─── Typography ───────────────────────────────────────────────────────────────\r\n\r\nexport const labelSx: SxProps<Theme> = {\r\n\tfontWeight: 600,\r\n\tfontSize: \"0.85rem\",\r\n\tcolor: \"#333\",\r\n\tmb: 0.5,\r\n};\r\n\r\nexport const sectionTitleSx: SxProps<Theme> = {\r\n\tfontWeight: 700,\r\n\tfontSize: \"1rem\",\r\n\tcolor: \"#1a1a1a\",\r\n\tmb: 1.5,\r\n\tmt: 0.5,\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n};\r\n\r\n// ─── Table ────────────────────────────────────────────────────────────────────\r\n\r\nexport const headCellSx: SxProps<Theme> = {\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tbgcolor: \"#f1f1f1\",\r\n\tcolor: \"#333\",\r\n\tfontWeight: 600,\r\n\twhiteSpace: \"nowrap\",\r\n\tfontSize: \"0.8rem\",\r\n\tpy: \"6px\",\r\n\tpx: \"12px\",\r\n};\r\n\r\nexport const bodyCellSx: SxProps<Theme> = {\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontSize: \"0.82rem\",\r\n\tpy: \"4px\",\r\n\tpx: \"12px\",\r\n};\r\n\r\nexport const tableRowSx: SxProps<Theme> = {\r\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\r\n\t\"&:last-child td, &:last-child th\": { border: 0 },\r\n};\r\n\r\n// ─── Campaign list card ───────────────────────────────────────────────────────\r\n\r\nexport const campaignCardBaseSx: SxProps<Theme> = {\r\n\tp: 1.5,\r\n\tmb: 0.75,\r\n\tborderRadius: \"12px\",\r\n\tcursor: \"pointer\",\r\n\tborder: \"1px solid #e8e8e8\",\r\n\tbackgroundColor: \"#fff\",\r\n\tboxShadow: \"0 1px 2px rgba(0,0,0,0.04)\",\r\n\ttransition: \"all 0.2s ease\",\r\n};\r\n\r\nexport const campaignCardSelectedSx: SxProps<Theme> = {\r\n\t...campaignCardBaseSx,\r\n\tborder: \"2px solid #1A5F6C\",\r\n\tbackgroundColor: \"#f0f7f8\",\r\n\tboxShadow: \"0 2px 8px rgba(26,95,108,0.12)\",\r\n};\r\n\r\n// ─── Input ────────────────────────────────────────────────────────────────────\r\n\r\nexport const inputSx: SxProps<Theme> = {\r\n\t\"& .MuiOutlinedInput-root\": {\r\n\t\tborderRadius: \"8px\",\r\n\t\tbackgroundColor: \"#fff\",\r\n\t\t\"&:hover fieldset\": { borderColor: \"#1A5F6C\" },\r\n\t\t\"&.Mui-focused fieldset\": { borderColor: \"#1A5F6C\" },\r\n\t},\r\n};\r\n\r\n// ─── Dialog ───────────────────────────────────────────────────────────────────\r\n\r\nexport const dialogHeaderSx: SxProps<Theme> = {\r\n\tpx: 2.5,\r\n\tpy: 1.5,\r\n\tborderBottom: \"1px solid #eee\",\r\n\tdisplay: \"flex\",\r\n\talignItems: \"center\",\r\n\tjustifyContent: \"space-between\",\r\n};\r\n\r\nexport const dialogFooterSx: SxProps<Theme> = {\r\n\tpx: 2.5,\r\n\tpy: 1.5,\r\n\tborderTop: \"1px solid #eee\",\r\n\tdisplay: \"flex\",\r\n\tjustifyContent: \"flex-end\",\r\n\tgap: 1,\r\n};\r\n\r\n// ─── Buttons ──────────────────────────────────────────────────────────────────\r\n\r\nexport const primaryBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 0.5,\r\n\tpx: 2.5,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"none\",\r\n\tbackgroundColor: \"#1A5F6C\",\r\n\tcolor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.85rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontWeight: 600,\r\n\t\"&:hover\": { backgroundColor: \"#164e57\" },\r\n\t\"&:disabled\": { opacity: 0.65, cursor: \"not-allowed\" },\r\n};\r\n\r\nexport const cancelBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tpx: 2.5,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"1px solid #ccc\",\r\n\tbackgroundColor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.85rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\t\"&:hover\": { backgroundColor: \"#f5f5f5\" },\r\n};\r\n\r\nexport const dangerBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 0.5,\r\n\tpx: 2.5,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"none\",\r\n\tbackgroundColor: \"#c0392b\",\r\n\tcolor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.85rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontWeight: 600,\r\n\t\"&:hover\": { backgroundColor: \"#a93226\" },\r\n\t\"&:disabled\": { opacity: 0.65, cursor: \"not-allowed\" },\r\n};\r\n\r\nexport const outlinedBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 0.5,\r\n\tpx: 2,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"1px solid #1A5F6C\",\r\n\tbackgroundColor: \"#fff\",\r\n\tcolor: \"#1A5F6C\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.82rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontWeight: 600,\r\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\r\n};\r\n\r\n// ─── Icon action buttons ──────────────────────────────────────────────────────\r\n\r\nexport const iconBtnBaseSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #e0e0e0\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnPrimarySx: SxProps<Theme> = {\r\n\tborder: \"1px solid #1A5F6C\",\r\n\tcolor: \"#1A5F6C\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnSuccessSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #4caf50\",\r\n\tcolor: \"#4caf50\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnWarningSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #ff9800\",\r\n\tcolor: \"#ff9800\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnDangerSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #c0392b\",\r\n\tcolor: \"#c0392b\",\r\n\tborderRadius: 1,\r\n};\r\n\r\n// ─── Chip helpers (returned as plain objects, not SxProps) ────────────────────\r\n\r\nexport const STATUS_COLORS: Record<string, string> = {\r\n\tdraft: \"#9e9e9e\",\r\n\tactive: \"#4caf50\",\r\n\tpaused: \"#ff9800\",\r\n\tcompleted: \"#2196f3\",\r\n\tarchived: \"#795548\",\r\n};\r\n\r\nexport function statusChipSx(status: string) {\r\n\tconst color = STATUS_COLORS[status?.toLowerCase()] ?? \"#9e9e9e\";\r\n\treturn {\r\n\t\theight: 22,\r\n\t\tfontSize: \"0.68rem\",\r\n\t\tfontWeight: 700,\r\n\t\ttextTransform: \"capitalize\" as const,\r\n\t\tborderRadius: \"6px\",\r\n\t\tbackgroundColor: color + \"18\",\r\n\t\tcolor,\r\n\t\tborder: `1px solid ${color}40`,\r\n\t};\r\n}\r\n\r\nexport function leadStatusChipSx(status: string) {\r\n\tconst s = status?.toUpperCase();\r\n\treturn {\r\n\t\theight: 22,\r\n\t\tfontSize: \"0.72rem\",\r\n\t\tfontWeight: 700,\r\n\t\ttextTransform: \"capitalize\" as const,\r\n\t\tborderRadius: \"6px\",\r\n\t\tbackgroundColor: s === \"COMPLETED\" ? \"#e8f5e9\"\r\n\t\t\t: s === \"FAILED\" ? \"#ffebee\"\r\n\t\t\t: s === \"DIALING\" ? \"#e3f2fd\"\r\n\t\t\t: \"#f5f5f5\",\r\n\t\tcolor: s === \"COMPLETED\" ? \"#2e7d32\"\r\n\t\t\t: s === \"FAILED\" ? \"#c62828\"\r\n\t\t\t: s === \"DIALING\" ? \"#1565c0\"\r\n\t\t\t: \"#666\",\r\n\t};\r\n}\r\n\r\nexport function leadPriorityChipSx(priority: number | null | undefined) {\r\n\tconst label = priority == null ? \"—\"\r\n\t\t: priority >= 8 ? \"HIGH\"\r\n\t\t: priority >= 4 ? \"MEDIUM\"\r\n\t\t: \"LOW\";\r\n\treturn {\r\n\t\tchip: {\r\n\t\t\theight: 22,\r\n\t\t\tfontSize: \"0.72rem\",\r\n\t\t\tfontWeight: 700,\r\n\t\t\tborderRadius: \"6px\",\r\n\t\t\tbackgroundColor: label === \"HIGH\" ? \"#ffebee\" : label === \"MEDIUM\" ? \"#e3f2fd\" : label === \"LOW\" ? \"#e8f5e9\" : \"#f5f5f5\",\r\n\t\t\tcolor: label === \"HIGH\" ? \"#c62828\" : label === \"MEDIUM\" ? \"#1565c0\" : label === \"LOW\" ? \"#2e7d32\" : \"#666\",\r\n\t\t},\r\n\t\tlabel,\r\n\t};\r\n}\r\n\r\nexport function daychipSx(selected: boolean) {\r\n\treturn {\r\n\t\tcursor: \"pointer\",\r\n\t\tbackgroundColor: selected ? \"#1A5F6C\" : \"transparent\",\r\n\t\tcolor: selected ? \"#fff\" : \"#333\",\r\n\t\tborderColor: \"#1A5F6C\",\r\n\t\tfontWeight: 500,\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: selected ? \"#164e57\" : \"#E3F2F5\",\r\n\t\t},\r\n\t};\r\n}\r\n"],"mappings":"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","names":["useCallback","useState","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","jsx","_a","_b","useState","useCallback","err","CampaignDialog","AddLeadDialog","CampaignsContent","_c","_d","_e"]}
1
+ {"version":3,"sources":["../call-control-sdk/lib/pages/campaigns/index.tsx","../node_modules/@mui/icons-material/Add.mjs","../node_modules/@mui/icons-material/Archive.mjs","../node_modules/@mui/icons-material/ChevronLeft.mjs","../node_modules/@mui/icons-material/ChevronRight.mjs","../node_modules/@mui/icons-material/Delete.mjs","../node_modules/@mui/icons-material/Edit.mjs","../node_modules/@mui/icons-material/Settings.mjs","../node_modules/@mui/icons-material/UploadFile.mjs","../node_modules/@mui/icons-material/VisibilityOutlined.mjs","../call-control-sdk/lib/components/SDKButton.tsx","../call-control-sdk/lib/pages/campaigns/useCampaigns.ts","../node_modules/@mui/icons-material/Clear.mjs","../call-control-sdk/lib/pages/campaigns/types.ts","../call-control-sdk/lib/pages/campaigns/styles.ts"],"sourcesContent":["import React, { memo, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport {\r\n\tBox,\r\n\tChip,\r\n\tCircularProgress,\r\n\tFormControl,\r\n\tFormControlLabel,\r\n\tCheckbox,\r\n\tIconButton,\r\n\tInputAdornment,\r\n\tMenuItem,\r\n\tOutlinedInput,\r\n\tPaper,\r\n\tSelect,\r\n\tTab,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTableHead,\r\n\tTablePagination,\r\n\tTableRow,\r\n\tTabs,\r\n\tTextField,\r\n\tTooltip,\r\n\tTypography,\r\n\tuseTheme,\r\n} from \"@mui/material\";\r\nimport AddIcon from \"@mui/icons-material/Add\";\r\nimport ArchiveIcon from \"@mui/icons-material/Archive\";\r\nimport ChevronLeftIcon from \"@mui/icons-material/ChevronLeft\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport DeleteIcon from \"@mui/icons-material/Delete\";\r\nimport DownloadIcon from \"@mui/icons-material/Download\";\r\nimport EditIcon from \"@mui/icons-material/Edit\";\r\nimport PauseIcon from \"@mui/icons-material/Pause\";\r\nimport PhoneIcon from \"@mui/icons-material/Phone\";\r\nimport PlayArrowIcon from \"@mui/icons-material/PlayArrow\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport SettingsIcon from \"@mui/icons-material/Settings\";\r\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\r\nimport VisibilityOutlinedIcon from \"@mui/icons-material/VisibilityOutlined\";\r\n\r\nimport { SDKProvider } from \"../../components/SDKProvider\";\r\nimport { SDKPageHeader } from \"../../components/SDKPageHeader\";\r\nimport { SDKButton } from \"../../components/SDKButton\";\r\nimport { SDKPermissionGuard } from \"../../components/SDKPermissionGuard\";\r\nimport { SDK_PERMISSIONS } from \"../../permissions/sdk-constants\";\r\nimport { useToast } from \"../../services/toastMessage\";\r\nimport { useSDKPermissions } from \"../../hooks/useSDKPermissions\";\r\nimport { useGetCallerData } from \"../../hooks/useGetCallerData\";\r\nimport { useCampaigns, useLeads, useQueues } from \"./useCampaigns\";\r\nimport { getRecordingByCall } from \"../cdrReport/useCdrReport\";\r\nimport DateRangePicker from \"../common/components/DateRangePicker\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\r\nimport ClearIcon from \"@mui/icons-material/Clear\";\r\nimport type { Dayjs } from \"dayjs\";\r\nimport type {\r\n\tCampaign,\r\n\tCampaignCreatePayload,\r\n\tCreateQueuePayload,\r\n\tLead,\r\n\tLeadCallData,\r\n\tLeadCreatePayload,\r\n\tQueue,\r\n\tQueueLinkPayload,\r\n} from \"./types\";\r\nimport {\r\n\tAGENT_TYPES,\r\n\tCAMPAIGN_TYPES,\r\n\tDAYS_OF_WEEK,\r\n\tdefaultFormData,\r\n\tDIALING_MODES_MAP,\r\n\tLEAD_PRIORITY_OPTIONS,\r\n\tLEAD_STATUSES,\r\n} from \"./types\";\r\nimport {\r\n\tlabelSx,\r\n\tsectionTitleSx,\r\n\theadCellSx,\r\n\tbodyCellSx,\r\n\ttableRowSx,\r\n\tinputSx,\r\n\tcampaignCardBaseSx,\r\n\tcampaignCardSelectedSx,\r\n\tdialogHeaderSx,\r\n\tdialogFooterSx,\r\n\tstatusChipSx,\r\n\tleadStatusChipSx,\r\n\tleadPriorityChipSx,\r\n\tdaychipSx,\r\n\tSTATUS_COLORS,\r\n} from \"./styles\";\r\n\r\n// ──── Helpers ─────────────────────────────────────────────────────────────────\r\n\r\nfunction validatePhone(raw: string): string | null {\r\n\tconst trimmed = (raw || \"\").trim();\r\n\tif (!trimmed) return \"Phone number is required\";\r\n\tconst digits = trimmed.startsWith(\"+91\")\r\n\t\t? trimmed.slice(3)\r\n\t\t: trimmed.startsWith(\"91\") && trimmed.length === 12\r\n\t\t\t? trimmed.slice(2)\r\n\t\t\t: trimmed;\r\n\tif (!/^\\d{10}$/.test(digits)) return \"Must be 10 digits, 91+10, or +91+10\";\r\n\treturn null;\r\n}\r\n\r\nfunction campaignToFormData(c: Campaign): CampaignCreatePayload {\r\n\treturn {\r\n\t\tname: c.name || \"\",\r\n\t\tdescription: c.description || \"\",\r\n\t\tcampaignType: (c.campaignType || \"OUTBOUND_CAMPAIGN\").toUpperCase(),\r\n\t\tdialingMode: (c.dialingMode || \"PREVIEW\").toUpperCase(),\r\n\t\tmaxConcurrentCalls: c.maxConcurrentCalls ?? 5,\r\n\t\tcallsPerAgent: c.callsPerAgent ?? 1,\r\n\t\tstartTime: c.startTime ? c.startTime.slice(0, 5) : \"09:00\",\r\n\t\tendTime: c.endTime ? c.endTime.slice(0, 5) : \"17:00\",\r\n\t\tdaysOfWeek: c.daysOfWeek || [1, 2, 3, 4, 5],\r\n\t\ttimezone: c.timezone || \"Asia/Kolkata\",\r\n\t\tscheduledStart: c.scheduledStart || \"\",\r\n\t\tscheduledEnd: c.scheduledEnd || \"\",\r\n\t\tmaxAttempts: c.maxAttempts ?? 3,\r\n\t\tretryIntervalMinutes: c.retryIntervalMinutes ?? 15,\r\n\t\tcallerId: c.callerId || \"\",\r\n\t\tringTimeoutSeconds: c.ringTimeoutSeconds ?? 30,\r\n\t\tanswerTimeoutSeconds: c.answerTimeoutSeconds ?? 30,\r\n\t\tagentType: c.agentType || \"HUMAN\",\r\n\t\taiBotId: null,\r\n\t\tpriority: c.priority ?? 5,\r\n\t\tsettings: c.settings || {},\r\n\t\tqueueLinks: (c.campaignQueues || []).map((q) => ({\r\n\t\t\tqueueId: q.queueId,\r\n\t\t\tpriorityOverride: q.priorityOverride ?? 1,\r\n\t\t\tminWaitBeforeCallback: q.minWaitBeforeCallback ?? 0,\r\n\t\t})),\r\n\t};\r\n}\r\n\r\n// ──── Dialog tab sub-components ───────────────────────────────────────────────\r\n\r\ntype TabFormProps = {\r\n\tformData: CampaignCreatePayload;\r\n\tsetFormData: React.Dispatch<React.SetStateAction<CampaignCreatePayload>>;\r\n};\r\n\r\nfunction BasicInfoTab({ formData, setFormData, isEditMode }: TabFormProps & { isEditMode: boolean }) {\r\n\tconst handleChange = (field: keyof CampaignCreatePayload, value: any) => {\r\n\t\tsetFormData((prev) => {\r\n\t\t\tconst updated = { ...prev, [field]: value };\r\n\t\t\tif (field === \"campaignType\") {\r\n\t\t\t\tupdated.dialingMode = DIALING_MODES_MAP[value as string]?.[0] || \"\";\r\n\t\t\t}\r\n\t\t\treturn updated;\r\n\t\t});\r\n\t};\r\n\r\n\tconst mappedModes = DIALING_MODES_MAP[formData.campaignType] || [];\r\n\tconst availableModes = formData.dialingMode && !mappedModes.includes(formData.dialingMode)\r\n\t\t? [formData.dialingMode, ...mappedModes]\r\n\t\t: mappedModes;\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Basic Info</Typography>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1.5fr 1fr\", lg: \"1.5fr 1fr 1fr\" }, gap: 2, mb: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Campaign Name <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" value={formData.name}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"name\", e.target.value)} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Campaign Type <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.campaignType}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"campaignType\", e.target.value)}\r\n\t\t\t\t\t\t\tdisabled={isEditMode}>\r\n\t\t\t\t\t\t\t{CAMPAIGN_TYPES.map((t) => <MenuItem key={t} value={t}>{t}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ mb: 2 }}>\r\n\t\t\t\t<Typography sx={labelSx}>Description</Typography>\r\n\t\t\t\t<TextField fullWidth size=\"small\" multiline rows={3} value={formData.description}\r\n\t\t\t\t\tonChange={(e) => handleChange(\"description\", e.target.value)} sx={inputSx} />\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Dialing Mode <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.dialingMode}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"dialingMode\", e.target.value)}>\r\n\t\t\t\t\t\t\t{availableModes.map((m) => <MenuItem key={m} value={m}>{m}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Priority</Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.priority ?? 5}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"priority\", Number(e.target.value))}>\r\n\t\t\t\t\t\t\t{LEAD_PRIORITY_OPTIONS.map((o) => <MenuItem key={o.label} value={o.value}>{o.label}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\nfunction DialingConfigTab({ formData, setFormData }: TabFormProps) {\r\n\tconst handleChange = (field: keyof CampaignCreatePayload, value: any) =>\r\n\t\tsetFormData((prev) => ({ ...prev, [field]: value }));\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Dialing Configuration</Typography>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Max Concurrent Calls <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.maxConcurrentCalls}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"maxConcurrentCalls\", parseInt(e.target.value) || 1)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Calls Per Agent</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.callsPerAgent}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"callsPerAgent\", parseFloat(e.target.value) || 1)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 0.1, step: 0.1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Ring Timeout (sec)</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.ringTimeoutSeconds}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"ringTimeoutSeconds\", parseInt(e.target.value) || 30)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 5 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Answer Timeout (sec)</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.answerTimeoutSeconds}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"answerTimeoutSeconds\", parseInt(e.target.value) || 0)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 0 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Max Attempts <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.maxAttempts || \"\"}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"maxAttempts\", parseInt(e.target.value) || 0)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Retry Interval (min)</Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"number\" value={formData.retryIntervalMinutes}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"retryIntervalMinutes\", parseInt(e.target.value) || 5)}\r\n\t\t\t\t\t\tslotProps={{ htmlInput: { min: 1 } }} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Agent Type</Typography>\r\n\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t<Select value={formData.agentType}\r\n\t\t\t\t\t\t\tonChange={(e) => handleChange(\"agentType\", e.target.value)}>\r\n\t\t\t\t\t\t\t{AGENT_TYPES.map((t) => <MenuItem key={t} value={t}>{t}</MenuItem>)}\r\n\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t</FormControl>\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\nfunction ScheduleTab({ formData, setFormData }: TabFormProps) {\r\n\tconst handleChange = (field: keyof CampaignCreatePayload, value: any) =>\r\n\t\tsetFormData((prev) => ({ ...prev, [field]: value }));\r\n\r\n\tconst toggleDay = (day: number) =>\r\n\t\tsetFormData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tdaysOfWeek: prev.daysOfWeek.includes(day)\r\n\t\t\t\t? prev.daysOfWeek.filter((d) => d !== day)\r\n\t\t\t\t: [...prev.daysOfWeek, day].sort(),\r\n\t\t}));\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Operating Schedule</Typography>\r\n\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2, mb: 2 }}>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>Start Time <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"time\" value={formData.startTime}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"startTime\", e.target.value)} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box>\r\n\t\t\t\t\t<Typography sx={labelSx}>End Time <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t<TextField fullWidth size=\"small\" type=\"time\" value={formData.endTime}\r\n\t\t\t\t\t\tonChange={(e) => handleChange(\"endTime\", e.target.value)} sx={inputSx} />\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t\t<Box sx={{ mb: 2 }}>\r\n\t\t\t\t<Typography sx={labelSx}>Timezone</Typography>\r\n\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t<Select value={formData.timezone} onChange={(e) => handleChange(\"timezone\", e.target.value)}>\r\n\t\t\t\t\t\t{[\"Etc/UTC\",\"US/Eastern\",\"US/Central\",\"US/Mountain\",\"US/Pacific\",\r\n\t\t\t\t\t\t \"Europe/London\",\"Europe/Berlin\",\"Asia/Kolkata\",\"Asia/Tokyo\",\"Australia/Sydney\"\r\n\t\t\t\t\t\t].map((tz) => <MenuItem key={tz} value={tz}>{tz}</MenuItem>)}\r\n\t\t\t\t\t</Select>\r\n\t\t\t\t</FormControl>\r\n\t\t\t</Box>\r\n\t\t\t<Box>\r\n\t\t\t\t<Typography sx={labelSx}>Days of Week</Typography>\r\n\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\", mt: 0.5 }}>\r\n\t\t\t\t\t{DAYS_OF_WEEK.map((day) => (\r\n\t\t\t\t\t\t<Chip\r\n\t\t\t\t\t\t\tkey={day.value}\r\n\t\t\t\t\t\t\tlabel={day.label}\r\n\t\t\t\t\t\t\tonClick={() => toggleDay(day.value)}\r\n\t\t\t\t\t\t\tvariant={formData.daysOfWeek.includes(day.value) ? \"filled\" : \"outlined\"}\r\n\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\tsx={daychipSx(formData.daysOfWeek.includes(day.value))}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Queue Linking Tab ───────────────────────────────────────────────────────\r\n\r\nfunction QueueLinkingTab({\r\n\tformData, setFormData, editingCampaign, parentQueueNameMap, onQueuesRefreshed,\r\n}: TabFormProps & {\r\n\teditingCampaign: Campaign | null;\r\n\tparentQueueNameMap: Record<number, string>;\r\n\tonQueuesRefreshed?: (queues: Queue[]) => void;\r\n}) {\r\n\tconst { showToast } = useToast();\r\n\tconst { fetchQueues, createQueue } = useQueues();\r\n\r\n\tconst queueLinks = formData.queueLinks || [];\r\n\tconst isEditMode = !!editingCampaign;\r\n\tconst campaignQueues = editingCampaign?.campaignQueues || [];\r\n\r\n\tconst [allQueues, setAllQueues] = useState<Queue[]>([]);\r\n\tconst [queueNames, setQueueNames] = useState<Record<number, string>>({});\r\n\tconst [selectedQueueIds, setSelectedQueueIds] = useState<number[]>([]);\r\n\tconst [createOpen, setCreateOpen] = useState(false);\r\n\tconst [newQueue, setNewQueue] = useState<CreateQueuePayload>({ name: \"\", description: \"\" });\r\n\tconst [creatingQueue, setCreatingQueue] = useState(false);\r\n\r\n\tconst loadQueues = useCallback(async () => {\r\n\t\tconst list = await fetchQueues();\r\n\t\tsetAllQueues(list);\r\n\t\tconst map: Record<number, string> = {};\r\n\t\tlist.forEach((q) => { map[q.id] = q.name; });\r\n\t\tsetQueueNames(map);\r\n\t\tonQueuesRefreshed?.(list);\r\n\t}, [fetchQueues, onQueuesRefreshed]);\r\n\r\n\tuseEffect(() => { loadQueues(); }, [loadQueues]);\r\n\r\n\tconst handleCreateQueue = async () => {\r\n\t\tif (!newQueue.name.trim()) {\r\n\t\t\tshowToast(\"Queue name is required\", \"warning\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetCreatingQueue(true);\r\n\t\ttry {\r\n\t\t\tawait createQueue(newQueue);\r\n\t\t\tshowToast(\"Queue created successfully\", \"success\");\r\n\t\t\tsetCreateOpen(false);\r\n\t\t\tsetNewQueue({ name: \"\", description: \"\" });\r\n\t\t\tloadQueues();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to create queue\", \"error\");\r\n\t\t} finally {\r\n\t\t\tsetCreatingQueue(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst linkedIds = new Set(\r\n\t\tisEditMode ? campaignQueues.map((q) => q.queueId) : queueLinks.map((q) => q.queueId),\r\n\t);\r\n\tconst availableQueues = allQueues.filter((q) => !linkedIds.has(q.id));\r\n\r\n\tconst handleAddQueues = () => {\r\n\t\tif (selectedQueueIds.length === 0) return;\r\n\t\tconst newLinks: QueueLinkPayload[] = selectedQueueIds.map((qId) => ({\r\n\t\t\tqueueId: qId, priorityOverride: 5, minWaitBeforeCallback: 0,\r\n\t\t}));\r\n\t\tsetFormData((prev) => ({ ...prev, queueLinks: [...(prev.queueLinks || []), ...newLinks] }));\r\n\t\tshowToast(`${selectedQueueIds.length} queue(s) added`, \"success\");\r\n\t\tsetSelectedQueueIds([]);\r\n\t};\r\n\r\n\tconst handleRemoveQueue = (queueId: number) => {\r\n\t\tsetFormData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tqueueLinks: (prev.queueLinks || []).filter((q) => q.queueId !== queueId),\r\n\t\t}));\r\n\t\tshowToast(\"Queue removed\", \"success\");\r\n\t};\r\n\r\n\tconst handleCellUpdate = (queueId: number, field: keyof QueueLinkPayload, value: string) => {\r\n\t\tconst numVal = parseInt(value) || 0;\r\n\t\tsetFormData((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tqueueLinks: (prev.queueLinks || []).map((q) =>\r\n\t\t\t\tq.queueId === queueId ? { ...q, [field]: numVal } : q,\r\n\t\t\t),\r\n\t\t}));\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t{/* Inline Create Queue dialog */}\r\n\t\t\t{createOpen && (\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tposition: \"fixed\", inset: 0, zIndex: 1600,\r\n\t\t\t\t\t\tbackgroundColor: \"rgba(0,0,0,0.45)\",\r\n\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Paper elevation={6} sx={{ width: { xs: \"90vw\", sm: 420 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Create New Queue</Typography>\r\n\t\t\t\t\t\t\t<IconButton size=\"small\" onClick={() => !creatingQueue && setCreateOpen(false)} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box sx={{ p: 2.5, display: \"flex\", flexDirection: \"column\", gap: 1.5 }}>\r\n\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t<Typography sx={labelSx}>Queue Name <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={newQueue.name}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => setNewQueue({ ...newQueue, name: e.target.value })} sx={inputSx} />\r\n\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\t<Typography sx={labelSx}>Description</Typography>\r\n\t\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" multiline rows={3} value={newQueue.description}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => setNewQueue({ ...newQueue, description: e.target.value })} sx={inputSx} />\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\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={() => setCreateOpen(false)} disabled={creatingQueue}>Cancel</SDKButton>\r\n\t\t\t\t\t\t\t<SDKButton onClick={handleCreateQueue} disabled={creatingQueue}\r\n\t\t\t\t\t\t\t\tstartIcon={creatingQueue ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\t\t\tCreate\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Paper>\r\n\t\t\t\t</Box>\r\n\t\t\t)}\r\n\r\n\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", mb: 2 }}>\r\n\t\t\t\t<Typography sx={sectionTitleSx}>Linked Queues</Typography>\r\n\t\t\t\t<SDKButton startIcon={<AddIcon />} onClick={() => setCreateOpen(true)}>\r\n\t\t\t\t\tCreate New Queue\r\n\t\t\t\t</SDKButton>\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* Add Queue — multi-select */}\r\n\t\t\t<Box sx={{\r\n\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\talignItems: { xs: \"stretch\", sm: \"center\" },\r\n\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\tgap: 1.5, mb: 2,\r\n\t\t\t}}>\r\n\t\t\t\t<FormControl size=\"small\" sx={{ flex: 2 }}>\r\n\t\t\t\t\t<Select\r\n\t\t\t\t\t\tmultiple\r\n\t\t\t\t\t\tvalue={selectedQueueIds}\r\n\t\t\t\t\t\tonChange={(e) => setSelectedQueueIds(e.target.value as number[])}\r\n\t\t\t\t\t\tdisplayEmpty\r\n\t\t\t\t\t\trenderValue={(selected) =>\r\n\t\t\t\t\t\t\t(selected as number[]).length === 0\r\n\t\t\t\t\t\t\t\t? <Typography sx={{ color: \"#999\", fontSize: \"0.85rem\" }}>Select queues to link</Typography>\r\n\t\t\t\t\t\t\t\t: (\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", flexWrap: \"wrap\", gap: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t{(selected as number[]).map((id) => (\r\n\t\t\t\t\t\t\t\t\t\t\t<Chip key={id} size=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\tlabel={queueNames[id] || parentQueueNameMap[id] || `Queue #${id}`}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ height: 22, fontSize: \"0.75rem\", fontWeight: 600, backgroundColor: \"#e0f2f1\", color: \"#00695c\" }} />\r\n\t\t\t\t\t\t\t\t\t\t))}\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}\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tborderRadius: \"8px\", fontSize: \"0.85rem\",\r\n\t\t\t\t\t\t\t\"& .MuiSelect-select\": { display: \"flex\", flexWrap: \"wrap\", gap: 0.5, py: 0.75 },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tMenuProps={{\r\n\t\t\t\t\t\t\tPaperProps: { sx: { maxHeight: 250, borderRadius: \"8px\", mt: 0.5, boxShadow: \"0 4px 20px rgba(0,0,0,0.12)\" } },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{availableQueues.length === 0\r\n\t\t\t\t\t\t\t? <MenuItem value=\"\" disabled>No available queues</MenuItem>\r\n\t\t\t\t\t\t\t: availableQueues.map((q) => (\r\n\t\t\t\t\t\t\t\t<MenuItem key={q.id} value={q.id} sx={{ py: 0.75, px: 1.5, fontSize: \"0.85rem\" }}>\r\n\t\t\t\t\t\t\t\t\t<Checkbox size=\"small\" checked={selectedQueueIds.includes(q.id)}\r\n\t\t\t\t\t\t\t\t\t\tsx={{ p: 0.5, mr: 1, color: \"#1A5F6C\", \"&.Mui-checked\": { color: \"#1A5F6C\" } }} />\r\n\t\t\t\t\t\t\t\t\t{q.name} (ID: {q.id})\r\n\t\t\t\t\t\t\t\t</MenuItem>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Select>\r\n\t\t\t\t</FormControl>\r\n\t\t\t\t<SDKButton onClick={handleAddQueues} disabled={selectedQueueIds.length === 0} sx={{ whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\tAdd To List\r\n\t\t\t\t</SDKButton>\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* Linked queues table */}\r\n\t\t\t{queueLinks.length === 0 ? (\r\n\t\t\t\t<Paper variant=\"outlined\" sx={{ p: 3, textAlign: \"center\", borderRadius: 2, borderStyle: \"dashed\" }}>\r\n\t\t\t\t\t<Typography sx={{ color: \"#999\", fontSize: \"0.9rem\" }}>\r\n\t\t\t\t\t\tNo queues linked yet. Select queues above to add.\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t</Paper>\r\n\t\t\t) : (\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ borderRadius: 2, overflow: \"visible\" }}>\r\n\t\t\t\t\t<Table size=\"small\">\r\n\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t<TableRow sx={{ backgroundColor: \"#f1f1f1\" }}>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Queue Name</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Priority Override</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Min Wait Before Callback</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={{ ...(headCellSx as any), textAlign: \"right\" }}>Action</TableCell>\r\n\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t{queueLinks.map((q) => (\r\n\t\t\t\t\t\t\t\t<TableRow key={q.queueId} sx={tableRowSx}>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t{queueNames[q.queueId] || parentQueueNameMap[q.queueId] || `Queue #${q.queueId}`}\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t<FormControl size=\"small\" sx={{ width: 120 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Select\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={q.priorityOverride ?? 5}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => handleCellUpdate(q.queueId, \"priorityOverride\", String(e.target.value))}\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{LEAD_PRIORITY_OPTIONS.map((opt) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem key={opt.label} value={opt.value}>{opt.label}</MenuItem>\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</Select>\r\n\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t<TextField size=\"small\" type=\"number\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={q.minWaitBeforeCallback}\r\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => handleCellUpdate(q.queueId, \"minWaitBeforeCallback\", e.target.value)}\r\n\t\t\t\t\t\t\t\t\t\t\tslotProps={{\r\n\t\t\t\t\t\t\t\t\t\t\t\thtmlInput: { min: 0, style: { fontSize: \"0.85rem\", padding: \"4px 8px\" } },\r\n\t\t\t\t\t\t\t\t\t\t\t\tinput: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tendAdornment: (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<InputAdornment position=\"end\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.75rem\", color: \"#666\" }}>s</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</InputAdornment>\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},\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\tsx={{ width: 100, \"& .MuiOutlinedInput-root\": { borderRadius: \"4px\" } }} />\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...(bodyCellSx as any), textAlign: \"right\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<SDKButton variant=\"danger\" size=\"small\" onClick={() => handleRemoveQueue(q.queueId)}>\r\n\t\t\t\t\t\t\t\t\t\t\tRemove\r\n\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t</TableContainer>\r\n\t\t\t)}\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Leads Tab (inside dialog) ───────────────────────────────────────────────\r\n\r\nfunction LeadsTabInDialog({\r\n\teditingCampaign,\r\n\tonLeadsChange,\r\n}: {\r\n\teditingCampaign: Campaign | null;\r\n\tonLeadsChange?: () => void;\r\n}) {\r\n\tconst { showToast } = useToast();\r\n\tconst showVoicemail = editingCampaign?.campaignType === \"AFTER_HOURS_CALLBACK\";\r\n\tconst { leads, fetchLeads, createLead, uploadLeadsExcel, downloadLeadTemplate } = useLeads();\r\n\tconst [adding, setAdding] = useState(false);\r\n\tconst [leadForm, setLeadForm] = useState<LeadCreatePayload>({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\tconst [search, setSearch] = useState(\"\");\r\n\tconst [uploadFile, setUploadFile] = useState<File | null>(null);\r\n\tconst [uploading, setUploading] = useState(false);\r\n\tconst uploadRef = useRef<HTMLInputElement>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (editingCampaign) fetchLeads(editingCampaign.id, { page: 1, pageSize: 100 });\r\n\t}, [editingCampaign, fetchLeads]);\r\n\r\n\tif (!editingCampaign) {\r\n\t\treturn (\r\n\t\t\t<Box sx={{ p: 4, textAlign: \"center\" }}>\r\n\t\t\t\t<Typography sx={{ color: \"#999\", fontSize: \"0.9rem\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\tSave the campaign first, then you can add leads.\r\n\t\t\t\t</Typography>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\tconst handleAddLead = async () => {\r\n\t\tconst err = validatePhone(leadForm.phoneNumber);\r\n\t\tif (err) { showToast(err, \"warning\"); return; }\r\n\t\tsetAdding(true);\r\n\t\ttry {\r\n\t\t\tawait createLead(editingCampaign.id, { ...leadForm, priority: leadForm.priority ?? 5 });\r\n\t\t\tshowToast(\"Lead added successfully\", \"success\");\r\n\t\t\tsetLeadForm({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\t\t\tfetchLeads(editingCampaign.id, { page: 1, pageSize: 100 });\r\n\t\t\tonLeadsChange?.();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to add lead\", \"error\");\r\n\t\t} finally { setAdding(false); }\r\n\t};\r\n\r\n\tconst handleUpload = async () => {\r\n\t\tif (!uploadFile) return;\r\n\t\tsetUploading(true);\r\n\t\ttry {\r\n\t\t\tawait uploadLeadsExcel(editingCampaign.id, uploadFile);\r\n\t\t\tshowToast(\"Leads uploaded successfully\", \"success\");\r\n\t\t\tsetUploadFile(null);\r\n\t\t\tif (uploadRef.current) uploadRef.current.value = \"\";\r\n\t\t\tfetchLeads(editingCampaign.id, { page: 1, pageSize: 100 });\r\n\t\t\tonLeadsChange?.();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to upload leads\", \"error\");\r\n\t\t} finally { setUploading(false); }\r\n\t};\r\n\r\n\tconst handleDownload = async () => {\r\n\t\ttry { await downloadLeadTemplate(editingCampaign.id); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Download failed\", \"error\"); }\r\n\t};\r\n\r\n\tconst filtered = leads.filter((l) =>\r\n\t\t!search || l.callerName?.toLowerCase().includes(search.toLowerCase()) || l.phoneNumber?.includes(search),\r\n\t);\r\n\r\n\treturn (\r\n\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t<Typography sx={sectionTitleSx}>Add Lead Manually</Typography>\r\n\t\t\t<Paper variant=\"outlined\" sx={{ p: 2, mb: 2.5, borderRadius: 2 }}>\r\n\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2, mb: 2 }}>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Phone Number <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" placeholder=\"+1234567890\" value={leadForm.phoneNumber}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, phoneNumber: e.target.value.replace(/[^0-9+\\-() ]/g, \"\") }))}\r\n\t\t\t\t\t\t\terror={!!leadForm.phoneNumber && !!validatePhone(leadForm.phoneNumber)}\r\n\t\t\t\t\t\t\thelperText={leadForm.phoneNumber ? validatePhone(leadForm.phoneNumber) || \"\" : \"\"}\r\n\t\t\t\t\t\t\tsx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Caller Name</Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={leadForm.callerName || \"\"}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, callerName: e.target.value }))} sx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Source</Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={leadForm.source || \"\"}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, source: e.target.value }))} sx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Priority</Typography>\r\n\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t\t<Select value={leadForm.priority ?? 5}\r\n\t\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, priority: Number(e.target.value) }))}>\r\n\t\t\t\t\t\t\t\t{LEAD_PRIORITY_OPTIONS.map((opt) => <MenuItem key={opt.label} value={opt.value}>{opt.label}</MenuItem>)}\r\n\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<Box sx={{ gridColumn: \"1 / -1\" }}>\r\n\t\t\t\t\t\t<Typography sx={labelSx}>Notes</Typography>\r\n\t\t\t\t\t\t<TextField fullWidth size=\"small\" multiline minRows={2} maxRows={8}\r\n\t\t\t\t\t\t\tvalue={leadForm.notes || \"\"}\r\n\t\t\t\t\t\t\tonChange={(e) => setLeadForm((p) => ({ ...p, notes: e.target.value }))} sx={inputSx} />\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"flex-end\" }}>\r\n\t\t\t\t\t<SDKButton onClick={handleAddLead} disabled={adding}\r\n\t\t\t\t\t\tstartIcon={adding ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tAdd Lead\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\r\n\t\t\t<Typography sx={sectionTitleSx}>Upload Leads from File</Typography>\r\n\t\t\t<Paper variant=\"outlined\" sx={{ p: 2, mb: 2.5, borderRadius: 2 }}>\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<UploadFileIcon />} onClick={() => uploadRef.current?.click()}>\r\n\t\t\t\t\t\tChoose File\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t<input ref={uploadRef} type=\"file\" accept=\".csv,.xlsx,.xls\" hidden\r\n\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\tconst f = e.target.files?.[0];\r\n\t\t\t\t\t\t\tif (!f) return;\r\n\t\t\t\t\t\t\tif (![\".csv\", \".xlsx\", \".xls\"].some((ext) => f.name.toLowerCase().endsWith(ext))) {\r\n\t\t\t\t\t\t\t\tshowToast(\"Please select a CSV or Excel file\", \"warning\"); return;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsetUploadFile(f);\r\n\t\t\t\t\t\t}} />\r\n\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", color: \"#666\", flex: 1, fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t{uploadFile ? uploadFile.name : \"No file chosen\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t{uploadFile && (\r\n\t\t\t\t\t\t<SDKButton variant=\"cancel\" size=\"small\"\r\n\t\t\t\t\t\t\tonClick={() => { setUploadFile(null); if (uploadRef.current) uploadRef.current.value = \"\"; }}>\r\n\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<DownloadIcon />} onClick={handleDownload}>\r\n\t\t\t\t\t\tSample Template\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"flex-end\", mt: 1.5 }}>\r\n\t\t\t\t\t<SDKButton onClick={handleUpload} disabled={uploading || !uploadFile}\r\n\t\t\t\t\t\tstartIcon={uploading ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tUpload\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\r\n\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", mb: 1.5 }}>\r\n\t\t\t\t<Typography sx={sectionTitleSx}>Leads ({leads.length})</Typography>\r\n\t\t\t\t<OutlinedInput size=\"small\" value={search} onChange={(e) => setSearch(e.target.value)} placeholder=\"Search...\"\r\n\t\t\t\t\tsx={{ width: 200, fontSize: \"0.85rem\", height: 34, borderRadius: \"20px\" }}\r\n\t\t\t\t\tstartAdornment={<InputAdornment position=\"start\"><SearchIcon sx={{ fontSize: 16, color: \"#aaa\" }} /></InputAdornment>} />\r\n\t\t\t</Box>\r\n\t\t\t{filtered.length === 0 ? (\r\n\t\t\t\t<Paper variant=\"outlined\" sx={{ p: 3, textAlign: \"center\", borderRadius: 2, borderStyle: \"dashed\" }}>\r\n\t\t\t\t\t<Typography sx={{ color: \"#999\", fontSize: \"0.9rem\" }}>\r\n\t\t\t\t\t\t{leads.length === 0 ? \"No leads yet.\" : \"No leads match your search.\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t</Paper>\r\n\t\t\t) : (\r\n\t\t\t\t<TableContainer component={Paper} variant=\"outlined\" sx={{ borderRadius: 2, overflow: \"visible\" }}>\r\n\t\t\t\t\t<Table size=\"small\">\r\n\t\t\t\t\t\t<TableHead>\r\n\t\t\t\t\t\t\t<TableRow sx={{ backgroundColor: \"#f1f1f1\" }}>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Phone Number</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Status</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Source</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Attempts</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Last Outcome</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Notes</TableCell>\r\n\t\t\t\t\t\t\t\t<TableCell sx={headCellSx}>Outcome</TableCell>{showVoicemail && <TableCell sx={headCellSx}>Voice Mail</TableCell>}\r\n\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t</TableHead>\r\n\t\t\t\t\t\t<TableBody>\r\n\t\t\t\t\t\t\t{filtered.map((lead) => (\r\n\t\t\t\t\t\t\t\t<TableRow key={lead.id} sx={tableRowSx}>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.phoneNumber}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t<Chip label={lead.status || \"pending\"} size=\"small\" sx={leadStatusChipSx(lead.status)} />\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.source || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.attemptCount ?? 0}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastOutcome || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...(bodyCellSx as any), maxWidth: 200, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t{lead.notes ? <Tooltip title={lead.notes} arrow placement=\"top\"><span>{lead.notes}</span></Tooltip> : \"\"}\r\n\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastReason || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t{showVoicemail && <TableCell sx={{ ...bodyCellSx, minWidth: 180 }}>{lead.originalCallId ? <CallRecording callUuid={lead.originalCallId} recordingPath={lead.voicemail} iconOnly /> : \"\"}</TableCell>}\r\n\t\t\t\t\t\t\t\t\t</TableRow>\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t</TableBody>\r\n\t\t\t\t\t</Table>\r\n\t\t\t\t</TableContainer>\r\n\t\t\t)}\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Campaign Create / Edit Dialog ───────────────────────────────────────────\r\n\r\ninterface CampaignDialogProps {\r\n\topen: boolean;\r\n\teditingCampaign: Campaign | null;\r\n\tformData: CampaignCreatePayload;\r\n\tsetFormData: React.Dispatch<React.SetStateAction<CampaignCreatePayload>>;\r\n\tsaving: boolean;\r\n\tonSave: () => void;\r\n\tonClose: () => void;\r\n\tparentQueueNameMap: Record<number, string>;\r\n\tonQueuesRefreshed?: (queues: Queue[]) => void;\r\n\tonLeadsChange?: () => void;\r\n}\r\n\r\nconst CampaignDialog = memo(function CampaignDialog({\r\n\topen, editingCampaign, formData, setFormData, saving, onSave, onClose,\r\n\tparentQueueNameMap, onQueuesRefreshed, onLeadsChange,\r\n}: CampaignDialogProps) {\r\n\tconst { showToast } = useToast();\r\n\tconst [tab, setTab] = useState(0);\r\n\tuseEffect(() => { if (open) setTab(0); }, [open]);\r\n\tif (!open) return null;\r\n\r\n\tconst TAB_LABELS = [\"Basic Info\", \"Dialing Configuration\", \"Schedule & Operating Hours\", \"Queue Linking\", \"Leads\"];\r\n\tconst lastSaveTab = 3; // Save shows from tab 0..3 inclusive; Leads (4) is read-only management\r\n\tconst leadsTabDisabled = !editingCampaign;\r\n\r\n\t// In edit mode, keep the Update button disabled until the form actually changes.\r\n\tconst isDirty = !editingCampaign\r\n\t\t|| JSON.stringify(formData) !== JSON.stringify(campaignToFormData(editingCampaign));\r\n\r\n\tconst validateTab = (t: number): boolean => {\r\n\t\tif (t === 0) {\r\n\t\t\tif (!formData.name.trim()) { showToast(\"Please fill Campaign Name\", \"warning\"); return false; }\r\n\t\t\tif (!formData.campaignType) { showToast(\"Please fill Campaign Type\", \"warning\"); return false; }\r\n\t\t\tif (!formData.dialingMode) { showToast(\"Please fill Dialing Mode\", \"warning\"); return false; }\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\tif (!formData.maxConcurrentCalls) { showToast(\"Please fill Max Concurrent Calls\", \"warning\"); return false; }\r\n\t\t\tif (!formData.maxAttempts) { showToast(\"Please fill Max Attempts\", \"warning\"); return false; }\r\n\t\t}\r\n\t\tif (t === 2) {\r\n\t\t\tif (!formData.startTime) { showToast(\"Please fill Start Time\", \"warning\"); return false; }\r\n\t\t\tif (!formData.endTime) { showToast(\"Please fill End Time\", \"warning\"); return false; }\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\tconst handleTabChange = (newTab: number) => {\r\n\t\tif (newTab === 4 && leadsTabDisabled) return;\r\n\t\tif (newTab > tab && !validateTab(tab)) return;\r\n\t\tsetTab(newTab);\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tposition: \"fixed\", inset: 0, zIndex: 1300,\r\n\t\t\t\tbackgroundColor: \"rgba(0,0,0,0.45)\",\r\n\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t}}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper\r\n\t\t\t\televation={6}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\twidth: { xs: \"95vw\", sm: 720, md: 880 },\r\n\t\t\t\t\tmaxHeight: \"92vh\",\r\n\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\tboxShadow: \"0 8px 32px rgba(26,95,108,0.18)\",\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{/* Header */}\r\n\t\t\t\t<Box sx={{\r\n\t\t\t\t\t...dialogHeaderSx,\r\n\t\t\t\t\tbackgroundColor: \"#1A5F6C\",\r\n\t\t\t\t\tcolor: \"#fff\",\r\n\t\t\t\t\t\"& .MuiIconButton-root\": { color: \"#fff\" },\r\n\t\t\t\t}}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">\r\n\t\t\t\t\t\t{editingCampaign ? \"Edit Campaign\" : \"Create Campaign\"}\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{/* Tabs */}\r\n\t\t\t\t<Tabs\r\n\t\t\t\t\tvalue={tab}\r\n\t\t\t\t\tonChange={(_, v) => handleTabChange(v)}\r\n\t\t\t\t\tvariant=\"scrollable\"\r\n\t\t\t\t\tscrollButtons=\"auto\"\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tborderBottom: \"1px solid #eee\",\r\n\t\t\t\t\t\tminHeight: 44,\r\n\t\t\t\t\t\t\"& .MuiTab-root\": {\r\n\t\t\t\t\t\t\tfontSize: \"0.85rem\",\r\n\t\t\t\t\t\t\tminHeight: 44,\r\n\t\t\t\t\t\t\ttextTransform: \"none\",\r\n\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"& .Mui-selected\": { color: \"#1A5F6C\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tTabIndicatorProps={{ style: { height: 3, backgroundColor: \"#1A5F6C\", borderRadius: \"3px 3px 0 0\" } }}\r\n\t\t\t\t>\r\n\t\t\t\t\t{TAB_LABELS.map((label, i) => (\r\n\t\t\t\t\t\t<Tab key={label} label={label} value={i} disabled={i === 4 && leadsTabDisabled} />\r\n\t\t\t\t\t))}\r\n\t\t\t\t</Tabs>\r\n\r\n\t\t\t\t{/* Tab content */}\r\n\t\t\t\t<Box sx={{ flex: 1, overflowY: \"auto\", minHeight: 380 }}>\r\n\t\t\t\t\t{tab === 0 && <BasicInfoTab formData={formData} setFormData={setFormData} isEditMode={!!editingCampaign} />}\r\n\t\t\t\t\t{tab === 1 && <DialingConfigTab formData={formData} setFormData={setFormData} />}\r\n\t\t\t\t\t{tab === 2 && <ScheduleTab formData={formData} setFormData={setFormData} />}\r\n\t\t\t\t\t{tab === 3 && (\r\n\t\t\t\t\t\t<QueueLinkingTab\r\n\t\t\t\t\t\t\tformData={formData}\r\n\t\t\t\t\t\t\tsetFormData={setFormData}\r\n\t\t\t\t\t\t\teditingCampaign={editingCampaign}\r\n\t\t\t\t\t\t\tparentQueueNameMap={parentQueueNameMap}\r\n\t\t\t\t\t\t\tonQueuesRefreshed={onQueuesRefreshed}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{tab === 4 && (\r\n\t\t\t\t\t\t<LeadsTabInDialog\r\n\t\t\t\t\t\t\teditingCampaign={editingCampaign}\r\n\t\t\t\t\t\t\tonLeadsChange={onLeadsChange}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\r\n\t\t\t\t{/* Footer — wizard nav */}\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t{tab > 0 && (\r\n\t\t\t\t\t\t<SDKButton variant=\"outlined\" onClick={() => setTab((t) => t - 1)}>Back</SDKButton>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{tab < lastSaveTab && (\r\n\t\t\t\t\t\t<SDKButton onClick={() => handleTabChange(tab + 1)}>Next</SDKButton>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{tab === lastSaveTab && (\r\n\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\teditingCampaign\r\n\t\t\t\t\t\t\t\t\t? SDK_PERMISSIONS.CAMPAIGNS_UPDATE\r\n\t\t\t\t\t\t\t\t\t: SDK_PERMISSIONS.CAMPAIGNS_CREATE,\r\n\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\tshowFallback={false}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<SDKButton onClick={onSave} disabled={saving || !isDirty}\r\n\t\t\t\t\t\t\t\tstartIcon={saving ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\t\t\t{editingCampaign ? \"Update\" : \"Create\"}\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ──── Add Lead Dialog ─────────────────────────────────────────────────────────\r\n\r\ninterface AddLeadDialogProps {\r\n\topen: boolean;\r\n\tdata: LeadCreatePayload;\r\n\tonChange: (data: LeadCreatePayload) => void;\r\n\tsaving: boolean;\r\n\tonSave: () => void;\r\n\tonClose: () => void;\r\n}\r\n\r\nconst AddLeadDialog = memo(function AddLeadDialog({\r\n\topen, data, onChange, saving, onSave, onClose,\r\n}: AddLeadDialogProps) {\r\n\tif (!open) return null;\r\n\tconst phoneError = data.phoneNumber ? validatePhone(data.phoneNumber) : null;\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tposition: \"fixed\", inset: 0, zIndex: 1400,\r\n\t\t\t\tbackgroundColor: \"rgba(0,0,0,0.45)\",\r\n\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t}}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"95vw\", sm: 560, lg: 720 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Add Lead</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t\t\t<Box sx={{ display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\", lg: \"1fr 1fr 1fr\" }, gap: 2 }}>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Phone Number <span style={{ color: \"red\" }}>*</span></Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" placeholder=\"+1234567890\"\r\n\t\t\t\t\t\t\t\tvalue={data.phoneNumber}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, phoneNumber: e.target.value.replace(/[^0-9+\\-() ]/g, \"\") })}\r\n\t\t\t\t\t\t\t\terror={!!phoneError} helperText={phoneError || \"\"} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Caller Name</Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={data.callerName || \"\"}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, callerName: e.target.value })} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Source</Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" value={data.source || \"\"}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, source: e.target.value })} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Priority</Typography>\r\n\t\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\r\n\t\t\t\t\t\t\t\t<Select value={data.priority ?? 5}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, priority: Number(e.target.value) })}>\r\n\t\t\t\t\t\t\t\t\t{LEAD_PRIORITY_OPTIONS.map((o) => <MenuItem key={o.label} value={o.value}>{o.label}</MenuItem>)}\r\n\t\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<Box sx={{ gridColumn: \"1 / -1\" }}>\r\n\t\t\t\t\t\t\t<Typography sx={labelSx}>Notes</Typography>\r\n\t\t\t\t\t\t\t<TextField fullWidth size=\"small\" multiline minRows={2} maxRows={8}\r\n\t\t\t\t\t\t\t\tvalue={data.notes || \"\"}\r\n\t\t\t\t\t\t\t\tonChange={(e) => onChange({ ...data, notes: e.target.value })} sx={inputSx} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t<SDKButton onClick={onSave} disabled={saving}\r\n\t\t\t\t\t\tstartIcon={saving ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tAdd Lead\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ──── Confirm Dialog ──────────────────────────────────────────────────────────\r\n\r\nfunction ConfirmDialog({\r\n\topen, title, message, loading, onConfirm, onClose,\r\n}: { open: boolean; title: string; message: string; loading?: boolean; onConfirm: () => void; onClose: () => void; }) {\r\n\tif (!open) return null;\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{ position: \"fixed\", inset: 0, zIndex: 1500, backgroundColor: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"90vw\", sm: 400 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(0,0,0,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, borderBottom: \"none\", pb: 0 }}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">{title}</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ px: 2.5, py: 1.5 }}>\r\n\t\t\t\t\t<Typography fontSize=\"0.85rem\" color=\"#555\" fontFamily=\"poppins, Arial, sans-serif\">{message}</Typography>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t<SDKButton variant=\"danger\" onClick={onConfirm} disabled={loading}\r\n\t\t\t\t\t\tstartIcon={loading ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tConfirm\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Call Recording player ───────────────────────────────────────────────────\r\n\r\nconst fmtRecordingDuration = (s: number): string => {\r\n\tif (!isFinite(s) || s < 0) return \"\";\r\n\tconst m = Math.floor(s / 60);\r\n\tconst sec = Math.floor(s % 60);\r\n\treturn `${m}:${sec.toString().padStart(2, \"0\")}`;\r\n};\r\n\r\n/* Coordinates playback so only one recording is open at a time. */\r\nconst activePlayers = new Set<(activeId: string) => void>();\r\nconst notifyPlay = (activeId: string) => {\r\n\tactivePlayers.forEach((fn) => fn(activeId));\r\n};\r\n\r\nfunction CallRecording({ callUuid, recordingPath, iconOnly = false }: { callUuid: string; recordingPath: string | null; iconOnly?: boolean }) {\r\n\tconst [audioUrl, setAudioUrl] = useState<string | null>(null);\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst [error, setError] = useState(false);\r\n\tconst [durationSec, setDurationSec] = useState<number | null>(null);\r\n\tconst [currentSec, setCurrentSec] = useState(0);\r\n\tconst unavailable = !recordingPath;\r\n\tconst totalLabel = durationSec != null ? fmtRecordingDuration(durationSec) : \"\";\r\n\r\n\tconst closePlayer = useCallback(() => {\r\n\t\tsetAudioUrl((prev) => {\r\n\t\t\tif (prev && prev.startsWith(\"blob:\")) URL.revokeObjectURL(prev);\r\n\t\t\treturn null;\r\n\t\t});\r\n\t\tsetCurrentSec(0);\r\n\t\tsetDurationSec(null);\r\n\t}, []);\r\n\r\n\t// Close this player whenever another recording starts playing.\r\n\tuseEffect(() => {\r\n\t\tconst onPlay = (activeId: string) => {\r\n\t\t\tif (activeId !== callUuid) closePlayer();\r\n\t\t};\r\n\t\tactivePlayers.add(onPlay);\r\n\t\treturn () => {\r\n\t\t\tactivePlayers.delete(onPlay);\r\n\t\t};\r\n\t}, [callUuid, closePlayer]);\r\n\r\n\tconst handlePlay = async () => {\r\n\t\tif (audioUrl) return;\r\n\t\tnotifyPlay(callUuid);\r\n\t\ttry {\r\n\t\t\tsetLoading(true);\r\n\t\t\tsetError(false);\r\n\t\t\tconst blob = await getRecordingByCall(callUuid);\r\n\t\t\tsetAudioUrl(URL.createObjectURL(blob));\r\n\t\t} catch {\r\n\t\t\tsetError(true);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleDownload = async () => {\r\n\t\ttry {\r\n\t\t\tconst blob = audioUrl ? await fetch(audioUrl).then((r) => r.blob()) : await getRecordingByCall(callUuid);\r\n\t\t\tconst url = URL.createObjectURL(blob);\r\n\t\t\tconst a = document.createElement(\"a\");\r\n\t\t\ta.href = url;\r\n\t\t\ta.download = `recording_${callUuid}.wav`;\r\n\t\t\ta.click();\r\n\t\t\tURL.revokeObjectURL(url);\r\n\t\t} catch {\r\n\t\t\t/* ignore */\r\n\t\t}\r\n\t};\r\n\r\n\tif (iconOnly) {\r\n\t\tif (audioUrl) {\r\n\t\t\treturn (\r\n\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\r\n\t\t\t\t\t<audio controls autoPlay src={audioUrl}\r\n\t\t\t\t\t\tonLoadedMetadata={(e) => setDurationSec(e.currentTarget.duration)}\r\n\t\t\t\t\t\tonTimeUpdate={(e) => setCurrentSec(e.currentTarget.currentTime)}\r\n\t\t\t\t\t\tonEnded={closePlayer}\r\n\t\t\t\t\t\tstyle={{ height: 32, maxWidth: 170 }} />\r\n\t\t\t\t\t{totalLabel && (\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: 12, fontWeight: 600, color: \"#1A5F6C\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t{fmtRecordingDuration(currentSec)} / {totalLabel}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t<Tooltip title=\"Download\"><IconButton size=\"small\" onClick={handleDownload} sx={{ color: \"#1565c0\" }}><DownloadIcon sx={{ fontSize: 16 }} /></IconButton></Tooltip>\r\n\t\t\t\t</Box>\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t<Tooltip title={unavailable ? \"No recording available for this call.\" : error ? \"Recording unavailable\" : \"Play voicemail\"}>\r\n\t\t\t\t<span>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={handlePlay} disabled={unavailable || loading || error} sx={{ color: unavailable ? \"#bdbdbd\" : \"#1A5F6C\" }}>\r\n\t\t\t\t\t\t{loading ? <CircularProgress size={16} color=\"inherit\" /> : <PlayArrowIcon sx={{ fontSize: 18 }} />}\r\n\t\t\t\t\t</IconButton>\r\n\t\t\t\t</span>\r\n\t\t\t</Tooltip>\r\n\t\t);\r\n\t}\r\n\r\n\tif (unavailable) {\r\n\t\treturn <Typography sx={{ fontSize: \"0.82rem\", color: \"#999\" }} fontFamily=\"poppins, Arial, sans-serif\">No recording available for this call.</Typography>;\r\n\t}\r\n\r\n\tif (audioUrl) {\r\n\t\treturn (\r\n\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t<audio controls autoPlay src={audioUrl} onEnded={closePlayer} style={{ height: 38, flex: 1 }} />\r\n\t\t\t\t<Tooltip title=\"Download\"><IconButton size=\"small\" onClick={handleDownload} sx={{ color: \"#1565c0\" }}><DownloadIcon sx={{ fontSize: 18 }} /></IconButton></Tooltip>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t<SDKButton variant=\"outlined\" onClick={handlePlay} disabled={loading || error} startIcon={loading ? <CircularProgress size={16} color=\"inherit\" /> : <PlayArrowIcon sx={{ fontSize: 16 }} />}>\r\n\t\t\t\t{error ? \"Recording unavailable\" : \"Play recording\"}\r\n\t\t\t</SDKButton>\r\n\t\t\t<Tooltip title=\"Download\"><span><IconButton size=\"small\" onClick={handleDownload} disabled={loading || error} sx={{ color: \"#1565c0\" }}><DownloadIcon sx={{ fontSize: 18 }} /></IconButton></span></Tooltip>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Call Data Dialog ───────────────────────────────────────────────────────\r\n\r\nfunction CallDataDialog({\r\n\topen, lead, data, loading, error, onClose,\r\n}: { open: boolean; lead: Lead | null; data: LeadCallData | null; loading: boolean; error: string | null; onClose: () => void; }) {\r\n\tif (!open) return null;\r\n\tconst fmt = (v: string | null) => (v ? new Date(v).toLocaleString() : \"—\");\r\n\r\n\t// Reusable field-card + section-title styles keep every value cell identical.\r\n\tconst fieldCardSx = {\r\n\t\tdisplay: \"flex\", flexDirection: \"column\", gap: 0.25,\r\n\t\tp: 1, borderRadius: \"8px\", backgroundColor: \"#fafafa\", border: \"1px solid #eee\",\r\n\t};\r\n\tconst fieldLabelSx = {\r\n\t\tfontSize: \"0.66rem\", fontWeight: 600, color: \"#888\",\r\n\t\ttextTransform: \"uppercase\" as const, letterSpacing: 0.3,\r\n\t};\r\n\tconst fieldValueSx = {\r\n\t\tfontSize: \"0.82rem\", fontWeight: 600, color: \"#1a1a1a\", wordBreak: \"break-word\" as const,\r\n\t};\r\n\tconst sectionTitle = {\r\n\t\tfontSize: \"0.7rem\", fontWeight: 700, color: \"#1A5F6C\",\r\n\t\ttextTransform: \"uppercase\" as const, letterSpacing: 0.5, mb: 0.75,\r\n\t};\r\n\r\n\tconst fieldCard = (label: string, value: React.ReactNode, full?: boolean) => (\r\n\t\t<Box key={label} sx={{ ...fieldCardSx, ...(full ? { gridColumn: \"1 / -1\" } : {}) }}>\r\n\t\t\t<Typography sx={fieldLabelSx} fontFamily=\"poppins, Arial, sans-serif\">{label}</Typography>\r\n\t\t\t<Typography sx={fieldValueSx} fontFamily=\"poppins, Arial, sans-serif\">{value}</Typography>\r\n\t\t</Box>\r\n\t);\r\n\r\n\tconst overview: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Phone Number\", data.phoneNumber || \"—\"],\r\n\t\t[\"Call Type\", data.callType || \"—\"],\r\n\t\t[\"Call Status\", data.callStatus || \"—\"],\r\n\t\t[\"Disposition\", data.disposition || \"—\"],\r\n\t\t[\"Agent Disposition\", data.agentSelectedDisposition || \"—\"],\r\n\t\t[\"Transferred\", data.wasTransferred ? \"Yes\" : \"No\"],\r\n\t\t[\"Hangup By\", data.hangupInitiator || \"—\"],\r\n\t] : [];\r\n\tconst agentQueue: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Agent\", data.agentName || \"—\"],\r\n\t\t[\"Agent ID\", data.agentUserId || \"—\"],\r\n\t\t[\"Extension\", data.extension || \"—\"],\r\n\t\t[\"Queue\", data.queueName || \"—\"],\r\n\t] : [];\r\n\tconst timing: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Start Time\", fmt(data.callStartTime)],\r\n\t\t[\"Connect Time\", fmt(data.connectTime)],\r\n\t] : [];\r\n\tconst durations: Array<[string, React.ReactNode]> = data ? [\r\n\t\t[\"Talk\", data.talkDurationFmt || \"—\"],\r\n\t\t[\"Ringing\", data.ringingDurationFmt || \"—\"],\r\n\t\t[\"Hold\", data.holdDurationFmt || \"—\"],\r\n\t\t[\"Mute\", data.muteDurationFmt || \"—\"],\r\n\t\t[\"Wrap-up\", data.wrapupDurationFmt || \"—\"],\r\n\t\t[\"Queue\", data.queueDurationFmt || \"—\"],\r\n\t\t[\"IVR\", data.ivrDurationFmt || \"—\"],\r\n\t] : [];\r\n\r\n\tconst twoColGrid = { display: \"grid\", gridTemplateColumns: { xs: \"1fr\", sm: \"1fr 1fr\" }, gap: 1.25 };\r\n\tconst compactGrid = { display: \"grid\", gridTemplateColumns: \"repeat(auto-fill, minmax(96px, 1fr))\", gap: 1.25 };\r\n\r\n\treturn (\r\n\t\t<Box sx={{ position: \"fixed\", inset: 0, zIndex: 1500, backgroundColor: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }} onClick={(e) => e.stopPropagation()}>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"92vw\", sm: 600 }, maxHeight: \"85vh\", display: \"flex\", flexDirection: \"column\", borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Call Details</Typography>\r\n\t\t\t\t\t\t{lead?.phoneNumber ? (\r\n\t\t\t\t\t\t\t<Typography fontSize=\"0.72rem\" sx={{ opacity: 0.85 }} fontFamily=\"poppins, Arial, sans-serif\">Latest call for {lead.phoneNumber}</Typography>\r\n\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ px: 2.5, py: 2, overflowY: \"auto\" }}>\r\n\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"center\", py: 4 }}><CircularProgress size={30} /></Box>\r\n\t\t\t\t\t) : error ? (\r\n\t\t\t\t\t\t<Typography fontSize=\"0.85rem\" color=\"#d32f2f\" textAlign=\"center\" sx={{ py: 3 }} fontFamily=\"poppins, Arial, sans-serif\">{error}</Typography>\r\n\t\t\t\t\t) : data ? (\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 2 }}>\r\n\t\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Call Overview</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={twoColGrid}>{overview.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Agent &amp; Queue</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={twoColGrid}>{agentQueue.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Timing</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={twoColGrid}>{timing.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Durations</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={compactGrid}>{durations.map(([l, v]) => fieldCard(l, v))}</Box>\r\n\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\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Remarks</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={{ ...fieldCardSx, minHeight: 44 }}>\r\n\t\t\t\t\t\t\t\t\t<Typography sx={fieldValueSx} fontFamily=\"poppins, Arial, sans-serif\">{data.remarks || \"—\"}</Typography>\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>\r\n\t\t\t\t\t\t\t\t<Typography sx={sectionTitle} fontFamily=\"poppins, Arial, sans-serif\">Recording</Typography>\r\n\t\t\t\t\t\t\t\t<Box sx={fieldCardSx}>\r\n\t\t\t\t\t\t\t\t\t<CallRecording callUuid={data.callUuid} recordingPath={data.recordingPath} />\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</Box>\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Close</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Import Leads Dialog ─────────────────────────────────────────────────────\r\n\r\nfunction ImportLeadsDialog({\r\n\topen, file, onFileChange, uploading, onUpload, onDownloadTemplate, onClose,\r\n}: {\r\n\topen: boolean;\r\n\tfile: File | null;\r\n\tonFileChange: (f: File | null) => void;\r\n\tuploading: boolean;\r\n\tonUpload: () => void;\r\n\tonDownloadTemplate: () => void;\r\n\tonClose: () => void;\r\n}) {\r\n\tconst fileRef = useRef<HTMLInputElement>(null);\r\n\tif (!open) return null;\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{ position: \"fixed\", inset: 0, zIndex: 1400, backgroundColor: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\r\n\t\t\tonClick={(e) => e.stopPropagation()}\r\n\t\t>\r\n\t\t\t<Paper elevation={6} sx={{ width: { xs: \"90vw\", sm: 460 }, borderRadius: \"16px\", overflow: \"hidden\", boxShadow: \"0 8px 32px rgba(26,95,108,0.18)\" }}>\r\n\t\t\t\t<Box sx={{ ...dialogHeaderSx, backgroundColor: \"#1A5F6C\", color: \"#fff\" }}>\r\n\t\t\t\t\t<Typography fontWeight={700} fontSize=\"1rem\" fontFamily=\"poppins, Arial, sans-serif\">Import Leads</Typography>\r\n\t\t\t\t\t<IconButton size=\"small\" onClick={onClose} sx={{ color: \"#fff\" }}>✕</IconButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={{ p: 2.5 }}>\r\n\t\t\t\t\t<Typography fontSize=\"0.82rem\" color=\"#555\" fontFamily=\"poppins, Arial, sans-serif\" mb={2}>\r\n\t\t\t\t\t\tUpload a CSV or Excel file. Use the template for the correct format.\r\n\t\t\t\t\t</Typography>\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1.5, flexWrap: \"wrap\", mb: 1.5 }}>\r\n\t\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<UploadFileIcon />}\r\n\t\t\t\t\t\t\tonClick={() => fileRef.current?.click()}>\r\n\t\t\t\t\t\t\tChoose File\r\n\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t<input ref={fileRef} type=\"file\" accept=\".csv,.xlsx,.xls\" hidden\r\n\t\t\t\t\t\t\tonChange={(e) => {\r\n\t\t\t\t\t\t\t\tconst f = e.target.files?.[0];\r\n\t\t\t\t\t\t\t\tif (!f) return;\r\n\t\t\t\t\t\t\t\tif ([\".csv\",\".xlsx\",\".xls\"].some((ext) => f.name.toLowerCase().endsWith(ext))) onFileChange(f);\r\n\t\t\t\t\t\t\t}} />\r\n\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.82rem\", color: \"#666\", flex: 1, fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t{file ? file.name : \"No file chosen\"}\r\n\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t{file && (\r\n\t\t\t\t\t\t\t<SDKButton variant=\"cancel\" size=\"small\"\r\n\t\t\t\t\t\t\t\tonClick={() => { onFileChange(null); if (fileRef.current) fileRef.current.value = \"\"; }}>\r\n\t\t\t\t\t\t\t\tClear\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t\t<SDKButton variant=\"outlined\" startIcon={<DownloadIcon />} onClick={onDownloadTemplate}>\r\n\t\t\t\t\t\tDownload Template\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t\t<Box sx={dialogFooterSx}>\r\n\t\t\t\t\t<SDKButton variant=\"cancel\" onClick={onClose}>Cancel</SDKButton>\r\n\t\t\t\t\t<SDKButton onClick={onUpload} disabled={uploading || !file}\r\n\t\t\t\t\t\tstartIcon={uploading ? <CircularProgress size={14} color=\"inherit\" /> : undefined}>\r\n\t\t\t\t\t\tUpload\r\n\t\t\t\t\t</SDKButton>\r\n\t\t\t\t</Box>\r\n\t\t\t</Paper>\r\n\t\t</Box>\r\n\t);\r\n}\r\n\r\n// ──── Main content ────────────────────────────────────────────────────────────\r\n\r\nconst CampaignsContent = memo(function CampaignsContent() {\r\n\tconst theme = useTheme();\r\n\tconst { showToast } = useToast();\r\n\tconst { isBitEnabled } = useSDKPermissions();\r\n\tconst callerData = useGetCallerData();\r\n\tconst isAgentIdle = callerData.status === \"IDLE\";\r\n\tconst hasOutboundPermission = isBitEnabled(\"calls\", SDK_PERMISSIONS.CALL_OUTBOUND);\r\n\r\n\tconst {\r\n\t\tcampaigns, loading,\r\n\t\tfetchCampaigns, getCampaignById,\r\n\t\tcreateCampaign, updateCampaign,\r\n\t\tactivateCampaign, pauseCampaign, archiveCampaign,\r\n\t} = useCampaigns();\r\n\r\n\tconst {\r\n\t\tleads, leadTotal, leadsMeta, loading: leadsLoading,\r\n\t\tfetchLeads, createLead, deleteLead, dialPreview, getLeadCallData,\r\n\t\tuploadLeadsExcel, downloadLeadTemplate, exportLeads,\r\n\t} = useLeads();\r\n\r\n\tconst { fetchQueues } = useQueues();\r\n\r\n\t// Queue name lookup for the leads table\r\n\tconst [queueNameMap, setQueueNameMap] = useState<Record<number, string>>({});\r\n\r\n\tuseEffect(() => {\r\n\t\tfetchQueues().then((qs) => {\r\n\t\t\tconst map: Record<number, string> = {};\r\n\t\t\tqs.forEach((q) => { map[q.id] = q.name; });\r\n\t\t\tsetQueueNameMap(map);\r\n\t\t}).catch(() => { /* ignore */ });\r\n\t}, [fetchQueues]);\r\n\r\n\tconst handleQueuesRefreshed = useCallback((qs: Queue[]) => {\r\n\t\tconst map: Record<number, string> = {};\r\n\t\tqs.forEach((q) => { map[q.id] = q.name; });\r\n\t\tsetQueueNameMap(map);\r\n\t}, []);\r\n\r\n\t// Selection & filter\r\n\tconst [selectedId, setSelectedId] = useState<number | null>(null);\r\n\tconst [showArchived, setShowArchived] = useState(false);\r\n\tconst [campaignListCollapsed, setCampaignListCollapsed] = useState(false);\r\n\r\n\t// Campaign dialog\r\n\tconst [dialogOpen, setDialogOpen] = useState(false);\r\n\tconst [editingCampaign, setEditingCampaign] = useState<Campaign | null>(null);\r\n\tconst [formData, setFormData] = useState<CampaignCreatePayload>(defaultFormData);\r\n\tconst [saving, setSaving] = useState(false);\r\n\r\n\t// Archive confirm\r\n\tconst [archiveOpen, setArchiveOpen] = useState(false);\r\n\tconst [archiveTarget, setArchiveTarget] = useState<Campaign | null>(null);\r\n\tconst [archiving, setArchiving] = useState(false);\r\n\r\n\t// Leads\r\n\tconst [leadPage, setLeadPage] = useState(0);\r\n\tconst [leadRowsPerPage, setLeadRowsPerPage] = useState(10);\r\n\tconst [leadSearch, setLeadSearch] = useState(\"\");\r\n\tconst [debouncedSearch, setDebouncedSearch] = useState(\"\");\r\n\tconst [leadStatusFilter, setLeadStatusFilter] = useState(\"All states\");\r\n\tconst [leadStartDate, setLeadStartDate] = useState<Dayjs | null>(null);\r\n\tconst [leadEndDate, setLeadEndDate] = useState<Dayjs | null>(null);\r\n\tconst debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n\t// Add lead dialog\r\n\tconst [addLeadOpen, setAddLeadOpen] = useState(false);\r\n\tconst [addLeadData, setAddLeadData] = useState<LeadCreatePayload>({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\tconst [addLeadSaving, setAddLeadSaving] = useState(false);\r\n\r\n\t// Import dialog\r\n\tconst [importOpen, setImportOpen] = useState(false);\r\n\tconst [importFile, setImportFile] = useState<File | null>(null);\r\n\tconst [importing, setImporting] = useState(false);\r\n\r\n\t// Delete lead confirm\r\n\tconst [deleteLeadOpen, setDeleteLeadOpen] = useState(false);\r\n\tconst [deleteLeadTarget, setDeleteLeadTarget] = useState<Lead | null>(null);\r\n\tconst [deletingLead, setDeletingLead] = useState(false);\r\n\r\n\t// View call data\r\n\tconst [callDataOpen, setCallDataOpen] = useState(false);\r\n\tconst [callDataLead, setCallDataLead] = useState<Lead | null>(null);\r\n\tconst [callDataLoading, setCallDataLoading] = useState(false);\r\n\tconst [callData, setCallData] = useState<LeadCallData | null>(null);\r\n\tconst [callDataError, setCallDataError] = useState<string | null>(null);\r\n\r\n\tconst handleViewCallData = useCallback(async (lead: Lead) => {\r\n\t\tconst callId = lead.latestCallId;\r\n\t\tif (!callId) return;\r\n\t\tsetCallDataLead(lead);\r\n\t\tsetCallDataOpen(true);\r\n\t\tsetCallData(null);\r\n\t\tsetCallDataError(null);\r\n\t\tsetCallDataLoading(true);\r\n\t\ttry {\r\n\t\t\tconst data = await getLeadCallData(callId);\r\n\t\t\tsetCallData(data);\r\n\t\t} catch (e: any) {\r\n\t\t\tsetCallDataError(e?.response?.data?.message || \"Failed to load call data\");\r\n\t\t} finally {\r\n\t\t\tsetCallDataLoading(false);\r\n\t\t}\r\n\t}, [getLeadCallData]);\r\n\r\n\t// Dial loading\r\n\tconst [dialLoading, setDialLoading] = useState<number | null>(null);\r\n\r\n\tconst selected = campaigns.find((c) => c.id === selectedId) ?? null;\r\n\tconst showVoicemail = selected?.campaignType === \"AFTER_HOURS_CALLBACK\";\r\n\tconst visibleCampaigns = campaigns.filter((c) =>\r\n\t\tshowArchived ? true : c.status?.toLowerCase() !== \"archived\"\r\n\t);\r\n\r\n\t// Switch campaigns: reset leads filters/search/page so they don't carry over\r\n\tconst handleSelectCampaign = useCallback((id: number) => {\r\n\t\tif (id === selectedId) return;\r\n\t\tsetLeadStatusFilter(\"All states\");\r\n\t\tsetLeadSearch(\"\");\r\n\t\tsetDebouncedSearch(\"\");\r\n\t\tsetLeadStartDate(null);\r\n\t\tsetLeadEndDate(null);\r\n\t\tsetLeadPage(0);\r\n\t\tsetSelectedId(id);\r\n\t}, [selectedId]);\r\n\r\n\tuseEffect(() => { fetchCampaigns(); }, [fetchCampaigns]);\r\n\r\n\tuseEffect(() => {\r\n\t\tdebounceRef.current = setTimeout(() => setDebouncedSearch(leadSearch.trim()), 400);\r\n\t\treturn () => { if (debounceRef.current) clearTimeout(debounceRef.current); };\r\n\t}, [leadSearch]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (!selectedId) return;\r\n\t\tsetLeadPage(0);\r\n\t\tfetchLeads(selectedId, {\r\n\t\t\tpage: 1, pageSize: leadRowsPerPage,\r\n\t\t\tlead_status: leadStatusFilter !== \"All states\" ? leadStatusFilter : undefined,\r\n\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\tstart_date: leadStartDate ? leadStartDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t\tend_date: leadEndDate ? leadEndDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t});\r\n\t}, [selectedId, leadRowsPerPage, leadStatusFilter, debouncedSearch, leadStartDate, leadEndDate, fetchLeads]);\r\n\r\n\tconst refetchLeads = useCallback((page = leadPage, silent = false) => {\r\n\t\tif (!selectedId) return;\r\n\t\tfetchLeads(selectedId, {\r\n\t\t\tpage: page + 1, pageSize: leadRowsPerPage,\r\n\t\t\tlead_status: leadStatusFilter !== \"All states\" ? leadStatusFilter : undefined,\r\n\t\t\tsearch: debouncedSearch || undefined,\r\n\t\t\tstart_date: leadStartDate ? leadStartDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t\tend_date: leadEndDate ? leadEndDate.format(\"YYYY-MM-DDTHH:mm:ss\") : undefined,\r\n\t\t}, { silent });\r\n\t}, [selectedId, leadPage, leadRowsPerPage, leadStatusFilter, debouncedSearch, leadStartDate, leadEndDate, fetchLeads]);\r\n\r\n\tconst clearLeadDates = () => {\r\n\t\tsetLeadStartDate(null);\r\n\t\tsetLeadEndDate(null);\r\n\t\tsetLeadPage(0);\r\n\t};\r\n\r\n\t// Auto-refresh the leads table every 3 seconds (silent — no loading spinner)\r\n\tuseEffect(() => {\r\n\t\tif (!selectedId) return;\r\n\t\tconst intervalId = setInterval(() => { refetchLeads(leadPage, true); }, 3000);\r\n\t\treturn () => clearInterval(intervalId);\r\n\t}, [selectedId, leadPage, refetchLeads]);\r\n\r\n\t// ── Campaign CRUD ──\r\n\r\n\tconst handleOpenCreate = () => {\r\n\t\tsetEditingCampaign(null);\r\n\t\tsetFormData(defaultFormData);\r\n\t\tsetDialogOpen(true);\r\n\t};\r\n\r\n\tconst handleOpenEdit = async (c: Campaign) => {\r\n\t\tsetEditingCampaign(c);\r\n\t\tsetFormData(campaignToFormData(c));\r\n\t\tsetDialogOpen(true);\r\n\t\ttry {\r\n\t\t\tconst fresh = await getCampaignById(c.id);\r\n\t\t\tsetEditingCampaign(fresh);\r\n\t\t\tsetFormData(campaignToFormData(fresh));\r\n\t\t} catch { /* keep existing */ }\r\n\t};\r\n\r\n\tconst handleSave = async () => {\r\n\t\tif (!formData.name.trim()) { showToast(\"Campaign name is required\", \"warning\"); return; }\r\n\t\tsetSaving(true);\r\n\t\tconst startTime = formData.startTime?.length === 5 ? `${formData.startTime}:00` : formData.startTime;\r\n\t\tconst endTime = formData.endTime?.length === 5 ? `${formData.endTime}:00` : formData.endTime;\r\n\t\t// Date pickers give YYYY-MM-DD; the API expects an ISO datetime.\r\n\t\tconst toIso = (d?: string) => (d ? new Date(d).toISOString() : undefined);\r\n\t\tconst scheduledStart = toIso(formData.scheduledStart);\r\n\t\tconst scheduledEnd = toIso(formData.scheduledEnd);\r\n\t\ttry {\r\n\t\t\tif (editingCampaign) {\r\n\t\t\t\tconst updatePayload: Record<string, any> = { ...formData, startTime, endTime };\r\n\t\t\t\tif (scheduledStart) updatePayload.scheduledStart = scheduledStart; else delete updatePayload.scheduledStart;\r\n\t\t\t\tif (scheduledEnd) updatePayload.scheduledEnd = scheduledEnd; else delete updatePayload.scheduledEnd;\r\n\t\t\t\tawait updateCampaign(editingCampaign.id, updatePayload);\r\n\t\t\t\tshowToast(\"Campaign updated\", \"success\");\r\n\t\t\t} else {\r\n\t\t\t\tconst payload: Record<string, any> = { ...formData, startTime, endTime };\r\n\t\t\t\tif (scheduledStart) payload.scheduledStart = scheduledStart; else delete payload.scheduledStart;\r\n\t\t\t\tif (scheduledEnd) payload.scheduledEnd = scheduledEnd; else delete payload.scheduledEnd;\r\n\t\t\t\tif (!payload.callerId) delete payload.callerId;\r\n\t\t\t\tif (!payload.answerTimeoutSeconds) delete payload.answerTimeoutSeconds;\r\n\t\t\t\tif (payload.aiBotId == null) delete payload.aiBotId;\r\n\t\t\t\tif (!payload.queueLinks?.length) delete payload.queueLinks;\r\n\t\t\t\tif (payload.settings && !Object.keys(payload.settings).length) delete payload.settings;\r\n\t\t\t\tconst created = await createCampaign(payload as CampaignCreatePayload);\r\n\t\t\t\tshowToast(\"Campaign created\", \"success\");\r\n\t\t\t\tsetSelectedId(created.id);\r\n\t\t\t}\r\n\t\t\tsetDialogOpen(false);\r\n\t\t\tfetchCampaigns();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to save campaign\", \"error\");\r\n\t\t} finally { setSaving(false); }\r\n\t};\r\n\r\n\tconst handleStart = async (c: Campaign) => {\r\n\t\ttry { await activateCampaign(c.id); showToast(\"Campaign started\", \"success\"); fetchCampaigns(); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Failed to start\", \"error\"); }\r\n\t};\r\n\r\n\tconst handlePause = async (c: Campaign) => {\r\n\t\ttry { await pauseCampaign(c.id); showToast(\"Campaign paused\", \"success\"); fetchCampaigns(); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Failed to pause\", \"error\"); }\r\n\t};\r\n\r\n\tconst confirmArchive = async () => {\r\n\t\tif (!archiveTarget) return;\r\n\t\tsetArchiving(true);\r\n\t\ttry {\r\n\t\t\tawait archiveCampaign(archiveTarget.id);\r\n\t\t\tshowToast(\"Campaign archived\", \"success\");\r\n\t\t\tsetArchiveOpen(false); setArchiveTarget(null); fetchCampaigns();\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to archive\", \"error\");\r\n\t\t} finally { setArchiving(false); }\r\n\t};\r\n\r\n\t// ── Leads ──\r\n\r\n\tconst handleAddLead = async () => {\r\n\t\tif (!selectedId) return;\r\n\t\tconst err = validatePhone(addLeadData.phoneNumber);\r\n\t\tif (err) { showToast(err, \"warning\"); return; }\r\n\t\tsetAddLeadSaving(true);\r\n\t\ttry {\r\n\t\t\tawait createLead(selectedId, addLeadData);\r\n\t\t\tshowToast(\"Lead added\", \"success\");\r\n\t\t\tsetAddLeadOpen(false);\r\n\t\t\tsetAddLeadData({ phoneNumber: \"\", callerName: \"\", priority: 5 });\r\n\t\t\trefetchLeads(0); setLeadPage(0);\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Failed to add lead\", \"error\");\r\n\t\t} finally { setAddLeadSaving(false); }\r\n\t};\r\n\r\n\tconst handleImport = async () => {\r\n\t\tif (!selectedId || !importFile) return;\r\n\t\tsetImporting(true);\r\n\t\ttry {\r\n\t\t\tconst result = await uploadLeadsExcel(selectedId, importFile);\r\n\t\t\tshowToast(result?.message || \"Leads uploaded\", \"success\");\r\n\t\t\tsetImportFile(null); setImportOpen(false);\r\n\t\t\trefetchLeads(0); setLeadPage(0);\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Upload failed\", \"error\");\r\n\t\t} finally { setImporting(false); }\r\n\t};\r\n\r\n\tconst handleExport = async () => {\r\n\t\tif (!selectedId) return;\r\n\t\ttry { await exportLeads(selectedId); showToast(\"Leads exported\", \"success\"); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Export failed\", \"error\"); }\r\n\t};\r\n\r\n\tconst handleDownloadTemplate = async () => {\r\n\t\tif (!selectedId) return;\r\n\t\ttry { await downloadLeadTemplate(selectedId); }\r\n\t\tcatch (err: any) { showToast(err?.response?.data?.message || err?.message || \"Download failed\", \"error\"); }\r\n\t};\r\n\r\n\tconst handleDialPreview = async (leadId: number) => {\r\n\t\tif (!selectedId) return;\r\n\t\tsetDialLoading(leadId);\r\n\t\ttry {\r\n\t\t\tconst res = await dialPreview(selectedId, leadId);\r\n\t\t\tshowToast(res?.message || \"Preview dial initiated\", \"success\");\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Dial failed\", \"error\");\r\n\t\t} finally { setDialLoading(null); }\r\n\t};\r\n\r\n\tconst confirmDeleteLead = async () => {\r\n\t\tif (!selectedId || !deleteLeadTarget) return;\r\n\t\tsetDeletingLead(true);\r\n\t\ttry {\r\n\t\t\tawait deleteLead(selectedId, deleteLeadTarget.id);\r\n\t\t\tshowToast(\"Lead deleted\", \"success\");\r\n\t\t\tsetDeleteLeadOpen(false); setDeleteLeadTarget(null);\r\n\t\t\trefetchLeads(leadPage);\r\n\t\t} catch (err: any) {\r\n\t\t\tshowToast(err?.response?.data?.message || err?.message || \"Delete failed\", \"error\");\r\n\t\t} finally { setDeletingLead(false); }\r\n\t};\r\n\r\n\tconst sc = selected;\r\n\tconst scActive = sc?.status?.toLowerCase() === \"active\";\r\n\tconst scDraft = sc?.status?.toLowerCase() === \"draft\";\r\n\tconst scPaused = sc?.status?.toLowerCase() === \"paused\";\r\n\tconst scArchived = sc?.status?.toLowerCase() === \"archived\";\r\n\r\n\t// ── Render ──\r\n\r\n\treturn (\r\n\t\t<Box sx={{ fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\r\n\t\t\t{/* PAGE HEADER */}\r\n\t\t\t<SDKPageHeader\r\n\t\t\t\ttitle=\"Call Scheduling\"\r\n\t\t\t\tactions={\r\n\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1 }}>\r\n\t\t\t\t\t\t<SDKButton startIcon={<RefreshIcon />}\r\n\t\t\t\t\t\t\tonClick={() => { fetchCampaigns(); if (selectedId) refetchLeads(); }}>\r\n\t\t\t\t\t\t\tRefresh\r\n\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_CREATE,\r\n\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\r\n\t\t\t\t\t\t\t]}\r\n\t\t\t\t\t\t\tshowFallback={false}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<SDKButton startIcon={<AddIcon />} onClick={handleOpenCreate}>\r\n\t\t\t\t\t\t\t\tNew Campaign\r\n\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t</SDKPermissionGuard>\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{/* TWO-COLUMN LAYOUT */}\r\n\t\t\t<Box sx={{ display: \"flex\", flexDirection: { xs: \"column\", md: \"row\" }, gap: 1.5, p: 1.5 }}>\r\n\r\n\t\t\t\t{/* LEFT — Campaign list */}\r\n\t\t\t\t<Paper\r\n\t\t\t\t\televation={0}\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\twidth: campaignListCollapsed\r\n\t\t\t\t\t\t\t? { xs: \"100%\", md: 48 }\r\n\t\t\t\t\t\t\t: { xs: \"100%\", md: 280, lg: 320 },\r\n\t\t\t\t\t\tminWidth: campaignListCollapsed\r\n\t\t\t\t\t\t\t? { xs: \"auto\", md: 48 }\r\n\t\t\t\t\t\t\t: { xs: \"auto\", md: 240 },\r\n\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\tmaxHeight: { xs: campaignListCollapsed ? \"auto\" : 260, md: \"calc(100vh - 160px)\" },\r\n\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\tborder: \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\r\n\t\t\t\t\t\ttransition: \"width 0.2s ease, min-width 0.2s ease\",\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{campaignListCollapsed ? (\r\n\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\tflexDirection: { xs: \"row\", md: \"column\" },\r\n\t\t\t\t\t\t\talignItems: \"center\",\r\n\t\t\t\t\t\t\tgap: 0.75,\r\n\t\t\t\t\t\t\tp: 0.75,\r\n\t\t\t\t\t\t\theight: \"100%\",\r\n\t\t\t\t\t\t\toverflowY: { xs: \"visible\", md: \"auto\" },\r\n\t\t\t\t\t\t\toverflowX: { xs: \"auto\", md: \"visible\" },\r\n\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t<Tooltip title=\"Expand campaigns\" arrow placement=\"right\">\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => setCampaignListCollapsed(false)}\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: \"#1A5F6C\",\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f0f7f8\",\r\n\t\t\t\t\t\t\t\t\t\tflexShrink: 0,\r\n\t\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"#e0eff1\" },\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<ChevronRightIcon fontSize=\"small\" />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t{visibleCampaigns.map((c, idx) => {\r\n\t\t\t\t\t\t\t\tconst isSel = c.id === selectedId;\r\n\t\t\t\t\t\t\t\tconst status = (c.status || \"draft\").toLowerCase();\r\n\t\t\t\t\t\t\t\tconst statusColor = STATUS_COLORS[status] ?? \"#9e9e9e\";\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\t\t\t\tkey={c.id}\r\n\t\t\t\t\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\t\t\t\t\tplacement=\"right\"\r\n\t\t\t\t\t\t\t\t\t\ttitle={`${c.name} • ${c.status || \"draft\"}`}\r\n\t\t\t\t\t\t\t\t\t>\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\tonClick={() => handleSelectCampaign(c.id)}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 32,\r\n\t\t\t\t\t\t\t\t\t\t\t\theight: 32,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"8px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\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\tjustifyContent: \"center\",\r\n\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\tflexShrink: 0,\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isSel ? \"#fff\" : \"#fafafa\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: \"#333\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: 700,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: \"0.8rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderLeft: `3px solid ${statusColor}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: isSel\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `-3px 0 8px ${statusColor}66`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: `-2px 0 4px ${statusColor}33`,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: \"box-shadow 0.15s ease\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: `-3px 0 8px ${statusColor}80`,\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>\r\n\t\t\t\t\t\t\t\t\t\t\t{idx + 1}\r\n\t\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t</Tooltip>\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) : (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"space-between\",\r\n\t\t\t\t\t\tpx: 2, py: 1.25, borderBottom: \"1px solid #eee\", backgroundColor: \"#fafafa\", gap: 1,\r\n\t\t\t\t\t}}>\r\n\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5, minWidth: 0 }}>\r\n\t\t\t\t\t\t\t<Tooltip title=\"Minimize\" arrow>\r\n\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => setCampaignListCollapsed(true)}\r\n\t\t\t\t\t\t\t\t\tsx={{ p: 0.5, color: \"#666\" }}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<ChevronLeftIcon fontSize=\"small\" />\r\n\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"0.95rem\", color: \"#333\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\tCampaigns\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t<FormControlLabel\r\n\t\t\t\t\t\t\tcontrol={\r\n\t\t\t\t\t\t\t\t<Checkbox size=\"small\" checked={showArchived}\r\n\t\t\t\t\t\t\t\t\tonChange={(e) => setShowArchived(e.target.checked)} sx={{ p: 0.5 }} />\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tlabel={<Typography sx={{ fontSize: \"0.78rem\", color: \"#666\" }}>Show archived</Typography>}\r\n\t\t\t\t\t\t\tsx={{ mr: 0 }}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t<Box sx={{ flex: 1, overflow: \"auto\", p: 1 }}>\r\n\t\t\t\t\t\t{loading ? (\r\n\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", justifyContent: \"center\", py: 4 }}>\r\n\t\t\t\t\t\t\t\t<CircularProgress size={24} sx={{ color: \"#1A5F6C\" }} />\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t) : visibleCampaigns.length === 0 ? (\r\n\t\t\t\t\t\t\t<Typography sx={{ textAlign: \"center\", py: 3, color: \"#999\", fontSize: \"0.85rem\" }}>\r\n\t\t\t\t\t\t\t\tNo campaigns\r\n\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\tvisibleCampaigns.map((c) => {\r\n\t\t\t\t\t\t\t\tconst isSel = c.id === selectedId;\r\n\t\t\t\t\t\t\t\tconst wStr = `${c.startTime?.slice(0, 5) || \"09:00\"}–${c.endTime?.slice(0, 5) || \"17:00\"}`;\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\t\t\t\tkey={c.id}\r\n\t\t\t\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleSelectCampaign(c.id)}\r\n\t\t\t\t\t\t\t\t\t\tsx={isSel ? campaignCardSelectedSx : {\r\n\t\t\t\t\t\t\t\t\t\t\t...campaignCardBaseSx,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { borderColor: \"#1A5F6C\", backgroundColor: \"#f5fafb\", boxShadow: \"0 2px 6px rgba(26,95,108,0.1)\" },\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={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", mb: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 600, fontSize: \"0.88rem\", color: \"#1a1a1a\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{c.name}\r\n\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t<Chip label={c.status || \"draft\"} size=\"small\" sx={statusChipSx(c.status)} />\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<Typography sx={{ fontSize: \"0.73rem\", color: \"#999\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{c.dialingMode} · TZ: {c.timezone || \"Etc/UTC\"} · {wStr}\r\n\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t</Paper>\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</Box>\r\n\t\t\t\t\t</>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Paper>\r\n\r\n\t\t\t\t{/* RIGHT — Detail + Leads */}\r\n\t\t\t\t<Box sx={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: 1.5, minWidth: 0, overflow: \"hidden\" }}>\r\n\t\t\t\t\t{!sc ? (\r\n\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\t\t\tdisplay: \"flex\", alignItems: \"center\", justifyContent: \"center\",\r\n\t\t\t\t\t\t\t\tminHeight: 200, border: \"2px dashed #d0d0d0\", backgroundColor: \"#fafafa\",\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<Box sx={{ textAlign: \"center\" }}>\r\n\t\t\t\t\t\t\t\t<SettingsIcon sx={{ fontSize: 40, color: \"#ccc\", mb: 1 }} />\r\n\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.95rem\", color: \"#999\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\tSelect a campaign to view details\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Paper>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t{/* Campaign detail card */}\r\n\t\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\t\t\t\tp: { xs: 1.5, sm: 2.5 },\r\n\t\t\t\t\t\t\t\t\tborder: \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\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{/* Title + Action buttons */}\r\n\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\", alignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"space-between\", flexWrap: \"wrap\", gap: 1, mb: 2,\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: { xs: \"1rem\", sm: \"1.2rem\" }, color: \"#1a1a1a\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t{sc.name}\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<Chip label={sc.status || \"draft\"} size=\"small\" sx={statusChipSx(sc.status)} />\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t{!scArchived && (\r\n\t\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_UPDATE,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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<SDKButton variant=\"outlined\" startIcon={<EditIcon />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleOpenEdit(sc)}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tEdit\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t\t\t{(scDraft || scPaused) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_CONTROL,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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\t\t<SDKButton startIcon={<PlayArrowIcon />} onClick={() => handleStart(sc)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ backgroundColor: \"#4caf50\", \"&:hover\": { backgroundColor: \"#388e3c\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tStart\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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{scActive && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_CONTROL,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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\t\t<SDKButton startIcon={<PauseIcon />} onClick={() => handlePause(sc)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ backgroundColor: \"#ff9800\", boxShadow: \"0 2px 8px rgba(255,152,0,0.25)\", \"&:hover\": { backgroundColor: \"#f57c00\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tPause\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_DELETE,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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<SDKButton variant=\"danger\" startIcon={<ArchiveIcon />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => { setArchiveTarget(sc); setArchiveOpen(true); }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tArchive\r\n\t\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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{/* Stats row — matches original 4-card grid with accent left border */}\r\n\t\t\t\t\t\t\t\t{sc.description && (\r\n\t\t\t\t\t\t\t\t\t<Typography sx={{ fontSize: \"0.85rem\", color: \"#666\", mb: 1.5, fontFamily: \"poppins, Arial, sans-serif\", lineHeight: 1.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t{sc.description}\r\n\t\t\t\t\t\t\t\t\t</Typography>\r\n\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\tsx={{\r\n\t\t\t\t\t\t\t\t\t\toverflowX: \"auto\",\r\n\t\t\t\t\t\t\t\t\t\tpb: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { height: 6 },\r\n\t\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-track\": { backgroundColor: \"#f0f0f0\", borderRadius: 3 },\r\n\t\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": {\r\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#c0c0c0\",\r\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: 3,\r\n\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"#a0a0a0\" },\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>\r\n\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\tflexWrap: \"nowrap\",\r\n\t\t\t\t\t\t\t\t\t\tgap: 1.5,\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{[\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#1565c0\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Type\", value: sc.campaignType || \"N/A\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Mode\", value: sc.dialingMode || \"N/A\" },\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},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#2e7d32\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Agent\", value: sc.agentType || \"HUMAN\" },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Dialer\", value: leadsMeta?.isDialerEnabled ? \"Enabled\" : \"Disabled\" },\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},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#c62828\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Priority\", value: leadPriorityChipSx(sc.priority).label },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Max Concurrent\", value: String(sc.maxConcurrentCalls ?? 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},\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\taccent: \"#283593\",\r\n\t\t\t\t\t\t\t\t\t\t\tfields: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Retry\", value: `${sc.retryIntervalMinutes ?? 15}min / ${sc.maxAttempts ?? 3} attempts` },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ label: \"Leads\", value: `${sc.totalLeads ?? 0} total / ${sc.completedLeads ?? 0} completed / ${sc.successfulCalls ?? 0} success` },\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},\r\n\t\t\t\t\t\t\t\t\t].map((card, idx) => (\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\tkey={idx}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tgap: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpx: 1.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpy: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"10px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#fafafa\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderLeft: `3px solid ${card.accent}`,\r\n\t\t\t\t\t\t\t\t\t\t\t\tflex: \"0 0 auto\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: 180,\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>\r\n\t\t\t\t\t\t\t\t\t\t\t{card.fields.map((field) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Box key={field.label} sx={{ display: \"flex\", alignItems: \"center\", gap: 0.75 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"poppins, Arial, sans-serif\", fontSize: \"0.72rem\", fontWeight: 600, color: \"#888\", whiteSpace: \"nowrap\", flexShrink: 0 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{field.label}:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontFamily: \"poppins, Arial, sans-serif\", fontSize: \"0.75rem\", fontWeight: 700, color: \"#333\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{field.value}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</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</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\t</Box>\r\n\t\t\t\t\t\t\t</Paper>\r\n\r\n\t\t\t\t\t\t\t{/* Leads section */}\r\n\t\t\t\t\t\t\t<SDKPermissionGuard permission={SDK_PERMISSIONS.CAMPAIGNS_LEADS_READ} showFallback={false}>\r\n\t\t\t\t\t\t\t<Paper\r\n\t\t\t\t\t\t\t\televation={0}\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tborderRadius: \"16px\",\r\n\t\t\t\t\t\t\t\t\toverflow: \"hidden\",\r\n\t\t\t\t\t\t\t\t\tborder: \"1px solid #e0e0e0\",\r\n\t\t\t\t\t\t\t\t\tboxShadow: \"0 1px 3px rgba(0,0,0,0.08)\",\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{/* Leads toolbar — matches original layout */}\r\n\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\tflexDirection: \"column\",\r\n\t\t\t\t\t\t\t\t\tgap: 1.25,\r\n\t\t\t\t\t\t\t\t\tpx: { xs: 1.5, sm: 2 },\r\n\t\t\t\t\t\t\t\t\tpy: 1.5,\r\n\t\t\t\t\t\t\t\t\tborderBottom: \"1px solid #eee\",\r\n\t\t\t\t\t\t\t\t\tbackgroundColor: \"#fafafa\",\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{/* Row 1: actions + search + status */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\t\t\t\t\t\t\t\t\t\talignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t{/* Left: title + action buttons */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t<Typography sx={{ fontWeight: 700, fontSize: \"1rem\", color: \"#1a1a1a\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\tLeads\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<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_LEADS_IMPORT,\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\tshowFallback={false}\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<SDKButton variant=\"outlined\" onClick={() => setImportOpen(true)} disabled={scArchived} startIcon={<UploadFileIcon sx={{ fontSize: 15 }} />} size=\"small\" sx={{ height: 36 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tImport Leads\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_LEADS_CREATE,\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\tshowFallback={false}\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<SDKButton variant=\"primary\" onClick={() => setAddLeadOpen(true)} disabled={scArchived} startIcon={<AddIcon sx={{ fontSize: 15 }} />} size=\"small\" sx={{ height: 36 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tAdd Lead\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t{/* Right: search + status filter */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\", width: { xs: \"100%\", sm: \"auto\" } }}>\r\n\t\t\t\t\t\t\t\t\t\t<OutlinedInput\r\n\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={leadSearch}\r\n\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => { setLeadSearch(e.target.value); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Search number...\"\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ width: { xs: \"100%\", sm: 200 }, fontSize: \"0.85rem\", height: 36, borderRadius: \"20px\" }}\r\n\t\t\t\t\t\t\t\t\t\t\tstartAdornment={<InputAdornment position=\"start\"><SearchIcon sx={{ fontSize: 16, color: \"#aaa\" }} /></InputAdornment>}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t\t<FormControl size=\"small\" sx={{ minWidth: 130 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t<Select\r\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={leadStatusFilter}\r\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => { setLeadStatusFilter(e.target.value); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{ height: 36, borderRadius: \"30px\", fontSize: \"0.85rem\" }}\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{LEAD_STATUSES.map((s) => <MenuItem key={s} value={s}>{s}</MenuItem>)}\r\n\t\t\t\t\t\t\t\t\t\t\t</Select>\r\n\t\t\t\t\t\t\t\t\t\t</FormControl>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t\t{/* Row 2: date filters + export */}\r\n\t\t\t\t\t\t\t\t\t<Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", gap: 1, flexWrap: \"wrap\" }}>\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\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\r\n\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\tgap: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\t\tflexWrap: \"wrap\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tpx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpy: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: \"30px\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tborder: \"1px solid #e0e4ea\",\r\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: \"#f7f9fb\",\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>\r\n\t\t\t\t\t\t\t\t\t\t\t<LocalizationProvider dateAdapter={AdapterDayjs}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t<DateRangePicker\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tstartDate={leadStartDate}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tendDate={leadEndDate}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonStartChange={(v) => { setLeadStartDate(v); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tonEndChange={(v) => { setLeadEndDate(v); setLeadPage(0); }}\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</LocalizationProvider>\r\n\t\t\t\t\t\t\t\t\t\t\t{(leadStartDate || leadEndDate) && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title=\"Clear dates\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton size=\"small\" onClick={clearLeadDates} sx={{ p: 0.5, color: \"#7a8599\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ClearIcon sx={{ fontSize: 16 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\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</Box>\r\n\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_READ,\r\n\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_MANAGE,\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\tshowFallback={false}\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<SDKButton variant=\"primary\" onClick={handleExport} disabled={leadsLoading || leadTotal === 0} startIcon={<DownloadIcon sx={{ fontSize: 15 }} />} size=\"small\" sx={{ height: 36 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\tExport Excel\r\n\t\t\t\t\t\t\t\t\t\t\t</SDKButton>\r\n\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\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\r\n\t\t\t\t\t\t\t\t{/* Horizontal scroll wrapper — thin scrollbar, minWidth so columns don't squish */}\r\n\t\t\t\t\t\t\t\t<Box sx={{\r\n\t\t\t\t\t\t\t\t\toverflowX: \"auto\",\r\n\t\t\t\t\t\t\t\t\toverflowY: \"visible\",\r\n\t\t\t\t\t\t\t\t\tWebkitOverflowScrolling: \"touch\",\r\n\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar\": { height: 4 },\r\n\t\t\t\t\t\t\t\t\t\"&::-webkit-scrollbar-thumb\": { backgroundColor: \"#ccc\", borderRadius: 2 },\r\n\t\t\t\t\t\t\t\t}}>\r\n\t\t\t\t\t\t\t\t\t<Table size=\"small\" sx={{ minWidth: 980 }}>\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 sx={{ backgroundColor: \"#f1f1f1\" }}>\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\t\t\"Number\", \"Status\", \"Priority\", \"Source\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Call ID\", \"Queue Name\", \"Attempts\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Created At\", \"Last Attempt\", \"Next Attempt\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Last Outcome\", \"Completed At\", \"Notes\", \"Outcome\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...(showVoicemail ? [\"Voice Mail\"] : []),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Actions\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t].map((col) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell key={col} sx={{ ...headCellSx, ...(col === \"Actions\" ? { textAlign: \"center\" } : {}) }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{col}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\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</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{leadsLoading ? (\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\t\t<TableCell colSpan={showVoicemail ? 16 : 15} align=\"center\" sx={{ py: 4 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CircularProgress size={24} sx={{ color: \"#1A5F6C\" }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</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) : leads.length === 0 ? (\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\t\t<TableCell colSpan={showVoicemail ? 16 : 15} align=\"center\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ py: 4, color: \"#999\", fontFamily: \"poppins, Arial, sans-serif\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tNo leads found. Add leads using \"Add Lead\" or \"Import Leads\".\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t</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\t\tleads.map((lead) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst nonDeletable = [\"IN_PROGRESS\", \"COMPLETED\", \"FAILED\", \"DO_NOT_CALL\"];\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst leadStatus = (lead.status || \"\").toUpperCase();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst deleteDisabled = nonDeletable.includes(leadStatus);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isDialerEnabled = !!leadsMeta?.isDialerEnabled;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isCompleted = leadStatus === \"COMPLETED\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isInProgress = leadStatus === \"IN_PROGRESS\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst isDialable =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tisDialerEnabled\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& hasOutboundPermission\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& isAgentIdle\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& !isCompleted\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& !isInProgress\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t&& dialLoading !== lead.id;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst dialTooltip =\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t!isDialerEnabled ? \"Dialer is not enabled\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: !hasOutboundPermission ? \"No outbound call permission\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: isCompleted ? \"Lead is completed\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: isInProgress ? \"Lead is in progress\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: !isAgentIdle ? \"Agent is not idle\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: dialLoading === lead.id ? \"Dialing…\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `Call ${lead.phoneNumber}`;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst { chip: prioChip, label: prioLabel } = leadPriorityChipSx(lead.priority);\r\n\t\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\t<TableRow key={lead.id} sx={tableRowSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.phoneNumber}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Chip label={lead.status || \"pending\"} size=\"small\" sx={leadStatusChipSx(lead.status)} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Chip label={prioLabel} size=\"small\" sx={prioChip} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.source || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, maxWidth: 140, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={lead.originalCallId || \"\"}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{lead.originalCallId || \"\"}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.queueName || \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.attemptCount ?? 0}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.createdAt ? new Date(lead.createdAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.lastAttemptAt ? new Date(lead.lastAttemptAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.nextAttemptAt ? new Date(lead.nextAttemptAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastOutcome || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.completedAt ? new Date(lead.completedAt).toLocaleString() : \"\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={{ ...bodyCellSx, maxWidth: 150, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.notes ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={lead.notes} arrow placement=\"top\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{lead.notes}</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\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</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TableCell sx={bodyCellSx}>{lead.lastReason || \"\"}</TableCell>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{showVoicemail && <TableCell sx={{ ...bodyCellSx, minWidth: 180 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{lead.originalCallId\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? <CallRecording callUuid={lead.originalCallId} recordingPath={lead.voicemail} iconOnly />\r\n\t\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</TableCell>\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\t<TableCell sx={{ ...bodyCellSx, textAlign: \"center\", whiteSpace: \"nowrap\" }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Dial button */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={dialTooltip}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleDialPreview(lead.id)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!isDialable}\r\n\t\t\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\t\t\tcolor: isDialable ? \"#2e7d32\" : \"#bdbdbd\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isDialable ? \"#e8f5e9\" : \"transparent\",\r\n\t\t\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\t\t\ttransition: \"all 0.2s ease-in-out\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: isDialable ? \"#43a047\" : \"transparent\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: isDialable ? \"#fff\" : \"#bdbdbd\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransform: isDialable ? \"scale(1.2)\" : \"none\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: isDialable ? \"0 0 8px rgba(67,160,71,0.5)\" : \"none\",\r\n\t\t\t\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\t\t\t}}\r\n\t\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\t\t\t{dialLoading === lead.id\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? <CircularProgress size={16} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: <PhoneIcon sx={{ fontSize: 18 }} />}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* View call data */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip title={lead.latestCallId ? \"View call details\" : \"No call data available\"}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleViewCallData(lead)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={!lead.latestCallId}\r\n\t\t\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\t\t\tml: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: lead.latestCallId ? \"#1A5F6C\" : \"#bdbdbd\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": { backgroundColor: \"transparent\" },\r\n\t\t\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\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<VisibilityOutlinedIcon sx={{ fontSize: 18 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{/* Delete button */}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<SDKPermissionGuard\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpermissions={[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSDK_PERMISSIONS.CAMPAIGNS_LEADS_DELETE,\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\tshowFallback={false}\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\t<Tooltip title={\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteDisabled\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `Cannot delete — status is ${leadStatus.toLowerCase().replace(\"_\", \" \")}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `Delete lead ${lead.phoneNumber}`\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\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => { setDeleteLeadTarget(lead); setDeleteLeadOpen(true); }}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={deleteDisabled}\r\n\t\t\t\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\t\t\t\tml: 0.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: deleteDisabled ? \"#bdbdbd\" : \"#c62828\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: deleteDisabled ? \"transparent\" : \"#ffebee\",\r\n\t\t\t\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\t\t\t\ttransition: \"all 0.2s ease-in-out\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"&:hover\": {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: deleteDisabled ? \"transparent\" : \"#d32f2f\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: deleteDisabled ? \"#bdbdbd\" : \"#fff\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttransform: deleteDisabled ? \"none\" : \"scale(1.2)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: deleteDisabled ? \"none\" : \"0 0 8px rgba(211,47,47,0.5)\",\r\n\t\t\t\t\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\t\t\t\t}}\r\n\t\t\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\t\t\t\t<DeleteIcon sx={{ fontSize: 18 }} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</SDKPermissionGuard>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TableCell>\r\n\t\t\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\t\t);\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</TableBody>\r\n\t\t\t\t\t\t\t\t\t</Table>\r\n\t\t\t\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t\t\t\t{leads.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t<TablePagination\r\n\t\t\t\t\t\t\t\t\t\tcomponent=\"div\"\r\n\t\t\t\t\t\t\t\t\t\tcount={leadTotal}\r\n\t\t\t\t\t\t\t\t\t\tpage={leadPage}\r\n\t\t\t\t\t\t\t\t\t\trowsPerPage={leadRowsPerPage}\r\n\t\t\t\t\t\t\t\t\t\tonPageChange={(_, p) => { setLeadPage(p); refetchLeads(p); }}\r\n\t\t\t\t\t\t\t\t\t\tonRowsPerPageChange={(e) => { setLeadRowsPerPage(parseInt(e.target.value, 10)); setLeadPage(0); }}\r\n\t\t\t\t\t\t\t\t\t\trowsPerPageOptions={[10, 15, 25, 50, 100]}\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: \"0.82rem\",\r\n\t\t\t\t\t\t\t\t\t\t\t\"& .MuiTablePagination-toolbar\": { minHeight: 40, px: 1 },\r\n\t\t\t\t\t\t\t\t\t\t\t\"& .MuiTablePagination-selectLabel, & .MuiTablePagination-displayedRows\": { fontSize: \"0.82rem\" },\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)}\r\n\t\t\t\t\t\t\t</Paper>\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)}\r\n\t\t\t\t</Box>\r\n\t\t\t</Box>\r\n\r\n\t\t\t{/* ── Dialogs ── */}\r\n\t\t\t<CampaignDialog\r\n\t\t\t\topen={dialogOpen}\r\n\t\t\t\teditingCampaign={editingCampaign}\r\n\t\t\t\tformData={formData}\r\n\t\t\t\tsetFormData={setFormData}\r\n\t\t\t\tsaving={saving}\r\n\t\t\t\tonSave={handleSave}\r\n\t\t\t\tonClose={() => setDialogOpen(false)}\r\n\t\t\t\tparentQueueNameMap={queueNameMap}\r\n\t\t\t\tonQueuesRefreshed={handleQueuesRefreshed}\r\n\t\t\t\tonLeadsChange={() => { fetchCampaigns(); if (selectedId) refetchLeads(); }}\r\n\t\t\t/>\r\n\t\t\t<AddLeadDialog\r\n\t\t\t\topen={addLeadOpen}\r\n\t\t\t\tdata={addLeadData}\r\n\t\t\t\tonChange={setAddLeadData}\r\n\t\t\t\tsaving={addLeadSaving}\r\n\t\t\t\tonSave={handleAddLead}\r\n\t\t\t\tonClose={() => { setAddLeadOpen(false); setAddLeadData({ phoneNumber: \"\", callerName: \"\", priority: 5 }); }}\r\n\t\t\t/>\r\n\t\t\t<ImportLeadsDialog\r\n\t\t\t\topen={importOpen}\r\n\t\t\t\tfile={importFile}\r\n\t\t\t\tonFileChange={setImportFile}\r\n\t\t\t\tuploading={importing}\r\n\t\t\t\tonUpload={handleImport}\r\n\t\t\t\tonDownloadTemplate={handleDownloadTemplate}\r\n\t\t\t\tonClose={() => { setImportOpen(false); setImportFile(null); }}\r\n\t\t\t/>\r\n\t\t\t<ConfirmDialog\r\n\t\t\t\topen={archiveOpen}\r\n\t\t\t\ttitle=\"Archive Campaign\"\r\n\t\t\t\tmessage={`Archive \"${archiveTarget?.name}\"? It will no longer run.`}\r\n\t\t\t\tloading={archiving}\r\n\t\t\t\tonConfirm={confirmArchive}\r\n\t\t\t\tonClose={() => { setArchiveOpen(false); setArchiveTarget(null); }}\r\n\t\t\t/>\r\n\t\t\t<ConfirmDialog\r\n\t\t\t\topen={deleteLeadOpen}\r\n\t\t\t\ttitle=\"Delete Lead\"\r\n\t\t\t\tmessage={`Delete lead ${deleteLeadTarget?.phoneNumber}? This cannot be undone.`}\r\n\t\t\t\tloading={deletingLead}\r\n\t\t\t\tonConfirm={confirmDeleteLead}\r\n\t\t\t\tonClose={() => { setDeleteLeadOpen(false); setDeleteLeadTarget(null); }}\r\n\t\t\t/>\r\n\t\t\t<CallDataDialog\r\n\t\t\t\topen={callDataOpen}\r\n\t\t\t\tlead={callDataLead}\r\n\t\t\t\tdata={callData}\r\n\t\t\t\tloading={callDataLoading}\r\n\t\t\t\terror={callDataError}\r\n\t\t\t\tonClose={() => { setCallDataOpen(false); setCallData(null); setCallDataError(null); setCallDataLead(null); }}\r\n\t\t\t/>\r\n\t\t</Box>\r\n\t);\r\n});\r\n\r\n// ──── Default export — wrapped with SDKProvider ───────────────────────────────\r\n\r\nconst Campaigns: React.FC = () => (\r\n\t<SDKProvider>\r\n\t\t<CampaignsContent />\r\n\t</SDKProvider>\r\n);\r\n\r\nexport default Campaigns;\r\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z\"\n}), 'Add');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"m20.54 5.23-1.39-1.68C18.88 3.21 18.47 3 18 3H6c-.47 0-.88.21-1.16.55L3.46 5.23C3.17 5.57 3 6.02 3 6.5V19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6.5c0-.48-.17-.93-.46-1.27M12 17.5 6.5 12H10v-2h4v2h3.5zM5.12 5l.81-1h12l.94 1z\"\n}), 'Archive');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'ChevronLeft');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'ChevronRight');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z\"\n}), 'Delete');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z\"\n}), 'Edit');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z\"\n}), 'UploadFile');","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M12 6c3.79 0 7.17 2.13 8.82 5.5C19.17 14.87 15.79 17 12 17s-7.17-2.13-8.82-5.5C4.83 8.13 8.21 6 12 6m0-2C7 4 2.73 7.11 1 11.5 2.73 15.89 7 19 12 19s9.27-3.11 11-7.5C21.27 7.11 17 4 12 4m0 5c1.38 0 2.5 1.12 2.5 2.5S13.38 14 12 14s-2.5-1.12-2.5-2.5S10.62 9 12 9m0-2c-2.48 0-4.5 2.02-4.5 4.5S9.52 16 12 16s4.5-2.02 4.5-4.5S14.48 7 12 7\"\n}), 'VisibilityOutlined');","import React from \"react\";\r\nimport { Button, SxProps, Theme, useTheme } from \"@mui/material\";\r\nimport { alpha } from \"@mui/material/styles\";\r\n\r\ntype SDKButtonVariant = \"primary\" | \"danger\" | \"cancel\" | \"outlined\";\r\n\r\ninterface SDKButtonProps {\r\n\tchildren: React.ReactNode;\r\n\tvariant?: SDKButtonVariant;\r\n\tonClick?: React.MouseEventHandler<HTMLButtonElement>;\r\n\tstartIcon?: React.ReactNode;\r\n\tendIcon?: React.ReactNode;\r\n\tdisabled?: boolean;\r\n\ttype?: \"button\" | \"submit\" | \"reset\";\r\n\tsize?: \"small\" | \"medium\" | \"large\";\r\n\tfullWidth?: boolean;\r\n\tsx?: SxProps<Theme>;\r\n}\r\n\r\nconst muiVariant: Record<SDKButtonVariant, \"contained\" | \"outlined\" | \"text\"> = {\r\n\tprimary: \"contained\",\r\n\tdanger: \"contained\",\r\n\tcancel: \"text\",\r\n\toutlined: \"outlined\",\r\n};\r\n\r\nexport function SDKButton({\r\n\tchildren,\r\n\tvariant = \"primary\",\r\n\tonClick,\r\n\tstartIcon,\r\n\tendIcon,\r\n\tdisabled = false,\r\n\ttype = \"button\",\r\n\tsize = \"medium\",\r\n\tfullWidth = false,\r\n\tsx,\r\n}: SDKButtonProps) {\r\n\tconst theme = useTheme();\r\n\tconst primary = theme.palette.primary.main;\r\n\tconst primaryDark = theme.palette.primary.dark;\r\n\r\n\tconst styles: Record<SDKButtonVariant, SxProps<Theme>> = {\r\n\t\tprimary: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tbackgroundColor: primary,\r\n\t\t\tborderRadius: \"30px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\tboxShadow: `0 2px 8px ${alpha(primary, 0.25)}`,\r\n\t\t\t\"&:hover\": {\r\n\t\t\t\tbackgroundColor: primaryDark,\r\n\t\t\t\tboxShadow: `0 4px 12px ${alpha(primary, 0.35)}`,\r\n\t\t\t},\r\n\t\t\t\"&.Mui-disabled\": {\r\n\t\t\t\tbackgroundColor: alpha(primary, 0.4),\r\n\t\t\t\tcolor: \"#fff\",\r\n\t\t\t},\r\n\t\t},\r\n\t\tdanger: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tbackgroundColor: \"#d32f2f\",\r\n\t\t\tborderRadius: \"8px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\t\"&:hover\": { backgroundColor: \"#b71c1c\" },\r\n\t\t\t\"&.Mui-disabled\": { backgroundColor: \"#e57373\", color: \"#fff\" },\r\n\t\t},\r\n\t\tcancel: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tcolor: \"#666\",\r\n\t\t\tborderRadius: \"30px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\tborder: \"1px solid #d0d0d0\",\r\n\t\t\t\"&:hover\": { backgroundColor: \"#f5f5f5\", borderColor: \"#bbb\" },\r\n\t\t},\r\n\t\toutlined: {\r\n\t\t\ttextTransform: \"none\",\r\n\t\t\tfontWeight: 600,\r\n\t\t\tcolor: primary,\r\n\t\t\tborderColor: primary,\r\n\t\t\tborderRadius: \"30px\",\r\n\t\t\tfontSize: \"0.82rem\",\r\n\t\t\tpx: 2,\r\n\t\t\t\"&:hover\": { borderColor: primaryDark, backgroundColor: alpha(primary, 0.05) },\r\n\t\t},\r\n\t};\r\n\r\n\treturn (\r\n\t\t<Button\r\n\t\t\tvariant={muiVariant[variant]}\r\n\t\t\tonClick={onClick}\r\n\t\t\tstartIcon={startIcon}\r\n\t\t\tendIcon={endIcon}\r\n\t\t\tdisabled={disabled}\r\n\t\t\ttype={type}\r\n\t\t\tsize={size}\r\n\t\t\tfullWidth={fullWidth}\r\n\t\t\tsx={[styles[variant], ...(Array.isArray(sx) ? sx : [sx])]}\r\n\t\t>\r\n\t\t\t{children}\r\n\t\t</Button>\r\n\t);\r\n}\r\n","import { useState, useCallback } from \"react\";\r\nimport axiosInstance, { deepFindArray, deepFindTotal } from \"../../services/axios\";\r\nimport { END_POINT } from \"../../services/endPoint\";\r\nimport type {\r\n\tCampaign,\r\n\tCampaignCreatePayload,\r\n\tCreateQueuePayload,\r\n\tLead,\r\n\tLeadCallData,\r\n\tLeadCreatePayload,\r\n\tLeadsMeta,\r\n\tLeadsParams,\r\n\tLeadsResponse,\r\n\tQueue,\r\n} from \"./types\";\r\n\r\nexport function useCampaigns() {\r\n\tconst [campaigns, setCampaigns] = useState<Campaign[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchCampaigns = useCallback(async () => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_GET_ALL);\r\n\t\t\tsetCampaigns(Array.isArray(res.data) ? res.data : []);\r\n\t\t} catch {\r\n\t\t\tsetCampaigns([]);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst getCampaignById = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_GET_BY_ID(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst createCampaign = useCallback(async (data: CampaignCreatePayload): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_CREATE, data);\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst updateCampaign = useCallback(async (id: number, data: Partial<CampaignCreatePayload>): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.put(END_POINT.CAMPAIGNS_UPDATE(id), data);\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst activateCampaign = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_ACTIVATE(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst pauseCampaign = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_PAUSE(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst archiveCampaign = useCallback(async (id: number): Promise<Campaign> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_ARCHIVE(id));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tcampaigns,\r\n\t\tloading,\r\n\t\tfetchCampaigns,\r\n\t\tgetCampaignById,\r\n\t\tcreateCampaign,\r\n\t\tupdateCampaign,\r\n\t\tactivateCampaign,\r\n\t\tpauseCampaign,\r\n\t\tarchiveCampaign,\r\n\t};\r\n}\r\n\r\nexport function useLeads() {\r\n\tconst [leads, setLeads] = useState<Lead[]>([]);\r\n\tconst [leadTotal, setLeadTotal] = useState(0);\r\n\tconst [leadsMeta, setLeadsMeta] = useState<LeadsMeta>(null);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchLeads = useCallback(async (campaignId: number, params?: LeadsParams, opts?: { silent?: boolean }): Promise<void> => {\r\n\t\tif (!opts?.silent) setLoading(true);\r\n\t\ttry {\r\n\t\t\tconst qs = new URLSearchParams();\r\n\t\t\tif (params?.page != null) qs.append(\"page\", String(params.page));\r\n\t\t\tif (params?.pageSize != null) qs.append(\"pageSize\", String(params.pageSize));\r\n\t\t\tif (params?.lead_status) qs.append(\"lead_status\", params.lead_status);\r\n\t\t\tif (params?.search) qs.append(\"search\", params.search);\r\n\t\t\tif (params?.start_date) qs.append(\"start_date\", params.start_date);\r\n\t\t\tif (params?.end_date) qs.append(\"end_date\", params.end_date);\r\n\t\t\tconst qsStr = qs.toString();\r\n\t\t\tconst url = `${END_POINT.CAMPAIGNS_LEADS(campaignId)}${qsStr ? `?${qsStr}` : \"\"}`;\r\n\t\t\tconst res = await axiosInstance.get<LeadsResponse>(url);\r\n\t\t\tconst body = res.data as any;\r\n\t\t\t// Find the leads array wherever it sits (flat array, { leads }, { data: { leads } },\r\n\t\t\t// { leads: { data: [...] } }, ...).\r\n\t\t\tconst fetchedLeads = deepFindArray<Lead>(body, [\"leads\"]);\r\n\t\t\tsetLeads(fetchedLeads);\r\n\t\t\t// The real total may sit at body.total, body.data.total, or body.leads.total.\r\n\t\t\tconst foundTotal = deepFindTotal(body);\r\n\t\t\tsetLeadTotal(foundTotal >= 0 ? foundTotal : fetchedLeads.length);\r\n\t\t\tsetLeadsMeta({\r\n\t\t\t\tisDialerEnabled: body?.isDialerEnabled ?? body?.data?.isDialerEnabled,\r\n\t\t\t\tdialingMode: body?.dialingMode ?? body?.data?.dialingMode,\r\n\t\t\t\tcampaignStatus: body?.campaignStatus ?? body?.data?.campaignStatus,\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tsetLeads([]);\r\n\t\t\tsetLeadTotal(0);\r\n\t\t\tsetLeadsMeta(null);\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst createLead = useCallback(async (campaignId: number, data: LeadCreatePayload): Promise<Lead> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_LEADS(campaignId), data);\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst deleteLead = useCallback(async (campaignId: number, leadId: number): Promise<void> => {\r\n\t\tawait axiosInstance.delete(END_POINT.CAMPAIGNS_DELETE_LEAD(campaignId, leadId));\r\n\t}, []);\r\n\r\n\tconst dialPreview = useCallback(async (campaignId: number, leadId: number): Promise<{ message: string }> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_DIAL_PREVIEW(campaignId, leadId));\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst getLeadCallData = useCallback(async (callUuid: string): Promise<LeadCallData> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CALL_DATA_BY_CALL(callUuid));\r\n\t\t// API wraps the payload as { message, data }\r\n\t\treturn res.data?.data ?? res.data;\r\n\t}, []);\r\n\r\n\tconst uploadLeadsExcel = useCallback(async (campaignId: number, file: File): Promise<any> => {\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append(\"file\", file);\r\n\t\tconst res = await axiosInstance.post(END_POINT.CAMPAIGNS_LEADS_UPLOAD_EXCEL(campaignId), formData, {\r\n\t\t\theaders: { \"Content-Type\": \"multipart/form-data\" },\r\n\t\t});\r\n\t\treturn res.data;\r\n\t}, []);\r\n\r\n\tconst downloadLeadTemplate = useCallback(async (campaignId: number): Promise<void> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_LEADS_TEMPLATE_EXCEL(campaignId), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\tconst blob = res.data as Blob;\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst a = document.createElement(\"a\");\r\n\t\ta.href = url;\r\n\t\ta.download = \"lead_template.xlsx\";\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.click();\r\n\t\ta.remove();\r\n\t\twindow.URL.revokeObjectURL(url);\r\n\t}, []);\r\n\r\n\tconst exportLeads = useCallback(async (campaignId: number): Promise<void> => {\r\n\t\tconst res = await axiosInstance.get(END_POINT.CAMPAIGNS_LEADS_EXPORT_EXCEL(campaignId), {\r\n\t\t\tresponseType: \"blob\",\r\n\t\t});\r\n\t\tconst blob = res.data as Blob;\r\n\t\tconst url = window.URL.createObjectURL(blob);\r\n\t\tconst a = document.createElement(\"a\");\r\n\t\ta.href = url;\r\n\t\ta.download = \"leads_export.xlsx\";\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.click();\r\n\t\ta.remove();\r\n\t\twindow.URL.revokeObjectURL(url);\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tleads,\r\n\t\tleadTotal,\r\n\t\tleadsMeta,\r\n\t\tloading,\r\n\t\tfetchLeads,\r\n\t\tcreateLead,\r\n\t\tdeleteLead,\r\n\t\tdialPreview,\r\n\t\tgetLeadCallData,\r\n\t\tuploadLeadsExcel,\r\n\t\tdownloadLeadTemplate,\r\n\t\texportLeads,\r\n\t};\r\n}\r\n\r\nexport function useQueues() {\r\n\tconst [queues, setQueues] = useState<Queue[]>([]);\r\n\tconst [loading, setLoading] = useState(false);\r\n\r\n\tconst fetchQueues = useCallback(async (): Promise<Queue[]> => {\r\n\t\tsetLoading(true);\r\n\t\ttry {\r\n\t\t\tconst res = await axiosInstance.get(END_POINT.QUEUES_GET_ALL);\r\n\t\t\tconst list: Queue[] = Array.isArray(res.data)\r\n\t\t\t\t? res.data\r\n\t\t\t\t: Array.isArray(res.data?.data) ? res.data.data : [];\r\n\t\t\tsetQueues(list);\r\n\t\t\treturn list;\r\n\t\t} catch {\r\n\t\t\tsetQueues([]);\r\n\t\t\treturn [];\r\n\t\t} finally {\r\n\t\t\tsetLoading(false);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst createQueue = useCallback(async (payload: CreateQueuePayload): Promise<Queue> => {\r\n\t\tconst res = await axiosInstance.post(END_POINT.QUEUES_CREATE, payload);\r\n\t\treturn res.data?.data ?? res.data;\r\n\t}, []);\r\n\r\n\treturn { queues, loading, fetchQueues, createQueue };\r\n}\r\n","\"use client\";\n\nimport createSvgIcon from \"./utils/createSvgIcon.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Clear');","export interface CampaignQueue {\r\n\tid: number;\r\n\tcampaignId: number;\r\n\tqueueId: number;\r\n\tpriorityOverride: number | null;\r\n\tminWaitBeforeCallback: number;\r\n\tcreatedAt: string;\r\n}\r\n\r\nexport interface Campaign {\r\n\tid: number;\r\n\ttenantId: number;\r\n\tname: string;\r\n\tdescription: string;\r\n\tcampaignType: string;\r\n\tstatus: string;\r\n\tdialingMode: string;\r\n\tmaxConcurrentCalls: number;\r\n\tcallsPerAgent: number;\r\n\tstartTime: string;\r\n\tendTime: string;\r\n\tdaysOfWeek: number[];\r\n\ttimezone: string;\r\n\tscheduledStart: string | null;\r\n\tscheduledEnd: string | null;\r\n\tmaxAttempts: number;\r\n\tretryIntervalMinutes: number;\r\n\tcallerId: string | null;\r\n\tringTimeoutSeconds: number;\r\n\tanswerTimeoutSeconds: number | null;\r\n\tagentType: string;\r\n\taiBotId: number | null;\r\n\tpriority: number;\r\n\ttotalLeads: number;\r\n\tcompletedLeads: number;\r\n\tsuccessfulCalls: number;\r\n\tsettings: Record<string, any>;\r\n\tcreatedAt: string;\r\n\tupdatedAt: string;\r\n\tcompletionRate: number;\r\n\tcampaignQueues: CampaignQueue[];\r\n}\r\n\r\nexport interface CampaignCreatePayload {\r\n\tname: string;\r\n\tdescription: string;\r\n\tcampaignType: string;\r\n\tdialingMode: string;\r\n\tmaxConcurrentCalls: number;\r\n\tcallsPerAgent: number;\r\n\tstartTime: string;\r\n\tendTime: string;\r\n\tdaysOfWeek: number[];\r\n\ttimezone: string;\r\n\tscheduledStart: string;\r\n\tscheduledEnd: string;\r\n\tmaxAttempts: number;\r\n\tretryIntervalMinutes: number;\r\n\tcallerId: string;\r\n\tringTimeoutSeconds: number;\r\n\tanswerTimeoutSeconds: number;\r\n\tagentType: string;\r\n\taiBotId: number | null;\r\n\tpriority: number;\r\n\tsettings: Record<string, any>;\r\n\tqueueLinks?: QueueLinkPayload[];\r\n}\r\n\r\nexport interface QueueLinkPayload {\r\n\tqueueId: number;\r\n\tpriorityOverride: number;\r\n\tminWaitBeforeCallback: number;\r\n}\r\n\r\nexport interface Lead {\r\n\tid: number;\r\n\tcampaignId: number;\r\n\tphoneNumber: string;\r\n\tcallerName: string;\r\n\tsource: string;\r\n\tsourceReference: string;\r\n\toriginalCallId: string;\r\n\toriginalQueueId: number;\r\n\tqueueName: string | null;\r\n\toriginalWaitTime: number;\r\n\tstatus: string;\r\n\tpriority: number;\r\n\tscheduledAt: string;\r\n\texpiresAt: string;\r\n\tattemptCount: number;\r\n\tlastAttemptAt: string;\r\n\tnextAttemptAt: string;\r\n\tlastOutcome: string;\r\n\tlastReason: string;\r\n\tcompletedAt: string;\r\n\tcustomData: Record<string, any>;\r\n\tnotes: string;\r\n\tcreatedAt: string;\r\n\tupdatedAt: string;\r\n\tlatestCallId: string | null;\r\n\tvoicemail: string | null;\r\n}\r\n\r\nexport interface LeadCallData {\r\n\tcallUuid: string;\r\n\tphoneNumber: string;\r\n\tcallStartTime: string | null;\r\n\tconnectTime: string | null;\r\n\tcallType: string;\r\n\tcallStatus: string;\r\n\tagentName: string | null;\r\n\tagentUserId: string | null;\r\n\tqueueName: string | null;\r\n\textension: string | null;\r\n\ttalkDurationSeconds: number;\r\n\ttalkDurationFmt: string;\r\n\tholdDurationSeconds: number;\r\n\tholdDurationFmt: string;\r\n\tmuteDurationSeconds: number;\r\n\tmuteDurationFmt: string;\r\n\twrapupDurationSeconds: number;\r\n\twrapupDurationFmt: string;\r\n\tringingDurationSeconds: number;\r\n\tringingDurationFmt: string;\r\n\tqueueDurationSeconds: number;\r\n\tqueueDurationFmt: string;\r\n\tivrDurationSeconds: number;\r\n\tivrDurationFmt: string;\r\n\tdisposition: string | null;\r\n\tagentSelectedDisposition: string | null;\r\n\tremarks: string | null;\r\n\twasTransferred: boolean;\r\n\trecordingPath: string | null;\r\n\thangupInitiator: string | null;\r\n}\r\n\r\nexport interface LeadCreatePayload {\r\n\tphoneNumber: string;\r\n\tcallerName: string;\r\n\tsource?: string;\r\n\tpriority?: number;\r\n\tnotes?: string;\r\n\tscheduledAt?: string;\r\n}\r\n\r\nexport interface LeadsResponse {\r\n\tisDialerEnabled: boolean;\r\n\tdialingMode: string;\r\n\tcampaignStatus: string;\r\n\tleads: Lead[];\r\n\ttotal: number;\r\n}\r\n\r\nexport interface LeadsParams {\r\n\tpage?: number;\r\n\tpageSize?: number;\r\n\tlead_status?: string;\r\n\tsearch?: string;\r\n\tstart_date?: string;\r\n\tend_date?: string;\r\n}\r\n\r\nexport interface Queue {\r\n\tid: number;\r\n\tname: string;\r\n\tdescription: string;\r\n\tprocessId?: number;\r\n\tisActive: boolean;\r\n\tincludeInAbandonedCallback?: boolean;\r\n}\r\n\r\nexport interface CreateQueuePayload {\r\n\tname: string;\r\n\tdescription: string;\r\n\tisActive?: boolean;\r\n\tprocessId?: number;\r\n\tincludeInAbandonedCallback?: boolean;\r\n}\r\n\r\nexport type LeadsMeta = Pick<LeadsResponse, \"isDialerEnabled\" | \"dialingMode\" | \"campaignStatus\"> | null;\r\n\r\nexport const CAMPAIGN_TYPES = [\"OUTBOUND_CAMPAIGN\", \"ABANDONED_CALLBACK\"] as const;\r\n\r\nexport const DIALING_MODES_MAP: Record<string, string[]> = {\r\n\tOUTBOUND_CAMPAIGN: [\"PREVIEW\", \"AI_CALLBACK\"],\r\n\tABANDONED_CALLBACK: [\"PROGRESSIVE\", \"PREDICTIVE\"],\r\n};\r\n\r\nexport const AGENT_TYPES = [\"HUMAN\", \"AI\", \"HYBRID\"] as const;\r\n\r\nexport const LEAD_PRIORITY_OPTIONS: { label: string; value: number }[] = [\r\n\t{ label: \"HIGH\", value: 10 },\r\n\t{ label: \"MEDIUM\", value: 5 },\r\n\t{ label: \"LOW\", value: 1 },\r\n];\r\n\r\nexport const DAYS_OF_WEEK = [\r\n\t{ label: \"Sun\", value: 0 }, { label: \"Mon\", value: 1 }, { label: \"Tue\", value: 2 },\r\n\t{ label: \"Wed\", value: 3 }, { label: \"Thu\", value: 4 }, { label: \"Fri\", value: 5 },\r\n\t{ label: \"Sat\", value: 6 },\r\n] as const;\r\n\r\nexport const TIMEZONES = [\r\n\t\"Etc/UTC\", \"US/Eastern\", \"US/Central\", \"US/Mountain\", \"US/Pacific\",\r\n\t\"Europe/London\", \"Europe/Berlin\", \"Asia/Kolkata\", \"Asia/Tokyo\", \"Australia/Sydney\",\r\n] as const;\r\n\r\nexport const STATUS_COLORS: Record<string, string> = {\r\n\tdraft: \"#9e9e9e\",\r\n\tactive: \"#4caf50\",\r\n\tpaused: \"#ff9800\",\r\n\tcompleted: \"#2196f3\",\r\n\tarchived: \"#795548\",\r\n};\r\n\r\nexport const LEAD_STATUSES = [\r\n\t\"All states\", \"PENDING\", \"SCHEDULED\", \"IN_PROGRESS\",\r\n\t\"COMPLETED\", \"FAILED\", \"DO_NOT_CALL\", \"INVALID\", \"CANCELLED\",\r\n] as const;\r\n\r\nexport const defaultFormData: CampaignCreatePayload = {\r\n\tname: \"\", description: \"\", campaignType: \"OUTBOUND_CAMPAIGN\", dialingMode: \"PREVIEW\",\r\n\tmaxConcurrentCalls: 5, callsPerAgent: 1, startTime: \"09:00\", endTime: \"17:00\",\r\n\tdaysOfWeek: [1, 2, 3, 4, 5], timezone: \"Asia/Kolkata\", scheduledStart: \"\", scheduledEnd: \"\",\r\n\tmaxAttempts: 1, retryIntervalMinutes: 15, callerId: \"\", ringTimeoutSeconds: 30,\r\n\tanswerTimeoutSeconds: 30, agentType: \"HUMAN\", aiBotId: null, priority: 5, settings: {},\r\n\tqueueLinks: [],\r\n};\r\n","import type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n// ─── Typography ───────────────────────────────────────────────────────────────\r\n\r\nexport const labelSx: SxProps<Theme> = {\r\n\tfontWeight: 600,\r\n\tfontSize: \"0.85rem\",\r\n\tcolor: \"#333\",\r\n\tmb: 0.5,\r\n};\r\n\r\nexport const sectionTitleSx: SxProps<Theme> = {\r\n\tfontWeight: 700,\r\n\tfontSize: \"1rem\",\r\n\tcolor: \"#1a1a1a\",\r\n\tmb: 1.5,\r\n\tmt: 0.5,\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n};\r\n\r\n// ─── Table ────────────────────────────────────────────────────────────────────\r\n\r\nexport const headCellSx: SxProps<Theme> = {\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tbgcolor: \"#f1f1f1\",\r\n\tcolor: \"#333\",\r\n\tfontWeight: 600,\r\n\twhiteSpace: \"nowrap\",\r\n\tfontSize: \"0.8rem\",\r\n\tpy: \"6px\",\r\n\tpx: \"12px\",\r\n};\r\n\r\nexport const bodyCellSx: SxProps<Theme> = {\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontSize: \"0.82rem\",\r\n\tpy: \"4px\",\r\n\tpx: \"12px\",\r\n};\r\n\r\nexport const tableRowSx: SxProps<Theme> = {\r\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\r\n\t\"&:last-child td, &:last-child th\": { border: 0 },\r\n};\r\n\r\n// ─── Campaign list card ───────────────────────────────────────────────────────\r\n\r\nexport const campaignCardBaseSx: SxProps<Theme> = {\r\n\tp: 1.5,\r\n\tmb: 0.75,\r\n\tborderRadius: \"12px\",\r\n\tcursor: \"pointer\",\r\n\tborder: \"1px solid #e8e8e8\",\r\n\tbackgroundColor: \"#fff\",\r\n\tboxShadow: \"0 1px 2px rgba(0,0,0,0.04)\",\r\n\ttransition: \"all 0.2s ease\",\r\n};\r\n\r\nexport const campaignCardSelectedSx: SxProps<Theme> = {\r\n\t...campaignCardBaseSx,\r\n\tborder: \"2px solid #1A5F6C\",\r\n\tbackgroundColor: \"#f0f7f8\",\r\n\tboxShadow: \"0 2px 8px rgba(26,95,108,0.12)\",\r\n};\r\n\r\n// ─── Input ────────────────────────────────────────────────────────────────────\r\n\r\nexport const inputSx: SxProps<Theme> = {\r\n\t\"& .MuiOutlinedInput-root\": {\r\n\t\tborderRadius: \"8px\",\r\n\t\tbackgroundColor: \"#fff\",\r\n\t\t\"&:hover fieldset\": { borderColor: \"#1A5F6C\" },\r\n\t\t\"&.Mui-focused fieldset\": { borderColor: \"#1A5F6C\" },\r\n\t},\r\n};\r\n\r\n// ─── Dialog ───────────────────────────────────────────────────────────────────\r\n\r\nexport const dialogHeaderSx: SxProps<Theme> = {\r\n\tpx: 2.5,\r\n\tpy: 1.5,\r\n\tborderBottom: \"1px solid #eee\",\r\n\tdisplay: \"flex\",\r\n\talignItems: \"center\",\r\n\tjustifyContent: \"space-between\",\r\n};\r\n\r\nexport const dialogFooterSx: SxProps<Theme> = {\r\n\tpx: 2.5,\r\n\tpy: 1.5,\r\n\tborderTop: \"1px solid #eee\",\r\n\tdisplay: \"flex\",\r\n\tjustifyContent: \"flex-end\",\r\n\tgap: 1,\r\n};\r\n\r\n// ─── Buttons ──────────────────────────────────────────────────────────────────\r\n\r\nexport const primaryBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 0.5,\r\n\tpx: 2.5,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"none\",\r\n\tbackgroundColor: \"#1A5F6C\",\r\n\tcolor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.85rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontWeight: 600,\r\n\t\"&:hover\": { backgroundColor: \"#164e57\" },\r\n\t\"&:disabled\": { opacity: 0.65, cursor: \"not-allowed\" },\r\n};\r\n\r\nexport const cancelBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tpx: 2.5,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"1px solid #ccc\",\r\n\tbackgroundColor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.85rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\t\"&:hover\": { backgroundColor: \"#f5f5f5\" },\r\n};\r\n\r\nexport const dangerBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 0.5,\r\n\tpx: 2.5,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"none\",\r\n\tbackgroundColor: \"#c0392b\",\r\n\tcolor: \"#fff\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.85rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontWeight: 600,\r\n\t\"&:hover\": { backgroundColor: \"#a93226\" },\r\n\t\"&:disabled\": { opacity: 0.65, cursor: \"not-allowed\" },\r\n};\r\n\r\nexport const outlinedBtnSx: SxProps<Theme> = {\r\n\tdisplay: \"inline-flex\",\r\n\talignItems: \"center\",\r\n\tgap: 0.5,\r\n\tpx: 2,\r\n\tpy: 0.75,\r\n\tborderRadius: 1,\r\n\tborder: \"1px solid #1A5F6C\",\r\n\tbackgroundColor: \"#fff\",\r\n\tcolor: \"#1A5F6C\",\r\n\tcursor: \"pointer\",\r\n\tfontSize: \"0.82rem\",\r\n\tfontFamily: \"poppins, Arial, sans-serif\",\r\n\tfontWeight: 600,\r\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\r\n};\r\n\r\n// ─── Icon action buttons ──────────────────────────────────────────────────────\r\n\r\nexport const iconBtnBaseSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #e0e0e0\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnPrimarySx: SxProps<Theme> = {\r\n\tborder: \"1px solid #1A5F6C\",\r\n\tcolor: \"#1A5F6C\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnSuccessSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #4caf50\",\r\n\tcolor: \"#4caf50\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnWarningSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #ff9800\",\r\n\tcolor: \"#ff9800\",\r\n\tborderRadius: 1,\r\n};\r\n\r\nexport const iconBtnDangerSx: SxProps<Theme> = {\r\n\tborder: \"1px solid #c0392b\",\r\n\tcolor: \"#c0392b\",\r\n\tborderRadius: 1,\r\n};\r\n\r\n// ─── Chip helpers (returned as plain objects, not SxProps) ────────────────────\r\n\r\nexport const STATUS_COLORS: Record<string, string> = {\r\n\tdraft: \"#9e9e9e\",\r\n\tactive: \"#4caf50\",\r\n\tpaused: \"#ff9800\",\r\n\tcompleted: \"#2196f3\",\r\n\tarchived: \"#795548\",\r\n};\r\n\r\nexport function statusChipSx(status: string) {\r\n\tconst color = STATUS_COLORS[status?.toLowerCase()] ?? \"#9e9e9e\";\r\n\treturn {\r\n\t\theight: 22,\r\n\t\tfontSize: \"0.68rem\",\r\n\t\tfontWeight: 700,\r\n\t\ttextTransform: \"capitalize\" as const,\r\n\t\tborderRadius: \"6px\",\r\n\t\tbackgroundColor: color + \"18\",\r\n\t\tcolor,\r\n\t\tborder: `1px solid ${color}40`,\r\n\t};\r\n}\r\n\r\nexport function leadStatusChipSx(status: string) {\r\n\tconst s = status?.toUpperCase();\r\n\treturn {\r\n\t\theight: 22,\r\n\t\tfontSize: \"0.72rem\",\r\n\t\tfontWeight: 700,\r\n\t\ttextTransform: \"capitalize\" as const,\r\n\t\tborderRadius: \"6px\",\r\n\t\tbackgroundColor: s === \"COMPLETED\" ? \"#e8f5e9\"\r\n\t\t\t: s === \"FAILED\" ? \"#ffebee\"\r\n\t\t\t: s === \"DIALING\" ? \"#e3f2fd\"\r\n\t\t\t: \"#f5f5f5\",\r\n\t\tcolor: s === \"COMPLETED\" ? \"#2e7d32\"\r\n\t\t\t: s === \"FAILED\" ? \"#c62828\"\r\n\t\t\t: s === \"DIALING\" ? \"#1565c0\"\r\n\t\t\t: \"#666\",\r\n\t};\r\n}\r\n\r\nexport function leadPriorityChipSx(priority: number | null | undefined) {\r\n\tconst label = priority == null ? \"—\"\r\n\t\t: priority >= 8 ? \"HIGH\"\r\n\t\t: priority >= 4 ? \"MEDIUM\"\r\n\t\t: \"LOW\";\r\n\treturn {\r\n\t\tchip: {\r\n\t\t\theight: 22,\r\n\t\t\tfontSize: \"0.72rem\",\r\n\t\t\tfontWeight: 700,\r\n\t\t\tborderRadius: \"6px\",\r\n\t\t\tbackgroundColor: label === \"HIGH\" ? \"#ffebee\" : label === \"MEDIUM\" ? \"#e3f2fd\" : label === \"LOW\" ? \"#e8f5e9\" : \"#f5f5f5\",\r\n\t\t\tcolor: label === \"HIGH\" ? \"#c62828\" : label === \"MEDIUM\" ? \"#1565c0\" : label === \"LOW\" ? \"#2e7d32\" : \"#666\",\r\n\t\t},\r\n\t\tlabel,\r\n\t};\r\n}\r\n\r\nexport function daychipSx(selected: boolean) {\r\n\treturn {\r\n\t\tcursor: \"pointer\",\r\n\t\tbackgroundColor: selected ? \"#1A5F6C\" : \"transparent\",\r\n\t\tcolor: selected ? \"#fff\" : \"#333\",\r\n\t\tborderColor: \"#1A5F6C\",\r\n\t\tfontWeight: 500,\r\n\t\t\"&:hover\": {\r\n\t\t\tbackgroundColor: selected ? \"#164e57\" : \"#E3F2F5\",\r\n\t\t},\r\n\t};\r\n}\r\n"],"mappings":"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","names":["useCallback","useState","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","_jsx","jsx","_a","_b","useState","useCallback","err","CampaignDialog","AddLeadDialog","CampaignsContent","_c","_d","_e"]}