flowcore-fn 10.2.8 → 10.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pkg-index.js CHANGED
@@ -19087,17 +19087,71 @@ function PoolConfirmationModal({ isOpen, onClose, onConfirm, file, isSubmitting
19087
19087
  // src/components/inbox/TakeActionModal.jsx
19088
19088
  var import_react96 = __toESM(require("react"));
19089
19089
  var import_react97 = require("@remixicon/react");
19090
+ init_ApiEndpointsProvider();
19091
+ init_ApiServicepackage();
19090
19092
  var import_jsx_runtime95 = require("react/jsx-runtime");
19093
+ var getAvailableActions = (response) => {
19094
+ var _a, _b, _c, _d, _e, _f, _g;
19095
+ console.log("Raw response for available actions:", response);
19096
+ const value = (_e = (_d = (_c = (_a = response == null ? void 0 : response.data) == null ? void 0 : _a.data) != null ? _c : (_b = response == null ? void 0 : response.data) == null ? void 0 : _b.result) != null ? _d : response == null ? void 0 : response.data) != null ? _e : response;
19097
+ const rows = Array.isArray(value) ? value : (_g = (_f = value == null ? void 0 : value.items) != null ? _f : value == null ? void 0 : value.records) != null ? _g : [];
19098
+ return rows.map((action) => {
19099
+ var _a2, _b2, _c2, _d2, _e2, _f2;
19100
+ return {
19101
+ label: (_d2 = (_c2 = (_b2 = (_a2 = action.label) != null ? _a2 : action.Label) != null ? _b2 : action.actionName) != null ? _c2 : action.ActionName) != null ? _d2 : "",
19102
+ actionCode: (_f2 = (_e2 = action.actionCode) != null ? _e2 : action.ActionCode) != null ? _f2 : ""
19103
+ };
19104
+ }).filter((action) => action.label && action.actionCode);
19105
+ };
19091
19106
  function TakeActionModal({ isOpen, onClose, onSubmit, file }) {
19092
- const [actionType, setActionType] = (0, import_react96.useState)("forward");
19107
+ const [actions, setActions] = (0, import_react96.useState)([]);
19108
+ const [actionCode, setActionCode] = (0, import_react96.useState)("");
19109
+ const [isLoadingActions, setIsLoadingActions] = (0, import_react96.useState)(false);
19110
+ const [actionLoadError, setActionLoadError] = (0, import_react96.useState)("");
19093
19111
  const [remarks, setRemarks] = (0, import_react96.useState)("");
19094
19112
  const [isSubmitting, setIsSubmitting] = (0, import_react96.useState)(false);
19095
19113
  const handleClose = (0, import_react96.useCallback)(() => {
19096
- setActionType("forward");
19114
+ if (isSubmitting) return;
19115
+ setActionCode("");
19097
19116
  setRemarks("");
19098
- setIsSubmitting(false);
19099
19117
  onClose();
19100
- }, [onClose]);
19118
+ }, [isSubmitting, onClose]);
19119
+ (0, import_react96.useEffect)(() => {
19120
+ if (!isOpen || !file) return void 0;
19121
+ let isCurrent = true;
19122
+ const loadActions = async () => {
19123
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
19124
+ setActions([]);
19125
+ setActionCode("");
19126
+ setActionLoadError("");
19127
+ setIsLoadingActions(true);
19128
+ try {
19129
+ const flowCore = (_b = (_a = getApiEndpoints()) == null ? void 0 : _a.flowCore) != null ? _b : {};
19130
+ const endpoint2 = (_g = (_e = (_c = flowCore.inbox) == null ? void 0 : _c.GetPermisiionLabelWithCode) != null ? _e : (_d = flowCore.inbox) == null ? void 0 : _d.getPermisiionLabelWithCode) != null ? _g : (_f = flowCore.inbox) == null ? void 0 : _f.getByWorkflowStepId;
19131
+ const workflowStepId = (_h = file.workflowStepId) != null ? _h : file.WorkflowStepId;
19132
+ if (!endpoint2) throw new Error("Workflow step actions endpoint is not configured.");
19133
+ if (workflowStepId == null) throw new Error("Workflow step ID is missing for this file.");
19134
+ const url = typeof endpoint2 === "function" ? endpoint2() : String(endpoint2);
19135
+ const nextActions = getAvailableActions(await getApiService().post(url, {
19136
+ workflowStepId: Number(workflowStepId)
19137
+ }));
19138
+ if (!isCurrent) return;
19139
+ console.log("Available actions for workflow step:", nextActions);
19140
+ setActions(nextActions);
19141
+ setActionCode((_j = (_i = nextActions[0]) == null ? void 0 : _i.actionCode) != null ? _j : "");
19142
+ if (nextActions.length === 0) setActionLoadError("No actions are available for this workflow step.");
19143
+ } catch (error) {
19144
+ if (!isCurrent) return;
19145
+ setActionLoadError(((_l = (_k = error == null ? void 0 : error.response) == null ? void 0 : _k.data) == null ? void 0 : _l.message) || (error == null ? void 0 : error.message) || "Unable to load workflow actions.");
19146
+ } finally {
19147
+ if (isCurrent) setIsLoadingActions(false);
19148
+ }
19149
+ };
19150
+ loadActions();
19151
+ return () => {
19152
+ isCurrent = false;
19153
+ };
19154
+ }, [file, isOpen]);
19101
19155
  (0, import_react96.useEffect)(() => {
19102
19156
  if (!isOpen) return;
19103
19157
  const handleKeyDown = (e) => {
@@ -19107,10 +19161,15 @@ function TakeActionModal({ isOpen, onClose, onSubmit, file }) {
19107
19161
  return () => window.removeEventListener("keydown", handleKeyDown);
19108
19162
  }, [isOpen, handleClose]);
19109
19163
  if (!isOpen || !file) return null;
19110
- const handleSubmit = (e) => {
19164
+ const handleSubmit = async (e) => {
19111
19165
  e.preventDefault();
19166
+ if (!actionCode || isLoadingActions || isSubmitting) return;
19112
19167
  setIsSubmitting(true);
19113
- onSubmit({ file, actionType, remarks });
19168
+ try {
19169
+ await onSubmit({ file, actionCode, remarks });
19170
+ } finally {
19171
+ setIsSubmitting(false);
19172
+ }
19114
19173
  };
19115
19174
  return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { className: "fc:fixed fc:inset-0 fc:z-50 fc:flex fc:items-center fc:justify-center fc:p-4", children: [
19116
19175
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
@@ -19137,6 +19196,7 @@ function TakeActionModal({ isOpen, onClose, onSubmit, file }) {
19137
19196
  {
19138
19197
  type: "button",
19139
19198
  onClick: handleClose,
19199
+ disabled: isSubmitting,
19140
19200
  className: "fc:text-slate-400 hover:fc:text-slate-600 hover:fc:bg-slate-100 fc:p-1.5 fc:rounded-full fc:transition-all",
19141
19201
  children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_react97.RiCloseLine, { size: 20 })
19142
19202
  }
@@ -19163,39 +19223,37 @@ function TakeActionModal({ isOpen, onClose, onSubmit, file }) {
19163
19223
  "Select Action ",
19164
19224
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "fc:text-red-500", children: "*" })
19165
19225
  ] }),
19166
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "fc:grid fc:grid-cols-2 fc:gap-2.5", children: [
19167
- { id: "forward", label: "Forward to Next Step", color: "emerald" },
19168
- { id: "approve", label: "Approve & Complete", color: "blue" },
19169
- { id: "return", label: "Return / Send Back", color: "amber" },
19170
- { id: "hold", label: "Put on Hold", color: "slate" }
19171
- ].map((act) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
19226
+ /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "fc:grid fc:grid-cols-2 fc:gap-2.5", children: actions.map((act) => /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
19172
19227
  "label",
19173
19228
  {
19174
- className: `fc:flex fc:items-center fc:gap-2.5 fc:p-2.5 fc:rounded-xl fc:border fc:cursor-pointer fc:transition-all ${actionType === act.id ? "fc:border-emerald-500 fc:bg-emerald-50/50 fc:text-emerald-700 fc:ring-1 fc:ring-emerald-500/20" : "fc:border-slate-200 fc:bg-white hover:fc:bg-slate-50 fc:text-slate-700"}`,
19229
+ className: `fc:flex fc:items-center fc:gap-2.5 fc:p-2.5 fc:rounded-xl fc:border fc:cursor-pointer fc:transition-all ${actionCode === act.actionCode ? "fc:border-emerald-500 fc:bg-emerald-50/50 fc:text-emerald-700 fc:ring-1 fc:ring-emerald-500/20" : "fc:border-slate-200 fc:bg-white hover:fc:bg-slate-50 fc:text-slate-700"}`,
19175
19230
  children: [
19176
19231
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
19177
19232
  "input",
19178
19233
  {
19179
19234
  type: "radio",
19180
19235
  name: "actionType",
19181
- value: act.id,
19182
- checked: actionType === act.id,
19183
- onChange: (e) => setActionType(e.target.value),
19236
+ value: act.actionCode,
19237
+ checked: actionCode === act.actionCode,
19238
+ onChange: (e) => setActionCode(e.target.value),
19239
+ disabled: isSubmitting,
19184
19240
  className: "fc:sr-only"
19185
19241
  }
19186
19242
  ),
19187
19243
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
19188
19244
  "div",
19189
19245
  {
19190
- className: `fc:w-4 fc:h-4 fc:rounded-full fc:border fc:flex fc:items-center fc:justify-center ${actionType === act.id ? "fc:border-emerald-600 fc:bg-emerald-600" : "fc:border-slate-300"}`,
19191
- children: actionType === act.id && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "fc:w-1.5 fc:h-1.5 fc:bg-white fc:rounded-full" })
19246
+ className: `fc:w-4 fc:h-4 fc:rounded-full fc:border fc:flex fc:items-center fc:justify-center ${actionCode === act.actionCode ? "fc:border-emerald-600 fc:bg-emerald-600" : "fc:border-slate-300"}`,
19247
+ children: actionCode === act.actionCode && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { className: "fc:w-1.5 fc:h-1.5 fc:bg-white fc:rounded-full" })
19192
19248
  }
19193
19249
  ),
19194
19250
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("span", { className: "fc:text-xs fc:font-bold", children: act.label })
19195
19251
  ]
19196
19252
  },
19197
- act.id
19198
- )) })
19253
+ act.actionCode
19254
+ )) }),
19255
+ isLoadingActions && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "fc:mt-2 fc:text-xs fc:text-slate-500", children: "Loading available actions..." }),
19256
+ actionLoadError && /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("p", { className: "fc:mt-2 fc:text-xs fc:text-red-600", children: actionLoadError })
19199
19257
  ] }),
