@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.js
CHANGED
|
@@ -15,6 +15,7 @@ var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"
|
|
|
15
15
|
neutral: ["text-grey-80", "border-grey-10"],
|
|
16
16
|
primary: ["text-purple-100", "border-purple-20"],
|
|
17
17
|
danger: ["text-pumpkin-100", "border-pumpkin-20"],
|
|
18
|
+
jobLocation: ["text-grey-80", "border-grey-10", "bg-grey-5"],
|
|
18
19
|
onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
|
|
19
20
|
onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
|
|
20
21
|
},
|
|
@@ -1081,7 +1082,7 @@ var buttonVariants = cva5(
|
|
|
1081
1082
|
// src/components/ui/Combobox.tsx
|
|
1082
1083
|
import { cva as cva6 } from "cva";
|
|
1083
1084
|
import { ChevronDownIcon as ChevronDownIcon2, CircleX as CircleX2, icons as icons3 } from "lucide-react";
|
|
1084
|
-
import { forwardRef as forwardRef11, useEffect as useEffect3, useState as useState3 } from "react";
|
|
1085
|
+
import { forwardRef as forwardRef11, useEffect as useEffect3, useRef as useRef3, useState as useState3 } from "react";
|
|
1085
1086
|
|
|
1086
1087
|
// src/components/primitives/popover.tsx
|
|
1087
1088
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
@@ -1128,40 +1129,49 @@ var Combobox = forwardRef11((props, ref) => {
|
|
|
1128
1129
|
} = props;
|
|
1129
1130
|
const [selected, setSelected] = useState3([]);
|
|
1130
1131
|
const [open, setOpen] = useState3(false);
|
|
1132
|
+
const isUserUpdate = useRef3(false);
|
|
1131
1133
|
const IconComponent = icon && icons3[icon];
|
|
1132
1134
|
const hideSearchBox = options?.length <= 5;
|
|
1133
1135
|
const isDefault = variant === "default";
|
|
1134
1136
|
const isChip = variant === "chip";
|
|
1135
|
-
const isEmpty = selected.length
|
|
1137
|
+
const isEmpty = selected.length === 0;
|
|
1136
1138
|
const showChevron = isDefault ? isEmpty : true;
|
|
1137
1139
|
const close = () => setOpen(false);
|
|
1138
1140
|
useEffect3(() => {
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1141
|
+
if (!isUserUpdate.current) {
|
|
1142
|
+
const valueArray = multiselect ? value ?? [] : value ? [value] : [];
|
|
1143
|
+
setSelected(
|
|
1144
|
+
valueArray.map((v) => options.find((o) => o.value === v)).filter((v) => v !== void 0)
|
|
1145
|
+
);
|
|
1146
|
+
}
|
|
1147
|
+
}, [value, options, multiselect]);
|
|
1148
|
+
useEffect3(() => {
|
|
1149
|
+
if (isUserUpdate.current) {
|
|
1150
|
+
if (multiselect) {
|
|
1151
|
+
handleChange?.(selected.map((o) => o.value));
|
|
1152
|
+
} else {
|
|
1153
|
+
handleChange?.(selected[0]?.value ?? "");
|
|
1154
|
+
}
|
|
1155
|
+
isUserUpdate.current = false;
|
|
1156
|
+
}
|
|
1157
|
+
}, [selected, multiselect, handleChange]);
|
|
1158
|
+
const updateMultiSelect = (prev, option) => {
|
|
1159
|
+
return prev.some((o) => o.value === option.value) ? prev.filter((v) => v !== option) : [...prev, option];
|
|
1160
|
+
};
|
|
1144
1161
|
const handleSelect = (value2) => {
|
|
1145
1162
|
const option = options.find((o) => o.value === value2);
|
|
1146
1163
|
if (!option) return;
|
|
1164
|
+
isUserUpdate.current = true;
|
|
1147
1165
|
if (multiselect) {
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
});
|
|
1166
|
+
setSelected((prev) => updateMultiSelect(prev, option));
|
|
1167
|
+
} else {
|
|
1168
|
+
setSelected([option]);
|
|
1169
|
+
close();
|
|
1153
1170
|
}
|
|
1154
|
-
setSelected([option]);
|
|
1155
|
-
handleChange?.(option.value);
|
|
1156
|
-
close();
|
|
1157
1171
|
};
|
|
1158
1172
|
const handleClear = () => {
|
|
1173
|
+
isUserUpdate.current = true;
|
|
1159
1174
|
setSelected([]);
|
|
1160
|
-
if (multiselect) {
|
|
1161
|
-
handleChange?.([]);
|
|
1162
|
-
} else {
|
|
1163
|
-
handleChange?.("");
|
|
1164
|
-
}
|
|
1165
1175
|
};
|
|
1166
1176
|
const handleDisplayValue = () => {
|
|
1167
1177
|
const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
|
|
@@ -1743,6 +1753,7 @@ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
|
1743
1753
|
function ReadMore({ text, ...props }) {
|
|
1744
1754
|
const [isExpanded, setIsExpanded] = useState5(false);
|
|
1745
1755
|
const [maxWords, setMaxWords] = useState5(160);
|
|
1756
|
+
const isOverMaxWords = text.split(" ").length > maxWords;
|
|
1746
1757
|
useEffect5(() => {
|
|
1747
1758
|
const updateMaxWords = () => {
|
|
1748
1759
|
const windowWidth = window.innerWidth;
|
|
@@ -1757,6 +1768,7 @@ function ReadMore({ text, ...props }) {
|
|
|
1757
1768
|
return () => window.removeEventListener("resize", updateMaxWords);
|
|
1758
1769
|
}, []);
|
|
1759
1770
|
function createReadMoreText(text2, maxWords2, isExpanded2) {
|
|
1771
|
+
if (!isOverMaxWords) return text2;
|
|
1760
1772
|
const words = text2.split(" ");
|
|
1761
1773
|
const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
|
|
1762
1774
|
const readMoreText = isExpanded2 ? "" : "...";
|
|
@@ -1766,7 +1778,7 @@ function ReadMore({ text, ...props }) {
|
|
|
1766
1778
|
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
1767
1779
|
return /* @__PURE__ */ jsxs17("div", { ...props, children: [
|
|
1768
1780
|
/* @__PURE__ */ jsx28("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ jsx28(Markdown, { children: snippet }) }),
|
|
1769
|
-
/* @__PURE__ */ jsx28(
|
|
1781
|
+
isOverMaxWords && /* @__PURE__ */ jsx28(
|
|
1770
1782
|
Button,
|
|
1771
1783
|
{
|
|
1772
1784
|
type: "button",
|
|
@@ -2030,573 +2042,1050 @@ function StepTabs({
|
|
|
2030
2042
|
);
|
|
2031
2043
|
}
|
|
2032
2044
|
|
|
2033
|
-
// src/components/
|
|
2045
|
+
// src/components/ui/DismissibleBanner.tsx
|
|
2046
|
+
import { X as X4 } from "lucide-react";
|
|
2047
|
+
import { useEffect as useEffect7, useState as useState7 } from "react";
|
|
2034
2048
|
import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
2035
|
-
function
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
}
|
|
2042
|
-
|
|
2043
|
-
// src/components/company/CompanyInformation.tsx
|
|
2044
|
-
import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2045
|
-
function CompanyInformation({
|
|
2046
|
-
name,
|
|
2047
|
-
how,
|
|
2048
|
-
mission,
|
|
2049
|
-
wow,
|
|
2050
|
-
website
|
|
2049
|
+
function DismissibleBanner({
|
|
2050
|
+
children,
|
|
2051
|
+
cookieId,
|
|
2052
|
+
className,
|
|
2053
|
+
textClassNames,
|
|
2054
|
+
buttonClassNames
|
|
2051
2055
|
}) {
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
"h2",
|
|
2055
|
-
{
|
|
2056
|
-
"data-testid": "company-name",
|
|
2057
|
-
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2058
|
-
children: [
|
|
2059
|
-
"About ",
|
|
2060
|
-
name
|
|
2061
|
-
]
|
|
2062
|
-
}
|
|
2063
|
-
),
|
|
2064
|
-
how && /* @__PURE__ */ jsx34("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
2065
|
-
mission && /* @__PURE__ */ jsxs21("div", { className: "flex gap-2", children: [
|
|
2066
|
-
/* @__PURE__ */ jsx34("span", { children: "\u{1F680}" }),
|
|
2067
|
-
/* @__PURE__ */ jsxs21("p", { className: "text-base text-grey-80", children: [
|
|
2068
|
-
/* @__PURE__ */ jsx34("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
2069
|
-
mission
|
|
2070
|
-
] })
|
|
2071
|
-
] }),
|
|
2072
|
-
wow && /* @__PURE__ */ jsxs21("div", { className: "flex gap-2", children: [
|
|
2073
|
-
/* @__PURE__ */ jsx34("span", { children: "\u{1F31F}" }),
|
|
2074
|
-
/* @__PURE__ */ jsxs21("p", { className: "text-base text-grey-80", children: [
|
|
2075
|
-
/* @__PURE__ */ jsx34("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
2076
|
-
wow
|
|
2077
|
-
] })
|
|
2078
|
-
] }),
|
|
2079
|
-
website && /* @__PURE__ */ jsx34("div", { className: "pt-2", children: /* @__PURE__ */ jsx34(
|
|
2080
|
-
LinkButton,
|
|
2081
|
-
{
|
|
2082
|
-
"data-testid": "company-website-link",
|
|
2083
|
-
href: website,
|
|
2084
|
-
target: "_blank",
|
|
2085
|
-
rel: "noopener noreferrer",
|
|
2086
|
-
children: "Website"
|
|
2087
|
-
}
|
|
2088
|
-
) })
|
|
2089
|
-
] });
|
|
2090
|
-
}
|
|
2091
|
-
|
|
2092
|
-
// src/components/company/CompanyTake.tsx
|
|
2093
|
-
import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2094
|
-
function CompanyTake({ content, avatarSrc }) {
|
|
2095
|
-
if (!content) return null;
|
|
2096
|
-
return /* @__PURE__ */ jsxs22(
|
|
2097
|
-
"div",
|
|
2098
|
-
{
|
|
2099
|
-
"data-testid": "company-take",
|
|
2100
|
-
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
2101
|
-
children: [
|
|
2102
|
-
/* @__PURE__ */ jsx35("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
2103
|
-
/* @__PURE__ */ jsx35("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ jsx35("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
2104
|
-
/* @__PURE__ */ jsxs22("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
2105
|
-
/* @__PURE__ */ jsx35(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
2106
|
-
/* @__PURE__ */ jsxs22("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
2107
|
-
/* @__PURE__ */ jsx35("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
2108
|
-
/* @__PURE__ */ jsx35("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
2109
|
-
] })
|
|
2110
|
-
] })
|
|
2111
|
-
]
|
|
2112
|
-
}
|
|
2113
|
-
);
|
|
2114
|
-
}
|
|
2115
|
-
|
|
2116
|
-
// src/components/jobPost/JobDescription.tsx
|
|
2117
|
-
import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2118
|
-
function JobDescription({ description }) {
|
|
2119
|
-
if (!description) return null;
|
|
2120
|
-
return /* @__PURE__ */ jsxs23("div", { className: "flex w-full flex-col gap-2", children: [
|
|
2121
|
-
/* @__PURE__ */ jsx36("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
2122
|
-
/* @__PURE__ */ jsx36(ReadMore, { text: description })
|
|
2123
|
-
] });
|
|
2124
|
-
}
|
|
2125
|
-
|
|
2126
|
-
// src/components/jobPost/JobHeader.tsx
|
|
2127
|
-
import { Dot as Dot2 } from "lucide-react";
|
|
2128
|
-
import Image2 from "next/image";
|
|
2129
|
-
|
|
2130
|
-
// src/components/buttons/BackButton.tsx
|
|
2131
|
-
import { X as X4 } from "lucide-react";
|
|
2132
|
-
import { useRouter } from "next/navigation";
|
|
2133
|
-
|
|
2134
|
-
// src/hooks/useWindowHistory.ts
|
|
2135
|
-
import { useContext as useContext2 } from "react";
|
|
2136
|
-
|
|
2137
|
-
// src/contexts/WindowHistoryProvider.tsx
|
|
2138
|
-
import { useSearchParams } from "next/navigation";
|
|
2139
|
-
import { createContext, useEffect as useEffect7, useMemo, useState as useState7 } from "react";
|
|
2140
|
-
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
2141
|
-
var WindowHistoryContext = createContext({});
|
|
2142
|
-
function WindowHistoryProvider({ children }) {
|
|
2143
|
-
const [history, setHistory] = useState7([]);
|
|
2144
|
-
const searchParams = useSearchParams();
|
|
2056
|
+
const safeId = encodeURIComponent(cookieId);
|
|
2057
|
+
const [isVisible, setIsVisible] = useState7(false);
|
|
2145
2058
|
useEffect7(() => {
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
)
|
|
2149
|
-
|
|
2150
|
-
const contextValue = useMemo(() => ({ history }), [history]);
|
|
2151
|
-
return /* @__PURE__ */ jsx37(WindowHistoryContext.Provider, { value: contextValue, children });
|
|
2152
|
-
}
|
|
2153
|
-
|
|
2154
|
-
// src/hooks/useWindowHistory.ts
|
|
2155
|
-
function useWindowHistory() {
|
|
2156
|
-
const windowHistoryContext = useContext2(WindowHistoryContext);
|
|
2157
|
-
return windowHistoryContext;
|
|
2158
|
-
}
|
|
2159
|
-
|
|
2160
|
-
// src/components/buttons/BackButton.tsx
|
|
2161
|
-
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
2162
|
-
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
2163
|
-
const { history } = useWindowHistory();
|
|
2164
|
-
const router = useRouter();
|
|
2165
|
-
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(new URL(r).pathname));
|
|
2166
|
-
const goBack = () => {
|
|
2167
|
-
const previous = history[history.length - 2];
|
|
2168
|
-
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
2169
|
-
router.back();
|
|
2170
|
-
} else {
|
|
2171
|
-
router.push(fallbackHref ?? "/");
|
|
2059
|
+
const cookies = document.cookie.split(";");
|
|
2060
|
+
const isDismissed = cookies.some((cookie) => cookie.trim().startsWith(`${safeId}=true`));
|
|
2061
|
+
if (!isDismissed) {
|
|
2062
|
+
setIsVisible(true);
|
|
2172
2063
|
}
|
|
2064
|
+
}, [safeId]);
|
|
2065
|
+
const handleDismiss = () => {
|
|
2066
|
+
document.cookie = `${safeId}=true;path=/`;
|
|
2067
|
+
setIsVisible(false);
|
|
2173
2068
|
};
|
|
2174
|
-
|
|
2175
|
-
|
|
2069
|
+
if (!isVisible) return null;
|
|
2070
|
+
return /* @__PURE__ */ jsxs20(
|
|
2071
|
+
"nav",
|
|
2176
2072
|
{
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2073
|
+
className: cn(
|
|
2074
|
+
"align-center flex w-full items-center justify-between gap-2 bg-blue-100 px-4 py-3",
|
|
2075
|
+
className
|
|
2076
|
+
),
|
|
2077
|
+
children: [
|
|
2078
|
+
/* @__PURE__ */ jsx33("div", { className: cn("w-full text-center text-sm text-green-100", textClassNames), children }),
|
|
2079
|
+
/* @__PURE__ */ jsx33(
|
|
2080
|
+
"button",
|
|
2081
|
+
{
|
|
2082
|
+
className: cn("text-green-100", buttonClassNames),
|
|
2083
|
+
"aria-label": "Close banner",
|
|
2084
|
+
onClick: handleDismiss,
|
|
2085
|
+
children: /* @__PURE__ */ jsx33(X4, { size: 28 })
|
|
2086
|
+
}
|
|
2087
|
+
)
|
|
2088
|
+
]
|
|
2184
2089
|
}
|
|
2185
2090
|
);
|
|
2186
2091
|
}
|
|
2187
2092
|
|
|
2188
|
-
// src/
|
|
2189
|
-
import {
|
|
2190
|
-
Banknote,
|
|
2191
|
-
Bell,
|
|
2192
|
-
BriefcaseBusiness,
|
|
2193
|
-
Building,
|
|
2194
|
-
Building2,
|
|
2195
|
-
CircleUser,
|
|
2196
|
-
CircleUserRound,
|
|
2197
|
-
Clock2,
|
|
2198
|
-
Contact,
|
|
2199
|
-
GalleryVerticalEnd,
|
|
2200
|
-
Home,
|
|
2201
|
-
KeyRound,
|
|
2202
|
-
Layers,
|
|
2203
|
-
LifeBuoy,
|
|
2204
|
-
MapPin,
|
|
2205
|
-
MessageSquareDot,
|
|
2206
|
-
Settings,
|
|
2207
|
-
SquareKanban,
|
|
2208
|
-
Users,
|
|
2209
|
-
Wallet
|
|
2210
|
-
} from "lucide-react";
|
|
2211
|
-
var iconMap = {
|
|
2212
|
-
house: Home,
|
|
2213
|
-
layers: Layers,
|
|
2214
|
-
users: Users,
|
|
2215
|
-
settings: Settings,
|
|
2216
|
-
building: Building,
|
|
2217
|
-
bell: Bell,
|
|
2218
|
-
wallet: Wallet,
|
|
2219
|
-
contact: Contact,
|
|
2220
|
-
banknote: Banknote,
|
|
2221
|
-
"message-square-dot": MessageSquareDot,
|
|
2222
|
-
"life-buoy": LifeBuoy,
|
|
2223
|
-
"building-2": Building2,
|
|
2224
|
-
"gallery-vertical-end": GalleryVerticalEnd,
|
|
2225
|
-
"square-kanban": SquareKanban,
|
|
2226
|
-
"briefcase-business": BriefcaseBusiness,
|
|
2227
|
-
"circle-user": CircleUser,
|
|
2228
|
-
"key-round": KeyRound,
|
|
2229
|
-
"clock-2": Clock2,
|
|
2230
|
-
"circle-user-round": CircleUserRound,
|
|
2231
|
-
"map-pin": MapPin
|
|
2232
|
-
};
|
|
2093
|
+
// src/types/latest/company_service_latest.ts
|
|
2094
|
+
import { z as z2 } from "zod";
|
|
2233
2095
|
|
|
2234
|
-
// src/
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2246
|
-
|
|
2247
|
-
|
|
2248
|
-
}
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
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
|
-
src: avatarSrc,
|
|
2310
|
-
rel: "noopener noreferrer"
|
|
2311
|
-
}
|
|
2312
|
-
) }),
|
|
2313
|
-
/* @__PURE__ */ jsx39("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ jsxs24(
|
|
2314
|
-
"div",
|
|
2315
|
-
{
|
|
2316
|
-
"data-testid": `job-header-subtitle-${i}`,
|
|
2317
|
-
className: "flex items-center",
|
|
2318
|
-
children: [
|
|
2319
|
-
subtitle,
|
|
2320
|
-
i < subtitles.length - 1 && /* @__PURE__ */ jsx39(Dot2, { className: "mx-1 shrink-0", size: 10 })
|
|
2321
|
-
]
|
|
2322
|
-
},
|
|
2323
|
-
subtitle
|
|
2324
|
-
)) })
|
|
2325
|
-
] }),
|
|
2326
|
-
/* @__PURE__ */ jsxs24(
|
|
2327
|
-
"div",
|
|
2328
|
-
{
|
|
2329
|
-
"data-testid": "job-header-content",
|
|
2330
|
-
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
2331
|
-
children: [
|
|
2332
|
-
/* @__PURE__ */ jsx39(
|
|
2333
|
-
"h2",
|
|
2334
|
-
{
|
|
2335
|
-
"data-testid": "job-header-title",
|
|
2336
|
-
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2337
|
-
children: title
|
|
2338
|
-
}
|
|
2339
|
-
),
|
|
2340
|
-
!!actions && /* @__PURE__ */ jsx39(
|
|
2341
|
-
"div",
|
|
2342
|
-
{
|
|
2343
|
-
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
2344
|
-
"data-testid": "job-header-actions",
|
|
2345
|
-
children: actions
|
|
2346
|
-
}
|
|
2347
|
-
)
|
|
2348
|
-
]
|
|
2349
|
-
}
|
|
2350
|
-
),
|
|
2351
|
-
/* @__PURE__ */ jsx39(
|
|
2352
|
-
"div",
|
|
2353
|
-
{
|
|
2354
|
-
"data-testid": "job-header-tags",
|
|
2355
|
-
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
2356
|
-
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ jsxs24(
|
|
2357
|
-
Chip_default,
|
|
2358
|
-
{
|
|
2359
|
-
size: "small",
|
|
2360
|
-
variant: "neutral",
|
|
2361
|
-
"aria-label": name,
|
|
2362
|
-
"data-testid": `job-header-tag-${name}`,
|
|
2363
|
-
children: [
|
|
2364
|
-
renderIcon(icon),
|
|
2365
|
-
/* @__PURE__ */ jsx39("span", { children: label })
|
|
2366
|
-
]
|
|
2367
|
-
},
|
|
2368
|
-
name
|
|
2369
|
-
))
|
|
2370
|
-
}
|
|
2371
|
-
)
|
|
2372
|
-
] })
|
|
2373
|
-
]
|
|
2374
|
-
}
|
|
2375
|
-
);
|
|
2376
|
-
}
|
|
2377
|
-
|
|
2378
|
-
// src/components/jobPost/JobPost.tsx
|
|
2379
|
-
import * as DateFns from "date-fns";
|
|
2096
|
+
// src/types/latest/shared_pickle_output_latest.ts
|
|
2097
|
+
var shared_pickle_output_latest_exports = {};
|
|
2098
|
+
__export(shared_pickle_output_latest_exports, {
|
|
2099
|
+
CurrencyEnum: () => CurrencyEnum,
|
|
2100
|
+
DetailLevelEnum: () => DetailLevelEnum,
|
|
2101
|
+
TypeEnum: () => TypeEnum,
|
|
2102
|
+
UnitTextEnum: () => UnitTextEnum,
|
|
2103
|
+
imageAssetSchema: () => imageAssetSchema,
|
|
2104
|
+
imageSchema: () => imageSchema,
|
|
2105
|
+
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2106
|
+
placeSchema: () => placeSchema,
|
|
2107
|
+
postalAddressSchema: () => postalAddressSchema,
|
|
2108
|
+
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2109
|
+
});
|
|
2110
|
+
import { z } from "zod";
|
|
2111
|
+
var TypeEnum = z.enum(["IMAGE"]);
|
|
2112
|
+
var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2113
|
+
var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2114
|
+
var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
|
|
2115
|
+
var postalAddressSchema = z.object({
|
|
2116
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2117
|
+
type: z.string().describe("Document type used for schema"),
|
|
2118
|
+
addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2119
|
+
addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2120
|
+
addressLocality: z.optional(z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2121
|
+
streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
|
|
2122
|
+
streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
|
|
2123
|
+
postalCode: z.optional(z.string()).describe("The postal code"),
|
|
2124
|
+
description: z.optional(z.string()).describe("A descriptive string containing the full address.")
|
|
2125
|
+
});
|
|
2126
|
+
var placeSchema = z.object({
|
|
2127
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2128
|
+
detailLevel: z.optional(DetailLevelEnum),
|
|
2129
|
+
latitude: z.optional(z.number()).describe("The latitude of a location."),
|
|
2130
|
+
longitude: z.optional(z.number()).describe("The longitude of a location."),
|
|
2131
|
+
address: z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2132
|
+
});
|
|
2133
|
+
var quantitativeValueSchema = z.object({
|
|
2134
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2135
|
+
type: z.string().describe("Document type used for schema"),
|
|
2136
|
+
value: z.optional(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."),
|
|
2137
|
+
minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2138
|
+
maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2139
|
+
unitText: UnitTextEnum
|
|
2140
|
+
});
|
|
2141
|
+
var monetaryAmountSchema = z.object({
|
|
2142
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2143
|
+
type: z.string().describe("Document type used for schema"),
|
|
2144
|
+
singleValue: z.optional(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."),
|
|
2145
|
+
minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2146
|
+
maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2147
|
+
value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2148
|
+
currency: z.optional(CurrencyEnum)
|
|
2149
|
+
});
|
|
2150
|
+
var imageAssetSchema = z.object({
|
|
2151
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2152
|
+
altText: z.optional(z.string()).describe("The alt text for the image"),
|
|
2153
|
+
assetId: z.optional(z.string()).describe("The asset ID for the image"),
|
|
2154
|
+
description: z.optional(z.string()).describe("The description for the image"),
|
|
2155
|
+
extension: z.optional(z.string()).describe("The extension for the image"),
|
|
2156
|
+
label: z.optional(z.string()).describe("The label for the image"),
|
|
2157
|
+
mimeType: z.optional(z.string()).describe("The mime type for the image"),
|
|
2158
|
+
originalFilename: z.optional(z.string()).describe("The original filename for the image"),
|
|
2159
|
+
path: z.optional(z.string()).describe("The path for the image"),
|
|
2160
|
+
sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
|
|
2161
|
+
size: z.optional(z.number()).describe("The size for the image"),
|
|
2162
|
+
title: z.optional(z.string()).describe("The title for the image"),
|
|
2163
|
+
uploadId: z.optional(z.string()).describe("The upload ID for the image"),
|
|
2164
|
+
url: z.optional(z.string()).describe("The URL for the image")
|
|
2165
|
+
});
|
|
2166
|
+
var imageSchema = z.object({
|
|
2167
|
+
version: z.literal("1.0.0").default("1.0.0"),
|
|
2168
|
+
type: z.string().describe("Document type used for schema"),
|
|
2169
|
+
asset: z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2170
|
+
});
|
|
2380
2171
|
|
|
2381
|
-
// src/
|
|
2382
|
-
|
|
2172
|
+
// src/types/latest/company_service_latest.ts
|
|
2173
|
+
var TypeEnum2 = z2.enum(["OFFICE"]);
|
|
2174
|
+
var CategoryEnum = z2.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
|
|
2175
|
+
var TitleEnum = z2.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
|
|
2176
|
+
var PublishStatusEnum = z2.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
2177
|
+
var OfficeTypeEnum = z2.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
|
|
2178
|
+
var socialMediaSchema = z2.object({
|
|
2179
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2180
|
+
url: z2.string().describe("The link to the social media platform"),
|
|
2181
|
+
type: z2.string().describe("The type of social media link")
|
|
2182
|
+
});
|
|
2183
|
+
var companyBenefitsSchema = z2.object({
|
|
2184
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2185
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2186
|
+
title: z2.string(),
|
|
2187
|
+
description: z2.optional(z2.string()),
|
|
2188
|
+
category: CategoryEnum
|
|
2189
|
+
});
|
|
2190
|
+
var industrySchema = z2.lazy(() => z2.object({
|
|
2191
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2192
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2193
|
+
name: z2.string(),
|
|
2194
|
+
description: z2.optional(z2.string()).describe("A brief description of the industry"),
|
|
2195
|
+
onetIndustryId: z2.optional(z2.string()).describe("ONET industry ID"),
|
|
2196
|
+
parent: z2.optional(industrySchema)
|
|
2197
|
+
}));
|
|
2198
|
+
var jobBoardSchema = z2.object({
|
|
2199
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2200
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2201
|
+
name: z2.string().describe("The name of the job board"),
|
|
2202
|
+
description: z2.string().describe("A brief description of the job board"),
|
|
2203
|
+
logo: z2.optional(imageSchema).describe("The logo of the job board"),
|
|
2204
|
+
baseUrl: z2.optional(z2.string()).describe("The base URL of the job board")
|
|
2205
|
+
});
|
|
2206
|
+
var personSchema = z2.object({
|
|
2207
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2208
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2209
|
+
firstName: z2.string().describe("The first name of the person"),
|
|
2210
|
+
lastName: z2.string().describe("The last name of the person"),
|
|
2211
|
+
title: z2.optional(z2.array(z2.string())).describe("The titles of the degree of the person"),
|
|
2212
|
+
slug: z2.string().describe("person slug - should be familyname-givenname-title(s)"),
|
|
2213
|
+
jobTitle: z2.optional(z2.string()).describe("The job title of the person"),
|
|
2214
|
+
isDoctor: z2.optional(z2.boolean()).describe("Is the person a doctor"),
|
|
2215
|
+
isMedical: z2.optional(z2.boolean()).describe("Are they of a medical background?"),
|
|
2216
|
+
isScientist: z2.optional(z2.boolean()).describe("Are they a scientist?"),
|
|
2217
|
+
image: z2.optional(imageSchema).describe("The image of the person"),
|
|
2218
|
+
email: z2.optional(z2.string()).describe("The email of the person"),
|
|
2219
|
+
socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the person"),
|
|
2220
|
+
telephone: z2.optional(z2.string()).describe("The telephone number of the person"),
|
|
2221
|
+
url: z2.optional(z2.string()).describe("The URL of the person"),
|
|
2222
|
+
address: z2.optional(placeSchema).describe("The address of the person")
|
|
2223
|
+
});
|
|
2224
|
+
var companyCareersSchema = z2.object({
|
|
2225
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2226
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2227
|
+
careersUrl: z2.string().describe("The URL of the company careers page"),
|
|
2228
|
+
jobBoard: z2.optional(jobBoardSchema),
|
|
2229
|
+
jobBoardSlug: z2.optional(z2.array(z2.string())),
|
|
2230
|
+
companyBenefits: z2.optional(z2.array(companyBenefitsSchema)).describe("What are the specific benefits of that company. The benefit is generic.")
|
|
2231
|
+
});
|
|
2232
|
+
var companyPhilosophySchema = z2.object({
|
|
2233
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2234
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2235
|
+
companyMission: z2.optional(z2.string()).describe("The mission statement of the company."),
|
|
2236
|
+
companyHow: z2.optional(z2.string()).describe("How does the company achieve its mission"),
|
|
2237
|
+
companyCulture: z2.optional(z2.array(z2.string())).describe("What are some of the culture aspects of this company?")
|
|
2238
|
+
});
|
|
2239
|
+
var companyNdgSchema = z2.object({
|
|
2240
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2241
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2242
|
+
companyWow: z2.optional(z2.string()).describe("What is the wow of this company?"),
|
|
2243
|
+
companyNdgTake: z2.optional(z2.string()).describe("What is the NDG POV on this company?"),
|
|
2244
|
+
companyBestFit: z2.optional(z2.array(z2.string())),
|
|
2245
|
+
companyInterests: z2.optional(z2.array(z2.string()))
|
|
2246
|
+
});
|
|
2247
|
+
var foundingInformationSchema = z2.object({
|
|
2248
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2249
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2250
|
+
foundedDate: z2.optional(z2.string()),
|
|
2251
|
+
foundedCountry: z2.optional(z2.string()),
|
|
2252
|
+
foundedCity: z2.optional(z2.string()),
|
|
2253
|
+
founders: z2.optional(z2.array(personSchema))
|
|
2254
|
+
});
|
|
2255
|
+
var ngdMetadataSchema = z2.object({
|
|
2256
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2257
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2258
|
+
lastScraped: z2.optional(z2.string()).describe("Date the last entity was scraped, if applicable"),
|
|
2259
|
+
scraperVersion: z2.optional(z2.string()),
|
|
2260
|
+
postProcessorVersion: z2.optional(z2.string()),
|
|
2261
|
+
uniqueRunId: z2.optional(z2.string()),
|
|
2262
|
+
postProcessorUniqueRunId: z2.optional(z2.string()),
|
|
2263
|
+
isScrapeManaged: z2.optional(z2.boolean()).default(true)
|
|
2264
|
+
});
|
|
2265
|
+
var companySchema = z2.object({
|
|
2266
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2267
|
+
id: z2.string().describe("The NDG specific id for a company. Cannot be changed."),
|
|
2268
|
+
createdAt: z2.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2269
|
+
updatedAt: z2.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2270
|
+
companyName: z2.string().describe("The name of the company"),
|
|
2271
|
+
slug: z2.string().describe("The NDG specific slug for a company."),
|
|
2272
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2273
|
+
logo: z2.optional(imageSchema).describe("The logo of the company"),
|
|
2274
|
+
companyWebsite: z2.optional(z2.string()).describe("The website of the company"),
|
|
2275
|
+
socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the company"),
|
|
2276
|
+
brandColor: z2.optional(z2.string()).describe("The brand color of the company"),
|
|
2277
|
+
companyCareers: z2.optional(companyCareersSchema).describe("Career Specific Information for the company."),
|
|
2278
|
+
companyPhilosophy: z2.optional(companyPhilosophySchema).describe("Company mission,values and how the company achieves its mission."),
|
|
2279
|
+
companyNdg: z2.optional(companyNdgSchema).describe("Next Degree specific information for the company."),
|
|
2280
|
+
foundingInfo: z2.optional(foundingInformationSchema),
|
|
2281
|
+
headquartersLocation: z2.optional(placeSchema),
|
|
2282
|
+
employeeEstimate: z2.optional(z2.string()),
|
|
2283
|
+
publishStatus: z2.optional(z2.string()),
|
|
2284
|
+
ngdMetadata: z2.optional(ngdMetadataSchema)
|
|
2285
|
+
});
|
|
2286
|
+
var officeSchema = z2.object({
|
|
2287
|
+
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2288
|
+
type: z2.string().describe("Document type used for schema"),
|
|
2289
|
+
name: z2.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
|
|
2290
|
+
officeType: OfficeTypeEnum,
|
|
2291
|
+
companyId: z2.optional(companySchema),
|
|
2292
|
+
geoLocation: z2.optional(placeSchema).describe("Geographical location details: coordinates + postal address"),
|
|
2293
|
+
createdAt: z2.optional(z2.string()),
|
|
2294
|
+
updatedAt: z2.optional(z2.string())
|
|
2295
|
+
});
|
|
2383
2296
|
|
|
2384
|
-
// src/
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
};
|
|
2439
|
-
var
|
|
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
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2297
|
+
// src/types/latest/job_posting_service_latest.ts
|
|
2298
|
+
import { z as z3 } from "zod";
|
|
2299
|
+
var TypeEnum3 = z3.enum(["JOB_POST"]);
|
|
2300
|
+
var JobLocationTypeEnum = z3.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
2301
|
+
var EmploymentTypeEnum = z3.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|
|
2302
|
+
var EmploymentLevelEnum = z3.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
|
|
2303
|
+
var JobFunctionEnum = z3.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"]);
|
|
2304
|
+
var PublishStatusEnum2 = z3.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
2305
|
+
var BestFitEnum = z3.enum(["DENTIST", "DIETICIAN", "DOULA", "MEDICAL_ASSISTANT", "MIDWIFE", "NURSE", "OCCUPATIONAL_THERAPIST", "PHARMACIST", "PHYSICAL_THERAPIST", "PHYSICIAN", "PHYSICIAN_ASSISTANT", "PSYCHOLOGIST", "RADIOLOGIST", "SOCIAL_WORKER", "SPEECH_LANGUAGE_PATHOLOGIST", "SURGEON"]);
|
|
2306
|
+
var ClinicalLicenseEnum = z3.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
|
|
2307
|
+
var ShiftEnum = z3.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
|
|
2308
|
+
var ClinicalSettingEnum = z3.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"]);
|
|
2309
|
+
var ClinicalSpecialtyEnum = z3.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"]);
|
|
2310
|
+
var jobPostSchema = z3.object({
|
|
2311
|
+
version: z3.literal("1.0.0").default("1.0.0"),
|
|
2312
|
+
id: z3.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."),
|
|
2313
|
+
type: z3.string().describe("Document type used for schema"),
|
|
2314
|
+
createdAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2315
|
+
updatedAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2316
|
+
dateAdded: z3.optional(z3.string().datetime()).describe("The date the job was added to the platform"),
|
|
2317
|
+
datePosted: z3.optional(z3.string().datetime()).describe("The date the job was published for public viewing"),
|
|
2318
|
+
dateRemoved: z3.optional(z3.string().datetime()).describe("The date the job was removed from public viewing"),
|
|
2319
|
+
validThrough: z3.optional(z3.string().datetime()).describe("The date the job posting is valid through. After this date it will be removed from public viewing"),
|
|
2320
|
+
vacancyCount: z3.optional(z3.number().int()).describe("The number of vacancies for a given job posting"),
|
|
2321
|
+
clientId: z3.string().describe("The ID assigned by the client to a job - normally the same as the GH / Lever / Ashby ID or internal ID"),
|
|
2322
|
+
url: z3.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
|
|
2323
|
+
title: z3.string().describe("The title of the job post"),
|
|
2324
|
+
description: z3.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
|
|
2325
|
+
richTextDescription: z3.optional(z3.string()).describe("The description of the job post saved as rich text"),
|
|
2326
|
+
isClinical: z3.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."),
|
|
2327
|
+
isRemote: z3.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)."),
|
|
2328
|
+
isVerified: z3.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."),
|
|
2329
|
+
isDirectApply: z3.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."),
|
|
2330
|
+
jobLocationType: z3.optional(z3.array(JobLocationTypeEnum)),
|
|
2331
|
+
employmentType: z3.optional(z3.array(EmploymentTypeEnum)),
|
|
2332
|
+
employmentLevel: z3.optional(EmploymentLevelEnum),
|
|
2333
|
+
jobFunction: z3.optional(JobFunctionEnum),
|
|
2334
|
+
publishStatus: PublishStatusEnum2,
|
|
2335
|
+
bestFit: z3.optional(z3.array(BestFitEnum)),
|
|
2336
|
+
clinicalLicense: z3.optional(z3.array(ClinicalLicenseEnum)),
|
|
2337
|
+
shift: z3.optional(z3.array(ShiftEnum)),
|
|
2338
|
+
clinicalSetting: z3.optional(z3.array(ClinicalSettingEnum)),
|
|
2339
|
+
clinicalSpecialty: z3.optional(z3.array(ClinicalSpecialtyEnum)),
|
|
2340
|
+
estimatedSalary: z3.optional(monetaryAmountSchema).describe("Determines the estimated salary for a given job posting"),
|
|
2341
|
+
jobLocation: z3.optional(postalAddressSchema).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
2342
|
+
applicableOffices: z3.optional(z3.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."),
|
|
2343
|
+
applicantLocationRequirements: z3.optional(z3.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."),
|
|
2344
|
+
hiringOrganization: z3.optional(companySchema).describe("The organization that is hiring for the role")
|
|
2345
|
+
});
|
|
2346
|
+
|
|
2347
|
+
// src/types/latest/custom/company_service_sanity.ts
|
|
2348
|
+
import { z as z5 } from "zod";
|
|
2349
|
+
|
|
2350
|
+
// src/types/latest/custom/custom_sanity_models.ts
|
|
2351
|
+
import { z as z4 } from "zod";
|
|
2352
|
+
var sanityReferenceSchema = z4.object({
|
|
2353
|
+
_ref: z4.string(),
|
|
2354
|
+
_type: z4.string(),
|
|
2355
|
+
_key: z4.optional(z4.string())
|
|
2356
|
+
});
|
|
2357
|
+
var sanitySlugSchema = z4.object({
|
|
2358
|
+
current: z4.string(),
|
|
2359
|
+
_type: z4.string(),
|
|
2360
|
+
_key: z4.optional(z4.string())
|
|
2361
|
+
});
|
|
2362
|
+
|
|
2363
|
+
// src/types/latest/custom/company_service_sanity.ts
|
|
2364
|
+
var foundingInformationSchema2 = foundingInformationSchema.extend({
|
|
2365
|
+
_type: z5.string().describe("Document type used within sanity").default("companyFounding"),
|
|
2366
|
+
founders: z5.optional(z5.union([z5.array(personSchema), z5.array(sanityReferenceSchema)])).nullable(),
|
|
2367
|
+
founderList: z5.optional(z5.union([z5.array(personSchema), z5.array(sanityReferenceSchema)])).nullable()
|
|
2368
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2369
|
+
...data,
|
|
2370
|
+
type: data._type,
|
|
2371
|
+
founders: data.founders || data.founderList || void 0
|
|
2372
|
+
})).transform(({ _type, founderList, ...rest }) => rest);
|
|
2373
|
+
var companyNdgSchema2 = companyNdgSchema.extend({
|
|
2374
|
+
_type: z5.string().describe("Document type used within sanity").default("companyNDG"),
|
|
2375
|
+
companyNDGTake: z5.string().nullable().describe("What is the NDG POV on this company?")
|
|
2376
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2377
|
+
...data,
|
|
2378
|
+
type: data._type,
|
|
2379
|
+
companyNdgTake: data.companyNDGTake
|
|
2380
|
+
})).transform(({ _type, companyNDGTake, ...rest }) => rest);
|
|
2381
|
+
var ngdMetadataSchema2 = ngdMetadataSchema.extend({
|
|
2382
|
+
_type: z5.string().describe("Document type used within sanity").default("ndgMetadata")
|
|
2383
|
+
}).omit({ type: true }).transform((data) => ({
|
|
2384
|
+
...data,
|
|
2385
|
+
type: data._type
|
|
2386
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2387
|
+
var companyPhilosophySchema2 = companyPhilosophySchema.extend({
|
|
2388
|
+
_type: z5.string().describe("Document type used within sanity").default("companyPhilosophy")
|
|
2389
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2390
|
+
...data,
|
|
2391
|
+
type: data._type
|
|
2392
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2393
|
+
var companyCareersSchema2 = companyCareersSchema.extend({
|
|
2394
|
+
_type: z5.string().describe("Document type used within sanity").default("companyCareers"),
|
|
2395
|
+
companyBenefits: z5.optional(z5.array(
|
|
2396
|
+
z5.union([companyBenefitsSchema, sanityReferenceSchema])
|
|
2397
|
+
)).nullable().describe("What are the specific benefits of that company. The benefit is generic."),
|
|
2398
|
+
jobBoard: z5.union([jobBoardSchema, sanityReferenceSchema]).nullable(),
|
|
2399
|
+
jobBoardSlug: z5.optional(z5.union([z5.array(z5.string()), z5.array(sanitySlugSchema)]))
|
|
2400
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2401
|
+
...data,
|
|
2402
|
+
type: data._type
|
|
2403
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2404
|
+
var companySchema2 = companySchema.extend({
|
|
2405
|
+
_id: z5.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."),
|
|
2406
|
+
_rev: z5.string().nullable().describe("Revision number"),
|
|
2407
|
+
_type: z5.string().describe("Document type used within sanity").default("company"),
|
|
2408
|
+
_createdAt: z5.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2409
|
+
_updatedAt: z5.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2410
|
+
companyCareers: companyCareersSchema2.nullable().describe("Career Specific Information for the company."),
|
|
2411
|
+
companyPhilosophy: companyPhilosophySchema2.nullable().describe("Company mission,values and how the company achieves its mission."),
|
|
2412
|
+
companyNDG: companyNdgSchema2.nullable().describe("Next Degree specific information for the company."),
|
|
2413
|
+
foundingInfo: foundingInformationSchema2.nullable(),
|
|
2414
|
+
slug: z5.union([z5.string(), sanitySlugSchema]).describe("The NDG specific slug for a company."),
|
|
2415
|
+
ndgMetadata: ngdMetadataSchema2.nullable(),
|
|
2416
|
+
logo: z5.union([imageSchema, z5.record(z5.any())]).nullable().describe("The logo of the company"),
|
|
2417
|
+
//Deprecated Models
|
|
2418
|
+
logoImageURL: z5.optional(z5.string()).describe("The logo of the company"),
|
|
2419
|
+
industryList: z5.optional(z5.array(sanityReferenceSchema)).describe("The industry of the company")
|
|
2420
|
+
}).omit({ type: true, id: true, createdAt: true, updatedAt: true }).strict().transform((data) => ({
|
|
2421
|
+
...data,
|
|
2422
|
+
type: data._type,
|
|
2423
|
+
id: data._id,
|
|
2424
|
+
createdAt: data._createdAt,
|
|
2425
|
+
updatedAt: data._updatedAt,
|
|
2426
|
+
rev: data._rev
|
|
2427
|
+
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
2428
|
+
|
|
2429
|
+
// src/types/latest/custom/job_posting_service_sanity.ts
|
|
2430
|
+
import { z as z6 } from "zod";
|
|
2431
|
+
var JobPostTypeEnum = z6.enum(["jobPost"]);
|
|
2432
|
+
var MonetaryAmountTypeEnum = z6.enum(["monetaryAmount"]);
|
|
2433
|
+
var postalAddressSchema2 = postalAddressSchema.extend({
|
|
2434
|
+
_type: z6.string().describe("Document type used within sanity").default("address")
|
|
2435
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2436
|
+
...data,
|
|
2437
|
+
type: data._type
|
|
2438
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2439
|
+
var quantitativeValueSchema2 = quantitativeValueSchema.extend({
|
|
2440
|
+
_type: z6.string().describe("Document type used within sanity").default("quantitativeValue")
|
|
2441
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2442
|
+
...data,
|
|
2443
|
+
type: data._type
|
|
2444
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2445
|
+
var monetaryAmountSchema2 = monetaryAmountSchema.extend({
|
|
2446
|
+
_type: z6.string().describe("Document type used within sanity").default("monetaryAmount"),
|
|
2447
|
+
value: quantitativeValueSchema2.optional().describe("The quantitative_value for a given salary")
|
|
2448
|
+
}).omit({ type: true }).strict().transform((data) => ({
|
|
2449
|
+
...data,
|
|
2450
|
+
type: data._type
|
|
2451
|
+
})).transform(({ _type, ...rest }) => rest);
|
|
2452
|
+
var jobPostSchema2 = jobPostSchema.extend({
|
|
2453
|
+
// Override base fields with Sanity-specific fields
|
|
2454
|
+
_id: z6.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-.*-.*$/),
|
|
2455
|
+
_rev: z6.string().optional().describe("Revision number"),
|
|
2456
|
+
_type: z6.string().describe("Document type used within sanity").default("jobPost"),
|
|
2457
|
+
_createdAt: z6.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2458
|
+
_updatedAt: z6.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
2459
|
+
// Override fields with new schemas
|
|
2460
|
+
estimatedSalary: monetaryAmountSchema2.optional().describe("Determines the estimated salary for a given job posting"),
|
|
2461
|
+
jobLocation: postalAddressSchema2.optional().describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
2462
|
+
// Add Sanity-specific fields
|
|
2463
|
+
ndgMetadata: z6.record(z6.any()).optional(),
|
|
2464
|
+
ndgID: z6.string().optional(),
|
|
2465
|
+
hiringOrganization: z6.optional(z6.union([sanityReferenceSchema, companySchema])),
|
|
2466
|
+
raw: z6.record(z6.any()).optional(),
|
|
2467
|
+
isLoaded: z6.boolean().default(false),
|
|
2468
|
+
isVerified: z6.boolean().default(false),
|
|
2469
|
+
needsReview: z6.boolean().default(false),
|
|
2470
|
+
schema_version: z6.string().optional(),
|
|
2471
|
+
origin: z6.string().optional(),
|
|
2472
|
+
temp: z6.record(z6.any()).optional(),
|
|
2473
|
+
applicationType: z6.string().optional(),
|
|
2474
|
+
// Override clientId to use Sanity naming convention
|
|
2475
|
+
clientID: z6.string()
|
|
2476
|
+
}).omit({ type: true, id: true, createdAt: true, updatedAt: true, clientId: true }).transform((data) => ({
|
|
2477
|
+
...data,
|
|
2478
|
+
type: data._type,
|
|
2479
|
+
id: data._id,
|
|
2480
|
+
createdAt: data._createdAt,
|
|
2481
|
+
updatedAt: data._updatedAt,
|
|
2482
|
+
rev: data._rev
|
|
2483
|
+
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
2484
|
+
|
|
2485
|
+
// src/lib/salaryRange.ts
|
|
2486
|
+
var CurrencyEnum2 = shared_pickle_output_latest_exports.CurrencyEnum;
|
|
2487
|
+
function salaryRange(salary, showUnitText = true) {
|
|
2488
|
+
if (!salary) return null;
|
|
2489
|
+
let min = salary.minValue;
|
|
2490
|
+
let max = salary.maxValue;
|
|
2491
|
+
let single = salary.singleValue;
|
|
2492
|
+
let value = salary.value;
|
|
2493
|
+
let unitText = "YEAR";
|
|
2494
|
+
const signs = {
|
|
2495
|
+
[CurrencyEnum2.Values.USD]: "$",
|
|
2496
|
+
[CurrencyEnum2.Values.GBP]: "\xA3",
|
|
2497
|
+
[CurrencyEnum2.Values.EUR]: "\u20AC"
|
|
2498
|
+
};
|
|
2499
|
+
const sign = signs[salary.currency ?? CurrencyEnum2.Values.USD];
|
|
2500
|
+
if (value != null && typeof value === "object") {
|
|
2501
|
+
min = value.minValue;
|
|
2502
|
+
max = value.maxValue;
|
|
2503
|
+
single = value.value;
|
|
2504
|
+
unitText = value.unitText;
|
|
2492
2505
|
}
|
|
2506
|
+
if (unitText === "YEAR") unitText = " per year";
|
|
2507
|
+
if (unitText === "MONTH") unitText = " per month";
|
|
2508
|
+
if (unitText === "WEEK") unitText = " per week";
|
|
2509
|
+
if (unitText === "DAY") unitText = " per day";
|
|
2510
|
+
if (unitText === "PER_ACTIVITY") unitText = " per activity";
|
|
2511
|
+
if (unitText === "HOUR") unitText = " per hour";
|
|
2512
|
+
if (showUnitText === false) unitText = "";
|
|
2513
|
+
const isValid = (v) => v != null && v >= 0;
|
|
2514
|
+
if (!isValid(min) && !isValid(max) && !isValid(single)) return null;
|
|
2515
|
+
if (isValid(single)) return sign + single.toLocaleString() + unitText;
|
|
2516
|
+
if (min === max) return sign + min?.toLocaleString() + unitText;
|
|
2517
|
+
if (isValid(min) && isValid(max))
|
|
2518
|
+
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString() + unitText;
|
|
2519
|
+
return null;
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
// src/components/company/CompanyBenefits.tsx
|
|
2523
|
+
import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2524
|
+
function CompanyBenefits({ benefits }) {
|
|
2525
|
+
if (!benefits) return null;
|
|
2526
|
+
return /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits", children: [
|
|
2527
|
+
/* @__PURE__ */ jsx34("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
2528
|
+
/* @__PURE__ */ jsx34("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ jsx34("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
2529
|
+
] });
|
|
2530
|
+
}
|
|
2531
|
+
|
|
2532
|
+
// src/components/company/CompanyInformation.tsx
|
|
2533
|
+
import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
2534
|
+
function CompanyInformation({
|
|
2535
|
+
name,
|
|
2536
|
+
how,
|
|
2537
|
+
mission,
|
|
2538
|
+
wow,
|
|
2539
|
+
website
|
|
2540
|
+
}) {
|
|
2541
|
+
return /* @__PURE__ */ jsxs22("div", { className: "flex flex-col gap-2", children: [
|
|
2542
|
+
/* @__PURE__ */ jsxs22(
|
|
2543
|
+
"h2",
|
|
2544
|
+
{
|
|
2545
|
+
"data-testid": "company-name",
|
|
2546
|
+
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2547
|
+
children: [
|
|
2548
|
+
"About ",
|
|
2549
|
+
name
|
|
2550
|
+
]
|
|
2551
|
+
}
|
|
2552
|
+
),
|
|
2553
|
+
how && /* @__PURE__ */ jsx35("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
2554
|
+
mission && /* @__PURE__ */ jsxs22("div", { className: "flex gap-2", children: [
|
|
2555
|
+
/* @__PURE__ */ jsx35("span", { children: "\u{1F680}" }),
|
|
2556
|
+
/* @__PURE__ */ jsxs22("p", { className: "text-base text-grey-80", children: [
|
|
2557
|
+
/* @__PURE__ */ jsx35("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
2558
|
+
mission
|
|
2559
|
+
] })
|
|
2560
|
+
] }),
|
|
2561
|
+
wow && /* @__PURE__ */ jsxs22("div", { className: "flex gap-2", children: [
|
|
2562
|
+
/* @__PURE__ */ jsx35("span", { children: "\u{1F31F}" }),
|
|
2563
|
+
/* @__PURE__ */ jsxs22("p", { className: "text-base text-grey-80", children: [
|
|
2564
|
+
/* @__PURE__ */ jsx35("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
2565
|
+
wow
|
|
2566
|
+
] })
|
|
2567
|
+
] }),
|
|
2568
|
+
website && /* @__PURE__ */ jsx35("div", { className: "pt-2", children: /* @__PURE__ */ jsx35(
|
|
2569
|
+
LinkButton,
|
|
2570
|
+
{
|
|
2571
|
+
"data-testid": "company-website-link",
|
|
2572
|
+
href: website,
|
|
2573
|
+
target: "_blank",
|
|
2574
|
+
rel: "noopener noreferrer",
|
|
2575
|
+
children: "Website"
|
|
2576
|
+
}
|
|
2577
|
+
) })
|
|
2578
|
+
] });
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
// src/components/company/CompanyTake.tsx
|
|
2582
|
+
import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
2583
|
+
function CompanyTake({ content, avatarSrc }) {
|
|
2584
|
+
if (!content) return null;
|
|
2585
|
+
return /* @__PURE__ */ jsxs23(
|
|
2586
|
+
"div",
|
|
2587
|
+
{
|
|
2588
|
+
"data-testid": "company-take",
|
|
2589
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
2590
|
+
children: [
|
|
2591
|
+
/* @__PURE__ */ jsx36("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
2592
|
+
/* @__PURE__ */ jsx36("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ jsx36("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
2593
|
+
/* @__PURE__ */ jsxs23("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
2594
|
+
/* @__PURE__ */ jsx36(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
2595
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
2596
|
+
/* @__PURE__ */ jsx36("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
2597
|
+
/* @__PURE__ */ jsx36("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
2598
|
+
] })
|
|
2599
|
+
] })
|
|
2600
|
+
]
|
|
2601
|
+
}
|
|
2602
|
+
);
|
|
2603
|
+
}
|
|
2604
|
+
|
|
2605
|
+
// src/components/jobPost/JobDescription.tsx
|
|
2606
|
+
import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
2607
|
+
function JobDescription({ description }) {
|
|
2608
|
+
if (!description) return null;
|
|
2609
|
+
return /* @__PURE__ */ jsxs24("div", { className: "flex w-full flex-col gap-2", children: [
|
|
2610
|
+
/* @__PURE__ */ jsx37("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
2611
|
+
/* @__PURE__ */ jsx37(ReadMore, { text: description })
|
|
2612
|
+
] });
|
|
2613
|
+
}
|
|
2614
|
+
|
|
2615
|
+
// src/components/jobPost/JobHeader.tsx
|
|
2616
|
+
import { Dot as Dot2 } from "lucide-react";
|
|
2617
|
+
import Image2 from "next/image";
|
|
2618
|
+
|
|
2619
|
+
// src/components/buttons/BackButton.tsx
|
|
2620
|
+
import { X as X5 } from "lucide-react";
|
|
2621
|
+
import { useRouter } from "next/navigation";
|
|
2622
|
+
|
|
2623
|
+
// src/hooks/useWindowHistory.ts
|
|
2624
|
+
import { useContext as useContext2 } from "react";
|
|
2625
|
+
|
|
2626
|
+
// src/contexts/WindowHistoryProvider.tsx
|
|
2627
|
+
import { useSearchParams } from "next/navigation";
|
|
2628
|
+
import { createContext, useEffect as useEffect8, useMemo, useState as useState8 } from "react";
|
|
2629
|
+
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
2630
|
+
var WindowHistoryContext = createContext({});
|
|
2631
|
+
function WindowHistoryProvider({ children }) {
|
|
2632
|
+
const [history, setHistory] = useState8([]);
|
|
2633
|
+
const searchParams = useSearchParams();
|
|
2634
|
+
useEffect8(() => {
|
|
2635
|
+
setHistory(
|
|
2636
|
+
(prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
|
|
2637
|
+
);
|
|
2638
|
+
}, [searchParams]);
|
|
2639
|
+
const contextValue = useMemo(() => ({ history }), [history]);
|
|
2640
|
+
return /* @__PURE__ */ jsx38(WindowHistoryContext.Provider, { value: contextValue, children });
|
|
2641
|
+
}
|
|
2642
|
+
|
|
2643
|
+
// src/hooks/useWindowHistory.ts
|
|
2644
|
+
function useWindowHistory() {
|
|
2645
|
+
const windowHistoryContext = useContext2(WindowHistoryContext);
|
|
2646
|
+
return windowHistoryContext;
|
|
2647
|
+
}
|
|
2648
|
+
|
|
2649
|
+
// src/components/buttons/BackButton.tsx
|
|
2650
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
|
2651
|
+
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
2652
|
+
const { history } = useWindowHistory();
|
|
2653
|
+
const router = useRouter();
|
|
2654
|
+
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(new URL(r).pathname));
|
|
2655
|
+
const goBack = () => {
|
|
2656
|
+
const previous = history[history.length - 2];
|
|
2657
|
+
if (history.length > 1 && isAcceptedRoute(previous)) {
|
|
2658
|
+
router.back();
|
|
2659
|
+
} else {
|
|
2660
|
+
router.push(fallbackHref ?? "/");
|
|
2661
|
+
}
|
|
2662
|
+
};
|
|
2663
|
+
return /* @__PURE__ */ jsx39(
|
|
2664
|
+
Icon,
|
|
2665
|
+
{
|
|
2666
|
+
"aria-label": "back button",
|
|
2667
|
+
variant: "transparent",
|
|
2668
|
+
size: "small",
|
|
2669
|
+
onClick: goBack,
|
|
2670
|
+
className,
|
|
2671
|
+
...props,
|
|
2672
|
+
children: /* @__PURE__ */ jsx39(X5, {})
|
|
2673
|
+
}
|
|
2674
|
+
);
|
|
2675
|
+
}
|
|
2676
|
+
|
|
2677
|
+
// src/lib/icons.ts
|
|
2678
|
+
import {
|
|
2679
|
+
Banknote,
|
|
2680
|
+
Bell,
|
|
2681
|
+
BriefcaseBusiness,
|
|
2682
|
+
Building,
|
|
2683
|
+
Building2,
|
|
2684
|
+
CircleUser,
|
|
2685
|
+
CircleUserRound,
|
|
2686
|
+
Clock2,
|
|
2687
|
+
Contact,
|
|
2688
|
+
GalleryVerticalEnd,
|
|
2689
|
+
Home,
|
|
2690
|
+
KeyRound,
|
|
2691
|
+
Layers,
|
|
2692
|
+
LifeBuoy,
|
|
2693
|
+
MapPin,
|
|
2694
|
+
MessageSquareDot,
|
|
2695
|
+
Settings,
|
|
2696
|
+
SquareKanban,
|
|
2697
|
+
Users,
|
|
2698
|
+
Wallet
|
|
2699
|
+
} from "lucide-react";
|
|
2700
|
+
var iconMap = {
|
|
2701
|
+
house: Home,
|
|
2702
|
+
layers: Layers,
|
|
2703
|
+
users: Users,
|
|
2704
|
+
settings: Settings,
|
|
2705
|
+
building: Building,
|
|
2706
|
+
bell: Bell,
|
|
2707
|
+
wallet: Wallet,
|
|
2708
|
+
contact: Contact,
|
|
2709
|
+
banknote: Banknote,
|
|
2710
|
+
"message-square-dot": MessageSquareDot,
|
|
2711
|
+
"life-buoy": LifeBuoy,
|
|
2712
|
+
"building-2": Building2,
|
|
2713
|
+
"gallery-vertical-end": GalleryVerticalEnd,
|
|
2714
|
+
"square-kanban": SquareKanban,
|
|
2715
|
+
"briefcase-business": BriefcaseBusiness,
|
|
2716
|
+
"circle-user": CircleUser,
|
|
2717
|
+
"key-round": KeyRound,
|
|
2718
|
+
"clock-2": Clock2,
|
|
2719
|
+
"circle-user-round": CircleUserRound,
|
|
2720
|
+
"map-pin": MapPin
|
|
2493
2721
|
};
|
|
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
|
-
|
|
2722
|
+
|
|
2723
|
+
// src/components/jobPost/JobHeader.tsx
|
|
2724
|
+
import { jsx as jsx40, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
2725
|
+
function JobHeader({
|
|
2726
|
+
title,
|
|
2727
|
+
subtitles,
|
|
2728
|
+
standalone,
|
|
2729
|
+
bannerSrc,
|
|
2730
|
+
avatarSrc,
|
|
2731
|
+
avatarName,
|
|
2732
|
+
avatarHref,
|
|
2733
|
+
backFallbackHref,
|
|
2734
|
+
backAcceptedRoutes,
|
|
2735
|
+
actions,
|
|
2736
|
+
tags
|
|
2737
|
+
}) {
|
|
2738
|
+
const renderIcon = (icon) => {
|
|
2739
|
+
const Icon2 = iconMap[icon];
|
|
2740
|
+
return /* @__PURE__ */ jsx40(Icon2, { size: 18 });
|
|
2741
|
+
};
|
|
2742
|
+
return /* @__PURE__ */ jsxs25(
|
|
2743
|
+
"div",
|
|
2744
|
+
{
|
|
2745
|
+
"data-testid": "job-header-root",
|
|
2746
|
+
className: cn(
|
|
2747
|
+
"-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
|
|
2748
|
+
!standalone && "rounded-3xl"
|
|
2749
|
+
),
|
|
2750
|
+
children: [
|
|
2751
|
+
!standalone && /* @__PURE__ */ jsxs25("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: [
|
|
2752
|
+
/* @__PURE__ */ jsx40(
|
|
2753
|
+
Image2,
|
|
2754
|
+
{
|
|
2755
|
+
className: "h-full w-full rounded-t-3xl object-cover",
|
|
2756
|
+
src: bannerSrc,
|
|
2757
|
+
alt: "job banner",
|
|
2758
|
+
fill: true
|
|
2759
|
+
}
|
|
2760
|
+
),
|
|
2761
|
+
/* @__PURE__ */ jsx40(
|
|
2762
|
+
BackButton,
|
|
2763
|
+
{
|
|
2764
|
+
acceptedRoutes: backAcceptedRoutes,
|
|
2765
|
+
fallbackHref: backFallbackHref,
|
|
2766
|
+
className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
|
|
2767
|
+
"data-testid": "job-header-back-button"
|
|
2768
|
+
}
|
|
2769
|
+
),
|
|
2770
|
+
/* @__PURE__ */ jsx40(
|
|
2771
|
+
"div",
|
|
2772
|
+
{
|
|
2773
|
+
className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
|
|
2774
|
+
"data-testid": "job-header-avatar",
|
|
2775
|
+
children: /* @__PURE__ */ jsx40(
|
|
2776
|
+
Avatar,
|
|
2777
|
+
{
|
|
2778
|
+
size: "large",
|
|
2779
|
+
target: "_blank",
|
|
2780
|
+
href: avatarHref,
|
|
2781
|
+
name: avatarName,
|
|
2782
|
+
src: avatarSrc,
|
|
2783
|
+
rel: "noopener noreferrer"
|
|
2784
|
+
}
|
|
2785
|
+
)
|
|
2786
|
+
}
|
|
2787
|
+
)
|
|
2788
|
+
] }),
|
|
2789
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
|
|
2790
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex flex-col md:flex-row", children: [
|
|
2791
|
+
standalone && /* @__PURE__ */ jsx40("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ jsx40(
|
|
2792
|
+
Avatar,
|
|
2793
|
+
{
|
|
2794
|
+
size: "large",
|
|
2795
|
+
target: "_blank",
|
|
2796
|
+
href: avatarHref,
|
|
2797
|
+
name: avatarName,
|
|
2798
|
+
src: avatarSrc,
|
|
2799
|
+
rel: "noopener noreferrer"
|
|
2800
|
+
}
|
|
2801
|
+
) }),
|
|
2802
|
+
/* @__PURE__ */ jsx40("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ jsxs25(
|
|
2803
|
+
"div",
|
|
2804
|
+
{
|
|
2805
|
+
"data-testid": `job-header-subtitle-${i}`,
|
|
2806
|
+
className: "flex items-center",
|
|
2807
|
+
children: [
|
|
2808
|
+
subtitle,
|
|
2809
|
+
i < subtitles.length - 1 && /* @__PURE__ */ jsx40(Dot2, { className: "mx-1 shrink-0", size: 10 })
|
|
2810
|
+
]
|
|
2811
|
+
},
|
|
2812
|
+
subtitle
|
|
2813
|
+
)) })
|
|
2814
|
+
] }),
|
|
2815
|
+
/* @__PURE__ */ jsxs25(
|
|
2816
|
+
"div",
|
|
2817
|
+
{
|
|
2818
|
+
"data-testid": "job-header-content",
|
|
2819
|
+
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
2820
|
+
children: [
|
|
2821
|
+
/* @__PURE__ */ jsx40(
|
|
2822
|
+
"h2",
|
|
2823
|
+
{
|
|
2824
|
+
"data-testid": "job-header-title",
|
|
2825
|
+
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
2826
|
+
children: title
|
|
2827
|
+
}
|
|
2828
|
+
),
|
|
2829
|
+
!!actions && /* @__PURE__ */ jsx40(
|
|
2830
|
+
"div",
|
|
2831
|
+
{
|
|
2832
|
+
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
2833
|
+
"data-testid": "job-header-actions",
|
|
2834
|
+
children: actions
|
|
2835
|
+
}
|
|
2836
|
+
)
|
|
2837
|
+
]
|
|
2838
|
+
}
|
|
2839
|
+
),
|
|
2840
|
+
/* @__PURE__ */ jsx40(
|
|
2841
|
+
"div",
|
|
2842
|
+
{
|
|
2843
|
+
"data-testid": "job-header-tags",
|
|
2844
|
+
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
2845
|
+
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ jsxs25(
|
|
2846
|
+
Chip_default,
|
|
2847
|
+
{
|
|
2848
|
+
size: "small",
|
|
2849
|
+
variant: "neutral",
|
|
2850
|
+
"aria-label": name,
|
|
2851
|
+
"data-testid": `job-header-tag-${name}`,
|
|
2852
|
+
children: [
|
|
2853
|
+
renderIcon(icon),
|
|
2854
|
+
/* @__PURE__ */ jsx40("span", { children: label })
|
|
2855
|
+
]
|
|
2856
|
+
},
|
|
2857
|
+
name
|
|
2858
|
+
))
|
|
2859
|
+
}
|
|
2860
|
+
)
|
|
2861
|
+
] })
|
|
2862
|
+
]
|
|
2863
|
+
}
|
|
2864
|
+
);
|
|
2865
|
+
}
|
|
2866
|
+
|
|
2867
|
+
// src/components/jobPost/JobPost.tsx
|
|
2868
|
+
import * as DateFns from "date-fns";
|
|
2869
|
+
|
|
2870
|
+
// src/hooks/useDisplayText.ts
|
|
2871
|
+
import { useEffect as useEffect9, useMemo as useMemo2, useState as useState9 } from "react";
|
|
2872
|
+
|
|
2873
|
+
// src/lib/mappings.ts
|
|
2874
|
+
var employmentTypeDisplayText = {
|
|
2875
|
+
FULL_TIME: {
|
|
2876
|
+
en: "Full Time"
|
|
2527
2877
|
},
|
|
2528
|
-
|
|
2529
|
-
en: "
|
|
2878
|
+
INTERNSHIP: {
|
|
2879
|
+
en: "Internship"
|
|
2530
2880
|
},
|
|
2531
|
-
|
|
2532
|
-
en: "
|
|
2881
|
+
OTHER: {
|
|
2882
|
+
en: "Other"
|
|
2533
2883
|
},
|
|
2534
|
-
|
|
2535
|
-
en: "
|
|
2884
|
+
PART_TIME: {
|
|
2885
|
+
en: "Part Time"
|
|
2536
2886
|
},
|
|
2537
|
-
|
|
2538
|
-
en: "
|
|
2887
|
+
PER_DIEM: {
|
|
2888
|
+
en: "Per-Diem"
|
|
2539
2889
|
},
|
|
2540
|
-
|
|
2541
|
-
en: "
|
|
2890
|
+
TEMPORARY: {
|
|
2891
|
+
en: "Temporary"
|
|
2892
|
+
},
|
|
2893
|
+
CONTRACT: {
|
|
2894
|
+
en: "Contract"
|
|
2542
2895
|
}
|
|
2543
2896
|
};
|
|
2544
|
-
var
|
|
2545
|
-
|
|
2546
|
-
en: "
|
|
2897
|
+
var unitTextDisplayText = {
|
|
2898
|
+
DAY: {
|
|
2899
|
+
en: "Day"
|
|
2547
2900
|
},
|
|
2548
|
-
|
|
2549
|
-
en: "
|
|
2901
|
+
HOUR: {
|
|
2902
|
+
en: "Hour"
|
|
2550
2903
|
},
|
|
2551
|
-
|
|
2552
|
-
en: "
|
|
2904
|
+
MONTH: {
|
|
2905
|
+
en: "Month"
|
|
2553
2906
|
},
|
|
2554
|
-
|
|
2555
|
-
en: "
|
|
2907
|
+
PER_ACTIVITY: {
|
|
2908
|
+
en: "Per Activity"
|
|
2556
2909
|
},
|
|
2557
|
-
|
|
2558
|
-
en: "
|
|
2910
|
+
WEEK: {
|
|
2911
|
+
en: "Week"
|
|
2559
2912
|
},
|
|
2560
|
-
|
|
2561
|
-
en: "
|
|
2913
|
+
YEAR: {
|
|
2914
|
+
en: "Year"
|
|
2915
|
+
}
|
|
2916
|
+
};
|
|
2917
|
+
var currencyDisplayText = {
|
|
2918
|
+
EUR: {
|
|
2919
|
+
en: "\u20AC"
|
|
2562
2920
|
},
|
|
2563
|
-
|
|
2564
|
-
en: "
|
|
2921
|
+
GBP: {
|
|
2922
|
+
en: "\xA3"
|
|
2565
2923
|
},
|
|
2566
|
-
|
|
2567
|
-
en: "
|
|
2924
|
+
USD: {
|
|
2925
|
+
en: "$"
|
|
2926
|
+
}
|
|
2927
|
+
};
|
|
2928
|
+
var employmentLevelDisplayText = {
|
|
2929
|
+
DIRECTOR: {
|
|
2930
|
+
en: "Director"
|
|
2568
2931
|
},
|
|
2569
|
-
|
|
2570
|
-
en: "
|
|
2932
|
+
ENTRY_LEVEL: {
|
|
2933
|
+
en: "Entry Level"
|
|
2571
2934
|
},
|
|
2572
|
-
|
|
2573
|
-
en: "
|
|
2935
|
+
EXECUTIVE: {
|
|
2936
|
+
en: "Executive"
|
|
2574
2937
|
},
|
|
2575
|
-
|
|
2576
|
-
en: "
|
|
2938
|
+
EXPERIENCED: {
|
|
2939
|
+
en: "Experienced"
|
|
2577
2940
|
},
|
|
2578
|
-
|
|
2579
|
-
en: "
|
|
2941
|
+
INTERN: {
|
|
2942
|
+
en: "Intern"
|
|
2580
2943
|
},
|
|
2581
|
-
|
|
2582
|
-
en: "
|
|
2944
|
+
MANAGER: {
|
|
2945
|
+
en: "Manager"
|
|
2946
|
+
}
|
|
2947
|
+
};
|
|
2948
|
+
var jobFunctionDisplayText = {
|
|
2949
|
+
CLINICAL_RESEARCH: {
|
|
2950
|
+
en: "Clinical Research"
|
|
2583
2951
|
},
|
|
2584
|
-
|
|
2585
|
-
en: "
|
|
2952
|
+
CUSTOMER_SUCCESS: {
|
|
2953
|
+
en: "Customer Success"
|
|
2586
2954
|
},
|
|
2587
|
-
|
|
2588
|
-
en: "
|
|
2955
|
+
DATA_ANALYTICS: {
|
|
2956
|
+
en: "Data Analytics"
|
|
2589
2957
|
},
|
|
2590
|
-
|
|
2591
|
-
en: "
|
|
2958
|
+
FINANCE_AND_AUDIT: {
|
|
2959
|
+
en: "Finance and Audit"
|
|
2592
2960
|
},
|
|
2593
|
-
|
|
2594
|
-
en: "
|
|
2961
|
+
MARKETING: {
|
|
2962
|
+
en: "Marketing"
|
|
2595
2963
|
},
|
|
2596
|
-
|
|
2597
|
-
en: "
|
|
2964
|
+
OPERATIONS: {
|
|
2965
|
+
en: "Operations"
|
|
2598
2966
|
},
|
|
2599
|
-
|
|
2967
|
+
PEOPLE_HUMAN_RESOURCES: {
|
|
2968
|
+
en: "People Human Resources"
|
|
2969
|
+
},
|
|
2970
|
+
PRODUCT_AND_TECH: {
|
|
2971
|
+
en: "Product and Tech"
|
|
2972
|
+
},
|
|
2973
|
+
QUALITY_ASSURANCE_AND_OUTCOMES: {
|
|
2974
|
+
en: "Quality Assurance and Outcomes"
|
|
2975
|
+
},
|
|
2976
|
+
SALES_AND_BUSINESS_DEVELOPMENT: {
|
|
2977
|
+
en: "Sales and Business Development"
|
|
2978
|
+
},
|
|
2979
|
+
STRATEGY_AND_CONSULTING: {
|
|
2980
|
+
en: "Strategy and Consulting"
|
|
2981
|
+
}
|
|
2982
|
+
};
|
|
2983
|
+
var bestFitDisplayText = {
|
|
2984
|
+
DENTIST: {
|
|
2985
|
+
en: "Dentist"
|
|
2986
|
+
},
|
|
2987
|
+
DIETICIAN: {
|
|
2988
|
+
en: "Dietician"
|
|
2989
|
+
},
|
|
2990
|
+
DOULA: {
|
|
2991
|
+
en: "Doula"
|
|
2992
|
+
},
|
|
2993
|
+
MEDICAL_ASSISTANT: {
|
|
2994
|
+
en: "Medical Assistant"
|
|
2995
|
+
},
|
|
2996
|
+
MIDWIFE: {
|
|
2997
|
+
en: "Midwife"
|
|
2998
|
+
},
|
|
2999
|
+
NURSE: {
|
|
3000
|
+
en: "Nurse"
|
|
3001
|
+
},
|
|
3002
|
+
OCCUPATIONAL_THERAPIST: {
|
|
3003
|
+
en: "Occupational Therapist"
|
|
3004
|
+
},
|
|
3005
|
+
PHARMACIST: {
|
|
3006
|
+
en: "Pharmacist"
|
|
3007
|
+
},
|
|
3008
|
+
PHYSICAL_THERAPIST: {
|
|
3009
|
+
en: "Physical Therapist"
|
|
3010
|
+
},
|
|
3011
|
+
PHYSICIAN: {
|
|
3012
|
+
en: "Physician"
|
|
3013
|
+
},
|
|
3014
|
+
PHYSICIAN_ASSISTANT: {
|
|
3015
|
+
en: "Physician Assistant"
|
|
3016
|
+
},
|
|
3017
|
+
PSYCHOLOGIST: {
|
|
3018
|
+
en: "Psychologist"
|
|
3019
|
+
},
|
|
3020
|
+
RADIOLOGIST: {
|
|
3021
|
+
en: "Radiologist"
|
|
3022
|
+
},
|
|
3023
|
+
SOCIAL_WORKER: {
|
|
3024
|
+
en: "Social Worker"
|
|
3025
|
+
},
|
|
3026
|
+
SPEECH_LANGUAGE_PATHOLOGIST: {
|
|
3027
|
+
en: "Speech Language Pathologist"
|
|
3028
|
+
},
|
|
3029
|
+
SURGEON: {
|
|
3030
|
+
en: "Surgeon"
|
|
3031
|
+
}
|
|
3032
|
+
};
|
|
3033
|
+
var clinicalSpecialtyDisplayText = {
|
|
3034
|
+
ANESTHESIOLOGY: {
|
|
3035
|
+
en: "Anesthesiology"
|
|
3036
|
+
},
|
|
3037
|
+
CARDIOLOGY: {
|
|
3038
|
+
en: "Cardiology"
|
|
3039
|
+
},
|
|
3040
|
+
CARDIOVASCULAR_AND_PULMONARY: {
|
|
3041
|
+
en: "Cardiovascular and Pulmonary"
|
|
3042
|
+
},
|
|
3043
|
+
CASE_MANAGEMENT: {
|
|
3044
|
+
en: "Case Management"
|
|
3045
|
+
},
|
|
3046
|
+
CHRONIC_PAIN: {
|
|
3047
|
+
en: "Chronic Pain"
|
|
3048
|
+
},
|
|
3049
|
+
CLINICAL_ELECTROPHYSIOLOGY: {
|
|
3050
|
+
en: "Clinical Electrophysiology"
|
|
3051
|
+
},
|
|
3052
|
+
CRITICAL_AND_ACUTE_CARE: {
|
|
3053
|
+
en: "Critical and Acute Care"
|
|
3054
|
+
},
|
|
3055
|
+
DERMATOLOGY: {
|
|
3056
|
+
en: "Dermatology"
|
|
3057
|
+
},
|
|
3058
|
+
DIALYSIS: {
|
|
3059
|
+
en: "Dialysis"
|
|
3060
|
+
},
|
|
3061
|
+
EMERGENCY_MEDICINE: {
|
|
3062
|
+
en: "Emergency Medicine"
|
|
3063
|
+
},
|
|
3064
|
+
ENDOCRINOLOGY: {
|
|
3065
|
+
en: "Endocrinology"
|
|
3066
|
+
},
|
|
3067
|
+
ERGONOMICS: {
|
|
3068
|
+
en: "Ergonomics"
|
|
3069
|
+
},
|
|
3070
|
+
FEEDING_EATING_AND_SWALLOWING: {
|
|
3071
|
+
en: "Feeding, Eating, and Swallowing"
|
|
3072
|
+
},
|
|
3073
|
+
GASTROENTEROLOGY: {
|
|
3074
|
+
en: "Gastroenterology"
|
|
3075
|
+
},
|
|
3076
|
+
GERIATRICS: {
|
|
3077
|
+
en: "Geriatrics"
|
|
3078
|
+
},
|
|
3079
|
+
HAND_THERAPY: {
|
|
3080
|
+
en: "Hand Therapy"
|
|
3081
|
+
},
|
|
3082
|
+
HEMATOLOGY: {
|
|
3083
|
+
en: "Hematology"
|
|
3084
|
+
},
|
|
3085
|
+
HOLISTIC_MEDICINE: {
|
|
3086
|
+
en: "Holistic Medicine"
|
|
3087
|
+
},
|
|
3088
|
+
INFORMATICS: {
|
|
2600
3089
|
en: "Informatics"
|
|
2601
3090
|
},
|
|
2602
3091
|
INTERNAL_MEDICINE: {
|
|
@@ -2771,531 +3260,127 @@ var defaultMappings = {
|
|
|
2771
3260
|
unitText: unitTextDisplayText,
|
|
2772
3261
|
currency: currencyDisplayText,
|
|
2773
3262
|
employmentLevel: employmentLevelDisplayText,
|
|
2774
|
-
jobFunction: jobFunctionDisplayText,
|
|
2775
|
-
bestFit: bestFitDisplayText,
|
|
2776
|
-
clinicalSpecialty: clinicalSpecialtyDisplayText,
|
|
2777
|
-
clinicalSetting: clinicalSettingDisplayText,
|
|
2778
|
-
shift: shiftDisplayText
|
|
2779
|
-
};
|
|
2780
|
-
|
|
2781
|
-
// src/types/displayText.errors.tsx
|
|
2782
|
-
var DisplayTextScopeNotFoundError = class extends Error {
|
|
2783
|
-
constructor(scope) {
|
|
2784
|
-
super(`No display text mapping found for scope: ${scope}`);
|
|
2785
|
-
this.name = "DisplayTextScopeNotFoundError";
|
|
2786
|
-
}
|
|
2787
|
-
};
|
|
2788
|
-
var DisplayTextValueNotFoundError = class extends Error {
|
|
2789
|
-
constructor(value, scope) {
|
|
2790
|
-
super(`No display text found for value: '${value}' in scope: '${scope}'`);
|
|
2791
|
-
this.name = "DisplayTextValueNotFoundError";
|
|
2792
|
-
}
|
|
2793
|
-
};
|
|
2794
|
-
|
|
2795
|
-
// src/services/displayText.tsx
|
|
2796
|
-
var DisplayTextService = class {
|
|
2797
|
-
constructor(customMappings) {
|
|
2798
|
-
this.defaultLanguage = "en";
|
|
2799
|
-
this.mappings = {
|
|
2800
|
-
...defaultMappings,
|
|
2801
|
-
// Use all pre-defined mappings as defaults
|
|
2802
|
-
...customMappings
|
|
2803
|
-
// Override with any custom mappings if provided
|
|
2804
|
-
};
|
|
2805
|
-
}
|
|
2806
|
-
async getDisplayText(scope, value, language = this.defaultLanguage) {
|
|
2807
|
-
const scopeMapping = this.mappings[scope];
|
|
2808
|
-
if (!scopeMapping) {
|
|
2809
|
-
throw new DisplayTextScopeNotFoundError(scope);
|
|
2810
|
-
}
|
|
2811
|
-
if (Array.isArray(value)) {
|
|
2812
|
-
const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
|
|
2813
|
-
const displayTexts2 = await Promise.all(displayTextPromises);
|
|
2814
|
-
return displayTexts2.filter((v) => !!v).join(", ");
|
|
2815
|
-
}
|
|
2816
|
-
const displayTexts = scopeMapping[value];
|
|
2817
|
-
if (!displayTexts) {
|
|
2818
|
-
throw new DisplayTextValueNotFoundError(value, scope);
|
|
2819
|
-
}
|
|
2820
|
-
return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
|
|
2821
|
-
}
|
|
2822
|
-
};
|
|
2823
|
-
|
|
2824
|
-
// src/hooks/useDisplayText.ts
|
|
2825
|
-
var useDisplayText = (scope, value) => {
|
|
2826
|
-
const [displayText, setDisplayText] = useState8("");
|
|
2827
|
-
const displayService = useMemo2(() => new DisplayTextService(), []);
|
|
2828
|
-
useEffect8(() => {
|
|
2829
|
-
if (!displayService || !value) {
|
|
2830
|
-
setDisplayText("");
|
|
2831
|
-
return;
|
|
2832
|
-
}
|
|
2833
|
-
void (async () => {
|
|
2834
|
-
try {
|
|
2835
|
-
const result = await displayService.getDisplayText(scope, value);
|
|
2836
|
-
if (typeof result === "string") {
|
|
2837
|
-
setDisplayText(result);
|
|
2838
|
-
} else {
|
|
2839
|
-
console.error("Expected a string result, but got:", result);
|
|
2840
|
-
}
|
|
2841
|
-
} catch (error) {
|
|
2842
|
-
if (error instanceof DisplayTextValueNotFoundError) {
|
|
2843
|
-
console.warn("Display text value not found:", value);
|
|
2844
|
-
setDisplayText(String(value));
|
|
2845
|
-
} else {
|
|
2846
|
-
console.error("Unexpected error formatting text:", error);
|
|
2847
|
-
setDisplayText(String(value));
|
|
2848
|
-
}
|
|
2849
|
-
}
|
|
2850
|
-
})();
|
|
2851
|
-
}, [scope, value, displayService]);
|
|
2852
|
-
return displayText;
|
|
2853
|
-
};
|
|
2854
|
-
|
|
2855
|
-
// src/lib/locations.ts
|
|
2856
|
-
function formattedAddress(address) {
|
|
2857
|
-
const { addressLocality, addressRegion, addressCountry } = address;
|
|
2858
|
-
if (addressLocality && addressRegion) return `${addressLocality}, ${addressRegion}`;
|
|
2859
|
-
if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry}`;
|
|
2860
|
-
if (addressRegion) return addressRegion;
|
|
2861
|
-
if (addressCountry) return addressCountry;
|
|
2862
|
-
return null;
|
|
2863
|
-
}
|
|
2864
|
-
function formattedJobLocation(job) {
|
|
2865
|
-
const address = job.jobLocation && formattedAddress(job.jobLocation);
|
|
2866
|
-
const remote = job.isRemote ? "Remote" : "";
|
|
2867
|
-
return [address, remote].filter(Boolean).join(" | ");
|
|
2868
|
-
}
|
|
2869
|
-
|
|
2870
|
-
// src/types/latest/company_service_latest.ts
|
|
2871
|
-
import { z as z2 } from "zod";
|
|
2872
|
-
|
|
2873
|
-
// src/types/latest/shared_pickle_output_latest.ts
|
|
2874
|
-
var shared_pickle_output_latest_exports = {};
|
|
2875
|
-
__export(shared_pickle_output_latest_exports, {
|
|
2876
|
-
CurrencyEnum: () => CurrencyEnum,
|
|
2877
|
-
DetailLevelEnum: () => DetailLevelEnum,
|
|
2878
|
-
TypeEnum: () => TypeEnum,
|
|
2879
|
-
UnitTextEnum: () => UnitTextEnum,
|
|
2880
|
-
imageAssetSchema: () => imageAssetSchema,
|
|
2881
|
-
imageSchema: () => imageSchema,
|
|
2882
|
-
monetaryAmountSchema: () => monetaryAmountSchema,
|
|
2883
|
-
placeSchema: () => placeSchema,
|
|
2884
|
-
postalAddressSchema: () => postalAddressSchema,
|
|
2885
|
-
quantitativeValueSchema: () => quantitativeValueSchema
|
|
2886
|
-
});
|
|
2887
|
-
import { z } from "zod";
|
|
2888
|
-
var TypeEnum = z.enum(["IMAGE"]);
|
|
2889
|
-
var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
2890
|
-
var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
2891
|
-
var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
|
|
2892
|
-
var postalAddressSchema = z.object({
|
|
2893
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2894
|
-
type: z.string().describe("Document type used for schema"),
|
|
2895
|
-
addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
2896
|
-
addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
2897
|
-
addressLocality: z.optional(z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
2898
|
-
streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
|
|
2899
|
-
streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
|
|
2900
|
-
postalCode: z.optional(z.string()).describe("The postal code"),
|
|
2901
|
-
description: z.optional(z.string()).describe("A descriptive string containing the full address.")
|
|
2902
|
-
});
|
|
2903
|
-
var placeSchema = z.object({
|
|
2904
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2905
|
-
detailLevel: z.optional(DetailLevelEnum),
|
|
2906
|
-
latitude: z.optional(z.number()).describe("The latitude of a location."),
|
|
2907
|
-
longitude: z.optional(z.number()).describe("The longitude of a location."),
|
|
2908
|
-
address: z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
2909
|
-
});
|
|
2910
|
-
var quantitativeValueSchema = z.object({
|
|
2911
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2912
|
-
type: z.string().describe("Document type used for schema"),
|
|
2913
|
-
value: z.optional(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."),
|
|
2914
|
-
minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
2915
|
-
maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
2916
|
-
unitText: UnitTextEnum
|
|
2917
|
-
});
|
|
2918
|
-
var monetaryAmountSchema = z.object({
|
|
2919
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2920
|
-
type: z.string().describe("Document type used for schema"),
|
|
2921
|
-
singleValue: z.optional(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."),
|
|
2922
|
-
minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
2923
|
-
maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
2924
|
-
value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
2925
|
-
currency: z.optional(CurrencyEnum)
|
|
2926
|
-
});
|
|
2927
|
-
var imageAssetSchema = z.object({
|
|
2928
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2929
|
-
altText: z.optional(z.string()).describe("The alt text for the image"),
|
|
2930
|
-
assetId: z.optional(z.string()).describe("The asset ID for the image"),
|
|
2931
|
-
description: z.optional(z.string()).describe("The description for the image"),
|
|
2932
|
-
extension: z.optional(z.string()).describe("The extension for the image"),
|
|
2933
|
-
label: z.optional(z.string()).describe("The label for the image"),
|
|
2934
|
-
mimeType: z.optional(z.string()).describe("The mime type for the image"),
|
|
2935
|
-
originalFilename: z.optional(z.string()).describe("The original filename for the image"),
|
|
2936
|
-
path: z.optional(z.string()).describe("The path for the image"),
|
|
2937
|
-
sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
|
|
2938
|
-
size: z.optional(z.number()).describe("The size for the image"),
|
|
2939
|
-
title: z.optional(z.string()).describe("The title for the image"),
|
|
2940
|
-
uploadId: z.optional(z.string()).describe("The upload ID for the image"),
|
|
2941
|
-
url: z.optional(z.string()).describe("The URL for the image")
|
|
2942
|
-
});
|
|
2943
|
-
var imageSchema = z.object({
|
|
2944
|
-
version: z.literal("1.0.0").default("1.0.0"),
|
|
2945
|
-
type: z.string().describe("Document type used for schema"),
|
|
2946
|
-
asset: z.optional(imageAssetSchema).describe("The asset for the image")
|
|
2947
|
-
});
|
|
2948
|
-
|
|
2949
|
-
// src/types/latest/company_service_latest.ts
|
|
2950
|
-
var TypeEnum2 = z2.enum(["OFFICE"]);
|
|
2951
|
-
var CategoryEnum = z2.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
|
|
2952
|
-
var TitleEnum = z2.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
|
|
2953
|
-
var PublishStatusEnum = z2.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
2954
|
-
var OfficeTypeEnum = z2.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
|
|
2955
|
-
var socialMediaSchema = z2.object({
|
|
2956
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2957
|
-
url: z2.string().describe("The link to the social media platform"),
|
|
2958
|
-
type: z2.string().describe("The type of social media link")
|
|
2959
|
-
});
|
|
2960
|
-
var companyBenefitsSchema = z2.object({
|
|
2961
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2962
|
-
type: z2.string().describe("Document type used for schema"),
|
|
2963
|
-
title: z2.string(),
|
|
2964
|
-
description: z2.optional(z2.string()),
|
|
2965
|
-
category: CategoryEnum
|
|
2966
|
-
});
|
|
2967
|
-
var industrySchema = z2.lazy(() => z2.object({
|
|
2968
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2969
|
-
type: z2.string().describe("Document type used for schema"),
|
|
2970
|
-
name: z2.string(),
|
|
2971
|
-
description: z2.optional(z2.string()).describe("A brief description of the industry"),
|
|
2972
|
-
onetIndustryId: z2.optional(z2.string()).describe("ONET industry ID"),
|
|
2973
|
-
parent: z2.optional(industrySchema)
|
|
2974
|
-
}));
|
|
2975
|
-
var jobBoardSchema = z2.object({
|
|
2976
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2977
|
-
type: z2.string().describe("Document type used for schema"),
|
|
2978
|
-
name: z2.string().describe("The name of the job board"),
|
|
2979
|
-
description: z2.string().describe("A brief description of the job board"),
|
|
2980
|
-
logo: z2.optional(imageSchema).describe("The logo of the job board"),
|
|
2981
|
-
baseUrl: z2.optional(z2.string()).describe("The base URL of the job board")
|
|
2982
|
-
});
|
|
2983
|
-
var personSchema = z2.object({
|
|
2984
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
2985
|
-
type: z2.string().describe("Document type used for schema"),
|
|
2986
|
-
firstName: z2.string().describe("The first name of the person"),
|
|
2987
|
-
lastName: z2.string().describe("The last name of the person"),
|
|
2988
|
-
title: z2.optional(z2.array(z2.string())).describe("The titles of the degree of the person"),
|
|
2989
|
-
slug: z2.string().describe("person slug - should be familyname-givenname-title(s)"),
|
|
2990
|
-
jobTitle: z2.optional(z2.string()).describe("The job title of the person"),
|
|
2991
|
-
isDoctor: z2.optional(z2.boolean()).describe("Is the person a doctor"),
|
|
2992
|
-
isMedical: z2.optional(z2.boolean()).describe("Are they of a medical background?"),
|
|
2993
|
-
isScientist: z2.optional(z2.boolean()).describe("Are they a scientist?"),
|
|
2994
|
-
image: z2.optional(imageSchema).describe("The image of the person"),
|
|
2995
|
-
email: z2.optional(z2.string()).describe("The email of the person"),
|
|
2996
|
-
socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the person"),
|
|
2997
|
-
telephone: z2.optional(z2.string()).describe("The telephone number of the person"),
|
|
2998
|
-
url: z2.optional(z2.string()).describe("The URL of the person"),
|
|
2999
|
-
address: z2.optional(placeSchema).describe("The address of the person")
|
|
3000
|
-
});
|
|
3001
|
-
var companyCareersSchema = z2.object({
|
|
3002
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3003
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3004
|
-
careersUrl: z2.string().describe("The URL of the company careers page"),
|
|
3005
|
-
jobBoard: z2.optional(jobBoardSchema),
|
|
3006
|
-
jobBoardSlug: z2.optional(z2.array(z2.string())),
|
|
3007
|
-
companyBenefits: z2.optional(z2.array(companyBenefitsSchema)).describe("What are the specific benefits of that company. The benefit is generic.")
|
|
3008
|
-
});
|
|
3009
|
-
var companyPhilosophySchema = z2.object({
|
|
3010
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3011
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3012
|
-
companyMission: z2.optional(z2.string()).describe("The mission statement of the company."),
|
|
3013
|
-
companyHow: z2.optional(z2.string()).describe("How does the company achieve its mission"),
|
|
3014
|
-
companyCulture: z2.optional(z2.array(z2.string())).describe("What are some of the culture aspects of this company?")
|
|
3015
|
-
});
|
|
3016
|
-
var companyNdgSchema = z2.object({
|
|
3017
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3018
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3019
|
-
companyWow: z2.optional(z2.string()).describe("What is the wow of this company?"),
|
|
3020
|
-
companyNdgTake: z2.optional(z2.string()).describe("What is the NDG POV on this company?"),
|
|
3021
|
-
companyBestFit: z2.optional(z2.array(z2.string())),
|
|
3022
|
-
companyInterests: z2.optional(z2.array(z2.string()))
|
|
3023
|
-
});
|
|
3024
|
-
var foundingInformationSchema = z2.object({
|
|
3025
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3026
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3027
|
-
foundedDate: z2.optional(z2.string()),
|
|
3028
|
-
foundedCountry: z2.optional(z2.string()),
|
|
3029
|
-
foundedCity: z2.optional(z2.string()),
|
|
3030
|
-
founders: z2.optional(z2.array(personSchema))
|
|
3031
|
-
});
|
|
3032
|
-
var ngdMetadataSchema = z2.object({
|
|
3033
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3034
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3035
|
-
lastScraped: z2.optional(z2.string()).describe("Date the last entity was scraped, if applicable"),
|
|
3036
|
-
scraperVersion: z2.optional(z2.string()),
|
|
3037
|
-
postProcessorVersion: z2.optional(z2.string()),
|
|
3038
|
-
uniqueRunId: z2.optional(z2.string()),
|
|
3039
|
-
postProcessorUniqueRunId: z2.optional(z2.string()),
|
|
3040
|
-
isScrapeManaged: z2.optional(z2.boolean()).default(true)
|
|
3041
|
-
});
|
|
3042
|
-
var companySchema = z2.object({
|
|
3043
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3044
|
-
id: z2.string().describe("The NDG specific id for a company. Cannot be changed."),
|
|
3045
|
-
createdAt: z2.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3046
|
-
updatedAt: z2.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3047
|
-
companyName: z2.string().describe("The name of the company"),
|
|
3048
|
-
slug: z2.string().describe("The NDG specific slug for a company."),
|
|
3049
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3050
|
-
logo: z2.optional(imageSchema).describe("The logo of the company"),
|
|
3051
|
-
companyWebsite: z2.optional(z2.string()).describe("The website of the company"),
|
|
3052
|
-
socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the company"),
|
|
3053
|
-
brandColor: z2.optional(z2.string()).describe("The brand color of the company"),
|
|
3054
|
-
companyCareers: z2.optional(companyCareersSchema).describe("Career Specific Information for the company."),
|
|
3055
|
-
companyPhilosophy: z2.optional(companyPhilosophySchema).describe("Company mission,values and how the company achieves its mission."),
|
|
3056
|
-
companyNdg: z2.optional(companyNdgSchema).describe("Next Degree specific information for the company."),
|
|
3057
|
-
foundingInfo: z2.optional(foundingInformationSchema),
|
|
3058
|
-
headquartersLocation: z2.optional(placeSchema),
|
|
3059
|
-
employeeEstimate: z2.optional(z2.string()),
|
|
3060
|
-
publishStatus: z2.optional(z2.string()),
|
|
3061
|
-
ngdMetadata: z2.optional(ngdMetadataSchema)
|
|
3062
|
-
});
|
|
3063
|
-
var officeSchema = z2.object({
|
|
3064
|
-
version: z2.literal("1.0.0").default("1.0.0"),
|
|
3065
|
-
type: z2.string().describe("Document type used for schema"),
|
|
3066
|
-
name: z2.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
|
|
3067
|
-
officeType: OfficeTypeEnum,
|
|
3068
|
-
companyId: z2.optional(companySchema),
|
|
3069
|
-
geoLocation: z2.optional(placeSchema).describe("Geographical location details: coordinates + postal address"),
|
|
3070
|
-
createdAt: z2.optional(z2.string()),
|
|
3071
|
-
updatedAt: z2.optional(z2.string())
|
|
3072
|
-
});
|
|
3073
|
-
|
|
3074
|
-
// src/types/latest/job_posting_service_latest.ts
|
|
3075
|
-
import { z as z3 } from "zod";
|
|
3076
|
-
var TypeEnum3 = z3.enum(["JOB_POST"]);
|
|
3077
|
-
var JobLocationTypeEnum = z3.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
|
|
3078
|
-
var EmploymentTypeEnum = z3.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
|
|
3079
|
-
var EmploymentLevelEnum = z3.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
|
|
3080
|
-
var JobFunctionEnum = z3.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"]);
|
|
3081
|
-
var PublishStatusEnum2 = z3.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
|
|
3082
|
-
var BestFitEnum = z3.enum(["DENTIST", "DIETICIAN", "DOULA", "MEDICAL_ASSISTANT", "MIDWIFE", "NURSE", "OCCUPATIONAL_THERAPIST", "PHARMACIST", "PHYSICAL_THERAPIST", "PHYSICIAN", "PHYSICIAN_ASSISTANT", "PSYCHOLOGIST", "RADIOLOGIST", "SOCIAL_WORKER", "SPEECH_LANGUAGE_PATHOLOGIST", "SURGEON"]);
|
|
3083
|
-
var ClinicalLicenseEnum = z3.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
|
|
3084
|
-
var ShiftEnum = z3.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
|
|
3085
|
-
var ClinicalSettingEnum = z3.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"]);
|
|
3086
|
-
var ClinicalSpecialtyEnum = z3.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"]);
|
|
3087
|
-
var jobPostSchema = z3.object({
|
|
3088
|
-
version: z3.literal("1.0.0").default("1.0.0"),
|
|
3089
|
-
id: z3.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."),
|
|
3090
|
-
type: z3.string().describe("Document type used for schema"),
|
|
3091
|
-
createdAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3092
|
-
updatedAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3093
|
-
dateAdded: z3.optional(z3.string().datetime()).describe("The date the job was added to the platform"),
|
|
3094
|
-
datePosted: z3.optional(z3.string().datetime()).describe("The date the job was published for public viewing"),
|
|
3095
|
-
dateRemoved: z3.optional(z3.string().datetime()).describe("The date the job was removed from public viewing"),
|
|
3096
|
-
validThrough: z3.optional(z3.string().datetime()).describe("The date the job posting is valid through. After this date it will be removed from public viewing"),
|
|
3097
|
-
vacancyCount: z3.optional(z3.number().int()).describe("The number of vacancies for a given job posting"),
|
|
3098
|
-
clientId: z3.string().describe("The ID assigned by the client to a job - normally the same as the GH / Lever / Ashby ID or internal ID"),
|
|
3099
|
-
url: z3.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
|
|
3100
|
-
title: z3.string().describe("The title of the job post"),
|
|
3101
|
-
description: z3.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
|
|
3102
|
-
richTextDescription: z3.optional(z3.string()).describe("The description of the job post saved as rich text"),
|
|
3103
|
-
isClinical: z3.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."),
|
|
3104
|
-
isRemote: z3.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)."),
|
|
3105
|
-
isVerified: z3.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."),
|
|
3106
|
-
isDirectApply: z3.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."),
|
|
3107
|
-
jobLocationType: z3.optional(z3.array(JobLocationTypeEnum)),
|
|
3108
|
-
employmentType: z3.optional(z3.array(EmploymentTypeEnum)),
|
|
3109
|
-
employmentLevel: z3.optional(EmploymentLevelEnum),
|
|
3110
|
-
jobFunction: z3.optional(JobFunctionEnum),
|
|
3111
|
-
publishStatus: PublishStatusEnum2,
|
|
3112
|
-
bestFit: z3.optional(z3.array(BestFitEnum)),
|
|
3113
|
-
clinicalLicense: z3.optional(z3.array(ClinicalLicenseEnum)),
|
|
3114
|
-
shift: z3.optional(z3.array(ShiftEnum)),
|
|
3115
|
-
clinicalSetting: z3.optional(z3.array(ClinicalSettingEnum)),
|
|
3116
|
-
clinicalSpecialty: z3.optional(z3.array(ClinicalSpecialtyEnum)),
|
|
3117
|
-
estimatedSalary: z3.optional(monetaryAmountSchema).describe("Determines the estimated salary for a given job posting"),
|
|
3118
|
-
jobLocation: z3.optional(postalAddressSchema).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
3119
|
-
applicableOffices: z3.optional(z3.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."),
|
|
3120
|
-
applicantLocationRequirements: z3.optional(z3.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."),
|
|
3121
|
-
hiringOrganization: z3.optional(companySchema).describe("The organization that is hiring for the role")
|
|
3122
|
-
});
|
|
3123
|
-
|
|
3124
|
-
// src/types/latest/custom/company_service_sanity.ts
|
|
3125
|
-
import { z as z5 } from "zod";
|
|
3263
|
+
jobFunction: jobFunctionDisplayText,
|
|
3264
|
+
bestFit: bestFitDisplayText,
|
|
3265
|
+
clinicalSpecialty: clinicalSpecialtyDisplayText,
|
|
3266
|
+
clinicalSetting: clinicalSettingDisplayText,
|
|
3267
|
+
shift: shiftDisplayText
|
|
3268
|
+
};
|
|
3126
3269
|
|
|
3127
|
-
// src/types/
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
}
|
|
3134
|
-
var
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
}
|
|
3270
|
+
// src/types/displayText.errors.tsx
|
|
3271
|
+
var DisplayTextScopeNotFoundError = class extends Error {
|
|
3272
|
+
constructor(scope) {
|
|
3273
|
+
super(`No display text mapping found for scope: ${scope}`);
|
|
3274
|
+
this.name = "DisplayTextScopeNotFoundError";
|
|
3275
|
+
}
|
|
3276
|
+
};
|
|
3277
|
+
var DisplayTextValueNotFoundError = class extends Error {
|
|
3278
|
+
constructor(value, scope) {
|
|
3279
|
+
super(`No display text found for value: '${value}' in scope: '${scope}'`);
|
|
3280
|
+
this.name = "DisplayTextValueNotFoundError";
|
|
3281
|
+
}
|
|
3282
|
+
};
|
|
3139
3283
|
|
|
3140
|
-
// src/
|
|
3141
|
-
var
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3149
|
-
}
|
|
3150
|
-
|
|
3151
|
-
|
|
3152
|
-
|
|
3153
|
-
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
|
|
3160
|
-
}
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
}
|
|
3167
|
-
|
|
3168
|
-
type: data._type
|
|
3169
|
-
})).transform(({ _type, ...rest }) => rest);
|
|
3170
|
-
var companyCareersSchema2 = companyCareersSchema.extend({
|
|
3171
|
-
_type: z5.string().describe("Document type used within sanity").default("companyCareers"),
|
|
3172
|
-
companyBenefits: z5.optional(z5.array(
|
|
3173
|
-
z5.union([companyBenefitsSchema, sanityReferenceSchema])
|
|
3174
|
-
)).nullable().describe("What are the specific benefits of that company. The benefit is generic."),
|
|
3175
|
-
jobBoard: z5.union([jobBoardSchema, sanityReferenceSchema]).nullable(),
|
|
3176
|
-
jobBoardSlug: z5.optional(z5.union([z5.array(z5.string()), z5.array(sanitySlugSchema)]))
|
|
3177
|
-
}).omit({ type: true }).strict().transform((data) => ({
|
|
3178
|
-
...data,
|
|
3179
|
-
type: data._type
|
|
3180
|
-
})).transform(({ _type, ...rest }) => rest);
|
|
3181
|
-
var companySchema2 = companySchema.extend({
|
|
3182
|
-
_id: z5.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."),
|
|
3183
|
-
_rev: z5.string().nullable().describe("Revision number"),
|
|
3184
|
-
_type: z5.string().describe("Document type used within sanity").default("company"),
|
|
3185
|
-
_createdAt: z5.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3186
|
-
_updatedAt: z5.string().datetime().describe("Time document was created. Autoset by Sanity"),
|
|
3187
|
-
companyCareers: companyCareersSchema2.nullable().describe("Career Specific Information for the company."),
|
|
3188
|
-
companyPhilosophy: companyPhilosophySchema2.nullable().describe("Company mission,values and how the company achieves its mission."),
|
|
3189
|
-
companyNDG: companyNdgSchema2.nullable().describe("Next Degree specific information for the company."),
|
|
3190
|
-
foundingInfo: foundingInformationSchema2.nullable(),
|
|
3191
|
-
slug: z5.union([z5.string(), sanitySlugSchema]).describe("The NDG specific slug for a company."),
|
|
3192
|
-
ndgMetadata: ngdMetadataSchema2.nullable(),
|
|
3193
|
-
logo: z5.union([imageSchema, z5.record(z5.any())]).nullable().describe("The logo of the company"),
|
|
3194
|
-
//Deprecated Models
|
|
3195
|
-
logoImageURL: z5.optional(z5.string()).describe("The logo of the company"),
|
|
3196
|
-
industryList: z5.optional(z5.array(sanityReferenceSchema)).describe("The industry of the company")
|
|
3197
|
-
}).omit({ type: true, id: true, createdAt: true, updatedAt: true }).strict().transform((data) => ({
|
|
3198
|
-
...data,
|
|
3199
|
-
type: data._type,
|
|
3200
|
-
id: data._id,
|
|
3201
|
-
createdAt: data._createdAt,
|
|
3202
|
-
updatedAt: data._updatedAt,
|
|
3203
|
-
rev: data._rev
|
|
3204
|
-
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
3284
|
+
// src/services/displayText.tsx
|
|
3285
|
+
var DisplayTextService = class {
|
|
3286
|
+
constructor(customMappings) {
|
|
3287
|
+
this.defaultLanguage = "en";
|
|
3288
|
+
this.mappings = {
|
|
3289
|
+
...defaultMappings,
|
|
3290
|
+
// Use all pre-defined mappings as defaults
|
|
3291
|
+
...customMappings
|
|
3292
|
+
// Override with any custom mappings if provided
|
|
3293
|
+
};
|
|
3294
|
+
}
|
|
3295
|
+
async getDisplayText(scope, value, language = this.defaultLanguage) {
|
|
3296
|
+
const scopeMapping = this.mappings[scope];
|
|
3297
|
+
if (!scopeMapping) {
|
|
3298
|
+
throw new DisplayTextScopeNotFoundError(scope);
|
|
3299
|
+
}
|
|
3300
|
+
if (Array.isArray(value)) {
|
|
3301
|
+
const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
|
|
3302
|
+
const displayTexts2 = await Promise.all(displayTextPromises);
|
|
3303
|
+
return displayTexts2.filter((v) => !!v).join(", ");
|
|
3304
|
+
}
|
|
3305
|
+
const displayTexts = scopeMapping[value];
|
|
3306
|
+
if (!displayTexts) {
|
|
3307
|
+
throw new DisplayTextValueNotFoundError(value, scope);
|
|
3308
|
+
}
|
|
3309
|
+
return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
|
|
3310
|
+
}
|
|
3311
|
+
};
|
|
3205
3312
|
|
|
3206
|
-
// src/
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
// Override fields with new schemas
|
|
3237
|
-
estimatedSalary: monetaryAmountSchema2.optional().describe("Determines the estimated salary for a given job posting"),
|
|
3238
|
-
jobLocation: postalAddressSchema2.optional().describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
|
|
3239
|
-
// Add Sanity-specific fields
|
|
3240
|
-
ndgMetadata: z6.record(z6.any()).optional(),
|
|
3241
|
-
ndgID: z6.string().optional(),
|
|
3242
|
-
hiringOrganization: z6.optional(z6.union([sanityReferenceSchema, companySchema])),
|
|
3243
|
-
raw: z6.record(z6.any()).optional(),
|
|
3244
|
-
isLoaded: z6.boolean().default(false),
|
|
3245
|
-
isVerified: z6.boolean().default(false),
|
|
3246
|
-
needsReview: z6.boolean().default(false),
|
|
3247
|
-
schema_version: z6.string().optional(),
|
|
3248
|
-
origin: z6.string().optional(),
|
|
3249
|
-
temp: z6.record(z6.any()).optional(),
|
|
3250
|
-
applicationType: z6.string().optional(),
|
|
3251
|
-
// Override clientId to use Sanity naming convention
|
|
3252
|
-
clientID: z6.string()
|
|
3253
|
-
}).omit({ type: true, id: true, createdAt: true, updatedAt: true, clientId: true }).transform((data) => ({
|
|
3254
|
-
...data,
|
|
3255
|
-
type: data._type,
|
|
3256
|
-
id: data._id,
|
|
3257
|
-
createdAt: data._createdAt,
|
|
3258
|
-
updatedAt: data._updatedAt,
|
|
3259
|
-
rev: data._rev
|
|
3260
|
-
})).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
|
|
3313
|
+
// src/hooks/useDisplayText.ts
|
|
3314
|
+
var useDisplayText = (scope, value) => {
|
|
3315
|
+
const [displayText, setDisplayText] = useState9("");
|
|
3316
|
+
const displayService = useMemo2(() => new DisplayTextService(), []);
|
|
3317
|
+
useEffect9(() => {
|
|
3318
|
+
if (!displayService || !value) {
|
|
3319
|
+
setDisplayText("");
|
|
3320
|
+
return;
|
|
3321
|
+
}
|
|
3322
|
+
void (async () => {
|
|
3323
|
+
try {
|
|
3324
|
+
const result = await displayService.getDisplayText(scope, value);
|
|
3325
|
+
if (typeof result === "string") {
|
|
3326
|
+
setDisplayText(result);
|
|
3327
|
+
} else {
|
|
3328
|
+
console.error("Expected a string result, but got:", result);
|
|
3329
|
+
}
|
|
3330
|
+
} catch (error) {
|
|
3331
|
+
if (error instanceof DisplayTextValueNotFoundError) {
|
|
3332
|
+
console.warn("Display text value not found:", value);
|
|
3333
|
+
setDisplayText(String(value));
|
|
3334
|
+
} else {
|
|
3335
|
+
console.error("Unexpected error formatting text:", error);
|
|
3336
|
+
setDisplayText(String(value));
|
|
3337
|
+
}
|
|
3338
|
+
}
|
|
3339
|
+
})();
|
|
3340
|
+
}, [scope, value, displayService]);
|
|
3341
|
+
return displayText;
|
|
3342
|
+
};
|
|
3261
3343
|
|
|
3262
|
-
// src/lib/
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
[CurrencyEnum2.Values.USD]: "$",
|
|
3273
|
-
[CurrencyEnum2.Values.GBP]: "\xA3",
|
|
3274
|
-
[CurrencyEnum2.Values.EUR]: "\u20AC"
|
|
3275
|
-
};
|
|
3276
|
-
const sign = signs[salary.currency ?? CurrencyEnum2.Values.USD];
|
|
3277
|
-
if (value != null && typeof value === "object") {
|
|
3278
|
-
min = value.minValue;
|
|
3279
|
-
max = value.maxValue;
|
|
3280
|
-
single = value.value;
|
|
3281
|
-
unitText = value.unitText;
|
|
3282
|
-
}
|
|
3283
|
-
if (unitText === "YEAR") unitText = "per year";
|
|
3284
|
-
if (unitText === "MONTH") unitText = "per month";
|
|
3285
|
-
if (unitText === "WEEK") unitText = "per week";
|
|
3286
|
-
if (unitText === "DAY") unitText = "per day";
|
|
3287
|
-
if (unitText === "PER_ACTIVITY") unitText = "per activity";
|
|
3288
|
-
if (unitText === "HOUR") unitText = "per hour";
|
|
3289
|
-
if (min == null && max == null && single == null) return null;
|
|
3290
|
-
if (single != null) return sign + single.toLocaleString() + " " + unitText;
|
|
3291
|
-
if (min === max) return sign + min?.toLocaleString() + " " + unitText;
|
|
3292
|
-
if (min != null && max != null)
|
|
3293
|
-
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString() + " " + unitText;
|
|
3344
|
+
// src/lib/locations.ts
|
|
3345
|
+
function formattedAddress(address, isRemote = false) {
|
|
3346
|
+
if (!address) return null;
|
|
3347
|
+
const { addressLocality, addressRegion, addressCountry } = address;
|
|
3348
|
+
const remoteMessage = isRemote ? " | Remote" : "";
|
|
3349
|
+
if (addressLocality && addressRegion)
|
|
3350
|
+
return `${addressLocality}, ${addressRegion + remoteMessage}`;
|
|
3351
|
+
if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry + remoteMessage}`;
|
|
3352
|
+
if (addressRegion) return `${addressRegion + remoteMessage}`;
|
|
3353
|
+
if (addressCountry) return `${addressCountry + remoteMessage}`;
|
|
3294
3354
|
return null;
|
|
3295
3355
|
}
|
|
3356
|
+
function getAddressList(jobPost) {
|
|
3357
|
+
const locations = [];
|
|
3358
|
+
if (jobPost.jobLocation) {
|
|
3359
|
+
const address = formattedAddress(jobPost.jobLocation, jobPost.isRemote);
|
|
3360
|
+
if (address) locations.push(address);
|
|
3361
|
+
}
|
|
3362
|
+
if (jobPost.applicableOffices && jobPost.applicableOffices.length > 0) {
|
|
3363
|
+
jobPost.applicableOffices.map((office) => {
|
|
3364
|
+
const address = formattedAddress(office?.geoLocation?.address, jobPost.isRemote);
|
|
3365
|
+
if (address && !locations.includes(address)) locations.push(address);
|
|
3366
|
+
});
|
|
3367
|
+
}
|
|
3368
|
+
if (jobPost.applicantLocationRequirements && jobPost.applicantLocationRequirements.length > 0) {
|
|
3369
|
+
jobPost.applicantLocationRequirements.map((place) => {
|
|
3370
|
+
const address = formattedAddress(place?.address, jobPost.isRemote);
|
|
3371
|
+
if (address && !locations.includes(address)) locations.push(address);
|
|
3372
|
+
});
|
|
3373
|
+
}
|
|
3374
|
+
return locations;
|
|
3375
|
+
}
|
|
3376
|
+
function formattedJobLocation(job) {
|
|
3377
|
+
const address = job.jobLocation && formattedAddress(job.jobLocation);
|
|
3378
|
+
const remote = job.isRemote ? "Remote" : "";
|
|
3379
|
+
return [address, remote].filter(Boolean).join(" | ");
|
|
3380
|
+
}
|
|
3296
3381
|
|
|
3297
3382
|
// src/components/jobPost/JobPost.tsx
|
|
3298
|
-
import { jsx as
|
|
3383
|
+
import { jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3299
3384
|
function JobPost({
|
|
3300
3385
|
job,
|
|
3301
3386
|
bannerSrc,
|
|
@@ -3341,7 +3426,7 @@ function JobPost({
|
|
|
3341
3426
|
label: formattedLocation
|
|
3342
3427
|
}
|
|
3343
3428
|
].filter((t) => !!t);
|
|
3344
|
-
return /* @__PURE__ */
|
|
3429
|
+
return /* @__PURE__ */ jsxs26(
|
|
3345
3430
|
"div",
|
|
3346
3431
|
{
|
|
3347
3432
|
className: cn(
|
|
@@ -3349,7 +3434,7 @@ function JobPost({
|
|
|
3349
3434
|
!standalone && "border-1 rounded-3xl border-grey-5"
|
|
3350
3435
|
),
|
|
3351
3436
|
children: [
|
|
3352
|
-
/* @__PURE__ */
|
|
3437
|
+
/* @__PURE__ */ jsx41(
|
|
3353
3438
|
JobHeader,
|
|
3354
3439
|
{
|
|
3355
3440
|
title: job.title,
|
|
@@ -3365,16 +3450,16 @@ function JobPost({
|
|
|
3365
3450
|
tags
|
|
3366
3451
|
}
|
|
3367
3452
|
),
|
|
3368
|
-
/* @__PURE__ */
|
|
3369
|
-
/* @__PURE__ */
|
|
3370
|
-
/* @__PURE__ */
|
|
3453
|
+
/* @__PURE__ */ jsxs26("div", { className: "flex flex-col gap-8 px-6", children: [
|
|
3454
|
+
/* @__PURE__ */ jsx41(JobDescription, { description: job.description }),
|
|
3455
|
+
/* @__PURE__ */ jsx41(
|
|
3371
3456
|
CompanyTake,
|
|
3372
3457
|
{
|
|
3373
3458
|
avatarSrc,
|
|
3374
3459
|
content: job.hiringOrganization?.companyNDG?.companyNDGTake
|
|
3375
3460
|
}
|
|
3376
3461
|
),
|
|
3377
|
-
/* @__PURE__ */
|
|
3462
|
+
/* @__PURE__ */ jsx41(
|
|
3378
3463
|
CompanyInformation,
|
|
3379
3464
|
{
|
|
3380
3465
|
name: job.hiringOrganization?.companyName ?? "",
|
|
@@ -3384,7 +3469,7 @@ function JobPost({
|
|
|
3384
3469
|
website: job.hiringOrganization?.companyWebsite
|
|
3385
3470
|
}
|
|
3386
3471
|
),
|
|
3387
|
-
/* @__PURE__ */
|
|
3472
|
+
/* @__PURE__ */ jsx41(
|
|
3388
3473
|
CompanyBenefits,
|
|
3389
3474
|
{
|
|
3390
3475
|
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
|
|
@@ -3396,6 +3481,44 @@ function JobPost({
|
|
|
3396
3481
|
);
|
|
3397
3482
|
}
|
|
3398
3483
|
|
|
3484
|
+
// src/components/jobCard/JobLocation.tsx
|
|
3485
|
+
import { MapPin as MapPin2 } from "lucide-react";
|
|
3486
|
+
import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
3487
|
+
function JobLocation({ jobPost }) {
|
|
3488
|
+
const locations = getAddressList(jobPost);
|
|
3489
|
+
if (!locations || locations.length === 0) return null;
|
|
3490
|
+
const primaryOffice = locations[0];
|
|
3491
|
+
const extendedLocations = locations.slice(1).map((address) => address);
|
|
3492
|
+
return /* @__PURE__ */ jsxs27("div", { className: "flex items-center gap-2", "data-testid": "job-location-element", children: [
|
|
3493
|
+
/* @__PURE__ */ jsx42(MapPin2, { size: 16 }),
|
|
3494
|
+
/* @__PURE__ */ jsx42("span", { className: "text-sm font-thin", children: primaryOffice }),
|
|
3495
|
+
extendedLocations.length > 0 && /* @__PURE__ */ jsx42(TooltipProvider, { children: /* @__PURE__ */ jsxs27(Tooltip, { children: [
|
|
3496
|
+
/* @__PURE__ */ jsx42(TooltipTrigger, { children: /* @__PURE__ */ jsxs27(
|
|
3497
|
+
Chip_default,
|
|
3498
|
+
{
|
|
3499
|
+
className: "font-bold",
|
|
3500
|
+
size: "small",
|
|
3501
|
+
variant: "jobLocation",
|
|
3502
|
+
"data-testid": "job-location-tooltip",
|
|
3503
|
+
children: [
|
|
3504
|
+
"+ ",
|
|
3505
|
+
extendedLocations.length,
|
|
3506
|
+
" more"
|
|
3507
|
+
]
|
|
3508
|
+
}
|
|
3509
|
+
) }),
|
|
3510
|
+
/* @__PURE__ */ jsx42(
|
|
3511
|
+
TooltipContent,
|
|
3512
|
+
{
|
|
3513
|
+
className: "border-1 rounded-md border border-grey-5 bg-white p-2",
|
|
3514
|
+
"data-testid": "job-location-tooltip-content",
|
|
3515
|
+
children: extendedLocations.map((location) => /* @__PURE__ */ jsx42("div", { className: "text-nowrap text-sm", children: location }, location))
|
|
3516
|
+
}
|
|
3517
|
+
)
|
|
3518
|
+
] }) })
|
|
3519
|
+
] });
|
|
3520
|
+
}
|
|
3521
|
+
|
|
3399
3522
|
// src/types/data/company_service_latest.ts
|
|
3400
3523
|
var company_service_latest_exports2 = {};
|
|
3401
3524
|
__export(company_service_latest_exports2, {
|
|
@@ -3698,11 +3821,13 @@ export {
|
|
|
3698
3821
|
CompanyTake,
|
|
3699
3822
|
Counter,
|
|
3700
3823
|
DatePicker,
|
|
3824
|
+
DismissibleBanner,
|
|
3701
3825
|
Icon,
|
|
3702
3826
|
Input_default as Input,
|
|
3703
3827
|
InputOtp,
|
|
3704
3828
|
JobDescription,
|
|
3705
3829
|
JobHeader,
|
|
3830
|
+
JobLocation,
|
|
3706
3831
|
JobPost,
|
|
3707
3832
|
job_posting_service_latest_exports2 as JobPostService,
|
|
3708
3833
|
Label_default as Label,
|
|
@@ -3719,6 +3844,7 @@ export {
|
|
|
3719
3844
|
WindowHistoryProvider,
|
|
3720
3845
|
cn,
|
|
3721
3846
|
fetchLocation,
|
|
3847
|
+
salaryRange,
|
|
3722
3848
|
useDisplayText,
|
|
3723
3849
|
useWindowHistory
|
|
3724
3850
|
};
|