@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.
@@ -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 ServiceLinesTemplate = ({ getFreelancerDataResult, createOrUpdateRates, getRatesByExpertId, updateExpert, openServiceLinesTemplate, setOpenServiceLinesTemplate, getServiceLines, legacyFreelancerId, expertId, isFirmProfile, serviceLineData, selectedServicesList = [], isInternalProfile = false, updateFreelancerPreferences, }) => {
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(((_a = serviceLinesResponse === null || serviceLinesResponse === void 0 ? void 0 : serviceLinesResponse.data) === null || _a === void 0 ? void 0 : _a.getServiceLines) || serviceLineData);
58
- const currentService = (_d = (_c = (_b = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _b === void 0 ? void 0 : _b.getExpertByLegacyFreelancerId) === null || _c === void 0 ? void 0 : _c.legacyMetadata) === null || _d === void 0 ? void 0 : _d.primaryServiceLine;
59
- const currentRate = (_g = (_f = (_e = freelancerResponse === null || freelancerResponse === void 0 ? void 0 : freelancerResponse.data) === null || _e === void 0 ? void 0 : _e.getExpertByLegacyFreelancerId) === null || _f === void 0 ? void 0 : _f.legacyMetadata) === null || _g === void 0 ? void 0 : _g.defaultHourlyRate;
60
- const expertRates = (_h = ratesResponse === null || ratesResponse === void 0 ? void 0 : ratesResponse.data) === null || _h === void 0 ? void 0 : _h.getRatesByExpertId;
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
- react_1.default.createElement(core_1.Grid, { style: { backgroundColor: '#132f4a', padding: 12 }, className: "service-lines-header" },
193
- 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' } },
194
- "Expand Your Expertise: Add More Services to Your Profile",
195
- 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 } })),
196
- react_1.default.createElement(core_1.Typography, { className: "headerMiddle", style: { color: '#ffffff', fontWeight: 200, fontStyle: 'italic', paddingLeft: 12 } }, "Why Add More Services?"),
197
- 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 },
198
- react_1.default.createElement(icons_1.AdjustRounded, { style: {
199
- marginRight: 8,
200
- color: '#2A9D8F',
201
- fontSize: 20
202
- }, className: "headerCircle" }),
203
- react_1.default.createElement(core_1.Typography, { className: "headerFeature", variant: "body2", style: { color: '#ffffff' } }, feature)))))),
204
- react_1.default.createElement(core_1.Grid, { container: true, style: { padding: 4 } },
205
- react_1.default.createElement(core_1.Typography, { variant: "h6", style: { marginLeft: 20, fontWeight: 500 } }, "Select from the following service lines:"),
206
- react_1.default.createElement(core_1.Grid, { container: true, direction: "row", justifyContent: "space-evenly", alignItems: "center" }, services === null || services === void 0 ? void 0 :
207
- services.map((service, index) => {
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.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paro.io/expert-shared-components",
3
- "version": "1.7.2",
3
+ "version": "1.7.4",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {