@next-degree/pickle-shared-js 0.5.31 → 0.6.43
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_latest-Dwf4Fkjr.d.cts +2641 -0
- package/dist/company_service_latest-Dwf4Fkjr.d.ts +2641 -0
- package/dist/components/buttons/BackButton.cjs +161 -0
- package/dist/components/buttons/BackButton.cjs.map +1 -0
- package/dist/components/buttons/BackButton.d.cts +9 -0
- package/dist/components/buttons/BackButton.d.ts +9 -0
- package/dist/components/buttons/BackButton.js +137 -0
- package/dist/components/buttons/BackButton.js.map +1 -0
- package/dist/components/company/CompanyBenefits.cjs +38 -0
- package/dist/components/company/CompanyBenefits.cjs.map +1 -0
- package/dist/components/company/CompanyBenefits.d.cts +8 -0
- package/dist/components/company/CompanyBenefits.d.ts +8 -0
- package/dist/components/company/CompanyBenefits.js +13 -0
- package/dist/components/company/CompanyBenefits.js.map +1 -0
- package/dist/components/company/CompanyInformation.cjs +112 -0
- package/dist/components/company/CompanyInformation.cjs.map +1 -0
- package/dist/components/company/CompanyInformation.d.cts +12 -0
- package/dist/components/company/CompanyInformation.d.ts +12 -0
- package/dist/components/company/CompanyInformation.js +75 -0
- package/dist/components/company/CompanyInformation.js.map +1 -0
- package/dist/components/company/CompanyTake.cjs +140 -0
- package/dist/components/company/CompanyTake.cjs.map +1 -0
- package/dist/components/company/CompanyTake.d.cts +9 -0
- package/dist/components/company/CompanyTake.d.ts +9 -0
- package/dist/components/company/CompanyTake.js +104 -0
- package/dist/components/company/CompanyTake.js.map +1 -0
- package/dist/components/jobPost/JobDescription.cjs +205 -0
- package/dist/components/jobPost/JobDescription.cjs.map +1 -0
- package/dist/components/jobPost/JobDescription.d.cts +8 -0
- package/dist/components/jobPost/JobDescription.d.ts +8 -0
- package/dist/components/jobPost/JobDescription.js +168 -0
- package/dist/components/jobPost/JobDescription.js.map +1 -0
- package/dist/components/jobPost/JobHeader.cjs +436 -0
- package/dist/components/jobPost/JobHeader.cjs.map +1 -0
- package/dist/components/jobPost/JobHeader.d.cts +26 -0
- package/dist/components/jobPost/JobHeader.d.ts +26 -0
- package/dist/components/jobPost/JobHeader.js +423 -0
- package/dist/components/jobPost/JobHeader.js.map +1 -0
- package/dist/components/jobPost/JobPost.cjs +1349 -0
- package/dist/components/jobPost/JobPost.cjs.map +1 -0
- package/dist/components/jobPost/JobPost.d.cts +16 -0
- package/dist/components/jobPost/JobPost.d.ts +16 -0
- package/dist/components/jobPost/JobPost.js +1336 -0
- package/dist/components/jobPost/JobPost.js.map +1 -0
- package/dist/components/primitives/avatar.cjs +88 -0
- package/dist/components/primitives/avatar.cjs.map +1 -0
- package/dist/components/primitives/avatar.d.cts +13 -0
- package/dist/components/primitives/avatar.d.ts +13 -0
- package/dist/components/primitives/avatar.js +52 -0
- package/dist/components/primitives/avatar.js.map +1 -0
- package/dist/components/primitives/command.d.cts +3 -3
- package/dist/components/primitives/command.d.ts +3 -3
- package/dist/components/ui/Avatar.cjs +117 -0
- package/dist/components/ui/Avatar.cjs.map +1 -0
- package/dist/components/ui/Avatar.d.cts +16 -0
- package/dist/components/ui/Avatar.d.ts +16 -0
- package/dist/components/ui/Avatar.js +79 -0
- package/dist/components/ui/Avatar.js.map +1 -0
- package/dist/components/ui/Icon.cjs +114 -0
- package/dist/components/ui/Icon.cjs.map +1 -0
- package/dist/components/ui/Icon.d.cts +15 -0
- package/dist/components/ui/Icon.d.ts +15 -0
- package/dist/components/ui/Icon.js +89 -0
- package/dist/components/ui/Icon.js.map +1 -0
- package/dist/{app/layout.cjs → components/ui/LinkButton.cjs} +25 -35
- package/dist/components/ui/LinkButton.cjs.map +1 -0
- package/dist/components/ui/LinkButton.d.cts +29 -0
- package/dist/components/ui/LinkButton.d.ts +29 -0
- package/dist/components/ui/LinkButton.js +26 -0
- package/dist/components/ui/LinkButton.js.map +1 -0
- package/dist/components/ui/ReadMore.cjs +194 -0
- package/dist/components/ui/ReadMore.cjs.map +1 -0
- package/dist/components/ui/ReadMore.d.cts +9 -0
- package/dist/components/ui/ReadMore.d.ts +9 -0
- package/dist/components/ui/ReadMore.js +160 -0
- package/dist/components/ui/ReadMore.js.map +1 -0
- package/dist/contexts/WindowHistoryProvider.cjs +48 -0
- package/dist/contexts/WindowHistoryProvider.cjs.map +1 -0
- package/dist/contexts/WindowHistoryProvider.d.cts +11 -0
- package/dist/contexts/WindowHistoryProvider.d.ts +11 -0
- package/dist/contexts/WindowHistoryProvider.js +23 -0
- package/dist/contexts/WindowHistoryProvider.js.map +1 -0
- package/dist/displayText-C1qKqRYc.d.cts +48 -0
- package/dist/displayText-D-OzRlJf.d.ts +48 -0
- package/dist/hooks/useDisplayText.cjs +502 -0
- package/dist/hooks/useDisplayText.cjs.map +1 -0
- package/dist/hooks/useDisplayText.d.cts +8 -0
- package/dist/hooks/useDisplayText.d.ts +8 -0
- package/dist/hooks/useDisplayText.js +477 -0
- package/dist/hooks/useDisplayText.js.map +1 -0
- package/dist/hooks/useWindowHistory.cjs +46 -0
- package/dist/hooks/useWindowHistory.cjs.map +1 -0
- package/dist/hooks/useWindowHistory.d.cts +7 -0
- package/dist/hooks/useWindowHistory.d.ts +7 -0
- package/dist/hooks/useWindowHistory.js +21 -0
- package/dist/hooks/useWindowHistory.js.map +1 -0
- package/dist/index.cjs +1434 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +1443 -1
- package/dist/index.js.map +1 -1
- package/dist/job_posting_service_latest-D0AsiA4a.d.cts +2789 -0
- package/dist/job_posting_service_latest-D0AsiA4a.d.ts +2789 -0
- package/dist/lib/icons.cjs +53 -0
- package/dist/lib/icons.cjs.map +1 -0
- package/dist/lib/icons.d.cts +27 -0
- package/dist/lib/icons.d.ts +27 -0
- package/dist/lib/icons.js +49 -0
- package/dist/lib/icons.js.map +1 -0
- package/dist/lib/locations.cjs +45 -0
- package/dist/lib/locations.cjs.map +1 -0
- package/dist/lib/locations.d.cts +8 -0
- package/dist/lib/locations.d.ts +8 -0
- package/dist/lib/locations.js +19 -0
- package/dist/lib/locations.js.map +1 -0
- package/dist/lib/mappings.cjs +443 -0
- package/dist/lib/mappings.cjs.map +1 -0
- package/dist/lib/mappings.d.cts +4 -0
- package/dist/lib/mappings.d.ts +4 -0
- package/dist/lib/mappings.js +409 -0
- package/dist/lib/mappings.js.map +1 -0
- package/dist/lib/salaryRange.cjs +90 -0
- package/dist/lib/salaryRange.cjs.map +1 -0
- package/dist/lib/salaryRange.d.cts +6 -0
- package/dist/lib/salaryRange.d.ts +6 -0
- package/dist/lib/salaryRange.js +63 -0
- package/dist/lib/salaryRange.js.map +1 -0
- package/dist/services/displayText.cjs +470 -0
- package/dist/services/displayText.cjs.map +1 -0
- package/dist/services/displayText.d.cts +4 -0
- package/dist/services/displayText.d.ts +4 -0
- package/dist/services/displayText.js +443 -0
- package/dist/services/displayText.js.map +1 -0
- package/dist/shared_pickle_output_latest-DX6GQoVn.d.cts +194 -0
- package/dist/shared_pickle_output_latest-DX6GQoVn.d.ts +194 -0
- package/dist/styles/globals.css +817 -0
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.cjs +228 -0
- package/dist/types/data/company_service_latest.cjs.map +1 -0
- package/dist/types/data/company_service_latest.d.cts +2 -0
- package/dist/types/data/company_service_latest.d.ts +2 -0
- package/dist/types/data/company_service_latest.js +186 -0
- package/dist/types/data/company_service_latest.js.map +1 -0
- package/dist/types/data/job_posting_service_latest.cjs +266 -0
- package/dist/types/data/job_posting_service_latest.cjs.map +1 -0
- package/dist/types/data/job_posting_service_latest.d.cts +2 -0
- package/dist/types/data/job_posting_service_latest.d.ts +2 -0
- package/dist/types/data/job_posting_service_latest.js +230 -0
- package/dist/types/data/job_posting_service_latest.js.map +1 -0
- package/dist/types/data/shared_pickle_output_latest.cjs +82 -0
- package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -0
- package/dist/types/data/shared_pickle_output_latest.d.cts +2 -0
- package/dist/types/data/shared_pickle_output_latest.d.ts +2 -0
- package/dist/types/data/shared_pickle_output_latest.js +50 -0
- package/dist/types/data/shared_pickle_output_latest.js.map +1 -0
- package/dist/types/displayText.errors.cjs +44 -0
- package/dist/types/displayText.errors.cjs.map +1 -0
- package/dist/types/displayText.errors.d.cts +8 -0
- package/dist/types/displayText.errors.d.ts +8 -0
- package/dist/types/displayText.errors.js +18 -0
- package/dist/types/displayText.errors.js.map +1 -0
- package/package.json +19 -7
- package/dist/AmbitBold-3SZZPYLH.otf +0 -0
- package/dist/AmbitBoldItalic-JSHFTN4A.otf +0 -0
- package/dist/AmbitRegular-MB5U7O3L.otf +0 -0
- package/dist/app/layout.cjs.map +0 -1
- package/dist/app/layout.css +0 -1423
- package/dist/app/layout.css.map +0 -1
- package/dist/app/layout.d.cts +0 -11
- package/dist/app/layout.d.ts +0 -11
- package/dist/app/layout.js +0 -36
- package/dist/app/layout.js.map +0 -1
- package/dist/app/page.cjs +0 -1607
- package/dist/app/page.cjs.map +0 -1
- package/dist/app/page.d.cts +0 -5
- package/dist/app/page.d.ts +0 -5
- package/dist/app/page.js +0 -1581
- package/dist/app/page.js.map +0 -1
- package/dist/assets/fonts/AmbitBold.cjs +0 -3
- package/dist/assets/fonts/AmbitBold.cjs.map +0 -1
- package/dist/assets/fonts/AmbitBold.d.cts +0 -2
- package/dist/assets/fonts/AmbitBold.d.ts +0 -2
- package/dist/assets/fonts/AmbitBold.js +0 -6
- package/dist/assets/fonts/AmbitBold.js.map +0 -1
- package/dist/assets/fonts/AmbitBoldItalic.cjs +0 -3
- package/dist/assets/fonts/AmbitBoldItalic.cjs.map +0 -1
- package/dist/assets/fonts/AmbitBoldItalic.d.cts +0 -2
- package/dist/assets/fonts/AmbitBoldItalic.d.ts +0 -2
- package/dist/assets/fonts/AmbitBoldItalic.js +0 -6
- package/dist/assets/fonts/AmbitBoldItalic.js.map +0 -1
- package/dist/assets/fonts/AmbitRegular.cjs +0 -3
- package/dist/assets/fonts/AmbitRegular.cjs.map +0 -1
- package/dist/assets/fonts/AmbitRegular.d.cts +0 -2
- package/dist/assets/fonts/AmbitRegular.d.ts +0 -2
- package/dist/assets/fonts/AmbitRegular.js +0 -6
- package/dist/assets/fonts/AmbitRegular.js.map +0 -1
- package/dist/components/demos/ComboboxDemo.cjs +0 -814
- package/dist/components/demos/ComboboxDemo.cjs.map +0 -1
- package/dist/components/demos/ComboboxDemo.d.cts +0 -5
- package/dist/components/demos/ComboboxDemo.d.ts +0 -5
- package/dist/components/demos/ComboboxDemo.js +0 -786
- package/dist/components/demos/ComboboxDemo.js.map +0 -1
- package/dist/components/demos/CounterDemo.cjs +0 -270
- package/dist/components/demos/CounterDemo.cjs.map +0 -1
- package/dist/components/demos/CounterDemo.d.cts +0 -5
- package/dist/components/demos/CounterDemo.d.ts +0 -5
- package/dist/components/demos/CounterDemo.js +0 -238
- package/dist/components/demos/CounterDemo.js.map +0 -1
- package/dist/components/demos/InputDemo.cjs +0 -225
- package/dist/components/demos/InputDemo.cjs.map +0 -1
- package/dist/components/demos/InputDemo.d.cts +0 -5
- package/dist/components/demos/InputDemo.d.ts +0 -5
- package/dist/components/demos/InputDemo.js +0 -192
- package/dist/components/demos/InputDemo.js.map +0 -1
- package/dist/components/demos/MapComponentDemo.cjs +0 -129
- package/dist/components/demos/MapComponentDemo.cjs.map +0 -1
- package/dist/components/demos/MapComponentDemo.d.cts +0 -5
- package/dist/components/demos/MapComponentDemo.d.ts +0 -5
- package/dist/components/demos/MapComponentDemo.js +0 -107
- package/dist/components/demos/MapComponentDemo.js.map +0 -1
- package/dist/components/demos/PlacesQueryInputDemo.cjs +0 -341
- package/dist/components/demos/PlacesQueryInputDemo.cjs.map +0 -1
- package/dist/components/demos/PlacesQueryInputDemo.d.cts +0 -5
- package/dist/components/demos/PlacesQueryInputDemo.d.ts +0 -5
- package/dist/components/demos/PlacesQueryInputDemo.js +0 -309
- package/dist/components/demos/PlacesQueryInputDemo.js.map +0 -1
- package/dist/components/demos/SelectDemo.cjs +0 -365
- package/dist/components/demos/SelectDemo.cjs.map +0 -1
- package/dist/components/demos/SelectDemo.d.cts +0 -5
- package/dist/components/demos/SelectDemo.d.ts +0 -5
- package/dist/components/demos/SelectDemo.js +0 -337
- package/dist/components/demos/SelectDemo.js.map +0 -1
- package/dist/components/demos/index.cjs +0 -1600
- package/dist/components/demos/index.cjs.map +0 -1
- package/dist/components/demos/index.d.cts +0 -5
- package/dist/components/demos/index.d.ts +0 -5
- package/dist/components/demos/index.js +0 -1574
- package/dist/components/demos/index.js.map +0 -1
|
@@ -0,0 +1,1349 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/components/jobPost/JobPost.tsx
|
|
32
|
+
var JobPost_exports = {};
|
|
33
|
+
__export(JobPost_exports, {
|
|
34
|
+
JobPost: () => JobPost
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(JobPost_exports);
|
|
37
|
+
var DateFns = __toESM(require("date-fns"), 1);
|
|
38
|
+
|
|
39
|
+
// src/components/company/CompanyBenefits.tsx
|
|
40
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
|
+
function CompanyBenefits({ benefits }) {
|
|
42
|
+
if (!benefits) return null;
|
|
43
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits", children: [
|
|
44
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
|
|
45
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
|
|
46
|
+
] });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/components/ui/LinkButton.tsx
|
|
50
|
+
var import_link = __toESM(require("next/link"), 1);
|
|
51
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
52
|
+
var LinkButton = ({
|
|
53
|
+
disabled = false,
|
|
54
|
+
useAnchor = false,
|
|
55
|
+
children,
|
|
56
|
+
href,
|
|
57
|
+
...props
|
|
58
|
+
}) => {
|
|
59
|
+
const Component = useAnchor ? "a" : import_link.default;
|
|
60
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
61
|
+
Component,
|
|
62
|
+
{
|
|
63
|
+
href,
|
|
64
|
+
className: `inline-flex items-center justify-center gap-2 rounded-full text-sm font-bold leading-tight text-black underline outline-dashed outline-2 outline-offset-2 outline-transparent hover:text-purple-100 focus:text-black focus:outline-purple-100 active:text-purple-80 ${disabled ? "pointer-events-none text-grey-40" : ""} `,
|
|
65
|
+
...disabled && { "aria-disabled": true, tabIndex: -1 },
|
|
66
|
+
...props,
|
|
67
|
+
children
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/components/company/CompanyInformation.tsx
|
|
73
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
74
|
+
function CompanyInformation({
|
|
75
|
+
name,
|
|
76
|
+
how,
|
|
77
|
+
mission,
|
|
78
|
+
wow,
|
|
79
|
+
website
|
|
80
|
+
}) {
|
|
81
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
83
|
+
"h2",
|
|
84
|
+
{
|
|
85
|
+
"data-testid": "company-name",
|
|
86
|
+
className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
87
|
+
children: [
|
|
88
|
+
"About ",
|
|
89
|
+
name
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
how && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
|
|
94
|
+
mission && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex gap-2", children: [
|
|
95
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: "\u{1F680}" }),
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
97
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "pr-1 font-bold", children: "Mission" }),
|
|
98
|
+
mission
|
|
99
|
+
] })
|
|
100
|
+
] }),
|
|
101
|
+
wow && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex gap-2", children: [
|
|
102
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: "\u{1F31F}" }),
|
|
103
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("p", { className: "text-base text-grey-80", children: [
|
|
104
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
|
|
105
|
+
wow
|
|
106
|
+
] })
|
|
107
|
+
] }),
|
|
108
|
+
website && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "pt-2", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
109
|
+
LinkButton,
|
|
110
|
+
{
|
|
111
|
+
"data-testid": "company-website-link",
|
|
112
|
+
href: website,
|
|
113
|
+
target: "_blank",
|
|
114
|
+
rel: "noopener noreferrer",
|
|
115
|
+
children: "Website"
|
|
116
|
+
}
|
|
117
|
+
) })
|
|
118
|
+
] });
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/components/primitives/avatar.tsx
|
|
122
|
+
var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
|
|
123
|
+
var React = __toESM(require("react"), 1);
|
|
124
|
+
|
|
125
|
+
// src/lib/utils.ts
|
|
126
|
+
var import_clsx = require("clsx");
|
|
127
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
128
|
+
function cn(...inputs) {
|
|
129
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/components/primitives/avatar.tsx
|
|
133
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
134
|
+
var AvatarBase = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
135
|
+
AvatarPrimitive.Root,
|
|
136
|
+
{
|
|
137
|
+
ref,
|
|
138
|
+
className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
|
|
139
|
+
...props
|
|
140
|
+
}
|
|
141
|
+
));
|
|
142
|
+
AvatarBase.displayName = AvatarPrimitive.Root.displayName;
|
|
143
|
+
var AvatarImage = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
144
|
+
AvatarPrimitive.Image,
|
|
145
|
+
{
|
|
146
|
+
ref,
|
|
147
|
+
className: cn("aspect-square h-full w-full", className),
|
|
148
|
+
"data-testid": "job-card-avatar",
|
|
149
|
+
...props
|
|
150
|
+
}
|
|
151
|
+
));
|
|
152
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
153
|
+
var AvatarFallback = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
154
|
+
AvatarPrimitive.Fallback,
|
|
155
|
+
{
|
|
156
|
+
ref,
|
|
157
|
+
className: cn(
|
|
158
|
+
"flex h-full w-full items-center justify-center rounded-full bg-pumpkin-100 py-2 text-sm font-bold capitalize leading-normal text-white md:text-lg",
|
|
159
|
+
className
|
|
160
|
+
),
|
|
161
|
+
...props
|
|
162
|
+
}
|
|
163
|
+
));
|
|
164
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
165
|
+
|
|
166
|
+
// src/components/ui/Avatar.tsx
|
|
167
|
+
var import_cva = require("cva");
|
|
168
|
+
var import_link2 = __toESM(require("next/link"), 1);
|
|
169
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
170
|
+
function Avatar({ size, src, href, name, ...linkProps }) {
|
|
171
|
+
const fallbackShort = name?.slice(0, 2);
|
|
172
|
+
const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
|
|
173
|
+
const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
|
|
174
|
+
const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
|
|
175
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(AvatarImage, { src, alt: name }),
|
|
176
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
|
|
177
|
+
] });
|
|
178
|
+
if (href) {
|
|
179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_link2.default, { href, ...linkProps, children: renderAvatar() });
|
|
180
|
+
}
|
|
181
|
+
return renderAvatar();
|
|
182
|
+
}
|
|
183
|
+
var avatarVariants = (0, import_cva.cva)("ring ring-white ring-2", {
|
|
184
|
+
variants: {
|
|
185
|
+
size: {
|
|
186
|
+
large: "h-16 w-16",
|
|
187
|
+
medium: "h-10 w-10",
|
|
188
|
+
small: "h-8 w-8"
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
defaultVariants: {
|
|
192
|
+
size: "medium"
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
// src/components/company/CompanyTake.tsx
|
|
197
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
198
|
+
function CompanyTake({ content, avatarSrc }) {
|
|
199
|
+
if (!content) return null;
|
|
200
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
201
|
+
"div",
|
|
202
|
+
{
|
|
203
|
+
"data-testid": "company-take",
|
|
204
|
+
className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
|
|
205
|
+
children: [
|
|
206
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
|
|
207
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
|
|
208
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "mt-8 flex w-full items-center gap-3", children: [
|
|
209
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Avatar, { name: "Jon Lee", src: avatarSrc }),
|
|
210
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex flex-col flex-wrap items-start", children: [
|
|
211
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
|
|
213
|
+
] })
|
|
214
|
+
] })
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// src/components/ui/ReadMore.tsx
|
|
221
|
+
var import_react2 = require("react");
|
|
222
|
+
var import_react_markdown = __toESM(require("react-markdown"), 1);
|
|
223
|
+
|
|
224
|
+
// src/components/ui/Button.tsx
|
|
225
|
+
var import_react_slot = require("@radix-ui/react-slot");
|
|
226
|
+
var import_cva2 = require("cva");
|
|
227
|
+
var import_react = require("react");
|
|
228
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
229
|
+
var Button = (0, import_react.forwardRef)(
|
|
230
|
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
231
|
+
const Component = asChild ? import_react_slot.Slot : "button";
|
|
232
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
233
|
+
Component,
|
|
234
|
+
{
|
|
235
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
236
|
+
ref,
|
|
237
|
+
...props
|
|
238
|
+
}
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
);
|
|
242
|
+
Button.displayName = "Button";
|
|
243
|
+
var buttonVariants = (0, import_cva2.cva)(
|
|
244
|
+
[
|
|
245
|
+
"flex",
|
|
246
|
+
"items-center",
|
|
247
|
+
"justify-center",
|
|
248
|
+
"gap-2",
|
|
249
|
+
"rounded-full",
|
|
250
|
+
"font-bold",
|
|
251
|
+
"outline-2",
|
|
252
|
+
"outline-offset-2",
|
|
253
|
+
"outline-dashed",
|
|
254
|
+
"outline-transparent"
|
|
255
|
+
],
|
|
256
|
+
{
|
|
257
|
+
variants: {
|
|
258
|
+
variant: {
|
|
259
|
+
neutral: [
|
|
260
|
+
"bg-black",
|
|
261
|
+
"text-white",
|
|
262
|
+
"hover:bg-grey-90",
|
|
263
|
+
"active:bg-grey-80",
|
|
264
|
+
"focus:outline-purple-100",
|
|
265
|
+
"disabled:text-grey-40",
|
|
266
|
+
"disabled:bg-grey-10"
|
|
267
|
+
],
|
|
268
|
+
primary: [
|
|
269
|
+
"bg-pickle-100",
|
|
270
|
+
"text-black",
|
|
271
|
+
"hover:bg-pickle-80",
|
|
272
|
+
"active:bg-pickle-60",
|
|
273
|
+
"focus:outline-purple-100",
|
|
274
|
+
"disabled:text-grey-40",
|
|
275
|
+
"disabled:bg-grey-10"
|
|
276
|
+
],
|
|
277
|
+
secondary: [
|
|
278
|
+
"bg-green-80",
|
|
279
|
+
"text-white",
|
|
280
|
+
"hover:bg-green-90",
|
|
281
|
+
"active:bg-green-100",
|
|
282
|
+
"focus:outline-pickle-100",
|
|
283
|
+
"disabled:text-grey-40",
|
|
284
|
+
"disabled:bg-grey-10"
|
|
285
|
+
],
|
|
286
|
+
transparent: [
|
|
287
|
+
"text-white",
|
|
288
|
+
"hover:bg-green-80",
|
|
289
|
+
"active:bg-green-100",
|
|
290
|
+
"focus:outline-pickle-100",
|
|
291
|
+
"disabled:text-grey-40"
|
|
292
|
+
],
|
|
293
|
+
link: [
|
|
294
|
+
"leading-tight",
|
|
295
|
+
"text-black",
|
|
296
|
+
"underline",
|
|
297
|
+
"hover:text-purple-100",
|
|
298
|
+
"focus:text-black",
|
|
299
|
+
"focus:outline-purple-100",
|
|
300
|
+
"active:text-purple-80"
|
|
301
|
+
]
|
|
302
|
+
},
|
|
303
|
+
size: {
|
|
304
|
+
small: ["h-10", "text-sm", "px-4", "py-2"],
|
|
305
|
+
medium: ["h-12", "text-base", "px-6", "py-3"],
|
|
306
|
+
large: ["h-14", "text-lg", "px-8", "py-4"]
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
defaultVariants: {
|
|
310
|
+
variant: "neutral",
|
|
311
|
+
size: "medium"
|
|
312
|
+
},
|
|
313
|
+
compoundVariants: [
|
|
314
|
+
{
|
|
315
|
+
variant: "link",
|
|
316
|
+
size: "small",
|
|
317
|
+
class: ["h-3", "text-xs", "p-0"]
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
variant: "link",
|
|
321
|
+
size: "medium",
|
|
322
|
+
class: ["h-4", "text-sm", "p-0"]
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
variant: "link",
|
|
326
|
+
size: "large",
|
|
327
|
+
class: ["h-6", "text-base", "p-0"]
|
|
328
|
+
}
|
|
329
|
+
]
|
|
330
|
+
}
|
|
331
|
+
);
|
|
332
|
+
|
|
333
|
+
// src/components/ui/ReadMore.tsx
|
|
334
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
335
|
+
function ReadMore({ text, ...props }) {
|
|
336
|
+
const [isExpanded, setIsExpanded] = (0, import_react2.useState)(false);
|
|
337
|
+
const [maxWords, setMaxWords] = (0, import_react2.useState)(160);
|
|
338
|
+
(0, import_react2.useEffect)(() => {
|
|
339
|
+
const updateMaxWords = () => {
|
|
340
|
+
const windowWidth = window.innerWidth;
|
|
341
|
+
if (windowWidth <= 768) {
|
|
342
|
+
setMaxWords(50);
|
|
343
|
+
} else {
|
|
344
|
+
setMaxWords(160);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
updateMaxWords();
|
|
348
|
+
window.addEventListener("resize", updateMaxWords);
|
|
349
|
+
return () => window.removeEventListener("resize", updateMaxWords);
|
|
350
|
+
}, []);
|
|
351
|
+
function createReadMoreText(text2, maxWords2, isExpanded2) {
|
|
352
|
+
const words = text2.split(" ");
|
|
353
|
+
const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
|
|
354
|
+
const readMoreText = isExpanded2 ? "" : "...";
|
|
355
|
+
return `${snippet2} ${readMoreText}`;
|
|
356
|
+
}
|
|
357
|
+
const toggleText = () => setIsExpanded(!isExpanded);
|
|
358
|
+
const snippet = createReadMoreText(text, maxWords, isExpanded);
|
|
359
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { ...props, children: [
|
|
360
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_markdown.default, { children: snippet }) }),
|
|
361
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Button, { className: "mt-2 flex items-center justify-center", variant: "link", onClick: toggleText, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { className: "text-sm font-bold underline underline-offset-2", children: [
|
|
362
|
+
"Read ",
|
|
363
|
+
isExpanded ? "less" : "more"
|
|
364
|
+
] }) })
|
|
365
|
+
] });
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// src/components/jobPost/JobDescription.tsx
|
|
369
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
370
|
+
function JobDescription({ description }) {
|
|
371
|
+
if (!description) return null;
|
|
372
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex w-full flex-col gap-2", children: [
|
|
373
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: "text-xl font-bold", children: "Job Description" }),
|
|
374
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ReadMore, { text: description })
|
|
375
|
+
] });
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// src/components/jobPost/JobHeader.tsx
|
|
379
|
+
var import_lucide_react3 = require("lucide-react");
|
|
380
|
+
var import_image = __toESM(require("next/image"), 1);
|
|
381
|
+
|
|
382
|
+
// src/components/buttons/BackButton.tsx
|
|
383
|
+
var import_lucide_react = require("lucide-react");
|
|
384
|
+
var import_navigation2 = require("next/navigation");
|
|
385
|
+
|
|
386
|
+
// src/components/ui/Icon.tsx
|
|
387
|
+
var import_react_slot2 = require("@radix-ui/react-slot");
|
|
388
|
+
var import_cva3 = require("cva");
|
|
389
|
+
var import_react3 = require("react");
|
|
390
|
+
var import_tailwind_merge2 = require("tailwind-merge");
|
|
391
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
392
|
+
var Icon = (0, import_react3.forwardRef)(
|
|
393
|
+
({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
|
|
394
|
+
const Component = readonly ? import_react_slot2.Slot : "button";
|
|
395
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
396
|
+
Component,
|
|
397
|
+
{
|
|
398
|
+
className: cn(
|
|
399
|
+
(0, import_tailwind_merge2.twMerge)(iconVariants({ variant: active ? "active" : variant, size })),
|
|
400
|
+
className
|
|
401
|
+
),
|
|
402
|
+
...props,
|
|
403
|
+
ref
|
|
404
|
+
}
|
|
405
|
+
);
|
|
406
|
+
}
|
|
407
|
+
);
|
|
408
|
+
Icon.displayName = "Icon";
|
|
409
|
+
var iconVariants = (0, import_cva3.cva)(
|
|
410
|
+
[
|
|
411
|
+
"inline-flex",
|
|
412
|
+
"items-center",
|
|
413
|
+
"rounded-full",
|
|
414
|
+
"outline-2",
|
|
415
|
+
"outline-offset-2",
|
|
416
|
+
"outline-dashed",
|
|
417
|
+
"outline-transparent",
|
|
418
|
+
"disabled:text-grey-40",
|
|
419
|
+
"disabled:bg-transparent",
|
|
420
|
+
"disabled:pointer-events-none"
|
|
421
|
+
],
|
|
422
|
+
{
|
|
423
|
+
variants: {
|
|
424
|
+
variant: {
|
|
425
|
+
filled: [
|
|
426
|
+
"border",
|
|
427
|
+
"border-green-80",
|
|
428
|
+
"bg-green-90",
|
|
429
|
+
"text-white",
|
|
430
|
+
"hover:bg-green-80",
|
|
431
|
+
"active:bg-green-80",
|
|
432
|
+
"focus:outline-pickle-100",
|
|
433
|
+
"disabled:bg-green-70"
|
|
434
|
+
],
|
|
435
|
+
transparent: [
|
|
436
|
+
"text-black",
|
|
437
|
+
"hover:bg-grey-5",
|
|
438
|
+
"active:bg-grey-10",
|
|
439
|
+
"focus:outline-purple-100"
|
|
440
|
+
],
|
|
441
|
+
tonal: [
|
|
442
|
+
"border",
|
|
443
|
+
"border-grey-5",
|
|
444
|
+
"hover:border-grey-10",
|
|
445
|
+
"active:border-grey-20",
|
|
446
|
+
"focus:outline-purple-100"
|
|
447
|
+
],
|
|
448
|
+
active: ["text-black", "bg-pickle-100"]
|
|
449
|
+
},
|
|
450
|
+
size: {
|
|
451
|
+
small: ["h-10", "w-10", "p-3"],
|
|
452
|
+
medium: ["h-12", "w-12", "p-4"],
|
|
453
|
+
large: ["h-14", "w-14", "p-4"]
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
defaultVariants: {
|
|
457
|
+
variant: "filled",
|
|
458
|
+
size: "medium"
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
);
|
|
462
|
+
|
|
463
|
+
// src/hooks/useWindowHistory.ts
|
|
464
|
+
var import_react5 = require("react");
|
|
465
|
+
|
|
466
|
+
// src/contexts/WindowHistoryProvider.tsx
|
|
467
|
+
var import_navigation = require("next/navigation");
|
|
468
|
+
var import_react4 = require("react");
|
|
469
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
470
|
+
var WindowHistoryContext = (0, import_react4.createContext)({});
|
|
471
|
+
|
|
472
|
+
// src/hooks/useWindowHistory.ts
|
|
473
|
+
function useWindowHistory() {
|
|
474
|
+
const windowHistoryContext = (0, import_react5.useContext)(WindowHistoryContext);
|
|
475
|
+
if (Object.keys(windowHistoryContext).length === 0) {
|
|
476
|
+
throw new Error("useWindowHistory was used outside of its WindowHistoryContext");
|
|
477
|
+
}
|
|
478
|
+
return windowHistoryContext;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// src/components/buttons/BackButton.tsx
|
|
482
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
483
|
+
function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
|
|
484
|
+
const { history } = useWindowHistory();
|
|
485
|
+
const router = (0, import_navigation2.useRouter)();
|
|
486
|
+
const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
|
|
487
|
+
const goBack = () => {
|
|
488
|
+
const previous = history[history.length - 2];
|
|
489
|
+
history.length > 1 && isAcceptedRoute(previous) ? router.back() : router.push(fallbackHref ?? "/");
|
|
490
|
+
};
|
|
491
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
492
|
+
Icon,
|
|
493
|
+
{
|
|
494
|
+
"aria-label": "back button",
|
|
495
|
+
variant: "transparent",
|
|
496
|
+
size: "small",
|
|
497
|
+
onClick: goBack,
|
|
498
|
+
className,
|
|
499
|
+
...props,
|
|
500
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react.X, {})
|
|
501
|
+
}
|
|
502
|
+
);
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// src/components/ui/Chip.tsx
|
|
506
|
+
var import_cva4 = require("cva");
|
|
507
|
+
var import_tailwind_merge3 = require("tailwind-merge");
|
|
508
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
509
|
+
var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: (0, import_tailwind_merge3.twMerge)(chipVariants({ variant, size, className })), ...props });
|
|
510
|
+
var chipVariants = (0, import_cva4.cva)(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
|
|
511
|
+
variants: {
|
|
512
|
+
variant: {
|
|
513
|
+
neutral: ["text-grey-80", "border-grey-10"],
|
|
514
|
+
primary: ["text-purple-100", "border-purple-20"],
|
|
515
|
+
danger: ["text-pumpkin-100", "border-pumpkin-20"],
|
|
516
|
+
onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
|
|
517
|
+
onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
|
|
518
|
+
},
|
|
519
|
+
size: {
|
|
520
|
+
small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
|
|
521
|
+
medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
defaultVariants: {
|
|
525
|
+
variant: "neutral",
|
|
526
|
+
size: "medium"
|
|
527
|
+
}
|
|
528
|
+
});
|
|
529
|
+
var Chip_default = Chip;
|
|
530
|
+
|
|
531
|
+
// src/lib/icons.ts
|
|
532
|
+
var import_lucide_react2 = require("lucide-react");
|
|
533
|
+
var iconMap = {
|
|
534
|
+
house: import_lucide_react2.Home,
|
|
535
|
+
layers: import_lucide_react2.Layers,
|
|
536
|
+
users: import_lucide_react2.Users,
|
|
537
|
+
settings: import_lucide_react2.Settings,
|
|
538
|
+
building: import_lucide_react2.Building,
|
|
539
|
+
bell: import_lucide_react2.Bell,
|
|
540
|
+
wallet: import_lucide_react2.Wallet,
|
|
541
|
+
contact: import_lucide_react2.Contact,
|
|
542
|
+
banknote: import_lucide_react2.Banknote,
|
|
543
|
+
"message-square-dot": import_lucide_react2.MessageSquareDot,
|
|
544
|
+
"life-buoy": import_lucide_react2.LifeBuoy,
|
|
545
|
+
"building-2": import_lucide_react2.Building2,
|
|
546
|
+
"gallery-vertical-end": import_lucide_react2.GalleryVerticalEnd,
|
|
547
|
+
"square-kanban": import_lucide_react2.SquareKanban,
|
|
548
|
+
"briefcase-business": import_lucide_react2.BriefcaseBusiness,
|
|
549
|
+
"circle-user": import_lucide_react2.CircleUser,
|
|
550
|
+
"key-round": import_lucide_react2.KeyRound,
|
|
551
|
+
"clock-2": import_lucide_react2.Clock2,
|
|
552
|
+
"circle-user-round": import_lucide_react2.CircleUserRound,
|
|
553
|
+
"map-pin": import_lucide_react2.MapPin
|
|
554
|
+
};
|
|
555
|
+
|
|
556
|
+
// src/components/jobPost/JobHeader.tsx
|
|
557
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
558
|
+
function JobHeader({
|
|
559
|
+
title,
|
|
560
|
+
subtitles,
|
|
561
|
+
standalone,
|
|
562
|
+
bannerSrc,
|
|
563
|
+
avatarSrc,
|
|
564
|
+
avatarName,
|
|
565
|
+
avatarHref,
|
|
566
|
+
backFallbackHref,
|
|
567
|
+
backAcceptedRoutes,
|
|
568
|
+
actions,
|
|
569
|
+
tags
|
|
570
|
+
}) {
|
|
571
|
+
const renderIcon = (icon) => {
|
|
572
|
+
const Icon2 = iconMap[icon];
|
|
573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon2, { size: 18 });
|
|
574
|
+
};
|
|
575
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
576
|
+
"div",
|
|
577
|
+
{
|
|
578
|
+
"data-testid": "job-header-root",
|
|
579
|
+
className: cn(
|
|
580
|
+
"-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
|
|
581
|
+
!standalone && "rounded-3xl"
|
|
582
|
+
),
|
|
583
|
+
children: [
|
|
584
|
+
!standalone && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "relative flex min-h-16 w-full items-center rounded-t-3xl bg-transparent md:min-h-24 md:flex-row lg:min-h-32", children: [
|
|
585
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
586
|
+
import_image.default,
|
|
587
|
+
{
|
|
588
|
+
className: "h-full w-full rounded-t-3xl object-cover",
|
|
589
|
+
src: bannerSrc,
|
|
590
|
+
alt: "job banner",
|
|
591
|
+
fill: true
|
|
592
|
+
}
|
|
593
|
+
),
|
|
594
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
595
|
+
BackButton,
|
|
596
|
+
{
|
|
597
|
+
acceptedRoutes: backAcceptedRoutes,
|
|
598
|
+
fallbackHref: backFallbackHref,
|
|
599
|
+
className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
|
|
600
|
+
"data-testid": "job-header-back-button"
|
|
601
|
+
}
|
|
602
|
+
),
|
|
603
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
604
|
+
"div",
|
|
605
|
+
{
|
|
606
|
+
className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
|
|
607
|
+
"data-testid": "job-header-avatar",
|
|
608
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
609
|
+
Avatar,
|
|
610
|
+
{
|
|
611
|
+
size: "large",
|
|
612
|
+
target: "_blank",
|
|
613
|
+
href: avatarHref,
|
|
614
|
+
name: avatarName,
|
|
615
|
+
src: avatarSrc,
|
|
616
|
+
rel: "noopener noreferrer"
|
|
617
|
+
}
|
|
618
|
+
)
|
|
619
|
+
}
|
|
620
|
+
)
|
|
621
|
+
] }),
|
|
622
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
|
|
623
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-col md:flex-row", children: [
|
|
624
|
+
standalone && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
625
|
+
Avatar,
|
|
626
|
+
{
|
|
627
|
+
size: "large",
|
|
628
|
+
target: "_blank",
|
|
629
|
+
href: avatarHref,
|
|
630
|
+
name: avatarName,
|
|
631
|
+
src: avatarSrc,
|
|
632
|
+
rel: "noopener noreferrer"
|
|
633
|
+
}
|
|
634
|
+
) }),
|
|
635
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
636
|
+
"div",
|
|
637
|
+
{
|
|
638
|
+
"data-testid": `job-header-subtitle-${i}`,
|
|
639
|
+
className: "flex items-center",
|
|
640
|
+
children: [
|
|
641
|
+
subtitle,
|
|
642
|
+
i < subtitles.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react3.Dot, { className: "mx-1 shrink-0", size: 10 })
|
|
643
|
+
]
|
|
644
|
+
},
|
|
645
|
+
subtitle
|
|
646
|
+
)) })
|
|
647
|
+
] }),
|
|
648
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
649
|
+
"div",
|
|
650
|
+
{
|
|
651
|
+
"data-testid": "job-header-content",
|
|
652
|
+
className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
|
|
653
|
+
children: [
|
|
654
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
655
|
+
"h2",
|
|
656
|
+
{
|
|
657
|
+
"data-testid": "job-header-title",
|
|
658
|
+
className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
|
|
659
|
+
children: title
|
|
660
|
+
}
|
|
661
|
+
),
|
|
662
|
+
!!actions && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
663
|
+
"div",
|
|
664
|
+
{
|
|
665
|
+
className: "flex w-full justify-end gap-2 md:w-auto",
|
|
666
|
+
"data-testid": "job-header-actions",
|
|
667
|
+
children: actions
|
|
668
|
+
}
|
|
669
|
+
)
|
|
670
|
+
]
|
|
671
|
+
}
|
|
672
|
+
),
|
|
673
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
674
|
+
"div",
|
|
675
|
+
{
|
|
676
|
+
"data-testid": "job-header-tags",
|
|
677
|
+
className: "flex flex-row flex-wrap items-center justify-start gap-2",
|
|
678
|
+
children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
679
|
+
Chip_default,
|
|
680
|
+
{
|
|
681
|
+
size: "small",
|
|
682
|
+
variant: "neutral",
|
|
683
|
+
"aria-label": name,
|
|
684
|
+
"data-testid": `job-header-tag-${name}`,
|
|
685
|
+
children: [
|
|
686
|
+
renderIcon(icon),
|
|
687
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: label })
|
|
688
|
+
]
|
|
689
|
+
},
|
|
690
|
+
name
|
|
691
|
+
))
|
|
692
|
+
}
|
|
693
|
+
)
|
|
694
|
+
] })
|
|
695
|
+
]
|
|
696
|
+
}
|
|
697
|
+
);
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
// src/types/data/shared_pickle_output_latest.ts
|
|
701
|
+
var import_zod = require("zod");
|
|
702
|
+
var TypeEnum = import_zod.z.enum(["MONETARY_AMOUNT"]);
|
|
703
|
+
var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
|
|
704
|
+
var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
|
|
705
|
+
var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
|
|
706
|
+
var postalAddressSchema = import_zod.z.object({
|
|
707
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
708
|
+
type: import_zod.z.string().describe("Document type used within sanity"),
|
|
709
|
+
addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
|
|
710
|
+
addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
|
|
711
|
+
addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
|
|
712
|
+
streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street address within the locality."),
|
|
713
|
+
postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code")
|
|
714
|
+
});
|
|
715
|
+
var placeSchema = import_zod.z.object({
|
|
716
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
717
|
+
detailLevel: import_zod.z.optional(DetailLevelEnum),
|
|
718
|
+
latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
|
|
719
|
+
longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
|
|
720
|
+
address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
|
|
721
|
+
});
|
|
722
|
+
var quantitativeValueSchema = import_zod.z.object({
|
|
723
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
724
|
+
type: import_zod.z.string().describe("Document type used within sanity"),
|
|
725
|
+
value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
|
|
726
|
+
minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
|
|
727
|
+
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
|
|
728
|
+
unitText: UnitTextEnum
|
|
729
|
+
});
|
|
730
|
+
var monetaryAmountSchema = import_zod.z.object({
|
|
731
|
+
version: import_zod.z.literal("1.0.0").default("1.0.0"),
|
|
732
|
+
type: import_zod.z.string().describe("Document type used within sanity"),
|
|
733
|
+
singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
|
|
734
|
+
minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
|
|
735
|
+
maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
|
|
736
|
+
value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
|
|
737
|
+
currency: import_zod.z.optional(CurrencyEnum)
|
|
738
|
+
});
|
|
739
|
+
|
|
740
|
+
// src/lib/salaryRange.ts
|
|
741
|
+
function salaryRange(salary) {
|
|
742
|
+
if (!salary) return null;
|
|
743
|
+
const min = salary.minValue;
|
|
744
|
+
const max = salary.maxValue;
|
|
745
|
+
const single = salary.singleValue;
|
|
746
|
+
const signs = {
|
|
747
|
+
[CurrencyEnum.Values.USD]: "$",
|
|
748
|
+
[CurrencyEnum.Values.GBP]: "\xA3",
|
|
749
|
+
[CurrencyEnum.Values.EUR]: "\u20AC"
|
|
750
|
+
};
|
|
751
|
+
const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
|
|
752
|
+
if (min == null && max == null && single == null) return null;
|
|
753
|
+
if (single != null) return sign + single.toLocaleString();
|
|
754
|
+
if (min === max) return sign + min?.toLocaleString();
|
|
755
|
+
if (min != null && max != null)
|
|
756
|
+
return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
|
|
757
|
+
return null;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// src/hooks/useDisplayText.ts
|
|
761
|
+
var import_react6 = require("react");
|
|
762
|
+
|
|
763
|
+
// src/lib/mappings.ts
|
|
764
|
+
var employmentTypeDisplayText = {
|
|
765
|
+
FULL_TIME: {
|
|
766
|
+
en: "Full Time"
|
|
767
|
+
},
|
|
768
|
+
INTERNSHIP: {
|
|
769
|
+
en: "Internship"
|
|
770
|
+
},
|
|
771
|
+
OTHER: {
|
|
772
|
+
en: "Other"
|
|
773
|
+
},
|
|
774
|
+
PART_TIME: {
|
|
775
|
+
en: "Part Time"
|
|
776
|
+
},
|
|
777
|
+
PER_DIEM: {
|
|
778
|
+
en: "Per-Diem"
|
|
779
|
+
},
|
|
780
|
+
TEMPORARY: {
|
|
781
|
+
en: "Temporary"
|
|
782
|
+
},
|
|
783
|
+
CONTRACT: {
|
|
784
|
+
en: "Contract"
|
|
785
|
+
}
|
|
786
|
+
};
|
|
787
|
+
var unitTextDisplayText = {
|
|
788
|
+
DAY: {
|
|
789
|
+
en: "Day"
|
|
790
|
+
},
|
|
791
|
+
HOUR: {
|
|
792
|
+
en: "Hour"
|
|
793
|
+
},
|
|
794
|
+
MONTH: {
|
|
795
|
+
en: "Month"
|
|
796
|
+
},
|
|
797
|
+
PER_ACTIVITY: {
|
|
798
|
+
en: "Per Activity"
|
|
799
|
+
},
|
|
800
|
+
WEEK: {
|
|
801
|
+
en: "Week"
|
|
802
|
+
},
|
|
803
|
+
YEAR: {
|
|
804
|
+
en: "Year"
|
|
805
|
+
}
|
|
806
|
+
};
|
|
807
|
+
var currencyDisplayText = {
|
|
808
|
+
EUR: {
|
|
809
|
+
en: "\u20AC"
|
|
810
|
+
},
|
|
811
|
+
GBP: {
|
|
812
|
+
en: "\xA3"
|
|
813
|
+
},
|
|
814
|
+
USD: {
|
|
815
|
+
en: "$"
|
|
816
|
+
}
|
|
817
|
+
};
|
|
818
|
+
var employmentLevelDisplayText = {
|
|
819
|
+
DIRECTOR: {
|
|
820
|
+
en: "Director"
|
|
821
|
+
},
|
|
822
|
+
ENTRY_LEVEL: {
|
|
823
|
+
en: "Entry Level"
|
|
824
|
+
},
|
|
825
|
+
EXECUTIVE: {
|
|
826
|
+
en: "Executive"
|
|
827
|
+
},
|
|
828
|
+
EXPERIENCED: {
|
|
829
|
+
en: "Experienced"
|
|
830
|
+
},
|
|
831
|
+
INTERN: {
|
|
832
|
+
en: "Intern"
|
|
833
|
+
},
|
|
834
|
+
MANAGER: {
|
|
835
|
+
en: "Manager"
|
|
836
|
+
}
|
|
837
|
+
};
|
|
838
|
+
var jobFunctionDisplayText = {
|
|
839
|
+
CLINICAL_RESEARCH: {
|
|
840
|
+
en: "Clinical Research"
|
|
841
|
+
},
|
|
842
|
+
CUSTOMER_SUCCESS: {
|
|
843
|
+
en: "Customer Success"
|
|
844
|
+
},
|
|
845
|
+
DATA_ANALYTICS: {
|
|
846
|
+
en: "Data Analytics"
|
|
847
|
+
},
|
|
848
|
+
FINANCE_AND_AUDIT: {
|
|
849
|
+
en: "Finance and Audit"
|
|
850
|
+
},
|
|
851
|
+
MARKETING: {
|
|
852
|
+
en: "Marketing"
|
|
853
|
+
},
|
|
854
|
+
OPERATIONS: {
|
|
855
|
+
en: "Operations"
|
|
856
|
+
},
|
|
857
|
+
PEOPLE_HUMAN_RESOURCES: {
|
|
858
|
+
en: "People Human Resources"
|
|
859
|
+
},
|
|
860
|
+
PRODUCT_AND_TECH: {
|
|
861
|
+
en: "Product and Tech"
|
|
862
|
+
},
|
|
863
|
+
QUALITY_ASSURANCE_AND_OUTCOMES: {
|
|
864
|
+
en: "Quality Assurance and Outcomes"
|
|
865
|
+
},
|
|
866
|
+
SALES_AND_BUSINESS_DEVELOPMENT: {
|
|
867
|
+
en: "Sales and Business Development"
|
|
868
|
+
},
|
|
869
|
+
STRATEGY_AND_CONSULTING: {
|
|
870
|
+
en: "Strategy and Consulting"
|
|
871
|
+
}
|
|
872
|
+
};
|
|
873
|
+
var bestFitDisplayText = {
|
|
874
|
+
DENTIST: {
|
|
875
|
+
en: "Dentist"
|
|
876
|
+
},
|
|
877
|
+
DIETICIAN: {
|
|
878
|
+
en: "Dietician"
|
|
879
|
+
},
|
|
880
|
+
DOULA: {
|
|
881
|
+
en: "Doula"
|
|
882
|
+
},
|
|
883
|
+
MEDICAL_ASSISTANT: {
|
|
884
|
+
en: "Medical Assistant"
|
|
885
|
+
},
|
|
886
|
+
MIDWIFE: {
|
|
887
|
+
en: "Midwife"
|
|
888
|
+
},
|
|
889
|
+
NURSE: {
|
|
890
|
+
en: "Nurse"
|
|
891
|
+
},
|
|
892
|
+
OCCUPATIONAL_THERAPIST: {
|
|
893
|
+
en: "Occupational Therapist"
|
|
894
|
+
},
|
|
895
|
+
PHARMACIST: {
|
|
896
|
+
en: "Pharmacist"
|
|
897
|
+
},
|
|
898
|
+
PHYSICAL_THERAPIST: {
|
|
899
|
+
en: "Physical Therapist"
|
|
900
|
+
},
|
|
901
|
+
PHYSICIAN: {
|
|
902
|
+
en: "Physician"
|
|
903
|
+
},
|
|
904
|
+
PHYSICIAN_ASSISTANT: {
|
|
905
|
+
en: "Physician Assistant"
|
|
906
|
+
},
|
|
907
|
+
PSYCHOLOGIST: {
|
|
908
|
+
en: "Psychologist"
|
|
909
|
+
},
|
|
910
|
+
RADIOLOGIST: {
|
|
911
|
+
en: "Radiologist"
|
|
912
|
+
},
|
|
913
|
+
SOCIAL_WORKER: {
|
|
914
|
+
en: "Social Worker"
|
|
915
|
+
},
|
|
916
|
+
SPEECH_LANGUAGE_PATHOLOGIST: {
|
|
917
|
+
en: "Speech Language Pathologist"
|
|
918
|
+
},
|
|
919
|
+
SURGEON: {
|
|
920
|
+
en: "Surgeon"
|
|
921
|
+
}
|
|
922
|
+
};
|
|
923
|
+
var clinicalSpecialtyDisplayText = {
|
|
924
|
+
ANESTHESIOLOGY: {
|
|
925
|
+
en: "Anesthesiology"
|
|
926
|
+
},
|
|
927
|
+
CARDIOLOGY: {
|
|
928
|
+
en: "Cardiology"
|
|
929
|
+
},
|
|
930
|
+
CARDIOVASCULAR_AND_PULMONARY: {
|
|
931
|
+
en: "Cardiovascular and Pulmonary"
|
|
932
|
+
},
|
|
933
|
+
CASE_MANAGEMENT: {
|
|
934
|
+
en: "Case Management"
|
|
935
|
+
},
|
|
936
|
+
CHRONIC_PAIN: {
|
|
937
|
+
en: "Chronic Pain"
|
|
938
|
+
},
|
|
939
|
+
CLINICAL_ELECTROPHYSIOLOGY: {
|
|
940
|
+
en: "Clinical Electrophysiology"
|
|
941
|
+
},
|
|
942
|
+
CRITICAL_AND_ACUTE_CARE: {
|
|
943
|
+
en: "Critical and Acute Care"
|
|
944
|
+
},
|
|
945
|
+
DERMATOLOGY: {
|
|
946
|
+
en: "Dermatology"
|
|
947
|
+
},
|
|
948
|
+
DIALYSIS: {
|
|
949
|
+
en: "Dialysis"
|
|
950
|
+
},
|
|
951
|
+
EMERGENCY_MEDICINE: {
|
|
952
|
+
en: "Emergency Medicine"
|
|
953
|
+
},
|
|
954
|
+
ENDOCRINOLOGY: {
|
|
955
|
+
en: "Endocrinology"
|
|
956
|
+
},
|
|
957
|
+
ERGONOMICS: {
|
|
958
|
+
en: "Ergonomics"
|
|
959
|
+
},
|
|
960
|
+
FEEDING_EATING_AND_SWALLOWING: {
|
|
961
|
+
en: "Feeding, Eating, and Swallowing"
|
|
962
|
+
},
|
|
963
|
+
GASTROENTEROLOGY: {
|
|
964
|
+
en: "Gastroenterology"
|
|
965
|
+
},
|
|
966
|
+
GERIATRICS: {
|
|
967
|
+
en: "Geriatrics"
|
|
968
|
+
},
|
|
969
|
+
HAND_THERAPY: {
|
|
970
|
+
en: "Hand Therapy"
|
|
971
|
+
},
|
|
972
|
+
HEMATOLOGY: {
|
|
973
|
+
en: "Hematology"
|
|
974
|
+
},
|
|
975
|
+
HOLISTIC_MEDICINE: {
|
|
976
|
+
en: "Holistic Medicine"
|
|
977
|
+
},
|
|
978
|
+
INFORMATICS: {
|
|
979
|
+
en: "Informatics"
|
|
980
|
+
},
|
|
981
|
+
INTERNAL_MEDICINE: {
|
|
982
|
+
en: "Internal Medicine"
|
|
983
|
+
},
|
|
984
|
+
LABOR_AND_DELIVERY: {
|
|
985
|
+
en: "Labor and Delivery"
|
|
986
|
+
},
|
|
987
|
+
MANUAL_THERAPY: {
|
|
988
|
+
en: "Manual Therapy"
|
|
989
|
+
},
|
|
990
|
+
MED_SURG: {
|
|
991
|
+
en: "Medical-Surgical"
|
|
992
|
+
},
|
|
993
|
+
MENTAL_HEALTH: {
|
|
994
|
+
en: "Mental Health"
|
|
995
|
+
},
|
|
996
|
+
NEPHROLOGY: {
|
|
997
|
+
en: "Nephrology"
|
|
998
|
+
},
|
|
999
|
+
NEUROLOGY: {
|
|
1000
|
+
en: "Neurology"
|
|
1001
|
+
},
|
|
1002
|
+
ONCOLOGY: {
|
|
1003
|
+
en: "Oncology"
|
|
1004
|
+
},
|
|
1005
|
+
ORTHOPEDICS: {
|
|
1006
|
+
en: "Orthopedics"
|
|
1007
|
+
},
|
|
1008
|
+
OTOLARYNGOLOGY: {
|
|
1009
|
+
en: "Otolaryngology"
|
|
1010
|
+
},
|
|
1011
|
+
PEDIATRICS: {
|
|
1012
|
+
en: "Pediatrics"
|
|
1013
|
+
},
|
|
1014
|
+
PHYSICAL_AND_REHABILITATION_MEDICINE: {
|
|
1015
|
+
en: "Physical and Rehabilitation Medicine"
|
|
1016
|
+
},
|
|
1017
|
+
PLASTIC_SURGERY: {
|
|
1018
|
+
en: "Plastic Surgery"
|
|
1019
|
+
},
|
|
1020
|
+
PRIMARY_CARE: {
|
|
1021
|
+
en: "Primary Care"
|
|
1022
|
+
},
|
|
1023
|
+
PSYCHIATRY: {
|
|
1024
|
+
en: "Psychiatry"
|
|
1025
|
+
},
|
|
1026
|
+
PULMONOLOGY: {
|
|
1027
|
+
en: "Pulmonology"
|
|
1028
|
+
},
|
|
1029
|
+
RADIOLOGY: {
|
|
1030
|
+
en: "Radiology"
|
|
1031
|
+
},
|
|
1032
|
+
SENSORY: {
|
|
1033
|
+
en: "Sensory"
|
|
1034
|
+
},
|
|
1035
|
+
SPORTS: {
|
|
1036
|
+
en: "Sports"
|
|
1037
|
+
},
|
|
1038
|
+
SURGERY: {
|
|
1039
|
+
en: "Surgery"
|
|
1040
|
+
},
|
|
1041
|
+
TRANSPLANT_SURGERY: {
|
|
1042
|
+
en: "Transplant Surgery"
|
|
1043
|
+
},
|
|
1044
|
+
TRAUMA_MEDICINE: {
|
|
1045
|
+
en: "Trauma Medicine"
|
|
1046
|
+
},
|
|
1047
|
+
URGENT_CARE: {
|
|
1048
|
+
en: "Urgent Care"
|
|
1049
|
+
},
|
|
1050
|
+
UROLOGY: {
|
|
1051
|
+
en: "Urology"
|
|
1052
|
+
},
|
|
1053
|
+
VISION: {
|
|
1054
|
+
en: "Vision"
|
|
1055
|
+
},
|
|
1056
|
+
WOMENS_HEALTH: {
|
|
1057
|
+
en: "Women's Health"
|
|
1058
|
+
},
|
|
1059
|
+
WOUND_AND_BURN_CARE: {
|
|
1060
|
+
en: "Wound and Burn Care"
|
|
1061
|
+
},
|
|
1062
|
+
WOUND_MANAGEMENT: {
|
|
1063
|
+
en: "Wound Management"
|
|
1064
|
+
}
|
|
1065
|
+
};
|
|
1066
|
+
var shiftDisplayText = {
|
|
1067
|
+
TEN_HOUR: {
|
|
1068
|
+
en: "10 Hour"
|
|
1069
|
+
},
|
|
1070
|
+
TWELVE_HOUR: {
|
|
1071
|
+
en: "12 Hour"
|
|
1072
|
+
},
|
|
1073
|
+
EIGHT_HOUR: {
|
|
1074
|
+
en: "8 Hour"
|
|
1075
|
+
},
|
|
1076
|
+
DAY: {
|
|
1077
|
+
en: "Day"
|
|
1078
|
+
},
|
|
1079
|
+
EVENING: {
|
|
1080
|
+
en: "Evening"
|
|
1081
|
+
},
|
|
1082
|
+
FLEXIBLE: {
|
|
1083
|
+
en: "Flexible"
|
|
1084
|
+
},
|
|
1085
|
+
MID_SHIFT: {
|
|
1086
|
+
en: "Mid Shift"
|
|
1087
|
+
},
|
|
1088
|
+
MONDAY_TO_FRIDAY: {
|
|
1089
|
+
en: "Monday to Friday"
|
|
1090
|
+
},
|
|
1091
|
+
NIGHT: {
|
|
1092
|
+
en: "Night"
|
|
1093
|
+
},
|
|
1094
|
+
ON_CALL: {
|
|
1095
|
+
en: "On Call"
|
|
1096
|
+
},
|
|
1097
|
+
WEEKENDS: {
|
|
1098
|
+
en: "Weekends"
|
|
1099
|
+
}
|
|
1100
|
+
};
|
|
1101
|
+
var clinicalSettingDisplayText = {
|
|
1102
|
+
ACUTE_CARE: {
|
|
1103
|
+
en: "Acute Care"
|
|
1104
|
+
},
|
|
1105
|
+
AMBULATORY_SURGERY_CENTER: {
|
|
1106
|
+
en: "Ambulatory Surgery Center"
|
|
1107
|
+
},
|
|
1108
|
+
CLINIC: {
|
|
1109
|
+
en: "Clinic"
|
|
1110
|
+
},
|
|
1111
|
+
HOME_HEALTH: {
|
|
1112
|
+
en: "Home Health"
|
|
1113
|
+
},
|
|
1114
|
+
HOSPITAL: {
|
|
1115
|
+
en: "Hospital"
|
|
1116
|
+
},
|
|
1117
|
+
INPATIENT: {
|
|
1118
|
+
en: "Inpatient"
|
|
1119
|
+
},
|
|
1120
|
+
LONG_TERM_CARE: {
|
|
1121
|
+
en: "Long Term Care"
|
|
1122
|
+
},
|
|
1123
|
+
MED_SPA: {
|
|
1124
|
+
en: "Med Spa"
|
|
1125
|
+
},
|
|
1126
|
+
NURSING_HOME: {
|
|
1127
|
+
en: "Nursing Home"
|
|
1128
|
+
},
|
|
1129
|
+
OFFICE: {
|
|
1130
|
+
en: "Office"
|
|
1131
|
+
},
|
|
1132
|
+
OUTPATIENT: {
|
|
1133
|
+
en: "Outpatient"
|
|
1134
|
+
},
|
|
1135
|
+
PRIVATE_PRACTICE: {
|
|
1136
|
+
en: "Private Practice"
|
|
1137
|
+
},
|
|
1138
|
+
REHAB_CENTER: {
|
|
1139
|
+
en: "Rehab Center"
|
|
1140
|
+
},
|
|
1141
|
+
SCHOOL: {
|
|
1142
|
+
en: "School"
|
|
1143
|
+
},
|
|
1144
|
+
SKILLED_NURSING_FACILITY: {
|
|
1145
|
+
en: "Skilled Nursing Facility"
|
|
1146
|
+
}
|
|
1147
|
+
};
|
|
1148
|
+
var defaultMappings = {
|
|
1149
|
+
employmentType: employmentTypeDisplayText,
|
|
1150
|
+
unitText: unitTextDisplayText,
|
|
1151
|
+
currency: currencyDisplayText,
|
|
1152
|
+
employmentLevel: employmentLevelDisplayText,
|
|
1153
|
+
jobFunction: jobFunctionDisplayText,
|
|
1154
|
+
bestFit: bestFitDisplayText,
|
|
1155
|
+
clinicalSpecialty: clinicalSpecialtyDisplayText,
|
|
1156
|
+
clinicalSetting: clinicalSettingDisplayText,
|
|
1157
|
+
shift: shiftDisplayText
|
|
1158
|
+
};
|
|
1159
|
+
|
|
1160
|
+
// src/types/displayText.errors.tsx
|
|
1161
|
+
var DisplayTextScopeNotFoundError = class extends Error {
|
|
1162
|
+
constructor(scope) {
|
|
1163
|
+
super(`No display text mapping found for scope: ${scope}`);
|
|
1164
|
+
this.name = "DisplayTextScopeNotFoundError";
|
|
1165
|
+
}
|
|
1166
|
+
};
|
|
1167
|
+
var DisplayTextValueNotFoundError = class extends Error {
|
|
1168
|
+
constructor(value, scope) {
|
|
1169
|
+
super(`No display text found for value: '${value}' in scope: '${scope}'`);
|
|
1170
|
+
this.name = "DisplayTextValueNotFoundError";
|
|
1171
|
+
}
|
|
1172
|
+
};
|
|
1173
|
+
|
|
1174
|
+
// src/services/displayText.tsx
|
|
1175
|
+
var DisplayTextService = class {
|
|
1176
|
+
constructor(customMappings) {
|
|
1177
|
+
this.defaultLanguage = "en";
|
|
1178
|
+
this.mappings = {
|
|
1179
|
+
...defaultMappings,
|
|
1180
|
+
// Use all pre-defined mappings as defaults
|
|
1181
|
+
...customMappings
|
|
1182
|
+
// Override with any custom mappings if provided
|
|
1183
|
+
};
|
|
1184
|
+
}
|
|
1185
|
+
async getDisplayText(scope, value, language = this.defaultLanguage) {
|
|
1186
|
+
const scopeMapping = this.mappings[scope];
|
|
1187
|
+
if (!scopeMapping) {
|
|
1188
|
+
throw new DisplayTextScopeNotFoundError(scope);
|
|
1189
|
+
}
|
|
1190
|
+
if (Array.isArray(value)) {
|
|
1191
|
+
const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
|
|
1192
|
+
const displayTexts2 = await Promise.all(displayTextPromises);
|
|
1193
|
+
return displayTexts2.filter((v) => !!v).join(", ");
|
|
1194
|
+
}
|
|
1195
|
+
const displayTexts = scopeMapping[value];
|
|
1196
|
+
if (!displayTexts) {
|
|
1197
|
+
throw new DisplayTextValueNotFoundError(value, scope);
|
|
1198
|
+
}
|
|
1199
|
+
return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
|
|
1200
|
+
}
|
|
1201
|
+
};
|
|
1202
|
+
|
|
1203
|
+
// src/hooks/useDisplayText.ts
|
|
1204
|
+
var useDisplayText = (scope, value) => {
|
|
1205
|
+
const [displayText, setDisplayText] = (0, import_react6.useState)("");
|
|
1206
|
+
const displayService = (0, import_react6.useMemo)(() => new DisplayTextService(), []);
|
|
1207
|
+
(0, import_react6.useEffect)(() => {
|
|
1208
|
+
if (!displayService || !value) {
|
|
1209
|
+
setDisplayText("");
|
|
1210
|
+
return;
|
|
1211
|
+
}
|
|
1212
|
+
void (async () => {
|
|
1213
|
+
try {
|
|
1214
|
+
const result = await displayService.getDisplayText(scope, value);
|
|
1215
|
+
if (typeof result === "string") {
|
|
1216
|
+
setDisplayText(result);
|
|
1217
|
+
} else {
|
|
1218
|
+
console.error("Expected a string result, but got:", result);
|
|
1219
|
+
}
|
|
1220
|
+
} catch (error) {
|
|
1221
|
+
if (error instanceof DisplayTextValueNotFoundError) {
|
|
1222
|
+
console.warn("Display text value not found:", value);
|
|
1223
|
+
setDisplayText(String(value));
|
|
1224
|
+
} else {
|
|
1225
|
+
console.error("Unexpected error formatting text:", error);
|
|
1226
|
+
setDisplayText(String(value));
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
})();
|
|
1230
|
+
}, [scope, value, displayService]);
|
|
1231
|
+
return displayText;
|
|
1232
|
+
};
|
|
1233
|
+
|
|
1234
|
+
// src/lib/locations.ts
|
|
1235
|
+
function formattedAddress(address) {
|
|
1236
|
+
const { addressLocality, addressRegion, addressCountry } = address;
|
|
1237
|
+
if (addressLocality && addressRegion) return `${addressLocality}, ${addressRegion}`;
|
|
1238
|
+
if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry}`;
|
|
1239
|
+
if (addressRegion) return addressRegion;
|
|
1240
|
+
if (addressCountry) return addressCountry;
|
|
1241
|
+
return null;
|
|
1242
|
+
}
|
|
1243
|
+
function formattedJobLocation(job) {
|
|
1244
|
+
const address = job.jobLocation && formattedAddress(job.jobLocation);
|
|
1245
|
+
const remote = job.isRemote ? "Remote" : "";
|
|
1246
|
+
return [address, remote].filter(Boolean).join(" | ");
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
// src/components/jobPost/JobPost.tsx
|
|
1250
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1251
|
+
function JobPost({
|
|
1252
|
+
job,
|
|
1253
|
+
bannerSrc,
|
|
1254
|
+
avatarSrc,
|
|
1255
|
+
standalone,
|
|
1256
|
+
fallbackHref,
|
|
1257
|
+
actions
|
|
1258
|
+
}) {
|
|
1259
|
+
const formattedEmploymentType = useDisplayText("employmentType", job.employmentType);
|
|
1260
|
+
const formattedEmploymentLevel = useDisplayText("employmentLevel", job.employmentLevel);
|
|
1261
|
+
const formattedJobFunction = useDisplayText("jobFunction", job.jobFunction);
|
|
1262
|
+
const formattedLocation = formattedJobLocation(job);
|
|
1263
|
+
const formattedSalary = salaryRange(job.estimatedSalary);
|
|
1264
|
+
const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted), {
|
|
1265
|
+
addSuffix: true
|
|
1266
|
+
});
|
|
1267
|
+
const tags = [
|
|
1268
|
+
!!formattedSalary && {
|
|
1269
|
+
icon: "banknote",
|
|
1270
|
+
name: "salary",
|
|
1271
|
+
label: `${formattedSalary} a year`
|
|
1272
|
+
},
|
|
1273
|
+
!!formattedEmploymentType && {
|
|
1274
|
+
icon: "briefcase-business",
|
|
1275
|
+
name: "employmentType",
|
|
1276
|
+
label: formattedEmploymentType
|
|
1277
|
+
},
|
|
1278
|
+
!!formattedEmploymentLevel && {
|
|
1279
|
+
icon: "circle-user",
|
|
1280
|
+
name: "level",
|
|
1281
|
+
label: formattedEmploymentLevel
|
|
1282
|
+
},
|
|
1283
|
+
!!formattedJobFunction && {
|
|
1284
|
+
icon: "briefcase-business",
|
|
1285
|
+
name: "jobFunction",
|
|
1286
|
+
label: formattedJobFunction
|
|
1287
|
+
},
|
|
1288
|
+
!!formattedLocation && {
|
|
1289
|
+
icon: "map-pin",
|
|
1290
|
+
name: "location",
|
|
1291
|
+
label: formattedLocation
|
|
1292
|
+
}
|
|
1293
|
+
].filter((t) => !!t);
|
|
1294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
|
|
1295
|
+
"div",
|
|
1296
|
+
{
|
|
1297
|
+
className: cn(
|
|
1298
|
+
"flex flex-col gap-10 pb-4",
|
|
1299
|
+
!standalone && "border-1 rounded-3xl border-grey-5"
|
|
1300
|
+
),
|
|
1301
|
+
children: [
|
|
1302
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1303
|
+
JobHeader,
|
|
1304
|
+
{
|
|
1305
|
+
title: job.title,
|
|
1306
|
+
bannerSrc,
|
|
1307
|
+
avatarName: job.hiringOrganization?.companyName,
|
|
1308
|
+
subtitles: [job.hiringOrganization?.companyName ?? "", `Posted ${formattedDate}`],
|
|
1309
|
+
actions,
|
|
1310
|
+
standalone,
|
|
1311
|
+
backFallbackHref: fallbackHref,
|
|
1312
|
+
tags
|
|
1313
|
+
}
|
|
1314
|
+
),
|
|
1315
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex flex-col gap-8 px-6", children: [
|
|
1316
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(JobDescription, { description: job.description }),
|
|
1317
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1318
|
+
CompanyTake,
|
|
1319
|
+
{
|
|
1320
|
+
avatarSrc,
|
|
1321
|
+
content: job.hiringOrganization?.companyNDG?.companyNDGTake
|
|
1322
|
+
}
|
|
1323
|
+
),
|
|
1324
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1325
|
+
CompanyInformation,
|
|
1326
|
+
{
|
|
1327
|
+
name: job.hiringOrganization?.companyName ?? "",
|
|
1328
|
+
how: job.hiringOrganization?.companyPhilosophy?.companyHow,
|
|
1329
|
+
mission: job.hiringOrganization?.companyPhilosophy?.mission,
|
|
1330
|
+
wow: job.hiringOrganization?.companyNDG?.companyWow,
|
|
1331
|
+
website: job.hiringOrganization?.companyWebsite
|
|
1332
|
+
}
|
|
1333
|
+
),
|
|
1334
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
1335
|
+
CompanyBenefits,
|
|
1336
|
+
{
|
|
1337
|
+
benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.description).filter((d) => d !== void 0)
|
|
1338
|
+
}
|
|
1339
|
+
)
|
|
1340
|
+
] })
|
|
1341
|
+
]
|
|
1342
|
+
}
|
|
1343
|
+
);
|
|
1344
|
+
}
|
|
1345
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1346
|
+
0 && (module.exports = {
|
|
1347
|
+
JobPost
|
|
1348
|
+
});
|
|
1349
|
+
//# sourceMappingURL=JobPost.cjs.map
|