@paro.io/expert-shared-components 1.13.5 → 1.13.7

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.
@@ -13,12 +13,7 @@ const AccountSuspensionBanner = ({ setShowSuspensionModal, suspended = false })
13
13
  react_1.default.createElement(base_icons_1.IconExclamation, { className: "h-6 w-6 text-white" })),
14
14
  react_1.default.createElement("div", { className: "flex-1" },
15
15
  react_1.default.createElement("h3", { className: "text-lg font-bold text-white" }, "\uD83D\uDEAB Account Suspended"),
16
- react_1.default.createElement("p", { className: "text-red-100 text-sm mt-1" }, "Your account has been suspended due to an escalation. You must complete comprehensive training to regain access to new opportunities."),
17
- react_1.default.createElement("div", { className: "mt-3 bg-white bg-opacity-10 rounded p-3" },
18
- react_1.default.createElement("div", { className: "flex items-center justify-between text-sm" },
19
- react_1.default.createElement("div", null,
20
- react_1.default.createElement("span", { className: "text-red-100" }, "Suspension: "),
21
- react_1.default.createElement("span", { className: "text-white font-medium" }, "30 days (Medium Severity)"))))))
16
+ react_1.default.createElement("p", { className: "text-red-100 text-sm mt-1" }, "Your account has been suspended due to an escalation. You must complete comprehensive training to regain access to new opportunities.")))
22
17
  :
23
18
  react_1.default.createElement("div", { className: "flex items-center justify-between" },
24
19
  react_1.default.createElement("div", { className: "flex items-center" },
@@ -26,9 +21,7 @@ const AccountSuspensionBanner = ({ setShowSuspensionModal, suspended = false })
26
21
  react_1.default.createElement(base_icons_1.IconExclamation, { className: "h-6 w-6 text-white" })),
27
22
  react_1.default.createElement("div", null,
28
23
  react_1.default.createElement("h3", { className: "text-lg font-bold text-white" }, "Account Suspension Risk"),
29
- react_1.default.createElement("p", { className: "text-red-100 text-sm mt-1" }, "Unresolved escalations can lead to automatic suspension. Response times matter for client satisfaction."),
30
- react_1.default.createElement("div", { className: "flex items-center mt-2 text-red-100 text-xs" },
31
- react_1.default.createElement("span", null, "3 warnings: Medium=30d \u2022 2 warnings: High=60d \u2022 1 offense: Critical=Permanent")))),
24
+ react_1.default.createElement("p", { className: "text-red-100 text-sm mt-1" }, "Unresolved escalations can lead to automatic suspension. Response times matter for client satisfaction."))),
32
25
  react_1.default.createElement(base_ui_1.Button, { label: "view details", onClick: () => setShowSuspensionModal(true), iconLeft: react_1.default.createElement(base_icons_1.IconInfoCircle, { size: "sm" }), color: "danger", className: "bg-white hover:bg-danger text-danger-dark hover:text-white" }))));
33
26
  };
34
27
  exports.default = AccountSuspensionBanner;
