ahs-cti 1.0.1-beta.32 → 1.0.1-beta.34

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.
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-M3VC2ZS2.mjs";
17
17
  import {
18
18
  SDKPermissionGuard
19
- } from "./chunk-EH4DR3PK.mjs";
19
+ } from "./chunk-QXXLASQJ.mjs";
20
20
  import {
21
21
  END_POINT,
22
22
  SDKProvider,
@@ -524,4 +524,4 @@ var agentPerformanceReport_default = AgentPerformanceReport;
524
524
  export {
525
525
  agentPerformanceReport_default as default
526
526
  };
527
- //# sourceMappingURL=agentPerformanceReport-KD2GMRFQ.mjs.map
527
+ //# sourceMappingURL=agentPerformanceReport-E75UWEZI.mjs.map
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  SDKPermissionGuard,
9
9
  useSDKPermissions
10
- } from "./chunk-EH4DR3PK.mjs";
10
+ } from "./chunk-QXXLASQJ.mjs";
11
11
  import {
12
12
  END_POINT,
13
13
  SDKProvider,
@@ -1357,6 +1357,7 @@ var CampaignDialog = memo(function CampaignDialog2({
1357
1357
  const TAB_LABELS = ["Basic Info", "Dialing Configuration", "Schedule & Operating Hours", "Queue Linking", "Leads"];
1358
1358
  const lastSaveTab = 3;
1359
1359
  const leadsTabDisabled = !editingCampaign;
1360
+ const isDirty = !editingCampaign || JSON.stringify(formData) !== JSON.stringify(campaignToFormData(editingCampaign));
1360
1361
  const validateTab = (t) => {
1361
1362
  if (t === 0) {
1362
1363
  if (!formData.name.trim()) {
@@ -1485,7 +1486,7 @@ var CampaignDialog = memo(function CampaignDialog2({
1485
1486
  /* @__PURE__ */ jsx2(SDKButton, { variant: "cancel", onClick: onClose, children: "Cancel" }),
1486
1487
  tab > 0 && /* @__PURE__ */ jsx2(SDKButton, { variant: "outlined", onClick: () => setTab((t) => t - 1), children: "Back" }),
1487
1488
  tab < lastSaveTab && /* @__PURE__ */ jsx2(SDKButton, { onClick: () => handleTabChange(tab + 1), children: "Next" }),
1488
- (editingCampaign || tab === lastSaveTab) && /* @__PURE__ */ jsx2(
1489
+ tab === lastSaveTab && /* @__PURE__ */ jsx2(
1489
1490
  SDKPermissionGuard,
1490
1491
  {
1491
1492
  permissions: [
@@ -1497,7 +1498,7 @@ var CampaignDialog = memo(function CampaignDialog2({
1497
1498
  SDKButton,
1498
1499
  {
1499
1500
  onClick: onSave,
1500
- disabled: saving,
1501
+ disabled: saving || !isDirty,
1501
1502
  startIcon: saving ? /* @__PURE__ */ jsx2(CircularProgress, { size: 14, color: "inherit" }) : void 0,
1502
1503
  children: editingCampaign ? "Update" : "Create"
1503
1504
  }
@@ -2710,7 +2711,10 @@ var CampaignsContent = memo(function CampaignsContent2() {
2710
2711
  onChange: setAddLeadData,
2711
2712
  saving: addLeadSaving,
2712
2713
  onSave: handleAddLead,
2713
- onClose: () => setAddLeadOpen(false)
2714
+ onClose: () => {
2715
+ setAddLeadOpen(false);
2716
+ setAddLeadData({ phoneNumber: "", callerName: "", priority: 5 });
2717
+ }
2714
2718
  }
2715
2719
  ),
2716
2720
  /* @__PURE__ */ jsx2(
@@ -2763,4 +2767,4 @@ var campaigns_default = Campaigns;
2763
2767
  export {
2764
2768
  campaigns_default as default
2765
2769
  };
2766
- //# sourceMappingURL=campaigns-QFAJR5MT.mjs.map
2770
+ //# sourceMappingURL=campaigns-LWCD4HN3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../call-control-sdk/lib/pages/campaigns/index.tsx","../call-control-sdk/lib/components/SDKButton.tsx","../call-control-sdk/lib/pages/campaigns/useCampaigns.ts","../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\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 type {\r\n\tCampaign,\r\n\tCampaignCreatePayload,\r\n\tCreateQueuePayload,\r\n\tLead,\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) => { if (e.target === e.currentTarget && !creatingQueue) setCreateOpen(false); }}\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 { 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</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</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) => { if (e.target === e.currentTarget) onClose(); }}\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) => { if (e.target === e.currentTarget) onClose(); }}\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) => { if (e.target === e.currentTarget) onClose(); }}\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// ──── 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) => { if (e.target === e.currentTarget) onClose(); }}\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,\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 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// 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 visibleCampaigns = campaigns.filter((c) =>\r\n\t\tshowArchived ? true : c.status?.toLowerCase() !== \"archived\"\r\n\t);\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});\r\n\t}, [selectedId, leadRowsPerPage, leadStatusFilter, debouncedSearch, fetchLeads]);\r\n\r\n\tconst refetchLeads = useCallback((page = leadPage) => {\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});\r\n\t}, [selectedId, leadPage, leadRowsPerPage, leadStatusFilter, debouncedSearch, fetchLeads]);\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={() => setSelectedId(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={() => setSelectedId(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<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\talignItems: { xs: \"flex-start\", sm: \"center\" },\r\n\t\t\t\t\t\t\t\t\tjustifyContent: \"space-between\",\r\n\t\t\t\t\t\t\t\t\tflexDirection: { xs: \"column\", sm: \"row\" },\r\n\t\t\t\t\t\t\t\t\tgap: 1,\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{/* 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_UPDATE,\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=\"outlined\" onClick={() => setImportOpen(true)} disabled={scArchived} startIcon={<UploadFileIcon sx={{ fontSize: 15 }} />} size=\"small\">\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_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\">\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\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_UPDATE,\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={() => setAddLeadOpen(true)} disabled={scArchived} startIcon={<AddIcon sx={{ fontSize: 15 }} />} size=\"small\">\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, 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: 34, 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: 34, 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</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\", \"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={14} 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={14} 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.originalQueueId\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? (queueNameMap[lead.originalQueueId] || `Queue #${lead.originalQueueId}`)\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</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, 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{/* 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_DELETE,\r\n\t\t\t\t\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\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</>\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</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","import React from \"react\";\nimport { Button, SxProps, Theme, useTheme } from \"@mui/material\";\nimport { alpha } from \"@mui/material/styles\";\n\ntype SDKButtonVariant = \"primary\" | \"danger\" | \"cancel\" | \"outlined\";\n\ninterface SDKButtonProps {\n\tchildren: React.ReactNode;\n\tvariant?: SDKButtonVariant;\n\tonClick?: React.MouseEventHandler<HTMLButtonElement>;\n\tstartIcon?: React.ReactNode;\n\tendIcon?: React.ReactNode;\n\tdisabled?: boolean;\n\ttype?: \"button\" | \"submit\" | \"reset\";\n\tsize?: \"small\" | \"medium\" | \"large\";\n\tfullWidth?: boolean;\n\tsx?: SxProps<Theme>;\n}\n\nconst muiVariant: Record<SDKButtonVariant, \"contained\" | \"outlined\" | \"text\"> = {\n\tprimary: \"contained\",\n\tdanger: \"contained\",\n\tcancel: \"text\",\n\toutlined: \"outlined\",\n};\n\nexport function SDKButton({\n\tchildren,\n\tvariant = \"primary\",\n\tonClick,\n\tstartIcon,\n\tendIcon,\n\tdisabled = false,\n\ttype = \"button\",\n\tsize = \"medium\",\n\tfullWidth = false,\n\tsx,\n}: SDKButtonProps) {\n\tconst theme = useTheme();\n\tconst primary = theme.palette.primary.main;\n\tconst primaryDark = theme.palette.primary.dark;\n\n\tconst styles: Record<SDKButtonVariant, SxProps<Theme>> = {\n\t\tprimary: {\n\t\t\ttextTransform: \"none\",\n\t\t\tfontWeight: 600,\n\t\t\tbackgroundColor: primary,\n\t\t\tborderRadius: \"30px\",\n\t\t\tfontSize: \"0.82rem\",\n\t\t\tpx: 2,\n\t\t\tboxShadow: `0 2px 8px ${alpha(primary, 0.25)}`,\n\t\t\t\"&:hover\": {\n\t\t\t\tbackgroundColor: primaryDark,\n\t\t\t\tboxShadow: `0 4px 12px ${alpha(primary, 0.35)}`,\n\t\t\t},\n\t\t\t\"&.Mui-disabled\": {\n\t\t\t\tbackgroundColor: alpha(primary, 0.4),\n\t\t\t\tcolor: \"#fff\",\n\t\t\t},\n\t\t},\n\t\tdanger: {\n\t\t\ttextTransform: \"none\",\n\t\t\tfontWeight: 600,\n\t\t\tbackgroundColor: \"#d32f2f\",\n\t\t\tborderRadius: \"8px\",\n\t\t\tfontSize: \"0.82rem\",\n\t\t\tpx: 2,\n\t\t\t\"&:hover\": { backgroundColor: \"#b71c1c\" },\n\t\t\t\"&.Mui-disabled\": { backgroundColor: \"#e57373\", color: \"#fff\" },\n\t\t},\n\t\tcancel: {\n\t\t\ttextTransform: \"none\",\n\t\t\tfontWeight: 600,\n\t\t\tcolor: \"#666\",\n\t\t\tborderRadius: \"30px\",\n\t\t\tfontSize: \"0.82rem\",\n\t\t\tpx: 2,\n\t\t\tborder: \"1px solid #d0d0d0\",\n\t\t\t\"&:hover\": { backgroundColor: \"#f5f5f5\", borderColor: \"#bbb\" },\n\t\t},\n\t\toutlined: {\n\t\t\ttextTransform: \"none\",\n\t\t\tfontWeight: 600,\n\t\t\tcolor: primary,\n\t\t\tborderColor: primary,\n\t\t\tborderRadius: \"30px\",\n\t\t\tfontSize: \"0.82rem\",\n\t\t\tpx: 2,\n\t\t\t\"&:hover\": { borderColor: primaryDark, backgroundColor: alpha(primary, 0.05) },\n\t\t},\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\tvariant={muiVariant[variant]}\n\t\t\tonClick={onClick}\n\t\t\tstartIcon={startIcon}\n\t\t\tendIcon={endIcon}\n\t\t\tdisabled={disabled}\n\t\t\ttype={type}\n\t\t\tsize={size}\n\t\t\tfullWidth={fullWidth}\n\t\t\tsx={[styles[variant], ...(Array.isArray(sx) ? sx : [sx])]}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n}\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\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): Promise<void> => {\r\n\t\tsetLoading(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\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 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\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","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\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\tcompletedAt: string;\r\n\tcustomData: Record<string, any>;\r\n\tnotes: string;\r\n\tcreatedAt: string;\r\n\tupdatedAt: string;\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}\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\"],\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: 0, 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\";\n\n// ─── Typography ───────────────────────────────────────────────────────────────\n\nexport const labelSx: SxProps<Theme> = {\n\tfontWeight: 600,\n\tfontSize: \"0.85rem\",\n\tcolor: \"#333\",\n\tmb: 0.5,\n};\n\nexport const sectionTitleSx: SxProps<Theme> = {\n\tfontWeight: 700,\n\tfontSize: \"1rem\",\n\tcolor: \"#1a1a1a\",\n\tmb: 1.5,\n\tmt: 0.5,\n\tfontFamily: \"poppins, Arial, sans-serif\",\n};\n\n// ─── Table ────────────────────────────────────────────────────────────────────\n\nexport const headCellSx: SxProps<Theme> = {\n\tfontFamily: \"poppins, Arial, sans-serif\",\n\tbgcolor: \"#f1f1f1\",\n\tcolor: \"#333\",\n\tfontWeight: 600,\n\twhiteSpace: \"nowrap\",\n\tfontSize: \"0.8rem\",\n\tpy: \"6px\",\n\tpx: \"12px\",\n};\n\nexport const bodyCellSx: SxProps<Theme> = {\n\tfontFamily: \"poppins, Arial, sans-serif\",\n\tfontSize: \"0.82rem\",\n\tpy: \"4px\",\n\tpx: \"12px\",\n};\n\nexport const tableRowSx: SxProps<Theme> = {\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\n\t\"&:last-child td, &:last-child th\": { border: 0 },\n};\n\n// ─── Campaign list card ───────────────────────────────────────────────────────\n\nexport const campaignCardBaseSx: SxProps<Theme> = {\n\tp: 1.5,\n\tmb: 0.75,\n\tborderRadius: \"12px\",\n\tcursor: \"pointer\",\n\tborder: \"1px solid #e8e8e8\",\n\tbackgroundColor: \"#fff\",\n\tboxShadow: \"0 1px 2px rgba(0,0,0,0.04)\",\n\ttransition: \"all 0.2s ease\",\n};\n\nexport const campaignCardSelectedSx: SxProps<Theme> = {\n\t...campaignCardBaseSx,\n\tborder: \"2px solid #1A5F6C\",\n\tbackgroundColor: \"#f0f7f8\",\n\tboxShadow: \"0 2px 8px rgba(26,95,108,0.12)\",\n};\n\n// ─── Input ────────────────────────────────────────────────────────────────────\n\nexport const inputSx: SxProps<Theme> = {\n\t\"& .MuiOutlinedInput-root\": {\n\t\tborderRadius: \"8px\",\n\t\tbackgroundColor: \"#fff\",\n\t\t\"&:hover fieldset\": { borderColor: \"#1A5F6C\" },\n\t\t\"&.Mui-focused fieldset\": { borderColor: \"#1A5F6C\" },\n\t},\n};\n\n// ─── Dialog ───────────────────────────────────────────────────────────────────\n\nexport const dialogHeaderSx: SxProps<Theme> = {\n\tpx: 2.5,\n\tpy: 1.5,\n\tborderBottom: \"1px solid #eee\",\n\tdisplay: \"flex\",\n\talignItems: \"center\",\n\tjustifyContent: \"space-between\",\n};\n\nexport const dialogFooterSx: SxProps<Theme> = {\n\tpx: 2.5,\n\tpy: 1.5,\n\tborderTop: \"1px solid #eee\",\n\tdisplay: \"flex\",\n\tjustifyContent: \"flex-end\",\n\tgap: 1,\n};\n\n// ─── Buttons ──────────────────────────────────────────────────────────────────\n\nexport const primaryBtnSx: SxProps<Theme> = {\n\tdisplay: \"inline-flex\",\n\talignItems: \"center\",\n\tgap: 0.5,\n\tpx: 2.5,\n\tpy: 0.75,\n\tborderRadius: 1,\n\tborder: \"none\",\n\tbackgroundColor: \"#1A5F6C\",\n\tcolor: \"#fff\",\n\tcursor: \"pointer\",\n\tfontSize: \"0.85rem\",\n\tfontFamily: \"poppins, Arial, sans-serif\",\n\tfontWeight: 600,\n\t\"&:hover\": { backgroundColor: \"#164e57\" },\n\t\"&:disabled\": { opacity: 0.65, cursor: \"not-allowed\" },\n};\n\nexport const cancelBtnSx: SxProps<Theme> = {\n\tdisplay: \"inline-flex\",\n\talignItems: \"center\",\n\tpx: 2.5,\n\tpy: 0.75,\n\tborderRadius: 1,\n\tborder: \"1px solid #ccc\",\n\tbackgroundColor: \"#fff\",\n\tcursor: \"pointer\",\n\tfontSize: \"0.85rem\",\n\tfontFamily: \"poppins, Arial, sans-serif\",\n\t\"&:hover\": { backgroundColor: \"#f5f5f5\" },\n};\n\nexport const dangerBtnSx: SxProps<Theme> = {\n\tdisplay: \"inline-flex\",\n\talignItems: \"center\",\n\tgap: 0.5,\n\tpx: 2.5,\n\tpy: 0.75,\n\tborderRadius: 1,\n\tborder: \"none\",\n\tbackgroundColor: \"#c0392b\",\n\tcolor: \"#fff\",\n\tcursor: \"pointer\",\n\tfontSize: \"0.85rem\",\n\tfontFamily: \"poppins, Arial, sans-serif\",\n\tfontWeight: 600,\n\t\"&:hover\": { backgroundColor: \"#a93226\" },\n\t\"&:disabled\": { opacity: 0.65, cursor: \"not-allowed\" },\n};\n\nexport const outlinedBtnSx: SxProps<Theme> = {\n\tdisplay: \"inline-flex\",\n\talignItems: \"center\",\n\tgap: 0.5,\n\tpx: 2,\n\tpy: 0.75,\n\tborderRadius: 1,\n\tborder: \"1px solid #1A5F6C\",\n\tbackgroundColor: \"#fff\",\n\tcolor: \"#1A5F6C\",\n\tcursor: \"pointer\",\n\tfontSize: \"0.82rem\",\n\tfontFamily: \"poppins, Arial, sans-serif\",\n\tfontWeight: 600,\n\t\"&:hover\": { backgroundColor: \"#f0f7f8\" },\n};\n\n// ─── Icon action buttons ──────────────────────────────────────────────────────\n\nexport const iconBtnBaseSx: SxProps<Theme> = {\n\tborder: \"1px solid #e0e0e0\",\n\tborderRadius: 1,\n};\n\nexport const iconBtnPrimarySx: SxProps<Theme> = {\n\tborder: \"1px solid #1A5F6C\",\n\tcolor: \"#1A5F6C\",\n\tborderRadius: 1,\n};\n\nexport const iconBtnSuccessSx: SxProps<Theme> = {\n\tborder: \"1px solid #4caf50\",\n\tcolor: \"#4caf50\",\n\tborderRadius: 1,\n};\n\nexport const iconBtnWarningSx: SxProps<Theme> = {\n\tborder: \"1px solid #ff9800\",\n\tcolor: \"#ff9800\",\n\tborderRadius: 1,\n};\n\nexport const iconBtnDangerSx: SxProps<Theme> = {\n\tborder: \"1px solid #c0392b\",\n\tcolor: \"#c0392b\",\n\tborderRadius: 1,\n};\n\n// ─── Chip helpers (returned as plain objects, not SxProps) ────────────────────\n\nexport const STATUS_COLORS: Record<string, string> = {\n\tdraft: \"#9e9e9e\",\n\tactive: \"#4caf50\",\n\tpaused: \"#ff9800\",\n\tcompleted: \"#2196f3\",\n\tarchived: \"#795548\",\n};\n\nexport function statusChipSx(status: string) {\n\tconst color = STATUS_COLORS[status?.toLowerCase()] ?? \"#9e9e9e\";\n\treturn {\n\t\theight: 22,\n\t\tfontSize: \"0.68rem\",\n\t\tfontWeight: 700,\n\t\ttextTransform: \"capitalize\" as const,\n\t\tborderRadius: \"6px\",\n\t\tbackgroundColor: color + \"18\",\n\t\tcolor,\n\t\tborder: `1px solid ${color}40`,\n\t};\n}\n\nexport function leadStatusChipSx(status: string) {\n\tconst s = status?.toUpperCase();\n\treturn {\n\t\theight: 22,\n\t\tfontSize: \"0.72rem\",\n\t\tfontWeight: 700,\n\t\ttextTransform: \"capitalize\" as const,\n\t\tborderRadius: \"6px\",\n\t\tbackgroundColor: s === \"COMPLETED\" ? \"#e8f5e9\"\n\t\t\t: s === \"FAILED\" ? \"#ffebee\"\n\t\t\t: s === \"DIALING\" ? \"#e3f2fd\"\n\t\t\t: \"#f5f5f5\",\n\t\tcolor: s === \"COMPLETED\" ? \"#2e7d32\"\n\t\t\t: s === \"FAILED\" ? \"#c62828\"\n\t\t\t: s === \"DIALING\" ? \"#1565c0\"\n\t\t\t: \"#666\",\n\t};\n}\n\nexport function leadPriorityChipSx(priority: number | null | undefined) {\n\tconst label = priority == null ? \"—\"\n\t\t: priority >= 8 ? \"HIGH\"\n\t\t: priority >= 4 ? \"MEDIUM\"\n\t\t: \"LOW\";\n\treturn {\n\t\tchip: {\n\t\t\theight: 22,\n\t\t\tfontSize: \"0.72rem\",\n\t\t\tfontWeight: 700,\n\t\t\tborderRadius: \"6px\",\n\t\t\tbackgroundColor: label === \"HIGH\" ? \"#ffebee\" : label === \"MEDIUM\" ? \"#e3f2fd\" : label === \"LOW\" ? \"#e8f5e9\" : \"#f5f5f5\",\n\t\t\tcolor: label === \"HIGH\" ? \"#c62828\" : label === \"MEDIUM\" ? \"#1565c0\" : label === \"LOW\" ? \"#2e7d32\" : \"#666\",\n\t\t},\n\t\tlabel,\n\t};\n}\n\nexport function daychipSx(selected: boolean) {\n\treturn {\n\t\tcursor: \"pointer\",\n\t\tbackgroundColor: selected ? \"#1A5F6C\" : \"transparent\",\n\t\tcolor: selected ? \"#fff\" : \"#333\",\n\t\tborderColor: \"#1A5F6C\",\n\t\tfontWeight: 500,\n\t\t\"&:hover\": {\n\t\t\tbackgroundColor: selected ? \"#164e57\" : \"#E3F2F5\",\n\t\t},\n\t};\n}\n"],"mappings":"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","names":["useCallback","useState","useTheme","jsx","_a","_b","useState","useCallback","err","CampaignDialog","AddLeadDialog","CampaignsContent","useTheme","_c","_d","_e"]}
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-M3VC2ZS2.mjs";
12
12
  import {
13
13
  SDKPermissionGuard
14
- } from "./chunk-EH4DR3PK.mjs";
14
+ } from "./chunk-QXXLASQJ.mjs";
15
15
  import {
16
16
  END_POINT,
17
17
  SDKProvider,
@@ -548,4 +548,4 @@ var cdrReport_default = CdrReport;
548
548
  export {
549
549
  cdrReport_default as default
550
550
  };
551
- //# sourceMappingURL=cdrReport-K6HIW2FA.mjs.map
551
+ //# sourceMappingURL=cdrReport-QMQE2SUJ.mjs.map