19200
19258
  /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)("div", { children: [
19201
19259
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("label", { className: "fc:block fc:text-xs fc:font-bold fc:text-slate-700 fc:mb-1", children: "Remarks / Comments" }),
@@ -19227,7 +19285,7 @@ function TakeActionModal({ isOpen, onClose, onSubmit, file }) {
19227
19285
  "button",
19228
19286
  {
19229
19287
  type: "submit",
19230
- disabled: isSubmitting,
19288
+ disabled: isSubmitting || isLoadingActions || !actionCode,
19231
19289
  className: "fc:px-5 fc:py-2 fc:bg-emerald-600 hover:fc:bg-emerald-700 fc:text-white fc:text-xs fc:font-bold fc:rounded-xl fc:shadow-md fc:shadow-emerald-500/20 fc:transition-all fc:flex fc:items-center fc:gap-1.5 disabled:fc:opacity-50",
19232
19290
  children: [
19233
19291
  /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_react97.RiSendPlaneLine, { size: 16 }),
@@ -19421,7 +19479,7 @@ var normalizePoolFile = (file) => {
19421
19479
  });
19422
19480
  };
19423
19481
  var normalizeMyFile = (file) => {
19424
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
19482
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E;
19425
19483
  const taskInstanceId = (_a = file.taskInstanceId) != null ? _a : file.TaskInstanceId;
19426
19484
  const businessEntityId = (_b = file.businessEntityId) != null ? _b : file.BusinessEntityId;
19427
19485
  const businessEntity = (_c = file.businessEntityType) != null ? _c : file.BusinessEntityType;
@@ -19442,256 +19500,10 @@ var normalizeMyFile = (file) => {
19442
19500
  dueDate: formatInboxDate(file.dueDate),
19443
19501
  slaStatus: (_v = file.slaStatus) != null ? _v : "-",
19444
19502
  status: (_x = (_w = file.fileStatus) != null ? _w : file.statusName) != null ? _x : "In Progress",
19445
- assignedTo: "Pankaj Jain",
19446
- currentStep: (_y = file.stepName) != null ? _y : "-"
19503
+ assignedTo: (_D = (_C = (_B = (_A = (_z = (_y = file.assignedTo) != null ? _y : file.AssignedTo) != null ? _z : file.assignedUserName) != null ? _A : file.AssignedUserName) != null ? _B : file.assignedUserId) != null ? _C : file.AssignedUserId) != null ? _D : "-",
19504
+ currentStep: (_E = file.stepName) != null ? _E : "-"
19447
19505
  });
19448
19506
  };
19449
- var INITIAL_FILE_POOL = [
19450
- {
19451
- fileId: 101,
19452
- fileNumber: "FC-2026-0142",
19453
- subject: "Industrial Waste Discharge License Renewal ApplicationIndustrial Waste Discharge License Renewal Application",
19454
- workflowName: "Environmental Clearance",
19455
- department: "Environment & Forests",
19456
- applicant: "GreenTech Industries Ltd.",
19457
- category: "Statutory Renewal",
19458
- financialYear: "2026-27",
19459
- sender: "GreenTech Industries Ltd.",
19460
- priority: "Urgent",
19461
- receivedDate: "05-Oct-2026 09:15 AM",
19462
- dueDate: "09-Oct-2026",
19463
- slaStatus: "Critical (18h left)",
19464
- status: "Available",
19465
- assignedTo: "-"
19466
- },
19467
- {
19468
- fileId: 102,
19469
- fileNumber: "FC-2026-0145",
19470
- subject: "Sector 14 Commercial Complex Building Plan Sanction",
19471
- workflowName: "Urban Development Clearance",
19472
- department: "Urban Development",
19473
- applicant: "Apex Constructions Pvt Ltd",
19474
- category: "Commercial Sanction",
19475
- financialYear: "2026-27",
19476
- sender: "Apex Constructions Pvt Ltd",
19477
- priority: "High",
19478
- receivedDate: "05-Oct-2026 11:30 AM",
19479
- dueDate: "12-Oct-2026",
19480
- slaStatus: "Running (4d left)",
19481
- status: "Available",
19482
- assignedTo: "-"
19483
- },
19484
- {
19485
- fileId: 103,
19486
- fileNumber: "FC-2026-0149",
19487
- subject: "Annual Cyber Security Audit & Compliance Report",
19488
- workflowName: "IT Security Compliance",
19489
- department: "Information Technology",
19490
- applicant: "Internal IT Audit Cell",
19491
- category: "Internal Audit",
19492
- financialYear: "2026-27",
19493
- sender: "Internal IT Audit Cell",
19494
- priority: "Medium",
19495
- receivedDate: "06-Oct-2026 02:45 PM",
19496
- dueDate: "15-Oct-2026",
19497
- slaStatus: "Running (7d left)",
19498
- status: "Available",
19499
- assignedTo: "-"
19500
- },
19501
- {
19502
- fileId: 104,
19503
- fileNumber: "FC-2026-0153",
19504
- subject: "Vendor Onboarding & Due Diligence - Cloud Services",
19505
- workflowName: "Procurement & Contracts",
19506
- department: "Procurement Cell",
19507
- applicant: "Global Infotech Solutions",
19508
- category: "Vendor Registration",
19509
- financialYear: "2026-27",
19510
- sender: "Global Infotech Solutions",
19511
- priority: "High",
19512
- receivedDate: "06-Oct-2026 04:10 PM",
19513
- dueDate: "11-Oct-2026",
19514
- slaStatus: "Running (3d left)",
19515
- status: "Available",
19516
- assignedTo: "-"
19517
- },
19518
- {
19519
- fileId: 105,
19520
- fileNumber: "FC-2026-0158",
19521
- subject: "Township Potable Water Pipeline Overhaul Budget Sanction",
19522
- workflowName: "Public Works Approval",
19523
- department: "Public Works & Water",
19524
- applicant: "Municipal Engineering Dept",
19525
- category: "Capital Outlay",
19526
- financialYear: "2026-27",
19527
- sender: "Municipal Engineering Dept",
19528
- priority: "Urgent",
19529
- receivedDate: "07-Oct-2026 08:30 AM",
19530
- dueDate: "10-Oct-2026",
19531
- slaStatus: "Critical (22h left)",
19532
- status: "Available",
19533
- assignedTo: "-"
19534
- },
19535
- {
19536
- fileId: 106,
19537
- fileNumber: "FC-2026-0162",
19538
- subject: "Employee Health Insurance Policy Provider Revision",
19539
- workflowName: "HR & Employee Welfare",
19540
- department: "Human Resources",
19541
- applicant: "Corporate HR Services",
19542
- category: "Policy Reform",
19543
- financialYear: "2026-27",
19544
- sender: "Corporate HR Services",
19545
- priority: "Low",
19546
- receivedDate: "07-Oct-2026 10:00 AM",
19547
- dueDate: "20-Oct-2026",
19548
- slaStatus: "Running (12d left)",
19549
- status: "Available",
19550
- assignedTo: "-"
19551
- },
19552
- {
19553
- fileId: 107,
19554
- fileNumber: "FC-2026-0167",
19555
- subject: "Renewable Solar Rooftop Grid Connectivity NOC",
19556
- workflowName: "Energy Regulatory Clearance",
19557
- department: "Power & Energy",
19558
- applicant: "SunPower Dynamics Ltd",
19559
- category: "Infrastructure NOC",
19560
- financialYear: "2026-27",
19561
- sender: "SunPower Dynamics Ltd",
19562
- priority: "Medium",
19563
- receivedDate: "07-Oct-2026 11:15 AM",
19564
- dueDate: "14-Oct-2026",
19565
- slaStatus: "Running (6d left)",
19566
- status: "Available",
19567
- assignedTo: "-"
19568
- }
19569
- ];
19570
- var INITIAL_MY_FILES = [
19571
- {
19572
- fileId: 201,
19573
- fileNumber: "FC-2026-0112",
19574
- subject: "Hospital Expansion Fire Safety NOC & Site Clearance",
19575
- workflowName: "Fire & Safety Clearance",
19576
- department: "Public Safety",
19577
- applicant: "City Hospital Trust",
19578
- category: "Statutory NOC",
19579
- financialYear: "2026-27",
19580
- sender: "City Hospital Trust",
19581
- priority: "Urgent",
19582
- receivedDate: "03-Oct-2026 10:15 AM",
19583
- dueDate: "08-Oct-2026",
19584
- slaStatus: "Critical (14h left)",
19585
- status: "Assigned to Me",
19586
- assignedTo: "Pankaj Jain"
19587
- },
19588
- {
19589
- fileId: 202,
19590
- fileNumber: "FC-2026-0120",
19591
- subject: "Q3 Departmental Infrastructure Procurement Sanction",
19592
- workflowName: "Financial Sanction",
19593
- department: "Finance & Accounts",
19594
- applicant: "Administration Division",
19595
- category: "Budget Sanction",
19596
- financialYear: "2026-27",
19597
- sender: "Administration Division",
19598
- priority: "High",
19599
- receivedDate: "04-Oct-2026 01:20 PM",
19600
- dueDate: "10-Oct-2026",
19601
- slaStatus: "Running (2d left)",
19602
- status: "In Progress",
19603
- assignedTo: "Pankaj Jain"
19604
- },
19605
- {
19606
- fileId: 203,
19607
- fileNumber: "FC-2026-0128",
19608
- subject: "Public Interest Petition Regarding Street Light Restoration",
19609
- workflowName: "Citizen Grievance Redressal",
19610
- department: "Municipal Affairs",
19611
- applicant: "Ward 12 Residents Forum",
19612
- category: "Citizen Grievance",
19613
- financialYear: "2026-27",
19614
- sender: "Ward 12 Residents Forum",
19615
- priority: "Medium",
19616
- receivedDate: "04-Oct-2026 03:40 PM",
19617
- dueDate: "12-Oct-2026",
19618
- slaStatus: "Running (4d left)",
19619
- status: "In Progress",
19620
- assignedTo: "Pankaj Jain"
19621
- },
19622
- {
19623
- fileId: 204,
19624
- fileNumber: "FC-2026-0135",
19625
- subject: "Sub-Station Electrical Equipment Maintenance Agreement",
19626
- workflowName: "Procurement & Contracts",
19627
- department: "Power & Energy",
19628
- applicant: "State Power Grid Corp",
19629
- category: "AMC Contract",
19630
- financialYear: "2026-27",
19631
- sender: "State Power Grid Corp",
19632
- priority: "Low",
19633
- receivedDate: "05-Oct-2026 09:50 AM",
19634
- dueDate: "16-Oct-2026",
19635
- slaStatus: "Running (8d left)",
19636
- status: "In Progress",
19637
- assignedTo: "Pankaj Jain"
19638
- }
19639
- ];
19640
- var INITIAL_TOTAL_FILES = [
19641
- ...INITIAL_FILE_POOL,
19642
- ...INITIAL_MY_FILES,
19643
- {
19644
- fileId: 301,
19645
- fileNumber: "FC-2026-0095",
19646
- subject: "National Highway Bypass Land Acquisition Settlement",
19647
- workflowName: "Land Revenue & Settlement",
19648
- department: "Land & Revenue",
19649
- applicant: "District Collectorate",
19650
- category: "Land Settlement",
19651
- financialYear: "2026-27",
19652
- sender: "District Magistrate Secretariat",
19653
- priority: "High",
19654
- receivedDate: "28-Sep-2026 11:00 AM",
19655
- dueDate: "05-Oct-2026",
19656
- slaStatus: "Met / Completed",
19657
- status: "Approved",
19658
- assignedTo: "Executive Director"
19659
- },
19660
- {
19661
- fileId: 302,
19662
- fileNumber: "FC-2026-0103",
19663
- subject: "Metro Rail Corridor Phase 2 Tree Relocation Clearance",
19664
- workflowName: "Environmental Clearance",
19665
- department: "Forestry & Environment",
19666
- applicant: "Metro Rail Corporation",
19667
- category: "Forest Clearance",
19668
- financialYear: "2026-27",
19669
- sender: "Metro Rail Corporation",
19670
- priority: "Medium",
19671
- receivedDate: "30-Sep-2026 02:15 PM",
19672
- dueDate: "07-Oct-2026",
19673
- slaStatus: "Met / Completed",
19674
- status: "Completed",
19675
- assignedTo: "Forest Officer"
19676
- },
19677
- {
19678
- fileId: 303,
19679
- fileNumber: "FC-2026-0108",
19680
- subject: "Smart City Traffic Management System Software SLA",
19681
- workflowName: "Urban Development Clearance",
19682
- department: "Information Technology",
19683
- applicant: "Smart Mobility Dept",
19684
- category: "Software License",
19685
- financialYear: "2026-27",
19686
- sender: "Smart Mobility Dept",
19687
- priority: "Low",
19688
- receivedDate: "01-Oct-2026 04:30 PM",
19689
- dueDate: "15-Oct-2026",
19690
- slaStatus: "Running",
19691
- status: "Under Review",
19692
- assignedTo: "Technical Officer"
19693
- }
19694
- ];
19695
19507
  function InboxMain() {
19696
19508
  const [activeTab, setActiveTab] = (0, import_react100.useState)("filePool");
19697
19509
  const [assignedSteps, setAssignedSteps] = (0, import_react100.useState)([]);
@@ -19704,7 +19516,7 @@ function InboxMain() {
19704
19516
  const activeRole = (activeRoleDetails == null ? void 0 : activeRoleDetails.stepName) || "No Assigned Step";
19705
19517
  const [filePoolFiles, setFilePoolFiles] = (0, import_react100.useState)([]);
19706
19518
  const [myFiles, setMyFiles] = (0, import_react100.useState)([]);
19707
- const [totalFiles, setTotalFiles] = (0, import_react100.useState)(INITIAL_TOTAL_FILES);
19519
+ const [totalFiles, setTotalFiles] = (0, import_react100.useState)([]);
19708
19520
  const [refreshKey, setRefreshKey] = (0, import_react100.useState)(0);
19709
19521
  (0, import_react100.useEffect)(() => {
19710
19522
  let isCurrent = true;
@@ -19772,6 +19584,7 @@ function InboxMain() {
19772
19584
  if (!activeWorkflowStepId) {
19773
19585
  setFilePoolFiles([]);
19774
19586
  setMyFiles([]);
19587
+ setTotalFiles([]);
19775
19588
  return;
19776
19589
  }
19777
19590
  try {
@@ -19789,18 +19602,28 @@ function InboxMain() {
19789
19602
  if (!myFilesEndpoint) {
19790
19603
  throw new Error("My Files list endpoint is not configured (flowCore.inbox.getMyFilesList).");
19791
19604
  }
19605
+ const completedFilesEndpoint = getInboxEndpoint(
19606
+ ["inbox", "Inbox", "completedFiles", "CompletedFiles"],
19607
+ "getFilesCompleteList"
19608
+ );
19609
+ if (!completedFilesEndpoint) {
19610
+ throw new Error("Completed Files endpoint is not configured (flowCore.inbox.getFilesCompleteList).");
19611
+ }
19792
19612
  const payload = { workflowStepId: Number(activeWorkflowStepId) };
19793
- const [poolResponse, myFilesResponse] = await Promise.all([
19613
+ const [poolResponse, myFilesResponse, completedFilesResponse] = await Promise.all([
19794
19614
  getApiService().post(unclaimedFilesEndpoint, payload),
19795
- getApiService().post(myFilesEndpoint, payload)
19615
+ getApiService().post(myFilesEndpoint, payload),
19616
+ getApiService().post(completedFilesEndpoint, payload)
19796
19617
  ]);
19797
19618
  if (!isCurrent) return;
19798
19619
  setFilePoolFiles(unwrapInboxRows(poolResponse).map(normalizePoolFile));
19799
19620
  setMyFiles(unwrapInboxRows(myFilesResponse).map(normalizeMyFile));
19621
+ setTotalFiles(unwrapInboxRows(completedFilesResponse).map(normalizeMyFile));
19800
19622
  } catch (error) {
19801
19623
  if (!isCurrent) return;
19802
19624
  setFilePoolFiles([]);
19803
19625
  setMyFiles([]);
19626
+ setTotalFiles([]);
19804
19627
  await import_sweetalert229.default.fire(
19805
19628
  "Error",
19806
19629
  ((_b = (_a = error == null ? void 0 : error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || (error == null ? void 0 : error.message) || "Unable to load inbox files.",
@@ -20047,16 +19870,40 @@ function InboxMain() {
20047
19870
  setSelectedActionFile(file);
20048
19871
  setActionModalOpen(true);
20049
19872
  };
20050
- const handleActionSubmit = async ({ file, actionType, remarks }) => {
20051
- setActionModalOpen(false);
20052
- await import_sweetalert229.default.fire({
20053
- icon: "success",
20054
- title: "Action Processed!",
20055
- html: `Action <strong>${actionType.toUpperCase()}</strong> on file <strong>${file.fileNumber}</strong> recorded successfully.${remarks ? `<br/><small class="text-slate-500">Remarks: ${remarks}</small>` : ""}`,
20056
- confirmButtonColor: "#059669",
20057
- timer: 3e3,
20058
- timerProgressBar: true
20059
- });
19873
+ const handleActionSubmit = async ({ file, actionCode, actionLabel, remarks }) => {
19874
+ var _a, _b, _c;
19875
+ try {
19876
+ const endpoint2 = getInboxEndpoint(["inbox"], ["ExecutionFlow", "executeAction", "executionFlow"]);
19877
+ if (!endpoint2) throw new Error("Workflow execution endpoint is not configured.");
19878
+ const taskInstanceId = Number((_a = file.taskInstanceId) != null ? _a : file.TaskInstanceId);
19879
+ if (!Number.isInteger(taskInstanceId) || taskInstanceId <= 0) {
19880
+ throw new Error("Task instance ID is missing for this file.");
19881
+ }
19882
+ await getApiService().post(endpoint2, {
19883
+ taskInstanceId,
19884
+ actionCode,
19885
+ comments: remarks.trim()
19886
+ });
19887
+ setActionModalOpen(false);
19888
+ setSelectedActionFile(null);
19889
+ setRefreshKey((previous) => previous + 1);
19890
+ await import_sweetalert229.default.fire({
19891
+ icon: "success",
19892
+ title: "Action Processed!",
19893
+ text: `${actionLabel || actionCode} on file ${file.fileNumber} recorded successfully.${remarks.trim() ? ` Remarks: ${remarks.trim()}` : ""}`,
19894
+ confirmButtonColor: "#059669",
19895
+ timer: 3e3,
19896
+ timerProgressBar: true
19897
+ });
19898
+ return true;
19899
+ } catch (error) {
19900
+ await import_sweetalert229.default.fire(
19901
+ "Error",
19902
+ ((_c = (_b = error == null ? void 0 : error.response) == null ? void 0 : _b.data) == null ? void 0 : _c.message) || (error == null ? void 0 : error.message) || "Unable to execute workflow action.",
19903
+ "error"
19904
+ );
19905
+ return false;
19906
+ }
20060
19907
  };
20061
19908
  const handleOpenView = (file) => {
20062
19909
  setSelectedViewFile(file);
@@ -20228,7 +20075,7 @@ function InboxMain() {
20228
20075
  className: `fc:flex fc:items-center fc:gap-2.5 fc:px-4 fc:py-2 fc:rounded-xl fc:text-xs fc:font-bold fc:transition-all ${activeTab === "filePool" ? "fc:bg-blue-600 fc:text-white fc:shadow-md fc:shadow-blue-500/25" : "fc:text-slate-600 hover:fc:text-slate-900 hover:fc:bg-white/60"}`,
20229
20076
  children: [
20230
20077
  /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_react101.RiInboxArchiveLine, { size: 16 }),
20231
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: "File Pool" }),
20078
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: "Unclaimed Files" }),
20232
20079
  /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
20233
20080
  "span",
20234
20081
  {
@@ -20266,7 +20113,7 @@ function InboxMain() {
20266
20113
  className: `fc:flex fc:items-center fc:gap-2.5 fc:px-4 fc:py-2 fc:rounded-xl fc:text-xs fc:font-bold fc:transition-all ${activeTab === "totalFiles" ? "fc:bg-slate-800 fc:text-white fc:shadow-md fc:shadow-slate-800/25" : "fc:text-slate-600 hover:fc:text-slate-900 hover:fc:bg-white/60"}`,
20267
20114
  children: [
20268
20115
  /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_react101.RiFileUploadLine, { size: 16 }),
20269
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: "Total Files" }),
20116
+ /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { children: "Completed Files" }),
20270
20117
  /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
20271
20118
  "span",
20272
20119
  {
@@ -21134,521 +20981,11 @@ function TrackingSlipModal({ isOpen, onClose, application }) {
21134
20981
 
21135
20982
  // src/components/track-application/TrackApplicationMain.jsx
21136
20983
  var import_jsx_runtime99 = require("react/jsx-runtime");
21137
- var APPLICATION_DATABASE = [
21138
- {
21139
- fileId: 202,
21140
- fileNumber: "FC-2026-0120",
21141
- subject: "Q3 Departmental Infrastructure Procurement Sanction",
21142
- workflowName: "Financial Sanction",
21143
- department: "Finance & Accounts",
21144
- applicant: "Administration Division",
21145
- category: "Budget Sanction",
21146
- financialYear: "2026-27",
21147
- sender: "Administration Division",
21148
- priority: "High",
21149
- receivedDate: "04-Oct-2026 01:20 PM",
21150
- dueDate: "10-Oct-2026",
21151
- slaStatus: "Running (2d left)",
21152
- status: "In Progress",
21153
- assignedTo: "Pankaj Jain",
21154
- currentStep: "Budget Head Appropriation",
21155
- progressPercent: 60,
21156
- stages: [
21157
- {
21158
- stageId: 1,
21159
- title: "Indents Consolidated",
21160
- description: "Department hardware requisitions.",
21161
- status: "completed",
21162
- date: "04-Oct-2026 01:20 PM",
21163
- officer: "Admin Division"
21164
- },
21165
- {
21166
- stageId: 2,
21167
- title: "Budget Availability Check",
21168
- description: "Major Head 2052 Capital Outlay.",
21169
- status: "completed",
21170
- date: "05-Oct-2026 11:00 AM",
21171
- officer: "Accounts Officer"
21172
- },
21173
- {
21174
- stageId: 3,
21175
- title: "Competent Authority Sanction",
21176
- description: "Review by Principal Secretary.",
21177
- status: "in-progress",
21178
- date: "Running (Active)",
21179
- officer: "Pankaj Jain"
21180
- },
21181
- {
21182
- stageId: 4,
21183
- title: "Sanction Letter Release",
21184
- description: "Formal expenditure sanction order.",
21185
- status: "pending",
21186
- date: "Target: 10-Oct-2026",
21187
- officer: "Finance Secretariat"
21188
- }
21189
- ],
21190
- movementHistory: [
21191
- {
21192
- id: 1,
21193
- fromStep: "Admin Division",
21194
- toStep: "Finance Scrutiny Cell",
21195
- action: "Sanction Proposal Sent",
21196
- officer: "Joint Secretary Admin",
21197
- timestamp: "04-Oct-2026 01:20 PM",
21198
- remarks: "Proposal for IT hardware and server capacity upgrade."
21199
- },
21200
- {
21201
- id: 2,
21202
- fromStep: "Finance Scrutiny Cell",
21203
- toStep: "Reviewer Desk",
21204
- action: "Budget Validated",
21205
- officer: "Accounts Officer",
21206
- timestamp: "05-Oct-2026 11:00 AM",
21207
- remarks: "Funds verified in current FY allocation."
21208
- }
21209
- ],
21210
- documents: [
21211
- { name: "Detailed Itemized Expense Estimate", type: "PDF", size: "1.9 MB", status: "Verified" },
21212
- { name: "Comparative Quotation Statement", type: "PDF", size: "1.5 MB", status: "Verified" }
21213
- ]
21214
- },
21215
- {
21216
- fileId: 101,
21217
- fileNumber: "FC-2026-0142",
21218
- subject: "Industrial Waste Discharge License Renewal Application",
21219
- workflowName: "Environmental Clearance",
21220
- department: "Environment & Forests",
21221
- applicant: "GreenTech Industries Ltd.",
21222
- category: "Statutory Renewal",
21223
- financialYear: "2026-27",
21224
- sender: "GreenTech Industries Ltd.",
21225
- priority: "Urgent",
21226
- receivedDate: "05-Oct-2026 09:15 AM",
21227
- dueDate: "09-Oct-2026",
21228
- slaStatus: "Critical (18h left)",
21229
- status: "Under Scrutiny",
21230
- assignedTo: "Pankaj Jain (Reviewer)",
21231
- currentStep: "Scrutiny & Review",
21232
- progressPercent: 50,
21233
- stages: [
21234
- {
21235
- stageId: 1,
21236
- title: "Application Registration",
21237
- description: "Application filed online via Single Window Portal.",
21238
- status: "completed",
21239
- date: "05-Oct-2026 09:15 AM",
21240
- officer: "Portal Gateway"
21241
- },
21242
- {
21243
- stageId: 2,
21244
- title: "Document Verification",
21245
- description: "Scrutiny of ETP specifications.",
21246
- status: "completed",
21247
- date: "05-Oct-2026 02:30 PM",
21248
- officer: "Pankaj Jain (Reviewer)"
21249
- },
21250
- {
21251
- stageId: 3,
21252
- title: "Field Inspection & Sampling",
21253
- description: "Pollution Control Board site inspection.",
21254
- status: "in-progress",
21255
- date: "Running (Due: 08-Oct)",
21256
- officer: "Er. Ramesh Verma"
21257
- },
21258
- {
21259
- stageId: 4,
21260
- title: "Appraisal Committee Review",
21261
- description: "State Expert Appraisal Committee review.",
21262
- status: "pending",
21263
- date: "Pending Stage 3",
21264
- officer: "Member Secretary"
21265
- },
21266
- {
21267
- stageId: 5,
21268
- title: "Final NOC & Certificate",
21269
- description: "Issuance of renewal license.",
21270
- status: "pending",
21271
- date: "Target: 09-Oct-2026",
21272
- officer: "Directorate of Env."
21273
- }
21274
- ],
21275
- movementHistory: [
21276
- {
21277
- id: 1,
21278
- fromStep: "Citizen Portal",
21279
- toStep: "Central Inward Registry",
21280
- action: "Application Submitted",
21281
- officer: "GreenTech Representative",
21282
- timestamp: "05-Oct-2026 09:15 AM",
21283
- remarks: "Online application submitted with license renewal fee."
21284
- },
21285
- {
21286
- id: 2,
21287
- fromStep: "Central Inward Registry",
21288
- toStep: "Scrutiny Desk",
21289
- action: "Forwarded for Scrutiny",
21290
- officer: "System Auto-Router",
21291
- timestamp: "05-Oct-2026 09:30 AM",
21292
- remarks: "Automated routing based on Environmental Clearance rule."
21293
- },
21294
- {
21295
- id: 3,
21296
- fromStep: "Scrutiny Desk",
21297
- toStep: "Pollution Control Inspection Cell",
21298
- action: "Under Active Scrutiny",
21299
- officer: "Pankaj Jain (Reviewer)",
21300
- timestamp: "05-Oct-2026 02:30 PM",
21301
- remarks: "Documents cleared. Site sample report requested."
21302
- }
21303
- ],
21304
- documents: [
21305
- { name: "Effluent Treatment Plant (ETP) Specification", type: "PDF", size: "3.4 MB", status: "Verified" },
21306
- { name: "Previous Financial Year Audit Log", type: "PDF", size: "1.8 MB", status: "Verified" },
21307
- { name: "Factory Site Coordinate Map", type: "PDF", size: "850 KB", status: "Under Scrutiny" }
21308
- ]
21309
- },
21310
- {
21311
- fileId: 102,
21312
- fileNumber: "FC-2026-0145",
21313
- subject: "Sector 14 Commercial Complex Building Plan Sanction",
21314
- workflowName: "Urban Development Clearance",
21315
- department: "Urban Development",
21316
- applicant: "Apex Constructions Pvt Ltd",
21317
- category: "Commercial Sanction",
21318
- financialYear: "2026-27",
21319
- sender: "Apex Constructions Pvt Ltd",
21320
- priority: "High",
21321
- receivedDate: "05-Oct-2026 11:30 AM",
21322
- dueDate: "12-Oct-2026",
21323
- slaStatus: "Running (4d left)",
21324
- status: "In Progress",
21325
- assignedTo: "Town Planner Cell",
21326
- currentStep: "Architectural Layout Verification",
21327
- progressPercent: 40,
21328
- stages: [
21329
- {
21330
- stageId: 1,
21331
- title: "Application Registration",
21332
- description: "Commercial sanction proposal filed.",
21333
- status: "completed",
21334
- date: "05-Oct-2026 11:30 AM",
21335
- officer: "Town Planning Portal"
21336
- },
21337
- {
21338
- stageId: 2,
21339
- title: "Town Planning Scrutiny",
21340
- description: "Floor area ratio and parking check.",
21341
- status: "in-progress",
21342
- date: "In Progress",
21343
- officer: "Chief Town Planner"
21344
- },
21345
- {
21346
- stageId: 3,
21347
- title: "Fire & Safety NOC",
21348
- description: "Driveway and structural load clearance.",
21349
- status: "pending",
21350
- date: "Pending Stage 2",
21351
- officer: "Fire Safety Dept"
21352
- },
21353
- {
21354
- stageId: 4,
21355
- title: "Municipal Commissioner Sanction",
21356
- description: "Final statutory sanction order.",
21357
- status: "pending",
21358
- date: "Target: 12-Oct-2026",
21359
- officer: "Municipal Comm."
21360
- }
21361
- ],
21362
- movementHistory: [
21363
- {
21364
- id: 1,
21365
- fromStep: "Citizen Portal",
21366
- toStep: "Urban Planning Registry",
21367
- action: "Filing Received",
21368
- officer: "Apex Constructions",
21369
- timestamp: "05-Oct-2026 11:30 AM",
21370
- remarks: "Proposal registered under Commercial Category A."
21371
- }
21372
- ],
21373
- documents: [
21374
- { name: "Structural Design Blueprint (CAD)", type: "PDF", size: "9.2 MB", status: "Verified" },
21375
- { name: "Land Ownership Deed", type: "PDF", size: "2.1 MB", status: "Verified" }
21376
- ]
21377
- },
21378
- {
21379
- fileId: 201,
21380
- fileNumber: "FC-2026-0112",
21381
- subject: "Hospital Expansion Fire Safety NOC & Site Clearance",
21382
- workflowName: "Fire & Safety Clearance",
21383
- department: "Public Safety",
21384
- applicant: "City Hospital Trust",
21385
- category: "Statutory NOC",
21386
- financialYear: "2026-27",
21387
- sender: "City Hospital Trust",
21388
- priority: "Urgent",
21389
- receivedDate: "03-Oct-2026 10:15 AM",
21390
- dueDate: "08-Oct-2026",
21391
- slaStatus: "Critical (14h left)",
21392
- status: "Under Review",
21393
- assignedTo: "Pankaj Jain (Reviewer)",
21394
- currentStep: "Hydrant & Evacuation Inspection",
21395
- progressPercent: 75,
21396
- stages: [
21397
- {
21398
- stageId: 1,
21399
- title: "Application Received",
21400
- description: "200-bed extension fire clearance.",
21401
- status: "completed",
21402
- date: "03-Oct-2026 10:15 AM",
21403
- officer: "Disaster Desk"
21404
- },
21405
- {
21406
- stageId: 2,
21407
- title: "Architectural Audit",
21408
- description: "Emergency exits and fire lifts check.",
21409
- status: "completed",
21410
- date: "04-Oct-2026 02:00 PM",
21411
- officer: "Pankaj Jain"
21412
- },
21413
- {
21414
- stageId: 3,
21415
- title: "Hydrant Pressure Test",
21416
- description: "Physical inspection of water tanks.",
21417
- status: "in-progress",
21418
- date: "Running (Critical)",
21419
- officer: "Inspection Team"
21420
- },
21421
- {
21422
- stageId: 4,
21423
- title: "Issuance of Certificate",
21424
- description: "Final statutory NOC issuance.",
21425
- status: "pending",
21426
- date: "Target: 08-Oct-2026",
21427
- officer: "DG Fire Services"
21428
- }
21429
- ],
21430
- movementHistory: [
21431
- {
21432
- id: 1,
21433
- fromStep: "City Hospital Trust",
21434
- toStep: "Public Safety Central Registry",
21435
- action: "Application Filed",
21436
- officer: "Trust Secretary",
21437
- timestamp: "03-Oct-2026 10:15 AM",
21438
- remarks: "Priority expedited due to public healthcare expansion."
21439
- }
21440
- ],
21441
- documents: [
21442
- { name: "Emergency Evacuation Route Map", type: "PDF", size: "3.9 MB", status: "Verified" }
21443
- ]
21444
- },
21445
- {
21446
- fileId: 104,
21447
- fileNumber: "FC-2026-0153",
21448
- subject: "Vendor Onboarding & Due Diligence - Cloud Services",
21449
- workflowName: "Procurement & Contracts",
21450
- department: "Procurement Cell",
21451
- applicant: "Global Infotech Solutions",
21452
- category: "Vendor Registration",
21453
- financialYear: "2026-27",
21454
- sender: "Global Infotech Solutions",
21455
- priority: "High",
21456
- receivedDate: "06-Oct-2026 04:10 PM",
21457
- dueDate: "11-Oct-2026",
21458
- slaStatus: "Running (3d left)",
21459
- status: "In Progress",
21460
- assignedTo: "Tender Committee",
21461
- currentStep: "Financial Bid Eligibility",
21462
- progressPercent: 45,
21463
- stages: [
21464
- {
21465
- stageId: 1,
21466
- title: "Vendor Registration",
21467
- description: "Tender credentials submitted.",
21468
- status: "completed",
21469
- date: "06-Oct-2026 04:10 PM",
21470
- officer: "e-Procurement Portal"
21471
- },
21472
- {
21473
- stageId: 2,
21474
- title: "Technical Eligibility",
21475
- description: "Past experience evaluation.",
21476
- status: "completed",
21477
- date: "07-Oct-2026 10:00 AM",
21478
- officer: "Evaluation Board"
21479
- },
21480
- {
21481
- stageId: 3,
21482
- title: "Financial Eligibility",
21483
- description: "Balance sheets and solvency audit.",
21484
- status: "in-progress",
21485
- date: "Running",
21486
- officer: "Finance Officer"
21487
- },
21488
- {
21489
- stageId: 4,
21490
- title: "Contract Award",
21491
- description: "SLA and agreement execution.",
21492
- status: "pending",
21493
- date: "Target: 11-Oct-2026",
21494
- officer: "Director Procurement"
21495
- }
21496
- ],
21497
- movementHistory: [
21498
- {
21499
- id: 1,
21500
- fromStep: "Vendor Portal",
21501
- toStep: "Procurement Intake",
21502
- action: "Bid Registered",
21503
- officer: "Global Infotech",
21504
- timestamp: "06-Oct-2026 04:10 PM",
21505
- remarks: "Online submission with Earnest Money Deposit receipt."
21506
- }
21507
- ],
21508
- documents: [
21509
- { name: "Audited Balance Sheets (3 Years)", type: "PDF", size: "5.1 MB", status: "Verified" }
21510
- ]
21511
- },
21512
- {
21513
- fileId: 203,
21514
- fileNumber: "FC-2026-0128",
21515
- subject: "Public Interest Petition Regarding Street Light Restoration",
21516
- workflowName: "Citizen Grievance Redressal",
21517
- department: "Municipal Affairs",
21518
- applicant: "Ward 12 Residents Forum",
21519
- category: "Citizen Grievance",
21520
- financialYear: "2026-27",
21521
- sender: "Ward 12 Residents Forum",
21522
- priority: "Medium",
21523
- receivedDate: "04-Oct-2026 03:40 PM",
21524
- dueDate: "12-Oct-2026",
21525
- slaStatus: "Running (4d left)",
21526
- status: "In Progress",
21527
- assignedTo: "Pankaj Jain",
21528
- currentStep: "Field Action Team Dispatch",
21529
- progressPercent: 55,
21530
- stages: [
21531
- {
21532
- stageId: 1,
21533
- title: "Petition Lodged",
21534
- description: "Grievance received through CM Helpline.",
21535
- status: "completed",
21536
- date: "04-Oct-2026 03:40 PM",
21537
- officer: "Citizen Helpdesk"
21538
- },
21539
- {
21540
- stageId: 2,
21541
- title: "Ward Engineer Assigned",
21542
- description: "Underground cabling check.",
21543
- status: "completed",
21544
- date: "05-Oct-2026 10:00 AM",
21545
- officer: "Assistant Engineer"
21546
- },
21547
- {
21548
- stageId: 3,
21549
- title: "Repair & Cable Laying",
21550
- description: "Cable and fixture replacements.",
21551
- status: "in-progress",
21552
- date: "Running",
21553
- officer: "Field Squad"
21554
- },
21555
- {
21556
- stageId: 4,
21557
- title: "Resolution & Closure",
21558
- description: "Confirmation with petitioner.",
21559
- status: "pending",
21560
- date: "Target: 12-Oct-2026",
21561
- officer: "Pankaj Jain"
21562
- }
21563
- ],
21564
- movementHistory: [
21565
- {
21566
- id: 1,
21567
- fromStep: "Citizen Helpdesk",
21568
- toStep: "Municipal Electrical Division",
21569
- action: "Grievance Categorized",
21570
- officer: "Helpdesk Officer",
21571
- timestamp: "04-Oct-2026 03:40 PM",
21572
- remarks: "Ward 12 Main Sector street illumination failure complaint."
21573
- }
21574
- ],
21575
- documents: [
21576
- { name: "Citizen Complaint Letter", type: "PDF", size: "1.1 MB", status: "Verified" }
21577
- ]
21578
- },
21579
- {
21580
- fileId: 301,
21581
- fileNumber: "FC-2026-0095",
21582
- subject: "National Highway Bypass Land Acquisition Settlement",
21583
- workflowName: "Land Revenue & Settlement",
21584
- department: "Land & Revenue",
21585
- applicant: "District Collectorate",
21586
- category: "Land Settlement",
21587
- financialYear: "2026-27",
21588
- sender: "District Magistrate Secretariat",
21589
- priority: "High",
21590
- receivedDate: "28-Sep-2026 11:00 AM",
21591
- dueDate: "05-Oct-2026",
21592
- slaStatus: "Met / Completed",
21593
- status: "Completed",
21594
- assignedTo: "Executive Director",
21595
- currentStep: "Award Pronouncement & Compensation",
21596
- progressPercent: 100,
21597
- stages: [
21598
- {
21599
- stageId: 1,
21600
- title: "Section 4 Notification",
21601
- description: "Survey of affected parcels.",
21602
- status: "completed",
21603
- date: "28-Sep-2026 11:00 AM",
21604
- officer: "Land Acquisition Officer"
21605
- },
21606
- {
21607
- stageId: 2,
21608
- title: "Public Hearing",
21609
- description: "Hearing of titleholders.",
21610
- status: "completed",
21611
- date: "30-Sep-2026 04:00 PM",
21612
- officer: "ADM Revenue"
21613
- },
21614
- {
21615
- stageId: 3,
21616
- title: "Award Declaration",
21617
- description: "Compensation disbursed to bank accounts.",
21618
- status: "completed",
21619
- date: "04-Oct-2026 01:30 PM",
21620
- officer: "Executive Director"
21621
- },
21622
- {
21623
- stageId: 4,
21624
- title: "Possession Handover",
21625
- description: "Corridor transferred to NHAI.",
21626
- status: "completed",
21627
- date: "05-Oct-2026 11:00 AM",
21628
- officer: "DM Secretariat"
21629
- }
21630
- ],
21631
- movementHistory: [
21632
- {
21633
- id: 1,
21634
- fromStep: "NHAI Project Office",
21635
- toStep: "Revenue Department",
21636
- action: "Acquisition Proposed",
21637
- officer: "Project Director",
21638
- timestamp: "28-Sep-2026 11:00 AM",
21639
- remarks: "Proposal for bypass corridor land transfer."
21640
- }
21641
- ],
21642
- documents: [
21643
- { name: "Final Land Award Gazette Notification", type: "PDF", size: "4.1 MB", status: "Verified" }
21644
- ]
21645
- }
21646
- ];
20984
+ var APPLICATION_DATABASE = [];
21647
20985
  function TrackApplicationMain() {
21648
20986
  var _a, _b, _c;
21649
20987
  const [trackQuery, setTrackQuery] = (0, import_react104.useState)("");
21650
- const [selectedApplication, setSelectedApplication] = (0, import_react104.useState)(APPLICATION_DATABASE[0]);
21651
- const [isSearching, setIsSearching] = (0, import_react104.useState)(false);
20988
+ const [selectedApplication, setSelectedApplication] = (0, import_react104.useState)(null);
21652
20989
  const [activeTab, setActiveTab] = (0, import_react104.useState)("timeline");
21653
20990
  const [viewMode, setViewMode] = (0, import_react104.useState)("tracker");
21654
20991
  const [tableSearch, setTableSearch] = (0, import_react104.useState)("");
@@ -21658,119 +20995,25 @@ function TrackApplicationMain() {
21658
20995
  const [sortColumn, setSortColumn] = (0, import_react104.useState)("");
21659
20996
  const [sortDirection, setSortDirection] = (0, import_react104.useState)("asc");
21660
20997
  const [slipModalOpen, setSlipModalOpen] = (0, import_react104.useState)(false);
21661
- const popularFileNumbers = [
21662
- "FC-2026-0120",
21663
- "FC-2026-0142",
21664
- "FC-2026-0145",
21665
- "FC-2026-0112",
21666
- "FC-2026-0153",
21667
- "FC-2026-0128",
21668
- "FC-2026-0095"
21669
- ];
21670
- const handleTrack = (fileNoToTrack) => {
20998
+ const handleTrack = async (fileNoToTrack) => {
21671
20999
  const targetNo = (fileNoToTrack || trackQuery).trim().toUpperCase();
21672
21000
  if (!targetNo) {
21673
21001
  import_sweetalert230.default.fire({
21674
21002
  icon: "warning",
21675
21003
  title: "Please enter an Application No.",
21676
- text: "Example: FC-2026-0120 or select one from quick chips.",
21004
+ text: "Enter an application or file number to search.",
21677
21005
  confirmButtonColor: "#2563eb"
21678
21006
  });
21679
21007
  return;
21680
21008
  }
21681
- setIsSearching(true);
21682
- setTimeout(() => {
21683
- setIsSearching(false);
21684
- const matched = APPLICATION_DATABASE.find(
21685
- (app) => app.fileNumber.toUpperCase() === targetNo || app.fileNumber.toUpperCase().includes(targetNo)
21686
- );
21687
- if (matched) {
21688
- setSelectedApplication(matched);
21689
- setTrackQuery(matched.fileNumber);
21690
- setViewMode("tracker");
21691
- import_sweetalert230.default.fire({
21692
- icon: "success",
21693
- title: "Application Found",
21694
- text: `${matched.fileNumber} (${matched.workflowName})`,
21695
- toast: true,
21696
- position: "top-end",
21697
- timer: 1800,
21698
- showConfirmButton: false
21699
- });
21700
- } else {
21701
- const synthesizedApp = {
21702
- fileId: Date.now(),
21703
- fileNumber: targetNo,
21704
- subject: `General Regulatory & Administrative Filing for ${targetNo}`,
21705
- workflowName: "Citizen & Enterprise Service Clearance",
21706
- department: "General Administration",
21707
- applicant: "Registered Enterprise Applicant",
21708
- category: "General Application",
21709
- financialYear: "2026-27",
21710
- sender: "Registered Enterprise Applicant",
21711
- priority: "Medium",
21712
- receivedDate: "07-Oct-2026 10:00 AM",
21713
- dueDate: "15-Oct-2026",
21714
- slaStatus: "Running (8d left)",
21715
- status: "Under Scrutiny",
21716
- assignedTo: "Pankaj Jain (Reviewer)",
21717
- currentStep: "Document Verification & Initial Scrutiny",
21718
- progressPercent: 40,
21719
- stages: [
21720
- {
21721
- stageId: 1,
21722
- title: "Application Registration",
21723
- description: `Application ${targetNo} registered successfully.`,
21724
- status: "completed",
21725
- date: "07-Oct-2026 10:00 AM",
21726
- officer: "System Gateway"
21727
- },
21728
- {
21729
- stageId: 2,
21730
- title: "Scrutiny & Verification",
21731
- description: "Reviewer checking attached documents.",
21732
- status: "in-progress",
21733
- date: "Running (Active)",
21734
- officer: "Pankaj Jain (Reviewer)"
21735
- },
21736
- {
21737
- stageId: 3,
21738
- title: "Competent Authority Decision",
21739
- description: "Final approval by department directorate.",
21740
- status: "pending",
21741
- date: "Pending Stage 2",
21742
- officer: "Designated Authority"
21743
- }
21744
- ],
21745
- movementHistory: [
21746
- {
21747
- id: 1,
21748
- fromStep: "Portal Inward Desk",
21749
- toStep: "Central Review Cell",
21750
- action: "Submitted & Allocated",
21751
- officer: "System Router",
21752
- timestamp: "07-Oct-2026 10:00 AM",
21753
- remarks: `Application ${targetNo} received and queued for review.`
21754
- }
21755
- ],
21756
- documents: [
21757
- { name: "Registration Acknowledgement", type: "PDF", size: "850 KB", status: "Verified" }
21758
- ]
21759
- };
21760
- setSelectedApplication(synthesizedApp);
21761
- setTrackQuery(targetNo);
21762
- setViewMode("tracker");
21763
- import_sweetalert230.default.fire({
21764
- icon: "info",
21765
- title: "Application Loaded",
21766
- text: `Application ${targetNo} loaded in tracking dashboard.`,
21767
- toast: true,
21768
- position: "top-end",
21769
- timer: 2e3,
21770
- showConfirmButton: false
21771
- });
21772
- }
21773
- }, 200);
21009
+ setTrackQuery(targetNo);
21010
+ setSelectedApplication(null);
21011
+ await import_sweetalert230.default.fire({
21012
+ icon: "warning",
21013
+ title: "Tracking API is not configured",
21014
+ text: "No tracking endpoint is configured, so application data cannot be loaded.",
21015
+ confirmButtonColor: "#2563eb"
21016
+ });
21774
21017
  };
21775
21018
  const handleCopyFileNumber = (no) => {
21776
21019
  navigator.clipboard.writeText(no);
@@ -21862,22 +21105,7 @@ function TrackApplicationMain() {
21862
21105
  ] })
21863
21106
  ] }),
21864
21107
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-3 fc:shrink-0", children: [
21865
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-3 fc:bg-slate-50/90 fc:border fc:border-slate-200/80 fc:rounded-2xl fc:p-1.5 fc:pr-3.5 fc:shadow-sm", children: [
21866
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:relative fc:shrink-0", children: [
21867
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-9 fc:h-9 fc:rounded-xl fc:bg-gradient-to-br fc:from-blue-600 fc:to-indigo-600 fc:text-white fc:font-extrabold fc:text-xs fc:flex fc:items-center fc:justify-center fc:shadow-sm", children: "PJ" }),
21868
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:absolute fc:-bottom-0.5 fc:-right-0.5 fc:w-2.5 fc:h-2.5 fc:bg-emerald-500 fc:border-2 fc:border-white fc:rounded-full" })
21869
- ] }),
21870
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:flex-col fc:justify-center", children: [
21871
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2", children: [
21872
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-extrabold fc:text-slate-800", children: "Pankaj Jain" }),
21873
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:bg-blue-50 fc:text-blue-700 fc:px-1.5 fc:py-0.2 fc:rounded fc:border fc:border-blue-100", children: "Reviewer" })
21874
- ] }),
21875
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-1.5 fc:mt-0.5", children: [
21876
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:text-slate-400 fc:font-medium", children: "Active Step:" }),
21877
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-indigo-600 fc:bg-indigo-50/80 fc:px-1.5 fc:py-0.2 fc:rounded", children: "Scrutiny & Review" })
21878
- ] })
21879
- ] })
21880
- ] }),
21108
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:rounded-xl fc:border fc:border-slate-200 fc:bg-slate-50 fc:px-3 fc:py-2 fc:text-xs fc:font-semibold fc:text-slate-600", children: (selectedApplication == null ? void 0 : selectedApplication.fileNumber) || "No application selected" }),
21881
21109
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21882
21110
  "button",