@@ -20,7 +20,7 @@ const AccountSuspensionModal = ({ showSuspensionModal, onClose }) => {
20
20
  react_1.default.createElement(base_icons_1.IconBriefcase, { className: "h-5 w-5 text-red-500 mt-0.5 mr-2 flex-shrink-0" }),
21
21
  react_1.default.createElement("div", null,
22
22
  react_1.default.createElement("p", { className: "font-medium text-red-800" }, "Critical Information"),
23
- react_1.default.createElement("p", { className: "text-sm text-red-700 mt-1" }, "Escalations require timely attention to maintain client relationships and project success. Multiple unresolved issues may result in account warnings and potential suspension."))))),
23
+ react_1.default.createElement("p", { className: "text-sm text-red-700 mt-1" }, "Engagment support issues require timely attention to maintain client relationships and project success. Multiple unresolved issues may result in account warnings and potential suspension."))))),
24
24
  react_1.default.createElement("div", { className: "space-y-6" },
25
25
  react_1.default.createElement("div", { className: "relative" },
26
26
  react_1.default.createElement("div", { className: "absolute left-4 top-8 bottom-0 w-0.5 bg-gray-200" }),
@@ -82,7 +82,7 @@ const EscalationChat = ({ activeChatIssue, showEscalationChat, onClose, user, cr
82
82
  clientName: (_d = (_c = activeChatIssue === null || activeChatIssue === void 0 ? void 0 : activeChatIssue.client) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : '',
83
83
  email: isExpert ? (_g = (_f = (_e = activeChatIssue === null || activeChatIssue === void 0 ? void 0 : activeChatIssue.client) === null || _e === void 0 ? void 0 : _e.primaryContact) === null || _f === void 0 ? void 0 : _f.email) !== null && _g !== void 0 ? _g : '' : (_j = (_h = activeChatIssue === null || activeChatIssue === void 0 ? void 0 : activeChatIssue.freelancer) === null || _h === void 0 ? void 0 : _h.email) !== null && _j !== void 0 ? _j : '',
84
84
  freelancerId: (_l = (_k = activeChatIssue === null || activeChatIssue === void 0 ? void 0 : activeChatIssue.freelancer) === null || _k === void 0 ? void 0 : _k.id) !== null && _l !== void 0 ? _l : 0,
85
- freelancerName: (_o = (_m = activeChatIssue === null || activeChatIssue === void 0 ? void 0 : activeChatIssue.freelancer) === null || _m === void 0 ? void 0 : _m.firstName) !== null && _o !== void 0 ? _o : '',
85
+ freelancerName: (_o = (_m = activeChatIssue === null || activeChatIssue === void 0 ? void 0 : activeChatIssue.freelancer) === null || _m === void 0 ? void 0 : _m.name) !== null && _o !== void 0 ? _o : '',
86
86
  projectName: activeChatIssue.projectDetails.length > 0 ? activeChatIssue.projectDetails[0].projectName : '',
87
87
  }
88
88
  });
@@ -117,7 +117,7 @@ const EscalationChat = ({ activeChatIssue, showEscalationChat, onClose, user, cr
117
117
  react_1.default.createElement("div", { className: "flex flex-col items-start" },
118
118
  react_1.default.createElement("div", { className: "flex flex-row items-center" },
119
119
  react_1.default.createElement("h1", { className: "text-md font-bold mr-2" },
120
- "Escalation Chat #",
120
+ "Engagement Support #",
121
121
  activeChatIssue.escalationNumber),
122
122
  react_1.default.createElement(EscalationIssueCard_1.CustomTag, { label: activeChatIssue.status === "InProgress" ? "In Progress" : activeChatIssue.status, customColor: isExpert ? 'bg-neutral border-neutral' : 'bg-[#B0B5D3] border-[#181027]' })),
123
123
  react_1.default.createElement("p", { className: "text-xs" },
@@ -94,7 +94,7 @@ const EscalationIssueCard = ({ issues, isExpert, openEscalationChat, showRespond
94
94
  return react_1.default.createElement("div", null, "No issues.");
95
95
  return (react_1.default.createElement("div", { className: "space-y-4" },
96
96
  issues.map((issue) => {
97
- var _a, _b, _c, _d, _e;
97
+ var _a, _b, _c, _d, _e, _f, _g;
98
98
  const project = issue.projectDetails && Array.isArray(issue.projectDetails) && issue.projectDetails.length > 0
99
99
  ? `${(_a = issue.projectDetails[0]) === null || _a === void 0 ? void 0 : _a.projectName}${issue.projectDetails.length > 1 ? ` +${issue.projectDetails.length - 1} more` : ''} `
100
100
  : '';
@@ -107,7 +107,7 @@ const EscalationIssueCard = ({ issues, isExpert, openEscalationChat, showRespond
107
107
  react_1.default.createElement("div", { className: "font-bold" }, issue.problem),
108
108
  react_1.default.createElement(exports.CustomTag, { label: issue.severityLevel })),
109
109
  react_1.default.createElement("div", { className: "text-xs text-gray-500 font-bold" },
110
- isExpert ? (_b = issue === null || issue === void 0 ? void 0 : issue.client) === null || _b === void 0 ? void 0 : _b.name : (_c = issue === null || issue === void 0 ? void 0 : issue.freelancer) === null || _c === void 0 ? void 0 : _c.firstName,
110
+ isExpert ? (_c = (_b = issue === null || issue === void 0 ? void 0 : issue.client) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : "Client" : (_e = (_d = issue === null || issue === void 0 ? void 0 : issue.freelancer) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : 'Expert',
111
111
  " \u2022 ",
112
112
  project,
113
113
  " \u2022 Case #",
@@ -117,7 +117,7 @@ const EscalationIssueCard = ({ issues, isExpert, openEscalationChat, showRespond
117
117
  react_1.default.createElement("div", { className: "flex items-center justify-between mb-2" },
118
118
  react_1.default.createElement("div", { className: "text-sm text-gray-500" },
119
119
  "Submitted by: ",
120
- react_1.default.createElement("span", { className: "font-bold" }, ((_d = issue === null || issue === void 0 ? void 0 : issue.submittedByUser) === null || _d === void 0 ? void 0 : _d.firstName) + " " + ((_e = issue === null || issue === void 0 ? void 0 : issue.submittedByUser) === null || _e === void 0 ? void 0 : _e.lastName)),
120
+ react_1.default.createElement("span", { className: "font-bold" }, ((_f = issue === null || issue === void 0 ? void 0 : issue.submittedByUser) === null || _f === void 0 ? void 0 : _f.firstName) + " " + ((_g = issue === null || issue === void 0 ? void 0 : issue.submittedByUser) === null || _g === void 0 ? void 0 : _g.lastName)),
121
121
  (issue === null || issue === void 0 ? void 0 : issue.createdAt) && react_1.default.createElement(react_1.default.Fragment, null,
122
122
  " \u2022 Submitted on: ",
123
123
  react_1.default.createElement("span", { className: "font-bold" }, (0, dayjs_1.default)(issue === null || issue === void 0 ? void 0 : issue.createdAt).format("MM-DD-YYYY"))))),
@@ -135,6 +135,6 @@ const EscalationIssueCard = ({ issues, isExpert, openEscalationChat, showRespond
135
135
  react_1.default.createElement(base_ui_1.Button, { onClick: () => { setMarkAsResolved(issue); }, label: "Mark as Resolved", color: "primary" })))));
136
136
  }),
137
137
  !!viewResponseModal && react_1.default.createElement(ViewResponseModal_1.default, { selectedIssue: viewResponseModal, isExpert: isExpert, open: !!viewResponseModal, onClose: () => setViewResponseModal(null) }),
138
- !!markAsResolved && react_1.default.createElement(MarkResolvedModal_1.default, { escalationId: markAsResolved.escalationId, expertName: (_b = (_a = markAsResolved === null || markAsResolved === void 0 ? void 0 : markAsResolved.freelancer) === null || _a === void 0 ? void 0 : _a.firstName) !== null && _b !== void 0 ? _b : 'Expert', open: !!markAsResolved, onClose: () => setMarkAsResolved(false), updateProjectEscalation: updateProjectEscalation, userId: userId })));
138
+ !!markAsResolved && react_1.default.createElement(MarkResolvedModal_1.default, { escalationId: markAsResolved.escalationId, expertName: (_b = (_a = markAsResolved === null || markAsResolved === void 0 ? void 0 : markAsResolved.freelancer) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'Expert', open: !!markAsResolved, onClose: () => setMarkAsResolved(false), updateProjectEscalation: updateProjectEscalation, userId: userId })));
139
139
  };
140
140
  exports.default = EscalationIssueCard;
@@ -118,7 +118,7 @@ const EscalationRespondForm = ({ goBack, selectedIssue, documentUploadUrl, downl
118
118
  clientName: (_e = (_d = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.client) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : '',
119
119
  email: isExpert ? (_h = (_g = (_f = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.client) === null || _f === void 0 ? void 0 : _f.primaryContact) === null || _g === void 0 ? void 0 : _g.email) !== null && _h !== void 0 ? _h : '' : (_k = (_j = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.freelancer) === null || _j === void 0 ? void 0 : _j.email) !== null && _k !== void 0 ? _k : '',
120
120
  freelancerId: (_l = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.freelancer) === null || _l === void 0 ? void 0 : _l.id,
121
- freelancerName: (_o = (_m = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.freelancer) === null || _m === void 0 ? void 0 : _m.firstName) !== null && _o !== void 0 ? _o : '',
121
+ freelancerName: (_o = (_m = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.freelancer) === null || _m === void 0 ? void 0 : _m.name) !== null && _o !== void 0 ? _o : '',
122
122
  projectName: (_q = (_p = selectedIssue === null || selectedIssue === void 0 ? void 0 : selectedIssue.projectDetails) === null || _p === void 0 ? void 0 : _p[0]) === null || _q === void 0 ? void 0 : _q.projectName,
123
123
  }
124
124
  });
@@ -193,7 +193,7 @@ const EscalationSubmitForm = ({ goBack, goHome, expertsOrClients, projects, docu
193
193
  input: formData
194
194
  }
195
195
  });
196
- (0, utils_1.showToast)("success", "Issue created successfully!");
196
+ (0, utils_1.showToast)("success", "Issue created successfully. You can find it under the `In Progress` section");
197
197
  }
198
198
  catch (error) {
199
199
  console.error("Failed to create an issue!", error);
@@ -76,7 +76,9 @@ const EscalationTabsContent = ({ activeTab, openEscalationChat, setSelectedIssue
76
76
  react_1.default.createElement("span", { className: "mx-2" }, "\u2022"),
77
77
  react_1.default.createElement("span", { className: "text-xs text-gray-500" },
78
78
  "Resolved By ",
79
- issue.statusChangedByUser.firstName + " " + issue.statusChangedByUser.lastName)))),
79
+ issue.statusChangedByUser.firstName + " " + issue.statusChangedByUser.lastName,
80
+ " ",
81
+ issue.statusChangedByUser.userTypeId === 2 && '(Paro)')))),
80
82
  issue.status === 'Resolved' && (0, dayjs_1.default)().diff((0, dayjs_1.default)(issue.updatedAt), 'day') <= 30 &&
81
83
  react_1.default.createElement(base_ui_1.Button, { onClick: () => openEscalationChat(issue.escalationNumber), label: "Chat", color: "primary" }))));
82
84
  }))
