@paro.io/expert-shared-components 1.14.24 → 1.14.26
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/DiscussionThread.d.ts +25 -25
- package/lib/components/DiscussionThread/DiscussionThread.js +137 -137
- package/lib/components/DiscussionThread/chat.d.ts +22 -22
- package/lib/components/DiscussionThread/chat.js +106 -106
- package/lib/components/DiscussionThread/index.d.ts +1 -1
- package/lib/components/DiscussionThread/index.js +5 -5
- package/lib/components/DocumentCenter/ClientDocumentsTable.d.ts +2 -1
- package/lib/components/DocumentCenter/ClientDocumentsTable.js +2 -4
- package/lib/components/DocumentCenter/DocumentCenter.d.ts +2 -1
- package/lib/components/DocumentCenter/DocumentCenter.js +44 -34
- package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
- package/lib/components/DocumentCenter/DocumentTable.js +350 -350
- package/lib/components/DocumentCenter/DocumentUploadRow.d.ts +2 -1
- package/lib/components/DocumentCenter/DocumentUploadRow.js +2 -2
- package/lib/components/DocumentCenter/ParoDocumentsTable.d.ts +2 -1
- package/lib/components/DocumentCenter/ParoDocumentsTable.js +2 -2
- 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/ProfileSection.js +7 -7
- package/lib/components/HeaderNavBar/index.js +3 -3
- 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/MissingInformation/index.js +1 -1
- 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 +66 -66
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export declare const formatNumberingSystem: (value: any) => string | 0;
|
|
3
|
-
declare const ProgressBar: ({ minFloorHours, maxFloorHours, loggedHours }: any) => React.JSX.Element;
|
|
4
|
-
export default ProgressBar;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const formatNumberingSystem: (value: any) => string | 0;
|
|
3
|
+
declare const ProgressBar: ({ minFloorHours, maxFloorHours, loggedHours }: any) => React.JSX.Element;
|
|
4
|
+
export default ProgressBar;
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.formatNumberingSystem = void 0;
|
|
7
|
-
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const formatNumberingSystem = (value) => {
|
|
9
|
-
const stringValue = value === null || value === void 0 ? void 0 : value.toString();
|
|
10
|
-
if (!stringValue)
|
|
11
|
-
return 0;
|
|
12
|
-
const formatter = new Intl.NumberFormat('en-US', {
|
|
13
|
-
minimumFractionDigits: 2,
|
|
14
|
-
maximumFractionDigits: 2,
|
|
15
|
-
style: 'decimal',
|
|
16
|
-
});
|
|
17
|
-
return formatter.format(stringValue);
|
|
18
|
-
};
|
|
19
|
-
exports.formatNumberingSystem = formatNumberingSystem;
|
|
20
|
-
const ProgressBar = ({ minFloorHours, maxFloorHours, loggedHours }) => {
|
|
21
|
-
var _a, _b;
|
|
22
|
-
const totalLoggedHours = Number((loggedHours).toFixed(2));
|
|
23
|
-
const totalBar = maxFloorHours < totalLoggedHours ? totalLoggedHours : maxFloorHours * 1.1;
|
|
24
|
-
const dottedLinePosition = ((minFloorHours / totalBar) * 100).toFixed(2);
|
|
25
|
-
const solidLinePosition = ((maxFloorHours / totalBar) * 100).toFixed(2);
|
|
26
|
-
const isRounded = Number(((totalLoggedHours / totalBar) * 100).toFixed(0)) >= 100 || totalLoggedHours === 0;
|
|
27
|
-
const calculatePosition = () => {
|
|
28
|
-
let position;
|
|
29
|
-
if ((totalLoggedHours < (totalBar * 0.03))) {
|
|
30
|
-
position = (totalLoggedHours / totalBar) * 100;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
if ((totalLoggedHours < (totalBar * 0.12))) {
|
|
34
|
-
position = (totalLoggedHours / totalBar * 2) * 100;
|
|
35
|
-
}
|
|
36
|
-
else if ((totalLoggedHours >= totalBar) || (totalLoggedHours > (totalBar * 0.12))) {
|
|
37
|
-
position = ((totalLoggedHours / totalBar) * 100) / 2;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
position = ((totalLoggedHours / totalBar) * 100);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return position;
|
|
44
|
-
};
|
|
45
|
-
return (react_1.default.createElement("div", { className: `relative m-6 ${minFloorHours <= 0 ? 'pt-4' : 'pt-6'}` },
|
|
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' : ''}
|
|
48
|
-
${totalLoggedHours >= minFloorHours && totalLoggedHours <= maxFloorHours
|
|
49
|
-
? 'bg-[#248384]'
|
|
50
|
-
: totalLoggedHours < minFloorHours
|
|
51
|
-
? 'bg-[#F9BABF]'
|
|
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'}
|
|
56
|
-
font-bold`, style: { left: `calc(${calculatePosition()}% - 1px)` } },
|
|
57
|
-
(0, exports.formatNumberingSystem)(totalLoggedHours),
|
|
58
|
-
" hrs")),
|
|
59
|
-
react_1.default.createElement("div", { className: `absolute h-full border-dotted border-l-2 border-black`, style: { left: `calc(${dottedLinePosition}% - 1px)`, marginTop: "-12px", height: "40px" } }),
|
|
60
|
-
react_1.default.createElement("div", { className: `absolute h-full border-solid border-l-2 border-black`, style: { left: `calc(${solidLinePosition}% - 1px)`, marginBottom: "-12px", height: "40px" } }),
|
|
61
|
-
react_1.default.createElement("div", { className: `absolute transform -translate-x-1/2 -translate-y-full text-black`, style: { left: `calc(${dottedLinePosition}% - 1px)`, marginTop: '-12px' } }, (_a = (0, exports.formatNumberingSystem)(minFloorHours)) !== null && _a !== void 0 ? _a : 0,
|
|
62
|
-
" hrs Min"),
|
|
63
|
-
react_1.default.createElement("div", { className: `absolute transform -translate-x-1/2 translate-y-full text-black `, style: { left: `calc(${solidLinePosition}% - 1px)`, marginTop: '12px', width: 'max-content' } }, (_b = (0, exports.formatNumberingSystem)(maxFloorHours)) !== null && _b !== void 0 ? _b : 0,
|
|
64
|
-
" hrs Max"))));
|
|
65
|
-
};
|
|
66
|
-
exports.default = ProgressBar;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.formatNumberingSystem = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const formatNumberingSystem = (value) => {
|
|
9
|
+
const stringValue = value === null || value === void 0 ? void 0 : value.toString();
|
|
10
|
+
if (!stringValue)
|
|
11
|
+
return 0;
|
|
12
|
+
const formatter = new Intl.NumberFormat('en-US', {
|
|
13
|
+
minimumFractionDigits: 2,
|
|
14
|
+
maximumFractionDigits: 2,
|
|
15
|
+
style: 'decimal',
|
|
16
|
+
});
|
|
17
|
+
return formatter.format(stringValue);
|
|
18
|
+
};
|
|
19
|
+
exports.formatNumberingSystem = formatNumberingSystem;
|
|
20
|
+
const ProgressBar = ({ minFloorHours, maxFloorHours, loggedHours }) => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
const totalLoggedHours = Number((loggedHours).toFixed(2));
|
|
23
|
+
const totalBar = maxFloorHours < totalLoggedHours ? totalLoggedHours : maxFloorHours * 1.1;
|
|
24
|
+
const dottedLinePosition = ((minFloorHours / totalBar) * 100).toFixed(2);
|
|
25
|
+
const solidLinePosition = ((maxFloorHours / totalBar) * 100).toFixed(2);
|
|
26
|
+
const isRounded = Number(((totalLoggedHours / totalBar) * 100).toFixed(0)) >= 100 || totalLoggedHours === 0;
|
|
27
|
+
const calculatePosition = () => {
|
|
28
|
+
let position;
|
|
29
|
+
if ((totalLoggedHours < (totalBar * 0.03))) {
|
|
30
|
+
position = (totalLoggedHours / totalBar) * 100;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if ((totalLoggedHours < (totalBar * 0.12))) {
|
|
34
|
+
position = (totalLoggedHours / totalBar * 2) * 100;
|
|
35
|
+
}
|
|
36
|
+
else if ((totalLoggedHours >= totalBar) || (totalLoggedHours > (totalBar * 0.12))) {
|
|
37
|
+
position = ((totalLoggedHours / totalBar) * 100) / 2;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
position = ((totalLoggedHours / totalBar) * 100);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return position;
|
|
44
|
+
};
|
|
45
|
+
return (react_1.default.createElement("div", { className: `relative m-6 ${minFloorHours <= 0 ? 'pt-4' : 'pt-6'}` },
|
|
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' : ''}
|
|
48
|
+
${totalLoggedHours >= minFloorHours && totalLoggedHours <= maxFloorHours
|
|
49
|
+
? 'bg-[#248384]'
|
|
50
|
+
: totalLoggedHours < minFloorHours
|
|
51
|
+
? 'bg-[#F9BABF]'
|
|
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'}
|
|
56
|
+
font-bold`, style: { left: `calc(${calculatePosition()}% - 1px)` } },
|
|
57
|
+
(0, exports.formatNumberingSystem)(totalLoggedHours),
|
|
58
|
+
" hrs")),
|
|
59
|
+
react_1.default.createElement("div", { className: `absolute h-full border-dotted border-l-2 border-black`, style: { left: `calc(${dottedLinePosition}% - 1px)`, marginTop: "-12px", height: "40px" } }),
|
|
60
|
+
react_1.default.createElement("div", { className: `absolute h-full border-solid border-l-2 border-black`, style: { left: `calc(${solidLinePosition}% - 1px)`, marginBottom: "-12px", height: "40px" } }),
|
|
61
|
+
react_1.default.createElement("div", { className: `absolute transform -translate-x-1/2 -translate-y-full text-black`, style: { left: `calc(${dottedLinePosition}% - 1px)`, marginTop: '-12px' } }, (_a = (0, exports.formatNumberingSystem)(minFloorHours)) !== null && _a !== void 0 ? _a : 0,
|
|
62
|
+
" hrs Min"),
|
|
63
|
+
react_1.default.createElement("div", { className: `absolute transform -translate-x-1/2 translate-y-full text-black `, style: { left: `calc(${solidLinePosition}% - 1px)`, marginTop: '12px', width: 'max-content' } }, (_b = (0, exports.formatNumberingSystem)(maxFloorHours)) !== null && _b !== void 0 ? _b : 0,
|
|
64
|
+
" hrs Max"))));
|
|
65
|
+
};
|
|
66
|
+
exports.default = ProgressBar;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface RequestReviewModalProps {
|
|
3
|
-
project: any;
|
|
4
|
-
requestModal: boolean;
|
|
5
|
-
setRequestModal: (requestModal: boolean) => void;
|
|
6
|
-
expertName: String;
|
|
7
|
-
freelancerId: number;
|
|
8
|
-
setRequestStatus: (requestStatus: string) => void;
|
|
9
|
-
selectedProject?: number | null;
|
|
10
|
-
setSelectedProject?: (selectedProject: number | null) => void;
|
|
11
|
-
clientId?: number;
|
|
12
|
-
refetchParoProjects?: () => void;
|
|
13
|
-
setHighlightedRatings?: (highlightedRatings: any) => void;
|
|
14
|
-
createOrUpdateRatingRequestMutation: any;
|
|
15
|
-
}
|
|
16
|
-
export declare const ReviewRequestModal: ({ project, requestModal, setRequestModal, expertName, freelancerId, setRequestStatus, selectedProject, setSelectedProject, clientId, refetchParoProjects, setHighlightedRatings, createOrUpdateRatingRequestMutation, }: RequestReviewModalProps) => React.JSX.Element;
|
|
17
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface RequestReviewModalProps {
|
|
3
|
+
project: any;
|
|
4
|
+
requestModal: boolean;
|
|
5
|
+
setRequestModal: (requestModal: boolean) => void;
|
|
6
|
+
expertName: String;
|
|
7
|
+
freelancerId: number;
|
|
8
|
+
setRequestStatus: (requestStatus: string) => void;
|
|
9
|
+
selectedProject?: number | null;
|
|
10
|
+
setSelectedProject?: (selectedProject: number | null) => void;
|
|
11
|
+
clientId?: number;
|
|
12
|
+
refetchParoProjects?: () => void;
|
|
13
|
+
setHighlightedRatings?: (highlightedRatings: any) => void;
|
|
14
|
+
createOrUpdateRatingRequestMutation: any;
|
|
15
|
+
}
|
|
16
|
+
export declare const ReviewRequestModal: ({ project, requestModal, setRequestModal, expertName, freelancerId, setRequestStatus, selectedProject, setSelectedProject, clientId, refetchParoProjects, setHighlightedRatings, createOrUpdateRatingRequestMutation, }: RequestReviewModalProps) => React.JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ReviewRequestModal = void 0;
|
|
30
|
-
const react_1 = __importStar(require("react"));
|
|
31
|
-
const base_ui_1 = require("@paro.io/base-ui");
|
|
32
|
-
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
33
|
-
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
34
|
-
const react_hot_toast_1 = __importDefault(require("react-hot-toast"));
|
|
35
|
-
const ReviewRequestModal = ({ project, requestModal, setRequestModal, expertName, freelancerId, setRequestStatus, selectedProject, setSelectedProject, clientId, refetchParoProjects, setHighlightedRatings, createOrUpdateRatingRequestMutation, }) => {
|
|
36
|
-
var _a;
|
|
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,
|
|
43
|
-
${expertName}`);
|
|
44
|
-
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
45
|
-
const handleTextArea = (e) => {
|
|
46
|
-
setTextareaValue(e.target.value);
|
|
47
|
-
e.target.value.length >= 100 ? setShowError(false) : setShowError(true);
|
|
48
|
-
};
|
|
49
|
-
const handleSubmit = () => {
|
|
50
|
-
setLoading(true);
|
|
51
|
-
const inputData = clientId ? [{
|
|
52
|
-
clientId: clientId,
|
|
53
|
-
freelancerId: +freelancerId,
|
|
54
|
-
projectId: +(project === null || project === void 0 ? void 0 : project.id),
|
|
55
|
-
requestedBy: 'Expert',
|
|
56
|
-
status: 'Requested',
|
|
57
|
-
message: textareaValue,
|
|
58
|
-
}] :
|
|
59
|
-
[{
|
|
60
|
-
clientId: +(project === null || project === void 0 ? void 0 : project.clientId),
|
|
61
|
-
freelancerId: +freelancerId,
|
|
62
|
-
projectId: +(project === null || project === void 0 ? void 0 : project.id),
|
|
63
|
-
requestedBy: 'Expert',
|
|
64
|
-
status: 'Requested',
|
|
65
|
-
message: textareaValue,
|
|
66
|
-
}];
|
|
67
|
-
if (textareaValue.length < 100) {
|
|
68
|
-
setShowError(true);
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
createOrUpdateRatingRequestMutation({
|
|
72
|
-
variables: {
|
|
73
|
-
input: inputData,
|
|
74
|
-
},
|
|
75
|
-
}).then(() => {
|
|
76
|
-
refetchParoProjects && refetchParoProjects();
|
|
77
|
-
setHighlightedRatings && setHighlightedRatings((prevState) => prevState.map((project) => {
|
|
78
|
-
if (selectedProject && project.id === selectedProject) {
|
|
79
|
-
return Object.assign(Object.assign({}, project), { ratingRequest: [Object.assign(Object.assign({}, project.ratingRequest[0]), { status: "Requested" })] });
|
|
80
|
-
}
|
|
81
|
-
return project;
|
|
82
|
-
}));
|
|
83
|
-
setRequestStatus('Requested');
|
|
84
|
-
(0, react_hot_toast_1.default)(react_1.default.createElement(base_ui_1.Alert, { color: "success", icon: "success", label: `Request Submitted Successfully` }), {
|
|
85
|
-
position: 'bottom-right',
|
|
86
|
-
style: { borderRadius: '8px' },
|
|
87
|
-
});
|
|
88
|
-
setSelectedProject && setSelectedProject(null);
|
|
89
|
-
setRequestModal(false);
|
|
90
|
-
})
|
|
91
|
-
.catch((error) => {
|
|
92
|
-
console.error(error);
|
|
93
|
-
(0, react_hot_toast_1.default)(react_1.default.createElement(base_ui_1.Alert, { color: "danger", icon: "danger", label: `Failed to Send Request` }), {
|
|
94
|
-
position: 'bottom-right',
|
|
95
|
-
style: { borderRadius: '8px' },
|
|
96
|
-
});
|
|
97
|
-
}).finally(() => {
|
|
98
|
-
setLoading(false);
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
const handleOnClose = () => {
|
|
102
|
-
setRequestModal(false);
|
|
103
|
-
setSelectedProject && setSelectedProject(null);
|
|
104
|
-
};
|
|
105
|
-
return (react_1.default.createElement(base_ui_1.Modal, { size: "sm", open: requestModal, onClose: () => handleOnClose(), className: "request-review-modal" },
|
|
106
|
-
react_1.default.createElement("h1", { className: "font-bold text-2xl text-center my-2" }, "Request a Review"),
|
|
107
|
-
react_1.default.createElement("h2", { className: "font-bold text-center" }, "Boost Your Reputation and Attract More Clients"),
|
|
108
|
-
react_1.default.createElement("p", { className: "text-center my-2" },
|
|
109
|
-
"Client reviews are a key factor in building your reputation and growing your business on Paro.",
|
|
110
|
-
react_1.default.createElement("span", { className: "font-bold ml-1" }, "Here's why they are crucial: ")),
|
|
111
|
-
react_1.default.createElement("p", null,
|
|
112
|
-
react_1.default.createElement("span", { className: "font-bold my-2" },
|
|
113
|
-
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCheck, className: "text-green-500 mr-2" }),
|
|
114
|
-
"Enhance Your Credibility :"),
|
|
115
|
-
react_1.default.createElement("span", { className: "ml-2" }, "Positive reviews from clients act as testimonials to your skills and professionalism. They provide social proof to potential clients, making them more likely to hire you.")),
|
|
116
|
-
react_1.default.createElement("br", null),
|
|
117
|
-
react_1.default.createElement("p", null,
|
|
118
|
-
react_1.default.createElement("span", { className: "font-bold my-2" },
|
|
119
|
-
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCheck, className: "text-green-500 mr-2" }),
|
|
120
|
-
" Gain Valuable Feedback :"),
|
|
121
|
-
react_1.default.createElement("span", { className: "ml-2" }, "Constructive feedback helps you understand what you're doing well and where you can improve. This allows you to continuously enhance your services and client satisfaction.")),
|
|
122
|
-
react_1.default.createElement("br", null),
|
|
123
|
-
react_1.default.createElement("p", null,
|
|
124
|
-
react_1.default.createElement("span", { className: "font-bold my-2" },
|
|
125
|
-
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCheck, className: "text-green-500 mr-2" }),
|
|
126
|
-
" Build Trust :"),
|
|
127
|
-
react_1.default.createElement("span", { className: "ml-2" }, "Clients are more likely to trust and hire Experts who have a track record of successful projects and satisfied clients. Reviews help build this trust and establish you as a reliable professional.")),
|
|
128
|
-
react_1.default.createElement("h2", { className: "font-bold text-center my-4" }, "Please modify the message below to your liking"),
|
|
129
|
-
react_1.default.createElement("textarea", { rows: 10, cols: 56, value: textareaValue, className: "overflow-auto my-4 text-left w-full bg-stone-200 p-4 text-gray-500", onChange: (e) => handleTextArea(e) }),
|
|
130
|
-
showError && react_1.default.createElement("p", { className: "text-red-600 font-medium mb-2" }, "Minimum 100 characters required*"),
|
|
131
|
-
react_1.default.createElement("div", { className: "justify-center w-full flex" },
|
|
132
|
-
react_1.default.createElement(base_ui_1.Button, { label: "CANCEL", className: "mx-4", onClick: () => setRequestModal(false), disabled: loading }),
|
|
133
|
-
react_1.default.createElement(base_ui_1.Button, { label: "SEND REQUEST", color: "primary", onClick: handleSubmit, isLoading: loading, disabled: showError }))));
|
|
134
|
-
};
|
|
135
|
-
exports.ReviewRequestModal = ReviewRequestModal;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ReviewRequestModal = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
31
|
+
const base_ui_1 = require("@paro.io/base-ui");
|
|
32
|
+
const react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
33
|
+
const free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
|
|
34
|
+
const react_hot_toast_1 = __importDefault(require("react-hot-toast"));
|
|
35
|
+
const ReviewRequestModal = ({ project, requestModal, setRequestModal, expertName, freelancerId, setRequestStatus, selectedProject, setSelectedProject, clientId, refetchParoProjects, setHighlightedRatings, createOrUpdateRatingRequestMutation, }) => {
|
|
36
|
+
var _a;
|
|
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,
|
|
43
|
+
${expertName}`);
|
|
44
|
+
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
45
|
+
const handleTextArea = (e) => {
|
|
46
|
+
setTextareaValue(e.target.value);
|
|
47
|
+
e.target.value.length >= 100 ? setShowError(false) : setShowError(true);
|
|
48
|
+
};
|
|
49
|
+
const handleSubmit = () => {
|
|
50
|
+
setLoading(true);
|
|
51
|
+
const inputData = clientId ? [{
|
|
52
|
+
clientId: clientId,
|
|
53
|
+
freelancerId: +freelancerId,
|
|
54
|
+
projectId: +(project === null || project === void 0 ? void 0 : project.id),
|
|
55
|
+
requestedBy: 'Expert',
|
|
56
|
+
status: 'Requested',
|
|
57
|
+
message: textareaValue,
|
|
58
|
+
}] :
|
|
59
|
+
[{
|
|
60
|
+
clientId: +(project === null || project === void 0 ? void 0 : project.clientId),
|
|
61
|
+
freelancerId: +freelancerId,
|
|
62
|
+
projectId: +(project === null || project === void 0 ? void 0 : project.id),
|
|
63
|
+
requestedBy: 'Expert',
|
|
64
|
+
status: 'Requested',
|
|
65
|
+
message: textareaValue,
|
|
66
|
+
}];
|
|
67
|
+
if (textareaValue.length < 100) {
|
|
68
|
+
setShowError(true);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
createOrUpdateRatingRequestMutation({
|
|
72
|
+
variables: {
|
|
73
|
+
input: inputData,
|
|
74
|
+
},
|
|
75
|
+
}).then(() => {
|
|
76
|
+
refetchParoProjects && refetchParoProjects();
|
|
77
|
+
setHighlightedRatings && setHighlightedRatings((prevState) => prevState.map((project) => {
|
|
78
|
+
if (selectedProject && project.id === selectedProject) {
|
|
79
|
+
return Object.assign(Object.assign({}, project), { ratingRequest: [Object.assign(Object.assign({}, project.ratingRequest[0]), { status: "Requested" })] });
|
|
80
|
+
}
|
|
81
|
+
return project;
|
|
82
|
+
}));
|
|
83
|
+
setRequestStatus('Requested');
|
|
84
|
+
(0, react_hot_toast_1.default)(react_1.default.createElement(base_ui_1.Alert, { color: "success", icon: "success", label: `Request Submitted Successfully` }), {
|
|
85
|
+
position: 'bottom-right',
|
|
86
|
+
style: { borderRadius: '8px' },
|
|
87
|
+
});
|
|
88
|
+
setSelectedProject && setSelectedProject(null);
|
|
89
|
+
setRequestModal(false);
|
|
90
|
+
})
|
|
91
|
+
.catch((error) => {
|
|
92
|
+
console.error(error);
|
|
93
|
+
(0, react_hot_toast_1.default)(react_1.default.createElement(base_ui_1.Alert, { color: "danger", icon: "danger", label: `Failed to Send Request` }), {
|
|
94
|
+
position: 'bottom-right',
|
|
95
|
+
style: { borderRadius: '8px' },
|
|
96
|
+
});
|
|
97
|
+
}).finally(() => {
|
|
98
|
+
setLoading(false);
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
const handleOnClose = () => {
|
|
102
|
+
setRequestModal(false);
|
|
103
|
+
setSelectedProject && setSelectedProject(null);
|
|
104
|
+
};
|
|
105
|
+
return (react_1.default.createElement(base_ui_1.Modal, { size: "sm", open: requestModal, onClose: () => handleOnClose(), className: "request-review-modal" },
|
|
106
|
+
react_1.default.createElement("h1", { className: "font-bold text-2xl text-center my-2" }, "Request a Review"),
|
|
107
|
+
react_1.default.createElement("h2", { className: "font-bold text-center" }, "Boost Your Reputation and Attract More Clients"),
|
|
108
|
+
react_1.default.createElement("p", { className: "text-center my-2" },
|
|
109
|
+
"Client reviews are a key factor in building your reputation and growing your business on Paro.",
|
|
110
|
+
react_1.default.createElement("span", { className: "font-bold ml-1" }, "Here's why they are crucial: ")),
|
|
111
|
+
react_1.default.createElement("p", null,
|
|
112
|
+
react_1.default.createElement("span", { className: "font-bold my-2" },
|
|
113
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCheck, className: "text-green-500 mr-2" }),
|
|
114
|
+
"Enhance Your Credibility :"),
|
|
115
|
+
react_1.default.createElement("span", { className: "ml-2" }, "Positive reviews from clients act as testimonials to your skills and professionalism. They provide social proof to potential clients, making them more likely to hire you.")),
|
|
116
|
+
react_1.default.createElement("br", null),
|
|
117
|
+
react_1.default.createElement("p", null,
|
|
118
|
+
react_1.default.createElement("span", { className: "font-bold my-2" },
|
|
119
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCheck, className: "text-green-500 mr-2" }),
|
|
120
|
+
" Gain Valuable Feedback :"),
|
|
121
|
+
react_1.default.createElement("span", { className: "ml-2" }, "Constructive feedback helps you understand what you're doing well and where you can improve. This allows you to continuously enhance your services and client satisfaction.")),
|
|
122
|
+
react_1.default.createElement("br", null),
|
|
123
|
+
react_1.default.createElement("p", null,
|
|
124
|
+
react_1.default.createElement("span", { className: "font-bold my-2" },
|
|
125
|
+
react_1.default.createElement(react_fontawesome_1.FontAwesomeIcon, { icon: free_solid_svg_icons_1.faCheck, className: "text-green-500 mr-2" }),
|
|
126
|
+
" Build Trust :"),
|
|
127
|
+
react_1.default.createElement("span", { className: "ml-2" }, "Clients are more likely to trust and hire Experts who have a track record of successful projects and satisfied clients. Reviews help build this trust and establish you as a reliable professional.")),
|
|
128
|
+
react_1.default.createElement("h2", { className: "font-bold text-center my-4" }, "Please modify the message below to your liking"),
|
|
129
|
+
react_1.default.createElement("textarea", { rows: 10, cols: 56, value: textareaValue, className: "overflow-auto my-4 text-left w-full bg-stone-200 p-4 text-gray-500", onChange: (e) => handleTextArea(e) }),
|
|
130
|
+
showError && react_1.default.createElement("p", { className: "text-red-600 font-medium mb-2" }, "Minimum 100 characters required*"),
|
|
131
|
+
react_1.default.createElement("div", { className: "justify-center w-full flex" },
|
|
132
|
+
react_1.default.createElement(base_ui_1.Button, { label: "CANCEL", className: "mx-4", onClick: () => setRequestModal(false), disabled: loading }),
|
|
133
|
+
react_1.default.createElement(base_ui_1.Button, { label: "SEND REQUEST", color: "primary", onClick: handleSubmit, isLoading: loading, disabled: showError }))));
|
|
134
|
+
};
|
|
135
|
+
exports.ReviewRequestModal = ReviewRequestModal;
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface RightCardUIProps {
|
|
3
|
-
project: any;
|
|
4
|
-
expertName: string;
|
|
5
|
-
freelancerId: number;
|
|
6
|
-
freelancerEmail: string;
|
|
7
|
-
isAuthenticated: boolean;
|
|
8
|
-
editEndDate: any;
|
|
9
|
-
setEditEndDate: (editEndDate: any) => void;
|
|
10
|
-
editStartDate: any;
|
|
11
|
-
setEditStartDate: (editStartDate: any) => void;
|
|
12
|
-
showTimeModal: boolean;
|
|
13
|
-
setShowTimeModal: (showTimeModal: boolean) => void;
|
|
14
|
-
setSingleProjectData: any;
|
|
15
|
-
projectData: any;
|
|
16
|
-
checkStartDate: any;
|
|
17
|
-
activeProject: any;
|
|
18
|
-
projectFrequencyType: any;
|
|
19
|
-
projectRateType: string;
|
|
20
|
-
upcomingProject: any;
|
|
21
|
-
selectedTab: number;
|
|
22
|
-
showRating: boolean;
|
|
23
|
-
projectTagsMap: any;
|
|
24
|
-
updateProjectStatusMutation: any;
|
|
25
|
-
GetAllProjectIrprDetailsForFreelancerDocument: any;
|
|
26
|
-
updateParoProjectTagsMutation: any;
|
|
27
|
-
GetParoProjectsDocument: any;
|
|
28
|
-
updateProjectTagReviewStatusMutation: any;
|
|
29
|
-
updateProjectStatus: any;
|
|
30
|
-
updateProjectTags: any;
|
|
31
|
-
getSowLazyQuery: any;
|
|
32
|
-
sendParoSupportEmail: any;
|
|
33
|
-
createChangeRequestMutation: any;
|
|
34
|
-
createChangeRequest: any;
|
|
35
|
-
createOrUpdateRatingRequestMutation: any;
|
|
36
|
-
submitProjectHoursMutation: any;
|
|
37
|
-
getAuth0Roles: any;
|
|
38
|
-
submitProjectHoursLambda: any;
|
|
39
|
-
user: any;
|
|
40
|
-
internalPortal: boolean;
|
|
41
|
-
csmUserGroup: boolean;
|
|
42
|
-
clientPortal: boolean;
|
|
43
|
-
signedSow: boolean;
|
|
44
|
-
}
|
|
45
|
-
export declare const RightCardUI: ({ project, expertName, freelancerId, freelancerEmail, isAuthenticated, editEndDate, setEditEndDate, editStartDate, setEditStartDate, showTimeModal, setShowTimeModal, setSingleProjectData, projectData, checkStartDate, activeProject, projectFrequencyType, projectRateType, upcomingProject, selectedTab, showRating, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, user, internalPortal, csmUserGroup, clientPortal, signedSow, }: RightCardUIProps) => React.JSX.Element;
|
|
46
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface RightCardUIProps {
|
|
3
|
+
project: any;
|
|
4
|
+
expertName: string;
|
|
5
|
+
freelancerId: number;
|
|
6
|
+
freelancerEmail: string;
|
|
7
|
+
isAuthenticated: boolean;
|
|
8
|
+
editEndDate: any;
|
|
9
|
+
setEditEndDate: (editEndDate: any) => void;
|
|
10
|
+
editStartDate: any;
|
|
11
|
+
setEditStartDate: (editStartDate: any) => void;
|
|
12
|
+
showTimeModal: boolean;
|
|
13
|
+
setShowTimeModal: (showTimeModal: boolean) => void;
|
|
14
|
+
setSingleProjectData: any;
|
|
15
|
+
projectData: any;
|
|
16
|
+
checkStartDate: any;
|
|
17
|
+
activeProject: any;
|
|
18
|
+
projectFrequencyType: any;
|
|
19
|
+
projectRateType: string;
|
|
20
|
+
upcomingProject: any;
|
|
21
|
+
selectedTab: number;
|
|
22
|
+
showRating: boolean;
|
|
23
|
+
projectTagsMap: any;
|
|
24
|
+
updateProjectStatusMutation: any;
|
|
25
|
+
GetAllProjectIrprDetailsForFreelancerDocument: any;
|
|
26
|
+
updateParoProjectTagsMutation: any;
|
|
27
|
+
GetParoProjectsDocument: any;
|
|
28
|
+
updateProjectTagReviewStatusMutation: any;
|
|
29
|
+
updateProjectStatus: any;
|
|
30
|
+
updateProjectTags: any;
|
|
31
|
+
getSowLazyQuery: any;
|
|
32
|
+
sendParoSupportEmail: any;
|
|
33
|
+
createChangeRequestMutation: any;
|
|
34
|
+
createChangeRequest: any;
|
|
35
|
+
createOrUpdateRatingRequestMutation: any;
|
|
36
|
+
submitProjectHoursMutation: any;
|
|
37
|
+
getAuth0Roles: any;
|
|
38
|
+
submitProjectHoursLambda: any;
|
|
39
|
+
user: any;
|
|
40
|
+
internalPortal: boolean;
|
|
41
|
+
csmUserGroup: boolean;
|
|
42
|
+
clientPortal: boolean;
|
|
43
|
+
signedSow: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare const RightCardUI: ({ project, expertName, freelancerId, freelancerEmail, isAuthenticated, editEndDate, setEditEndDate, editStartDate, setEditStartDate, showTimeModal, setShowTimeModal, setSingleProjectData, projectData, checkStartDate, activeProject, projectFrequencyType, projectRateType, upcomingProject, selectedTab, showRating, projectTagsMap, updateProjectStatusMutation, GetAllProjectIrprDetailsForFreelancerDocument, updateParoProjectTagsMutation, GetParoProjectsDocument, updateProjectTagReviewStatusMutation, updateProjectStatus, updateProjectTags, getSowLazyQuery, sendParoSupportEmail, createChangeRequestMutation, createChangeRequest, createOrUpdateRatingRequestMutation, submitProjectHoursMutation, getAuth0Roles, submitProjectHoursLambda, user, internalPortal, csmUserGroup, clientPortal, signedSow, }: RightCardUIProps) => React.JSX.Element;
|
|
46
|
+
export {};
|