21883
21111
  {
@@ -21891,412 +21119,400 @@ function TrackApplicationMain() {
21891
21119
  ] })
21892
21120
  ] })
21893
21121
  ] }),
21894
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-white fc:border fc:border-slate-200 fc:rounded-2xl fc:p-3.5 fc:shadow-sm", children: [
21895
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:flex-col lg:fc:flex-row lg:fc:items-center lg:fc:justify-between fc:gap-3", children: [
21896
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:inline-flex fc:items-center fc:p-1 fc:bg-slate-100/90 fc:rounded-xl fc:border fc:border-slate-200/80 fc:gap-1 fc:shrink-0", children: [
21897
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21898
- "button",
21122
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:bg-white fc:border fc:border-slate-200 fc:rounded-2xl fc:p-3.5 fc:shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:flex-col lg:fc:flex-row lg:fc:items-center lg:fc:justify-between fc:gap-3", children: [
21123
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:inline-flex fc:items-center fc:p-1 fc:bg-slate-100/90 fc:rounded-xl fc:border fc:border-slate-200/80 fc:gap-1 fc:shrink-0", children: [
21124
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21125
+ "button",
21126
+ {
21127
+ type: "button",
21128
+ onClick: () => setViewMode("tracker"),
21129
+ className: `fc:flex fc:items-center fc:gap-2 fc:px-3.5 fc:py-2 fc:rounded-lg fc:text-xs fc:font-bold fc:transition-all ${viewMode === "tracker" ? "fc:bg-blue-600 fc:text-white fc:shadow-sm" : "fc:text-slate-600 hover:fc:text-slate-900"}`,
21130
+ children: [
21131
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 15 }),
21132
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Tracking Dashboard" })
21133
+ ]
21134
+ }
21135
+ ),
21136
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21137
+ "button",
21138
+ {
21139
+ type: "button",
21140
+ onClick: () => setViewMode("registry"),
21141
+ className: `fc:flex fc:items-center fc:gap-2 fc:px-3.5 fc:py-2 fc:rounded-lg fc:text-xs fc:font-bold fc:transition-all ${viewMode === "registry" ? "fc:bg-blue-600 fc:text-white fc:shadow-sm" : "fc:text-slate-600 hover:fc:text-slate-900"}`,
21142
+ children: [
21143
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileListLine, { size: 15 }),
21144
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Applications Registry" }),
21145
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21146
+ "span",
21147
+ {
21148
+ className: `fc:px-1.5 fc:py-0.2 fc:rounded-full fc:text-[10px] fc:font-extrabold ${viewMode === "registry" ? "fc:bg-white/20 fc:text-white" : "fc:bg-slate-200 fc:text-slate-700"}`,
21149
+ children: APPLICATION_DATABASE.length
21150
+ }
21151
+ )
21152
+ ]
21153
+ }
21154
+ )
21155
+ ] }),
21156
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2 fc:flex-1 lg:fc:max-w-md", children: [
21157
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:relative fc:flex-1", children: [
21158
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:absolute fc:left-3 fc:top-1/2 fc:-translate-y-1/2 fc:text-slate-400", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiSearchLine, { size: 16 }) }),
21159
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21160
+ "input",
21899
21161
  {
21900
- type: "button",
21901
- onClick: () => setViewMode("tracker"),
21902
- className: `fc:flex fc:items-center fc:gap-2 fc:px-3.5 fc:py-2 fc:rounded-lg fc:text-xs fc:font-bold fc:transition-all ${viewMode === "tracker" ? "fc:bg-blue-600 fc:text-white fc:shadow-sm" : "fc:text-slate-600 hover:fc:text-slate-900"}`,
21903
- children: [
21904
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 15 }),
21905
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Tracking Dashboard" })
21906
- ]
21162
+ type: "text",
21163
+ value: trackQuery,
21164
+ onChange: (e) => setTrackQuery(e.target.value),
21165
+ onKeyDown: (e) => e.key === "Enter" && handleTrack(),
21166
+ placeholder: "Enter App No. / File No.",
21167
+ className: "fc:w-full fc:pl-9 fc:pr-8 fc:py-2 fc:bg-slate-50 focus:fc:bg-white fc:border fc:border-slate-200 focus:fc:border-blue-500 fc:rounded-xl fc:text-xs fc:font-semibold fc:text-slate-800 fc:outline-none fc:transition-all"
21907
21168
  }