@@ -88,7 +88,7 @@ const Escalations = ({ expertsOrClients, projects, isExpert = false, escalations
88
88
  react_1.default.createElement("div", { className: isExpert ? "p-6" : "mx-auto p-6 border-solid border-t-2" },
89
89
  activeSection === 'support' && selectedIssueId === null && react_1.default.createElement("div", null,
90
90
  react_1.default.createElement("div", { className: "flex justify-between items-center mb-1 mt-2" },
91
- react_1.default.createElement("h2", { className: "text-xl font-bold" }, "Support & Engagement Management"),
91
+ react_1.default.createElement("h2", { className: "text-xl font-bold" }, "Engagement Management"),
92
92
  activeIssues.length > 0 ? react_1.default.createElement("div", { className: "flex items-center space-x-2" },
93
93
  react_1.default.createElement("div", { className: `border box-border text-center px-4 pb-0.5 pt-1 text-sm inline-block break-words text-[#A73A43] rounded-full bg-[#F9BABF] border-[#F9BABF] font-medium` },
94
94
  activeIssues.length,
@@ -112,7 +112,7 @@ const Escalations = ({ expertsOrClients, projects, isExpert = false, escalations
112
112
  react_1.default.createElement("span", null,
113
113
  react_1.default.createElement("strong", null, "Step 2:"),
114
114
  " ",
115
- `${isExpert ? 'Client' : 'Expert'} response with solution/timeline`)),
115
+ `${isExpert ? 'Client response provided' : 'Expert response provided'}`)),
116
116
  react_1.default.createElement("div", { className: "flex items-center" },
117
117
  react_1.default.createElement("div", { className: "bg-blue-500 w-2 h-2 rounded-full mr-2" }),
118
118
  react_1.default.createElement("span", null,
@@ -121,22 +121,22 @@ const Escalations = ({ expertsOrClients, projects, isExpert = false, escalations
121
121
  react_1.default.createElement("div", { className: "mt-3 text-xs text-gray-600 bg-white p-2 rounded border" },
122
122
  react_1.default.createElement("strong", null, "Chat integration:"),
123
123
  " ",
124
- `All escalations include real-time chat with ${isExpert ? 'client' : 'expert'} and support team for transparent communication.`)),
124
+ `All issues include asynchronous messaging with your ${isExpert ? 'client' : 'expert'} and the support team for transparent communication`)),
125
125
  react_1.default.createElement("div", null,
126
- react_1.default.createElement("h4", { className: "font-medium text-gray-900 mb-2" }, "Priority Levels & Response Times"),
126
+ react_1.default.createElement("h4", { className: "font-medium text-gray-900 mb-2" }, "Priority Levels for Issues"),
127
127
  react_1.default.createElement("div", { className: "space-y-2 text-sm" },
128
128
  react_1.default.createElement("div", { className: "flex items-center gap-x-2" },
129
129
  react_1.default.createElement(EscalationIssueCard_1.CustomTag, { label: "Critical" }),
130
- react_1.default.createElement("span", null, "All work blocked")),
130
+ react_1.default.createElement("span", null, "All deliverables are currently blocked; the project cannot move forward.")),
131
131
  react_1.default.createElement("div", { className: "flex items-center gap-x-2" },
132
132
  react_1.default.createElement(EscalationIssueCard_1.CustomTag, { label: "High" }),
133
- react_1.default.createElement("span", null, "Progress blocked")),
133
+ react_1.default.createElement("span", null, "Key deliverables are blocked, preventing meaningful progress.")),
134
134
  react_1.default.createElement("div", { className: "flex items-center gap-x-2" },
135
135
  react_1.default.createElement(EscalationIssueCard_1.CustomTag, { label: "Medium" }),
136
- react_1.default.createElement("span", null, "Timeline impacted")),
136
+ react_1.default.createElement("span", null, "Deliverables are still in progress, but timelines are at risk.")),
137
137
  react_1.default.createElement("div", { className: "flex items-center gap-x-2" },
138
138
  react_1.default.createElement(EscalationIssueCard_1.CustomTag, { label: "Low" }),
139
- react_1.default.createElement("span", null, "Minor issues")))))),
139
+ react_1.default.createElement("span", null, "Minor issue or inconvenience that does not affect overall project flow.")))))),
140
140
  isExpert &&
