@paro.io/expert-shared-components 1.7.2 → 1.7.4
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/lib/components/DocumentCenter/DocumentCenter.js +4 -3
- package/lib/components/ServiceLinesTemplate/index.d.ts +2 -1
- package/lib/components/ServiceLinesTemplate/index.js +151 -44
- package/lib/components/shared/utils.d.ts +1 -0
- package/lib/components/shared/utils.js +7 -1
- package/package.json +1 -1
|
@@ -126,13 +126,14 @@ const DocumentCenter = ({ legacyFreelancerId, openModal, setOpenModal, expertCli
|
|
|
126
126
|
}
|
|
127
127
|
}, [openModal]);
|
|
128
128
|
(0, react_1.useEffect)(() => {
|
|
129
|
-
if (clientFilesData && clientFilesData.length > 0)
|
|
129
|
+
if ((clientFilesData && clientFilesData.length > 0) ||
|
|
130
|
+
(expertProjectsList && expertProjectsList.length > 0)) {
|
|
130
131
|
setExpertClientFiles(clientFilesData !== null && clientFilesData !== void 0 ? clientFilesData : []);
|
|
131
132
|
setClientAndProjects(expertProjectsList !== null && expertProjectsList !== void 0 ? expertProjectsList : []);
|
|
132
|
-
setExpertFiles(clientFilesData);
|
|
133
|
+
setExpertFiles(clientFilesData !== null && clientFilesData !== void 0 ? clientFilesData : []);
|
|
133
134
|
loading = false;
|
|
134
135
|
}
|
|
135
|
-
}, [clientFilesData]);
|
|
136
|
+
}, [clientFilesData, expertProjectsList]);
|
|
136
137
|
const handleChange = (event, newValue) => {
|
|
137
138
|
if (newValue >= 0) {
|
|
138
139
|
setValue(newValue);
|
|
@@ -16,6 +16,7 @@ type ServiceLinesTemplateProps = {
|
|
|
16
16
|
servicePricesList?: any;
|
|
17
17
|
isInternalProfile?: boolean;
|
|
18
18
|
updateFreelancerPreferences?: any;
|
|
19
|
+
getExpertVanityTitles?: any;
|
|
19
20
|
};
|
|
20
|
-
export declare const ServiceLinesTemplate: ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate, setOpenServiceLinesTemplate, getServiceLines, legacyFreelancerId, expertId, isFirmProfile, serviceLineData, selectedServicesList, isInternalProfile, updateFreelancerPreferences, }: ServiceLinesTemplateProps) => false | React.JSX.Element | undefined;
|
|
21
|
+
export declare const ServiceLinesTemplate: ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate, setOpenServiceLinesTemplate, getServiceLines, legacyFreelancerId, expertId, isFirmProfile, serviceLineData, selectedServicesList, isInternalProfile, updateFreelancerPreferences, getExpertVanityTitles, }: ServiceLinesTemplateProps) => false | React.JSX.Element | undefined;
|
|
21
22
|
export {};
|
|
@@ -39,26 +39,41 @@ const icons_1 = require("@material-ui/icons");
|
|
|
39
39
|
const ReviewsTab_1 = require("../ReviewsTab/ReviewsTab");
|
|
40
40
|
const base_ui_1 = require("@paro.io/base-ui");
|
|
41
41
|
const utils_1 = require("../shared/utils");
|
|
42
|
-
const
|
|
42
|
+
const lab_1 = require("@material-ui/lab");
|
|
43
|
+
const react_hot_toast_1 = require("react-hot-toast");
|
|
44
|
+
const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate, setOpenServiceLinesTemplate, getServiceLines, legacyFreelancerId, expertId, isFirmProfile, serviceLineData, selectedServicesList = [], isInternalProfile = false, updateFreelancerPreferences, getExpertVanityTitles, }) => {
|
|
43
45
|
const [selectedServices, dispatch] = (0, react_1.useReducer)(utils_1.selectedServicesReducer, selectedServicesList);
|
|
44
46
|
const [updateClicked, setUpdateClicked] = (0, react_1.useState)(false);
|
|
45
47
|
const [loading, setLoading] = (0, react_1.useState)(false);
|
|
46
48
|
const [serviceLines, setServiceLines] = (0, react_1.useState)(serviceLineData);
|
|
47
49
|
const [currentServiveRate, setCurrentServiceRate] = (0, react_1.useState)(null);
|
|
50
|
+
const [value, setValue] = (0, react_1.useState)(0);
|
|
51
|
+
const [titleOptions, setTitleOptions] = (0, react_1.useState)([]);
|
|
52
|
+
const [selectedTitle, setSelectedTitle] = (0, react_1.useState)(null);
|
|
53
|
+
const [customTitle, setCustomTitle] = (0, react_1.useState)(null);
|
|
48
54
|
const fetchServiceLineData = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
49
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
55
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
50
56
|
try {
|
|
51
57
|
setLoading(true);
|
|
58
|
+
if (!isInternalProfile) {
|
|
59
|
+
const [expertVanityTitles] = yield Promise.all([
|
|
60
|
+
getExpertVanityTitles({ fetchPolicy: 'network-only' }),
|
|
61
|
+
]);
|
|
62
|
+
const expertTitles = (_a = expertVanityTitles === null || expertVanityTitles === void 0 ? void 0 : expertVanityTitles.data) === null || _a === void 0 ? void 0 : _a.getExpertVanityTitles;
|
|
63
|
+
setTitleOptions(expertTitles);
|
|
64
|
+
}
|
|
52
65
|
const [freelancerResponse, serviceLinesResponse, ratesResponse] = yield Promise.all([
|
|
53
66
|
getFreelancerDataResult({ variables: { legacyFreelancerId: legacyFreelancerId }, skip: !legacyFreelancerId, fetchPolicy: 'network-only' }),
|
|
54
67
|
getServiceLines({ fetchPolicy: 'network-only', }),
|
|
55
68
|
getRatesByExpertId({ variables: { expertId }, skip: !expertId, fetchPolicy: 'network-only' }),
|
|
56
69
|
]);
|
|
57
|
-
setServiceLines(((
|
|
58
|
-
const currentService = (
|
|
59
|
-
const currentRate = (
|
|
60
|
-
const expertRates = (
|
|
70
|
+
setServiceLines(((_b = serviceLinesResponse === null || serviceLinesResponse === void 0 ? void 0 : serviceLinesResponse.data) === null || _b === void 0 ? void 0 : _b.getServiceLines) || serviceLineData);
|
|
71
|
+
const currentService = (_e = (_d = (_c = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _c === void 0 ? void 0 : _c.getExpertByLegacyFreelancerId) === null || _d === void 0 ? void 0 : _d.legacyMetadata) === null || _e === void 0 ? void 0 : _e.primaryServiceLine;
|
|
72
|
+
const currentRate = (_h = (_g = (_f = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _f === void 0 ? void 0 : _f.getExpertByLegacyFreelancerId) === null || _g === void 0 ? void 0 : _g.legacyMetadata) === null || _h === void 0 ? void 0 : _h.defaultHourlyRate;
|
|
73
|
+
const expertRates = (_j = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.data) === null || _j === void 0 ? void 0 : _j.getRatesByExpertId;
|
|
61
74
|
setCurrentServiceRate(currentRate);
|
|
75
|
+
const isTitleExists = (_l = (_k = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _k === void 0 ? void 0 : _k.getExpertByLegacyFreelancerId) === null || _l === void 0 ? void 0 : _l.vanityTitle;
|
|
76
|
+
isTitleExists ? setSelectedTitle(isTitleExists) : setValue(1);
|
|
62
77
|
dispatch({
|
|
63
78
|
currentService,
|
|
64
79
|
currentRate,
|
|
@@ -103,6 +118,33 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
103
118
|
},
|
|
104
119
|
});
|
|
105
120
|
};
|
|
121
|
+
const handleUpdateExpertTitle = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
122
|
+
setUpdateClicked(true);
|
|
123
|
+
updateExpert({
|
|
124
|
+
variables: {
|
|
125
|
+
expertId: expertId,
|
|
126
|
+
input: {
|
|
127
|
+
vanityTitle: selectedTitle === 'Other' ? customTitle : selectedTitle
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
}).then(() => {
|
|
131
|
+
(0, ReviewsTab_1.toastNotification)({
|
|
132
|
+
position: 'top-center',
|
|
133
|
+
color: 'success',
|
|
134
|
+
message: 'Expertise title Updated successfully!',
|
|
135
|
+
icon: 'success',
|
|
136
|
+
});
|
|
137
|
+
}).catch((error) => {
|
|
138
|
+
(0, ReviewsTab_1.toastNotification)({
|
|
139
|
+
position: 'top-center',
|
|
140
|
+
color: 'warning',
|
|
141
|
+
message: 'Failed to update expertise title.',
|
|
142
|
+
icon: 'warning'
|
|
143
|
+
});
|
|
144
|
+
}).finally(() => {
|
|
145
|
+
setUpdateClicked(false);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
106
148
|
const handleUpdateProfile = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
149
|
try {
|
|
108
150
|
setUpdateClicked(true);
|
|
@@ -187,45 +229,110 @@ const ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, ge
|
|
|
187
229
|
type: 'update'
|
|
188
230
|
});
|
|
189
231
|
};
|
|
232
|
+
const handleChange = (event, newValue) => {
|
|
233
|
+
if (newValue >= 0) {
|
|
234
|
+
setValue(newValue);
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const handleChangeTitle = (event) => {
|
|
238
|
+
setSelectedTitle(event.target.value);
|
|
239
|
+
};
|
|
240
|
+
const ActionButtons = () => {
|
|
241
|
+
return react_1.default.createElement(core_1.Grid, { container: true, direction: "row", justifyContent: "space-evenly", style: { marginTop: 12 }, spacing: 1 },
|
|
242
|
+
react_1.default.createElement(base_ui_1.Button, { label: "UPDATE PROFILE", onClick: value === 1 ? handleUpdateExpertTitle : handleUpdateProfile, type: "button", isLoading: updateClicked, disabled: isUpdateButtonDisabled(), color: "primary" }),
|
|
243
|
+
react_1.default.createElement(base_ui_1.Button, { label: "NOT INTERESTED", onClick: handleNotInterestedClick, type: "button", disabled: updateClicked, isLoading: updateClicked }));
|
|
244
|
+
};
|
|
245
|
+
const ServiceLinesTab = () => {
|
|
246
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
247
|
+
react_1.default.createElement(core_1.Grid, { style: { backgroundColor: '#132f4a', padding: 12 }, className: "service-lines-header" },
|
|
248
|
+
react_1.default.createElement(core_1.Typography, { className: "headerTop", variant: "h5", style: { color: '#ffffff', fontWeight: 500, padding: 12, justifyContent: 'space-between', display: 'flex', alignItems: 'center' } },
|
|
249
|
+
"Expand Your Expertise: Add More Services to Your Profile",
|
|
250
|
+
react_1.default.createElement("img", { src: 'https://expert-files-dev.s3.us-east-1.amazonaws.com/ParoGroupLogo.png', alt: "Paro Group Logo", style: { width: 24, height: 24, marginLeft: 8 } })),
|
|
251
|
+
react_1.default.createElement(core_1.Typography, { className: "headerMiddle", style: { color: '#ffffff', fontWeight: 200, fontStyle: 'italic', paddingLeft: 12 } }, "Why Add More Services?"),
|
|
252
|
+
react_1.default.createElement(core_1.Grid, { container: true, spacing: 3, style: { padding: 12, color: '#ffffff' }, direction: "row", justifyContent: "flex-start", alignItems: "center" }, utils_1.features.map((feature, index) => (react_1.default.createElement(core_1.Box, { key: index, display: "flex", alignItems: "center", m: 2 },
|
|
253
|
+
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
254
|
+
marginRight: 8,
|
|
255
|
+
color: '#2A9D8F',
|
|
256
|
+
fontSize: 20
|
|
257
|
+
}, className: "headerCircle" }),
|
|
258
|
+
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { color: '#ffffff' } }, feature)))))),
|
|
259
|
+
react_1.default.createElement(core_1.Grid, { container: true, style: { padding: 4 } },
|
|
260
|
+
react_1.default.createElement(core_1.Typography, { variant: "h6", style: { marginLeft: 20, fontWeight: 500 } }, "Select from the following service lines:"),
|
|
261
|
+
react_1.default.createElement(core_1.Grid, { container: true, direction: "row", justifyContent: "space-evenly", alignItems: "center" }, services === null || services === void 0 ? void 0 :
|
|
262
|
+
services.map((service, index) => {
|
|
263
|
+
const serviceExistsInArray = selectedServices.find((svc) => svc.service === service.title);
|
|
264
|
+
return (react_1.default.createElement(core_1.Grid, { item: true, xs: 12, md: 5, key: index, style: { margin: 12 } },
|
|
265
|
+
react_1.default.createElement(core_1.Box, { sx: { display: "flex" } },
|
|
266
|
+
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center' },
|
|
267
|
+
react_1.default.createElement(CustomCheckbox, { checked: serviceExistsInArray, disabled: serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService, onChange: () => handleServiceToggle(service.title) })),
|
|
268
|
+
react_1.default.createElement(core_1.Box, { sx: { flex: 1 } },
|
|
269
|
+
react_1.default.createElement(core_1.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 2 } },
|
|
270
|
+
react_1.default.createElement(core_1.Box, null,
|
|
271
|
+
react_1.default.createElement(core_1.Typography, { component: "div", style: { fontWeight: 300, fontSize: 16 } },
|
|
272
|
+
service.title,
|
|
273
|
+
(serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService) && (react_1.default.createElement(core_1.Typography, { variant: "caption", style: { fontWeight: 400, fontSize: 16 } }, "\u00A0(current service line)"))),
|
|
274
|
+
react_1.default.createElement(core_1.Typography, { variant: "body2", style: { fontWeight: 50, fontSize: 14 } }, service.description)),
|
|
275
|
+
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center', ml: 4 },
|
|
276
|
+
react_1.default.createElement(core_1.TextField, { size: "small", variant: "outlined", value: (serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.rate) || '', onChange: (e) => handlePriceChange(service.title, e.target.value ? parseInt(e.target.value) : 0, serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService), InputProps: {
|
|
277
|
+
startAdornment: react_1.default.createElement(core_1.Typography, null, "$\u00A0"),
|
|
278
|
+
endAdornment: react_1.default.createElement(core_1.Typography, null, "\u00A0/hr"),
|
|
279
|
+
}, style: { width: 100 }, required: serviceExistsInArray, error: serviceExistsInArray && !serviceExistsInArray.rate, label: "Rate", className: "serviceLineRateInput" })))))));
|
|
280
|
+
}),
|
|
281
|
+
react_1.default.createElement(core_1.Grid, { item: true, xs: 12, md: 5, style: { margin: 5 } }, ActionButtons())))));
|
|
282
|
+
};
|
|
283
|
+
const VanityTitlesTab = () => {
|
|
284
|
+
var _a;
|
|
285
|
+
return react_1.default.createElement(core_1.Grid, { container: true, item: true, direction: "row", spacing: 1 },
|
|
286
|
+
react_1.default.createElement(core_1.Grid, { style: { backgroundColor: '#132f4a', padding: 12 }, xs: 12, sm: 6 },
|
|
287
|
+
react_1.default.createElement(core_1.Typography, { className: "headerTop", variant: "h5", style: { color: 'white', fontWeight: 500, padding: 12, justifyContent: 'space-between', display: 'flex', alignItems: 'center' } },
|
|
288
|
+
"Make your new identity standout",
|
|
289
|
+
react_1.default.createElement("img", { src: 'https://expert-files-dev.s3.us-east-1.amazonaws.com/ParoGroupLogo.png', alt: "Paro Group Logo", style: { width: 24, height: 24, marginLeft: 8 } })),
|
|
290
|
+
react_1.default.createElement(core_1.Typography, { className: "headerMiddle", style: { color: '#ffffff', fontWeight: 200, fontStyle: 'italic', paddingLeft: 12 } }, "Why Add a Job Title to Your Profile?"),
|
|
291
|
+
react_1.default.createElement(core_1.Grid, { container: true, spacing: 3, style: { padding: 12 }, direction: "row", justifyContent: "flex-start", alignItems: "center" }, utils_1.titleFeatures.map((feature, index) => {
|
|
292
|
+
const [boldText, text] = feature.split(':');
|
|
293
|
+
return react_1.default.createElement(core_1.Box, { key: index, display: "flex", alignItems: "center", m: 2 },
|
|
294
|
+
react_1.default.createElement(icons_1.AdjustRounded, { style: {
|
|
295
|
+
marginRight: 8,
|
|
296
|
+
color: '#2A9D8F',
|
|
297
|
+
fontSize: 20
|
|
298
|
+
}, className: "headerCircle" }),
|
|
299
|
+
react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { color: '#a5b1bc' } },
|
|
300
|
+
react_1.default.createElement("strong", { className: "text-[#f1f1f1]" },
|
|
301
|
+
boldText,
|
|
302
|
+
":"),
|
|
303
|
+
text));
|
|
304
|
+
}))),
|
|
305
|
+
react_1.default.createElement(core_1.Grid, { xs: 12, sm: 6, style: { paddingLeft: 18 }, container: true, direction: "column", justifyContent: "center", alignItems: "center" },
|
|
306
|
+
react_1.default.createElement(core_1.Box, null,
|
|
307
|
+
react_1.default.createElement(core_1.Typography, { variant: "h5", style: { fontWeight: 500 } }, "Expertise Title")),
|
|
308
|
+
react_1.default.createElement(core_1.Grid, { item: true, style: { marginBottom: 12, width: '70%' } },
|
|
309
|
+
react_1.default.createElement(core_1.Select, { required: true, autoWidth: false, variant: "outlined", fullWidth: true, defaultValue: titleOptions, onChange: (event) => handleChangeTitle(event), value: selectedTitle !== null && selectedTitle !== void 0 ? selectedTitle : (_a = titleOptions[0]) === null || _a === void 0 ? void 0 : _a.title },
|
|
310
|
+
titleOptions.length > 1 && (react_1.default.createElement(core_1.MenuItem, { disabled: true, value: "" },
|
|
311
|
+
react_1.default.createElement("em", null, "Select title"))),
|
|
312
|
+
titleOptions.map((option) => (react_1.default.createElement(core_1.MenuItem, { key: option.id, value: option.title }, option.title))),
|
|
313
|
+
react_1.default.createElement(core_1.MenuItem, { value: "Other" },
|
|
314
|
+
react_1.default.createElement("em", null, "Other")))),
|
|
315
|
+
selectedTitle === 'Other' && react_1.default.createElement(core_1.Grid, { item: true, style: { width: '70%' } },
|
|
316
|
+
react_1.default.createElement(core_1.TextField, { size: "small", variant: "outlined", value: customTitle, fullWidth: true, onChange: (e) => { setCustomTitle(e.target.value); }, placeholder: "Enter custom title" })),
|
|
317
|
+
ActionButtons()));
|
|
318
|
+
};
|
|
190
319
|
return (openServiceLinesTemplate && (react_1.default.createElement(core_1.Grid, { style: { backgroundColor: '#fff' } }, loading ? (react_1.default.createElement(core_1.Box, { display: "flex", justifyContent: "center", alignItems: "center", minHeight: "200px" },
|
|
191
320
|
react_1.default.createElement(core_1.CircularProgress, null))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
192
|
-
|
|
193
|
-
react_1.default.createElement(
|
|
194
|
-
|
|
195
|
-
react_1.default.createElement(
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
const serviceExistsInArray = selectedServices.find((svc) => svc.service === service.title);
|
|
209
|
-
return (react_1.default.createElement(core_1.Grid, { item: true, xs: 12, md: 5, key: index, style: { margin: 12 } },
|
|
210
|
-
react_1.default.createElement(core_1.Box, { sx: { display: "flex" } },
|
|
211
|
-
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center' },
|
|
212
|
-
react_1.default.createElement(CustomCheckbox, { checked: serviceExistsInArray, disabled: serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService, onChange: () => handleServiceToggle(service.title) })),
|
|
213
|
-
react_1.default.createElement(core_1.Box, { sx: { flex: 1 } },
|
|
214
|
-
react_1.default.createElement(core_1.Box, { sx: { display: "flex", justifyContent: "space-between", alignItems: "center", mb: 2 } },
|
|
215
|
-
react_1.default.createElement(core_1.Box, null,
|
|
216
|
-
react_1.default.createElement(core_1.Typography, { component: "div", style: { fontWeight: 300, fontSize: 16 } },
|
|
217
|
-
service.title,
|
|
218
|
-
(serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService) && (react_1.default.createElement(core_1.Typography, { variant: "caption", style: { fontWeight: 400, fontSize: 16 } }, "\u00A0(current service line)"))),
|
|
219
|
-
react_1.default.createElement(core_1.Typography, { variant: "body2", style: { fontWeight: 50, fontSize: 14 } }, service.description)),
|
|
220
|
-
react_1.default.createElement(core_1.Box, { display: 'flex', alignItems: 'center', ml: 4 },
|
|
221
|
-
react_1.default.createElement(core_1.TextField, { size: "small", variant: "outlined", value: (serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.rate) || '', onChange: (e) => handlePriceChange(service.title, e.target.value ? parseInt(e.target.value) : 0, serviceExistsInArray === null || serviceExistsInArray === void 0 ? void 0 : serviceExistsInArray.currentService), InputProps: {
|
|
222
|
-
startAdornment: react_1.default.createElement(core_1.Typography, null, "$\u00A0"),
|
|
223
|
-
endAdornment: react_1.default.createElement(core_1.Typography, null, "\u00A0/hr"),
|
|
224
|
-
}, style: { width: 100 }, required: serviceExistsInArray, error: serviceExistsInArray && !serviceExistsInArray.rate, label: "Rate", className: "serviceLineRateInput" })))))));
|
|
225
|
-
}),
|
|
226
|
-
react_1.default.createElement(core_1.Grid, { item: true, xs: 12, md: 5, style: { margin: 5 } },
|
|
227
|
-
react_1.default.createElement(core_1.Box, { sx: { display: "flex", justifyContent: "space-evenly", mt: 4 } },
|
|
228
|
-
react_1.default.createElement(base_ui_1.Button, { label: "UPDATE PROFILE", onClick: handleUpdateProfile, type: "button", disabled: isUpdateButtonDisabled(), color: "primary" }),
|
|
229
|
-
react_1.default.createElement(base_ui_1.Button, { label: "NOT INTERESTED", onClick: handleNotInterestedClick, type: "button", disabled: updateClicked }))))))))));
|
|
321
|
+
isInternalProfile ?
|
|
322
|
+
react_1.default.createElement(react_1.default.Fragment, null, ServiceLinesTab())
|
|
323
|
+
:
|
|
324
|
+
react_1.default.createElement(lab_1.TabContext, { value: value + '' },
|
|
325
|
+
react_1.default.createElement(core_1.AppBar, { position: 'static', color: 'inherit', style: { backgroundColor: 'transparent', boxShadow: 'none' } },
|
|
326
|
+
react_1.default.createElement(core_1.Tabs, { TabIndicatorProps: { style: { background: '#248384' } }, value: value, onChange: handleChange, variant: "scrollable", scrollButtons: "on" },
|
|
327
|
+
react_1.default.createElement(core_1.Tab, { label: react_1.default.createElement("div", { className: "flex flex-row self-center" }, "Add Additional Service Lines") }),
|
|
328
|
+
react_1.default.createElement(core_1.Tab, { label: react_1.default.createElement("div", { className: "flex flex-row self-center" }, "Add a Title to Your Profile") }))),
|
|
329
|
+
react_1.default.createElement(lab_1.TabPanel, { value: '0' }, ServiceLinesTab()),
|
|
330
|
+
react_1.default.createElement(lab_1.TabPanel, { value: '1' }, VanityTitlesTab())),
|
|
331
|
+
react_1.default.createElement(react_hot_toast_1.Toaster, { position: "top-center", toastOptions: {
|
|
332
|
+
style: {
|
|
333
|
+
zIndex: 9999,
|
|
334
|
+
backgroundColor: 'transparent'
|
|
335
|
+
},
|
|
336
|
+
} }))))));
|
|
230
337
|
};
|
|
231
338
|
exports.ServiceLinesTemplate = ServiceLinesTemplate;
|
|
@@ -36,6 +36,7 @@ export declare const DOCUMENT_TYPE_CONSTANTS: {
|
|
|
36
36
|
};
|
|
37
37
|
export declare const titleMappings: Record<string, string>;
|
|
38
38
|
export declare const features: string[];
|
|
39
|
+
export declare const titleFeatures: string[];
|
|
39
40
|
export declare const serviceDescriptions: Record<string, string>;
|
|
40
41
|
export declare const selectedServicesReducer: (selectedServices: any, action: any) => any;
|
|
41
42
|
export declare const sharedUtils: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sharedUtils = exports.selectedServicesReducer = exports.serviceDescriptions = exports.features = exports.titleMappings = exports.DOCUMENT_TYPE_CONSTANTS = exports.validateFileUpload = exports.showToast = exports.MAX_FILE_SIZE = exports.ACCEPTED_FILE_TYPES = exports.formatDate = exports.CustomPaper = exports.handleDownloadPdf = exports.getFileMimeType = exports.stateAbbreviationMap = exports.getPreviousMonthStartDate = exports.isOlderThan30Days = exports.formatTenure = exports.isOnClickEvent = void 0;
|
|
3
|
+
exports.sharedUtils = exports.selectedServicesReducer = exports.serviceDescriptions = exports.titleFeatures = exports.features = exports.titleMappings = exports.DOCUMENT_TYPE_CONSTANTS = exports.validateFileUpload = exports.showToast = exports.MAX_FILE_SIZE = exports.ACCEPTED_FILE_TYPES = exports.formatDate = exports.CustomPaper = exports.handleDownloadPdf = exports.getFileMimeType = exports.stateAbbreviationMap = exports.getPreviousMonthStartDate = exports.isOlderThan30Days = exports.formatTenure = exports.isOnClickEvent = void 0;
|
|
4
4
|
exports.getComparator = getComparator;
|
|
5
5
|
exports.stableSort = stableSort;
|
|
6
6
|
exports.compareItems = compareItems;
|
|
@@ -285,6 +285,12 @@ exports.features = [
|
|
|
285
285
|
"Stand out from competitors by showcasing the full range of your skills",
|
|
286
286
|
"Attract more opportunities to grow your business",
|
|
287
287
|
];
|
|
288
|
+
exports.titleFeatures = [
|
|
289
|
+
"Showcase Your Brand: Your job title is the first impression Clients get of your professional identity. Whether you call yourself a 'Consultant', 'Financial Strategist', or 'Business Advisor', this title tells Clients who you are at a glance.",
|
|
290
|
+
"Control your Narrative: Your job title gives you the opportunity to shape how Clients perceive you, positioning yourself as a trusted expert in your field.",
|
|
291
|
+
"Highlight your Versatitlity: If you work accross multiple functions, a job title reflects your ability to deliver a broad range of value. It helps Clients understand the bigger picture of your skill set.",
|
|
292
|
+
"Attract the right Clients: By choosing a title that aligns with your target audience, you make it easier for Clients to see you as the perfect fit for their needs.",
|
|
293
|
+
];
|
|
288
294
|
exports.serviceDescriptions = {
|
|
289
295
|
"Full Charge Bookkeeping": "Work directly with companies to set up, clean, maintain, and/or reconcile their books and records. This service requires in-depth expertise and insights into their financials. Example Deliverables: Chart of Accounts, Journal Entry Posting, etc.",
|
|
290
296
|
"Chief Financial Officer (CFO)": "A senior executive expected to offer financial guidance and strategy for for-profit and/or nonprofit organizations. From leading the entire finance function to going even deeper internally to help owners keep and strengthen their financial footing. 10+ years of professional corporate finance experience, MBA, CFA, and/or CPA's are common in this role.",
|