21908
21169
  ),
21909
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21170
+ trackQuery && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21910
21171
  "button",
21911
21172
  {
21912
21173
  type: "button",
21913
- onClick: () => setViewMode("registry"),
21914
- className: `fc:flex fc:items-center fc:gap-2 fc:px-3.5 fc:py-2 fc:rounded-lg fc:text-xs fc:font-bold fc:transition-all ${viewMode === "registry" ? "fc:bg-blue-600 fc:text-white fc:shadow-sm" : "fc:text-slate-600 hover:fc:text-slate-900"}`,
21915
- children: [
21916
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileListLine, { size: 15 }),
21917
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Applications Registry" }),
21918
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21919
- "span",
21920
- {
21921
- className: `fc:px-1.5 fc:py-0.2 fc:rounded-full fc:text-[10px] fc:font-extrabold ${viewMode === "registry" ? "fc:bg-white/20 fc:text-white" : "fc:bg-slate-200 fc:text-slate-700"}`,
21922
- children: APPLICATION_DATABASE.length
21923
- }
21924
- )
21925
- ]
21174
+ onClick: () => setTrackQuery(""),
21175
+ className: "fc:absolute fc:right-2.5 fc:top-1/2 fc:-translate-y-1/2 fc:text-slate-400 hover:fc:text-slate-600",
21176
+ children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiCloseLine, { size: 14 })
21926
21177
  }
