@paro.io/expert-shared-components 1.14.1 → 1.14.3
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 +4 -4
- 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 +25 -16
- 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),
|
|
@@ -69,7 +69,7 @@ const EditFocusAreaModal = ({ isOpen, focusArea, onClose, onSave, updateOpportun
|
|
|
69
69
|
]
|
|
70
70
|
});
|
|
71
71
|
(0, utils_1.showToast)('success', 'Focus area updated successfully');
|
|
72
|
-
onSaveFocusArea();
|
|
72
|
+
onSaveFocusArea && onSaveFocusArea();
|
|
73
73
|
}
|
|
74
74
|
catch (error) {
|
|
75
75
|
console.error('Error updating focus area:', error);
|
|
@@ -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 {};
|
|
@@ -66,21 +66,30 @@ const PRIORITY_LEVELS = [
|
|
|
66
66
|
'Medium - Needed next week',
|
|
67
67
|
'Low - Needed eventually'
|
|
68
68
|
];
|
|
69
|
+
const getPriorityLevel = (priority) => {
|
|
70
|
+
if (!priority)
|
|
71
|
+
return PRIORITY_LEVELS[0];
|
|
72
|
+
switch (priority) {
|
|
73
|
+
case 'HIGH': return 'Urgent - Blocks current work';
|
|
74
|
+
case 'MEDIUM': return 'High - Needed this week';
|
|
75
|
+
case 'LOW': return 'Medium - Needed next week';
|
|
76
|
+
default:
|
|
77
|
+
return PRIORITY_LEVELS[0];
|
|
78
|
+
}
|
|
79
|
+
};
|
|
69
80
|
// Request Information Modal Component
|
|
70
|
-
const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, documentCenterController, isInternal, handleRouteToDocuments, }) => {
|
|
81
|
+
const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, documentCenterController, isInternal, handleRouteToDocuments, isParoIntelligenceRolePresent, }) => {
|
|
71
82
|
const [submitting, setSubmitting] = (0, react_1.useState)(false);
|
|
72
83
|
const [formData, setFormData] = (0, react_1.useState)({
|
|
73
|
-
informationCategory:
|
|
74
|
-
priorityLevel:
|
|
84
|
+
informationCategory: INFORMATION_CATEGORIES[0], // Default to first category
|
|
85
|
+
priorityLevel: PRIORITY_LEVELS[0], // Default to first priority
|
|
75
86
|
specificInformation: '',
|
|
76
87
|
});
|
|
77
88
|
react_1.default.useEffect(() => {
|
|
78
89
|
if (missingInfoItem) {
|
|
79
90
|
setFormData({
|
|
80
|
-
informationCategory: missingInfoItem.category ||
|
|
81
|
-
priorityLevel: missingInfoItem.priority
|
|
82
|
-
missingInfoItem.priority === 'MEDIUM' ? 'High - Needed this week' :
|
|
83
|
-
'Medium - Needed next week',
|
|
91
|
+
informationCategory: missingInfoItem.category || INFORMATION_CATEGORIES[0],
|
|
92
|
+
priorityLevel: getPriorityLevel(missingInfoItem.priority),
|
|
84
93
|
specificInformation: missingInfoItem.description || '',
|
|
85
94
|
});
|
|
86
95
|
}
|
|
@@ -130,7 +139,7 @@ const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, document
|
|
|
130
139
|
react_1.default.createElement("div", { className: "bg-white rounded-lg shadow-xl w-full max-w-md mx-4" },
|
|
131
140
|
react_1.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200" },
|
|
132
141
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
133
|
-
react_1.default.createElement("
|
|
142
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900" }, isClientResponded ? "View Client Response" : "Request Additional Information"),
|
|
134
143
|
react_1.default.createElement("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 transition-colors" },
|
|
135
144
|
react_1.default.createElement("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" },
|
|
136
145
|
react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }))))),
|
|
@@ -146,18 +155,18 @@ const RequestInfoModal = ({ isOpen, missingInfoItem, onClose, onSubmit, document
|
|
|
146
155
|
"View Documents in Document Center"))))),
|
|
147
156
|
react_1.default.createElement("div", null,
|
|
148
157
|
react_1.default.createElement("label", { htmlFor: "informationCategory", className: "block text-sm font-medium text-gray-700 mb-1" }, "Information Category"),
|
|
149
|
-
react_1.default.createElement("select", { id: "informationCategory", value: formData.informationCategory, onChange: (e) => setFormData(prev => (Object.assign(Object.assign({}, prev), { informationCategory: 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" }, INFORMATION_CATEGORIES.map((category) => (react_1.default.createElement("option", { key: category, value: category }, category))))),
|
|
158
|
+
react_1.default.createElement("select", { id: "informationCategory", disabled: isInternal && !isParoIntelligenceRolePresent, value: formData.informationCategory, onChange: (e) => setFormData(prev => (Object.assign(Object.assign({}, prev), { informationCategory: 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" }, INFORMATION_CATEGORIES.map((category) => (react_1.default.createElement("option", { key: category, value: category }, category))))),
|
|
150
159
|
react_1.default.createElement("div", null,
|
|
151
160
|
react_1.default.createElement("label", { htmlFor: "priorityLevel", className: "block text-sm font-medium text-gray-700 mb-1" }, "Priority Level"),
|
|
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))))),
|
|
161
|
+
react_1.default.createElement("select", { id: "priorityLevel", disabled: isInternal && !isParoIntelligenceRolePresent, 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
162
|
react_1.default.createElement("div", null,
|
|
154
163
|
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" }))),
|
|
164
|
+
react_1.default.createElement("textarea", { id: "specificInformation", disabled: isInternal && !isParoIntelligenceRolePresent, 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
165
|
react_1.default.createElement("div", { className: "px-6 py-4 border-t border-gray-200 flex justify-end space-x-3" },
|
|
157
166
|
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:
|
|
167
|
+
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
168
|
};
|
|
160
|
-
const MissingInformation = ({ items, className = '', opportunityId, GetOpportunityInsightsDocument, updateOpportunityMissingInformation, documentCenterController, isInternal, handleRouteToDocuments, onSaveMissingInformation, }) => {
|
|
169
|
+
const MissingInformation = ({ items, className = '', opportunityId, GetOpportunityInsightsDocument, updateOpportunityMissingInformation, documentCenterController, isInternal, handleRouteToDocuments, onSaveMissingInformation, isParoIntelligenceRolePresent, }) => {
|
|
161
170
|
const [selectedItem, setSelectedItem] = (0, react_1.useState)(null);
|
|
162
171
|
const [isModalOpen, setIsModalOpen] = (0, react_1.useState)(false);
|
|
163
172
|
const [requestedItems, setRequestedItems] = (0, react_1.useState)({});
|
|
@@ -202,7 +211,7 @@ const MissingInformation = ({ items, className = '', opportunityId, GetOpportuni
|
|
|
202
211
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
203
212
|
react_1.default.createElement("div", { className: `bg-white rounded-lg shadow-sm border border-gray-200 p-6 ${className}` },
|
|
204
213
|
react_1.default.createElement("div", { className: "flex items-center justify-between mb-4" },
|
|
205
|
-
react_1.default.createElement("
|
|
214
|
+
react_1.default.createElement("div", { className: "text-lg font-semibold text-gray-900 flex items-center" }, "\u26A0\uFE0F Missing Information")),
|
|
206
215
|
react_1.default.createElement("div", { className: "space-y-4" }, items.map((item) => {
|
|
207
216
|
const isRequested = requestedItems[item.id] || item.status === "EXPERT_REQUESTED";
|
|
208
217
|
const isClientResponded = item.status === "CLIENT_RESPONDED";
|
|
@@ -215,13 +224,13 @@ const MissingInformation = ({ items, className = '', opportunityId, GetOpportuni
|
|
|
215
224
|
}
|
|
216
225
|
return (react_1.default.createElement("div", { key: item.id, className: "border border-gray-200 rounded-lg p-4 hover:shadow-sm transition-shadow" },
|
|
217
226
|
react_1.default.createElement("div", { className: "flex items-start justify-between mb-2" },
|
|
218
|
-
react_1.default.createElement("
|
|
227
|
+
react_1.default.createElement("div", { className: "text-sm font-medium text-gray-900" }, item.title),
|
|
219
228
|
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
229
|
react_1.default.createElement("p", { className: "text-sm text-gray-600 mb-2" }, item.description),
|
|
221
230
|
react_1.default.createElement("div", { className: "flex items-center justify-between" },
|
|
222
231
|
react_1.default.createElement("span", { className: "text-xs text-gray-500" }, item.category),
|
|
223
232
|
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
233
|
}))),
|
|
225
|
-
react_1.default.createElement(RequestInfoModal, { isOpen: isModalOpen, missingInfoItem: selectedItem, onClose: handleCloseModal, onSubmit: handleSubmitRequest, documentCenterController: documentCenterController, isInternal: isInternal, handleRouteToDocuments: handleRouteToDocuments })));
|
|
234
|
+
react_1.default.createElement(RequestInfoModal, { isOpen: isModalOpen, missingInfoItem: selectedItem, onClose: handleCloseModal, onSubmit: handleSubmitRequest, documentCenterController: documentCenterController, isInternal: isInternal, handleRouteToDocuments: handleRouteToDocuments, isParoIntelligenceRolePresent: isParoIntelligenceRolePresent })));
|
|
226
235
|
};
|
|
227
236
|
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
|
+
}
|