@paro.io/expert-shared-components 1.14.33 → 1.14.35

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.
Files changed (76) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/lib/components/ClientReferencesSection/DeleteButton.js +11 -11
  4. package/lib/components/ClientReferencesSection/ParoError.js +10 -10
  5. package/lib/components/ClientReferencesSection/TagsSection.js +2 -2
  6. package/lib/components/ClientReferencesSection/styles/BrandedTypography.js +2 -2
  7. package/lib/components/ClientReferencesSection/styles/Buttons.js +15 -15
  8. package/lib/components/ClientReferencesSection/styles/Name.js +5 -5
  9. package/lib/components/ClientReferencesSection/styles/NullContentConditionalColor.js +4 -4
  10. package/lib/components/ClientReferencesSection/styles/SectionBody.js +11 -11
  11. package/lib/components/ClientReferencesSection/styles/SectionTitle.js +6 -6
  12. package/lib/components/ClientReferencesSection/styles/Tags.js +2 -2
  13. package/lib/components/DiscussionThread/DiscussionThread.d.ts +25 -25
  14. package/lib/components/DiscussionThread/DiscussionThread.js +137 -137
  15. package/lib/components/DiscussionThread/chat.d.ts +22 -22
  16. package/lib/components/DiscussionThread/chat.js +106 -106
  17. package/lib/components/DiscussionThread/index.d.ts +1 -1
  18. package/lib/components/DiscussionThread/index.js +5 -5
  19. package/lib/components/DocumentCenter/DocumentTable.d.ts +15 -15
  20. package/lib/components/DocumentCenter/DocumentTable.js +350 -350
  21. package/lib/components/DocumentCenter/UploadFilesButton.d.ts +6 -6
  22. package/lib/components/DocumentCenter/UploadFilesButton.js +29 -29
  23. package/lib/components/EarningsTracker/ActiveProjectCard.d.ts +52 -52
  24. package/lib/components/EarningsTracker/ActiveProjectCard.js +161 -161
  25. package/lib/components/EarningsTracker/CenterCardUI.d.ts +13 -13
  26. package/lib/components/EarningsTracker/CenterCardUI.js +134 -134
  27. package/lib/components/EarningsTracker/EarningsTracker.d.ts +52 -52
  28. package/lib/components/EarningsTracker/EarningsTracker.js +508 -508
  29. package/lib/components/EarningsTracker/EditDateModal.d.ts +22 -22
  30. package/lib/components/EarningsTracker/EditDateModal.js +149 -149
  31. package/lib/components/EarningsTracker/EmailModal.d.ts +14 -14
  32. package/lib/components/EarningsTracker/EmailModal.js +79 -79
  33. package/lib/components/EarningsTracker/EndProjectModal.d.ts +56 -56
  34. package/lib/components/EarningsTracker/EndProjectModal.js +221 -221
  35. package/lib/components/EarningsTracker/LeftCardUI.d.ts +18 -18
  36. package/lib/components/EarningsTracker/LeftCardUI.js +189 -189
  37. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.d.ts +52 -52
  38. package/lib/components/EarningsTracker/LogTimeModalAuthenticated.js +358 -358
  39. package/lib/components/EarningsTracker/ProgressBar.d.ts +4 -4
  40. package/lib/components/EarningsTracker/ProgressBar.js +66 -66
  41. package/lib/components/EarningsTracker/ReviewRequestModal.d.ts +17 -17
  42. package/lib/components/EarningsTracker/ReviewRequestModal.js +135 -135
  43. package/lib/components/EarningsTracker/RightCardUI.d.ts +46 -46
  44. package/lib/components/EarningsTracker/RightCardUI.js +231 -231
  45. package/lib/components/EarningsTracker/index.d.ts +1 -1
  46. package/lib/components/EarningsTracker/index.js +5 -5
  47. package/lib/components/Escalations/CustomTag.d.ts +3 -3
  48. package/lib/components/Escalations/CustomTag.js +25 -25
  49. package/lib/components/Escalations/ViewReponseModal.d.ts +8 -8
  50. package/lib/components/Escalations/ViewReponseModal.js +27 -27
  51. package/lib/components/ExpertProfileHeader/ActionButtonSection.js +6 -6
  52. package/lib/components/ExpertProfileHeader/ProfileSection.js +7 -7
  53. package/lib/components/HeaderNavBar/index.d.ts +2 -1
  54. package/lib/components/HeaderNavBar/index.js +2 -2
  55. package/lib/components/Invoices/DiscussionSection.js +10 -3
  56. package/lib/components/Invoices/TestDecisionSection.d.ts +1 -1
  57. package/lib/components/Invoices/TestDecisionSection.js +126 -126
  58. package/lib/components/OrganizationChart/OrganizationChart.d.ts +15 -15
  59. package/lib/components/OrganizationChart/OrganizationChart.js +312 -312
  60. package/lib/components/OrganizationChart/PersonCard.js +5 -5
  61. package/lib/components/OrganizationChart/utils.js +79 -79
  62. package/lib/components/ProjectCard/ProgressBar.js +4 -4
  63. package/lib/components/ProjectCard/ReviewRequestModal.js +5 -5
  64. package/lib/components/ProjectIntelligence/MissingInformation/index.js +1 -1
  65. package/lib/components/Reviews/Pagination.js +6 -6
  66. package/lib/components/ReviewsTab/RatingHeader.js +6 -6
  67. package/lib/components/ReviewsTab/expert-shared-components.code-workspace +20 -20
  68. package/lib/components/ReviewsTab/reviewRequestModal.js +5 -5
  69. package/lib/components/shared/Image.js +13 -13
  70. package/lib/components/shared/ProfileTextField.d.ts +18 -18
  71. package/lib/components/shared/ProfileTextField.js +16 -16
  72. package/lib/components/shared/StyledActionButtons.d.ts +7 -7
  73. package/lib/components/shared/StyledActionButtons.js +15 -15
  74. package/lib/components/shared/ToastNotification.d.ts +10 -10
  75. package/lib/components/shared/ToastNotification.js +63 -63
  76. package/package.json +67 -67