21927
21178
  )
21928
21179
  ] }),
21929
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2 fc:flex-1 lg:fc:max-w-md", children: [
21930
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:relative fc:flex-1", children: [
21931
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:absolute fc:left-3 fc:top-1/2 fc:-translate-y-1/2 fc:text-slate-400", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiSearchLine, { size: 16 }) }),
21932
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21933
- "input",
21934
- {
21935
- type: "text",
21936
- value: trackQuery,
21937
- onChange: (e) => setTrackQuery(e.target.value),
21938
- onKeyDown: (e) => e.key === "Enter" && handleTrack(),
21939
- placeholder: "Enter App No. / File No. (e.g. FC-2026-0120)...",
21940
- className: "fc:w-full fc:pl-9 fc:pr-8 fc:py-2 fc:bg-slate-50 focus:fc:bg-white fc:border fc:border-slate-200 focus:fc:border-blue-500 fc:rounded-xl fc:text-xs fc:font-semibold fc:text-slate-800 fc:outline-none fc:transition-all"
21941
- }
21942
- ),
21943
- trackQuery && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21944
- "button",
21945
- {
21946
- type: "button",
21947
- onClick: () => setTrackQuery(""),
21948
- className: "fc:absolute fc:right-2.5 fc:top-1/2 fc:-translate-y-1/2 fc:text-slate-400 hover:fc:text-slate-600",
21949
- children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiCloseLine, { size: 14 })
21950
- }
21951
- )
21952
- ] }),
21953
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21954
- "button",
21955
- {
21956
- type: "button",
21957
- onClick: () => handleTrack(),
21958
- disabled: isSearching,
21959
- className: "fc:flex fc:items-center fc:gap-1.5 fc:px-4 fc:py-2 fc:bg-blue-600 hover:fc:bg-blue-700 fc:text-white fc:text-xs fc:font-bold fc:rounded-xl fc:shadow-sm fc:transition-all fc:shrink-0 fc:cursor-pointer disabled:fc:opacity-50",
21960
- children: isSearching ? /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [
21961
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:inline-block fc:w-3.5 fc:h-3.5 fc:border-2 fc:border-white fc:border-t-transparent fc:rounded-full fc:animate-spin" }),
21962
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Tracking..." })
21963
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [
21964
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 14 }),
21965
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Track Now" })
21966
- ] })
21967
- }
21968
- )
21969
- ] })
21970
- ] }),
21971
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-1.5 fc:mt-2.5 fc:pt-2.5 fc:border-t fc:border-slate-100 fc:flex-wrap", children: [
21972
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:tracking-wider fc:mr-1", children: "Quick Track:" }),
21973
- popularFileNumbers.map((no) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21180
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21974
21181
  "button",
21975
21182
  {
21976
21183
  type: "button",
21977
- onClick: () => handleTrack(no),
21978
- className: `fc:px-2.5 fc:py-0.5 fc:text-[11px] fc:font-bold fc:rounded-md fc:border fc:transition-all ${(selectedApplication == null ? void 0 : selectedApplication.fileNumber) === no ? "fc:bg-blue-50 fc:border-blue-300 fc:text-blue-700" : "fc:bg-slate-50 fc:border-slate-200 fc:text-slate-600 hover:fc:bg-slate-100 hover:fc:border-slate-300"}`,
21979
- children: no
21980
- },
21981
- no
21982
- ))
21184
+ onClick: () => handleTrack(),
21185
+ className: "fc:flex fc:items-center fc:gap-1.5 fc:px-4 fc:py-2 fc:bg-blue-600 hover:fc:bg-blue-700 fc:text-white fc:text-xs fc:font-bold fc:rounded-xl fc:shadow-sm fc:transition-all fc:shrink-0 fc:cursor-pointer disabled:fc:opacity-50",
21186
+ children: [
21187
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 14 }),
21188
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Track Now" })
21189
+ ]
21190
+ }
21191
+ )
21983
21192
  ] })
