@paro.io/expert-shared-components 1.14.1 → 1.14.2
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/LICENSE +21 -21
- package/README.md +2 -2
- package/lib/components/ClientReferencesSection/DeleteButton.js +11 -11
- package/lib/components/ClientReferencesSection/ParoError.js +10 -10
- package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
- package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
- package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
- package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
- package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
- package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
- package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
- package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
- package/lib/components/DiscussionThread/chat.d.ts +22 -22
- package/lib/components/DiscussionThread/chat.js +106 -106
- package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
- package/lib/components/DocumentCenter/DocumentTable.js +350 -350
- package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -6
- package/lib/components/DocumentCenter/UploadFilesButton.js +29 -29
- package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
- package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
- package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
- package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
- package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
- package/lib/components/EarningsTracker/EarningsTracker.js +508 -508
- package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
- package/lib/components/EarningsTracker/EditDateModal.js +149 -149
- package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
- package/lib/components/EarningsTracker/EmailModal.js +79 -79
- package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
- package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
- package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
- package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
- package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
- package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
- package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
- package/lib/components/EarningsTracker/ProgressBar.js +66 -66
- package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
- package/lib/components/EarningsTracker/ReviewRequestModal.js +135 -135
- package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
- package/lib/components/EarningsTracker/RightCardUI.js +231 -231
- package/lib/components/EarningsTracker/index.d.ts +1 -1
- package/lib/components/EarningsTracker/index.js +5 -5
- package/lib/components/Escalations/CustomTag.d.ts +3 -3
- package/lib/components/Escalations/CustomTag.js +25 -25
- package/lib/components/Escalations/ViewReponseModal.d.ts +8 -8
- package/lib/components/Escalations/ViewReponseModal.js +27 -27
- package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
- package/lib/components/ExpertProfileHeader/NetworkSection.js +1 -1
- package/lib/components/ExpertProfileHeader/ProfileSection.js +7 -7
- package/lib/components/Invoices/TestDecisionSection.d.ts +1 -1
- package/lib/components/Invoices/TestDecisionSection.js +126 -126
- package/lib/components/OrganizationChart/OrganizationChart.d.ts +15 -15
- package/lib/components/OrganizationChart/OrganizationChart.js +312 -312
- package/lib/components/OrganizationChart/PersonCard.js +5 -5
- package/lib/components/OrganizationChart/utils.js +79 -79
- package/lib/components/ProjectCard/ProgressBar.js +4 -4
- package/lib/components/ProjectCard/ReviewRequestModal.js +5 -5
- package/lib/components/ProjectIntelligence/EngagementHeader/index.js +1 -1
- package/lib/components/ProjectIntelligence/FocusAreas/index.js +3 -3
- package/lib/components/ProjectIntelligence/KeyMetrics/index.js +4 -4
- package/lib/components/ProjectIntelligence/MissingInformation/index.d.ts +1 -0
- package/lib/components/ProjectIntelligence/MissingInformation/index.js +8 -8
- package/lib/components/ProjectIntelligence/ProgressTracker/index.js +1 -1
- package/lib/components/ProjectIntelligence/ProjectHealth/index.js +2 -2
- package/lib/components/ProjectIntelligence/TeamSection/index.js +3 -3
- package/lib/components/ProjectIntelligence/index.d.ts +1 -0
- package/lib/components/ProjectIntelligence/index.js +3 -3
- package/lib/components/Reviews/Pagination.js +6 -6
- package/lib/components/ReviewsTab/RatingHeader.js +6 -6
- package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
- package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
- package/lib/components/shared/Image.js +13 -13
- package/lib/components/shared/ProfileTextField.d.ts +18 -18
- package/lib/components/shared/ProfileTextField.js +16 -16
- package/lib/components/shared/StyledActionButtons.d.ts +7 -7
- package/lib/components/shared/StyledActionButtons.js +15 -15
- package/lib/components/shared/ToastNotification.d.ts +10 -10
- package/lib/components/shared/ToastNotification.js +63 -63
- package/package.json +67 -67
|
@@ -7,11 +7,11 @@ const react_1 = __importDefault(require("react"));
|
|
|
7
7
|
const PersonCard = ({ name, position, experience, location, initial, noOfchildren, }) => (react_1.default.createElement("div", { className: "relative group" },
|
|
8
8
|
react_1.default.createElement("div", { className: "flex flex-col items-center" },
|
|
9
9
|
react_1.default.createElement("div", { className: "flex flex-col items-center mb-2" },
|
|
10
|
-
react_1.default.createElement("div", { className: `
|
|
11
|
-
-mb-4 z-10 w-12 h-12 rounded-full bg-[#434889] flex items-center justify-center
|
|
12
|
-
text-white font-semibold text-lg
|
|
13
|
-
transition-all duration-200 hover:bg-[#102377]
|
|
14
|
-
${noOfchildren > 0 ? 'hover:shadow-lg' : ''}
|
|
10
|
+
react_1.default.createElement("div", { className: `
|
|
11
|
+
-mb-4 z-10 w-12 h-12 rounded-full bg-[#434889] flex items-center justify-center
|
|
12
|
+
text-white font-semibold text-lg
|
|
13
|
+
transition-all duration-200 hover:bg-[#102377]
|
|
14
|
+
${noOfchildren > 0 ? 'hover:shadow-lg' : ''}
|
|
15
15
|
` },
|
|
16
16
|
initial,
|
|
17
17
|
noOfchildren > 0 && (react_1.default.createElement("div", { className: "absolute -bottom-3 w-6 h-6 rounded bg-gray-400 flex items-center justify-center text-white text-sm" }, noOfchildren)))),
|
|
@@ -50,86 +50,86 @@ const transformEmployeeData = (employeeData, firstName, lastName, primaryService
|
|
|
50
50
|
};
|
|
51
51
|
};
|
|
52
52
|
exports.transformEmployeeData = transformEmployeeData;
|
|
53
|
-
exports.ConnectorContainer = styled_components_1.default.div `
|
|
54
|
-
position: relative;
|
|
55
|
-
width: 100%;
|
|
56
|
-
display: flex;
|
|
57
|
-
justify-content: center;
|
|
58
|
-
align-items: center;
|
|
59
|
-
|
|
60
|
-
&.parent-vertical-line {
|
|
61
|
-
height: 40px;
|
|
62
|
-
position: relative;
|
|
63
|
-
|
|
64
|
-
&:before {
|
|
65
|
-
content: '';
|
|
66
|
-
position: absolute;
|
|
67
|
-
top: 0;
|
|
68
|
-
left: 50%;
|
|
69
|
-
width: 2px;
|
|
70
|
-
height: calc(100% + 2px);
|
|
71
|
-
background-color: #D8D8D8;
|
|
72
|
-
transform: translateX(-50%);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
&.child-vertical-line {
|
|
77
|
-
height: 40px;
|
|
78
|
-
position: relative;
|
|
79
|
-
margin-bottom: 4px;
|
|
80
|
-
&:before {
|
|
81
|
-
content: '';
|
|
82
|
-
position: absolute;
|
|
83
|
-
left: 50%;
|
|
84
|
-
width: 2px;
|
|
85
|
-
height: 100%;
|
|
86
|
-
background-color: #D8D8D8;
|
|
87
|
-
transform: translateX(-50%);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
&:after {
|
|
91
|
-
content: '';
|
|
92
|
-
position: absolute;
|
|
93
|
-
bottom: -4px;
|
|
94
|
-
left: 50%;
|
|
95
|
-
width: 8px;
|
|
96
|
-
height: 8px;
|
|
97
|
-
border-right: 2px solid #D8D8D8;
|
|
98
|
-
border-bottom: 2px solid #D8D8D8;
|
|
99
|
-
transform: translateX(-50%) rotate(45deg);
|
|
100
|
-
background-color: transparent;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
&.horizontal-line {
|
|
105
|
-
position: absolute;
|
|
106
|
-
height: 2px;
|
|
107
|
-
background-color: #D8D8D8;
|
|
108
|
-
top: 0;
|
|
109
|
-
width: 100%;
|
|
110
|
-
}
|
|
53
|
+
exports.ConnectorContainer = styled_components_1.default.div `
|
|
54
|
+
position: relative;
|
|
55
|
+
width: 100%;
|
|
56
|
+
display: flex;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
align-items: center;
|
|
59
|
+
|
|
60
|
+
&.parent-vertical-line {
|
|
61
|
+
height: 40px;
|
|
62
|
+
position: relative;
|
|
63
|
+
|
|
64
|
+
&:before {
|
|
65
|
+
content: '';
|
|
66
|
+
position: absolute;
|
|
67
|
+
top: 0;
|
|
68
|
+
left: 50%;
|
|
69
|
+
width: 2px;
|
|
70
|
+
height: calc(100% + 2px);
|
|
71
|
+
background-color: #D8D8D8;
|
|
72
|
+
transform: translateX(-50%);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&.child-vertical-line {
|
|
77
|
+
height: 40px;
|
|
78
|
+
position: relative;
|
|
79
|
+
margin-bottom: 4px;
|
|
80
|
+
&:before {
|
|
81
|
+
content: '';
|
|
82
|
+
position: absolute;
|
|
83
|
+
left: 50%;
|
|
84
|
+
width: 2px;
|
|
85
|
+
height: 100%;
|
|
86
|
+
background-color: #D8D8D8;
|
|
87
|
+
transform: translateX(-50%);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
&:after {
|
|
91
|
+
content: '';
|
|
92
|
+
position: absolute;
|
|
93
|
+
bottom: -4px;
|
|
94
|
+
left: 50%;
|
|
95
|
+
width: 8px;
|
|
96
|
+
height: 8px;
|
|
97
|
+
border-right: 2px solid #D8D8D8;
|
|
98
|
+
border-bottom: 2px solid #D8D8D8;
|
|
99
|
+
transform: translateX(-50%) rotate(45deg);
|
|
100
|
+
background-color: transparent;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&.horizontal-line {
|
|
105
|
+
position: absolute;
|
|
106
|
+
height: 2px;
|
|
107
|
+
background-color: #D8D8D8;
|
|
108
|
+
top: 0;
|
|
109
|
+
width: 100%;
|
|
110
|
+
}
|
|
111
111
|
`;
|
|
112
|
-
exports.InfoCard = (0, styled_components_1.default)(core_1.Card) `
|
|
113
|
-
position: absolute;
|
|
114
|
-
top: 10;
|
|
115
|
-
right: 0;
|
|
116
|
-
width: fit-content;
|
|
117
|
-
max-width: 30%;
|
|
118
|
-
z-index: 1000;
|
|
119
|
-
padding: 8px;
|
|
120
|
-
margin: 16px;
|
|
121
|
-
background-color: white;
|
|
122
|
-
border-radius: 8px;
|
|
123
|
-
box-shadow: none;
|
|
124
|
-
border: 1px solid #e2e8f0;
|
|
125
|
-
max-height: 90vh;
|
|
126
|
-
overflow: auto;
|
|
127
|
-
@media (max-width: 600px) {
|
|
128
|
-
position: absolute;
|
|
129
|
-
top: 20;
|
|
130
|
-
right: auto;
|
|
131
|
-
min-width: 90%;
|
|
132
|
-
}
|
|
112
|
+
exports.InfoCard = (0, styled_components_1.default)(core_1.Card) `
|
|
113
|
+
position: absolute;
|
|
114
|
+
top: 10;
|
|
115
|
+
right: 0;
|
|
116
|
+
width: fit-content;
|
|
117
|
+
max-width: 30%;
|
|
118
|
+
z-index: 1000;
|
|
119
|
+
padding: 8px;
|
|
120
|
+
margin: 16px;
|
|
121
|
+
background-color: white;
|
|
122
|
+
border-radius: 8px;
|
|
123
|
+
box-shadow: none;
|
|
124
|
+
border: 1px solid #e2e8f0;
|
|
125
|
+
max-height: 90vh;
|
|
126
|
+
overflow: auto;
|
|
127
|
+
@media (max-width: 600px) {
|
|
128
|
+
position: absolute;
|
|
129
|
+
top: 20;
|
|
130
|
+
right: auto;
|
|
131
|
+
min-width: 90%;
|
|
132
|
+
}
|
|
133
133
|
`;
|
|
134
134
|
exports.CustomDialog = (0, core_1.styled)(Dialog_1.default)(({ theme }) => ({
|
|
135
135
|
'& .MuiDialog-paper': {
|
|
@@ -44,15 +44,15 @@ const ProgressBar = ({ minFloorHours, maxFloorHours, loggedHours }) => {
|
|
|
44
44
|
};
|
|
45
45
|
return (react_1.default.createElement("div", { className: `relative m-6 ${minFloorHours <= 0 ? 'pt-4' : 'pt-6'}` },
|
|
46
46
|
react_1.default.createElement("div", { className: "h-8 w-full border-2 border-solid border-[#64748B] rounded-full relative flex flex-wrap bg-[#F1F5F9]" },
|
|
47
|
-
react_1.default.createElement("div", { className: `h-full w-full rounded-l-full ${isRounded ? 'rounded-r-full' : ''}
|
|
47
|
+
react_1.default.createElement("div", { className: `h-full w-full rounded-l-full ${isRounded ? 'rounded-r-full' : ''}
|
|
48
48
|
${totalLoggedHours >= minFloorHours && totalLoggedHours <= maxFloorHours
|
|
49
49
|
? 'bg-[#248384]'
|
|
50
50
|
: totalLoggedHours < minFloorHours
|
|
51
51
|
? 'bg-[#F9BABF]'
|
|
52
52
|
: 'bg-[#A73A43]'}`, style: { width: `${totalLoggedHours !== 0 ? ((totalLoggedHours / totalBar) * 100) : 0}%` } },
|
|
53
|
-
react_1.default.createElement("div", { className: `absolute top-1/2 left-1/2 transform -translate-x-1/2 z-10
|
|
54
|
-
${totalLoggedHours < (totalBar * 0.03) || totalLoggedHours > totalBar || (totalLoggedHours < (totalBar * 0.12)) ? 'translate-y-full' : '-translate-y-1/2'}
|
|
55
|
-
${totalLoggedHours < minFloorHours || totalLoggedHours === 0 ? 'text-black' : 'text-white'}
|
|
53
|
+
react_1.default.createElement("div", { className: `absolute top-1/2 left-1/2 transform -translate-x-1/2 z-10
|
|
54
|
+
${totalLoggedHours < (totalBar * 0.03) || totalLoggedHours > totalBar || (totalLoggedHours < (totalBar * 0.12)) ? 'translate-y-full' : '-translate-y-1/2'}
|
|
55
|
+
${totalLoggedHours < minFloorHours || totalLoggedHours === 0 ? 'text-black' : 'text-white'}
|
|
56
56
|
font-bold`, style: { left: `calc(${calculatePosition()}% - 1px)` } },
|
|
57
57
|
(0, exports.formatNumberingSystem)(totalLoggedHours),
|
|
58
58
|
" hrs")),
|
|
@@ -35,11 +35,11 @@ const react_hot_toast_1 = __importDefault(require("react-hot-toast"));
|
|
|
35
35
|
const ReviewRequestModal = ({ project, requestModal, setRequestModal, expertName, freelancerId, setRequestStatus, selectedProject, setSelectedProject, clientId, refetchParoProjects, setHighlightedRatings, createOrUpdateRatingRequestMutation, }) => {
|
|
36
36
|
var _a;
|
|
37
37
|
const [showError, setShowError] = (0, react_1.useState)(false);
|
|
38
|
-
const [textareaValue, setTextareaValue] = (0, react_1.useState)(`Hi ${(_a = project === null || project === void 0 ? void 0 : project.client) === null || _a === void 0 ? void 0 : _a.name},
|
|
39
|
-
I hope you are satisfied with the work I provided on ${project === null || project === void 0 ? void 0 : project.name}. Your feedback is very important to me and helps me improve my services and build my reputation on Paro. Could you please take a moment to leave a review of you experience? Your input is greatly appreciated!
|
|
40
|
-
|
|
41
|
-
Thank you in advance for your time and feedback.
|
|
42
|
-
Best regards,
|
|
38
|
+
const [textareaValue, setTextareaValue] = (0, react_1.useState)(`Hi ${(_a = project === null || project === void 0 ? void 0 : project.client) === null || _a === void 0 ? void 0 : _a.name},
|
|
39
|
+
I hope you are satisfied with the work I provided on ${project === null || project === void 0 ? void 0 : project.name}. Your feedback is very important to me and helps me improve my services and build my reputation on Paro. Could you please take a moment to leave a review of you experience? Your input is greatly appreciated!
|
|
40
|
+
|
|
41
|
+
Thank you in advance for your time and feedback.
|
|
42
|
+
Best regards,
|
|
43
43
|
${expertName}`);
|
|
44
44
|
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
45
45
|
const handleTextArea = (e) => {
|
|
@@ -34,7 +34,7 @@ const EngagementHeader = ({ clientName, expertName, expertTitle, startDate, stat
|
|
|
34
34
|
react_1.default.createElement("div", { className: "px-6 py-4" },
|
|
35
35
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
36
36
|
react_1.default.createElement("div", null,
|
|
37
|
-
react_1.default.createElement("
|
|
37
|
+
react_1.default.createElement("div", { className: "text-2xl font-bold text-gray-900 mb-1" },
|
|
38
38
|
clientName,
|
|
39
39
|
" \u00D7 ",
|
|
40
40
|
expertName),
|
|
@@ -89,7 +89,7 @@ const EditFocusAreaModal = ({ isOpen, focusArea, onClose, onSave, updateOpportun
|
|
|
89
89
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-xl w-1/2 mx-4" },
|
|
90
90
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
91
91
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
92
|
-
react_1.default.createElement("
|
|
92
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900" }, "Edit Focus Area"),
|
|
93
93
|
react_1.default.createElement("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 transition-colors" },
|
|
94
94
|
react_1.default.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
95
95
|
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))))),
|
|
@@ -130,7 +130,7 @@ const FocusAreas = ({ focusAreas, updateOpportunityFocusArea, GetOpportunityInsi
|
|
|
130
130
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
131
131
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
132
132
|
react_1.default.createElement("div", null,
|
|
133
|
-
react_1.default.createElement("
|
|
133
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 flex items-center" }, "\uD83C\uDFAF Focus Areas"),
|
|
134
134
|
react_1.default.createElement("p", { className: "text-sm text-gray-600 mt-1" }, "Time-sensitive tasks that need attention today/this week")))),
|
|
135
135
|
react_1.default.createElement("div", { className: "p-6" },
|
|
136
136
|
react_1.default.createElement("div", { className: "space-y-4" }, localFocusAreas.map((area, index) => (react_1.default.createElement("div", { key: area.id, className: "flex items-start space-x-4 p-4 border border-gray-200 rounded-lg hover:shadow-sm transition-shadow" },
|
|
@@ -140,7 +140,7 @@ const FocusAreas = ({ focusAreas, updateOpportunityFocusArea, GetOpportunityInsi
|
|
|
140
140
|
react_1.default.createElement("div", { className: "flex-1 min-w-0" },
|
|
141
141
|
react_1.default.createElement("div", { className: "flex items-center justify-between mb-1" },
|
|
142
142
|
react_1.default.createElement("div", { className: "flex items-center space-x-2" },
|
|
143
|
-
react_1.default.createElement("
|
|
143
|
+
react_1.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, area.title),
|
|
144
144
|
react_1.default.createElement("span", { className: `inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border ${STATUS_COLORS[area.status]}` },
|
|
145
145
|
STATUS_ICONS[area.status],
|
|
146
146
|
" ",
|
|
@@ -49,7 +49,7 @@ const EditMetricsModal = ({ isOpen, metrics, onClose, onSave, GetOpportunityInsi
|
|
|
49
49
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-xl w-full max-w-md mx-4" },
|
|
50
50
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
51
51
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
52
|
-
react_1.default.createElement("
|
|
52
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900" }, "Edit Engagement Metrics"),
|
|
53
53
|
react_1.default.createElement("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 transition-colors" },
|
|
54
54
|
react_1.default.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
55
55
|
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))))),
|
|
@@ -90,7 +90,7 @@ const KeyMetrics = ({ metrics, communication, businessContext }) => {
|
|
|
90
90
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
91
91
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" },
|
|
92
92
|
react_1.default.createElement("div", { className: "flex items-center justify-between mb-4" },
|
|
93
|
-
react_1.default.createElement("
|
|
93
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 flex items-center" }, "\uD83D\uDCCA Engagement Metrics")),
|
|
94
94
|
react_1.default.createElement("div", { className: "grid grid-cols-2 gap-4" },
|
|
95
95
|
react_1.default.createElement("div", { className: "text-center" },
|
|
96
96
|
react_1.default.createElement("div", { className: "text-2xl font-bold text-gray-900" }, localMetrics.targetAchievements),
|
|
@@ -109,7 +109,7 @@ const KeyMetrics = ({ metrics, communication, businessContext }) => {
|
|
|
109
109
|
react_1.default.createElement("div", { className: "text-2xl font-bold text-gray-900" }, localMetrics.totalContractLength),
|
|
110
110
|
react_1.default.createElement("div", { className: "text-sm text-gray-600" }, "Total Contract Length")))),
|
|
111
111
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" },
|
|
112
|
-
react_1.default.createElement("
|
|
112
|
+
react_1.default.createElement("div", { className: "text-sm font-medium text-gray-900 mb-3 flex items-center" }, "\uD83D\uDCAC Communication"),
|
|
113
113
|
react_1.default.createElement("div", { className: "space-y-2 text-sm text-gray-600" },
|
|
114
114
|
react_1.default.createElement("div", { className: "flex justify-between" },
|
|
115
115
|
react_1.default.createElement("span", null, "Daily"),
|
|
@@ -124,7 +124,7 @@ const KeyMetrics = ({ metrics, communication, businessContext }) => {
|
|
|
124
124
|
react_1.default.createElement("span", null, "Languages"),
|
|
125
125
|
react_1.default.createElement("span", { className: "font-medium" }, communication.languages.join(', '))))),
|
|
126
126
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" },
|
|
127
|
-
react_1.default.createElement("
|
|
127
|
+
react_1.default.createElement("div", { className: "text-sm font-medium text-gray-900 mb-3" }, "\uD83D\uDCCA Business Context"),
|
|
128
128
|
react_1.default.createElement("div", { className: "space-y-2 text-sm text-gray-600" },
|
|
129
129
|
react_1.default.createElement("div", { className: "flex justify-between" },
|
|
130
130
|
react_1.default.createElement("span", null, "Industry:"),
|
|
@@ -20,6 +20,7 @@ interface MissingInformationProps {
|
|
|
20
20
|
isInternal: boolean;
|
|
21
21
|
handleRouteToDocuments?: () => void;
|
|
22
22
|
onSaveMissingInformation?: any;
|
|
23
|
+
isParoIntelligenceRolePresent: boolean;
|
|
23
24
|
}
|
|
24
25
|
export declare const MissingInformation: React.FC<MissingInformationProps>;
|
|
25
26
|
export {};
|
|
@@ -67,7 +67,7 @@ const PRIORITY_LEVELS = [
|
|
|
67
67
|
'Low - Needed eventually'
|
|
68
68
|
];
|
|
69
69
|
// Request Information Modal Component
|
|
70
|
-
const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, documentCenterController, isInternal, handleRouteToDocuments, }) => {
|
|
70
|
+
const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, documentCenterController, isInternal, handleRouteToDocuments, isParoIntelligenceRolePresent, }) => {
|
|
71
71
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
72
72
|
const [formData, setFormData] = (0, react_1.useState)({
|
|
73
73
|
informationCategory: '',
|
|
@@ -130,7 +130,7 @@ const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, document
|
|
|
130
130
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-xl w-full max-w-md mx-4" },
|
|
131
131
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
132
132
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
133
|
-
react_1.default.createElement("
|
|
133
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900" }, isClientResponded ? "View Client Response" : "Request Additional Information"),
|
|
134
134
|
react_1.default.createElement("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 transition-colors" },
|
|
135
135
|
react_1.default.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
136
136
|
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))))),
|
|
@@ -152,12 +152,12 @@ const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, document
|
|
|
152
152
|
react_1.default.createElement("select", { id: "priorityLevel", value: formData.priorityLevel, onChange: (e) => setFormData(prev => (Object.assign(Object.assign({}, prev), { priorityLevel: e.target.value }))), className: "w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm" }, PRIORITY_LEVELS.map((level) => (react_1.default.createElement("option", { key: level, value: level }, level))))),
|
|
153
153
|
react_1.default.createElement("div", null,
|
|
154
154
|
react_1.default.createElement("label", { htmlFor: "specificInformation", className: "block text-sm font-medium text-gray-700 mb-1" }, "Specific Information Needed"),
|
|
155
|
-
react_1.default.createElement("textarea", { id: "specificInformation", value: formData.specificInformation, onChange: (e) => setFormData(prev => (Object.assign(Object.assign({}, prev), { specificInformation: e.target.value }))), rows: 4, className: "w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm", placeholder: "Need NetSuite configuration details:\n \n 1. US vs Colombian entity setup\n 2. Consolidation process and requirements" }))),
|
|
155
|
+
react_1.default.createElement("textarea", { id: "specificInformation", value: formData.specificInformation, onChange: (e) => setFormData(prev => (Object.assign(Object.assign({}, prev), { specificInformation: e.target.value }))), rows: 4, className: "w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm", placeholder: "Need NetSuite configuration details:\r\n \r\n 1. US vs Colombian entity setup\r\n 2. Consolidation process and requirements" }))),
|
|
156
156
|
react_1.default.createElement("div", { className: "px-6 py-4 border-t border-gray-200 flex justify-end space-x-3" },
|
|
157
157
|
react_1.default.createElement("button", { onClick: handleCancel, className: "px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-gray-500 transition-colors" }, "Cancel"),
|
|
158
|
-
react_1.default.createElement("button", { onClick: handleSubmit, className:
|
|
158
|
+
react_1.default.createElement("button", { onClick: handleSubmit, disabled: isInternal && !isParoIntelligenceRolePresent, className: `px-4 py-2 text-sm font-medium text-white bg-blue bg-blue-600 border border-transparent rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 transition-colors cursor-${isInternal && !isParoIntelligenceRolePresent ? "not-allowed" : "pointer"}` }, buttonText)))));
|
|
159
159
|
};
|
|
160
|
-
const MissingInformation = ({ items, className = '', opportunityId, GetOpportunityInsightsDocument, updateOpportunityMissingInformation, documentCenterController, isInternal, handleRouteToDocuments, onSaveMissingInformation, }) => {
|
|
160
|
+
const MissingInformation = ({ items, className = '', opportunityId, GetOpportunityInsightsDocument, updateOpportunityMissingInformation, documentCenterController, isInternal, handleRouteToDocuments, onSaveMissingInformation, isParoIntelligenceRolePresent, }) => {
|
|
161
161
|
const [selectedItem, setSelectedItem] = (0, react_1.useState)(null);
|
|
162
162
|
const [isModalOpen, setIsModalOpen] = (0, react_1.useState)(false);
|
|
163
163
|
const [requestedItems, setRequestedItems] = (0, react_1.useState)({});
|
|
@@ -202,7 +202,7 @@ const MissingInformation = ({ items, className = '', opportunityId, GetOpportuni
|
|
|
202
202
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
203
203
|
react_1.default.createElement("div", { className: `bg-white rounded-lg shadow-sm border border-gray-200 p-6 ${className}` },
|
|
204
204
|
react_1.default.createElement("div", { className: "flex items-center justify-between mb-4" },
|
|
205
|
-
react_1.default.createElement("
|
|
205
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 flex items-center" }, "\u26A0\uFE0F Missing Information")),
|
|
206
206
|
react_1.default.createElement("div", { className: "space-y-4" }, items.map((item) => {
|
|
207
207
|
const isRequested = requestedItems[item.id] || item.status === "EXPERT_REQUESTED";
|
|
208
208
|
const isClientResponded = item.status === "CLIENT_RESPONDED";
|
|
@@ -215,13 +215,13 @@ const MissingInformation = ({ items, className = '', opportunityId, GetOpportuni
|
|
|
215
215
|
}
|
|
216
216
|
return (react_1.default.createElement("div", { key: item.id, className: "border border-gray-200 rounded-lg p-4 hover:shadow-sm transition-shadow" },
|
|
217
217
|
react_1.default.createElement("div", { className: "flex items-start justify-between mb-2" },
|
|
218
|
-
react_1.default.createElement("
|
|
218
|
+
react_1.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, item.title),
|
|
219
219
|
react_1.default.createElement("span", { className: `inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border ${PRIORITY_COLORS[displayPriority]}` }, PRIORITY_LABELS[displayPriority])),
|
|
220
220
|
react_1.default.createElement("p", { className: "text-sm text-gray-600 mb-2" }, item.description),
|
|
221
221
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
222
222
|
react_1.default.createElement("span", { className: "text-xs text-gray-500" }, item.category),
|
|
223
223
|
isClientResponded ? (react_1.default.createElement("button", { onClick: () => handleRequestInfo(item), className: "text-xs text-blue-600 hover:text-blue-800 font-medium transition-colors" }, "Show Response \u2192")) : !isRequested ? (react_1.default.createElement("button", { onClick: () => handleRequestInfo(item), className: "text-xs text-blue-600 hover:text-blue-800 font-medium transition-colors" }, "Request Info \u2192")) : (react_1.default.createElement("span", { className: "text-xs text-green-600 font-medium" }, "Information Requested")))));
|
|
224
224
|
}))),
|
|
225
|
-
react_1.default.createElement(RequestInfoModal, { isOpen: isModalOpen, missingInfoItem: selectedItem, onClose: handleCloseModal, onSubmit: handleSubmitRequest, documentCenterController: documentCenterController, isInternal: isInternal, handleRouteToDocuments: handleRouteToDocuments })));
|
|
225
|
+
react_1.default.createElement(RequestInfoModal, { isOpen: isModalOpen, missingInfoItem: selectedItem, onClose: handleCloseModal, onSubmit: handleSubmitRequest, documentCenterController: documentCenterController, isInternal: isInternal, handleRouteToDocuments: handleRouteToDocuments, isParoIntelligenceRolePresent: isParoIntelligenceRolePresent })));
|
|
226
226
|
};
|
|
227
227
|
exports.MissingInformation = MissingInformation;
|
|
@@ -15,7 +15,7 @@ const PHASE_TABS = [
|
|
|
15
15
|
const ProgressTracker = ({ percentage, currentPhase, nextSteps }) => {
|
|
16
16
|
return (react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 mt-6" },
|
|
17
17
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
18
|
-
react_1.default.createElement("div", { className: "flex space-x-
|
|
18
|
+
react_1.default.createElement("div", { className: "flex space-x-2" }, PHASE_TABS.map((phase) => (react_1.default.createElement("button", { key: phase.id, disabled: !phase.active, className: `px-4 py-2 text-sm font-medium rounded-md transition-colors ${phase.active
|
|
19
19
|
? 'bg-green-100 text-green-800 border border-green-200 hover:bg-green-200 cursor-pointer'
|
|
20
20
|
: 'text-gray-400 bg-gray-50 border border-gray-200 cursor-not-allowed opacity-60'}` }, phase.label)))))));
|
|
21
21
|
};
|
|
@@ -22,7 +22,7 @@ const HealthIndicator = ({ title, status, description, icon }) => {
|
|
|
22
22
|
react_1.default.createElement("div", { className: "flex-1 min-w-0" },
|
|
23
23
|
react_1.default.createElement("div", { className: "flex items-center space-x-2 mb-1" },
|
|
24
24
|
react_1.default.createElement("span", { className: "text-sm" }, icon),
|
|
25
|
-
react_1.default.createElement("
|
|
25
|
+
react_1.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, title)),
|
|
26
26
|
react_1.default.createElement("p", { className: "text-sm text-gray-600" }, description),
|
|
27
27
|
react_1.default.createElement("span", { className: `inline-flex items-center px-2 py-0.5 rounded text-xs font-medium mt-2 ${STATUS_COLORS[status]}` }, status === 'GOOD' ? 'On track' : status === 'ATTENTION_NEEDED' ? 'Needs attention' : 'Critical'))));
|
|
28
28
|
};
|
|
@@ -30,7 +30,7 @@ const ProjectHealth = ({ healthData, className = '' }) => {
|
|
|
30
30
|
return (react_1.default.createElement("div", { className: `bg-white rounded-lg shadow-sm border border-gray-200 ${className}` },
|
|
31
31
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
32
32
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
33
|
-
react_1.default.createElement("
|
|
33
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 flex items-center" }, "\uD83D\uDCCA Project Health")),
|
|
34
34
|
react_1.default.createElement("p", { className: "text-sm text-gray-600 mt-1" }, "Automated insights from client communications and project data")),
|
|
35
35
|
react_1.default.createElement("div", { className: "p-6" },
|
|
36
36
|
react_1.default.createElement("div", { className: "space-y-4" },
|
|
@@ -23,7 +23,7 @@ exports.Heading = Heading;
|
|
|
23
23
|
const TeamSection = ({ clientTeam, expert, paroTeam }) => {
|
|
24
24
|
return (react_1.default.createElement("div", { className: "space-y-6" },
|
|
25
25
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" },
|
|
26
|
-
react_1.default.createElement("
|
|
26
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 mb-4 flex items-center" }, "\uD83D\uDC65 Client Team"),
|
|
27
27
|
react_1.default.createElement("div", { className: "space-y-3" }, clientTeam === null || clientTeam === void 0 ? void 0 : clientTeam.map((member) => (react_1.default.createElement("div", { key: member.id, className: "flex items-center space-x-3" },
|
|
28
28
|
react_1.default.createElement(Avatar, { src: member.avatar || '', name: member.name }),
|
|
29
29
|
react_1.default.createElement("div", { className: "flex-1 min-w-0" },
|
|
@@ -31,14 +31,14 @@ const TeamSection = ({ clientTeam, expert, paroTeam }) => {
|
|
|
31
31
|
react_1.default.createElement("p", { className: "text-sm text-gray-600" }, member.role),
|
|
32
32
|
member.availability && (react_1.default.createElement("p", { className: "text-xs text-gray-500" }, member.availability)))))))),
|
|
33
33
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" },
|
|
34
|
-
react_1.default.createElement("
|
|
34
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 mb-4 flex items-center" }, "\u2B50 Your Expert"),
|
|
35
35
|
react_1.default.createElement("div", { className: "flex items-center space-x-3" },
|
|
36
36
|
react_1.default.createElement(Avatar, { src: expert.avatar, name: expert.name }),
|
|
37
37
|
react_1.default.createElement("div", { className: "flex-1 min-w-0" },
|
|
38
38
|
react_1.default.createElement("p", { className: "text-sm font-medium text-gray-900" }, expert.name),
|
|
39
39
|
react_1.default.createElement("p", { className: "text-sm text-gray-600" }, expert.title)))),
|
|
40
40
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-6" },
|
|
41
|
-
react_1.default.createElement("
|
|
41
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 mb-4 flex items-center" }, "\uD83D\uDD25 Your Paro Team"),
|
|
42
42
|
react_1.default.createElement("div", { className: "space-y-3" }, paroTeam === null || paroTeam === void 0 ? void 0 : paroTeam.map((member) => (react_1.default.createElement("div", { key: member.id || member.name, className: "flex items-center space-x-3" },
|
|
43
43
|
react_1.default.createElement(Avatar, { src: member.avatar || '', name: member.name }),
|
|
44
44
|
react_1.default.createElement("div", { className: "flex-1 min-w-0" },
|
|
@@ -14,6 +14,7 @@ interface ProjectIntelligenceProps {
|
|
|
14
14
|
handleRouteToDocuments?: () => void;
|
|
15
15
|
onSaveFocusArea?: any;
|
|
16
16
|
onSaveMissingInformation?: any;
|
|
17
|
+
isParoIntelligenceRolePresent?: boolean;
|
|
17
18
|
}
|
|
18
19
|
export declare const ProjectIntelligence: React.FC<ProjectIntelligenceProps>;
|
|
19
20
|
export {};
|
|
@@ -12,7 +12,7 @@ const TeamSection_1 = require("./TeamSection");
|
|
|
12
12
|
const ProjectHealth_1 = require("./ProjectHealth");
|
|
13
13
|
const KeyMetrics_1 = require("./KeyMetrics");
|
|
14
14
|
const MissingInformation_1 = require("./MissingInformation");
|
|
15
|
-
const ProjectIntelligence = ({ checkIfOpportunityInsightsExistData, opportunityInsightsData, selectedOpportunityId, setSelectedOpportunityId, GetOpportunityInsightsDocument, updateOpportunityMissingInformation, documentCenterController = null, updateOpportunityFocusArea, isInternal = false, handleRouteToDocuments, onSaveFocusArea, onSaveMissingInformation, }) => {
|
|
15
|
+
const ProjectIntelligence = ({ checkIfOpportunityInsightsExistData, opportunityInsightsData, selectedOpportunityId, setSelectedOpportunityId, GetOpportunityInsightsDocument, updateOpportunityMissingInformation, documentCenterController = null, updateOpportunityFocusArea, isInternal = false, handleRouteToDocuments, onSaveFocusArea, onSaveMissingInformation, isParoIntelligenceRolePresent = false, }) => {
|
|
16
16
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10;
|
|
17
17
|
const opportunityInsights = opportunityInsightsData === null || opportunityInsightsData === void 0 ? void 0 : opportunityInsightsData.getOpportunityInsights;
|
|
18
18
|
// Create client tabs from checkIfOpportunityInsightsExistData
|
|
@@ -96,7 +96,7 @@ const ProjectIntelligence = ({ checkIfOpportunityInsightsExistData, opportunityI
|
|
|
96
96
|
react_1.default.createElement("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8" },
|
|
97
97
|
react_1.default.createElement("div", { className: "flex flex-col items-center justify-center h-64 text-center" },
|
|
98
98
|
react_1.default.createElement("i", { className: "fal fa-chart-line text-gray-400 text-6xl mb-4" }),
|
|
99
|
-
react_1.default.createElement("
|
|
99
|
+
react_1.default.createElement("div", { className: "text-2xl font-bold text-gray-700 mb-2" }, "No project intelligence found"),
|
|
100
100
|
react_1.default.createElement("p", { className: "text-gray-500 max-w-md" }, "No project intelligence found for your won projects. Please check back after you win your next Opportunity!")))));
|
|
101
101
|
}
|
|
102
102
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
@@ -133,7 +133,7 @@ const ProjectIntelligence = ({ checkIfOpportunityInsightsExistData, opportunityI
|
|
|
133
133
|
category: (item === null || item === void 0 ? void 0 : item.category) || 'N/A',
|
|
134
134
|
status: (item === null || item === void 0 ? void 0 : item.status) || undefined,
|
|
135
135
|
clientResponse: (item === null || item === void 0 ? void 0 : item.clientResponse) || undefined
|
|
136
|
-
})) : [], className: "mt-8", opportunityId: selectedOpportunityId, GetOpportunityInsightsDocument: GetOpportunityInsightsDocument, updateOpportunityMissingInformation: updateOpportunityMissingInformation, documentCenterController: documentCenterController, isInternal: isInternal, handleRouteToDocuments: handleRouteToDocuments, onSaveMissingInformation: onSaveMissingInformation })),
|
|
136
|
+
})) : [], className: "mt-8", opportunityId: selectedOpportunityId, GetOpportunityInsightsDocument: GetOpportunityInsightsDocument, updateOpportunityMissingInformation: updateOpportunityMissingInformation, documentCenterController: documentCenterController, isInternal: isInternal, handleRouteToDocuments: handleRouteToDocuments, onSaveMissingInformation: onSaveMissingInformation, isParoIntelligenceRolePresent: isParoIntelligenceRolePresent })),
|
|
137
137
|
react_1.default.createElement("div", { className: "w-1/3 space-y-4" },
|
|
138
138
|
react_1.default.createElement(TeamSection_1.TeamSection, { clientTeam: opportunityInsights === null || opportunityInsights === void 0 ? void 0 : opportunityInsights.clientTeam, expert: {
|
|
139
139
|
id: 'expert-1',
|
|
@@ -51,12 +51,12 @@ const Pagination = ({ total, currentPage = 1, setCurrentPage, perPageItems = 10,
|
|
|
51
51
|
};
|
|
52
52
|
const numberOfPages = Math.ceil(total / perPageItems);
|
|
53
53
|
return (react_1.default.createElement("div", { className: "bg-white px-4 py-3 border-t border-gray-200 sm:px-6 flex flex-col md:flex-row md:items-center md:justify-between" },
|
|
54
|
-
react_1.default.createElement("div", { className: "pb-2 md:pb-0" }, `Showing
|
|
55
|
-
${perPageItems * (currentPage - 1) + 1}
|
|
56
|
-
to
|
|
57
|
-
${Math.min(total, perPageItems * currentPage)}
|
|
58
|
-
of
|
|
59
|
-
${total}
|
|
54
|
+
react_1.default.createElement("div", { className: "pb-2 md:pb-0" }, `Showing
|
|
55
|
+
${perPageItems * (currentPage - 1) + 1}
|
|
56
|
+
to
|
|
57
|
+
${Math.min(total, perPageItems * currentPage)}
|
|
58
|
+
of
|
|
59
|
+
${total}
|
|
60
60
|
${displayText}`),
|
|
61
61
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
62
62
|
react_1.default.createElement("div", { className: "flex-1 flex justify-between sm:hidden" },
|
|
@@ -51,12 +51,12 @@ const isRatingExists = (rating) => {
|
|
|
51
51
|
return false;
|
|
52
52
|
};
|
|
53
53
|
exports.isRatingExists = isRatingExists;
|
|
54
|
-
const StyledButton = (0, styled_components_1.default)(core_2.Button) `
|
|
55
|
-
margin: 0px !important;
|
|
56
|
-
padding: 26px 0 18px 0 !important;
|
|
57
|
-
span {
|
|
58
|
-
color: #248384 !important
|
|
59
|
-
}
|
|
54
|
+
const StyledButton = (0, styled_components_1.default)(core_2.Button) `
|
|
55
|
+
margin: 0px !important;
|
|
56
|
+
padding: 26px 0 18px 0 !important;
|
|
57
|
+
span {
|
|
58
|
+
color: #248384 !important
|
|
59
|
+
}
|
|
60
60
|
`;
|
|
61
61
|
const RatingHeader = ({ ratings, project, index, highlightedRatings, requestStatus, handleRatingRequest, loadingSubmitId, handleAddToProfile, ratingReviewButtonlabel, setOpenClientReviewModal, setShowReviewModelWithRecentlyRatedProjects, enableReviewModal, disableReviewModal, isClientPortal, isInternal, createOrUpdateRating, getParoProjectsDocument, projectIdToShow, }) => {
|
|
62
62
|
var _a, _b, _c, _d;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"folders": [
|
|
3
|
-
{
|
|
4
|
-
"path": "../../.."
|
|
5
|
-
},
|
|
6
|
-
{
|
|
7
|
-
"path": "../../../../internal-profile-app"
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"path": "../../../../availability-gantt-chart"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"path": "../../../../client-portal"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
"path": "../../../../expert-portal"
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"settings": {}
|
|
20
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"folders": [
|
|
3
|
+
{
|
|
4
|
+
"path": "../../.."
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"path": "../../../../internal-profile-app"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"path": "../../../../availability-gantt-chart"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"path": "../../../../client-portal"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"path": "../../../../expert-portal"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"settings": {}
|
|
20
|
+
}
|
|
@@ -34,11 +34,11 @@ const react_hot_toast_1 = __importDefault(require("react-hot-toast"));
|
|
|
34
34
|
const ReviewRequestModal = ({ project, requestModal, setRequestModal, expertName, freelancerId, setRequestStatus, selectedProject, setSelectedProject, clientId, refetchParoProjects, setHighlightedRatings, createOrUpdateRatingRequestMutation, getParoProjectsDocument, }) => {
|
|
35
35
|
var _a;
|
|
36
36
|
const [showError, setShowError] = (0, react_1.useState)(false);
|
|
37
|
-
const [textareaValue, setTextareaValue] = (0, react_1.useState)(`Hi ${(_a = project === null || project === void 0 ? void 0 : project.client) === null || _a === void 0 ? void 0 : _a.name},
|
|
38
|
-
I hope you are satisfied with the work I provided on ${project === null || project === void 0 ? void 0 : project.name}. Your feedback is very important to me and helps me improve my services and build my reputation on Paro. Could you please take a moment to leave a review of you experience? Your input is greatly appreciated!
|
|
39
|
-
|
|
40
|
-
Thank you in advance for your time and feedback.
|
|
41
|
-
Best regards,
|
|
37
|
+
const [textareaValue, setTextareaValue] = (0, react_1.useState)(`Hi ${(_a = project === null || project === void 0 ? void 0 : project.client) === null || _a === void 0 ? void 0 : _a.name},
|
|
38
|
+
I hope you are satisfied with the work I provided on ${project === null || project === void 0 ? void 0 : project.name}. Your feedback is very important to me and helps me improve my services and build my reputation on Paro. Could you please take a moment to leave a review of you experience? Your input is greatly appreciated!
|
|
39
|
+
|
|
40
|
+
Thank you in advance for your time and feedback.
|
|
41
|
+
Best regards,
|
|
42
42
|
${expertName}`);
|
|
43
43
|
const handleTextArea = (e) => {
|
|
44
44
|
setTextareaValue(e.target.value);
|
|
@@ -31,20 +31,20 @@ const react_1 = __importStar(require("react"));
|
|
|
31
31
|
const core_1 = require("@material-ui/core");
|
|
32
32
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
33
33
|
const cdn_1 = require("./constants/cdn");
|
|
34
|
-
const ProfilePhotoPreview = styled_components_1.default.img `
|
|
35
|
-
height: 86px;
|
|
36
|
-
width: 86px;
|
|
37
|
-
border: 4px solid #F8FAFC;
|
|
38
|
-
border-radius: 10px;
|
|
39
|
-
object-fit: cover;
|
|
40
|
-
object-position: top;
|
|
34
|
+
const ProfilePhotoPreview = styled_components_1.default.img `
|
|
35
|
+
height: 86px;
|
|
36
|
+
width: 86px;
|
|
37
|
+
border: 4px solid #F8FAFC;
|
|
38
|
+
border-radius: 10px;
|
|
39
|
+
object-fit: cover;
|
|
40
|
+
object-position: top;
|
|
41
41
|
`;
|
|
42
|
-
const PhotoChangeButton = (0, styled_components_1.default)(core_1.Typography) `
|
|
43
|
-
text-decoration: underline;
|
|
44
|
-
cursor: pointer;
|
|
45
|
-
:active {
|
|
46
|
-
text-decoration: none !important;
|
|
47
|
-
}
|
|
42
|
+
const PhotoChangeButton = (0, styled_components_1.default)(core_1.Typography) `
|
|
43
|
+
text-decoration: underline;
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
:active {
|
|
46
|
+
text-decoration: none !important;
|
|
47
|
+
}
|
|
48
48
|
`;
|
|
49
49
|
exports.defaultAvatar = cdn_1.CDN_URL + 'defaultAvatar.png';
|
|
50
50
|
const Image = ({ imageUrl, getUserDocument, uploadUserPhotoMutation, loadingNewImage, imageUpdateError, legacyFreelancerId, }) => {
|