@@ -1,27 +1,27 @@
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
- const react_1 = __importDefault(require("react"));
7
- const base_icons_1 = require("@paro.io/base-icons");
8
- const core_1 = require("@material-ui/core");
9
- const ViewResponseModal = ({ response, open, onClose, isExpert }) => {
10
- return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: onClose, maxWidth: 'sm' },
11
- react_1.default.createElement(core_1.DialogTitle, null,
12
- react_1.default.createElement("div", { className: "text-black mb-1 p-2 pl-4 absolute top-0 left-0 w-full flex flex-row justify-between items-center z-50" },
13
- react_1.default.createElement("div", { className: "flex flex-col items-start" },
14
- react_1.default.createElement("h1", { className: "text-md font-bold mr-2" }, isExpert ? 'Client Response' : 'Expert Response')),
15
- react_1.default.createElement("div", { className: "flex items-center space-x-4" },
16
- react_1.default.createElement(core_1.IconButton, { onClick: onClose },
17
- react_1.default.createElement(base_icons_1.IconX, null))))),
18
- react_1.default.createElement(core_1.DialogContent, null,
19
- react_1.default.createElement("div", { className: "bg-green-50 border-green-800 border border-l-4 rounded p-4 mt-4 mb-4" },
20
- react_1.default.createElement("p", { className: "text-sm font-medium" },
21
- "Status: ",
22
- react_1.default.createElement("span", { className: "font-normal" }, "Responded")),
23
- react_1.default.createElement("p", { className: "text-sm font-medium" },
24
- "Response: ",
25
- react_1.default.createElement("span", { className: "font-normal" }, response))))));
26
- };
27
- exports.default = ViewResponseModal;
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
+ const react_1 = __importDefault(require("react"));
7
+ const base_icons_1 = require("@paro.io/base-icons");
8
+ const core_1 = require("@material-ui/core");
9
+ const ViewResponseModal = ({ response, open, onClose, isExpert }) => {
10
+ return (react_1.default.createElement(core_1.Dialog, { open: open, onClose: onClose, maxWidth: 'sm' },
11
+ react_1.default.createElement(core_1.DialogTitle, null,
12
+ react_1.default.createElement("div", { className: "text-black mb-1 p-2 pl-4 absolute top-0 left-0 w-full flex flex-row justify-between items-center z-50" },
13
+ react_1.default.createElement("div", { className: "flex flex-col items-start" },
14
+ react_1.default.createElement("h1", { className: "text-md font-bold mr-2" }, isExpert ? 'Client Response' : 'Expert Response')),
15
+ react_1.default.createElement("div", { className: "flex items-center space-x-4" },
16
+ react_1.default.createElement(core_1.IconButton, { onClick: onClose },
17
+ react_1.default.createElement(base_icons_1.IconX, null))))),
18
+ react_1.default.createElement(core_1.DialogContent, null,
19
+ react_1.default.createElement("div", { className: "bg-green-50 border-green-800 border border-l-4 rounded p-4 mt-4 mb-4" },
20
+ react_1.default.createElement("p", { className: "text-sm font-medium" },
21
+ "Status: ",
22
+ react_1.default.createElement("span", { className: "font-normal" }, "Responded")),
23
+ react_1.default.createElement("p", { className: "text-sm font-medium" },
24
+ "Response: ",
25
+ react_1.default.createElement("span", { className: "font-normal" }, response))))));
26
+ };
27
+ exports.default = ViewResponseModal;
@@ -11,12 +11,12 @@ const CopyToClipboardAlert_1 = __importDefault(require("../shared/CopyToClipboar
11
11
  const colors_1 = __importDefault(require("../ClientReferencesSection/constants/colors"));
12
12
  const Banner_1 = __importDefault(require("./Banner"));
13
13
  const base_icons_1 = require("@paro.io/base-icons");
14
- const StyledButton = (0, styled_components_1.default)(core_1.Button) `
15
- margin: 0px !important;
16
- padding: 26px 0 18px 0 !important;
17
- span {
18
- color: ${colors_1.default.buttonText} !important
19
- }
14
+ const StyledButton = (0, styled_components_1.default)(core_1.Button) `
15
+ margin: 0px !important;
16
+ padding: 26px 0 18px 0 !important;
17
+ span {
18
+ color: ${colors_1.default.buttonText} !important
19
+ }
20
20
  `;
21
21
  const ActionButton = ({ title, ariaLabel, onClick, icon: Icon }) => (react_1.default.createElement(core_1.Tooltip, { arrow: true, placement: "top", interactive: true, className: "whitespace-nowrap", title: title },
22
22
  react_1.default.createElement(core_1.IconButton, { "aria-label": ariaLabel, onClick: onClick },
@@ -53,13 +53,13 @@ const formatPhoneNumber = (phone) => {
53
53
  return `(${numericPhone.slice(0, 3)}) ${numericPhone.slice(3, 6)} - ${numericPhone.slice(6)}`;
54
54
  };
55
55
  exports.formatPhoneNumber = formatPhoneNumber;
56
- exports.ProfilePhotoPreview = styled_components_1.default.img `
57
- height: 86px;
58
- width: 86px;
59
- border: 1px solid ${colors_1.default.lightGray};
60
- border-radius: 50%;
61
- object-fit: cover;
62
- object-position: top;
56
+ exports.ProfilePhotoPreview = styled_components_1.default.img `
57
+ height: 86px;
58
+ width: 86px;
59
+ border: 1px solid ${colors_1.default.lightGray};
60
+ border-radius: 50%;
61
+ object-fit: cover;
62
+ object-position: top;
63
63
  `;
64
64
  const ProfileSection = ({ legacyFreelancerId, imageUrl, shouldAllowEditProfile, firstName, lastName, primaryServiceLine, editServiceLine, city, stateAbbreviation, email, phone, setOpen, paroProjectsData, getUserDocument, uploadUserPhotoMutation, loadingNewImage, imageUpdateError, isInternal, getUserByEmail, updateUserEmail, updateUserMutation, getUserByEmailLazyQuery, updateUserPassword, verifyUserPassword, getExpertRates, paroTenure, hourlyRate, }) => {
65
65
  var _a;
@@ -14,6 +14,7 @@ type HeaderNavBarProps = {
14
14
  featureStatus?: Record<string, any>;
15
15
  updateExpert?: (args: any) => Promise<any>;
16
16
  expertId?: string;
17
+ firmAvailabilityEnabled?: boolean;
17
18
  };
18
- export declare const HeaderNavBar: ({ setOpenDocumentModal, setOpenServiceLinesTemplate, setOpenExpertWallet, isWalletTester, isClientPortal, setFaqModal, setOpenOrganizationModal, isAIGPEnabled, setOpenImportClients, setOpenFirmAvailabilityModal, isByob, featureStatus, updateExpert, expertId, }: HeaderNavBarProps) => React.JSX.Element;
19
+ export declare const HeaderNavBar: ({ setOpenDocumentModal, setOpenServiceLinesTemplate, setOpenExpertWallet, isWalletTester, isClientPortal, setFaqModal, setOpenOrganizationModal, isAIGPEnabled, setOpenImportClients, setOpenFirmAvailabilityModal, isByob, featureStatus, updateExpert, expertId, firmAvailabilityEnabled, }: HeaderNavBarProps) => React.JSX.Element;
19
20
  export {};
@@ -68,7 +68,7 @@ const CustomSwitch = (0, core_1.styled)(core_1.Switch)(({ theme }) => ({
68
68
  backgroundColor: '#FFFFFF',
69
69
  },
70
70
  }));
71
- const HeaderNavBar = ({ setOpenDocumentModal, setOpenServiceLinesTemplate, setOpenExpertWallet, isWalletTester = false, isClientPortal = false, setFaqModal, setOpenOrganizationModal, isAIGPEnabled = false, setOpenImportClients, setOpenFirmAvailabilityModal, isByob = false, featureStatus = {}, updateExpert, expertId, }) => {
71
+ const HeaderNavBar = ({ setOpenDocumentModal, setOpenServiceLinesTemplate, setOpenExpertWallet, isWalletTester = false, isClientPortal = false, setFaqModal, setOpenOrganizationModal, isAIGPEnabled = false, setOpenImportClients, setOpenFirmAvailabilityModal, isByob = false, featureStatus = {}, updateExpert, expertId, firmAvailabilityEnabled = false, }) => {
72
72
  const [value, setValue] = (0, react_1.useState)('');
73
73
  const [updating, setUpdtaing] = (0, react_1.useState)(false);
74
74
  (0, react_1.useEffect)(() => {
@@ -123,7 +123,7 @@ const HeaderNavBar = ({ setOpenDocumentModal, setOpenServiceLinesTemplate, setOp
123
123
  !isClientPortal && (react_1.default.createElement(base_ui_1.Button, { id: "service_lines_button", onClick: () => setOpenServiceLinesTemplate(true), label: "Service Lines", iconLeft: react_1.default.createElement(base_icons_1.IconBriefcase, { size: "md" }), size: "sm" })),
124
124
  react_1.default.createElement(base_ui_1.Button, { id: "document_center_button", onClick: () => setOpenDocumentModal(true), label: "Document Center", iconLeft: react_1.default.createElement(base_icons_1.IconDocumentText, { size: "md" }), size: "sm" }),
125
125
  react_1.default.createElement(base_ui_1.Button, { id: "reactour__faqbutton", onClick: () => { setFaqModal(true); }, label: "FAQ", iconLeft: react_1.default.createElement(icons_1.ForumOutlined, { fontSize: "medium", className: "text-black" }), size: "sm" }),
126
- react_1.default.createElement(base_ui_1.Button, { id: "firm_availaibility_button", onClick: () => { setOpenFirmAvailabilityModal && setOpenFirmAvailabilityModal(true); }, label: "Firm Availability", iconLeft: react_1.default.createElement(base_icons_1.IconCalendar, { size: "md" }), size: "sm" })),
126
+ firmAvailabilityEnabled && !isClientPortal && react_1.default.createElement(base_ui_1.Button, { id: "firm_availaibility_button", onClick: () => { setOpenFirmAvailabilityModal && setOpenFirmAvailabilityModal(true); }, label: "Firm Availability", iconLeft: react_1.default.createElement(base_icons_1.IconCalendar, { size: "md" }), size: "sm" })),
127
127
  react_1.default.createElement(react_hot_toast_1.Toaster, { position: "top-center", toastOptions: {
128
128
  style: {
129
129
  zIndex: 9999,
@@ -212,13 +212,20 @@ const DiscussionSection = ({ disputeId, escalationNumber, currentUser, messages,
212
212
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
213
213
  react_1.default.createElement("input", { type: "radio", checked: visibility === 'ALL', onChange: () => setVisibility('ALL'), className: "form-radio text-[#248384]" }),
214
214
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "All")))),
215
- !internalEscalationTo && clientEscalationTo === 'paro' && (react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
216
- react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
217
- react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only"))),
215
+ !internalEscalationTo && clientEscalationTo === 'paro' && (react_1.default.createElement(react_1.default.Fragment, null,
216
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
217
+ react_1.default.createElement("input", { type: "radio", checked: true, readOnly: true, className: "form-radio text-[#248384]" }),
218
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")),
219
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
220
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'CLIENT_INTERNAL_ONLY', onChange: () => setVisibility('CLIENT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
221
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Client Only")))),
218
222
  !internalEscalationTo && clientEscalationTo === 'both' && (react_1.default.createElement(react_1.default.Fragment, null,
219
223
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
220
224
  react_1.default.createElement("input", { type: "radio", checked: visibility === 'EXPERT_INTERNAL_ONLY', onChange: () => setVisibility('EXPERT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
221
225
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Expert Only")),
226
+ react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
227
+ react_1.default.createElement("input", { type: "radio", checked: visibility === 'CLIENT_INTERNAL_ONLY', onChange: () => setVisibility('CLIENT_INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
228
+ react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Client Only")),
222
229
  react_1.default.createElement("label", { className: "flex items-center space-x-2 cursor-pointer" },
223
230
  react_1.default.createElement("input", { type: "radio", checked: visibility === 'INTERNAL_ONLY', onChange: () => setVisibility('INTERNAL_ONLY'), className: "form-radio text-[#248384]" }),
224
231
  react_1.default.createElement("span", { className: "text-sm text-[#333333]" }, "Internal Only")),
@@ -1 +1 @@
1
- export declare const TestDecisionSection: () => JSX.Element;
1
+ export declare const TestDecisionSection: () => JSX.Element;
@@ -1,126 +1,126 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.TestDecisionSection = void 0;
16
- const react_1 = __importDefault(require("react"));
17
- const DecisionSection_1 = require("./DecisionSection");
18
- // Test data from the provided JSON
19
- const testDispute = {
20
- "__typename": "ClientInvoiceDispute",
21
- "disputeId": 35,
22
- "approvedAmount": 450,
23
- "chatEnabled": true,
24
- "disputeDate": "2025-05-22",
25
- "disputeUpdatedDate": "2025-05-23",
26
- "freelancerId": 8081,
27
- "freelancer": {
28
- "__typename": "User",
29
- "id": 8081,
30
- "email": "andpande@gmail.com",
31
- "firstName": "William",
32
- "lastName": "Annon"
33
- },
34
- "status": "Resolved",
35
- "finalDecisionOwnerId": 29005,
36
- "invoice": {
37
- "__typename": "ClientInvoice",
38
- "amount": 450,
39
- "balanceDue": 450,
40
- "clientId": 4433,
41
- "dateGenerated": "2025-04-14",
42
- "id": 175325,
43
- "month": "2025-04-01"
44
- },
45
- "disputeProjects": [
46
- {
47
- "__typename": "ClientInvoiceDisputeProject",
48
- "id": 37,
49
- "projectId": 19158,
50
- "disputeAmount": 450,
51
- "disputeHours": 30,
52
- "disputeType": "Hourly",
53
- "disputeReasonCode": "Incorrect Hours Logged",
54
- "clientExplanation": "I have a dispute over this expert for the current invoice 175325",
55
- "clientDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2Ftesting.pdf,https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F_Carmelita_Resume-Graduation__1_.docx",
56
- "expertDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F0eb4b31b-b6d8-4cd1-b6ac-39b807ea4577.pdf",
57
- "resolutionMode": null,
58
- "resolutionType": null,
59
- "project": {
60
- "__typename": "Project",
61
- "name": "Ongoing Ad-Hoc Support",
62
- "freelancerRate": null,
63
- "clientRate": null,
64
- "projectHours": [
65
- {
66
- "__typename": "ProjectHour",
67
- "id": 136605,
68
- "date": "2022-02-11",
69
- "description": "Ate Tacos",
70
- "hours": 8
71
- },
72
- {
73
- "__typename": "ProjectHour",
74
- "id": 136606,
75
- "date": "2022-02-12",
76
- "description": "Worked on project analysis",
77
- "hours": 6
78
- },
79
- {
80
- "__typename": "ProjectHour",
81
- "id": 136607,
82
- "date": "2022-02-13",
83
- "description": "Client meeting and documentation",
84
- "hours": 4
85
- },
86
- {
87
- "__typename": "ProjectHour",
88
- "id": 136608,
89
- "date": "2022-02-14",
90
- "description": "Code review and testing",
91
- "hours": 7
92
- },
93
- {
94
- "__typename": "ProjectHour",
95
- "id": 136609,
96
- "date": "2022-02-15",
97
- "description": "Final deliverable preparation",
98
- "hours": 5
99
- }
100
- ]
101
- }
102
- }
103
- ],
104
- "lastMessageAt": "2025-05-23T10:56:53.000Z",
105
- "messageCount": 5,
106
- "client": {
107
- "__typename": "Client",
108
- "name": "Vessel Advisors"
109
- }
110
- };
111
- const testUser = {
112
- userId: 29005,
113
- firstName: "Test",
114
- lastName: "User"
115
- };
116
- const TestDecisionSection = () => {
117
- const mockOnUpdateDispute = (variables) => __awaiter(void 0, void 0, void 0, function* () {
118
- console.log('Mock update dispute called with:', variables);
119
- return Promise.resolve({ success: true });
120
- });
121
- const mockUpdateInvoiceMutation = {};
122
- return (react_1.default.createElement("div", { className: "p-8 max-w-4xl mx-auto" },
123
- react_1.default.createElement("h1", { className: "text-2xl font-bold mb-6" }, "Test Decision Section with Hours Modal"),
124
- react_1.default.createElement(DecisionSection_1.DecisionSection, { dispute: testDispute, onUpdateDispute: mockOnUpdateDispute, updateInvoiceMutation: mockUpdateInvoiceMutation, user: testUser })));
125
- };
126
- exports.TestDecisionSection = TestDecisionSection;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.TestDecisionSection = void 0;
16
+ const react_1 = __importDefault(require("react"));
17
+ const DecisionSection_1 = require("./DecisionSection");
18
+ // Test data from the provided JSON
19
+ const testDispute = {
20
+ "__typename": "ClientInvoiceDispute",
21
+ "disputeId": 35,
22
+ "approvedAmount": 450,
23
+ "chatEnabled": true,
24
+ "disputeDate": "2025-05-22",
25
+ "disputeUpdatedDate": "2025-05-23",
26
+ "freelancerId": 8081,
27
+ "freelancer": {
28
+ "__typename": "User",
29
+ "id": 8081,
30
+ "email": "andpande@gmail.com",
31
+ "firstName": "William",
32
+ "lastName": "Annon"
33
+ },
34
+ "status": "Resolved",
35
+ "finalDecisionOwnerId": 29005,
36
+ "invoice": {
37
+ "__typename": "ClientInvoice",
38
+ "amount": 450,
39
+ "balanceDue": 450,
40
+ "clientId": 4433,
41
+ "dateGenerated": "2025-04-14",
42
+ "id": 175325,
43
+ "month": "2025-04-01"
44
+ },
45
+ "disputeProjects": [
46
+ {
47
+ "__typename": "ClientInvoiceDisputeProject",
48
+ "id": 37,
49
+ "projectId": 19158,
50
+ "disputeAmount": 450,
51
+ "disputeHours": 30,
52
+ "disputeType": "Hourly",
53
+ "disputeReasonCode": "Incorrect Hours Logged",
54
+ "clientExplanation": "I have a dispute over this expert for the current invoice 175325",
55
+ "clientDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2Ftesting.pdf,https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F_Carmelita_Resume-Graduation__1_.docx",
56
+ "expertDocumentLinks": "https://expert-client-dispute-files.s3.amazonaws.com/project-19158%2F0eb4b31b-b6d8-4cd1-b6ac-39b807ea4577.pdf",
57
+ "resolutionMode": null,
58
+ "resolutionType": null,
59
+ "project": {
60
+ "__typename": "Project",
61
+ "name": "Ongoing Ad-Hoc Support",
62
+ "freelancerRate": null,
63
+ "clientRate": null,
64
+ "projectHours": [
65
+ {
66
+ "__typename": "ProjectHour",
67
+ "id": 136605,
68
+ "date": "2022-02-11",
69
+ "description": "Ate Tacos",
70
+ "hours": 8
71
+ },
72
+ {
73
+ "__typename": "ProjectHour",
74
+ "id": 136606,
75
+ "date": "2022-02-12",
76
+ "description": "Worked on project analysis",
77
+ "hours": 6
78
+ },
79
+ {
80
+ "__typename": "ProjectHour",
81
+ "id": 136607,
82
+ "date": "2022-02-13",
83
+ "description": "Client meeting and documentation",
84
+ "hours": 4
85
+ },
86
+ {
87
+ "__typename": "ProjectHour",
88
+ "id": 136608,
89
+ "date": "2022-02-14",
90
+ "description": "Code review and testing",
91
+ "hours": 7
92
+ },
93
+ {
94
+ "__typename": "ProjectHour",
95
+ "id": 136609,
96
+ "date": "2022-02-15",
97
+ "description": "Final deliverable preparation",
98
+ "hours": 5
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ ],
104
+ "lastMessageAt": "2025-05-23T10:56:53.000Z",
105
+ "messageCount": 5,
106
+ "client": {
107
+ "__typename": "Client",
108
+ "name": "Vessel Advisors"
109
+ }
110
+ };
111
+ const testUser = {
112
+ userId: 29005,
113
+ firstName: "Test",
114
+ lastName: "User"
115
+ };
116
+ const TestDecisionSection = () => {
117
+ const mockOnUpdateDispute = (variables) => __awaiter(void 0, void 0, void 0, function* () {
118
+ console.log('Mock update dispute called with:', variables);
119
+ return Promise.resolve({ success: true });
120
+ });
121
+ const mockUpdateInvoiceMutation = {};
122
+ return (react_1.default.createElement("div", { className: "p-8 max-w-4xl mx-auto" },
123
+ react_1.default.createElement("h1", { className: "text-2xl font-bold mb-6" }, "Test Decision Section with Hours Modal"),
124
+ react_1.default.createElement(DecisionSection_1.DecisionSection, { dispute: testDispute, onUpdateDispute: mockOnUpdateDispute, updateInvoiceMutation: mockUpdateInvoiceMutation, user: testUser })));
125
+ };
126
+ exports.TestDecisionSection = TestDecisionSection;
@@ -1,15 +1,15 @@
1
- interface OrgChartProps {
2
- openModal: boolean;
3
- setOpenModal: (openModal: boolean) => void;
4
- expertFirms: any;
5
- firstName: string;
6
- lastName: string;
7
- imageUrl?: string;
8
- primaryServiceLine: string;
9
- city: string;
10
- stateAbbreviation: string;
11
- paroTenure?: string;
12
- isPublicProfile?: boolean;
13
- }
14
- export declare const OrganizationChart: ({ openModal, setOpenModal, expertFirms, firstName, lastName, imageUrl, primaryServiceLine, city, stateAbbreviation, paroTenure, isPublicProfile }: OrgChartProps) => JSX.Element;
15
- export {};
1
+ interface OrgChartProps {
2
+ openModal: boolean;
3
+ setOpenModal: (openModal: boolean) => void;
4
+ expertFirms: any;
5
+ firstName: string;
6
+ lastName: string;
7
+ imageUrl?: string;
8
+ primaryServiceLine: string;
9
+ city: string;
10
+ stateAbbreviation: string;
11
+ paroTenure?: string;
12
+ isPublicProfile?: boolean;
13
+ }
14
+ export declare const OrganizationChart: ({ openModal, setOpenModal, expertFirms, firstName, lastName, imageUrl, primaryServiceLine, city, stateAbbreviation, paroTenure, isPublicProfile }: OrgChartProps) => JSX.Element;
15
+ export {};