21984
- ] }),
21193
+ ] }) }),
21985
21194
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:bg-white fc:border fc:border-slate-200 fc:rounded-3xl fc:shadow-sm fc:p-5 fc:flex fc:flex-col", children: viewMode === "tracker" ? (
21986
21195
  /* ========================================================
21987
21196
  VIEW 1: LIVE TRACKING DASHBOARD
21988
21197
  ======================================================== */
21989
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:space-y-4", children: selectedApplication && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [
21990
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:rounded-2xl fc:border fc:border-blue-100 fc:bg-gradient-to-r fc:from-blue-50/80 fc:via-indigo-50/40 fc:to-white fc:p-4.5 fc:shadow-sm", children: [
21991
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-3 fc:flex-wrap", children: [
21992
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2 fc:flex-wrap", children: [
21993
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:inline-flex fc:items-center fc:gap-1.5 fc:bg-blue-600 fc:text-white fc:text-xs fc:font-bold fc:px-3 fc:py-1 fc:rounded-lg fc:shadow-sm", children: [
21994
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 13 }),
21995
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
21996
- "App No: ",
21997
- selectedApplication.fileNumber
21198
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:space-y-4", children: [
21199
+ selectedApplication && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_jsx_runtime99.Fragment, { children: [
21200
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:rounded-2xl fc:border fc:border-blue-100 fc:bg-gradient-to-r fc:from-blue-50/80 fc:via-indigo-50/40 fc:to-white fc:p-4.5 fc:shadow-sm", children: [
21201
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-3 fc:flex-wrap", children: [
21202
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2 fc:flex-wrap", children: [
21203
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:inline-flex fc:items-center fc:gap-1.5 fc:bg-blue-600 fc:text-white fc:text-xs fc:font-bold fc:px-3 fc:py-1 fc:rounded-lg fc:shadow-sm", children: [
21204
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 13 }),
21205
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { children: [
21206
+ "App No: ",
21207
+ selectedApplication.fileNumber
21208
+ ] })
21209
+ ] }),
21210
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21211
+ "button",
21212
+ {
21213
+ type: "button",
21214
+ onClick: () => handleCopyFileNumber(selectedApplication.fileNumber),
21215
+ title: "Copy Application Number",
21216
+ className: "fc:text-blue-600 hover:fc:text-blue-800 fc:p-1 fc:rounded-md hover:fc:bg-blue-100/70 fc:transition-all",
21217
+ children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileCopyLine, { size: 14 })
21218
+ }
21219
+ ),
21220
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-bold fc:px-2.5 fc:py-0.5 fc:rounded-full fc:bg-white fc:border fc:border-slate-200 fc:text-slate-800", children: selectedApplication.workflowName }),
21221
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21222
+ "span",
21223
+ {
21224
+ className: `fc:text-xs fc:font-bold fc:px-2.5 fc:py-0.5 fc:rounded-full fc:border ${selectedApplication.priority === "Urgent" ? "fc:bg-red-50 fc:text-red-700 fc:border-red-200" : selectedApplication.priority === "High" ? "fc:bg-amber-50 fc:text-amber-700 fc:border-amber-200" : "fc:bg-blue-50 fc:text-blue-700 fc:border-blue-200"}`,
21225
+ children: [
21226
+ selectedApplication.priority,
21227
+ " Priority"
21228
+ ]
21229
+ }
21230
+ ),
21231
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:font-bold fc:px-2.5 fc:py-0.5 fc:rounded-full fc:bg-emerald-50 fc:text-emerald-700 fc:border fc:border-emerald-200", children: [
21232
+ "Status: ",
21233
+ selectedApplication.status
21998
21234
  ] })
21999
21235
  ] }),
22000
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21236
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22001
21237
  "button",
22002
21238
  {
22003
21239
  type: "button",
22004
- onClick: () => handleCopyFileNumber(selectedApplication.fileNumber),
22005
- title: "Copy Application Number",
22006
- className: "fc:text-blue-600 hover:fc:text-blue-800 fc:p-1 fc:rounded-md hover:fc:bg-blue-100/70 fc:transition-all",
22007
- children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileCopyLine, { size: 14 })
22008
- }
22009
- ),
22010
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-bold fc:px-2.5 fc:py-0.5 fc:rounded-full fc:bg-white fc:border fc:border-slate-200 fc:text-slate-800", children: selectedApplication.workflowName }),
22011
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22012
- "span",
22013
- {
22014
- className: `fc:text-xs fc:font-bold fc:px-2.5 fc:py-0.5 fc:rounded-full fc:border ${selectedApplication.priority === "Urgent" ? "fc:bg-red-50 fc:text-red-700 fc:border-red-200" : selectedApplication.priority === "High" ? "fc:bg-amber-50 fc:text-amber-700 fc:border-amber-200" : "fc:bg-blue-50 fc:text-blue-700 fc:border-blue-200"}`,
21240
+ onClick: () => setSlipModalOpen(true),
21241
+ className: "fc:flex fc:items-center fc:gap-1.5 fc:px-3 fc:py-1.5 fc:bg-blue-600 hover:fc:bg-blue-700 fc:text-white fc:text-xs fc:font-bold fc:rounded-xl fc:shadow-sm fc:transition-all fc:shrink-0",
22015
21242
  children: [
22016
- selectedApplication.priority,
22017
- " Priority"
21243
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiPrinterLine, { size: 13 }),
21244
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Print Tracking Slip" })
22018
21245
  ]
22019
21246
  }
22020
- ),
22021
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:font-bold fc:px-2.5 fc:py-0.5 fc:rounded-full fc:bg-emerald-50 fc:text-emerald-700 fc:border fc:border-emerald-200", children: [
22022
- "Status: ",
22023
- selectedApplication.status
22024
- ] })
21247
+ )
22025
21248
  ] }),
22026
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22027
- "button",
22028
- {
22029
- type: "button",
22030
- onClick: () => setSlipModalOpen(true),
22031
- className: "fc:flex fc:items-center fc:gap-1.5 fc:px-3 fc:py-1.5 fc:bg-blue-600 hover:fc:bg-blue-700 fc:text-white fc:text-xs fc:font-bold fc:rounded-xl fc:shadow-sm fc:transition-all fc:shrink-0",
22032
- children: [
22033
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiPrinterLine, { size: 13 }),
22034
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Print Tracking Slip" })
22035
- ]
22036
- }
22037
- )
22038
- ] }),
22039
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:mt-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h2", { className: "fc:text-base fc:font-bold fc:text-slate-800 fc:leading-snug", children: selectedApplication.subject }) }),
22040
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-3 fc:mt-2.5 fc:pt-2.5 fc:border-t fc:border-blue-100/70 fc:text-xs fc:text-slate-600 fc:flex-wrap", children: [
22041
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-4 fc:flex-wrap", children: [
22042
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:flex fc:items-center fc:gap-1", children: [
22043
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiBuildingLine, { size: 13, className: "fc:text-slate-400" }),
22044
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "Dept:" }),
22045
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-slate-700", children: selectedApplication.department })
22046
- ] }),
22047
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:flex fc:items-center fc:gap-1", children: [
22048
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiUserLine, { size: 13, className: "fc:text-slate-400" }),
22049
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "Applicant:" }),
22050
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-slate-700", children: selectedApplication.applicant })
21249
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:mt-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h2", { className: "fc:text-base fc:font-bold fc:text-slate-800 fc:leading-snug", children: selectedApplication.subject }) }),
21250
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-3 fc:mt-2.5 fc:pt-2.5 fc:border-t fc:border-blue-100/70 fc:text-xs fc:text-slate-600 fc:flex-wrap", children: [
21251
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-4 fc:flex-wrap", children: [
21252
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:flex fc:items-center fc:gap-1", children: [
21253
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiBuildingLine, { size: 13, className: "fc:text-slate-400" }),
21254
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "Dept:" }),
21255
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-slate-700", children: selectedApplication.department })
21256
+ ] }),
21257
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:flex fc:items-center fc:gap-1", children: [
21258
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiUserLine, { size: 13, className: "fc:text-slate-400" }),
21259
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "Applicant:" }),
21260
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-slate-700", children: selectedApplication.applicant })
21261
+ ] }),
21262
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:flex fc:items-center fc:gap-1", children: [
21263
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiTimeLine, { size: 13, className: "fc:text-slate-400" }),
21264
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "Submitted:" }),
21265
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-slate-700", children: selectedApplication.receivedDate })
21266
+ ] })
22051
21267
  ] }),
22052
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:flex fc:items-center fc:gap-1", children: [
22053
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiTimeLine, { size: 13, className: "fc:text-slate-400" }),
22054
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "Submitted:" }),
22055
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-slate-700", children: selectedApplication.receivedDate })
21268
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-1.5", children: [
21269
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "SLA:" }),
21270
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-red-600 fc:font-extrabold", children: selectedApplication.slaStatus }),
21271
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-slate-400", children: [
21272
+ "\u2022 Due: ",
21273
+ selectedApplication.dueDate
21274
+ ] })
22056
21275
  ] })