141
141
  react_1.default.createElement("div", { className: "rounded-lg p-2 mb-4 shadow-lg" },
142
142
  react_1.default.createElement("div", { className: "flex items-center justify-between" },
@@ -53,7 +53,7 @@ const MarkResolvedModal = ({ escalationId, expertName, open, onClose, updateProj
53
53
  }
54
54
  }
55
55
  });
56
- (0, utils_1.showToast)("success", "Issue marked as resolved!");
56
+ (0, utils_1.showToast)("success", "Issue marked as resolved. You can now find it in the `Resolved` section");
57
57
  }
58
58
  catch (error) {
59
59
  console.error("Failed to update escalation!", error);
@@ -11,7 +11,9 @@ const EscalationIssueCard_1 = require("./EscalationIssueCard");
11
11
  const ViewResponseModal = ({ selectedIssue, open, onClose, isExpert }) => {
12
12
  const docs = [selectedIssue.expertSupportingDocuments, selectedIssue.clientSupportingDocuments, selectedIssue.internalSupportingDocuments];
13
13
  const processedDocs = (0, utils_1.processDocs)(docs);
14
- return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: onClose, maxWidth: 'sm' },
14
+ return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: onClose, maxWidth: 'md', PaperProps: {
15
+ style: { minWidth: '40%' }
16
+ } },
15
17
  react_1.default.createElement(core_1.DialogTitle, null,
16
18
  react_1.default.createElement("div", { className: "text-black mb-1 p-2 pl-4 absolute top-0 left-0 w-full flex flex-row justify-between items-center z-50" },
17
19
  react_1.default.createElement("div", { className: "flex flex-col items-start" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paro.io/expert-shared-components",
3
- "version": "1.13.5",
3
+ "version": "1.13.7",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {