@next-degree/pickle-shared-js 0.11.0 → 0.12.2
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/dist/{company_service_sanity-CGNCrk8e.d.cts → company_service_sanity-2J1ZuUnu.d.cts} +384 -384
- package/dist/{company_service_sanity-CAyYirw5.d.ts → company_service_sanity-KaAGfnNV.d.ts} +384 -384
- package/dist/components/jobCard/JobLocation.cjs +97 -14
- package/dist/components/jobCard/JobLocation.cjs.map +1 -1
- package/dist/components/jobCard/JobLocation.d.cts +8 -6
- package/dist/components/jobCard/JobLocation.d.ts +8 -6
- package/dist/components/jobCard/JobLocation.js +93 -14
- package/dist/components/jobCard/JobLocation.js.map +1 -1
- package/dist/components/jobPost/JobDescription.cjs +3 -1
- package/dist/components/jobPost/JobDescription.cjs.map +1 -1
- package/dist/components/jobPost/JobDescription.js +3 -1
- package/dist/components/jobPost/JobDescription.js.map +1 -1
- package/dist/components/jobPost/JobHeader.cjs +1 -0
- package/dist/components/jobPost/JobHeader.cjs.map +1 -1
- package/dist/components/jobPost/JobHeader.js +1 -0
- package/dist/components/jobPost/JobHeader.js.map +1 -1
- package/dist/components/jobPost/JobPost.cjs +26 -18
- package/dist/components/jobPost/JobPost.cjs.map +1 -1
- package/dist/components/jobPost/JobPost.d.cts +1 -1
- package/dist/components/jobPost/JobPost.d.ts +1 -1
- package/dist/components/jobPost/JobPost.js +26 -18
- package/dist/components/jobPost/JobPost.js.map +1 -1
- package/dist/components/primitives/command.d.cts +3 -3
- package/dist/components/primitives/command.d.ts +3 -3
- package/dist/components/primitives/input-otp.d.cts +2 -2
- package/dist/components/primitives/input-otp.d.ts +2 -2
- package/dist/components/ui/Chip.cjs +1 -0
- package/dist/components/ui/Chip.cjs.map +1 -1
- package/dist/components/ui/Chip.d.cts +1 -1
- package/dist/components/ui/Chip.d.ts +1 -1
- package/dist/components/ui/Chip.js +1 -0
- package/dist/components/ui/Chip.js.map +1 -1
- package/dist/components/ui/Combobox.cjs +28 -19
- package/dist/components/ui/Combobox.cjs.map +1 -1
- package/dist/components/ui/Combobox.js +29 -20
- package/dist/components/ui/Combobox.js.map +1 -1
- package/dist/components/ui/DismissibleBanner.cjs +85 -0
- package/dist/components/ui/DismissibleBanner.cjs.map +1 -0
- package/dist/components/ui/DismissibleBanner.d.cts +11 -0
- package/dist/components/ui/DismissibleBanner.d.ts +11 -0
- package/dist/components/ui/DismissibleBanner.js +60 -0
- package/dist/components/ui/DismissibleBanner.js.map +1 -0
- package/dist/components/ui/ReadMore.cjs +3 -1
- package/dist/components/ui/ReadMore.cjs.map +1 -1
- package/dist/components/ui/ReadMore.js +3 -1
- package/dist/components/ui/ReadMore.js.map +1 -1
- package/dist/components/ui/Select.cjs +1 -0
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +1 -0
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/{displayText-DHKm6_JF.d.cts → displayText-DW0qiJqh.d.cts} +2 -2
- package/dist/{displayText-D8MYOaYK.d.ts → displayText-DahwdHdi.d.ts} +2 -2
- package/dist/hooks/useDisplayText.d.cts +3 -3
- package/dist/hooks/useDisplayText.d.ts +3 -3
- package/dist/index.cjs +1260 -1131
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -5
- package/dist/index.d.ts +10 -5
- package/dist/index.js +1198 -1072
- package/dist/index.js.map +1 -1
- package/dist/{job_posting_service_latest-DaKYQh30.d.cts → job_posting_service_latest-C_TEBzCf.d.cts} +289 -289
- package/dist/{job_posting_service_latest-DaKYQh30.d.ts → job_posting_service_latest-C_TEBzCf.d.ts} +289 -289
- package/dist/{job_posting_service_latest-C8PT9mxn.d.cts → job_posting_service_latest-DdgK8Nnz.d.cts} +290 -290
- package/dist/{job_posting_service_latest-C8PT9mxn.d.ts → job_posting_service_latest-DdgK8Nnz.d.ts} +290 -290
- package/dist/{job_posting_service_sanity-nyUCPROx.d.ts → job_posting_service_sanity-BKo9TBDT.d.ts} +630 -630
- package/dist/{job_posting_service_sanity-BK7jdr2W.d.cts → job_posting_service_sanity-BNq-Am9N.d.cts} +630 -630
- package/dist/lib/locations.cjs +32 -7
- package/dist/lib/locations.cjs.map +1 -1
- package/dist/lib/locations.d.cts +8 -5
- package/dist/lib/locations.d.ts +8 -5
- package/dist/lib/locations.js +30 -6
- package/dist/lib/locations.js.map +1 -1
- package/dist/lib/mappings.d.cts +3 -3
- package/dist/lib/mappings.d.ts +3 -3
- package/dist/lib/salaryRange.cjs +14 -12
- package/dist/lib/salaryRange.cjs.map +1 -1
- package/dist/lib/salaryRange.d.cts +2 -2
- package/dist/lib/salaryRange.d.ts +2 -2
- package/dist/lib/salaryRange.js +14 -12
- package/dist/lib/salaryRange.js.map +1 -1
- package/dist/services/displayText.d.cts +3 -3
- package/dist/services/displayText.d.ts +3 -3
- package/dist/styles/globals.css +3 -7
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.d.cts +1 -1
- package/dist/types/data/company_service_latest.d.ts +1 -1
- package/dist/types/data/job_posting_service_latest.d.cts +1 -1
- package/dist/types/data/job_posting_service_latest.d.ts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
- package/dist/types/index.d.cts +5 -5
- package/dist/types/index.d.ts +5 -5
- package/dist/types/latest/company_service_latest.d.cts +1 -1
- package/dist/types/latest/company_service_latest.d.ts +1 -1
- package/dist/types/latest/custom/company_service_sanity.d.cts +3 -3
- package/dist/types/latest/custom/company_service_sanity.d.ts +3 -3
- package/dist/types/latest/custom/job_posting_service_sanity.d.cts +3 -3
- package/dist/types/latest/custom/job_posting_service_sanity.d.ts +3 -3
- package/dist/types/latest/job_posting_service_latest.d.cts +1 -1
- package/dist/types/latest/job_posting_service_latest.d.ts +1 -1
- package/dist/types/latest/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/latest/shared_pickle_output_latest.d.ts +1 -1
- package/package.json +4 -3
- package/dist/{company_service_latest-o6X0atwz.d.cts → company_service_latest-C7Moeufo.d.cts} +228 -228
- package/dist/{company_service_latest-o6X0atwz.d.ts → company_service_latest-C7Moeufo.d.ts} +228 -228
- package/dist/{company_service_latest-DpBsftTD.d.cts → company_service_latest-CITz7F53.d.cts} +228 -228
- package/dist/{company_service_latest-DpBsftTD.d.ts → company_service_latest-CITz7F53.d.ts} +228 -228
- package/dist/{shared_pickle_output_latest-BjRRmT8R.d.cts → shared_pickle_output_latest-CXBCG04N.d.cts} +15 -15
- package/dist/{shared_pickle_output_latest-BjRRmT8R.d.ts → shared_pickle_output_latest-CXBCG04N.d.ts} +15 -15
- package/dist/{shared_pickle_output_latest-BVF7Zh2H.d.cts → shared_pickle_output_latest-CtvHTPeX.d.cts} +15 -15
- package/dist/{shared_pickle_output_latest-BVF7Zh2H.d.ts → shared_pickle_output_latest-CtvHTPeX.d.ts} +15 -15
package/dist/index.cjs
CHANGED
|
@@ -43,11 +43,13 @@ __export(index_exports, {
|
|
|
43
43
|
CompanyTake: () => CompanyTake,
|
|
44
44
|
Counter: () => Counter,
|
|
45
45
|
DatePicker: () => DatePicker,
|
|
46
|
+
DismissibleBanner: () => DismissibleBanner,
|
|
46
47
|
Icon: () => Icon,
|
|
47
48
|
Input: () => Input_default,
|
|
48
49
|
InputOtp: () => InputOtp,
|
|
49
50
|
JobDescription: () => JobDescription,
|
|
50
51
|
JobHeader: () => JobHeader,
|
|
52
|
+
JobLocation: () => JobLocation,
|
|
51
53
|
JobPost: () => JobPost,
|
|
52
54
|
JobPostService: () => job_posting_service_latest_exports2,
|
|
53
55
|
Label: () => Label_default,
|
|
@@ -64,6 +66,7 @@ __export(index_exports, {
|
|
|
64
66
|
WindowHistoryProvider: () => WindowHistoryProvider,
|
|
65
67
|
cn: () => cn,
|
|
66
68
|
fetchLocation: () => fetchLocation,
|
|
69
|
+
salaryRange: () => salaryRange,
|
|
67
70
|
useDisplayText: () => useDisplayText,
|
|
68
71
|
useWindowHistory: () => useWindowHistory
|
|
69
72
|
});
|
|
@@ -80,6 +83,7 @@ var chipVariants = (0, import_cva.cva)(["flex", "items-center", "rounded-3xl", "
|
|
|
80
83
|
neutral: ["text-grey-80", "border-grey-10"],
|
|
81
84
|
primary: ["text-purple-100", "border-purple-20"],
|
|
82
85
|
danger: ["text-pumpkin-100", "border-pumpkin-20"],
|
|
86
|
+
jobLocation: ["text-grey-80", "border-grey-10", "bg-grey-5"],
|
|
83
87
|
onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
|
|
84
88
|
onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
|
|
85
89
|
},
|
|
@@ -1186,40 +1190,49 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
|
|
|
1186
1190
|
} = props;
|
|
1187
1191
|
const [selected, setSelected] = (0, import_react6.useState)([]);
|
|
1188
1192
|
const [open, setOpen] = (0, import_react6.useState)(false);
|
|
1193
|
+
const isUserUpdate = (0, import_react6.useRef)(false);
|
|
1189
1194
|
const IconComponent = icon && import_lucide_react10.icons[icon];
|
|
1190
1195
|
const hideSearchBox = options?.length <= 5;
|
|
1191
1196
|
const isDefault = variant === "default";
|
|
1192
1197
|
const isChip = variant === "chip";
|
|
1193
|
-
const isEmpty = selected.length
|
|
1198
|
+
const isEmpty = selected.length === 0;
|
|
1194
1199
|
const showChevron = isDefault ? isEmpty : true;
|
|
1195
1200
|
const close = () => setOpen(false);
|
|
1196
1201
|
(0, import_react6.useEffect)(() => {
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
+
if (!isUserUpdate.current) {
|
|
1203
|
+
const valueArray = multiselect ? value ?? [] : value ? [value] : [];
|
|
1204
|
+
setSelected(
|
|
1205
|
+
valueArray.map((v) => options.find((o) => o.value === v)).filter((v) => v !== void 0)
|
|
1206
|
+
);
|
|
1207
|
+
}
|
|
1208
|
+
}, [value, options, multiselect]);
|
|
1209
|
+
(0, import_react6.useEffect)(() => {
|
|
1210
|
+
if (isUserUpdate.current) {
|
|
1211
|
+
if (multiselect) {
|
|
1212
|
+
handleChange?.(selected.map((o) => o.value));
|
|
1213
|
+
} else {
|
|
1214
|
+
handleChange?.(selected[0]?.value ?? "");
|
|
1215
|
+
}
|
|
1216
|
+
isUserUpdate.current = false;
|
|
1217
|
+
}
|
|
1218
|
+
}, [selected, multiselect, handleChange]);
|
|
1219
|
+
const updateMultiSelect = (prev, option) => {
|
|
1220
|
+
return prev.some((o) => o.value === option.value) ? prev.filter((v) => v !== option) : [...prev, option];
|
|
1221
|
+
};
|
|
1202
1222
|
const handleSelect = (value2) => {
|
|
1203
1223
|
const option = options.find((o) => o.value === value2);
|
|
1204
1224
|
if (!option) return;
|
|
1225
|
+
isUserUpdate.current = true;
|
|
1205
1226
|
if (multiselect) {
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
});
|
|
1227
|
+
setSelected((prev) => updateMultiSelect(prev, option));
|
|
1228
|
+
} else {
|
|
1229
|
+
setSelected([option]);
|
|
1230
|
+
close();
|
|
1211
1231
|
}
|
|
1212
|
-
setSelected([option]);
|
|
1213
|
-
handleChange?.(option.value);
|
|
1214
|
-
close();
|
|
1215
1232
|
};
|
|
1216
1233
|
const handleClear = () => {
|
|
1234
|
+
isUserUpdate.current = true;
|
|
1217
1235
|
setSelected([]);
|
|
1218
|
-
if (multiselect) {
|
|
1219
|
-
handleChange?.([]);
|
|
1220
|
-
} else {
|
|
1221
|
-
handleChange?.("");
|
|
1222
|
-
}
|
|
1223
1236
|
};
|
|
1224
1237
|
const handleDisplayValue = () => {
|
|
1225
1238
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
@@ -1799,6 +1812,7 @@ var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
|
1799
1812
|
function ReadMore({ text, ...props }) {
|
|
1800
1813
|
const [isExpanded, setIsExpanded] = (0, import_react13.useState)(false);
|
|
1801
1814
|
const [maxWords, setMaxWords] = (0, import_react13.useState)(160);
|
|
1815
|
+
const isOverMaxWords = text.split(" ").length > maxWords;
|
|
1802
1816
|
(0, import_react13.useEffect)(() => {
|
|
1803
1817
|
const updateMaxWords = () => {
|
|
1804
1818
|
const windowWidth = window.innerWidth;
|
|
@@ -1813,6 +1827,7 @@ function ReadMore({ text, ...props }) {
|
|
|
1813
1827
|
return () => window.removeEventListener("resize", updateMaxWords);
|
|
1814
1828
|
}, []);
|
|
1815
1829
|
function createReadMoreText(text2, maxWords2, isExpanded2) {
|
|
1830
|
+
if (!isOverMaxWords) return text2;
|
|
1816
1831
|
const words = text2.split(" ");
|
|
1817
1832
|
const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
|
|
1818
1833
|
const readMoreText = isExpanded2 ? "" : "...";
|
|
@@ -1822,7 +1837,7 @@ function ReadMore({ text, ...props }) {
|
|
|
1822
1837
|
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
1823
1838
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { ...props, children: [
|
|
1824
1839
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_react_markdown.default, { children: snippet }) }),
|
|
1825
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1840
|
+
isOverMaxWords && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1826
1841
|
Button,
|
|
1827
1842
|
{
|
|
1828
1843
|
type: "button",
|
|
@@ -2086,631 +2101,1108 @@ function StepTabs({
|
|
|
2086
2101
|
);
|
|
2087
2102
|
}
|
|
2088
2103
|
|
|
2089
|
-
// src/components/
|
|
2090
|
-
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2091
|
-
function CompanyBenefits({ benefits }) {
|
|
2092
|
-
if (!benefits) return null;
|
|
2093
|
-
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits", children: [
|
|
2094
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
2095
|
-
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
2096
|
-
] });
|
|
2097
|
-
}
|
|
2098
|
-
|
|
2099
|
-
// src/components/company/CompanyInformation.tsx
|
|
2100
|
-
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2101
|
-
function CompanyInformation({
|
|
2102
|
-
name,
|
|
2103
|
-
how,
|
|
2104
|
-
mission,
|
|
2105
|
-
wow,
|
|
2106
|
-
website
|
|
2107
|
-
}) {
|
|
2108
|
-
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2109
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
|
|
2110
|
-
"h2",
|
|
2111
|
-
{
|
|
2112
|
-
"data-testid": "company-name",
|
|
2113
|
-
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2114
|
-
children: [
|
|
2115
|
-
"About ",
|
|
2116
|
-
name
|
|
2117
|
-
]
|
|
2118
|
-
}
|
|
2119
|
-
),
|
|
2120
|
-
how && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
2121
|
-
mission && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex gap-2", children: [
|
|
2122
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: "\u{1F680}" }),
|
|
2123
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
2124
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
2125
|
-
mission
|
|
2126
|
-
] })
|
|
2127
|
-
] }),
|
|
2128
|
-
wow && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex gap-2", children: [
|
|
2129
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: "\u{1F31F}" }),
|
|
2130
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
2131
|
-
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
2132
|
-
wow
|
|
2133
|
-
] })
|
|
2134
|
-
] }),
|
|
2135
|
-
website && /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
2136
|
-
LinkButton,
|
|
2137
|
-
{
|
|
2138
|
-
"data-testid": "company-website-link",
|
|
2139
|
-
href: website,
|
|
2140
|
-
target: "_blank",
|
|
2141
|
-
rel: "noopener noreferrer",
|
|
2142
|
-
children: "Website"
|
|
2143
|
-
}
|
|
2144
|
-
) })
|
|
2145
|
-
] });
|
|
2146
|
-
}
|
|
2147
|
-
|
|
2148
|
-
// src/components/company/CompanyTake.tsx
|
|
2149
|
-
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2150
|
-
function CompanyTake({ content, avatarSrc }) {
|
|
2151
|
-
if (!content) return null;
|
|
2152
|
-
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
2153
|
-
"div",
|
|
2154
|
-
{
|
|
2155
|
-
"data-testid": "company-take",
|
|
2156
|
-
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
2157
|
-
children: [
|
|
2158
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
2159
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
2160
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
2161
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
2162
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
2163
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
2164
|
-
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
2165
|
-
] })
|
|
2166
|
-
] })
|
|
2167
|
-
]
|
|
2168
|
-
}
|
|
2169
|
-
);
|
|
2170
|
-
}
|
|
2171
|
-
|
|
2172
|
-
// src/components/jobPost/JobDescription.tsx
|
|
2173
|
-
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2174
|
-
function JobDescription({ description }) {
|
|
2175
|
-
if (!description) return null;
|
|
2176
|
-
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
2177
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
2178
|
-
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ReadMore, { text: description })
|
|
2179
|
-
] });
|
|
2180
|
-
}
|
|
2181
|
-
|
|
2182
|
-
// src/components/jobPost/JobHeader.tsx
|
|
2183
|
-
var import_lucide_react17 = require("lucide-react");
|
|
2184
|
-
var import_image = __toESM(require("next/image"), 1);
|
|
2185
|
-
|
|
2186
|
-
// src/components/buttons/BackButton.tsx
|
|
2104
|
+
// src/components/ui/DismissibleBanner.tsx
|
|
2187
2105
|
var import_lucide_react15 = require("lucide-react");
|
|
2188
|
-
var import_navigation2 = require("next/navigation");
|
|
2189
|
-
|
|
2190
|
-
// src/hooks/useWindowHistory.ts
|
|
2191
|
-
var import_react16 = require("react");
|
|
2192
|
-
|
|
2193
|
-
// src/contexts/WindowHistoryProvider.tsx
|
|
2194
|
-
var import_navigation = require("next/navigation");
|
|
2195
2106
|
var import_react15 = require("react");
|
|
2196
|
-
var
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2107
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
2108
|
+
function DismissibleBanner({
|
|
2109
|
+
children,
|
|
2110
|
+
cookieId,
|
|
2111
|
+
className,
|
|
2112
|
+
textClassNames,
|
|
2113
|
+
buttonClassNames
|
|
2114
|
+
}) {
|
|
2115
|
+
const safeId = encodeURIComponent(cookieId);
|
|
2116
|
+
const [isVisible, setIsVisible] = (0, import_react15.useState)(false);
|
|
2201
2117
|
(0, import_react15.useEffect)(() => {
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
)
|
|
2205
|
-
|
|
2206
|
-
const contextValue = (0, import_react15.useMemo)(() => ({ history }), [history]);
|
|
2207
|
-
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(WindowHistoryContext.Provider, { value: contextValue, children });
|
|
2208
|
-
}
|
|
2209
|
-
|
|
2210
|
-
// src/hooks/useWindowHistory.ts
|
|
2211
|
-
function useWindowHistory() {
|
|
2212
|
-
const windowHistoryContext = (0, import_react16.useContext)(WindowHistoryContext);
|
|
2213
|
-
return windowHistoryContext;
|
|
2214
|
-
}
|
|
2215
|
-
|
|
2216
|
-
// src/components/buttons/BackButton.tsx
|
|
2217
|
-
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2218
|
-
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
2219
|
-
const { history } = useWindowHistory();
|
|
2220
|
-
const router = (0, import_navigation2.useRouter)();
|
|
2221
|
-
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(new URL(r).pathname));
|
|
2222
|
-
const goBack = () => {
|
|
2223
|
-
const previous = history[history.length - 2];
|
|
2224
|
-
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
2225
|
-
router.back();
|
|
2226
|
-
} else {
|
|
2227
|
-
router.push(fallbackHref ?? "/");
|
|
2118
|
+
const cookies = document.cookie.split(";");
|
|
2119
|
+
const isDismissed = cookies.some((cookie) => cookie.trim().startsWith(`${safeId}=true`));
|
|
2120
|
+
if (!isDismissed) {
|
|
2121
|
+
setIsVisible(true);
|
|
2228
2122
|
}
|
|
2123
|
+
}, [safeId]);
|
|
2124
|
+
const handleDismiss = () => {
|
|
2125
|
+
document.cookie = `${safeId}=true;path=/`;
|
|
2126
|
+
setIsVisible(false);
|
|
2229
2127
|
};
|
|
2230
|
-
|
|
2231
|
-
|
|
2128
|
+
if (!isVisible) return null;
|
|
2129
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
2130
|
+
"nav",
|
|
2232
2131
|
{
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2132
|
+
className: cn(
|
|
2133
|
+
"align-center flex w-full items-center justify-between gap-2 bg-blue-100 px-4 py-3",
|
|
2134
|
+
className
|
|
2135
|
+
),
|
|
2136
|
+
children: [
|
|
2137
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: cn("w-full text-center text-sm text-green-100", textClassNames), children }),
|
|
2138
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
2139
|
+
"button",
|
|
2140
|
+
{
|
|
2141
|
+
className: cn("text-green-100", buttonClassNames),
|
|
2142
|
+
"aria-label": "Close banner",
|
|
2143
|
+
onClick: handleDismiss,
|
|
2144
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react15.X, { size: 28 })
|
|
2145
|
+
}
|
|
2146
|
+
)
|
|
2147
|
+
]
|
|
2240
2148
|
}
|
|
2241
2149
|
);
|
|
2242
2150
|
}
|
|
2243
2151
|
|
|
2244
|
-
// src/
|
|
2245
|
-
var
|
|
2246
|
-
var iconMap = {
|
|
2247
|
-
house: import_lucide_react16.Home,
|
|
2248
|
-
layers: import_lucide_react16.Layers,
|
|
2249
|
-
users: import_lucide_react16.Users,
|
|
2250
|
-
settings: import_lucide_react16.Settings,
|
|
2251
|
-
building: import_lucide_react16.Building,
|
|
2252
|
-
bell: import_lucide_react16.Bell,
|
|
2253
|
-
wallet: import_lucide_react16.Wallet,
|
|
2254
|
-
contact: import_lucide_react16.Contact,
|
|
2255
|
-
banknote: import_lucide_react16.Banknote,
|
|
2256
|
-
"message-square-dot": import_lucide_react16.MessageSquareDot,
|
|
2257
|
-
"life-buoy": import_lucide_react16.LifeBuoy,
|
|
2258
|
-
"building-2": import_lucide_react16.Building2,
|
|
2259
|
-
"gallery-vertical-end": import_lucide_react16.GalleryVerticalEnd,
|
|
2260
|
-
"square-kanban": import_lucide_react16.SquareKanban,
|
|
2261
|
-
"briefcase-business": import_lucide_react16.BriefcaseBusiness,
|
|
2262
|
-
"circle-user": import_lucide_react16.CircleUser,
|
|
2263
|
-
"key-round": import_lucide_react16.KeyRound,
|
|
2264
|
-
"clock-2": import_lucide_react16.Clock2,
|
|
2265
|
-
"circle-user-round": import_lucide_react16.CircleUserRound,
|
|
2266
|
-
"map-pin": import_lucide_react16.MapPin
|
|
2267
|
-
};
|
|
2152
|
+
// src/types/latest/company_service_latest.ts
|
|
2153
|
+
var import_zod2 = require("zod");
|
|
2268
2154
|
|
|
2269
|
-
// src/
|
|
2270
|
-
var
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
src: avatarSrc,
|
|
2345
|
-
rel: "noopener noreferrer"
|
|
2346
|
-
}
|
|
2347
|
-
) }),
|
|
2348
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
2349
|
-
"div",
|
|
2350
|
-
{
|
|
2351
|
-
"data-testid": `job-header-subtitle-${i}`,
|
|
2352
|
-
className: "flex items-center",
|
|
2353
|
-
children: [
|
|
2354
|
-
subtitle,
|
|
2355
|
-
i < subtitles.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react17.Dot, { className: "mx-1 shrink-0", size: 10 })
|
|
2356
|
-
]
|
|
2357
|
-
},
|
|
2358
|
-
subtitle
|
|
2359
|
-
)) })
|
|
2360
|
-
] }),
|
|
2361
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
2362
|
-
"div",
|
|
2363
|
-
{
|
|
2364
|
-
"data-testid": "job-header-content",
|
|
2365
|
-
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
2366
|
-
children: [
|
|
2367
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2368
|
-
"h2",
|
|
2369
|
-
{
|
|
2370
|
-
"data-testid": "job-header-title",
|
|
2371
|
-
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2372
|
-
children: title
|
|
2373
|
-
}
|
|
2374
|
-
),
|
|
2375
|
-
!!actions && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2376
|
-
"div",
|
|
2377
|
-
{
|
|
2378
|
-
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
2379
|
-
"data-testid": "job-header-actions",
|
|
2380
|
-
children: actions
|
|
2381
|
-
}
|
|
2382
|
-
)
|
|
2383
|
-
]
|
|
2384
|
-
}
|
|
2385
|
-
),
|
|
2386
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2387
|
-
"div",
|
|
2388
|
-
{
|
|
2389
|
-
"data-testid": "job-header-tags",
|
|
2390
|
-
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
2391
|
-
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
2392
|
-
Chip_default,
|
|
2393
|
-
{
|
|
2394
|
-
size: "small",
|
|
2395
|
-
variant: "neutral",
|
|
2396
|
-
"aria-label": name,
|
|
2397
|
-
"data-testid": `job-header-tag-${name}`,
|
|
2398
|
-
children: [
|
|
2399
|
-
renderIcon(icon),
|
|
2400
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { children: label })
|
|
2401
|
-
]
|
|
2402
|
-
},
|
|
2403
|
-
name
|
|
2404
|
-
))
|
|
2405
|
-
}
|
|
2406
|
-
)
|
|
2407
|
-
] })
|
|
2408
|
-
]
|
|
2409
|
-
}
|
|
2410
|
-
);
|
|
2411
|
-
}
|
|
2412
|
-
|
|
2413
|
-
// src/components/jobPost/JobPost.tsx
|
|
2414
|
-
var DateFns = __toESM(require("date-fns"), 1);
|
|
2155
|
+
// src/types/latest/shared_pickle_output_latest.ts
|
|
2156
|
+
var shared_pickle_output_latest_exports = {};
|
|
2157
|
+
__export(shared_pickle_output_latest_exports, {
|
|
2158
|
+
CurrencyEnum: () => CurrencyEnum,
|
|
2159
|
+
DetailLevelEnum: () => DetailLevelEnum,
|
|
2160
|
+
TypeEnum: () => TypeEnum,
|
|
2161
|
+
UnitTextEnum: () => UnitTextEnum,
|
|
2162
|
+
imageAssetSchema: () => imageAssetSchema,
|
|
2163
|
+
imageSchema: () => imageSchema,
|
|
2164
|
+
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2165
|
+
placeSchema: () => placeSchema,
|
|
2166
|
+
postalAddressSchema: () => postalAddressSchema,
|
|
2167
|
+
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2168
|
+
});
|
|
2169
|
+
var import_zod = require("zod");
|
|
2170
|
+
var TypeEnum = import_zod.z.enum(["IMAGE"]);
|
|
2171
|
+
var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2172
|
+
var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2173
|
+
var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
|
|
2174
|
+
var postalAddressSchema = import_zod.z.object({
|
|
2175
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2176
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2177
|
+
addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2178
|
+
addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2179
|
+
addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2180
|
+
streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
|
|
2181
|
+
streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
|
|
2182
|
+
postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
|
|
2183
|
+
description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
|
|
2184
|
+
});
|
|
2185
|
+
var placeSchema = import_zod.z.object({
|
|
2186
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2187
|
+
detailLevel: import_zod.z.optional(DetailLevelEnum),
|
|
2188
|
+
latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
|
|
2189
|
+
longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
|
|
2190
|
+
address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2191
|
+
});
|
|
2192
|
+
var quantitativeValueSchema = import_zod.z.object({
|
|
2193
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2194
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2195
|
+
value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
|
|
2196
|
+
minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2197
|
+
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2198
|
+
unitText: UnitTextEnum
|
|
2199
|
+
});
|
|
2200
|
+
var monetaryAmountSchema = import_zod.z.object({
|
|
2201
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2202
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2203
|
+
singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
|
|
2204
|
+
minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2205
|
+
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2206
|
+
value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2207
|
+
currency: import_zod.z.optional(CurrencyEnum)
|
|
2208
|
+
});
|
|
2209
|
+
var imageAssetSchema = import_zod.z.object({
|
|
2210
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2211
|
+
altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
|
|
2212
|
+
assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
|
|
2213
|
+
description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
|
|
2214
|
+
extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
|
|
2215
|
+
label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
|
|
2216
|
+
mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
|
|
2217
|
+
originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
|
|
2218
|
+
path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
|
|
2219
|
+
sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
|
|
2220
|
+
size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
|
|
2221
|
+
title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
|
|
2222
|
+
uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
|
|
2223
|
+
url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
|
|
2224
|
+
});
|
|
2225
|
+
var imageSchema = import_zod.z.object({
|
|
2226
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2227
|
+
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2228
|
+
asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2229
|
+
});
|
|
2415
2230
|
|
|
2416
|
-
// src/
|
|
2417
|
-
var
|
|
2231
|
+
// src/types/latest/company_service_latest.ts
|
|
2232
|
+
var TypeEnum2 = import_zod2.z.enum(["OFFICE"]);
|
|
2233
|
+
var CategoryEnum = import_zod2.z.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
|
|
2234
|
+
var TitleEnum = import_zod2.z.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
|
|
2235
|
+
var PublishStatusEnum = import_zod2.z.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
2236
|
+
var OfficeTypeEnum = import_zod2.z.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
|
|
2237
|
+
var socialMediaSchema = import_zod2.z.object({
|
|
2238
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2239
|
+
url: import_zod2.z.string().describe("The link to the social media platform"),
|
|
2240
|
+
type: import_zod2.z.string().describe("The type of social media link")
|
|
2241
|
+
});
|
|
2242
|
+
var companyBenefitsSchema = import_zod2.z.object({
|
|
2243
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2244
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2245
|
+
title: import_zod2.z.string(),
|
|
2246
|
+
description: import_zod2.z.optional(import_zod2.z.string()),
|
|
2247
|
+
category: CategoryEnum
|
|
2248
|
+
});
|
|
2249
|
+
var industrySchema = import_zod2.z.lazy(() => import_zod2.z.object({
|
|
2250
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2251
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2252
|
+
name: import_zod2.z.string(),
|
|
2253
|
+
description: import_zod2.z.optional(import_zod2.z.string()).describe("A brief description of the industry"),
|
|
2254
|
+
onetIndustryId: import_zod2.z.optional(import_zod2.z.string()).describe("ONET industry ID"),
|
|
2255
|
+
parent: import_zod2.z.optional(industrySchema)
|
|
2256
|
+
}));
|
|
2257
|
+
var jobBoardSchema = import_zod2.z.object({
|
|
2258
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2259
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2260
|
+
name: import_zod2.z.string().describe("The name of the job board"),
|
|
2261
|
+
description: import_zod2.z.string().describe("A brief description of the job board"),
|
|
2262
|
+
logo: import_zod2.z.optional(imageSchema).describe("The logo of the job board"),
|
|
2263
|
+
baseUrl: import_zod2.z.optional(import_zod2.z.string()).describe("The base URL of the job board")
|
|
2264
|
+
});
|
|
2265
|
+
var personSchema = import_zod2.z.object({
|
|
2266
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2267
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2268
|
+
firstName: import_zod2.z.string().describe("The first name of the person"),
|
|
2269
|
+
lastName: import_zod2.z.string().describe("The last name of the person"),
|
|
2270
|
+
title: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())).describe("The titles of the degree of the person"),
|
|
2271
|
+
slug: import_zod2.z.string().describe("person slug - should be familyname-givenname-title(s)"),
|
|
2272
|
+
jobTitle: import_zod2.z.optional(import_zod2.z.string()).describe("The job title of the person"),
|
|
2273
|
+
isDoctor: import_zod2.z.optional(import_zod2.z.boolean()).describe("Is the person a doctor"),
|
|
2274
|
+
isMedical: import_zod2.z.optional(import_zod2.z.boolean()).describe("Are they of a medical background?"),
|
|
2275
|
+
isScientist: import_zod2.z.optional(import_zod2.z.boolean()).describe("Are they a scientist?"),
|
|
2276
|
+
image: import_zod2.z.optional(imageSchema).describe("The image of the person"),
|
|
2277
|
+
email: import_zod2.z.optional(import_zod2.z.string()).describe("The email of the person"),
|
|
2278
|
+
socialMedia: import_zod2.z.optional(import_zod2.z.array(socialMediaSchema)).describe("The social media links of the person"),
|
|
2279
|
+
telephone: import_zod2.z.optional(import_zod2.z.string()).describe("The telephone number of the person"),
|
|
2280
|
+
url: import_zod2.z.optional(import_zod2.z.string()).describe("The URL of the person"),
|
|
2281
|
+
address: import_zod2.z.optional(placeSchema).describe("The address of the person")
|
|
2282
|
+
});
|
|
2283
|
+
var companyCareersSchema = import_zod2.z.object({
|
|
2284
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2285
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2286
|
+
careersUrl: import_zod2.z.string().describe("The URL of the company careers page"),
|
|
2287
|
+
jobBoard: import_zod2.z.optional(jobBoardSchema),
|
|
2288
|
+
jobBoardSlug: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())),
|
|
2289
|
+
companyBenefits: import_zod2.z.optional(import_zod2.z.array(companyBenefitsSchema)).describe("What are the specific benefits of that company. The benefit is generic.")
|
|
2290
|
+
});
|
|
2291
|
+
var companyPhilosophySchema = import_zod2.z.object({
|
|
2292
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2293
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2294
|
+
companyMission: import_zod2.z.optional(import_zod2.z.string()).describe("The mission statement of the company."),
|
|
2295
|
+
companyHow: import_zod2.z.optional(import_zod2.z.string()).describe("How does the company achieve its mission"),
|
|
2296
|
+
companyCulture: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())).describe("What are some of the culture aspects of this company?")
|
|
2297
|
+
});
|
|
2298
|
+
var companyNdgSchema = import_zod2.z.object({
|
|
2299
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2300
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2301
|
+
companyWow: import_zod2.z.optional(import_zod2.z.string()).describe("What is the wow of this company?"),
|
|
2302
|
+
companyNdgTake: import_zod2.z.optional(import_zod2.z.string()).describe("What is the NDG POV on this company?"),
|
|
2303
|
+
companyBestFit: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())),
|
|
2304
|
+
companyInterests: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string()))
|
|
2305
|
+
});
|
|
2306
|
+
var foundingInformationSchema = import_zod2.z.object({
|
|
2307
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2308
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2309
|
+
foundedDate: import_zod2.z.optional(import_zod2.z.string()),
|
|
2310
|
+
foundedCountry: import_zod2.z.optional(import_zod2.z.string()),
|
|
2311
|
+
foundedCity: import_zod2.z.optional(import_zod2.z.string()),
|
|
2312
|
+
founders: import_zod2.z.optional(import_zod2.z.array(personSchema))
|
|
2313
|
+
});
|
|
2314
|
+
var ngdMetadataSchema = import_zod2.z.object({
|
|
2315
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2316
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2317
|
+
lastScraped: import_zod2.z.optional(import_zod2.z.string()).describe("Date the last entity was scraped, if applicable"),
|
|
2318
|
+
scraperVersion: import_zod2.z.optional(import_zod2.z.string()),
|
|
2319
|
+
postProcessorVersion: import_zod2.z.optional(import_zod2.z.string()),
|
|
2320
|
+
uniqueRunId: import_zod2.z.optional(import_zod2.z.string()),
|
|
2321
|
+
postProcessorUniqueRunId: import_zod2.z.optional(import_zod2.z.string()),
|
|
2322
|
+
isScrapeManaged: import_zod2.z.optional(import_zod2.z.boolean()).default(true)
|
|
2323
|
+
});
|
|
2324
|
+
var companySchema = import_zod2.z.object({
|
|
2325
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2326
|
+
id: import_zod2.z.string().describe("The NDG specific id for a company. Cannot be changed."),
|
|
2327
|
+
createdAt: import_zod2.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2328
|
+
updatedAt: import_zod2.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2329
|
+
companyName: import_zod2.z.string().describe("The name of the company"),
|
|
2330
|
+
slug: import_zod2.z.string().describe("The NDG specific slug for a company."),
|
|
2331
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2332
|
+
logo: import_zod2.z.optional(imageSchema).describe("The logo of the company"),
|
|
2333
|
+
companyWebsite: import_zod2.z.optional(import_zod2.z.string()).describe("The website of the company"),
|
|
2334
|
+
socialMedia: import_zod2.z.optional(import_zod2.z.array(socialMediaSchema)).describe("The social media links of the company"),
|
|
2335
|
+
brandColor: import_zod2.z.optional(import_zod2.z.string()).describe("The brand color of the company"),
|
|
2336
|
+
companyCareers: import_zod2.z.optional(companyCareersSchema).describe("Career Specific Information for the company."),
|
|
2337
|
+
companyPhilosophy: import_zod2.z.optional(companyPhilosophySchema).describe("Company mission,values and how the company achieves its mission."),
|
|
2338
|
+
companyNdg: import_zod2.z.optional(companyNdgSchema).describe("Next Degree specific information for the company."),
|
|
2339
|
+
foundingInfo: import_zod2.z.optional(foundingInformationSchema),
|
|
2340
|
+
headquartersLocation: import_zod2.z.optional(placeSchema),
|
|
2341
|
+
employeeEstimate: import_zod2.z.optional(import_zod2.z.string()),
|
|
2342
|
+
publishStatus: import_zod2.z.optional(import_zod2.z.string()),
|
|
2343
|
+
ngdMetadata: import_zod2.z.optional(ngdMetadataSchema)
|
|
2344
|
+
});
|
|
2345
|
+
var officeSchema = import_zod2.z.object({
|
|
2346
|
+
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2347
|
+
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2348
|
+
name: import_zod2.z.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
|
|
2349
|
+
officeType: OfficeTypeEnum,
|
|
2350
|
+
companyId: import_zod2.z.optional(companySchema),
|
|
2351
|
+
geoLocation: import_zod2.z.optional(placeSchema).describe("Geographical location details: coordinates + postal address"),
|
|
2352
|
+
createdAt: import_zod2.z.optional(import_zod2.z.string()),
|
|
2353
|
+
updatedAt: import_zod2.z.optional(import_zod2.z.string())
|
|
2354
|
+
});
|
|
2418
2355
|
|
|
2419
|
-
// src/
|
|
2420
|
-
var
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
var
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2494
|
-
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2356
|
+
// src/types/latest/job_posting_service_latest.ts
|
|
2357
|
+
var import_zod3 = require("zod");
|
|
2358
|
+
var TypeEnum3 = import_zod3.z.enum(["JOB_POST"]);
|
|
2359
|
+
var JobLocationTypeEnum = import_zod3.z.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
2360
|
+
var EmploymentTypeEnum = import_zod3.z.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|
|
2361
|
+
var EmploymentLevelEnum = import_zod3.z.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
|
|
2362
|
+
var JobFunctionEnum = import_zod3.z.enum(["CLINICAL_RESEARCH", "CUSTOMER_SUCCESS", "DATA_ANALYTICS", "FINANCE_AND_AUDIT", "MARKETING", "OPERATIONS", "PEOPLE_HUMAN_RESOURCES", "PRODUCT_AND_TECH", "QUALITY_ASSURANCE_AND_OUTCOMES", "SALES_AND_BUSINESS_DEVELOPMENT", "STRATEGY_AND_CONSULTING"]);
|
|
2363
|
+
var PublishStatusEnum2 = import_zod3.z.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
2364
|
+
var BestFitEnum = import_zod3.z.enum(["DENTIST", "DIETICIAN", "DOULA", "MEDICAL_ASSISTANT", "MIDWIFE", "NURSE", "OCCUPATIONAL_THERAPIST", "PHARMACIST", "PHYSICAL_THERAPIST", "PHYSICIAN", "PHYSICIAN_ASSISTANT", "PSYCHOLOGIST", "RADIOLOGIST", "SOCIAL_WORKER", "SPEECH_LANGUAGE_PATHOLOGIST", "SURGEON"]);
|
|
2365
|
+
var ClinicalLicenseEnum = import_zod3.z.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
|
|
2366
|
+
var ShiftEnum = import_zod3.z.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
|
|
2367
|
+
var ClinicalSettingEnum = import_zod3.z.enum(["ACUTE_CARE", "AMBULATORY_SURGERY_CENTER", "CLINIC", "HOME_HEALTH", "HOSPITAL", "INPATIENT", "LONG_TERM_CARE", "MED_SPA", "NURSING_HOME", "OFFICE", "OUTPATIENT", "PRIVATE_PRACTICE", "REHAB_CENTER", "SCHOOL", "SKILLED_NURSING_FACILITY"]);
|
|
2368
|
+
var ClinicalSpecialtyEnum = import_zod3.z.enum(["ANESTHESIOLOGY", "CARDIOLOGY", "CASE_MANAGEMENT", "CHRONIC_PAIN", "CLINICAL_ELECTROPHYSIOLOGY", "CRITICAL_AND_ACUTE_CARE", "DERMATOLOGY", "DIALYSIS", "EMERGENCY_MEDICINE", "ENDOCRINOLOGY", "ERGONOMICS", "FEEDING_EATING_AND_SWALLOWING", "GASTROENTEROLOGY", "GERIATRICS", "HAND_THERAPY", "HEMATOLOGY", "HOLISTIC_MEDICINE", "INFORMATICS", "INTERNAL_MEDICINE", "LABOR_AND_DELIVERY", "MANUAL_THERAPY", "MED_SURG", "MENTAL_HEALTH", "NEPHROLOGY", "NEUROLOGY", "ONCOLOGY", "ORTHOPEDICS", "OTOLARYNGOLOGY", "PEDIATRICS", "PHYSICAL_AND_REHABILITATION_MEDICINE", "PLASTIC_SURGERY", "PRIMARY_CARE", "PSYCHIATRY", "PULMONOLOGY", "RADIOLOGY", "SENSORY", "SPORTS", "SURGERY", "TRAUMA_MEDICINE", "URGENT_CARE", "UROLOGY", "VISION", "WOMENS_HEALTH", "WOUND_AND_BURN_CARE"]);
|
|
2369
|
+
var jobPostSchema = import_zod3.z.object({
|
|
2370
|
+
version: import_zod3.z.literal("1.0.0").default("1.0.0"),
|
|
2371
|
+
id: import_zod3.z.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
|
|
2372
|
+
type: import_zod3.z.string().describe("Document type used for schema"),
|
|
2373
|
+
createdAt: import_zod3.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2374
|
+
updatedAt: import_zod3.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2375
|
+
dateAdded: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job was added to the platform"),
|
|
2376
|
+
datePosted: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job was published for public viewing"),
|
|
2377
|
+
dateRemoved: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job was removed from public viewing"),
|
|
2378
|
+
validThrough: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job posting is valid through. After this date it will be removed from public viewing"),
|
|
2379
|
+
vacancyCount: import_zod3.z.optional(import_zod3.z.number().int()).describe("The number of vacancies for a given job posting"),
|
|
2380
|
+
clientId: import_zod3.z.string().describe("The ID assigned by the client to a job - normally the same as the GH / Lever / Ashby ID or internal ID"),
|
|
2381
|
+
url: import_zod3.z.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
|
|
2382
|
+
title: import_zod3.z.string().describe("The title of the job post"),
|
|
2383
|
+
description: import_zod3.z.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
|
|
2384
|
+
richTextDescription: import_zod3.z.optional(import_zod3.z.string()).describe("The description of the job post saved as rich text"),
|
|
2385
|
+
isClinical: import_zod3.z.boolean().default(false).describe("Denotes if a job posting is clinical in nature or not. A role is clinical if it requires direct clinical patient care."),
|
|
2386
|
+
isRemote: import_zod3.z.boolean().default(false).describe("Denotes if a job posting is remote in nature. For a posting to be 'remote' it must be 100% remote (e.g hybrid roles would denote this to false)."),
|
|
2387
|
+
isVerified: import_zod3.z.boolean().default(false).describe("Denotes if a job posting has been manually verified - and thus ALL fields can be considered accurate. Can be used for DS training."),
|
|
2388
|
+
isDirectApply: import_zod3.z.boolean().default(false).describe("Denotes if a job posting url is direct apply. To be direct apply a user must be able to apply to the role without logging in and under 2 clicks."),
|
|
2389
|
+
jobLocationType: import_zod3.z.optional(import_zod3.z.array(JobLocationTypeEnum)),
|
|
2390
|
+
employmentType: import_zod3.z.optional(import_zod3.z.array(EmploymentTypeEnum)),
|
|
2391
|
+
employmentLevel: import_zod3.z.optional(EmploymentLevelEnum),
|
|
2392
|
+
jobFunction: import_zod3.z.optional(JobFunctionEnum),
|
|
2393
|
+
publishStatus: PublishStatusEnum2,
|
|
2394
|
+
bestFit: import_zod3.z.optional(import_zod3.z.array(BestFitEnum)),
|
|
2395
|
+
clinicalLicense: import_zod3.z.optional(import_zod3.z.array(ClinicalLicenseEnum)),
|
|
2396
|
+
shift: import_zod3.z.optional(import_zod3.z.array(ShiftEnum)),
|
|
2397
|
+
clinicalSetting: import_zod3.z.optional(import_zod3.z.array(ClinicalSettingEnum)),
|
|
2398
|
+
clinicalSpecialty: import_zod3.z.optional(import_zod3.z.array(ClinicalSpecialtyEnum)),
|
|
2399
|
+
estimatedSalary: import_zod3.z.optional(monetaryAmountSchema).describe("Determines the estimated salary for a given job posting"),
|
|
2400
|
+
jobLocation: import_zod3.z.optional(postalAddressSchema).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
2401
|
+
applicableOffices: import_zod3.z.optional(import_zod3.z.array(officeSchema)).describe("The physical location(s) in which employees may be located for to be eligible for the job. Used in conjunction with job_location_type."),
|
|
2402
|
+
applicantLocationRequirements: import_zod3.z.optional(import_zod3.z.array(placeSchema)).describe("The geographic location(s) in which employees may be located for to be eligible for the job. The job description must clearly state that the applicant may be located in certain geographical location(s). This property is required if applicants may be located in one or more geographic locations and the job is 100% remote."),
|
|
2403
|
+
hiringOrganization: import_zod3.z.optional(companySchema).describe("The organization that is hiring for the role")
|
|
2404
|
+
});
|
|
2405
|
+
|
|
2406
|
+
// src/types/latest/custom/company_service_sanity.ts
|
|
2407
|
+
var import_zod5 = require("zod");
|
|
2408
|
+
|
|
2409
|
+
// src/types/latest/custom/custom_sanity_models.ts
|
|
2410
|
+
var import_zod4 = require("zod");
|
|
2411
|
+
var sanityReferenceSchema = import_zod4.z.object({
|
|
2412
|
+
_ref: import_zod4.z.string(),
|
|
2413
|
+
_type: import_zod4.z.string(),
|
|
2414
|
+
_key: import_zod4.z.optional(import_zod4.z.string())
|
|
2415
|
+
});
|
|
2416
|
+
var sanitySlugSchema = import_zod4.z.object({
|
|
2417
|
+
current: import_zod4.z.string(),
|
|
2418
|
+
_type: import_zod4.z.string(),
|
|
2419
|
+
_key: import_zod4.z.optional(import_zod4.z.string())
|
|
2420
|
+
});
|
|
2421
|
+
|
|
2422
|
+
// src/types/latest/custom/company_service_sanity.ts
|
|
2423
|
+
var foundingInformationSchema2 = foundingInformationSchema.extend({
|
|
2424
|
+
_type: import_zod5.z.string().describe("Document type used within sanity").default("companyFounding"),
|
|
2425
|
+
founders: import_zod5.z.optional(import_zod5.z.union([import_zod5.z.array(personSchema), import_zod5.z.array(sanityReferenceSchema)])).nullable(),
|
|
2426
|
+
founderList: import_zod5.z.optional(import_zod5.z.union([import_zod5.z.array(personSchema), import_zod5.z.array(sanityReferenceSchema)])).nullable()
|
|
2427
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2428
|
+
...data,
|
|
2429
|
+
type: data._type,
|
|
2430
|
+
founders: data.founders || data.founderList || void 0
|
|
2431
|
+
})).transform(({ _type, founderList, ...rest }) => rest);
|
|
2432
|
+
var companyNdgSchema2 = companyNdgSchema.extend({
|
|
2433
|
+
_type: import_zod5.z.string().describe("Document type used within sanity").default("companyNDG"),
|
|
2434
|
+
companyNDGTake: import_zod5.z.string().nullable().describe("What is the NDG POV on this company?")
|
|
2435
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2436
|
+
...data,
|
|
2437
|
+
type: data._type,
|
|
2438
|
+
companyNdgTake: data.companyNDGTake
|
|
2439
|
+
})).transform(({ _type, companyNDGTake, ...rest }) => rest);
|
|
2440
|
+
var ngdMetadataSchema2 = ngdMetadataSchema.extend({
|
|
2441
|
+
_type: import_zod5.z.string().describe("Document type used within sanity").default("ndgMetadata")
|
|
2442
|
+
}).omit({ type: true }).transform((data) => ({
|
|
2443
|
+
...data,
|
|
2444
|
+
type: data._type
|
|
2445
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2446
|
+
var companyPhilosophySchema2 = companyPhilosophySchema.extend({
|
|
2447
|
+
_type: import_zod5.z.string().describe("Document type used within sanity").default("companyPhilosophy")
|
|
2448
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2449
|
+
...data,
|
|
2450
|
+
type: data._type
|
|
2451
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2452
|
+
var companyCareersSchema2 = companyCareersSchema.extend({
|
|
2453
|
+
_type: import_zod5.z.string().describe("Document type used within sanity").default("companyCareers"),
|
|
2454
|
+
companyBenefits: import_zod5.z.optional(import_zod5.z.array(
|
|
2455
|
+
import_zod5.z.union([companyBenefitsSchema, sanityReferenceSchema])
|
|
2456
|
+
)).nullable().describe("What are the specific benefits of that company. The benefit is generic."),
|
|
2457
|
+
jobBoard: import_zod5.z.union([jobBoardSchema, sanityReferenceSchema]).nullable(),
|
|
2458
|
+
jobBoardSlug: import_zod5.z.optional(import_zod5.z.union([import_zod5.z.array(import_zod5.z.string()), import_zod5.z.array(sanitySlugSchema)]))
|
|
2459
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2460
|
+
...data,
|
|
2461
|
+
type: data._type
|
|
2462
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2463
|
+
var companySchema2 = companySchema.extend({
|
|
2464
|
+
_id: import_zod5.z.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
|
|
2465
|
+
_rev: import_zod5.z.string().nullable().describe("Revision number"),
|
|
2466
|
+
_type: import_zod5.z.string().describe("Document type used within sanity").default("company"),
|
|
2467
|
+
_createdAt: import_zod5.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2468
|
+
_updatedAt: import_zod5.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2469
|
+
companyCareers: companyCareersSchema2.nullable().describe("Career Specific Information for the company."),
|
|
2470
|
+
companyPhilosophy: companyPhilosophySchema2.nullable().describe("Company mission,values and how the company achieves its mission."),
|
|
2471
|
+
companyNDG: companyNdgSchema2.nullable().describe("Next Degree specific information for the company."),
|
|
2472
|
+
foundingInfo: foundingInformationSchema2.nullable(),
|
|
2473
|
+
slug: import_zod5.z.union([import_zod5.z.string(), sanitySlugSchema]).describe("The NDG specific slug for a company."),
|
|
2474
|
+
ndgMetadata: ngdMetadataSchema2.nullable(),
|
|
2475
|
+
logo: import_zod5.z.union([imageSchema, import_zod5.z.record(import_zod5.z.any())]).nullable().describe("The logo of the company"),
|
|
2476
|
+
//Deprecated Models
|
|
2477
|
+
logoImageURL: import_zod5.z.optional(import_zod5.z.string()).describe("The logo of the company"),
|
|
2478
|
+
industryList: import_zod5.z.optional(import_zod5.z.array(sanityReferenceSchema)).describe("The industry of the company")
|
|
2479
|
+
}).omit({ type: true, id: true, createdAt: true, updatedAt: true }).strict().transform((data) => ({
|
|
2480
|
+
...data,
|
|
2481
|
+
type: data._type,
|
|
2482
|
+
id: data._id,
|
|
2483
|
+
createdAt: data._createdAt,
|
|
2484
|
+
updatedAt: data._updatedAt,
|
|
2485
|
+
rev: data._rev
|
|
2486
|
+
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
2487
|
+
|
|
2488
|
+
// src/types/latest/custom/job_posting_service_sanity.ts
|
|
2489
|
+
var import_zod6 = require("zod");
|
|
2490
|
+
var JobPostTypeEnum = import_zod6.z.enum(["jobPost"]);
|
|
2491
|
+
var MonetaryAmountTypeEnum = import_zod6.z.enum(["monetaryAmount"]);
|
|
2492
|
+
var postalAddressSchema2 = postalAddressSchema.extend({
|
|
2493
|
+
_type: import_zod6.z.string().describe("Document type used within sanity").default("address")
|
|
2494
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2495
|
+
...data,
|
|
2496
|
+
type: data._type
|
|
2497
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2498
|
+
var quantitativeValueSchema2 = quantitativeValueSchema.extend({
|
|
2499
|
+
_type: import_zod6.z.string().describe("Document type used within sanity").default("quantitativeValue")
|
|
2500
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2501
|
+
...data,
|
|
2502
|
+
type: data._type
|
|
2503
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2504
|
+
var monetaryAmountSchema2 = monetaryAmountSchema.extend({
|
|
2505
|
+
_type: import_zod6.z.string().describe("Document type used within sanity").default("monetaryAmount"),
|
|
2506
|
+
value: quantitativeValueSchema2.optional().describe("The quantitative_value for a given salary")
|
|
2507
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2508
|
+
...data,
|
|
2509
|
+
type: data._type
|
|
2510
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2511
|
+
var jobPostSchema2 = jobPostSchema.extend({
|
|
2512
|
+
// Override base fields with Sanity-specific fields
|
|
2513
|
+
_id: import_zod6.z.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed.").regex(/^ndg-.*-.*$/),
|
|
2514
|
+
_rev: import_zod6.z.string().optional().describe("Revision number"),
|
|
2515
|
+
_type: import_zod6.z.string().describe("Document type used within sanity").default("jobPost"),
|
|
2516
|
+
_createdAt: import_zod6.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2517
|
+
_updatedAt: import_zod6.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2518
|
+
// Override fields with new schemas
|
|
2519
|
+
estimatedSalary: monetaryAmountSchema2.optional().describe("Determines the estimated salary for a given job posting"),
|
|
2520
|
+
jobLocation: postalAddressSchema2.optional().describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
2521
|
+
// Add Sanity-specific fields
|
|
2522
|
+
ndgMetadata: import_zod6.z.record(import_zod6.z.any()).optional(),
|
|
2523
|
+
ndgID: import_zod6.z.string().optional(),
|
|
2524
|
+
hiringOrganization: import_zod6.z.optional(import_zod6.z.union([sanityReferenceSchema, companySchema])),
|
|
2525
|
+
raw: import_zod6.z.record(import_zod6.z.any()).optional(),
|
|
2526
|
+
isLoaded: import_zod6.z.boolean().default(false),
|
|
2527
|
+
isVerified: import_zod6.z.boolean().default(false),
|
|
2528
|
+
needsReview: import_zod6.z.boolean().default(false),
|
|
2529
|
+
schema_version: import_zod6.z.string().optional(),
|
|
2530
|
+
origin: import_zod6.z.string().optional(),
|
|
2531
|
+
temp: import_zod6.z.record(import_zod6.z.any()).optional(),
|
|
2532
|
+
applicationType: import_zod6.z.string().optional(),
|
|
2533
|
+
// Override clientId to use Sanity naming convention
|
|
2534
|
+
clientID: import_zod6.z.string()
|
|
2535
|
+
}).omit({ type: true, id: true, createdAt: true, updatedAt: true, clientId: true }).transform((data) => ({
|
|
2536
|
+
...data,
|
|
2537
|
+
type: data._type,
|
|
2538
|
+
id: data._id,
|
|
2539
|
+
createdAt: data._createdAt,
|
|
2540
|
+
updatedAt: data._updatedAt,
|
|
2541
|
+
rev: data._rev
|
|
2542
|
+
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
2543
|
+
|
|
2544
|
+
// src/lib/salaryRange.ts
|
|
2545
|
+
var CurrencyEnum2 = shared_pickle_output_latest_exports.CurrencyEnum;
|
|
2546
|
+
function salaryRange(salary, showUnitText = true) {
|
|
2547
|
+
if (!salary) return null;
|
|
2548
|
+
let min = salary.minValue;
|
|
2549
|
+
let max = salary.maxValue;
|
|
2550
|
+
let single = salary.singleValue;
|
|
2551
|
+
let value = salary.value;
|
|
2552
|
+
let unitText = "YEAR";
|
|
2553
|
+
const signs = {
|
|
2554
|
+
[CurrencyEnum2.Values.USD]: "$",
|
|
2555
|
+
[CurrencyEnum2.Values.GBP]: "\xA3",
|
|
2556
|
+
[CurrencyEnum2.Values.EUR]: "\u20AC"
|
|
2557
|
+
};
|
|
2558
|
+
const sign = signs[salary.currency ?? CurrencyEnum2.Values.USD];
|
|
2559
|
+
if (value != null && typeof value === "object") {
|
|
2560
|
+
min = value.minValue;
|
|
2561
|
+
max = value.maxValue;
|
|
2562
|
+
single = value.value;
|
|
2563
|
+
unitText = value.unitText;
|
|
2577
2564
|
}
|
|
2565
|
+
if (unitText === "YEAR") unitText = " per year";
|
|
2566
|
+
if (unitText === "MONTH") unitText = " per month";
|
|
2567
|
+
if (unitText === "WEEK") unitText = " per week";
|
|
2568
|
+
if (unitText === "DAY") unitText = " per day";
|
|
2569
|
+
if (unitText === "PER_ACTIVITY") unitText = " per activity";
|
|
2570
|
+
if (unitText === "HOUR") unitText = " per hour";
|
|
2571
|
+
if (showUnitText === false) unitText = "";
|
|
2572
|
+
const isValid = (v) => v != null && v >= 0;
|
|
2573
|
+
if (!isValid(min) && !isValid(max) && !isValid(single)) return null;
|
|
2574
|
+
if (isValid(single)) return sign + single.toLocaleString() + unitText;
|
|
2575
|
+
if (min === max) return sign + min?.toLocaleString() + unitText;
|
|
2576
|
+
if (isValid(min) && isValid(max))
|
|
2577
|
+
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString() + unitText;
|
|
2578
|
+
return null;
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
// src/components/company/CompanyBenefits.tsx
|
|
2582
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
2583
|
+
function CompanyBenefits({ benefits }) {
|
|
2584
|
+
if (!benefits) return null;
|
|
2585
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits", children: [
|
|
2586
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
2587
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
2588
|
+
] });
|
|
2589
|
+
}
|
|
2590
|
+
|
|
2591
|
+
// src/components/company/CompanyInformation.tsx
|
|
2592
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2593
|
+
function CompanyInformation({
|
|
2594
|
+
name,
|
|
2595
|
+
how,
|
|
2596
|
+
mission,
|
|
2597
|
+
wow,
|
|
2598
|
+
website
|
|
2599
|
+
}) {
|
|
2600
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2601
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
|
|
2602
|
+
"h2",
|
|
2603
|
+
{
|
|
2604
|
+
"data-testid": "company-name",
|
|
2605
|
+
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2606
|
+
children: [
|
|
2607
|
+
"About ",
|
|
2608
|
+
name
|
|
2609
|
+
]
|
|
2610
|
+
}
|
|
2611
|
+
),
|
|
2612
|
+
how && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
2613
|
+
mission && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex gap-2", children: [
|
|
2614
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: "\u{1F680}" }),
|
|
2615
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
2616
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
2617
|
+
mission
|
|
2618
|
+
] })
|
|
2619
|
+
] }),
|
|
2620
|
+
wow && /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "flex gap-2", children: [
|
|
2621
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { children: "\u{1F31F}" }),
|
|
2622
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
2623
|
+
/* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
2624
|
+
wow
|
|
2625
|
+
] })
|
|
2626
|
+
] }),
|
|
2627
|
+
website && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
|
2628
|
+
LinkButton,
|
|
2629
|
+
{
|
|
2630
|
+
"data-testid": "company-website-link",
|
|
2631
|
+
href: website,
|
|
2632
|
+
target: "_blank",
|
|
2633
|
+
rel: "noopener noreferrer",
|
|
2634
|
+
children: "Website"
|
|
2635
|
+
}
|
|
2636
|
+
) })
|
|
2637
|
+
] });
|
|
2638
|
+
}
|
|
2639
|
+
|
|
2640
|
+
// src/components/company/CompanyTake.tsx
|
|
2641
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2642
|
+
function CompanyTake({ content, avatarSrc }) {
|
|
2643
|
+
if (!content) return null;
|
|
2644
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
|
|
2645
|
+
"div",
|
|
2646
|
+
{
|
|
2647
|
+
"data-testid": "company-take",
|
|
2648
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
2649
|
+
children: [
|
|
2650
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
2651
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
2652
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
2653
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
2654
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
2655
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
2656
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
2657
|
+
] })
|
|
2658
|
+
] })
|
|
2659
|
+
]
|
|
2660
|
+
}
|
|
2661
|
+
);
|
|
2662
|
+
}
|
|
2663
|
+
|
|
2664
|
+
// src/components/jobPost/JobDescription.tsx
|
|
2665
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
2666
|
+
function JobDescription({ description }) {
|
|
2667
|
+
if (!description) return null;
|
|
2668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
2669
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
2670
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ReadMore, { text: description })
|
|
2671
|
+
] });
|
|
2672
|
+
}
|
|
2673
|
+
|
|
2674
|
+
// src/components/jobPost/JobHeader.tsx
|
|
2675
|
+
var import_lucide_react18 = require("lucide-react");
|
|
2676
|
+
var import_image = __toESM(require("next/image"), 1);
|
|
2677
|
+
|
|
2678
|
+
// src/components/buttons/BackButton.tsx
|
|
2679
|
+
var import_lucide_react16 = require("lucide-react");
|
|
2680
|
+
var import_navigation2 = require("next/navigation");
|
|
2681
|
+
|
|
2682
|
+
// src/hooks/useWindowHistory.ts
|
|
2683
|
+
var import_react17 = require("react");
|
|
2684
|
+
|
|
2685
|
+
// src/contexts/WindowHistoryProvider.tsx
|
|
2686
|
+
var import_navigation = require("next/navigation");
|
|
2687
|
+
var import_react16 = require("react");
|
|
2688
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2689
|
+
var WindowHistoryContext = (0, import_react16.createContext)({});
|
|
2690
|
+
function WindowHistoryProvider({ children }) {
|
|
2691
|
+
const [history, setHistory] = (0, import_react16.useState)([]);
|
|
2692
|
+
const searchParams = (0, import_navigation.useSearchParams)();
|
|
2693
|
+
(0, import_react16.useEffect)(() => {
|
|
2694
|
+
setHistory(
|
|
2695
|
+
(prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
|
|
2696
|
+
);
|
|
2697
|
+
}, [searchParams]);
|
|
2698
|
+
const contextValue = (0, import_react16.useMemo)(() => ({ history }), [history]);
|
|
2699
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(WindowHistoryContext.Provider, { value: contextValue, children });
|
|
2700
|
+
}
|
|
2701
|
+
|
|
2702
|
+
// src/hooks/useWindowHistory.ts
|
|
2703
|
+
function useWindowHistory() {
|
|
2704
|
+
const windowHistoryContext = (0, import_react17.useContext)(WindowHistoryContext);
|
|
2705
|
+
return windowHistoryContext;
|
|
2706
|
+
}
|
|
2707
|
+
|
|
2708
|
+
// src/components/buttons/BackButton.tsx
|
|
2709
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2710
|
+
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
2711
|
+
const { history } = useWindowHistory();
|
|
2712
|
+
const router = (0, import_navigation2.useRouter)();
|
|
2713
|
+
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(new URL(r).pathname));
|
|
2714
|
+
const goBack = () => {
|
|
2715
|
+
const previous = history[history.length - 2];
|
|
2716
|
+
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
2717
|
+
router.back();
|
|
2718
|
+
} else {
|
|
2719
|
+
router.push(fallbackHref ?? "/");
|
|
2720
|
+
}
|
|
2721
|
+
};
|
|
2722
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
2723
|
+
Icon,
|
|
2724
|
+
{
|
|
2725
|
+
"aria-label": "back button",
|
|
2726
|
+
variant: "transparent",
|
|
2727
|
+
size: "small",
|
|
2728
|
+
onClick: goBack,
|
|
2729
|
+
className,
|
|
2730
|
+
...props,
|
|
2731
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react16.X, {})
|
|
2732
|
+
}
|
|
2733
|
+
);
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2736
|
+
// src/lib/icons.ts
|
|
2737
|
+
var import_lucide_react17 = require("lucide-react");
|
|
2738
|
+
var iconMap = {
|
|
2739
|
+
house: import_lucide_react17.Home,
|
|
2740
|
+
layers: import_lucide_react17.Layers,
|
|
2741
|
+
users: import_lucide_react17.Users,
|
|
2742
|
+
settings: import_lucide_react17.Settings,
|
|
2743
|
+
building: import_lucide_react17.Building,
|
|
2744
|
+
bell: import_lucide_react17.Bell,
|
|
2745
|
+
wallet: import_lucide_react17.Wallet,
|
|
2746
|
+
contact: import_lucide_react17.Contact,
|
|
2747
|
+
banknote: import_lucide_react17.Banknote,
|
|
2748
|
+
"message-square-dot": import_lucide_react17.MessageSquareDot,
|
|
2749
|
+
"life-buoy": import_lucide_react17.LifeBuoy,
|
|
2750
|
+
"building-2": import_lucide_react17.Building2,
|
|
2751
|
+
"gallery-vertical-end": import_lucide_react17.GalleryVerticalEnd,
|
|
2752
|
+
"square-kanban": import_lucide_react17.SquareKanban,
|
|
2753
|
+
"briefcase-business": import_lucide_react17.BriefcaseBusiness,
|
|
2754
|
+
"circle-user": import_lucide_react17.CircleUser,
|
|
2755
|
+
"key-round": import_lucide_react17.KeyRound,
|
|
2756
|
+
"clock-2": import_lucide_react17.Clock2,
|
|
2757
|
+
"circle-user-round": import_lucide_react17.CircleUserRound,
|
|
2758
|
+
"map-pin": import_lucide_react17.MapPin
|
|
2578
2759
|
};
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2760
|
+
|
|
2761
|
+
// src/components/jobPost/JobHeader.tsx
|
|
2762
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2763
|
+
function JobHeader({
|
|
2764
|
+
title,
|
|
2765
|
+
subtitles,
|
|
2766
|
+
standalone,
|
|
2767
|
+
bannerSrc,
|
|
2768
|
+
avatarSrc,
|
|
2769
|
+
avatarName,
|
|
2770
|
+
avatarHref,
|
|
2771
|
+
backFallbackHref,
|
|
2772
|
+
backAcceptedRoutes,
|
|
2773
|
+
actions,
|
|
2774
|
+
tags
|
|
2775
|
+
}) {
|
|
2776
|
+
const renderIcon = (icon) => {
|
|
2777
|
+
const Icon2 = iconMap[icon];
|
|
2778
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Icon2, { size: 18 });
|
|
2779
|
+
};
|
|
2780
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2781
|
+
"div",
|
|
2782
|
+
{
|
|
2783
|
+
"data-testid": "job-header-root",
|
|
2784
|
+
className: cn(
|
|
2785
|
+
"-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
|
|
2786
|
+
!standalone && "rounded-3xl"
|
|
2787
|
+
),
|
|
2788
|
+
children: [
|
|
2789
|
+
!standalone && /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "relative flex min-h-16 w-full items-center rounded-t-3xl bg-transparent md:min-h-24 md:flex-row lg:min-h-32", children: [
|
|
2790
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2791
|
+
import_image.default,
|
|
2792
|
+
{
|
|
2793
|
+
className: "h-full w-full rounded-t-3xl object-cover",
|
|
2794
|
+
src: bannerSrc,
|
|
2795
|
+
alt: "job banner",
|
|
2796
|
+
fill: true
|
|
2797
|
+
}
|
|
2798
|
+
),
|
|
2799
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2800
|
+
BackButton,
|
|
2801
|
+
{
|
|
2802
|
+
acceptedRoutes: backAcceptedRoutes,
|
|
2803
|
+
fallbackHref: backFallbackHref,
|
|
2804
|
+
className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
|
|
2805
|
+
"data-testid": "job-header-back-button"
|
|
2806
|
+
}
|
|
2807
|
+
),
|
|
2808
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2809
|
+
"div",
|
|
2810
|
+
{
|
|
2811
|
+
className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
|
|
2812
|
+
"data-testid": "job-header-avatar",
|
|
2813
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2814
|
+
Avatar,
|
|
2815
|
+
{
|
|
2816
|
+
size: "large",
|
|
2817
|
+
target: "_blank",
|
|
2818
|
+
href: avatarHref,
|
|
2819
|
+
name: avatarName,
|
|
2820
|
+
src: avatarSrc,
|
|
2821
|
+
rel: "noopener noreferrer"
|
|
2822
|
+
}
|
|
2823
|
+
)
|
|
2824
|
+
}
|
|
2825
|
+
)
|
|
2826
|
+
] }),
|
|
2827
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
|
|
2828
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex flex-col md:flex-row", children: [
|
|
2829
|
+
standalone && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2830
|
+
Avatar,
|
|
2831
|
+
{
|
|
2832
|
+
size: "large",
|
|
2833
|
+
target: "_blank",
|
|
2834
|
+
href: avatarHref,
|
|
2835
|
+
name: avatarName,
|
|
2836
|
+
src: avatarSrc,
|
|
2837
|
+
rel: "noopener noreferrer"
|
|
2838
|
+
}
|
|
2839
|
+
) }),
|
|
2840
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2841
|
+
"div",
|
|
2842
|
+
{
|
|
2843
|
+
"data-testid": `job-header-subtitle-${i}`,
|
|
2844
|
+
className: "flex items-center",
|
|
2845
|
+
children: [
|
|
2846
|
+
subtitle,
|
|
2847
|
+
i < subtitles.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_lucide_react18.Dot, { className: "mx-1 shrink-0", size: 10 })
|
|
2848
|
+
]
|
|
2849
|
+
},
|
|
2850
|
+
subtitle
|
|
2851
|
+
)) })
|
|
2852
|
+
] }),
|
|
2853
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2854
|
+
"div",
|
|
2855
|
+
{
|
|
2856
|
+
"data-testid": "job-header-content",
|
|
2857
|
+
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
2858
|
+
children: [
|
|
2859
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2860
|
+
"h2",
|
|
2861
|
+
{
|
|
2862
|
+
"data-testid": "job-header-title",
|
|
2863
|
+
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2864
|
+
children: title
|
|
2865
|
+
}
|
|
2866
|
+
),
|
|
2867
|
+
!!actions && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2868
|
+
"div",
|
|
2869
|
+
{
|
|
2870
|
+
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
2871
|
+
"data-testid": "job-header-actions",
|
|
2872
|
+
children: actions
|
|
2873
|
+
}
|
|
2874
|
+
)
|
|
2875
|
+
]
|
|
2876
|
+
}
|
|
2877
|
+
),
|
|
2878
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2879
|
+
"div",
|
|
2880
|
+
{
|
|
2881
|
+
"data-testid": "job-header-tags",
|
|
2882
|
+
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
2883
|
+
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2884
|
+
Chip_default,
|
|
2885
|
+
{
|
|
2886
|
+
size: "small",
|
|
2887
|
+
variant: "neutral",
|
|
2888
|
+
"aria-label": name,
|
|
2889
|
+
"data-testid": `job-header-tag-${name}`,
|
|
2890
|
+
children: [
|
|
2891
|
+
renderIcon(icon),
|
|
2892
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: label })
|
|
2893
|
+
]
|
|
2894
|
+
},
|
|
2895
|
+
name
|
|
2896
|
+
))
|
|
2897
|
+
}
|
|
2898
|
+
)
|
|
2899
|
+
] })
|
|
2900
|
+
]
|
|
2901
|
+
}
|
|
2902
|
+
);
|
|
2903
|
+
}
|
|
2904
|
+
|
|
2905
|
+
// src/components/jobPost/JobPost.tsx
|
|
2906
|
+
var DateFns = __toESM(require("date-fns"), 1);
|
|
2907
|
+
|
|
2908
|
+
// src/hooks/useDisplayText.ts
|
|
2909
|
+
var import_react18 = require("react");
|
|
2910
|
+
|
|
2911
|
+
// src/lib/mappings.ts
|
|
2912
|
+
var employmentTypeDisplayText = {
|
|
2913
|
+
FULL_TIME: {
|
|
2914
|
+
en: "Full Time"
|
|
2642
2915
|
},
|
|
2643
|
-
|
|
2644
|
-
en: "
|
|
2916
|
+
INTERNSHIP: {
|
|
2917
|
+
en: "Internship"
|
|
2645
2918
|
},
|
|
2646
|
-
|
|
2647
|
-
en: "
|
|
2919
|
+
OTHER: {
|
|
2920
|
+
en: "Other"
|
|
2648
2921
|
},
|
|
2649
|
-
|
|
2650
|
-
en: "
|
|
2922
|
+
PART_TIME: {
|
|
2923
|
+
en: "Part Time"
|
|
2651
2924
|
},
|
|
2652
|
-
|
|
2653
|
-
en: "
|
|
2925
|
+
PER_DIEM: {
|
|
2926
|
+
en: "Per-Diem"
|
|
2654
2927
|
},
|
|
2655
|
-
|
|
2656
|
-
en: "
|
|
2928
|
+
TEMPORARY: {
|
|
2929
|
+
en: "Temporary"
|
|
2657
2930
|
},
|
|
2658
|
-
|
|
2659
|
-
en: "
|
|
2931
|
+
CONTRACT: {
|
|
2932
|
+
en: "Contract"
|
|
2933
|
+
}
|
|
2934
|
+
};
|
|
2935
|
+
var unitTextDisplayText = {
|
|
2936
|
+
DAY: {
|
|
2937
|
+
en: "Day"
|
|
2660
2938
|
},
|
|
2661
|
-
|
|
2662
|
-
en: "
|
|
2939
|
+
HOUR: {
|
|
2940
|
+
en: "Hour"
|
|
2663
2941
|
},
|
|
2664
|
-
|
|
2665
|
-
en: "
|
|
2942
|
+
MONTH: {
|
|
2943
|
+
en: "Month"
|
|
2666
2944
|
},
|
|
2667
|
-
|
|
2668
|
-
en: "
|
|
2945
|
+
PER_ACTIVITY: {
|
|
2946
|
+
en: "Per Activity"
|
|
2669
2947
|
},
|
|
2670
|
-
|
|
2671
|
-
en: "
|
|
2948
|
+
WEEK: {
|
|
2949
|
+
en: "Week"
|
|
2672
2950
|
},
|
|
2673
|
-
|
|
2674
|
-
en: "
|
|
2951
|
+
YEAR: {
|
|
2952
|
+
en: "Year"
|
|
2953
|
+
}
|
|
2954
|
+
};
|
|
2955
|
+
var currencyDisplayText = {
|
|
2956
|
+
EUR: {
|
|
2957
|
+
en: "\u20AC"
|
|
2675
2958
|
},
|
|
2676
|
-
|
|
2677
|
-
en: "
|
|
2959
|
+
GBP: {
|
|
2960
|
+
en: "\xA3"
|
|
2678
2961
|
},
|
|
2679
|
-
|
|
2680
|
-
en: "
|
|
2962
|
+
USD: {
|
|
2963
|
+
en: "$"
|
|
2964
|
+
}
|
|
2965
|
+
};
|
|
2966
|
+
var employmentLevelDisplayText = {
|
|
2967
|
+
DIRECTOR: {
|
|
2968
|
+
en: "Director"
|
|
2681
2969
|
},
|
|
2682
|
-
|
|
2683
|
-
en: "
|
|
2970
|
+
ENTRY_LEVEL: {
|
|
2971
|
+
en: "Entry Level"
|
|
2684
2972
|
},
|
|
2685
|
-
|
|
2686
|
-
en: "
|
|
2973
|
+
EXECUTIVE: {
|
|
2974
|
+
en: "Executive"
|
|
2687
2975
|
},
|
|
2688
|
-
|
|
2689
|
-
en: "
|
|
2976
|
+
EXPERIENCED: {
|
|
2977
|
+
en: "Experienced"
|
|
2690
2978
|
},
|
|
2691
|
-
|
|
2692
|
-
en: "
|
|
2979
|
+
INTERN: {
|
|
2980
|
+
en: "Intern"
|
|
2693
2981
|
},
|
|
2694
|
-
|
|
2695
|
-
en: "
|
|
2982
|
+
MANAGER: {
|
|
2983
|
+
en: "Manager"
|
|
2984
|
+
}
|
|
2985
|
+
};
|
|
2986
|
+
var jobFunctionDisplayText = {
|
|
2987
|
+
CLINICAL_RESEARCH: {
|
|
2988
|
+
en: "Clinical Research"
|
|
2696
2989
|
},
|
|
2697
|
-
|
|
2698
|
-
en: "
|
|
2990
|
+
CUSTOMER_SUCCESS: {
|
|
2991
|
+
en: "Customer Success"
|
|
2699
2992
|
},
|
|
2700
|
-
|
|
2701
|
-
en: "
|
|
2993
|
+
DATA_ANALYTICS: {
|
|
2994
|
+
en: "Data Analytics"
|
|
2702
2995
|
},
|
|
2703
|
-
|
|
2704
|
-
en: "
|
|
2996
|
+
FINANCE_AND_AUDIT: {
|
|
2997
|
+
en: "Finance and Audit"
|
|
2705
2998
|
},
|
|
2706
|
-
|
|
2707
|
-
en: "
|
|
2999
|
+
MARKETING: {
|
|
3000
|
+
en: "Marketing"
|
|
2708
3001
|
},
|
|
2709
|
-
|
|
2710
|
-
en: "
|
|
3002
|
+
OPERATIONS: {
|
|
3003
|
+
en: "Operations"
|
|
2711
3004
|
},
|
|
2712
|
-
|
|
2713
|
-
en: "
|
|
3005
|
+
PEOPLE_HUMAN_RESOURCES: {
|
|
3006
|
+
en: "People Human Resources"
|
|
3007
|
+
},
|
|
3008
|
+
PRODUCT_AND_TECH: {
|
|
3009
|
+
en: "Product and Tech"
|
|
3010
|
+
},
|
|
3011
|
+
QUALITY_ASSURANCE_AND_OUTCOMES: {
|
|
3012
|
+
en: "Quality Assurance and Outcomes"
|
|
3013
|
+
},
|
|
3014
|
+
SALES_AND_BUSINESS_DEVELOPMENT: {
|
|
3015
|
+
en: "Sales and Business Development"
|
|
3016
|
+
},
|
|
3017
|
+
STRATEGY_AND_CONSULTING: {
|
|
3018
|
+
en: "Strategy and Consulting"
|
|
3019
|
+
}
|
|
3020
|
+
};
|
|
3021
|
+
var bestFitDisplayText = {
|
|
3022
|
+
DENTIST: {
|
|
3023
|
+
en: "Dentist"
|
|
3024
|
+
},
|
|
3025
|
+
DIETICIAN: {
|
|
3026
|
+
en: "Dietician"
|
|
3027
|
+
},
|
|
3028
|
+
DOULA: {
|
|
3029
|
+
en: "Doula"
|
|
3030
|
+
},
|
|
3031
|
+
MEDICAL_ASSISTANT: {
|
|
3032
|
+
en: "Medical Assistant"
|
|
3033
|
+
},
|
|
3034
|
+
MIDWIFE: {
|
|
3035
|
+
en: "Midwife"
|
|
3036
|
+
},
|
|
3037
|
+
NURSE: {
|
|
3038
|
+
en: "Nurse"
|
|
3039
|
+
},
|
|
3040
|
+
OCCUPATIONAL_THERAPIST: {
|
|
3041
|
+
en: "Occupational Therapist"
|
|
3042
|
+
},
|
|
3043
|
+
PHARMACIST: {
|
|
3044
|
+
en: "Pharmacist"
|
|
3045
|
+
},
|
|
3046
|
+
PHYSICAL_THERAPIST: {
|
|
3047
|
+
en: "Physical Therapist"
|
|
3048
|
+
},
|
|
3049
|
+
PHYSICIAN: {
|
|
3050
|
+
en: "Physician"
|
|
3051
|
+
},
|
|
3052
|
+
PHYSICIAN_ASSISTANT: {
|
|
3053
|
+
en: "Physician Assistant"
|
|
3054
|
+
},
|
|
3055
|
+
PSYCHOLOGIST: {
|
|
3056
|
+
en: "Psychologist"
|
|
3057
|
+
},
|
|
3058
|
+
RADIOLOGIST: {
|
|
3059
|
+
en: "Radiologist"
|
|
3060
|
+
},
|
|
3061
|
+
SOCIAL_WORKER: {
|
|
3062
|
+
en: "Social Worker"
|
|
3063
|
+
},
|
|
3064
|
+
SPEECH_LANGUAGE_PATHOLOGIST: {
|
|
3065
|
+
en: "Speech Language Pathologist"
|
|
3066
|
+
},
|
|
3067
|
+
SURGEON: {
|
|
3068
|
+
en: "Surgeon"
|
|
3069
|
+
}
|
|
3070
|
+
};
|
|
3071
|
+
var clinicalSpecialtyDisplayText = {
|
|
3072
|
+
ANESTHESIOLOGY: {
|
|
3073
|
+
en: "Anesthesiology"
|
|
3074
|
+
},
|
|
3075
|
+
CARDIOLOGY: {
|
|
3076
|
+
en: "Cardiology"
|
|
3077
|
+
},
|
|
3078
|
+
CARDIOVASCULAR_AND_PULMONARY: {
|
|
3079
|
+
en: "Cardiovascular and Pulmonary"
|
|
3080
|
+
},
|
|
3081
|
+
CASE_MANAGEMENT: {
|
|
3082
|
+
en: "Case Management"
|
|
3083
|
+
},
|
|
3084
|
+
CHRONIC_PAIN: {
|
|
3085
|
+
en: "Chronic Pain"
|
|
3086
|
+
},
|
|
3087
|
+
CLINICAL_ELECTROPHYSIOLOGY: {
|
|
3088
|
+
en: "Clinical Electrophysiology"
|
|
3089
|
+
},
|
|
3090
|
+
CRITICAL_AND_ACUTE_CARE: {
|
|
3091
|
+
en: "Critical and Acute Care"
|
|
3092
|
+
},
|
|
3093
|
+
DERMATOLOGY: {
|
|
3094
|
+
en: "Dermatology"
|
|
3095
|
+
},
|
|
3096
|
+
DIALYSIS: {
|
|
3097
|
+
en: "Dialysis"
|
|
3098
|
+
},
|
|
3099
|
+
EMERGENCY_MEDICINE: {
|
|
3100
|
+
en: "Emergency Medicine"
|
|
3101
|
+
},
|
|
3102
|
+
ENDOCRINOLOGY: {
|
|
3103
|
+
en: "Endocrinology"
|
|
3104
|
+
},
|
|
3105
|
+
ERGONOMICS: {
|
|
3106
|
+
en: "Ergonomics"
|
|
3107
|
+
},
|
|
3108
|
+
FEEDING_EATING_AND_SWALLOWING: {
|
|
3109
|
+
en: "Feeding, Eating, and Swallowing"
|
|
3110
|
+
},
|
|
3111
|
+
GASTROENTEROLOGY: {
|
|
3112
|
+
en: "Gastroenterology"
|
|
3113
|
+
},
|
|
3114
|
+
GERIATRICS: {
|
|
3115
|
+
en: "Geriatrics"
|
|
3116
|
+
},
|
|
3117
|
+
HAND_THERAPY: {
|
|
3118
|
+
en: "Hand Therapy"
|
|
3119
|
+
},
|
|
3120
|
+
HEMATOLOGY: {
|
|
3121
|
+
en: "Hematology"
|
|
3122
|
+
},
|
|
3123
|
+
HOLISTIC_MEDICINE: {
|
|
3124
|
+
en: "Holistic Medicine"
|
|
3125
|
+
},
|
|
3126
|
+
INFORMATICS: {
|
|
3127
|
+
en: "Informatics"
|
|
3128
|
+
},
|
|
3129
|
+
INTERNAL_MEDICINE: {
|
|
3130
|
+
en: "Internal Medicine"
|
|
3131
|
+
},
|
|
3132
|
+
LABOR_AND_DELIVERY: {
|
|
3133
|
+
en: "Labor and Delivery"
|
|
3134
|
+
},
|
|
3135
|
+
MANUAL_THERAPY: {
|
|
3136
|
+
en: "Manual Therapy"
|
|
3137
|
+
},
|
|
3138
|
+
MED_SURG: {
|
|
3139
|
+
en: "Medical-Surgical"
|
|
3140
|
+
},
|
|
3141
|
+
MENTAL_HEALTH: {
|
|
3142
|
+
en: "Mental Health"
|
|
3143
|
+
},
|
|
3144
|
+
NEPHROLOGY: {
|
|
3145
|
+
en: "Nephrology"
|
|
3146
|
+
},
|
|
3147
|
+
NEUROLOGY: {
|
|
3148
|
+
en: "Neurology"
|
|
3149
|
+
},
|
|
3150
|
+
ONCOLOGY: {
|
|
3151
|
+
en: "Oncology"
|
|
3152
|
+
},
|
|
3153
|
+
ORTHOPEDICS: {
|
|
3154
|
+
en: "Orthopedics"
|
|
3155
|
+
},
|
|
3156
|
+
OTOLARYNGOLOGY: {
|
|
3157
|
+
en: "Otolaryngology"
|
|
3158
|
+
},
|
|
3159
|
+
PEDIATRICS: {
|
|
3160
|
+
en: "Pediatrics"
|
|
3161
|
+
},
|
|
3162
|
+
PHYSICAL_AND_REHABILITATION_MEDICINE: {
|
|
3163
|
+
en: "Physical and Rehabilitation Medicine"
|
|
3164
|
+
},
|
|
3165
|
+
PLASTIC_SURGERY: {
|
|
3166
|
+
en: "Plastic Surgery"
|
|
3167
|
+
},
|
|
3168
|
+
PRIMARY_CARE: {
|
|
3169
|
+
en: "Primary Care"
|
|
3170
|
+
},
|
|
3171
|
+
PSYCHIATRY: {
|
|
3172
|
+
en: "Psychiatry"
|
|
3173
|
+
},
|
|
3174
|
+
PULMONOLOGY: {
|
|
3175
|
+
en: "Pulmonology"
|
|
3176
|
+
},
|
|
3177
|
+
RADIOLOGY: {
|
|
3178
|
+
en: "Radiology"
|
|
3179
|
+
},
|
|
3180
|
+
SENSORY: {
|
|
3181
|
+
en: "Sensory"
|
|
3182
|
+
},
|
|
3183
|
+
SPORTS: {
|
|
3184
|
+
en: "Sports"
|
|
3185
|
+
},
|
|
3186
|
+
SURGERY: {
|
|
3187
|
+
en: "Surgery"
|
|
3188
|
+
},
|
|
3189
|
+
TRANSPLANT_SURGERY: {
|
|
3190
|
+
en: "Transplant Surgery"
|
|
3191
|
+
},
|
|
3192
|
+
TRAUMA_MEDICINE: {
|
|
3193
|
+
en: "Trauma Medicine"
|
|
3194
|
+
},
|
|
3195
|
+
URGENT_CARE: {
|
|
3196
|
+
en: "Urgent Care"
|
|
3197
|
+
},
|
|
3198
|
+
UROLOGY: {
|
|
3199
|
+
en: "Urology"
|
|
3200
|
+
},
|
|
3201
|
+
VISION: {
|
|
3202
|
+
en: "Vision"
|
|
3203
|
+
},
|
|
3204
|
+
WOMENS_HEALTH: {
|
|
3205
|
+
en: "Women's Health"
|
|
2714
3206
|
},
|
|
2715
3207
|
WOUND_AND_BURN_CARE: {
|
|
2716
3208
|
en: "Wound and Burn Care"
|
|
@@ -2805,532 +3297,128 @@ var defaultMappings = {
|
|
|
2805
3297
|
employmentType: employmentTypeDisplayText,
|
|
2806
3298
|
unitText: unitTextDisplayText,
|
|
2807
3299
|
currency: currencyDisplayText,
|
|
2808
|
-
employmentLevel: employmentLevelDisplayText,
|
|
2809
|
-
jobFunction: jobFunctionDisplayText,
|
|
2810
|
-
bestFit: bestFitDisplayText,
|
|
2811
|
-
clinicalSpecialty: clinicalSpecialtyDisplayText,
|
|
2812
|
-
clinicalSetting: clinicalSettingDisplayText,
|
|
2813
|
-
shift: shiftDisplayText
|
|
2814
|
-
};
|
|
2815
|
-
|
|
2816
|
-
// src/types/displayText.errors.tsx
|
|
2817
|
-
var DisplayTextScopeNotFoundError = class extends Error {
|
|
2818
|
-
constructor(scope) {
|
|
2819
|
-
super(`No display text mapping found for scope: ${scope}`);
|
|
2820
|
-
this.name = "DisplayTextScopeNotFoundError";
|
|
2821
|
-
}
|
|
2822
|
-
};
|
|
2823
|
-
var DisplayTextValueNotFoundError = class extends Error {
|
|
2824
|
-
constructor(value, scope) {
|
|
2825
|
-
super(`No display text found for value: '${value}' in scope: '${scope}'`);
|
|
2826
|
-
this.name = "DisplayTextValueNotFoundError";
|
|
2827
|
-
}
|
|
2828
|
-
};
|
|
2829
|
-
|
|
2830
|
-
// src/services/displayText.tsx
|
|
2831
|
-
var DisplayTextService = class {
|
|
2832
|
-
constructor(customMappings) {
|
|
2833
|
-
this.defaultLanguage = "en";
|
|
2834
|
-
this.mappings = {
|
|
2835
|
-
...defaultMappings,
|
|
2836
|
-
// Use all pre-defined mappings as defaults
|
|
2837
|
-
...customMappings
|
|
2838
|
-
// Override with any custom mappings if provided
|
|
2839
|
-
};
|
|
2840
|
-
}
|
|
2841
|
-
async getDisplayText(scope, value, language = this.defaultLanguage) {
|
|
2842
|
-
const scopeMapping = this.mappings[scope];
|
|
2843
|
-
if (!scopeMapping) {
|
|
2844
|
-
throw new DisplayTextScopeNotFoundError(scope);
|
|
2845
|
-
}
|
|
2846
|
-
if (Array.isArray(value)) {
|
|
2847
|
-
const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
|
|
2848
|
-
const displayTexts2 = await Promise.all(displayTextPromises);
|
|
2849
|
-
return displayTexts2.filter((v) => !!v).join(", ");
|
|
2850
|
-
}
|
|
2851
|
-
const displayTexts = scopeMapping[value];
|
|
2852
|
-
if (!displayTexts) {
|
|
2853
|
-
throw new DisplayTextValueNotFoundError(value, scope);
|
|
2854
|
-
}
|
|
2855
|
-
return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
|
|
2856
|
-
}
|
|
2857
|
-
};
|
|
2858
|
-
|
|
2859
|
-
// src/hooks/useDisplayText.ts
|
|
2860
|
-
var useDisplayText = (scope, value) => {
|
|
2861
|
-
const [displayText, setDisplayText] = (0, import_react17.useState)("");
|
|
2862
|
-
const displayService = (0, import_react17.useMemo)(() => new DisplayTextService(), []);
|
|
2863
|
-
(0, import_react17.useEffect)(() => {
|
|
2864
|
-
if (!displayService || !value) {
|
|
2865
|
-
setDisplayText("");
|
|
2866
|
-
return;
|
|
2867
|
-
}
|
|
2868
|
-
void (async () => {
|
|
2869
|
-
try {
|
|
2870
|
-
const result = await displayService.getDisplayText(scope, value);
|
|
2871
|
-
if (typeof result === "string") {
|
|
2872
|
-
setDisplayText(result);
|
|
2873
|
-
} else {
|
|
2874
|
-
console.error("Expected a string result, but got:", result);
|
|
2875
|
-
}
|
|
2876
|
-
} catch (error) {
|
|
2877
|
-
if (error instanceof DisplayTextValueNotFoundError) {
|
|
2878
|
-
console.warn("Display text value not found:", value);
|
|
2879
|
-
setDisplayText(String(value));
|
|
2880
|
-
} else {
|
|
2881
|
-
console.error("Unexpected error formatting text:", error);
|
|
2882
|
-
setDisplayText(String(value));
|
|
2883
|
-
}
|
|
2884
|
-
}
|
|
2885
|
-
})();
|
|
2886
|
-
}, [scope, value, displayService]);
|
|
2887
|
-
return displayText;
|
|
2888
|
-
};
|
|
2889
|
-
|
|
2890
|
-
// src/lib/locations.ts
|
|
2891
|
-
function formattedAddress(address) {
|
|
2892
|
-
const { addressLocality, addressRegion, addressCountry } = address;
|
|
2893
|
-
if (addressLocality && addressRegion) return `${addressLocality}, ${addressRegion}`;
|
|
2894
|
-
if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry}`;
|
|
2895
|
-
if (addressRegion) return addressRegion;
|
|
2896
|
-
if (addressCountry) return addressCountry;
|
|
2897
|
-
return null;
|
|
2898
|
-
}
|
|
2899
|
-
function formattedJobLocation(job) {
|
|
2900
|
-
const address = job.jobLocation && formattedAddress(job.jobLocation);
|
|
2901
|
-
const remote = job.isRemote ? "Remote" : "";
|
|
2902
|
-
return [address, remote].filter(Boolean).join(" | ");
|
|
2903
|
-
}
|
|
2904
|
-
|
|
2905
|
-
// src/types/latest/company_service_latest.ts
|
|
2906
|
-
var import_zod2 = require("zod");
|
|
2907
|
-
|
|
2908
|
-
// src/types/latest/shared_pickle_output_latest.ts
|
|
2909
|
-
var shared_pickle_output_latest_exports = {};
|
|
2910
|
-
__export(shared_pickle_output_latest_exports, {
|
|
2911
|
-
CurrencyEnum: () => CurrencyEnum,
|
|
2912
|
-
DetailLevelEnum: () => DetailLevelEnum,
|
|
2913
|
-
TypeEnum: () => TypeEnum,
|
|
2914
|
-
UnitTextEnum: () => UnitTextEnum,
|
|
2915
|
-
imageAssetSchema: () => imageAssetSchema,
|
|
2916
|
-
imageSchema: () => imageSchema,
|
|
2917
|
-
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2918
|
-
placeSchema: () => placeSchema,
|
|
2919
|
-
postalAddressSchema: () => postalAddressSchema,
|
|
2920
|
-
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2921
|
-
});
|
|
2922
|
-
var import_zod = require("zod");
|
|
2923
|
-
var TypeEnum = import_zod.z.enum(["IMAGE"]);
|
|
2924
|
-
var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2925
|
-
var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2926
|
-
var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
|
|
2927
|
-
var postalAddressSchema = import_zod.z.object({
|
|
2928
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2929
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2930
|
-
addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2931
|
-
addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2932
|
-
addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2933
|
-
streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
|
|
2934
|
-
streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
|
|
2935
|
-
postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
|
|
2936
|
-
description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
|
|
2937
|
-
});
|
|
2938
|
-
var placeSchema = import_zod.z.object({
|
|
2939
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2940
|
-
detailLevel: import_zod.z.optional(DetailLevelEnum),
|
|
2941
|
-
latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
|
|
2942
|
-
longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
|
|
2943
|
-
address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2944
|
-
});
|
|
2945
|
-
var quantitativeValueSchema = import_zod.z.object({
|
|
2946
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2947
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2948
|
-
value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
|
|
2949
|
-
minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2950
|
-
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2951
|
-
unitText: UnitTextEnum
|
|
2952
|
-
});
|
|
2953
|
-
var monetaryAmountSchema = import_zod.z.object({
|
|
2954
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2955
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2956
|
-
singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
|
|
2957
|
-
minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2958
|
-
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2959
|
-
value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2960
|
-
currency: import_zod.z.optional(CurrencyEnum)
|
|
2961
|
-
});
|
|
2962
|
-
var imageAssetSchema = import_zod.z.object({
|
|
2963
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2964
|
-
altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
|
|
2965
|
-
assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
|
|
2966
|
-
description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
|
|
2967
|
-
extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
|
|
2968
|
-
label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
|
|
2969
|
-
mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
|
|
2970
|
-
originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
|
|
2971
|
-
path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
|
|
2972
|
-
sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
|
|
2973
|
-
size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
|
|
2974
|
-
title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
|
|
2975
|
-
uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
|
|
2976
|
-
url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
|
|
2977
|
-
});
|
|
2978
|
-
var imageSchema = import_zod.z.object({
|
|
2979
|
-
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
2980
|
-
type: import_zod.z.string().describe("Document type used for schema"),
|
|
2981
|
-
asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2982
|
-
});
|
|
2983
|
-
|
|
2984
|
-
// src/types/latest/company_service_latest.ts
|
|
2985
|
-
var TypeEnum2 = import_zod2.z.enum(["OFFICE"]);
|
|
2986
|
-
var CategoryEnum = import_zod2.z.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
|
|
2987
|
-
var TitleEnum = import_zod2.z.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
|
|
2988
|
-
var PublishStatusEnum = import_zod2.z.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
2989
|
-
var OfficeTypeEnum = import_zod2.z.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
|
|
2990
|
-
var socialMediaSchema = import_zod2.z.object({
|
|
2991
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2992
|
-
url: import_zod2.z.string().describe("The link to the social media platform"),
|
|
2993
|
-
type: import_zod2.z.string().describe("The type of social media link")
|
|
2994
|
-
});
|
|
2995
|
-
var companyBenefitsSchema = import_zod2.z.object({
|
|
2996
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
2997
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
2998
|
-
title: import_zod2.z.string(),
|
|
2999
|
-
description: import_zod2.z.optional(import_zod2.z.string()),
|
|
3000
|
-
category: CategoryEnum
|
|
3001
|
-
});
|
|
3002
|
-
var industrySchema = import_zod2.z.lazy(() => import_zod2.z.object({
|
|
3003
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3004
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3005
|
-
name: import_zod2.z.string(),
|
|
3006
|
-
description: import_zod2.z.optional(import_zod2.z.string()).describe("A brief description of the industry"),
|
|
3007
|
-
onetIndustryId: import_zod2.z.optional(import_zod2.z.string()).describe("ONET industry ID"),
|
|
3008
|
-
parent: import_zod2.z.optional(industrySchema)
|
|
3009
|
-
}));
|
|
3010
|
-
var jobBoardSchema = import_zod2.z.object({
|
|
3011
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3012
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3013
|
-
name: import_zod2.z.string().describe("The name of the job board"),
|
|
3014
|
-
description: import_zod2.z.string().describe("A brief description of the job board"),
|
|
3015
|
-
logo: import_zod2.z.optional(imageSchema).describe("The logo of the job board"),
|
|
3016
|
-
baseUrl: import_zod2.z.optional(import_zod2.z.string()).describe("The base URL of the job board")
|
|
3017
|
-
});
|
|
3018
|
-
var personSchema = import_zod2.z.object({
|
|
3019
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3020
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3021
|
-
firstName: import_zod2.z.string().describe("The first name of the person"),
|
|
3022
|
-
lastName: import_zod2.z.string().describe("The last name of the person"),
|
|
3023
|
-
title: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())).describe("The titles of the degree of the person"),
|
|
3024
|
-
slug: import_zod2.z.string().describe("person slug - should be familyname-givenname-title(s)"),
|
|
3025
|
-
jobTitle: import_zod2.z.optional(import_zod2.z.string()).describe("The job title of the person"),
|
|
3026
|
-
isDoctor: import_zod2.z.optional(import_zod2.z.boolean()).describe("Is the person a doctor"),
|
|
3027
|
-
isMedical: import_zod2.z.optional(import_zod2.z.boolean()).describe("Are they of a medical background?"),
|
|
3028
|
-
isScientist: import_zod2.z.optional(import_zod2.z.boolean()).describe("Are they a scientist?"),
|
|
3029
|
-
image: import_zod2.z.optional(imageSchema).describe("The image of the person"),
|
|
3030
|
-
email: import_zod2.z.optional(import_zod2.z.string()).describe("The email of the person"),
|
|
3031
|
-
socialMedia: import_zod2.z.optional(import_zod2.z.array(socialMediaSchema)).describe("The social media links of the person"),
|
|
3032
|
-
telephone: import_zod2.z.optional(import_zod2.z.string()).describe("The telephone number of the person"),
|
|
3033
|
-
url: import_zod2.z.optional(import_zod2.z.string()).describe("The URL of the person"),
|
|
3034
|
-
address: import_zod2.z.optional(placeSchema).describe("The address of the person")
|
|
3035
|
-
});
|
|
3036
|
-
var companyCareersSchema = import_zod2.z.object({
|
|
3037
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3038
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3039
|
-
careersUrl: import_zod2.z.string().describe("The URL of the company careers page"),
|
|
3040
|
-
jobBoard: import_zod2.z.optional(jobBoardSchema),
|
|
3041
|
-
jobBoardSlug: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())),
|
|
3042
|
-
companyBenefits: import_zod2.z.optional(import_zod2.z.array(companyBenefitsSchema)).describe("What are the specific benefits of that company. The benefit is generic.")
|
|
3043
|
-
});
|
|
3044
|
-
var companyPhilosophySchema = import_zod2.z.object({
|
|
3045
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3046
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3047
|
-
companyMission: import_zod2.z.optional(import_zod2.z.string()).describe("The mission statement of the company."),
|
|
3048
|
-
companyHow: import_zod2.z.optional(import_zod2.z.string()).describe("How does the company achieve its mission"),
|
|
3049
|
-
companyCulture: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())).describe("What are some of the culture aspects of this company?")
|
|
3050
|
-
});
|
|
3051
|
-
var companyNdgSchema = import_zod2.z.object({
|
|
3052
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3053
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3054
|
-
companyWow: import_zod2.z.optional(import_zod2.z.string()).describe("What is the wow of this company?"),
|
|
3055
|
-
companyNdgTake: import_zod2.z.optional(import_zod2.z.string()).describe("What is the NDG POV on this company?"),
|
|
3056
|
-
companyBestFit: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string())),
|
|
3057
|
-
companyInterests: import_zod2.z.optional(import_zod2.z.array(import_zod2.z.string()))
|
|
3058
|
-
});
|
|
3059
|
-
var foundingInformationSchema = import_zod2.z.object({
|
|
3060
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3061
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3062
|
-
foundedDate: import_zod2.z.optional(import_zod2.z.string()),
|
|
3063
|
-
foundedCountry: import_zod2.z.optional(import_zod2.z.string()),
|
|
3064
|
-
foundedCity: import_zod2.z.optional(import_zod2.z.string()),
|
|
3065
|
-
founders: import_zod2.z.optional(import_zod2.z.array(personSchema))
|
|
3066
|
-
});
|
|
3067
|
-
var ngdMetadataSchema = import_zod2.z.object({
|
|
3068
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3069
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3070
|
-
lastScraped: import_zod2.z.optional(import_zod2.z.string()).describe("Date the last entity was scraped, if applicable"),
|
|
3071
|
-
scraperVersion: import_zod2.z.optional(import_zod2.z.string()),
|
|
3072
|
-
postProcessorVersion: import_zod2.z.optional(import_zod2.z.string()),
|
|
3073
|
-
uniqueRunId: import_zod2.z.optional(import_zod2.z.string()),
|
|
3074
|
-
postProcessorUniqueRunId: import_zod2.z.optional(import_zod2.z.string()),
|
|
3075
|
-
isScrapeManaged: import_zod2.z.optional(import_zod2.z.boolean()).default(true)
|
|
3076
|
-
});
|
|
3077
|
-
var companySchema = import_zod2.z.object({
|
|
3078
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3079
|
-
id: import_zod2.z.string().describe("The NDG specific id for a company. Cannot be changed."),
|
|
3080
|
-
createdAt: import_zod2.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3081
|
-
updatedAt: import_zod2.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3082
|
-
companyName: import_zod2.z.string().describe("The name of the company"),
|
|
3083
|
-
slug: import_zod2.z.string().describe("The NDG specific slug for a company."),
|
|
3084
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3085
|
-
logo: import_zod2.z.optional(imageSchema).describe("The logo of the company"),
|
|
3086
|
-
companyWebsite: import_zod2.z.optional(import_zod2.z.string()).describe("The website of the company"),
|
|
3087
|
-
socialMedia: import_zod2.z.optional(import_zod2.z.array(socialMediaSchema)).describe("The social media links of the company"),
|
|
3088
|
-
brandColor: import_zod2.z.optional(import_zod2.z.string()).describe("The brand color of the company"),
|
|
3089
|
-
companyCareers: import_zod2.z.optional(companyCareersSchema).describe("Career Specific Information for the company."),
|
|
3090
|
-
companyPhilosophy: import_zod2.z.optional(companyPhilosophySchema).describe("Company mission,values and how the company achieves its mission."),
|
|
3091
|
-
companyNdg: import_zod2.z.optional(companyNdgSchema).describe("Next Degree specific information for the company."),
|
|
3092
|
-
foundingInfo: import_zod2.z.optional(foundingInformationSchema),
|
|
3093
|
-
headquartersLocation: import_zod2.z.optional(placeSchema),
|
|
3094
|
-
employeeEstimate: import_zod2.z.optional(import_zod2.z.string()),
|
|
3095
|
-
publishStatus: import_zod2.z.optional(import_zod2.z.string()),
|
|
3096
|
-
ngdMetadata: import_zod2.z.optional(ngdMetadataSchema)
|
|
3097
|
-
});
|
|
3098
|
-
var officeSchema = import_zod2.z.object({
|
|
3099
|
-
version: import_zod2.z.literal("1.0.0").default("1.0.0"),
|
|
3100
|
-
type: import_zod2.z.string().describe("Document type used for schema"),
|
|
3101
|
-
name: import_zod2.z.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
|
|
3102
|
-
officeType: OfficeTypeEnum,
|
|
3103
|
-
companyId: import_zod2.z.optional(companySchema),
|
|
3104
|
-
geoLocation: import_zod2.z.optional(placeSchema).describe("Geographical location details: coordinates + postal address"),
|
|
3105
|
-
createdAt: import_zod2.z.optional(import_zod2.z.string()),
|
|
3106
|
-
updatedAt: import_zod2.z.optional(import_zod2.z.string())
|
|
3107
|
-
});
|
|
3108
|
-
|
|
3109
|
-
// src/types/latest/job_posting_service_latest.ts
|
|
3110
|
-
var import_zod3 = require("zod");
|
|
3111
|
-
var TypeEnum3 = import_zod3.z.enum(["JOB_POST"]);
|
|
3112
|
-
var JobLocationTypeEnum = import_zod3.z.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
3113
|
-
var EmploymentTypeEnum = import_zod3.z.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|
|
3114
|
-
var EmploymentLevelEnum = import_zod3.z.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
|
|
3115
|
-
var JobFunctionEnum = import_zod3.z.enum(["CLINICAL_RESEARCH", "CUSTOMER_SUCCESS", "DATA_ANALYTICS", "FINANCE_AND_AUDIT", "MARKETING", "OPERATIONS", "PEOPLE_HUMAN_RESOURCES", "PRODUCT_AND_TECH", "QUALITY_ASSURANCE_AND_OUTCOMES", "SALES_AND_BUSINESS_DEVELOPMENT", "STRATEGY_AND_CONSULTING"]);
|
|
3116
|
-
var PublishStatusEnum2 = import_zod3.z.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
3117
|
-
var BestFitEnum = import_zod3.z.enum(["DENTIST", "DIETICIAN", "DOULA", "MEDICAL_ASSISTANT", "MIDWIFE", "NURSE", "OCCUPATIONAL_THERAPIST", "PHARMACIST", "PHYSICAL_THERAPIST", "PHYSICIAN", "PHYSICIAN_ASSISTANT", "PSYCHOLOGIST", "RADIOLOGIST", "SOCIAL_WORKER", "SPEECH_LANGUAGE_PATHOLOGIST", "SURGEON"]);
|
|
3118
|
-
var ClinicalLicenseEnum = import_zod3.z.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
|
|
3119
|
-
var ShiftEnum = import_zod3.z.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
|
|
3120
|
-
var ClinicalSettingEnum = import_zod3.z.enum(["ACUTE_CARE", "AMBULATORY_SURGERY_CENTER", "CLINIC", "HOME_HEALTH", "HOSPITAL", "INPATIENT", "LONG_TERM_CARE", "MED_SPA", "NURSING_HOME", "OFFICE", "OUTPATIENT", "PRIVATE_PRACTICE", "REHAB_CENTER", "SCHOOL", "SKILLED_NURSING_FACILITY"]);
|
|
3121
|
-
var ClinicalSpecialtyEnum = import_zod3.z.enum(["ANESTHESIOLOGY", "CARDIOLOGY", "CASE_MANAGEMENT", "CHRONIC_PAIN", "CLINICAL_ELECTROPHYSIOLOGY", "CRITICAL_AND_ACUTE_CARE", "DERMATOLOGY", "DIALYSIS", "EMERGENCY_MEDICINE", "ENDOCRINOLOGY", "ERGONOMICS", "FEEDING_EATING_AND_SWALLOWING", "GASTROENTEROLOGY", "GERIATRICS", "HAND_THERAPY", "HEMATOLOGY", "HOLISTIC_MEDICINE", "INFORMATICS", "INTERNAL_MEDICINE", "LABOR_AND_DELIVERY", "MANUAL_THERAPY", "MED_SURG", "MENTAL_HEALTH", "NEPHROLOGY", "NEUROLOGY", "ONCOLOGY", "ORTHOPEDICS", "OTOLARYNGOLOGY", "PEDIATRICS", "PHYSICAL_AND_REHABILITATION_MEDICINE", "PLASTIC_SURGERY", "PRIMARY_CARE", "PSYCHIATRY", "PULMONOLOGY", "RADIOLOGY", "SENSORY", "SPORTS", "SURGERY", "TRAUMA_MEDICINE", "URGENT_CARE", "UROLOGY", "VISION", "WOMENS_HEALTH", "WOUND_AND_BURN_CARE"]);
|
|
3122
|
-
var jobPostSchema = import_zod3.z.object({
|
|
3123
|
-
version: import_zod3.z.literal("1.0.0").default("1.0.0"),
|
|
3124
|
-
id: import_zod3.z.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
|
|
3125
|
-
type: import_zod3.z.string().describe("Document type used for schema"),
|
|
3126
|
-
createdAt: import_zod3.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3127
|
-
updatedAt: import_zod3.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3128
|
-
dateAdded: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job was added to the platform"),
|
|
3129
|
-
datePosted: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job was published for public viewing"),
|
|
3130
|
-
dateRemoved: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job was removed from public viewing"),
|
|
3131
|
-
validThrough: import_zod3.z.optional(import_zod3.z.string().datetime()).describe("The date the job posting is valid through. After this date it will be removed from public viewing"),
|
|
3132
|
-
vacancyCount: import_zod3.z.optional(import_zod3.z.number().int()).describe("The number of vacancies for a given job posting"),
|
|
3133
|
-
clientId: import_zod3.z.string().describe("The ID assigned by the client to a job - normally the same as the GH / Lever / Ashby ID or internal ID"),
|
|
3134
|
-
url: import_zod3.z.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
|
|
3135
|
-
title: import_zod3.z.string().describe("The title of the job post"),
|
|
3136
|
-
description: import_zod3.z.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
|
|
3137
|
-
richTextDescription: import_zod3.z.optional(import_zod3.z.string()).describe("The description of the job post saved as rich text"),
|
|
3138
|
-
isClinical: import_zod3.z.boolean().default(false).describe("Denotes if a job posting is clinical in nature or not. A role is clinical if it requires direct clinical patient care."),
|
|
3139
|
-
isRemote: import_zod3.z.boolean().default(false).describe("Denotes if a job posting is remote in nature. For a posting to be 'remote' it must be 100% remote (e.g hybrid roles would denote this to false)."),
|
|
3140
|
-
isVerified: import_zod3.z.boolean().default(false).describe("Denotes if a job posting has been manually verified - and thus ALL fields can be considered accurate. Can be used for DS training."),
|
|
3141
|
-
isDirectApply: import_zod3.z.boolean().default(false).describe("Denotes if a job posting url is direct apply. To be direct apply a user must be able to apply to the role without logging in and under 2 clicks."),
|
|
3142
|
-
jobLocationType: import_zod3.z.optional(import_zod3.z.array(JobLocationTypeEnum)),
|
|
3143
|
-
employmentType: import_zod3.z.optional(import_zod3.z.array(EmploymentTypeEnum)),
|
|
3144
|
-
employmentLevel: import_zod3.z.optional(EmploymentLevelEnum),
|
|
3145
|
-
jobFunction: import_zod3.z.optional(JobFunctionEnum),
|
|
3146
|
-
publishStatus: PublishStatusEnum2,
|
|
3147
|
-
bestFit: import_zod3.z.optional(import_zod3.z.array(BestFitEnum)),
|
|
3148
|
-
clinicalLicense: import_zod3.z.optional(import_zod3.z.array(ClinicalLicenseEnum)),
|
|
3149
|
-
shift: import_zod3.z.optional(import_zod3.z.array(ShiftEnum)),
|
|
3150
|
-
clinicalSetting: import_zod3.z.optional(import_zod3.z.array(ClinicalSettingEnum)),
|
|
3151
|
-
clinicalSpecialty: import_zod3.z.optional(import_zod3.z.array(ClinicalSpecialtyEnum)),
|
|
3152
|
-
estimatedSalary: import_zod3.z.optional(monetaryAmountSchema).describe("Determines the estimated salary for a given job posting"),
|
|
3153
|
-
jobLocation: import_zod3.z.optional(postalAddressSchema).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
3154
|
-
applicableOffices: import_zod3.z.optional(import_zod3.z.array(officeSchema)).describe("The physical location(s) in which employees may be located for to be eligible for the job. Used in conjunction with job_location_type."),
|
|
3155
|
-
applicantLocationRequirements: import_zod3.z.optional(import_zod3.z.array(placeSchema)).describe("The geographic location(s) in which employees may be located for to be eligible for the job. The job description must clearly state that the applicant may be located in certain geographical location(s). This property is required if applicants may be located in one or more geographic locations and the job is 100% remote."),
|
|
3156
|
-
hiringOrganization: import_zod3.z.optional(companySchema).describe("The organization that is hiring for the role")
|
|
3157
|
-
});
|
|
3158
|
-
|
|
3159
|
-
// src/types/latest/custom/company_service_sanity.ts
|
|
3160
|
-
var import_zod5 = require("zod");
|
|
3300
|
+
employmentLevel: employmentLevelDisplayText,
|
|
3301
|
+
jobFunction: jobFunctionDisplayText,
|
|
3302
|
+
bestFit: bestFitDisplayText,
|
|
3303
|
+
clinicalSpecialty: clinicalSpecialtyDisplayText,
|
|
3304
|
+
clinicalSetting: clinicalSettingDisplayText,
|
|
3305
|
+
shift: shiftDisplayText
|
|
3306
|
+
};
|
|
3161
3307
|
|
|
3162
|
-
// src/types/
|
|
3163
|
-
var
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
}
|
|
3169
|
-
var
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
}
|
|
3308
|
+
// src/types/displayText.errors.tsx
|
|
3309
|
+
var DisplayTextScopeNotFoundError = class extends Error {
|
|
3310
|
+
constructor(scope) {
|
|
3311
|
+
super(`No display text mapping found for scope: ${scope}`);
|
|
3312
|
+
this.name = "DisplayTextScopeNotFoundError";
|
|
3313
|
+
}
|
|
3314
|
+
};
|
|
3315
|
+
var DisplayTextValueNotFoundError = class extends Error {
|
|
3316
|
+
constructor(value, scope) {
|
|
3317
|
+
super(`No display text found for value: '${value}' in scope: '${scope}'`);
|
|
3318
|
+
this.name = "DisplayTextValueNotFoundError";
|
|
3319
|
+
}
|
|
3320
|
+
};
|
|
3174
3321
|
|
|
3175
|
-
// src/
|
|
3176
|
-
var
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
}
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
}
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
}
|
|
3202
|
-
|
|
3203
|
-
type: data._type
|
|
3204
|
-
})).transform(({ _type, ...rest }) => rest);
|
|
3205
|
-
var companyCareersSchema2 = companyCareersSchema.extend({
|
|
3206
|
-
_type: import_zod5.z.string().describe("Document type used within sanity").default("companyCareers"),
|
|
3207
|
-
companyBenefits: import_zod5.z.optional(import_zod5.z.array(
|
|
3208
|
-
import_zod5.z.union([companyBenefitsSchema, sanityReferenceSchema])
|
|
3209
|
-
)).nullable().describe("What are the specific benefits of that company. The benefit is generic."),
|
|
3210
|
-
jobBoard: import_zod5.z.union([jobBoardSchema, sanityReferenceSchema]).nullable(),
|
|
3211
|
-
jobBoardSlug: import_zod5.z.optional(import_zod5.z.union([import_zod5.z.array(import_zod5.z.string()), import_zod5.z.array(sanitySlugSchema)]))
|
|
3212
|
-
}).omit({ type: true }).strict().transform((data) => ({
|
|
3213
|
-
...data,
|
|
3214
|
-
type: data._type
|
|
3215
|
-
})).transform(({ _type, ...rest }) => rest);
|
|
3216
|
-
var companySchema2 = companySchema.extend({
|
|
3217
|
-
_id: import_zod5.z.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
|
|
3218
|
-
_rev: import_zod5.z.string().nullable().describe("Revision number"),
|
|
3219
|
-
_type: import_zod5.z.string().describe("Document type used within sanity").default("company"),
|
|
3220
|
-
_createdAt: import_zod5.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3221
|
-
_updatedAt: import_zod5.z.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3222
|
-
companyCareers: companyCareersSchema2.nullable().describe("Career Specific Information for the company."),
|
|
3223
|
-
companyPhilosophy: companyPhilosophySchema2.nullable().describe("Company mission,values and how the company achieves its mission."),
|
|
3224
|
-
companyNDG: companyNdgSchema2.nullable().describe("Next Degree specific information for the company."),
|
|
3225
|
-
foundingInfo: foundingInformationSchema2.nullable(),
|
|
3226
|
-
slug: import_zod5.z.union([import_zod5.z.string(), sanitySlugSchema]).describe("The NDG specific slug for a company."),
|
|
3227
|
-
ndgMetadata: ngdMetadataSchema2.nullable(),
|
|
3228
|
-
logo: import_zod5.z.union([imageSchema, import_zod5.z.record(import_zod5.z.any())]).nullable().describe("The logo of the company"),
|
|
3229
|
-
//Deprecated Models
|
|
3230
|
-
logoImageURL: import_zod5.z.optional(import_zod5.z.string()).describe("The logo of the company"),
|
|
3231
|
-
industryList: import_zod5.z.optional(import_zod5.z.array(sanityReferenceSchema)).describe("The industry of the company")
|
|
3232
|
-
}).omit({ type: true, id: true, createdAt: true, updatedAt: true }).strict().transform((data) => ({
|
|
3233
|
-
...data,
|
|
3234
|
-
type: data._type,
|
|
3235
|
-
id: data._id,
|
|
3236
|
-
createdAt: data._createdAt,
|
|
3237
|
-
updatedAt: data._updatedAt,
|
|
3238
|
-
rev: data._rev
|
|
3239
|
-
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
3322
|
+
// src/services/displayText.tsx
|
|
3323
|
+
var DisplayTextService = class {
|
|
3324
|
+
constructor(customMappings) {
|
|
3325
|
+
this.defaultLanguage = "en";
|
|
3326
|
+
this.mappings = {
|
|
3327
|
+
...defaultMappings,
|
|
3328
|
+
// Use all pre-defined mappings as defaults
|
|
3329
|
+
...customMappings
|
|
3330
|
+
// Override with any custom mappings if provided
|
|
3331
|
+
};
|
|
3332
|
+
}
|
|
3333
|
+
async getDisplayText(scope, value, language = this.defaultLanguage) {
|
|
3334
|
+
const scopeMapping = this.mappings[scope];
|
|
3335
|
+
if (!scopeMapping) {
|
|
3336
|
+
throw new DisplayTextScopeNotFoundError(scope);
|
|
3337
|
+
}
|
|
3338
|
+
if (Array.isArray(value)) {
|
|
3339
|
+
const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
|
|
3340
|
+
const displayTexts2 = await Promise.all(displayTextPromises);
|
|
3341
|
+
return displayTexts2.filter((v) => !!v).join(", ");
|
|
3342
|
+
}
|
|
3343
|
+
const displayTexts = scopeMapping[value];
|
|
3344
|
+
if (!displayTexts) {
|
|
3345
|
+
throw new DisplayTextValueNotFoundError(value, scope);
|
|
3346
|
+
}
|
|
3347
|
+
return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
|
|
3348
|
+
}
|
|
3349
|
+
};
|
|
3240
3350
|
|
|
3241
|
-
// src/
|
|
3242
|
-
var
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
// Override fields with new schemas
|
|
3272
|
-
estimatedSalary: monetaryAmountSchema2.optional().describe("Determines the estimated salary for a given job posting"),
|
|
3273
|
-
jobLocation: postalAddressSchema2.optional().describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
3274
|
-
// Add Sanity-specific fields
|
|
3275
|
-
ndgMetadata: import_zod6.z.record(import_zod6.z.any()).optional(),
|
|
3276
|
-
ndgID: import_zod6.z.string().optional(),
|
|
3277
|
-
hiringOrganization: import_zod6.z.optional(import_zod6.z.union([sanityReferenceSchema, companySchema])),
|
|
3278
|
-
raw: import_zod6.z.record(import_zod6.z.any()).optional(),
|
|
3279
|
-
isLoaded: import_zod6.z.boolean().default(false),
|
|
3280
|
-
isVerified: import_zod6.z.boolean().default(false),
|
|
3281
|
-
needsReview: import_zod6.z.boolean().default(false),
|
|
3282
|
-
schema_version: import_zod6.z.string().optional(),
|
|
3283
|
-
origin: import_zod6.z.string().optional(),
|
|
3284
|
-
temp: import_zod6.z.record(import_zod6.z.any()).optional(),
|
|
3285
|
-
applicationType: import_zod6.z.string().optional(),
|
|
3286
|
-
// Override clientId to use Sanity naming convention
|
|
3287
|
-
clientID: import_zod6.z.string()
|
|
3288
|
-
}).omit({ type: true, id: true, createdAt: true, updatedAt: true, clientId: true }).transform((data) => ({
|
|
3289
|
-
...data,
|
|
3290
|
-
type: data._type,
|
|
3291
|
-
id: data._id,
|
|
3292
|
-
createdAt: data._createdAt,
|
|
3293
|
-
updatedAt: data._updatedAt,
|
|
3294
|
-
rev: data._rev
|
|
3295
|
-
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
3351
|
+
// src/hooks/useDisplayText.ts
|
|
3352
|
+
var useDisplayText = (scope, value) => {
|
|
3353
|
+
const [displayText, setDisplayText] = (0, import_react18.useState)("");
|
|
3354
|
+
const displayService = (0, import_react18.useMemo)(() => new DisplayTextService(), []);
|
|
3355
|
+
(0, import_react18.useEffect)(() => {
|
|
3356
|
+
if (!displayService || !value) {
|
|
3357
|
+
setDisplayText("");
|
|
3358
|
+
return;
|
|
3359
|
+
}
|
|
3360
|
+
void (async () => {
|
|
3361
|
+
try {
|
|
3362
|
+
const result = await displayService.getDisplayText(scope, value);
|
|
3363
|
+
if (typeof result === "string") {
|
|
3364
|
+
setDisplayText(result);
|
|
3365
|
+
} else {
|
|
3366
|
+
console.error("Expected a string result, but got:", result);
|
|
3367
|
+
}
|
|
3368
|
+
} catch (error) {
|
|
3369
|
+
if (error instanceof DisplayTextValueNotFoundError) {
|
|
3370
|
+
console.warn("Display text value not found:", value);
|
|
3371
|
+
setDisplayText(String(value));
|
|
3372
|
+
} else {
|
|
3373
|
+
console.error("Unexpected error formatting text:", error);
|
|
3374
|
+
setDisplayText(String(value));
|
|
3375
|
+
}
|
|
3376
|
+
}
|
|
3377
|
+
})();
|
|
3378
|
+
}, [scope, value, displayService]);
|
|
3379
|
+
return displayText;
|
|
3380
|
+
};
|
|
3296
3381
|
|
|
3297
|
-
// src/lib/
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
[CurrencyEnum2.Values.USD]: "$",
|
|
3308
|
-
[CurrencyEnum2.Values.GBP]: "\xA3",
|
|
3309
|
-
[CurrencyEnum2.Values.EUR]: "\u20AC"
|
|
3310
|
-
};
|
|
3311
|
-
const sign = signs[salary.currency ?? CurrencyEnum2.Values.USD];
|
|
3312
|
-
if (value != null && typeof value === "object") {
|
|
3313
|
-
min = value.minValue;
|
|
3314
|
-
max = value.maxValue;
|
|
3315
|
-
single = value.value;
|
|
3316
|
-
unitText = value.unitText;
|
|
3317
|
-
}
|
|
3318
|
-
if (unitText === "YEAR") unitText = "per year";
|
|
3319
|
-
if (unitText === "MONTH") unitText = "per month";
|
|
3320
|
-
if (unitText === "WEEK") unitText = "per week";
|
|
3321
|
-
if (unitText === "DAY") unitText = "per day";
|
|
3322
|
-
if (unitText === "PER_ACTIVITY") unitText = "per activity";
|
|
3323
|
-
if (unitText === "HOUR") unitText = "per hour";
|
|
3324
|
-
if (min == null && max == null && single == null) return null;
|
|
3325
|
-
if (single != null) return sign + single.toLocaleString() + " " + unitText;
|
|
3326
|
-
if (min === max) return sign + min?.toLocaleString() + " " + unitText;
|
|
3327
|
-
if (min != null && max != null)
|
|
3328
|
-
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString() + " " + unitText;
|
|
3382
|
+
// src/lib/locations.ts
|
|
3383
|
+
function formattedAddress(address, isRemote = false) {
|
|
3384
|
+
if (!address) return null;
|
|
3385
|
+
const { addressLocality, addressRegion, addressCountry } = address;
|
|
3386
|
+
const remoteMessage = isRemote ? " | Remote" : "";
|
|
3387
|
+
if (addressLocality && addressRegion)
|
|
3388
|
+
return `${addressLocality}, ${addressRegion + remoteMessage}`;
|
|
3389
|
+
if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry + remoteMessage}`;
|
|
3390
|
+
if (addressRegion) return `${addressRegion + remoteMessage}`;
|
|
3391
|
+
if (addressCountry) return `${addressCountry + remoteMessage}`;
|
|
3329
3392
|
return null;
|
|
3330
3393
|
}
|
|
3394
|
+
function getAddressList(jobPost) {
|
|
3395
|
+
const locations = [];
|
|
3396
|
+
if (jobPost.jobLocation) {
|
|
3397
|
+
const address = formattedAddress(jobPost.jobLocation, jobPost.isRemote);
|
|
3398
|
+
if (address) locations.push(address);
|
|
3399
|
+
}
|
|
3400
|
+
if (jobPost.applicableOffices && jobPost.applicableOffices.length > 0) {
|
|
3401
|
+
jobPost.applicableOffices.map((office) => {
|
|
3402
|
+
const address = formattedAddress(office?.geoLocation?.address, jobPost.isRemote);
|
|
3403
|
+
if (address && !locations.includes(address)) locations.push(address);
|
|
3404
|
+
});
|
|
3405
|
+
}
|
|
3406
|
+
if (jobPost.applicantLocationRequirements && jobPost.applicantLocationRequirements.length > 0) {
|
|
3407
|
+
jobPost.applicantLocationRequirements.map((place) => {
|
|
3408
|
+
const address = formattedAddress(place?.address, jobPost.isRemote);
|
|
3409
|
+
if (address && !locations.includes(address)) locations.push(address);
|
|
3410
|
+
});
|
|
3411
|
+
}
|
|
3412
|
+
return locations;
|
|
3413
|
+
}
|
|
3414
|
+
function formattedJobLocation(job) {
|
|
3415
|
+
const address = job.jobLocation && formattedAddress(job.jobLocation);
|
|
3416
|
+
const remote = job.isRemote ? "Remote" : "";
|
|
3417
|
+
return [address, remote].filter(Boolean).join(" | ");
|
|
3418
|
+
}
|
|
3331
3419
|
|
|
3332
3420
|
// src/components/jobPost/JobPost.tsx
|
|
3333
|
-
var
|
|
3421
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
3334
3422
|
function JobPost({
|
|
3335
3423
|
job,
|
|
3336
3424
|
bannerSrc,
|
|
@@ -3376,7 +3464,7 @@ function JobPost({
|
|
|
3376
3464
|
label: formattedLocation
|
|
3377
3465
|
}
|
|
3378
3466
|
].filter((t) => !!t);
|
|
3379
|
-
return /* @__PURE__ */ (0,
|
|
3467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
|
|
3380
3468
|
"div",
|
|
3381
3469
|
{
|
|
3382
3470
|
className: cn(
|
|
@@ -3384,7 +3472,7 @@ function JobPost({
|
|
|
3384
3472
|
!standalone && "border-1 rounded-3xl border-grey-5"
|
|
3385
3473
|
),
|
|
3386
3474
|
children: [
|
|
3387
|
-
/* @__PURE__ */ (0,
|
|
3475
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3388
3476
|
JobHeader,
|
|
3389
3477
|
{
|
|
3390
3478
|
title: job.title,
|
|
@@ -3400,16 +3488,16 @@ function JobPost({
|
|
|
3400
3488
|
tags
|
|
3401
3489
|
}
|
|
3402
3490
|
),
|
|
3403
|
-
/* @__PURE__ */ (0,
|
|
3404
|
-
/* @__PURE__ */ (0,
|
|
3405
|
-
/* @__PURE__ */ (0,
|
|
3491
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex flex-col gap-8 px-6", children: [
|
|
3492
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(JobDescription, { description: job.description }),
|
|
3493
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3406
3494
|
CompanyTake,
|
|
3407
3495
|
{
|
|
3408
3496
|
avatarSrc,
|
|
3409
3497
|
content: job.hiringOrganization?.companyNDG?.companyNDGTake
|
|
3410
3498
|
}
|
|
3411
3499
|
),
|
|
3412
|
-
/* @__PURE__ */ (0,
|
|
3500
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3413
3501
|
CompanyInformation,
|
|
3414
3502
|
{
|
|
3415
3503
|
name: job.hiringOrganization?.companyName ?? "",
|
|
@@ -3419,7 +3507,7 @@ function JobPost({
|
|
|
3419
3507
|
website: job.hiringOrganization?.companyWebsite
|
|
3420
3508
|
}
|
|
3421
3509
|
),
|
|
3422
|
-
/* @__PURE__ */ (0,
|
|
3510
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
3423
3511
|
CompanyBenefits,
|
|
3424
3512
|
{
|
|
3425
3513
|
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
@@ -3431,6 +3519,44 @@ function JobPost({
|
|
|
3431
3519
|
);
|
|
3432
3520
|
}
|
|
3433
3521
|
|
|
3522
|
+
// src/components/jobCard/JobLocation.tsx
|
|
3523
|
+
var import_lucide_react19 = require("lucide-react");
|
|
3524
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
3525
|
+
function JobLocation({ jobPost }) {
|
|
3526
|
+
const locations = getAddressList(jobPost);
|
|
3527
|
+
if (!locations || locations.length === 0) return null;
|
|
3528
|
+
const primaryOffice = locations[0];
|
|
3529
|
+
const extendedLocations = locations.slice(1).map((address) => address);
|
|
3530
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "flex items-center gap-2", "data-testid": "job-location-element", children: [
|
|
3531
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react19.MapPin, { size: 16 }),
|
|
3532
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "text-sm font-thin", children: primaryOffice }),
|
|
3533
|
+
extendedLocations.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(Tooltip, { children: [
|
|
3534
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(TooltipTrigger, { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
|
|
3535
|
+
Chip_default,
|
|
3536
|
+
{
|
|
3537
|
+
className: "font-bold",
|
|
3538
|
+
size: "small",
|
|
3539
|
+
variant: "jobLocation",
|
|
3540
|
+
"data-testid": "job-location-tooltip",
|
|
3541
|
+
children: [
|
|
3542
|
+
"+ ",
|
|
3543
|
+
extendedLocations.length,
|
|
3544
|
+
" more"
|
|
3545
|
+
]
|
|
3546
|
+
}
|
|
3547
|
+
) }),
|
|
3548
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
3549
|
+
TooltipContent,
|
|
3550
|
+
{
|
|
3551
|
+
className: "border-1 rounded-md border border-grey-5 bg-white p-2",
|
|
3552
|
+
"data-testid": "job-location-tooltip-content",
|
|
3553
|
+
children: extendedLocations.map((location) => /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "text-nowrap text-sm", children: location }, location))
|
|
3554
|
+
}
|
|
3555
|
+
)
|
|
3556
|
+
] }) })
|
|
3557
|
+
] });
|
|
3558
|
+
}
|
|
3559
|
+
|
|
3434
3560
|
// src/types/data/company_service_latest.ts
|
|
3435
3561
|
var company_service_latest_exports2 = {};
|
|
3436
3562
|
__export(company_service_latest_exports2, {
|
|
@@ -3734,11 +3860,13 @@ var jobPostSchema3 = import_zod9.z.object({
|
|
|
3734
3860
|
CompanyTake,
|
|
3735
3861
|
Counter,
|
|
3736
3862
|
DatePicker,
|
|
3863
|
+
DismissibleBanner,
|
|
3737
3864
|
Icon,
|
|
3738
3865
|
Input,
|
|
3739
3866
|
InputOtp,
|
|
3740
3867
|
JobDescription,
|
|
3741
3868
|
JobHeader,
|
|
3869
|
+
JobLocation,
|
|
3742
3870
|
JobPost,
|
|
3743
3871
|
JobPostService,
|
|
3744
3872
|
Label,
|
|
@@ -3755,6 +3883,7 @@ var jobPostSchema3 = import_zod9.z.object({
|
|
|
3755
3883
|
WindowHistoryProvider,
|
|
3756
3884
|
cn,
|
|
3757
3885
|
fetchLocation,
|
|
3886
|
+
salaryRange,
|
|
3758
3887
|
useDisplayText,
|
|
3759
3888
|
useWindowHistory
|
|
3760
3889
|
});
|