22057
21276
  ] }),
22058
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-1.5", children: [
22059
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-slate-400", children: "SLA:" }),
22060
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-red-600 fc:font-extrabold", children: selectedApplication.slaStatus }),
22061
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-slate-400", children: [
22062
- "\u2022 Due: ",
22063
- selectedApplication.dueDate
22064
- ] })
21277
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:mt-2.5 fc:pt-2 fc:border-t fc:border-blue-100/50", children: [
21278
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:justify-between fc:items-center fc:text-[11px] fc:mb-1", children: [
21279
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:font-bold fc:text-slate-600", children: [
21280
+ "Lifecycle Progress: ",
21281
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("strong", { children: [
21282
+ selectedApplication.progressPercent || 50,
21283
+ "% Completed"
21284
+ ] })
21285
+ ] }),
21286
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:font-bold fc:text-indigo-600", children: [
21287
+ "Active Desk: ",
21288
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: selectedApplication.assignedTo || "Central Scrutiny Cell" })
21289
+ ] })
21290
+ ] }),
21291
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-full fc:bg-slate-200/80 fc:h-1.5 fc:rounded-full fc:overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21292
+ "div",
21293
+ {
21294
+ className: "fc:bg-gradient-to-r fc:from-blue-600 fc:to-indigo-600 fc:h-full fc:rounded-full fc:transition-all fc:duration-500",
21295
+ style: { width: `${selectedApplication.progressPercent || 50}%` }
21296
+ }
21297
+ ) })
22065
21298
  ] })
22066
21299
  ] }),
22067
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:mt-2.5 fc:pt-2 fc:border-t fc:border-blue-100/50", children: [
22068
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:justify-between fc:items-center fc:text-[11px] fc:mb-1", children: [
22069
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:font-bold fc:text-slate-600", children: [
22070
- "Lifecycle Progress: ",
22071
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("strong", { children: [
22072
- selectedApplication.progressPercent || 50,
22073
- "% Completed"
22074
- ] })
21300
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50/70 fc:border fc:border-slate-200 fc:rounded-2xl fc:p-3.5", children: [
21301
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:mb-2.5", children: [
21302
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2", children: [
21303
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-2 fc:h-2 fc:rounded-full fc:bg-blue-600" }),
21304
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h3", { className: "fc:text-xs fc:font-bold fc:text-slate-800 fc:uppercase fc:tracking-wider", children: "Workflow Progression Stages" })
22075
21305
  ] }),
22076
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:font-bold fc:text-indigo-600", children: [
22077
- "Active Desk: ",
22078
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: selectedApplication.assignedTo || "Central Scrutiny Cell" })
21306
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:text-slate-500", children: [
21307
+ "Current Step: ",
21308
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-indigo-600", children: selectedApplication.currentStep })
22079
21309
  ] })
22080
21310
  ] }),
22081
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-full fc:bg-slate-200/80 fc:h-1.5 fc:rounded-full fc:overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21311
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
22082
21312
  "div",
22083
21313
  {
22084
- className: "fc:bg-gradient-to-r fc:from-blue-600 fc:to-indigo-600 fc:h-full fc:rounded-full fc:transition-all fc:duration-500",
22085
- style: { width: `${selectedApplication.progressPercent || 50}%` }
22086
- }
22087
- ) })
22088
- ] })
22089
- ] }),
22090
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50/70 fc:border fc:border-slate-200 fc:rounded-2xl fc:p-3.5", children: [
22091
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:mb-2.5", children: [
22092
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2", children: [
22093
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-2 fc:h-2 fc:rounded-full fc:bg-blue-600" }),
22094
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h3", { className: "fc:text-xs fc:font-bold fc:text-slate-800 fc:uppercase fc:tracking-wider", children: "Workflow Progression Stages" })
22095
- ] }),
22096
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:text-slate-500", children: [
22097
- "Current Step: ",
22098
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-indigo-600", children: selectedApplication.currentStep })
22099
- ] })
22100
- ] }),
22101
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
22102
- "div",
22103
- {
22104
- className: "fc:grid fc:gap-2 fc:items-stretch",
22105
- style: {
22106
- gridTemplateColumns: `repeat(${((_a = selectedApplication.stages) == null ? void 0 : _a.length) || 4}, minmax(0, 1fr))`
22107
- },
22108
- children: (selectedApplication.stages || []).map((stage, idx) => {
22109
- const isCompleted = stage.status === "completed";
22110
- const isInProgress = stage.status === "in-progress";
22111
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22112
- "div",
22113
- {
22114
- className: `fc:relative fc:flex fc:flex-col fc:justify-between fc:p-2.5 fc:rounded-xl fc:border fc:transition-all ${isCompleted ? "fc:bg-emerald-50/60 fc:border-emerald-200/80" : isInProgress ? "fc:bg-blue-50 fc:border-blue-300 fc:shadow-sm fc:ring-1 fc:ring-blue-200" : "fc:bg-white fc:border-slate-200"}`,
22115
- children: [
22116
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-1 fc:mb-1.5", children: [
22117
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
22118
- "span",
22119
- {
22120
- className: `fc:w-5 fc:h-5 fc:rounded-full fc:flex fc:items-center fc:justify-center fc:text-[10px] fc:font-extrabold fc:shrink-0 ${isCompleted ? "fc:bg-emerald-600 fc:text-white" : isInProgress ? "fc:bg-blue-600 fc:text-white" : "fc:bg-slate-200 fc:text-slate-600"}`,
22121
- children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiCheckLine, { size: 12 }) : idx + 1
22122
- }
22123
- ),
22124
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
22125
- "span",
22126
- {
22127
- className: `fc:text-[9px] fc:font-bold fc:px-1.5 fc:py-0.2 fc:rounded-full ${isCompleted ? "fc:bg-emerald-100 fc:text-emerald-700" : isInProgress ? "fc:bg-blue-100 fc:text-blue-700 fc:animate-pulse" : "fc:bg-slate-100 fc:text-slate-500"}`,
22128
- children: isCompleted ? "Completed" : isInProgress ? "Active Step" : "Pending"
22129
- }
22130
- )
22131
- ] }),
22132
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { children: [
22133
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
22134
- "h4",
22135
- {
22136
- className: "fc:text-[11px] fc:font-bold fc:text-slate-800 fc:truncate",
22137
- title: stage.title,
22138
- children: stage.title
22139
- }
22140
- ),
22141
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
22142
- "p",
22143
- {
22144
- className: "fc:text-[10px] fc:text-slate-500 fc:truncate fc:mt-0.5",
22145
- title: stage.description,
22146
- children: stage.description
22147
- }
22148
- )
22149
- ] }),
22150
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:mt-1.5 fc:pt-1.5 fc:border-t fc:border-slate-200/50 fc:flex fc:items-center fc:justify-between fc:text-[9px] fc:text-slate-400", children: [
22151
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:truncate", title: stage.officer, children: stage.officer }),
22152
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:font-medium fc:text-slate-500 fc:shrink-0", children: stage.date.split(" ")[0] })
22153
- ] })
22154
- ]
22155
- },
22156
- stage.stageId || idx
22157
- );
22158
- })
22159
- }
22160
- )
22161
- ] }),
22162
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-white fc:border fc:border-slate-200 fc:rounded-2xl fc:overflow-hidden", children: [
22163
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:border-b fc:border-slate-200 fc:bg-slate-50/60 fc:px-3 fc:pt-1.5", children: [
22164
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22165
- "button",
22166
- {
22167
- type: "button",
22168
- onClick: () => setActiveTab("timeline"),
22169
- className: `fc:flex fc:items-center fc:gap-1.5 fc:px-3.5 fc:py-2 fc:text-xs fc:font-bold fc:border-b-2 fc:transition-all ${activeTab === "timeline" ? "fc:border-blue-600 fc:text-blue-600 fc:bg-white fc:rounded-t-lg" : "fc:border-transparent fc:text-slate-600 hover:fc:text-slate-900"}`,
22170
- children: [
22171
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 14 }),
22172
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Movement History & Audit Trail" }),
22173
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:bg-slate-200 fc:text-slate-700 fc:px-1.5 fc:py-0.2 fc:rounded-full fc:text-[9px]", children: ((_b = selectedApplication.movementHistory) == null ? void 0 : _b.length) || 0 })
22174
- ]
22175
- }
22176
- ),
22177
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22178
- "button",
22179
- {
22180
- type: "button",
22181
- onClick: () => setActiveTab("details"),
22182
- className: `fc:flex fc:items-center fc:gap-1.5 fc:px-3.5 fc:py-2 fc:text-xs fc:font-bold fc:border-b-2 fc:transition-all ${activeTab === "details" ? "fc:border-blue-600 fc:text-blue-600 fc:bg-white fc:rounded-t-lg" : "fc:border-transparent fc:text-slate-600 hover:fc:text-slate-900"}`,
22183
- children: [
22184
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileListLine, { size: 14 }),
22185
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Application Full Attributes" })
22186
- ]
22187
- }
22188
- ),
22189
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22190
- "button",
22191
- {
22192
- type: "button",
22193
- onClick: () => setActiveTab("documents"),
22194
- className: `fc:flex fc:items-center fc:gap-1.5 fc:px-3.5 fc:py-2 fc:text-xs fc:font-bold fc:border-b-2 fc:transition-all ${activeTab === "documents" ? "fc:border-blue-600 fc:text-blue-600 fc:bg-white fc:rounded-t-lg" : "fc:border-transparent fc:text-slate-600 hover:fc:text-slate-900"}`,
22195
- children: [
22196
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileTextLine, { size: 14 }),
22197
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Uploaded Documents" }),
22198
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:bg-slate-200 fc:text-slate-700 fc:px-1.5 fc:py-0.2 fc:rounded-full fc:text-[9px]", children: ((_c = selectedApplication.documents) == null ? void 0 : _c.length) || 0 })
22199
- ]
21314
+ className: "fc:grid fc:gap-2 fc:items-stretch",
21315
+ style: {
21316
+ gridTemplateColumns: `repeat(${((_a = selectedApplication.stages) == null ? void 0 : _a.length) || 4}, minmax(0, 1fr))`
21317
+ },
21318
+ children: (selectedApplication.stages || []).map((stage, idx) => {
21319
+ const isCompleted = stage.status === "completed";
21320
+ const isInProgress = stage.status === "in-progress";
21321
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21322
+ "div",
21323
+ {
21324
+ className: `fc:relative fc:flex fc:flex-col fc:justify-between fc:p-2.5 fc:rounded-xl fc:border fc:transition-all ${isCompleted ? "fc:bg-emerald-50/60 fc:border-emerald-200/80" : isInProgress ? "fc:bg-blue-50 fc:border-blue-300 fc:shadow-sm fc:ring-1 fc:ring-blue-200" : "fc:bg-white fc:border-slate-200"}`,
21325
+ children: [
21326
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-1 fc:mb-1.5", children: [
21327
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21328
+ "span",
21329
+ {
21330
+ className: `fc:w-5 fc:h-5 fc:rounded-full fc:flex fc:items-center fc:justify-center fc:text-[10px] fc:font-extrabold fc:shrink-0 ${isCompleted ? "fc:bg-emerald-600 fc:text-white" : isInProgress ? "fc:bg-blue-600 fc:text-white" : "fc:bg-slate-200 fc:text-slate-600"}`,
21331
+ children: isCompleted ? /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiCheckLine, { size: 12 }) : idx + 1
21332
+ }
21333
+ ),
21334
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21335
+ "span",
21336
+ {
21337
+ className: `fc:text-[9px] fc:font-bold fc:px-1.5 fc:py-0.2 fc:rounded-full ${isCompleted ? "fc:bg-emerald-100 fc:text-emerald-700" : isInProgress ? "fc:bg-blue-100 fc:text-blue-700 fc:animate-pulse" : "fc:bg-slate-100 fc:text-slate-500"}`,
21338
+ children: isCompleted ? "Completed" : isInProgress ? "Active Step" : "Pending"
21339
+ }
21340
+ )
21341
+ ] }),
21342
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { children: [
21343
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21344
+ "h4",
21345
+ {
21346
+ className: "fc:text-[11px] fc:font-bold fc:text-slate-800 fc:truncate",
21347
+ title: stage.title,
21348
+ children: stage.title
21349
+ }
21350
+ ),
21351
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
21352
+ "p",
21353
+ {
21354
+ className: "fc:text-[10px] fc:text-slate-500 fc:truncate fc:mt-0.5",
21355
+ title: stage.description,
21356
+ children: stage.description
21357
+ }
21358
+ )
21359
+ ] }),
21360
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:mt-1.5 fc:pt-1.5 fc:border-t fc:border-slate-200/50 fc:flex fc:items-center fc:justify-between fc:text-[9px] fc:text-slate-400", children: [
21361
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:truncate", title: stage.officer, children: stage.officer }),
21362
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:font-medium fc:text-slate-500 fc:shrink-0", children: stage.date.split(" ")[0] })
21363
+ ] })
21364
+ ]
21365
+ },
21366
+ stage.stageId || idx
21367
+ );
21368
+ })
22200
21369
  }
22201
21370
  )
22202
21371
  ] }),
22203
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:p-4", children: [
22204
- activeTab === "timeline" && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:space-y-3", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:relative fc:pl-5 fc:space-y-4 before:fc:absolute before:fc:left-2 before:fc:top-2 before:fc:bottom-2 before:fc:w-0.5 before:fc:bg-slate-200", children: (selectedApplication.movementHistory || []).map((move, idx) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:relative fc:space-y-1", children: [
22205
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:absolute fc:-left-[17px] fc:top-1 fc:w-2.5 fc:h-2.5 fc:rounded-full fc:bg-blue-600 fc:ring-4 fc:ring-blue-100" }),
22206
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-2 fc:flex-wrap", children: [
22207
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2", children: [
22208
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-bold fc:text-slate-800", children: move.action }),
22209
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-[11px] fc:text-slate-500", children: [
22210
- "(",
22211
- move.fromStep,
22212
- " \u2192 ",
22213
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-blue-600", children: move.toStep }),
21372
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-white fc:border fc:border-slate-200 fc:rounded-2xl fc:overflow-hidden", children: [
21373
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:border-b fc:border-slate-200 fc:bg-slate-50/60 fc:px-3 fc:pt-1.5", children: [
21374
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21375
+ "button",
21376
+ {
21377
+ type: "button",
21378
+ onClick: () => setActiveTab("timeline"),
21379
+ className: `fc:flex fc:items-center fc:gap-1.5 fc:px-3.5 fc:py-2 fc:text-xs fc:font-bold fc:border-b-2 fc:transition-all ${activeTab === "timeline" ? "fc:border-blue-600 fc:text-blue-600 fc:bg-white fc:rounded-t-lg" : "fc:border-transparent fc:text-slate-600 hover:fc:text-slate-900"}`,
21380
+ children: [
21381
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 14 }),
21382
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Movement History & Audit Trail" }),
21383
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:bg-slate-200 fc:text-slate-700 fc:px-1.5 fc:py-0.2 fc:rounded-full fc:text-[9px]", children: ((_b = selectedApplication.movementHistory) == null ? void 0 : _b.length) || 0 })
21384
+ ]
21385
+ }
21386
+ ),
21387
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21388
+ "button",
21389
+ {
21390
+ type: "button",
21391
+ onClick: () => setActiveTab("details"),
21392
+ className: `fc:flex fc:items-center fc:gap-1.5 fc:px-3.5 fc:py-2 fc:text-xs fc:font-bold fc:border-b-2 fc:transition-all ${activeTab === "details" ? "fc:border-blue-600 fc:text-blue-600 fc:bg-white fc:rounded-t-lg" : "fc:border-transparent fc:text-slate-600 hover:fc:text-slate-900"}`,
21393
+ children: [
21394
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileListLine, { size: 14 }),
21395
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Application Full Attributes" })
21396
+ ]
21397
+ }
21398
+ ),
21399
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21400
+ "button",
21401
+ {
21402
+ type: "button",
21403
+ onClick: () => setActiveTab("documents"),
21404
+ className: `fc:flex fc:items-center fc:gap-1.5 fc:px-3.5 fc:py-2 fc:text-xs fc:font-bold fc:border-b-2 fc:transition-all ${activeTab === "documents" ? "fc:border-blue-600 fc:text-blue-600 fc:bg-white fc:rounded-t-lg" : "fc:border-transparent fc:text-slate-600 hover:fc:text-slate-900"}`,
21405
+ children: [
21406
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiFileTextLine, { size: 14 }),
21407
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { children: "Uploaded Documents" }),
21408
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:bg-slate-200 fc:text-slate-700 fc:px-1.5 fc:py-0.2 fc:rounded-full fc:text-[9px]", children: ((_c = selectedApplication.documents) == null ? void 0 : _c.length) || 0 })
21409
+ ]
21410
+ }
21411
+ )
21412
+ ] }),
21413
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:p-4", children: [
21414
+ activeTab === "timeline" && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:space-y-3", children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:relative fc:pl-5 fc:space-y-4 before:fc:absolute before:fc:left-2 before:fc:top-2 before:fc:bottom-2 before:fc:w-0.5 before:fc:bg-slate-200", children: (selectedApplication.movementHistory || []).map((move, idx) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:relative fc:space-y-1", children: [
21415
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:absolute fc:-left-[17px] fc:top-1 fc:w-2.5 fc:h-2.5 fc:rounded-full fc:bg-blue-600 fc:ring-4 fc:ring-blue-100" }),
21416
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:justify-between fc:gap-2 fc:flex-wrap", children: [
21417
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2", children: [
21418
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-bold fc:text-slate-800", children: move.action }),
21419
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-[11px] fc:text-slate-500", children: [
21420
+ "(",
21421
+ move.fromStep,
21422
+ " \u2192 ",
21423
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { className: "fc:text-blue-600", children: move.toStep }),
21424
+ ")"
21425
+ ] })
21426
+ ] }),
21427
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400", children: move.timestamp })
21428
+ ] }),
21429
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: "fc:text-xs fc:text-slate-600 fc:bg-slate-50 fc:p-2 fc:rounded-xl fc:border fc:border-slate-100", children: [
21430
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: "Remarks:" }),
21431
+ " ",
21432
+ move.remarks
21433
+ ] }),
21434
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-[10px] fc:text-slate-400", children: [
21435
+ "Action Officer: ",
21436
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: move.officer })
21437
+ ] })
21438
+ ] }, move.id || idx)) }) }),
21439
+ activeTab === "details" && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:grid fc:grid-cols-1 md:fc:grid-cols-3 fc:gap-3 fc:text-xs", children: [
21440
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21441
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Application / File Number" }),
21442
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-bold fc:text-blue-600 fc:mt-0.5 fc:block", children: selectedApplication.fileNumber })
21443
+ ] }),
21444
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21445
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Workflow Name" }),
21446
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.workflowName })
21447
+ ] }),
21448
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21449
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Department / Ministry" }),
21450
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.department })
21451
+ ] }),
21452
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21453
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Applicant / Originator Entity" }),
21454
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.applicant })
21455
+ ] }),
21456
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21457
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Proposal Category" }),
21458
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.category })
21459
+ ] }),
21460
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21461
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Financial Year" }),
21462
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.financialYear })
21463
+ ] }),
21464
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21465
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Received Timestamp" }),
21466
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.receivedDate })
21467
+ ] }),
21468
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21469
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Target SLA Due Date" }),
21470
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:font-bold fc:text-red-600 fc:mt-0.5 fc:block", children: [
21471
+ selectedApplication.dueDate,
21472
+ " (",
21473
+ selectedApplication.slaStatus,
22214
21474
  ")"
22215
21475
  ] })
22216
21476
  ] }),
22217
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400", children: move.timestamp })
22218
- ] }),
22219
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("p", { className: "fc:text-xs fc:text-slate-600 fc:bg-slate-50 fc:p-2 fc:rounded-xl fc:border fc:border-slate-100", children: [
22220
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: "Remarks:" }),
22221
- " ",
22222
- move.remarks
22223
- ] }),
22224
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-[10px] fc:text-slate-400", children: [
22225
- "Action Officer: ",
22226
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("strong", { children: move.officer })
22227
- ] })
22228
- ] }, move.id || idx)) }) }),
22229
- activeTab === "details" && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:grid fc:grid-cols-1 md:fc:grid-cols-3 fc:gap-3 fc:text-xs", children: [
22230
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22231
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Application / File Number" }),
22232
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-bold fc:text-blue-600 fc:mt-0.5 fc:block", children: selectedApplication.fileNumber })
22233
- ] }),
22234
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22235
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Workflow Name" }),
22236
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.workflowName })
22237
- ] }),
22238
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22239
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Department / Ministry" }),
22240
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.department })
22241
- ] }),
22242
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22243
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Applicant / Originator Entity" }),
22244
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.applicant })
22245
- ] }),
22246
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22247
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Proposal Category" }),
22248
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.category })
22249
- ] }),
22250
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22251
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Financial Year" }),
22252
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.financialYear })
22253
- ] }),
22254
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22255
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Received Timestamp" }),
22256
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-xs fc:font-semibold fc:text-slate-800 fc:mt-0.5 fc:block", children: selectedApplication.receivedDate })
22257
- ] }),
22258
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22259
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Target SLA Due Date" }),
22260
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:font-bold fc:text-red-600 fc:mt-0.5 fc:block", children: [
22261
- selectedApplication.dueDate,
22262
- " (",
22263
- selectedApplication.slaStatus,
22264
- ")"
21477
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
21478
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Current Active Desk" }),
21479
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:font-bold fc:text-indigo-600 fc:mt-0.5 fc:block", children: [
21480
+ selectedApplication.assignedTo,
21481
+ " (",
21482
+ selectedApplication.currentStep,
21483
+ ")"
21484
+ ] })
22265
21485
  ] })
22266
21486
  ] }),
22267
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:bg-slate-50 fc:p-3 fc:rounded-xl fc:border fc:border-slate-100", children: [
22268
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:text-slate-400 fc:uppercase fc:block", children: "Current Active Desk" }),
22269
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-xs fc:font-bold fc:text-indigo-600 fc:mt-0.5 fc:block", children: [
22270
- selectedApplication.assignedTo,
22271
- " (",
22272
- selectedApplication.currentStep,
22273
- ")"
22274
- ] })
22275
- ] })
22276
- ] }),
22277
- activeTab === "documents" && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:grid fc:grid-cols-1 md:fc:grid-cols-2 fc:gap-3", children: (selectedApplication.documents || []).map((doc, i) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
22278
- "div",
22279
- {
22280
- className: "fc:flex fc:items-center fc:justify-between fc:p-2.5 fc:rounded-xl fc:border fc:border-slate-200 fc:bg-slate-50/50 hover:fc:bg-slate-50 fc:transition-all",
22281
- children: [
22282
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2.5", children: [
22283
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-7 fc:h-7 fc:rounded-lg fc:bg-red-50 fc:text-red-600 fc:flex fc:items-center fc:justify-center fc:font-bold fc:text-[10px]", children: doc.type }),
22284
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { children: [
22285
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h5", { className: "fc:text-xs fc:font-bold fc:text-slate-800", children: doc.name }),
22286
- /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-[10px] fc:text-slate-400", children: [
22287
- "Size: ",
22288
- doc.size
21487
+ activeTab === "documents" && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:grid fc:grid-cols-1 md:fc:grid-cols-2 fc:gap-3", children: (selectedApplication.documents || []).map((doc, i) => /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
21488
+ "div",
21489
+ {
21490
+ className: "fc:flex fc:items-center fc:justify-between fc:p-2.5 fc:rounded-xl fc:border fc:border-slate-200 fc:bg-slate-50/50 hover:fc:bg-slate-50 fc:transition-all",
21491
+ children: [
21492
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:items-center fc:gap-2.5", children: [
21493
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("div", { className: "fc:w-7 fc:h-7 fc:rounded-lg fc:bg-red-50 fc:text-red-600 fc:flex fc:items-center fc:justify-center fc:font-bold fc:text-[10px]", children: doc.type }),
21494
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { children: [
21495
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h5", { className: "fc:text-xs fc:font-bold fc:text-slate-800", children: doc.name }),
21496
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("span", { className: "fc:text-[10px] fc:text-slate-400", children: [
21497
+ "Size: ",
21498
+ doc.size
21499
+ ] })
22289
21500
  ] })
22290
- ] })
22291
- ] }),
22292
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:px-2 fc:py-0.5 fc:rounded-full fc:bg-emerald-50 fc:text-emerald-700 fc:border fc:border-emerald-200", children: doc.status })
22293
- ]
22294
- },
22295
- i
22296
- )) })
21501
+ ] }),
21502
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("span", { className: "fc:text-[10px] fc:font-bold fc:px-2 fc:py-0.5 fc:rounded-full fc:bg-emerald-50 fc:text-emerald-700 fc:border fc:border-emerald-200", children: doc.status })
21503
+ ]
21504
+ },
21505
+ i
21506
+ )) })
21507
+ ] })
22297
21508
  ] })
21509
+ ] }),
21510
+ !selectedApplication && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)("div", { className: "fc:flex fc:min-h-72 fc:flex-col fc:items-center fc:justify-center fc:gap-2 fc:text-center", children: [
21511
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_react105.RiRouteLine, { size: 28, className: "fc:text-slate-300" }),
21512
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("h2", { className: "fc:text-sm fc:font-bold fc:text-slate-700", children: "No tracking data available" }),
21513
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)("p", { className: "fc:max-w-md fc:text-xs fc:text-slate-500", children: "Configure the application tracking endpoint to load real application status and movement details." })
22298
21514
  ] })
22299
- ] }) })
21515
+ ] })
22300
21516
  ) : (
22301
21517
  /* ========================================================
22302
21518
  VIEW 2: APPLICATIONS REGISTRY TABLE (MATCHING INBOX TABLE)