@next-degree/pickle-shared-js 0.4.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.
Files changed (247) hide show
  1. package/dist/company_service_latest-Dwf4Fkjr.d.cts +2641 -0
  2. package/dist/company_service_latest-Dwf4Fkjr.d.ts +2641 -0
  3. package/dist/components/buttons/BackButton.cjs +161 -0
  4. package/dist/components/buttons/BackButton.cjs.map +1 -0
  5. package/dist/components/buttons/BackButton.d.cts +9 -0
  6. package/dist/components/buttons/BackButton.d.ts +9 -0
  7. package/dist/components/buttons/BackButton.js +137 -0
  8. package/dist/components/buttons/BackButton.js.map +1 -0
  9. package/dist/components/company/CompanyBenefits.cjs +38 -0
  10. package/dist/components/company/CompanyBenefits.cjs.map +1 -0
  11. package/dist/components/company/CompanyBenefits.d.cts +8 -0
  12. package/dist/components/company/CompanyBenefits.d.ts +8 -0
  13. package/dist/components/company/CompanyBenefits.js +13 -0
  14. package/dist/components/company/CompanyBenefits.js.map +1 -0
  15. package/dist/components/company/CompanyInformation.cjs +112 -0
  16. package/dist/components/company/CompanyInformation.cjs.map +1 -0
  17. package/dist/components/company/CompanyInformation.d.cts +12 -0
  18. package/dist/components/company/CompanyInformation.d.ts +12 -0
  19. package/dist/components/company/CompanyInformation.js +75 -0
  20. package/dist/components/company/CompanyInformation.js.map +1 -0
  21. package/dist/components/company/CompanyTake.cjs +140 -0
  22. package/dist/components/company/CompanyTake.cjs.map +1 -0
  23. package/dist/components/company/CompanyTake.d.cts +9 -0
  24. package/dist/components/company/CompanyTake.d.ts +9 -0
  25. package/dist/components/company/CompanyTake.js +104 -0
  26. package/dist/components/company/CompanyTake.js.map +1 -0
  27. package/dist/components/jobPost/JobDescription.cjs +205 -0
  28. package/dist/components/jobPost/JobDescription.cjs.map +1 -0
  29. package/dist/components/jobPost/JobDescription.d.cts +8 -0
  30. package/dist/components/jobPost/JobDescription.d.ts +8 -0
  31. package/dist/components/jobPost/JobDescription.js +168 -0
  32. package/dist/components/jobPost/JobDescription.js.map +1 -0
  33. package/dist/components/jobPost/JobHeader.cjs +436 -0
  34. package/dist/components/jobPost/JobHeader.cjs.map +1 -0
  35. package/dist/components/jobPost/JobHeader.d.cts +26 -0
  36. package/dist/components/jobPost/JobHeader.d.ts +26 -0
  37. package/dist/components/jobPost/JobHeader.js +423 -0
  38. package/dist/components/jobPost/JobHeader.js.map +1 -0
  39. package/dist/components/jobPost/JobPost.cjs +1349 -0
  40. package/dist/components/jobPost/JobPost.cjs.map +1 -0
  41. package/dist/components/jobPost/JobPost.d.cts +16 -0
  42. package/dist/components/jobPost/JobPost.d.ts +16 -0
  43. package/dist/components/jobPost/JobPost.js +1336 -0
  44. package/dist/components/jobPost/JobPost.js.map +1 -0
  45. package/dist/components/primitives/avatar.cjs +88 -0
  46. package/dist/components/primitives/avatar.cjs.map +1 -0
  47. package/dist/components/primitives/avatar.d.cts +13 -0
  48. package/dist/components/primitives/avatar.d.ts +13 -0
  49. package/dist/components/primitives/avatar.js +52 -0
  50. package/dist/components/primitives/avatar.js.map +1 -0
  51. package/dist/components/primitives/command.d.cts +3 -3
  52. package/dist/components/primitives/command.d.ts +3 -3
  53. package/dist/components/ui/Avatar.cjs +117 -0
  54. package/dist/components/ui/Avatar.cjs.map +1 -0
  55. package/dist/components/ui/Avatar.d.cts +16 -0
  56. package/dist/components/ui/Avatar.d.ts +16 -0
  57. package/dist/components/ui/Avatar.js +79 -0
  58. package/dist/components/ui/Avatar.js.map +1 -0
  59. package/dist/components/ui/Icon.cjs +114 -0
  60. package/dist/components/ui/Icon.cjs.map +1 -0
  61. package/dist/components/ui/Icon.d.cts +15 -0
  62. package/dist/components/ui/Icon.d.ts +15 -0
  63. package/dist/components/ui/Icon.js +89 -0
  64. package/dist/components/ui/Icon.js.map +1 -0
  65. package/dist/{app/layout.cjs → components/ui/LinkButton.cjs} +25 -35
  66. package/dist/components/ui/LinkButton.cjs.map +1 -0
  67. package/dist/components/ui/LinkButton.d.cts +29 -0
  68. package/dist/components/ui/LinkButton.d.ts +29 -0
  69. package/dist/components/ui/LinkButton.js +26 -0
  70. package/dist/components/ui/LinkButton.js.map +1 -0
  71. package/dist/components/ui/MapComponent.cjs +54 -0
  72. package/dist/components/ui/MapComponent.cjs.map +1 -0
  73. package/dist/components/ui/MapComponent.d.cts +15 -0
  74. package/dist/components/ui/MapComponent.d.ts +15 -0
  75. package/dist/components/ui/MapComponent.js +34 -0
  76. package/dist/components/ui/MapComponent.js.map +1 -0
  77. package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
  78. package/dist/components/ui/PlacesQueryInput.js.map +1 -1
  79. package/dist/components/ui/ReadMore.cjs +194 -0
  80. package/dist/components/ui/ReadMore.cjs.map +1 -0
  81. package/dist/components/ui/ReadMore.d.cts +9 -0
  82. package/dist/components/ui/ReadMore.d.ts +9 -0
  83. package/dist/components/ui/ReadMore.js +160 -0
  84. package/dist/components/ui/ReadMore.js.map +1 -0
  85. package/dist/contexts/WindowHistoryProvider.cjs +48 -0
  86. package/dist/contexts/WindowHistoryProvider.cjs.map +1 -0
  87. package/dist/contexts/WindowHistoryProvider.d.cts +11 -0
  88. package/dist/contexts/WindowHistoryProvider.d.ts +11 -0
  89. package/dist/contexts/WindowHistoryProvider.js +23 -0
  90. package/dist/contexts/WindowHistoryProvider.js.map +1 -0
  91. package/dist/displayText-C1qKqRYc.d.cts +48 -0
  92. package/dist/displayText-D-OzRlJf.d.ts +48 -0
  93. package/dist/hooks/useDisplayText.cjs +502 -0
  94. package/dist/hooks/useDisplayText.cjs.map +1 -0
  95. package/dist/hooks/useDisplayText.d.cts +8 -0
  96. package/dist/hooks/useDisplayText.d.ts +8 -0
  97. package/dist/hooks/useDisplayText.js +477 -0
  98. package/dist/hooks/useDisplayText.js.map +1 -0
  99. package/dist/hooks/useWindowHistory.cjs +46 -0
  100. package/dist/hooks/useWindowHistory.cjs.map +1 -0
  101. package/dist/hooks/useWindowHistory.d.cts +7 -0
  102. package/dist/hooks/useWindowHistory.d.ts +7 -0
  103. package/dist/hooks/useWindowHistory.js +21 -0
  104. package/dist/hooks/useWindowHistory.js.map +1 -0
  105. package/dist/index.cjs +1564 -72
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.d.cts +23 -0
  108. package/dist/index.d.ts +23 -0
  109. package/dist/index.js +1557 -57
  110. package/dist/index.js.map +1 -1
  111. package/dist/job_posting_service_latest-D0AsiA4a.d.cts +2789 -0
  112. package/dist/job_posting_service_latest-D0AsiA4a.d.ts +2789 -0
  113. package/dist/lib/google.cjs +44 -2
  114. package/dist/lib/google.cjs.map +1 -1
  115. package/dist/lib/google.d.cts +22 -1
  116. package/dist/lib/google.d.ts +22 -1
  117. package/dist/lib/google.js +40 -1
  118. package/dist/lib/google.js.map +1 -1
  119. package/dist/lib/icons.cjs +53 -0
  120. package/dist/lib/icons.cjs.map +1 -0
  121. package/dist/lib/icons.d.cts +27 -0
  122. package/dist/lib/icons.d.ts +27 -0
  123. package/dist/lib/icons.js +49 -0
  124. package/dist/lib/icons.js.map +1 -0
  125. package/dist/lib/locations.cjs +45 -0
  126. package/dist/lib/locations.cjs.map +1 -0
  127. package/dist/lib/locations.d.cts +8 -0
  128. package/dist/lib/locations.d.ts +8 -0
  129. package/dist/lib/locations.js +19 -0
  130. package/dist/lib/locations.js.map +1 -0
  131. package/dist/lib/mappings.cjs +443 -0
  132. package/dist/lib/mappings.cjs.map +1 -0
  133. package/dist/lib/mappings.d.cts +4 -0
  134. package/dist/lib/mappings.d.ts +4 -0
  135. package/dist/lib/mappings.js +409 -0
  136. package/dist/lib/mappings.js.map +1 -0
  137. package/dist/lib/salaryRange.cjs +90 -0
  138. package/dist/lib/salaryRange.cjs.map +1 -0
  139. package/dist/lib/salaryRange.d.cts +6 -0
  140. package/dist/lib/salaryRange.d.ts +6 -0
  141. package/dist/lib/salaryRange.js +63 -0
  142. package/dist/lib/salaryRange.js.map +1 -0
  143. package/dist/services/displayText.cjs +470 -0
  144. package/dist/services/displayText.cjs.map +1 -0
  145. package/dist/services/displayText.d.cts +4 -0
  146. package/dist/services/displayText.d.ts +4 -0
  147. package/dist/services/displayText.js +443 -0
  148. package/dist/services/displayText.js.map +1 -0
  149. package/dist/shared_pickle_output_latest-DX6GQoVn.d.cts +194 -0
  150. package/dist/shared_pickle_output_latest-DX6GQoVn.d.ts +194 -0
  151. package/dist/styles/globals.css +829 -0
  152. package/dist/styles/globals.css.map +1 -1
  153. package/dist/types/data/company_service_latest.cjs +228 -0
  154. package/dist/types/data/company_service_latest.cjs.map +1 -0
  155. package/dist/types/data/company_service_latest.d.cts +2 -0
  156. package/dist/types/data/company_service_latest.d.ts +2 -0
  157. package/dist/types/data/company_service_latest.js +186 -0
  158. package/dist/types/data/company_service_latest.js.map +1 -0
  159. package/dist/types/data/job_posting_service_latest.cjs +266 -0
  160. package/dist/types/data/job_posting_service_latest.cjs.map +1 -0
  161. package/dist/types/data/job_posting_service_latest.d.cts +2 -0
  162. package/dist/types/data/job_posting_service_latest.d.ts +2 -0
  163. package/dist/types/data/job_posting_service_latest.js +230 -0
  164. package/dist/types/data/job_posting_service_latest.js.map +1 -0
  165. package/dist/types/data/shared_pickle_output_latest.cjs +82 -0
  166. package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -0
  167. package/dist/types/data/shared_pickle_output_latest.d.cts +2 -0
  168. package/dist/types/data/shared_pickle_output_latest.d.ts +2 -0
  169. package/dist/types/data/shared_pickle_output_latest.js +50 -0
  170. package/dist/types/data/shared_pickle_output_latest.js.map +1 -0
  171. package/dist/types/displayText.errors.cjs +44 -0
  172. package/dist/types/displayText.errors.cjs.map +1 -0
  173. package/dist/types/displayText.errors.d.cts +8 -0
  174. package/dist/types/displayText.errors.d.ts +8 -0
  175. package/dist/types/displayText.errors.js +18 -0
  176. package/dist/types/displayText.errors.js.map +1 -0
  177. package/package.json +20 -7
  178. package/dist/AmbitBold-3SZZPYLH.otf +0 -0
  179. package/dist/AmbitBoldItalic-JSHFTN4A.otf +0 -0
  180. package/dist/AmbitRegular-MB5U7O3L.otf +0 -0
  181. package/dist/app/layout.cjs.map +0 -1
  182. package/dist/app/layout.css +0 -1411
  183. package/dist/app/layout.css.map +0 -1
  184. package/dist/app/layout.d.cts +0 -11
  185. package/dist/app/layout.d.ts +0 -11
  186. package/dist/app/layout.js +0 -36
  187. package/dist/app/layout.js.map +0 -1
  188. package/dist/app/page.cjs +0 -1517
  189. package/dist/app/page.cjs.map +0 -1
  190. package/dist/app/page.d.cts +0 -5
  191. package/dist/app/page.d.ts +0 -5
  192. package/dist/app/page.js +0 -1491
  193. package/dist/app/page.js.map +0 -1
  194. package/dist/assets/fonts/AmbitBold.cjs +0 -3
  195. package/dist/assets/fonts/AmbitBold.cjs.map +0 -1
  196. package/dist/assets/fonts/AmbitBold.d.cts +0 -2
  197. package/dist/assets/fonts/AmbitBold.d.ts +0 -2
  198. package/dist/assets/fonts/AmbitBold.js +0 -6
  199. package/dist/assets/fonts/AmbitBold.js.map +0 -1
  200. package/dist/assets/fonts/AmbitBoldItalic.cjs +0 -3
  201. package/dist/assets/fonts/AmbitBoldItalic.cjs.map +0 -1
  202. package/dist/assets/fonts/AmbitBoldItalic.d.cts +0 -2
  203. package/dist/assets/fonts/AmbitBoldItalic.d.ts +0 -2
  204. package/dist/assets/fonts/AmbitBoldItalic.js +0 -6
  205. package/dist/assets/fonts/AmbitBoldItalic.js.map +0 -1
  206. package/dist/assets/fonts/AmbitRegular.cjs +0 -3
  207. package/dist/assets/fonts/AmbitRegular.cjs.map +0 -1
  208. package/dist/assets/fonts/AmbitRegular.d.cts +0 -2
  209. package/dist/assets/fonts/AmbitRegular.d.ts +0 -2
  210. package/dist/assets/fonts/AmbitRegular.js +0 -6
  211. package/dist/assets/fonts/AmbitRegular.js.map +0 -1
  212. package/dist/components/demos/ComboboxDemo.cjs +0 -814
  213. package/dist/components/demos/ComboboxDemo.cjs.map +0 -1
  214. package/dist/components/demos/ComboboxDemo.d.cts +0 -5
  215. package/dist/components/demos/ComboboxDemo.d.ts +0 -5
  216. package/dist/components/demos/ComboboxDemo.js +0 -786
  217. package/dist/components/demos/ComboboxDemo.js.map +0 -1
  218. package/dist/components/demos/CounterDemo.cjs +0 -270
  219. package/dist/components/demos/CounterDemo.cjs.map +0 -1
  220. package/dist/components/demos/CounterDemo.d.cts +0 -5
  221. package/dist/components/demos/CounterDemo.d.ts +0 -5
  222. package/dist/components/demos/CounterDemo.js +0 -238
  223. package/dist/components/demos/CounterDemo.js.map +0 -1
  224. package/dist/components/demos/InputDemo.cjs +0 -225
  225. package/dist/components/demos/InputDemo.cjs.map +0 -1
  226. package/dist/components/demos/InputDemo.d.cts +0 -5
  227. package/dist/components/demos/InputDemo.d.ts +0 -5
  228. package/dist/components/demos/InputDemo.js +0 -192
  229. package/dist/components/demos/InputDemo.js.map +0 -1
  230. package/dist/components/demos/PlacesQueryInputDemo.cjs +0 -341
  231. package/dist/components/demos/PlacesQueryInputDemo.cjs.map +0 -1
  232. package/dist/components/demos/PlacesQueryInputDemo.d.cts +0 -5
  233. package/dist/components/demos/PlacesQueryInputDemo.d.ts +0 -5
  234. package/dist/components/demos/PlacesQueryInputDemo.js +0 -309
  235. package/dist/components/demos/PlacesQueryInputDemo.js.map +0 -1
  236. package/dist/components/demos/SelectDemo.cjs +0 -365
  237. package/dist/components/demos/SelectDemo.cjs.map +0 -1
  238. package/dist/components/demos/SelectDemo.d.cts +0 -5
  239. package/dist/components/demos/SelectDemo.d.ts +0 -5
  240. package/dist/components/demos/SelectDemo.js +0 -337
  241. package/dist/components/demos/SelectDemo.js.map +0 -1
  242. package/dist/components/demos/index.cjs +0 -1510
  243. package/dist/components/demos/index.cjs.map +0 -1
  244. package/dist/components/demos/index.d.cts +0 -5
  245. package/dist/components/demos/index.d.ts +0 -5
  246. package/dist/components/demos/index.js +0 -1484
  247. package/dist/components/demos/index.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
1
7
  // src/components/ui/Select.tsx
2
8
  import * as SelectPrimitive from "@radix-ui/react-select";
3
9
  import { CheckIcon, ChevronDownIcon, X } from "lucide-react";
@@ -492,6 +498,26 @@ var inputVariants = cva2(
492
498
  );
493
499
  var Input_default = Input;
494
500
 
501
+ // src/components/ui/MapComponent.tsx
502
+ import { APIProvider, Map, AdvancedMarker, Pin } from "@vis.gl/react-google-maps";
503
+ import { jsx as jsx10 } from "react/jsx-runtime";
504
+ function MapComponent({ apiKey, mapId, position, className, zoom = 15 }) {
505
+ const defaultPosition = { lat: 40.715021, lng: -74.00459 };
506
+ const defaultZoom = 11;
507
+ return /* @__PURE__ */ jsx10(APIProvider, { apiKey, children: /* @__PURE__ */ jsx10("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ jsx10(
508
+ Map,
509
+ {
510
+ zoom: position ? zoom : defaultZoom,
511
+ center: position || defaultPosition,
512
+ mapId,
513
+ keyboardShortcuts: false,
514
+ disableDefaultUI: true,
515
+ children: position && /* @__PURE__ */ jsx10(AdvancedMarker, { position, children: /* @__PURE__ */ jsx10(Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
516
+ }
517
+ ) }) });
518
+ }
519
+ var MapComponent_default = MapComponent;
520
+
495
521
  // src/components/primitives/command.tsx
496
522
  import { Command as CommandPrimitive } from "cmdk";
497
523
  import { Search } from "lucide-react";
@@ -501,9 +527,9 @@ import * as React4 from "react";
501
527
  import * as DialogPrimitive from "@radix-ui/react-dialog";
502
528
  import { X as X3 } from "lucide-react";
503
529
  import * as React3 from "react";
504
- import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
530
+ import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
505
531
  var DialogPortal = DialogPrimitive.Portal;
506
- var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
532
+ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
507
533
  DialogPrimitive.Overlay,
508
534
  {
509
535
  ref,
@@ -516,7 +542,7 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
516
542
  ));
517
543
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
518
544
  var DialogContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs6(DialogPortal, { children: [
519
- /* @__PURE__ */ jsx10(DialogOverlay, {}),
545
+ /* @__PURE__ */ jsx11(DialogOverlay, {}),
520
546
  /* @__PURE__ */ jsxs6(
521
547
  DialogPrimitive.Content,
522
548
  {
@@ -529,17 +555,17 @@ var DialogContent = React3.forwardRef(({ className, children, ...props }, ref) =
529
555
  children: [
530
556
  children,
531
557
  /* @__PURE__ */ jsxs6(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-500 dark:ring-offset-neutral-950 dark:focus:ring-neutral-300 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-400", children: [
532
- /* @__PURE__ */ jsx10(X3, { className: "h-4 w-4" }),
533
- /* @__PURE__ */ jsx10("span", { className: "sr-only", children: "Close" })
558
+ /* @__PURE__ */ jsx11(X3, { className: "h-4 w-4" }),
559
+ /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Close" })
534
560
  ] })
535
561
  ]
536
562
  }
537
563
  )
538
564
  ] }));
539
565
  DialogContent.displayName = DialogPrimitive.Content.displayName;
540
- var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx10("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
566
+ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx11("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
541
567
  DialogHeader.displayName = "DialogHeader";
542
- var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx10(
568
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx11(
543
569
  "div",
544
570
  {
545
571
  className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
@@ -547,7 +573,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx10(
547
573
  }
548
574
  );
549
575
  DialogFooter.displayName = "DialogFooter";
550
- var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
576
+ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
551
577
  DialogPrimitive.Title,
552
578
  {
553
579
  ref,
@@ -556,7 +582,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
556
582
  }
557
583
  ));
558
584
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
559
- var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
585
+ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
560
586
  DialogPrimitive.Description,
561
587
  {
562
588
  ref,
@@ -567,8 +593,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
567
593
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
568
594
 
569
595
  // src/components/primitives/command.tsx
570
- import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
571
- var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
596
+ import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
597
+ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
572
598
  CommandPrimitive,
573
599
  {
574
600
  ref,
@@ -581,8 +607,8 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
581
607
  ));
582
608
  Command.displayName = CommandPrimitive.displayName;
583
609
  var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs7("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
584
- /* @__PURE__ */ jsx11(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
585
- /* @__PURE__ */ jsx11(
610
+ /* @__PURE__ */ jsx12(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
611
+ /* @__PURE__ */ jsx12(
586
612
  CommandPrimitive.Input,
587
613
  {
588
614
  ref,
@@ -595,7 +621,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
595
621
  )
596
622
  ] }));
597
623
  CommandInput.displayName = CommandPrimitive.Input.displayName;
598
- var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
624
+ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
599
625
  CommandPrimitive.List,
600
626
  {
601
627
  ref,
@@ -604,9 +630,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
604
630
  }
605
631
  ));
606
632
  CommandList.displayName = CommandPrimitive.List.displayName;
607
- var CommandEmpty = React4.forwardRef((props, ref) => /* @__PURE__ */ jsx11(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
633
+ var CommandEmpty = React4.forwardRef((props, ref) => /* @__PURE__ */ jsx12(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
608
634
  CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
609
- var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
635
+ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
610
636
  CommandPrimitive.Group,
611
637
  {
612
638
  ref,
@@ -618,7 +644,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
618
644
  }
619
645
  ));
620
646
  CommandGroup.displayName = CommandPrimitive.Group.displayName;
621
- var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
647
+ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
622
648
  CommandPrimitive.Separator,
623
649
  {
624
650
  ref,
@@ -627,7 +653,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
627
653
  }
628
654
  ));
629
655
  CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
630
- var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
656
+ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
631
657
  CommandPrimitive.Item,
632
658
  {
633
659
  ref,
@@ -640,7 +666,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
640
666
  ));
641
667
  CommandItem.displayName = CommandPrimitive.Item.displayName;
642
668
  var CommandShortcut = ({ className, ...props }) => {
643
- return /* @__PURE__ */ jsx11(
669
+ return /* @__PURE__ */ jsx12(
644
670
  "span",
645
671
  {
646
672
  className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
@@ -663,11 +689,47 @@ var autocomplete = async (input, key) => {
663
689
  console.error(error);
664
690
  }
665
691
  };
692
+ var fetchLocation = async (place, key) => {
693
+ try {
694
+ if (place.place_id) {
695
+ const placeDetails = await getPlaceDetails(place.place_id, key);
696
+ if (placeDetails) return placeDetails;
697
+ }
698
+ if (place.address) {
699
+ const result = await geocode(place.address, key);
700
+ const firstAddress = result?.[0];
701
+ return firstAddress;
702
+ }
703
+ return void 0;
704
+ } catch (error) {
705
+ console.error("Error fetching location:", error);
706
+ }
707
+ };
708
+ var getPlaceDetails = async (place_id, key) => {
709
+ try {
710
+ const response = await client.placeDetails({
711
+ params: { place_id, key }
712
+ });
713
+ return response.data.result;
714
+ } catch (error) {
715
+ console.error(error);
716
+ }
717
+ };
718
+ var geocode = async (address, key) => {
719
+ try {
720
+ const response = await client.geocode({
721
+ params: { address, key }
722
+ });
723
+ return response.data.results;
724
+ } catch (error) {
725
+ console.error(error);
726
+ }
727
+ };
666
728
 
667
729
  // src/components/ui/PlacesQueryInput.tsx
668
730
  import { CircleX, LoaderCircle } from "lucide-react";
669
731
  import { useState as useState2, useCallback, useRef as useRef2, useEffect as useEffect2 } from "react";
670
- import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
732
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
671
733
  function PlacesQueryInput({
672
734
  apiKey,
673
735
  selected,
@@ -722,9 +784,9 @@ function PlacesQueryInput({
722
784
  window.addEventListener("resize", checkDropdownPosition);
723
785
  return () => window.removeEventListener("resize", checkDropdownPosition);
724
786
  }, []);
725
- return /* @__PURE__ */ jsx12("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxs8(Command, { children: [
787
+ return /* @__PURE__ */ jsx13("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxs8(Command, { children: [
726
788
  /* @__PURE__ */ jsxs8("div", { className: "relative w-full", children: [
727
- /* @__PURE__ */ jsx12(
789
+ /* @__PURE__ */ jsx13(
728
790
  CommandInput,
729
791
  {
730
792
  placeholder: "Type an address to search...",
@@ -733,14 +795,14 @@ function PlacesQueryInput({
733
795
  className: "truncate pr-8"
734
796
  }
735
797
  ),
736
- isLoadingPredictions && /* @__PURE__ */ jsx12(LoaderCircle, { className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 animate-spin items-center justify-center rounded-full text-green-100" }),
737
- input && /* @__PURE__ */ jsx12(
798
+ isLoadingPredictions && /* @__PURE__ */ jsx13(LoaderCircle, { className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 animate-spin items-center justify-center rounded-full text-green-100" }),
799
+ input && /* @__PURE__ */ jsx13(
738
800
  "button",
739
801
  {
740
802
  type: "button",
741
803
  className: "absolute inset-y-0 right-2 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
742
804
  onClick: handleClear,
743
- children: /* @__PURE__ */ jsx12(CircleX, { className: "h-4 w-4 text-green-100" })
805
+ children: /* @__PURE__ */ jsx13(CircleX, { className: "h-4 w-4 text-green-100" })
744
806
  }
745
807
  )
746
808
  ] }),
@@ -752,8 +814,8 @@ function PlacesQueryInput({
752
814
  shouldOpenUpward ? "bottom-full" : "top-full"
753
815
  ),
754
816
  children: [
755
- /* @__PURE__ */ jsx12(CommandEmpty, { children: "No results" }),
756
- /* @__PURE__ */ jsx12(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsx12(
817
+ /* @__PURE__ */ jsx13(CommandEmpty, { children: "No results" }),
818
+ /* @__PURE__ */ jsx13(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsx13(
757
819
  CommandItem,
758
820
  {
759
821
  onSelect: () => handleSelect(prediction),
@@ -773,11 +835,11 @@ var PlacesQueryInput_default = PlacesQueryInput;
773
835
  import { Slot } from "@radix-ui/react-slot";
774
836
  import { cva as cva3 } from "cva";
775
837
  import { forwardRef as forwardRef8 } from "react";
776
- import { jsx as jsx13 } from "react/jsx-runtime";
838
+ import { jsx as jsx14 } from "react/jsx-runtime";
777
839
  var Button = forwardRef8(
778
840
  ({ className, variant, size, asChild = false, ...props }, ref) => {
779
841
  const Component = asChild ? Slot : "button";
780
- return /* @__PURE__ */ jsx13(
842
+ return /* @__PURE__ */ jsx14(
781
843
  Component,
782
844
  {
783
845
  className: cn(buttonVariants({ variant, size, className })),
@@ -886,10 +948,10 @@ import { cva as cva5 } from "cva";
886
948
  // src/components/primitives/popover.tsx
887
949
  import * as React6 from "react";
888
950
  import * as PopoverPrimitive from "@radix-ui/react-popover";
889
- import { jsx as jsx14 } from "react/jsx-runtime";
951
+ import { jsx as jsx15 } from "react/jsx-runtime";
890
952
  var Popover = PopoverPrimitive.Root;
891
953
  var PopoverTrigger = PopoverPrimitive.Trigger;
892
- var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx14(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx14(
954
+ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx15(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx15(
893
955
  PopoverPrimitive.Content,
894
956
  {
895
957
  ref,
@@ -906,7 +968,7 @@ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
906
968
 
907
969
  // src/components/ui/Badge.tsx
908
970
  import { cva as cva4 } from "cva";
909
- import { jsx as jsx15 } from "react/jsx-runtime";
971
+ import { jsx as jsx16 } from "react/jsx-runtime";
910
972
  var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
911
973
  variants: {
912
974
  variant: {
@@ -920,11 +982,11 @@ var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
920
982
  }
921
983
  });
922
984
  function Badge({ className, variant, ...props }) {
923
- return /* @__PURE__ */ jsx15("div", { className: cn(badgeVariants({ variant }), className), ...props });
985
+ return /* @__PURE__ */ jsx16("div", { className: cn(badgeVariants({ variant }), className), ...props });
924
986
  }
925
987
 
926
988
  // src/components/ui/Combobox.tsx
927
- import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
989
+ import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
928
990
  var Combobox = forwardRef10((props, ref) => {
929
991
  const {
930
992
  id,
@@ -982,7 +1044,7 @@ var Combobox = forwardRef10((props, ref) => {
982
1044
  return isDefault ? defaultLabel : label;
983
1045
  };
984
1046
  return /* @__PURE__ */ jsxs9("div", { className: cn("flex flex-col gap-1", className), children: [
985
- isDefault && /* @__PURE__ */ jsx16(
1047
+ isDefault && /* @__PURE__ */ jsx17(
986
1048
  Label_default,
987
1049
  {
988
1050
  text: label,
@@ -994,7 +1056,7 @@ var Combobox = forwardRef10((props, ref) => {
994
1056
  ),
995
1057
  /* @__PURE__ */ jsxs9("div", { className: "relative flex", children: [
996
1058
  /* @__PURE__ */ jsxs9(Popover, { open, onOpenChange: setOpen, children: [
997
- /* @__PURE__ */ jsx16(
1059
+ /* @__PURE__ */ jsx17(
998
1060
  PopoverTrigger,
999
1061
  {
1000
1062
  asChild: true,
@@ -1011,9 +1073,9 @@ var Combobox = forwardRef10((props, ref) => {
1011
1073
  ),
1012
1074
  "aria-expanded": open,
1013
1075
  children: [
1014
- isDefault && IconComponent && /* @__PURE__ */ jsx16(IconComponent, { className: "h-4 w-4 shrink-0" }),
1015
- isChip && !isEmpty && /* @__PURE__ */ jsx16(Badge, { variant: "purple", children: selected.length }),
1016
- /* @__PURE__ */ jsx16(
1076
+ isDefault && IconComponent && /* @__PURE__ */ jsx17(IconComponent, { className: "h-4 w-4 shrink-0" }),
1077
+ isChip && !isEmpty && /* @__PURE__ */ jsx17(Badge, { variant: "purple", children: selected.length }),
1078
+ /* @__PURE__ */ jsx17(
1017
1079
  "span",
1018
1080
  {
1019
1081
  className: cn(
@@ -1023,7 +1085,7 @@ var Combobox = forwardRef10((props, ref) => {
1023
1085
  children: handleDisplayValue()
1024
1086
  }
1025
1087
  ),
1026
- showChevron && /* @__PURE__ */ jsx16(
1088
+ showChevron && /* @__PURE__ */ jsx17(
1027
1089
  ChevronDownIcon2,
1028
1090
  {
1029
1091
  className: "shrink-0 transform group-data-[state=open]:rotate-180",
@@ -1035,7 +1097,7 @@ var Combobox = forwardRef10((props, ref) => {
1035
1097
  )
1036
1098
  }
1037
1099
  ),
1038
- /* @__PURE__ */ jsx16(
1100
+ /* @__PURE__ */ jsx17(
1039
1101
  PopoverContent,
1040
1102
  {
1041
1103
  className: cn(
@@ -1047,15 +1109,15 @@ var Combobox = forwardRef10((props, ref) => {
1047
1109
  sideOffset: 4,
1048
1110
  align: "start",
1049
1111
  children: /* @__PURE__ */ jsxs9(Command, { children: [
1050
- !hideSearchBox && /* @__PURE__ */ jsx16(CommandInput, { placeholder: "Search..." }),
1112
+ !hideSearchBox && /* @__PURE__ */ jsx17(CommandInput, { placeholder: "Search..." }),
1051
1113
  /* @__PURE__ */ jsxs9(CommandList, { children: [
1052
- /* @__PURE__ */ jsx16(CommandEmpty, { children: "No results" }),
1053
- /* @__PURE__ */ jsx16(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ jsx16(
1114
+ /* @__PURE__ */ jsx17(CommandEmpty, { children: "No results" }),
1115
+ /* @__PURE__ */ jsx17(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ jsx17(
1054
1116
  CommandItem,
1055
1117
  {
1056
1118
  value: option.title,
1057
1119
  onSelect: () => handleSelect(option.value),
1058
- children: /* @__PURE__ */ jsx16(
1120
+ children: /* @__PURE__ */ jsx17(
1059
1121
  ListItem_default,
1060
1122
  {
1061
1123
  className: cn(classNames?.items, "truncate py-1"),
@@ -1068,19 +1130,19 @@ var Combobox = forwardRef10((props, ref) => {
1068
1130
  id2
1069
1131
  )) })
1070
1132
  ] }),
1071
- !!footer && /* @__PURE__ */ jsx16(Separator, {}),
1133
+ !!footer && /* @__PURE__ */ jsx17(Separator, {}),
1072
1134
  footer && footer({ close })
1073
1135
  ] })
1074
1136
  }
1075
1137
  )
1076
1138
  ] }),
1077
- isDefault && !isEmpty && /* @__PURE__ */ jsx16(
1139
+ isDefault && !isEmpty && /* @__PURE__ */ jsx17(
1078
1140
  "button",
1079
1141
  {
1080
1142
  type: "button",
1081
1143
  className: "absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
1082
1144
  onClick: handleClear,
1083
- children: /* @__PURE__ */ jsx16(CircleX2, { className: "h-4 w-4 text-green-100" })
1145
+ children: /* @__PURE__ */ jsx17(CircleX2, { className: "h-4 w-4 text-green-100" })
1084
1146
  }
1085
1147
  )
1086
1148
  ] })
@@ -1117,7 +1179,7 @@ var triggerVariants = cva5(
1117
1179
  import { cva as cva6 } from "cva";
1118
1180
  import { Minus as Minus2, Plus } from "lucide-react";
1119
1181
  import { forwardRef as forwardRef11, useEffect as useEffect4, useState as useState4 } from "react";
1120
- import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
1182
+ import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1121
1183
  var Counter = forwardRef11(
1122
1184
  ({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
1123
1185
  const [count, setCount] = useState4(0);
@@ -1158,7 +1220,7 @@ var Counter = forwardRef11(
1158
1220
  className: cn("flex w-auto flex-col gap-1", classNames?.root),
1159
1221
  "data-testid": `counter-wrapper-${props.id}`,
1160
1222
  children: [
1161
- label && /* @__PURE__ */ jsx17(
1223
+ label && /* @__PURE__ */ jsx18(
1162
1224
  Label_default,
1163
1225
  {
1164
1226
  text: label,
@@ -1169,16 +1231,16 @@ var Counter = forwardRef11(
1169
1231
  }
1170
1232
  ),
1171
1233
  /* @__PURE__ */ jsxs10("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1172
- /* @__PURE__ */ jsx17(
1234
+ /* @__PURE__ */ jsx18(
1173
1235
  "button",
1174
1236
  {
1175
1237
  type: "button",
1176
1238
  className: "absolute inset-y-0 left-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
1177
1239
  onClick: decrement,
1178
- children: /* @__PURE__ */ jsx17(Minus2, { className: "h-4 w-4 text-green-100" })
1240
+ children: /* @__PURE__ */ jsx18(Minus2, { className: "h-4 w-4 text-green-100" })
1179
1241
  }
1180
1242
  ),
1181
- /* @__PURE__ */ jsx17(
1243
+ /* @__PURE__ */ jsx18(
1182
1244
  "input",
1183
1245
  {
1184
1246
  className: cn(counterVariants({ theme }), classNames?.input),
@@ -1189,17 +1251,17 @@ var Counter = forwardRef11(
1189
1251
  ...props
1190
1252
  }
1191
1253
  ),
1192
- /* @__PURE__ */ jsx17(
1254
+ /* @__PURE__ */ jsx18(
1193
1255
  "button",
1194
1256
  {
1195
1257
  type: "button",
1196
1258
  className: "absolute inset-y-0 right-1 my-auto flex h-8 w-8 cursor-pointer items-center justify-center rounded-full hover:bg-pickle-20",
1197
1259
  onClick: increment,
1198
- children: /* @__PURE__ */ jsx17(Plus, { className: "h-4 w-4 text-green-100" })
1260
+ children: /* @__PURE__ */ jsx18(Plus, { className: "h-4 w-4 text-green-100" })
1199
1261
  }
1200
1262
  )
1201
1263
  ] }),
1202
- /* @__PURE__ */ jsx17(ErrorMessage_default, { message: error })
1264
+ /* @__PURE__ */ jsx18(ErrorMessage_default, { message: error })
1203
1265
  ]
1204
1266
  }
1205
1267
  );
@@ -1255,18 +1317,1456 @@ var counterVariants = cva6(
1255
1317
  }
1256
1318
  }
1257
1319
  );
1320
+
1321
+ // src/components/primitives/avatar.tsx
1322
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
1323
+ import * as React7 from "react";
1324
+ import { jsx as jsx19 } from "react/jsx-runtime";
1325
+ var AvatarBase = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1326
+ AvatarPrimitive.Root,
1327
+ {
1328
+ ref,
1329
+ className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
1330
+ ...props
1331
+ }
1332
+ ));
1333
+ AvatarBase.displayName = AvatarPrimitive.Root.displayName;
1334
+ var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1335
+ AvatarPrimitive.Image,
1336
+ {
1337
+ ref,
1338
+ className: cn("aspect-square h-full w-full", className),
1339
+ "data-testid": "job-card-avatar",
1340
+ ...props
1341
+ }
1342
+ ));
1343
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1344
+ var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19(
1345
+ AvatarPrimitive.Fallback,
1346
+ {
1347
+ ref,
1348
+ className: cn(
1349
+ "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",
1350
+ className
1351
+ ),
1352
+ ...props
1353
+ }
1354
+ ));
1355
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1356
+
1357
+ // src/components/ui/Avatar.tsx
1358
+ import { cva as cva7 } from "cva";
1359
+ import Link from "next/link";
1360
+ import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
1361
+ function Avatar({ size, src, href, name, ...linkProps }) {
1362
+ const fallbackShort = name?.slice(0, 2);
1363
+ const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
1364
+ const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
1365
+ const renderAvatar = () => /* @__PURE__ */ jsxs11(AvatarBase, { className: avatarVariants({ size }), children: [
1366
+ /* @__PURE__ */ jsx20(AvatarImage, { src, alt: name }),
1367
+ /* @__PURE__ */ jsx20(AvatarFallback, { children: fallback?.toUpperCase() })
1368
+ ] });
1369
+ if (href) {
1370
+ return /* @__PURE__ */ jsx20(Link, { href, ...linkProps, children: renderAvatar() });
1371
+ }
1372
+ return renderAvatar();
1373
+ }
1374
+ var avatarVariants = cva7("ring ring-white ring-2", {
1375
+ variants: {
1376
+ size: {
1377
+ large: "h-16 w-16",
1378
+ medium: "h-10 w-10",
1379
+ small: "h-8 w-8"
1380
+ }
1381
+ },
1382
+ defaultVariants: {
1383
+ size: "medium"
1384
+ }
1385
+ });
1386
+
1387
+ // src/components/ui/Icon.tsx
1388
+ import { Slot as Slot2 } from "@radix-ui/react-slot";
1389
+ import { cva as cva8 } from "cva";
1390
+ import { forwardRef as forwardRef13 } from "react";
1391
+ import { twMerge as twMerge3 } from "tailwind-merge";
1392
+ import { jsx as jsx21 } from "react/jsx-runtime";
1393
+ var Icon = forwardRef13(
1394
+ ({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
1395
+ const Component = readonly ? Slot2 : "button";
1396
+ return /* @__PURE__ */ jsx21(
1397
+ Component,
1398
+ {
1399
+ className: cn(
1400
+ twMerge3(iconVariants({ variant: active ? "active" : variant, size })),
1401
+ className
1402
+ ),
1403
+ ...props,
1404
+ ref
1405
+ }
1406
+ );
1407
+ }
1408
+ );
1409
+ Icon.displayName = "Icon";
1410
+ var iconVariants = cva8(
1411
+ [
1412
+ "inline-flex",
1413
+ "items-center",
1414
+ "rounded-full",
1415
+ "outline-2",
1416
+ "outline-offset-2",
1417
+ "outline-dashed",
1418
+ "outline-transparent",
1419
+ "disabled:text-grey-40",
1420
+ "disabled:bg-transparent",
1421
+ "disabled:pointer-events-none"
1422
+ ],
1423
+ {
1424
+ variants: {
1425
+ variant: {
1426
+ filled: [
1427
+ "border",
1428
+ "border-green-80",
1429
+ "bg-green-90",
1430
+ "text-white",
1431
+ "hover:bg-green-80",
1432
+ "active:bg-green-80",
1433
+ "focus:outline-pickle-100",
1434
+ "disabled:bg-green-70"
1435
+ ],
1436
+ transparent: [
1437
+ "text-black",
1438
+ "hover:bg-grey-5",
1439
+ "active:bg-grey-10",
1440
+ "focus:outline-purple-100"
1441
+ ],
1442
+ tonal: [
1443
+ "border",
1444
+ "border-grey-5",
1445
+ "hover:border-grey-10",
1446
+ "active:border-grey-20",
1447
+ "focus:outline-purple-100"
1448
+ ],
1449
+ active: ["text-black", "bg-pickle-100"]
1450
+ },
1451
+ size: {
1452
+ small: ["h-10", "w-10", "p-3"],
1453
+ medium: ["h-12", "w-12", "p-4"],
1454
+ large: ["h-14", "w-14", "p-4"]
1455
+ }
1456
+ },
1457
+ defaultVariants: {
1458
+ variant: "filled",
1459
+ size: "medium"
1460
+ }
1461
+ }
1462
+ );
1463
+
1464
+ // src/components/ui/LinkButton.tsx
1465
+ import Link2 from "next/link";
1466
+ import { jsx as jsx22 } from "react/jsx-runtime";
1467
+ var LinkButton = ({
1468
+ disabled = false,
1469
+ useAnchor = false,
1470
+ children,
1471
+ href,
1472
+ ...props
1473
+ }) => {
1474
+ const Component = useAnchor ? "a" : Link2;
1475
+ return /* @__PURE__ */ jsx22(
1476
+ Component,
1477
+ {
1478
+ href,
1479
+ 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" : ""} `,
1480
+ ...disabled && { "aria-disabled": true, tabIndex: -1 },
1481
+ ...props,
1482
+ children
1483
+ }
1484
+ );
1485
+ };
1486
+
1487
+ // src/components/ui/ReadMore.tsx
1488
+ import { useEffect as useEffect5, useState as useState5 } from "react";
1489
+ import Markdown from "react-markdown";
1490
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
1491
+ function ReadMore({ text, ...props }) {
1492
+ const [isExpanded, setIsExpanded] = useState5(false);
1493
+ const [maxWords, setMaxWords] = useState5(160);
1494
+ useEffect5(() => {
1495
+ const updateMaxWords = () => {
1496
+ const windowWidth = window.innerWidth;
1497
+ if (windowWidth <= 768) {
1498
+ setMaxWords(50);
1499
+ } else {
1500
+ setMaxWords(160);
1501
+ }
1502
+ };
1503
+ updateMaxWords();
1504
+ window.addEventListener("resize", updateMaxWords);
1505
+ return () => window.removeEventListener("resize", updateMaxWords);
1506
+ }, []);
1507
+ function createReadMoreText(text2, maxWords2, isExpanded2) {
1508
+ const words = text2.split(" ");
1509
+ const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
1510
+ const readMoreText = isExpanded2 ? "" : "...";
1511
+ return `${snippet2} ${readMoreText}`;
1512
+ }
1513
+ const toggleText = () => setIsExpanded(!isExpanded);
1514
+ const snippet = createReadMoreText(text, maxWords, isExpanded);
1515
+ return /* @__PURE__ */ jsxs12("div", { ...props, children: [
1516
+ /* @__PURE__ */ jsx23("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ jsx23(Markdown, { children: snippet }) }),
1517
+ /* @__PURE__ */ jsx23(Button, { className: "mt-2 flex items-center justify-center", variant: "link", onClick: toggleText, children: /* @__PURE__ */ jsxs12("p", { className: "text-sm font-bold underline underline-offset-2", children: [
1518
+ "Read ",
1519
+ isExpanded ? "less" : "more"
1520
+ ] }) })
1521
+ ] });
1522
+ }
1523
+
1524
+ // src/components/company/CompanyBenefits.tsx
1525
+ import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
1526
+ function CompanyBenefits({ benefits }) {
1527
+ if (!benefits) return null;
1528
+ return /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits", children: [
1529
+ /* @__PURE__ */ jsx24("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg", children: "Company benefits" }),
1530
+ /* @__PURE__ */ jsx24("ul", { className: "flex flex-col gap-3", children: benefits.map((benefit, i) => /* @__PURE__ */ jsx24("li", { className: "text-base text-grey-80", children: benefit }, `${benefit}-${i}`)) })
1531
+ ] });
1532
+ }
1533
+
1534
+ // src/components/company/CompanyInformation.tsx
1535
+ import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
1536
+ function CompanyInformation({
1537
+ name,
1538
+ how,
1539
+ mission,
1540
+ wow,
1541
+ website
1542
+ }) {
1543
+ return /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-2", children: [
1544
+ /* @__PURE__ */ jsxs14(
1545
+ "h2",
1546
+ {
1547
+ "data-testid": "company-name",
1548
+ className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg",
1549
+ children: [
1550
+ "About ",
1551
+ name
1552
+ ]
1553
+ }
1554
+ ),
1555
+ how && /* @__PURE__ */ jsx25("p", { "data-testid": "company-information", className: "text-base text-grey-80", children: how }),
1556
+ mission && /* @__PURE__ */ jsxs14("div", { className: "flex gap-2", children: [
1557
+ /* @__PURE__ */ jsx25("span", { children: "\u{1F680}" }),
1558
+ /* @__PURE__ */ jsxs14("p", { className: "text-base text-grey-80", children: [
1559
+ /* @__PURE__ */ jsx25("span", { className: "pr-1 font-bold", children: "Mission" }),
1560
+ mission
1561
+ ] })
1562
+ ] }),
1563
+ wow && /* @__PURE__ */ jsxs14("div", { className: "flex gap-2", children: [
1564
+ /* @__PURE__ */ jsx25("span", { children: "\u{1F31F}" }),
1565
+ /* @__PURE__ */ jsxs14("p", { className: "text-base text-grey-80", children: [
1566
+ /* @__PURE__ */ jsx25("span", { className: "pr-1 font-bold", children: "Wow Factor" }),
1567
+ wow
1568
+ ] })
1569
+ ] }),
1570
+ website && /* @__PURE__ */ jsx25("div", { className: "pt-2", children: /* @__PURE__ */ jsx25(
1571
+ LinkButton,
1572
+ {
1573
+ "data-testid": "company-website-link",
1574
+ href: website,
1575
+ target: "_blank",
1576
+ rel: "noopener noreferrer",
1577
+ children: "Website"
1578
+ }
1579
+ ) })
1580
+ ] });
1581
+ }
1582
+
1583
+ // src/components/company/CompanyTake.tsx
1584
+ import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
1585
+ function CompanyTake({ content, avatarSrc }) {
1586
+ if (!content) return null;
1587
+ return /* @__PURE__ */ jsxs15(
1588
+ "div",
1589
+ {
1590
+ "data-testid": "company-take",
1591
+ className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6",
1592
+ children: [
1593
+ /* @__PURE__ */ jsx26("p", { className: "text-lg font-bold text-white sm:text-xl", children: "The Real Dill \u2618\uFE0F" }),
1594
+ /* @__PURE__ */ jsx26("div", { className: "mt-2 flex items-center justify-start", children: /* @__PURE__ */ jsx26("p", { className: "text-sm font-normal text-grey-10", children: content }) }),
1595
+ /* @__PURE__ */ jsxs15("div", { className: "mt-8 flex w-full items-center gap-3", children: [
1596
+ /* @__PURE__ */ jsx26(Avatar, { name: "Jon Lee", src: avatarSrc }),
1597
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col flex-wrap items-start", children: [
1598
+ /* @__PURE__ */ jsx26("p", { className: "text-sm font-bold text-white", children: "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA" }),
1599
+ /* @__PURE__ */ jsx26("p", { className: "text-xs font-normal text-grey-30", children: "Pickle co-founder" })
1600
+ ] })
1601
+ ] })
1602
+ ]
1603
+ }
1604
+ );
1605
+ }
1606
+
1607
+ // src/components/jobPost/JobDescription.tsx
1608
+ import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
1609
+ function JobDescription({ description }) {
1610
+ if (!description) return null;
1611
+ return /* @__PURE__ */ jsxs16("div", { className: "flex w-full flex-col gap-2", children: [
1612
+ /* @__PURE__ */ jsx27("h3", { className: "text-xl font-bold", children: "Job Description" }),
1613
+ /* @__PURE__ */ jsx27(ReadMore, { text: description })
1614
+ ] });
1615
+ }
1616
+
1617
+ // src/components/jobPost/JobHeader.tsx
1618
+ import { Dot } from "lucide-react";
1619
+ import Image2 from "next/image";
1620
+
1621
+ // src/components/buttons/BackButton.tsx
1622
+ import { X as X4 } from "lucide-react";
1623
+ import { useRouter } from "next/navigation";
1624
+
1625
+ // src/hooks/useWindowHistory.ts
1626
+ import { useContext } from "react";
1627
+
1628
+ // src/contexts/WindowHistoryProvider.tsx
1629
+ import { useSearchParams } from "next/navigation";
1630
+ import { createContext, useEffect as useEffect6, useMemo, useState as useState6 } from "react";
1631
+ import { jsx as jsx28 } from "react/jsx-runtime";
1632
+ var WindowHistoryContext = createContext({});
1633
+ function WindowHistoryProvider({ children }) {
1634
+ const [history, setHistory] = useState6([]);
1635
+ const searchParams = useSearchParams();
1636
+ useEffect6(() => {
1637
+ setHistory(
1638
+ (prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
1639
+ );
1640
+ }, [searchParams]);
1641
+ const contextValue = useMemo(() => ({ history }), [history]);
1642
+ return /* @__PURE__ */ jsx28(WindowHistoryContext.Provider, { value: contextValue, children });
1643
+ }
1644
+
1645
+ // src/hooks/useWindowHistory.ts
1646
+ function useWindowHistory() {
1647
+ const windowHistoryContext = useContext(WindowHistoryContext);
1648
+ if (Object.keys(windowHistoryContext).length === 0) {
1649
+ throw new Error("useWindowHistory was used outside of its WindowHistoryContext");
1650
+ }
1651
+ return windowHistoryContext;
1652
+ }
1653
+
1654
+ // src/components/buttons/BackButton.tsx
1655
+ import { jsx as jsx29 } from "react/jsx-runtime";
1656
+ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
1657
+ const { history } = useWindowHistory();
1658
+ const router = useRouter();
1659
+ const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
1660
+ const goBack = () => {
1661
+ const previous = history[history.length - 2];
1662
+ history.length > 1 && isAcceptedRoute(previous) ? router.back() : router.push(fallbackHref ?? "/");
1663
+ };
1664
+ return /* @__PURE__ */ jsx29(
1665
+ Icon,
1666
+ {
1667
+ "aria-label": "back button",
1668
+ variant: "transparent",
1669
+ size: "small",
1670
+ onClick: goBack,
1671
+ className,
1672
+ ...props,
1673
+ children: /* @__PURE__ */ jsx29(X4, {})
1674
+ }
1675
+ );
1676
+ }
1677
+
1678
+ // src/lib/icons.ts
1679
+ import {
1680
+ Banknote,
1681
+ Bell,
1682
+ BriefcaseBusiness,
1683
+ Building,
1684
+ Building2,
1685
+ CircleUser,
1686
+ CircleUserRound,
1687
+ Clock2,
1688
+ Contact,
1689
+ GalleryVerticalEnd,
1690
+ Home,
1691
+ KeyRound,
1692
+ Layers,
1693
+ LifeBuoy,
1694
+ MapPin,
1695
+ MessageSquareDot,
1696
+ Settings,
1697
+ SquareKanban,
1698
+ Users,
1699
+ Wallet
1700
+ } from "lucide-react";
1701
+ var iconMap = {
1702
+ house: Home,
1703
+ layers: Layers,
1704
+ users: Users,
1705
+ settings: Settings,
1706
+ building: Building,
1707
+ bell: Bell,
1708
+ wallet: Wallet,
1709
+ contact: Contact,
1710
+ banknote: Banknote,
1711
+ "message-square-dot": MessageSquareDot,
1712
+ "life-buoy": LifeBuoy,
1713
+ "building-2": Building2,
1714
+ "gallery-vertical-end": GalleryVerticalEnd,
1715
+ "square-kanban": SquareKanban,
1716
+ "briefcase-business": BriefcaseBusiness,
1717
+ "circle-user": CircleUser,
1718
+ "key-round": KeyRound,
1719
+ "clock-2": Clock2,
1720
+ "circle-user-round": CircleUserRound,
1721
+ "map-pin": MapPin
1722
+ };
1723
+
1724
+ // src/components/jobPost/JobHeader.tsx
1725
+ import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
1726
+ function JobHeader({
1727
+ title,
1728
+ subtitles,
1729
+ standalone,
1730
+ bannerSrc,
1731
+ avatarSrc,
1732
+ avatarName,
1733
+ avatarHref,
1734
+ backFallbackHref,
1735
+ backAcceptedRoutes,
1736
+ actions,
1737
+ tags
1738
+ }) {
1739
+ const renderIcon = (icon) => {
1740
+ const Icon2 = iconMap[icon];
1741
+ return /* @__PURE__ */ jsx30(Icon2, { size: 18 });
1742
+ };
1743
+ return /* @__PURE__ */ jsxs17(
1744
+ "div",
1745
+ {
1746
+ "data-testid": "job-header-root",
1747
+ className: cn(
1748
+ "-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
1749
+ !standalone && "rounded-3xl"
1750
+ ),
1751
+ children: [
1752
+ !standalone && /* @__PURE__ */ jsxs17("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: [
1753
+ /* @__PURE__ */ jsx30(
1754
+ Image2,
1755
+ {
1756
+ className: "h-full w-full rounded-t-3xl object-cover",
1757
+ src: bannerSrc,
1758
+ alt: "job banner",
1759
+ fill: true
1760
+ }
1761
+ ),
1762
+ /* @__PURE__ */ jsx30(
1763
+ BackButton,
1764
+ {
1765
+ acceptedRoutes: backAcceptedRoutes,
1766
+ fallbackHref: backFallbackHref,
1767
+ className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
1768
+ "data-testid": "job-header-back-button"
1769
+ }
1770
+ ),
1771
+ /* @__PURE__ */ jsx30(
1772
+ "div",
1773
+ {
1774
+ className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
1775
+ "data-testid": "job-header-avatar",
1776
+ children: /* @__PURE__ */ jsx30(
1777
+ Avatar,
1778
+ {
1779
+ size: "large",
1780
+ target: "_blank",
1781
+ href: avatarHref,
1782
+ name: avatarName,
1783
+ src: avatarSrc,
1784
+ rel: "noopener noreferrer"
1785
+ }
1786
+ )
1787
+ }
1788
+ )
1789
+ ] }),
1790
+ /* @__PURE__ */ jsxs17("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6", children: [
1791
+ /* @__PURE__ */ jsxs17("div", { className: "flex flex-col md:flex-row", children: [
1792
+ standalone && /* @__PURE__ */ jsx30("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar", children: /* @__PURE__ */ jsx30(
1793
+ Avatar,
1794
+ {
1795
+ size: "large",
1796
+ target: "_blank",
1797
+ href: avatarHref,
1798
+ name: avatarName,
1799
+ src: avatarSrc,
1800
+ rel: "noopener noreferrer"
1801
+ }
1802
+ ) }),
1803
+ /* @__PURE__ */ jsx30("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg", children: subtitles?.map((subtitle, i) => /* @__PURE__ */ jsxs17(
1804
+ "div",
1805
+ {
1806
+ "data-testid": `job-header-subtitle-${i}`,
1807
+ className: "flex items-center",
1808
+ children: [
1809
+ subtitle,
1810
+ i < subtitles.length - 1 && /* @__PURE__ */ jsx30(Dot, { className: "mx-1 shrink-0", size: 10 })
1811
+ ]
1812
+ },
1813
+ subtitle
1814
+ )) })
1815
+ ] }),
1816
+ /* @__PURE__ */ jsxs17(
1817
+ "div",
1818
+ {
1819
+ "data-testid": "job-header-content",
1820
+ className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1",
1821
+ children: [
1822
+ /* @__PURE__ */ jsx30(
1823
+ "h2",
1824
+ {
1825
+ "data-testid": "job-header-title",
1826
+ className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg",
1827
+ children: title
1828
+ }
1829
+ ),
1830
+ !!actions && /* @__PURE__ */ jsx30(
1831
+ "div",
1832
+ {
1833
+ className: "flex w-full justify-end gap-2 md:w-auto",
1834
+ "data-testid": "job-header-actions",
1835
+ children: actions
1836
+ }
1837
+ )
1838
+ ]
1839
+ }
1840
+ ),
1841
+ /* @__PURE__ */ jsx30(
1842
+ "div",
1843
+ {
1844
+ "data-testid": "job-header-tags",
1845
+ className: "flex flex-row flex-wrap items-center justify-start gap-2",
1846
+ children: tags?.map(({ name, label, icon }) => /* @__PURE__ */ jsxs17(
1847
+ Chip_default,
1848
+ {
1849
+ size: "small",
1850
+ variant: "neutral",
1851
+ "aria-label": name,
1852
+ "data-testid": `job-header-tag-${name}`,
1853
+ children: [
1854
+ renderIcon(icon),
1855
+ /* @__PURE__ */ jsx30("span", { children: label })
1856
+ ]
1857
+ },
1858
+ name
1859
+ ))
1860
+ }
1861
+ )
1862
+ ] })
1863
+ ]
1864
+ }
1865
+ );
1866
+ }
1867
+
1868
+ // src/components/jobPost/JobPost.tsx
1869
+ import * as DateFns from "date-fns";
1870
+
1871
+ // src/types/data/shared_pickle_output_latest.ts
1872
+ var shared_pickle_output_latest_exports = {};
1873
+ __export(shared_pickle_output_latest_exports, {
1874
+ CurrencyEnum: () => CurrencyEnum,
1875
+ DetailLevelEnum: () => DetailLevelEnum,
1876
+ TypeEnum: () => TypeEnum,
1877
+ UnitTextEnum: () => UnitTextEnum,
1878
+ monetaryAmountSchema: () => monetaryAmountSchema,
1879
+ placeSchema: () => placeSchema,
1880
+ postalAddressSchema: () => postalAddressSchema,
1881
+ quantitativeValueSchema: () => quantitativeValueSchema
1882
+ });
1883
+ import { z } from "zod";
1884
+ var TypeEnum = z.enum(["MONETARY_AMOUNT"]);
1885
+ var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
1886
+ var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
1887
+ var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
1888
+ var postalAddressSchema = z.object({
1889
+ version: z.literal("1.0.0").default("1.0.0"),
1890
+ type: z.string().describe("Document type used within sanity"),
1891
+ addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
1892
+ addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
1893
+ 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."),
1894
+ streetAddress: z.optional(z.string()).describe("The street address within the locality."),
1895
+ postalCode: z.optional(z.string()).describe("The postal code")
1896
+ });
1897
+ var placeSchema = z.object({
1898
+ version: z.literal("1.0.0").default("1.0.0"),
1899
+ detailLevel: z.optional(DetailLevelEnum),
1900
+ latitude: z.optional(z.number()).describe("The latitude of a location."),
1901
+ longitude: z.optional(z.number()).describe("The longitude of a location."),
1902
+ address: z.optional(postalAddressSchema).describe("The physical place of the location")
1903
+ });
1904
+ var quantitativeValueSchema = z.object({
1905
+ version: z.literal("1.0.0").default("1.0.0"),
1906
+ type: z.string().describe("Document type used within sanity"),
1907
+ 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."),
1908
+ minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
1909
+ maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
1910
+ unitText: UnitTextEnum
1911
+ });
1912
+ var monetaryAmountSchema = z.object({
1913
+ version: z.literal("1.0.0").default("1.0.0"),
1914
+ type: z.string().describe("Document type used within sanity"),
1915
+ 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."),
1916
+ minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
1917
+ maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
1918
+ value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
1919
+ currency: z.optional(CurrencyEnum)
1920
+ });
1921
+
1922
+ // src/lib/salaryRange.ts
1923
+ function salaryRange(salary) {
1924
+ if (!salary) return null;
1925
+ const min = salary.minValue;
1926
+ const max = salary.maxValue;
1927
+ const single = salary.singleValue;
1928
+ const signs = {
1929
+ [CurrencyEnum.Values.USD]: "$",
1930
+ [CurrencyEnum.Values.GBP]: "\xA3",
1931
+ [CurrencyEnum.Values.EUR]: "\u20AC"
1932
+ };
1933
+ const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
1934
+ if (min == null && max == null && single == null) return null;
1935
+ if (single != null) return sign + single.toLocaleString();
1936
+ if (min === max) return sign + min?.toLocaleString();
1937
+ if (min != null && max != null)
1938
+ return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
1939
+ return null;
1940
+ }
1941
+
1942
+ // src/hooks/useDisplayText.ts
1943
+ import { useEffect as useEffect7, useMemo as useMemo2, useState as useState7 } from "react";
1944
+
1945
+ // src/lib/mappings.ts
1946
+ var employmentTypeDisplayText = {
1947
+ FULL_TIME: {
1948
+ en: "Full Time"
1949
+ },
1950
+ INTERNSHIP: {
1951
+ en: "Internship"
1952
+ },
1953
+ OTHER: {
1954
+ en: "Other"
1955
+ },
1956
+ PART_TIME: {
1957
+ en: "Part Time"
1958
+ },
1959
+ PER_DIEM: {
1960
+ en: "Per-Diem"
1961
+ },
1962
+ TEMPORARY: {
1963
+ en: "Temporary"
1964
+ },
1965
+ CONTRACT: {
1966
+ en: "Contract"
1967
+ }
1968
+ };
1969
+ var unitTextDisplayText = {
1970
+ DAY: {
1971
+ en: "Day"
1972
+ },
1973
+ HOUR: {
1974
+ en: "Hour"
1975
+ },
1976
+ MONTH: {
1977
+ en: "Month"
1978
+ },
1979
+ PER_ACTIVITY: {
1980
+ en: "Per Activity"
1981
+ },
1982
+ WEEK: {
1983
+ en: "Week"
1984
+ },
1985
+ YEAR: {
1986
+ en: "Year"
1987
+ }
1988
+ };
1989
+ var currencyDisplayText = {
1990
+ EUR: {
1991
+ en: "\u20AC"
1992
+ },
1993
+ GBP: {
1994
+ en: "\xA3"
1995
+ },
1996
+ USD: {
1997
+ en: "$"
1998
+ }
1999
+ };
2000
+ var employmentLevelDisplayText = {
2001
+ DIRECTOR: {
2002
+ en: "Director"
2003
+ },
2004
+ ENTRY_LEVEL: {
2005
+ en: "Entry Level"
2006
+ },
2007
+ EXECUTIVE: {
2008
+ en: "Executive"
2009
+ },
2010
+ EXPERIENCED: {
2011
+ en: "Experienced"
2012
+ },
2013
+ INTERN: {
2014
+ en: "Intern"
2015
+ },
2016
+ MANAGER: {
2017
+ en: "Manager"
2018
+ }
2019
+ };
2020
+ var jobFunctionDisplayText = {
2021
+ CLINICAL_RESEARCH: {
2022
+ en: "Clinical Research"
2023
+ },
2024
+ CUSTOMER_SUCCESS: {
2025
+ en: "Customer Success"
2026
+ },
2027
+ DATA_ANALYTICS: {
2028
+ en: "Data Analytics"
2029
+ },
2030
+ FINANCE_AND_AUDIT: {
2031
+ en: "Finance and Audit"
2032
+ },
2033
+ MARKETING: {
2034
+ en: "Marketing"
2035
+ },
2036
+ OPERATIONS: {
2037
+ en: "Operations"
2038
+ },
2039
+ PEOPLE_HUMAN_RESOURCES: {
2040
+ en: "People Human Resources"
2041
+ },
2042
+ PRODUCT_AND_TECH: {
2043
+ en: "Product and Tech"
2044
+ },
2045
+ QUALITY_ASSURANCE_AND_OUTCOMES: {
2046
+ en: "Quality Assurance and Outcomes"
2047
+ },
2048
+ SALES_AND_BUSINESS_DEVELOPMENT: {
2049
+ en: "Sales and Business Development"
2050
+ },
2051
+ STRATEGY_AND_CONSULTING: {
2052
+ en: "Strategy and Consulting"
2053
+ }
2054
+ };
2055
+ var bestFitDisplayText = {
2056
+ DENTIST: {
2057
+ en: "Dentist"
2058
+ },
2059
+ DIETICIAN: {
2060
+ en: "Dietician"
2061
+ },
2062
+ DOULA: {
2063
+ en: "Doula"
2064
+ },
2065
+ MEDICAL_ASSISTANT: {
2066
+ en: "Medical Assistant"
2067
+ },
2068
+ MIDWIFE: {
2069
+ en: "Midwife"
2070
+ },
2071
+ NURSE: {
2072
+ en: "Nurse"
2073
+ },
2074
+ OCCUPATIONAL_THERAPIST: {
2075
+ en: "Occupational Therapist"
2076
+ },
2077
+ PHARMACIST: {
2078
+ en: "Pharmacist"
2079
+ },
2080
+ PHYSICAL_THERAPIST: {
2081
+ en: "Physical Therapist"
2082
+ },
2083
+ PHYSICIAN: {
2084
+ en: "Physician"
2085
+ },
2086
+ PHYSICIAN_ASSISTANT: {
2087
+ en: "Physician Assistant"
2088
+ },
2089
+ PSYCHOLOGIST: {
2090
+ en: "Psychologist"
2091
+ },
2092
+ RADIOLOGIST: {
2093
+ en: "Radiologist"
2094
+ },
2095
+ SOCIAL_WORKER: {
2096
+ en: "Social Worker"
2097
+ },
2098
+ SPEECH_LANGUAGE_PATHOLOGIST: {
2099
+ en: "Speech Language Pathologist"
2100
+ },
2101
+ SURGEON: {
2102
+ en: "Surgeon"
2103
+ }
2104
+ };
2105
+ var clinicalSpecialtyDisplayText = {
2106
+ ANESTHESIOLOGY: {
2107
+ en: "Anesthesiology"
2108
+ },
2109
+ CARDIOLOGY: {
2110
+ en: "Cardiology"
2111
+ },
2112
+ CARDIOVASCULAR_AND_PULMONARY: {
2113
+ en: "Cardiovascular and Pulmonary"
2114
+ },
2115
+ CASE_MANAGEMENT: {
2116
+ en: "Case Management"
2117
+ },
2118
+ CHRONIC_PAIN: {
2119
+ en: "Chronic Pain"
2120
+ },
2121
+ CLINICAL_ELECTROPHYSIOLOGY: {
2122
+ en: "Clinical Electrophysiology"
2123
+ },
2124
+ CRITICAL_AND_ACUTE_CARE: {
2125
+ en: "Critical and Acute Care"
2126
+ },
2127
+ DERMATOLOGY: {
2128
+ en: "Dermatology"
2129
+ },
2130
+ DIALYSIS: {
2131
+ en: "Dialysis"
2132
+ },
2133
+ EMERGENCY_MEDICINE: {
2134
+ en: "Emergency Medicine"
2135
+ },
2136
+ ENDOCRINOLOGY: {
2137
+ en: "Endocrinology"
2138
+ },
2139
+ ERGONOMICS: {
2140
+ en: "Ergonomics"
2141
+ },
2142
+ FEEDING_EATING_AND_SWALLOWING: {
2143
+ en: "Feeding, Eating, and Swallowing"
2144
+ },
2145
+ GASTROENTEROLOGY: {
2146
+ en: "Gastroenterology"
2147
+ },
2148
+ GERIATRICS: {
2149
+ en: "Geriatrics"
2150
+ },
2151
+ HAND_THERAPY: {
2152
+ en: "Hand Therapy"
2153
+ },
2154
+ HEMATOLOGY: {
2155
+ en: "Hematology"
2156
+ },
2157
+ HOLISTIC_MEDICINE: {
2158
+ en: "Holistic Medicine"
2159
+ },
2160
+ INFORMATICS: {
2161
+ en: "Informatics"
2162
+ },
2163
+ INTERNAL_MEDICINE: {
2164
+ en: "Internal Medicine"
2165
+ },
2166
+ LABOR_AND_DELIVERY: {
2167
+ en: "Labor and Delivery"
2168
+ },
2169
+ MANUAL_THERAPY: {
2170
+ en: "Manual Therapy"
2171
+ },
2172
+ MED_SURG: {
2173
+ en: "Medical-Surgical"
2174
+ },
2175
+ MENTAL_HEALTH: {
2176
+ en: "Mental Health"
2177
+ },
2178
+ NEPHROLOGY: {
2179
+ en: "Nephrology"
2180
+ },
2181
+ NEUROLOGY: {
2182
+ en: "Neurology"
2183
+ },
2184
+ ONCOLOGY: {
2185
+ en: "Oncology"
2186
+ },
2187
+ ORTHOPEDICS: {
2188
+ en: "Orthopedics"
2189
+ },
2190
+ OTOLARYNGOLOGY: {
2191
+ en: "Otolaryngology"
2192
+ },
2193
+ PEDIATRICS: {
2194
+ en: "Pediatrics"
2195
+ },
2196
+ PHYSICAL_AND_REHABILITATION_MEDICINE: {
2197
+ en: "Physical and Rehabilitation Medicine"
2198
+ },
2199
+ PLASTIC_SURGERY: {
2200
+ en: "Plastic Surgery"
2201
+ },
2202
+ PRIMARY_CARE: {
2203
+ en: "Primary Care"
2204
+ },
2205
+ PSYCHIATRY: {
2206
+ en: "Psychiatry"
2207
+ },
2208
+ PULMONOLOGY: {
2209
+ en: "Pulmonology"
2210
+ },
2211
+ RADIOLOGY: {
2212
+ en: "Radiology"
2213
+ },
2214
+ SENSORY: {
2215
+ en: "Sensory"
2216
+ },
2217
+ SPORTS: {
2218
+ en: "Sports"
2219
+ },
2220
+ SURGERY: {
2221
+ en: "Surgery"
2222
+ },
2223
+ TRANSPLANT_SURGERY: {
2224
+ en: "Transplant Surgery"
2225
+ },
2226
+ TRAUMA_MEDICINE: {
2227
+ en: "Trauma Medicine"
2228
+ },
2229
+ URGENT_CARE: {
2230
+ en: "Urgent Care"
2231
+ },
2232
+ UROLOGY: {
2233
+ en: "Urology"
2234
+ },
2235
+ VISION: {
2236
+ en: "Vision"
2237
+ },
2238
+ WOMENS_HEALTH: {
2239
+ en: "Women's Health"
2240
+ },
2241
+ WOUND_AND_BURN_CARE: {
2242
+ en: "Wound and Burn Care"
2243
+ },
2244
+ WOUND_MANAGEMENT: {
2245
+ en: "Wound Management"
2246
+ }
2247
+ };
2248
+ var shiftDisplayText = {
2249
+ TEN_HOUR: {
2250
+ en: "10 Hour"
2251
+ },
2252
+ TWELVE_HOUR: {
2253
+ en: "12 Hour"
2254
+ },
2255
+ EIGHT_HOUR: {
2256
+ en: "8 Hour"
2257
+ },
2258
+ DAY: {
2259
+ en: "Day"
2260
+ },
2261
+ EVENING: {
2262
+ en: "Evening"
2263
+ },
2264
+ FLEXIBLE: {
2265
+ en: "Flexible"
2266
+ },
2267
+ MID_SHIFT: {
2268
+ en: "Mid Shift"
2269
+ },
2270
+ MONDAY_TO_FRIDAY: {
2271
+ en: "Monday to Friday"
2272
+ },
2273
+ NIGHT: {
2274
+ en: "Night"
2275
+ },
2276
+ ON_CALL: {
2277
+ en: "On Call"
2278
+ },
2279
+ WEEKENDS: {
2280
+ en: "Weekends"
2281
+ }
2282
+ };
2283
+ var clinicalSettingDisplayText = {
2284
+ ACUTE_CARE: {
2285
+ en: "Acute Care"
2286
+ },
2287
+ AMBULATORY_SURGERY_CENTER: {
2288
+ en: "Ambulatory Surgery Center"
2289
+ },
2290
+ CLINIC: {
2291
+ en: "Clinic"
2292
+ },
2293
+ HOME_HEALTH: {
2294
+ en: "Home Health"
2295
+ },
2296
+ HOSPITAL: {
2297
+ en: "Hospital"
2298
+ },
2299
+ INPATIENT: {
2300
+ en: "Inpatient"
2301
+ },
2302
+ LONG_TERM_CARE: {
2303
+ en: "Long Term Care"
2304
+ },
2305
+ MED_SPA: {
2306
+ en: "Med Spa"
2307
+ },
2308
+ NURSING_HOME: {
2309
+ en: "Nursing Home"
2310
+ },
2311
+ OFFICE: {
2312
+ en: "Office"
2313
+ },
2314
+ OUTPATIENT: {
2315
+ en: "Outpatient"
2316
+ },
2317
+ PRIVATE_PRACTICE: {
2318
+ en: "Private Practice"
2319
+ },
2320
+ REHAB_CENTER: {
2321
+ en: "Rehab Center"
2322
+ },
2323
+ SCHOOL: {
2324
+ en: "School"
2325
+ },
2326
+ SKILLED_NURSING_FACILITY: {
2327
+ en: "Skilled Nursing Facility"
2328
+ }
2329
+ };
2330
+ var defaultMappings = {
2331
+ employmentType: employmentTypeDisplayText,
2332
+ unitText: unitTextDisplayText,
2333
+ currency: currencyDisplayText,
2334
+ employmentLevel: employmentLevelDisplayText,
2335
+ jobFunction: jobFunctionDisplayText,
2336
+ bestFit: bestFitDisplayText,
2337
+ clinicalSpecialty: clinicalSpecialtyDisplayText,
2338
+ clinicalSetting: clinicalSettingDisplayText,
2339
+ shift: shiftDisplayText
2340
+ };
2341
+
2342
+ // src/types/displayText.errors.tsx
2343
+ var DisplayTextScopeNotFoundError = class extends Error {
2344
+ constructor(scope) {
2345
+ super(`No display text mapping found for scope: ${scope}`);
2346
+ this.name = "DisplayTextScopeNotFoundError";
2347
+ }
2348
+ };
2349
+ var DisplayTextValueNotFoundError = class extends Error {
2350
+ constructor(value, scope) {
2351
+ super(`No display text found for value: '${value}' in scope: '${scope}'`);
2352
+ this.name = "DisplayTextValueNotFoundError";
2353
+ }
2354
+ };
2355
+
2356
+ // src/services/displayText.tsx
2357
+ var DisplayTextService = class {
2358
+ constructor(customMappings) {
2359
+ this.defaultLanguage = "en";
2360
+ this.mappings = {
2361
+ ...defaultMappings,
2362
+ // Use all pre-defined mappings as defaults
2363
+ ...customMappings
2364
+ // Override with any custom mappings if provided
2365
+ };
2366
+ }
2367
+ async getDisplayText(scope, value, language = this.defaultLanguage) {
2368
+ const scopeMapping = this.mappings[scope];
2369
+ if (!scopeMapping) {
2370
+ throw new DisplayTextScopeNotFoundError(scope);
2371
+ }
2372
+ if (Array.isArray(value)) {
2373
+ const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
2374
+ const displayTexts2 = await Promise.all(displayTextPromises);
2375
+ return displayTexts2.filter((v) => !!v).join(", ");
2376
+ }
2377
+ const displayTexts = scopeMapping[value];
2378
+ if (!displayTexts) {
2379
+ throw new DisplayTextValueNotFoundError(value, scope);
2380
+ }
2381
+ return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
2382
+ }
2383
+ };
2384
+
2385
+ // src/hooks/useDisplayText.ts
2386
+ var useDisplayText = (scope, value) => {
2387
+ const [displayText, setDisplayText] = useState7("");
2388
+ const displayService = useMemo2(() => new DisplayTextService(), []);
2389
+ useEffect7(() => {
2390
+ if (!displayService || !value) {
2391
+ setDisplayText("");
2392
+ return;
2393
+ }
2394
+ void (async () => {
2395
+ try {
2396
+ const result = await displayService.getDisplayText(scope, value);
2397
+ if (typeof result === "string") {
2398
+ setDisplayText(result);
2399
+ } else {
2400
+ console.error("Expected a string result, but got:", result);
2401
+ }
2402
+ } catch (error) {
2403
+ if (error instanceof DisplayTextValueNotFoundError) {
2404
+ console.warn("Display text value not found:", value);
2405
+ setDisplayText(String(value));
2406
+ } else {
2407
+ console.error("Unexpected error formatting text:", error);
2408
+ setDisplayText(String(value));
2409
+ }
2410
+ }
2411
+ })();
2412
+ }, [scope, value, displayService]);
2413
+ return displayText;
2414
+ };
2415
+
2416
+ // src/lib/locations.ts
2417
+ function formattedAddress(address) {
2418
+ const { addressLocality, addressRegion, addressCountry } = address;
2419
+ if (addressLocality && addressRegion) return `${addressLocality}, ${addressRegion}`;
2420
+ if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry}`;
2421
+ if (addressRegion) return addressRegion;
2422
+ if (addressCountry) return addressCountry;
2423
+ return null;
2424
+ }
2425
+ function formattedJobLocation(job) {
2426
+ const address = job.jobLocation && formattedAddress(job.jobLocation);
2427
+ const remote = job.isRemote ? "Remote" : "";
2428
+ return [address, remote].filter(Boolean).join(" | ");
2429
+ }
2430
+
2431
+ // src/components/jobPost/JobPost.tsx
2432
+ import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
2433
+ function JobPost({
2434
+ job,
2435
+ bannerSrc,
2436
+ avatarSrc,
2437
+ standalone,
2438
+ fallbackHref,
2439
+ actions
2440
+ }) {
2441
+ const formattedEmploymentType = useDisplayText("employmentType", job.employmentType);
2442
+ const formattedEmploymentLevel = useDisplayText("employmentLevel", job.employmentLevel);
2443
+ const formattedJobFunction = useDisplayText("jobFunction", job.jobFunction);
2444
+ const formattedLocation = formattedJobLocation(job);
2445
+ const formattedSalary = salaryRange(job.estimatedSalary);
2446
+ const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted), {
2447
+ addSuffix: true
2448
+ });
2449
+ const tags = [
2450
+ !!formattedSalary && {
2451
+ icon: "banknote",
2452
+ name: "salary",
2453
+ label: `${formattedSalary} a year`
2454
+ },
2455
+ !!formattedEmploymentType && {
2456
+ icon: "briefcase-business",
2457
+ name: "employmentType",
2458
+ label: formattedEmploymentType
2459
+ },
2460
+ !!formattedEmploymentLevel && {
2461
+ icon: "circle-user",
2462
+ name: "level",
2463
+ label: formattedEmploymentLevel
2464
+ },
2465
+ !!formattedJobFunction && {
2466
+ icon: "briefcase-business",
2467
+ name: "jobFunction",
2468
+ label: formattedJobFunction
2469
+ },
2470
+ !!formattedLocation && {
2471
+ icon: "map-pin",
2472
+ name: "location",
2473
+ label: formattedLocation
2474
+ }
2475
+ ].filter((t) => !!t);
2476
+ return /* @__PURE__ */ jsxs18(
2477
+ "div",
2478
+ {
2479
+ className: cn(
2480
+ "flex flex-col gap-10 pb-4",
2481
+ !standalone && "border-1 rounded-3xl border-grey-5"
2482
+ ),
2483
+ children: [
2484
+ /* @__PURE__ */ jsx31(
2485
+ JobHeader,
2486
+ {
2487
+ title: job.title,
2488
+ bannerSrc,
2489
+ avatarName: job.hiringOrganization?.companyName,
2490
+ subtitles: [job.hiringOrganization?.companyName ?? "", `Posted ${formattedDate}`],
2491
+ actions,
2492
+ standalone,
2493
+ backFallbackHref: fallbackHref,
2494
+ tags
2495
+ }
2496
+ ),
2497
+ /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-8 px-6", children: [
2498
+ /* @__PURE__ */ jsx31(JobDescription, { description: job.description }),
2499
+ /* @__PURE__ */ jsx31(
2500
+ CompanyTake,
2501
+ {
2502
+ avatarSrc,
2503
+ content: job.hiringOrganization?.companyNDG?.companyNDGTake
2504
+ }
2505
+ ),
2506
+ /* @__PURE__ */ jsx31(
2507
+ CompanyInformation,
2508
+ {
2509
+ name: job.hiringOrganization?.companyName ?? "",
2510
+ how: job.hiringOrganization?.companyPhilosophy?.companyHow,
2511
+ mission: job.hiringOrganization?.companyPhilosophy?.mission,
2512
+ wow: job.hiringOrganization?.companyNDG?.companyWow,
2513
+ website: job.hiringOrganization?.companyWebsite
2514
+ }
2515
+ ),
2516
+ /* @__PURE__ */ jsx31(
2517
+ CompanyBenefits,
2518
+ {
2519
+ benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.description).filter((d) => d !== void 0)
2520
+ }
2521
+ )
2522
+ ] })
2523
+ ]
2524
+ }
2525
+ );
2526
+ }
2527
+
2528
+ // src/types/data/job_posting_service_latest.ts
2529
+ var job_posting_service_latest_exports = {};
2530
+ __export(job_posting_service_latest_exports, {
2531
+ BestFitEnum: () => BestFitEnum,
2532
+ ClinicalLicenseEnum: () => ClinicalLicenseEnum,
2533
+ ClinicalSettingEnum: () => ClinicalSettingEnum,
2534
+ ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
2535
+ EmploymentLevelEnum: () => EmploymentLevelEnum,
2536
+ EmploymentTypeEnum: () => EmploymentTypeEnum,
2537
+ JobFunctionEnum: () => JobFunctionEnum,
2538
+ JobLocationTypeEnum: () => JobLocationTypeEnum,
2539
+ PublishStatusEnum: () => PublishStatusEnum2,
2540
+ ShiftEnum: () => ShiftEnum,
2541
+ TypeEnum: () => TypeEnum3,
2542
+ jobPostSchema: () => jobPostSchema
2543
+ });
2544
+ import { z as z3 } from "zod";
2545
+
2546
+ // src/types/data/company_service_latest.ts
2547
+ var company_service_latest_exports = {};
2548
+ __export(company_service_latest_exports, {
2549
+ CategoryEnum: () => CategoryEnum,
2550
+ OfficeTypeEnum: () => OfficeTypeEnum,
2551
+ PublishStatusEnum: () => PublishStatusEnum,
2552
+ TitleEnum: () => TitleEnum,
2553
+ TypeEnum: () => TypeEnum2,
2554
+ companyBenefitsSchema: () => companyBenefitsSchema,
2555
+ companyCareersPageSchema: () => companyCareersPageSchema,
2556
+ companyNdgSchema: () => companyNdgSchema,
2557
+ companyPhilosophySchema: () => companyPhilosophySchema,
2558
+ companySchema: () => companySchema,
2559
+ foundingInformationSchema: () => foundingInformationSchema,
2560
+ imageSchema: () => imageSchema,
2561
+ industrySchema: () => industrySchema,
2562
+ jobBoardSchema: () => jobBoardSchema,
2563
+ ngdMetadataSchema: () => ngdMetadataSchema,
2564
+ officeSchema: () => officeSchema,
2565
+ personSchema: () => personSchema,
2566
+ socialMediaSchema: () => socialMediaSchema
2567
+ });
2568
+ import { z as z2 } from "zod";
2569
+ var TypeEnum2 = z2.enum(["OFFICE"]);
2570
+ var CategoryEnum = z2.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
2571
+ var TitleEnum = z2.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
2572
+ var PublishStatusEnum = z2.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
2573
+ var OfficeTypeEnum = z2.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
2574
+ var imageSchema = z2.object({
2575
+ version: z2.literal("1.0.0").default("1.0.0"),
2576
+ url: z2.string()
2577
+ });
2578
+ var socialMediaSchema = z2.object({
2579
+ version: z2.literal("1.0.0").default("1.0.0"),
2580
+ url: z2.string().describe("The link to the social media platform"),
2581
+ type: z2.string().describe("The type of social media link")
2582
+ });
2583
+ var companyBenefitsSchema = z2.object({
2584
+ version: z2.literal("1.0.0").default("1.0.0"),
2585
+ type: z2.string().describe("Document type used within sanity"),
2586
+ name: z2.string(),
2587
+ description: z2.optional(z2.string()),
2588
+ category: CategoryEnum
2589
+ });
2590
+ var industrySchema = z2.lazy(() => z2.object({
2591
+ version: z2.literal("1.0.0").default("1.0.0"),
2592
+ type: z2.string().describe("Document type used within sanity"),
2593
+ name: z2.string(),
2594
+ description: z2.optional(z2.string()).describe("A brief description of the industry"),
2595
+ onetIndustryId: z2.optional(z2.string()).describe("ONET industry ID"),
2596
+ parent: z2.optional(industrySchema)
2597
+ }));
2598
+ var jobBoardSchema = z2.object({
2599
+ version: z2.literal("1.0.0").default("1.0.0"),
2600
+ type: z2.string().describe("Document type used within sanity"),
2601
+ name: z2.string().describe("The name of the job board"),
2602
+ description: z2.string().describe("A brief description of the job board"),
2603
+ logo: z2.optional(imageSchema).describe("The logo of the job board"),
2604
+ baseUrl: z2.optional(z2.string()).describe("The base URL of the job board")
2605
+ });
2606
+ var personSchema = z2.object({
2607
+ version: z2.literal("1.0.0").default("1.0.0"),
2608
+ type: z2.string().describe("Document type used within sanity"),
2609
+ firstName: z2.string().describe("The first name of the person"),
2610
+ lastName: z2.string().describe("The last name of the person"),
2611
+ title: z2.optional(z2.array(z2.string())).describe("The titles of the degree of the person"),
2612
+ slug: z2.string().describe("person slug - should be familyname-givenname-title(s)"),
2613
+ jobTitle: z2.optional(z2.string()).describe("The job title of the person"),
2614
+ isDoctor: z2.optional(z2.boolean()).describe("Is the person a doctor"),
2615
+ isMedical: z2.optional(z2.boolean()).describe("Are they of a medical background?"),
2616
+ isScientist: z2.optional(z2.boolean()).describe("Are they a scientist?"),
2617
+ image: z2.optional(imageSchema).describe("The image of the person"),
2618
+ email: z2.optional(z2.string()).describe("The email of the person"),
2619
+ socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the person"),
2620
+ telephone: z2.optional(z2.string()).describe("The telephone number of the person"),
2621
+ url: z2.optional(z2.string()).describe("The URL of the person"),
2622
+ address: z2.optional(placeSchema).describe("The address of the person")
2623
+ });
2624
+ var companyCareersPageSchema = z2.object({
2625
+ version: z2.literal("1.0.0").default("1.0.0"),
2626
+ companyCareersUrl: z2.string().describe("The URL of the company careers page"),
2627
+ companyJobBoard: z2.optional(jobBoardSchema),
2628
+ jobBoardSlug: z2.array(z2.string()),
2629
+ companyBenefits: z2.optional(z2.array(companyBenefitsSchema)).describe("What are the specific benefits of that company. The benefit is generic.")
2630
+ });
2631
+ var companyPhilosophySchema = z2.object({
2632
+ version: z2.literal("1.0.0").default("1.0.0"),
2633
+ mission: z2.optional(z2.string()).describe("The mission statement of the company."),
2634
+ companyHow: z2.optional(z2.string()).describe("How does the company achieve its mission"),
2635
+ companyCulture: z2.optional(z2.array(z2.string())).describe("What are some of the culture aspects of this company?")
2636
+ });
2637
+ var companyNdgSchema = z2.object({
2638
+ version: z2.literal("1.0.0").default("1.0.0"),
2639
+ companyWow: z2.optional(z2.string()).describe("What is the wow of this company?"),
2640
+ companyNDGTake: z2.optional(z2.string()).describe("What is the NDG POV on this company?"),
2641
+ // Manually edited due to a different naming convention
2642
+ companyBestFit: z2.optional(z2.array(z2.string())),
2643
+ companyInterests: z2.optional(z2.array(z2.string()))
2644
+ });
2645
+ var foundingInformationSchema = z2.object({
2646
+ version: z2.literal("1.0.0").default("1.0.0"),
2647
+ foundedYear: z2.optional(z2.string()),
2648
+ foundingCountry: z2.optional(z2.string()),
2649
+ foundingCity: z2.optional(z2.string()),
2650
+ founders: z2.optional(z2.array(personSchema))
2651
+ });
2652
+ var ngdMetadataSchema = z2.object({
2653
+ version: z2.literal("1.0.0").default("1.0.0"),
2654
+ lastScraped: z2.optional(z2.string()).describe("Date the last entity was scraped, if applicable"),
2655
+ scraperVersion: z2.optional(z2.string()),
2656
+ postProcessorVersion: z2.optional(z2.string()),
2657
+ uniqueRunId: z2.optional(z2.string()),
2658
+ postProcessorUniqueRunId: z2.optional(z2.string()),
2659
+ shouldThisDocumentBeScraped: z2.optional(z2.boolean())
2660
+ });
2661
+ var companySchema = z2.object({
2662
+ version: z2.literal("1.0.0").default("1.0.0"),
2663
+ companyName: z2.string().describe("The name of the company"),
2664
+ slug: z2.string().describe("The NDG specific slug for a company."),
2665
+ type: z2.string().describe("Document type used within sanity"),
2666
+ logo: z2.optional(imageSchema).describe("The logo of the company"),
2667
+ companyWebsite: z2.optional(z2.string()).describe("The website of the company"),
2668
+ socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the company"),
2669
+ brandColor: z2.optional(z2.string()).describe("The brand color of the company"),
2670
+ companyCareers: z2.optional(companyCareersPageSchema).describe("Career Specific Information for the company."),
2671
+ companyPhilosophy: z2.optional(companyPhilosophySchema).describe("Company mission,values and how the company achieves its mission."),
2672
+ companyNDG: z2.optional(companyNdgSchema).describe("Next Degree specific information for the company."),
2673
+ // Manually edited due to a different naming convention
2674
+ foundingInfo: z2.optional(foundingInformationSchema),
2675
+ headquartersLocation: z2.optional(placeSchema),
2676
+ employeeEstimate: z2.optional(z2.string()),
2677
+ publishStatus: z2.optional(z2.string()),
2678
+ ngdMetadata: z2.optional(ngdMetadataSchema)
2679
+ });
2680
+ var officeSchema = z2.object({
2681
+ version: z2.literal("1.0.0").default("1.0.0"),
2682
+ type: z2.string().describe("Document type used within sanity"),
2683
+ name: z2.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
2684
+ officeType: OfficeTypeEnum,
2685
+ companyId: z2.optional(companySchema),
2686
+ geoLocation: z2.optional(placeSchema).describe("Geographical location details: coordinates + postal address"),
2687
+ createdAt: z2.optional(z2.string()),
2688
+ updatedAt: z2.optional(z2.string())
2689
+ });
2690
+
2691
+ // src/types/data/job_posting_service_latest.ts
2692
+ var TypeEnum3 = z3.enum(["JOB_POST"]);
2693
+ var JobLocationTypeEnum = z3.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
2694
+ var EmploymentTypeEnum = z3.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
2695
+ var EmploymentLevelEnum = z3.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
2696
+ 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"]);
2697
+ var PublishStatusEnum2 = z3.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
2698
+ 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"]);
2699
+ var ClinicalLicenseEnum = z3.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
2700
+ var ShiftEnum = z3.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
2701
+ 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"]);
2702
+ 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"]);
2703
+ var jobPostSchema = z3.object({
2704
+ version: z3.literal("1.0.0").default("1.0.0"),
2705
+ 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."),
2706
+ type: z3.string().describe("Document type used within sanity"),
2707
+ createdAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
2708
+ updatedAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
2709
+ dateAdded: z3.optional(z3.string().datetime()).describe("The date the job was added to the platform"),
2710
+ datePosted: z3.optional(z3.string().datetime()).describe("The date the job was published for public viewing"),
2711
+ dateRemoved: z3.optional(z3.string().datetime()).describe("The date the job was removed from public viewing"),
2712
+ 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"),
2713
+ vacancyCount: z3.optional(z3.number().int()).describe("The number of vacancies for a given job posting"),
2714
+ 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"),
2715
+ url: z3.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
2716
+ title: z3.string().describe("The title of the job post"),
2717
+ description: z3.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
2718
+ richTextDescription: z3.optional(z3.string()).describe("The description of the job post saved as rich text"),
2719
+ 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."),
2720
+ 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)."),
2721
+ 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."),
2722
+ 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."),
2723
+ jobLocationType: z3.optional(z3.array(JobLocationTypeEnum)),
2724
+ employmentType: z3.optional(z3.array(EmploymentTypeEnum)),
2725
+ employmentLevel: z3.optional(EmploymentLevelEnum),
2726
+ jobFunction: z3.optional(JobFunctionEnum),
2727
+ publishStatus: PublishStatusEnum2,
2728
+ bestFit: z3.optional(z3.array(BestFitEnum)),
2729
+ clinicalLicense: z3.optional(z3.array(ClinicalLicenseEnum)),
2730
+ shift: z3.optional(z3.array(ShiftEnum)),
2731
+ clinicalSetting: z3.optional(z3.array(ClinicalSettingEnum)),
2732
+ clinicalSpecialty: z3.optional(z3.array(ClinicalSpecialtyEnum)),
2733
+ estimatedSalary: z3.optional(monetaryAmountSchema).describe("Determines the estimated salary for a given job posting"),
2734
+ jobLocation: z3.optional(postalAddressSchema).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
2735
+ 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."),
2736
+ 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."),
2737
+ hiringOrganization: z3.optional(companySchema).describe("The organization that is hiring for the role")
2738
+ });
1258
2739
  export {
2740
+ Avatar,
2741
+ BackButton,
1259
2742
  Badge,
1260
2743
  Button,
1261
2744
  Checkbox_default as Checkbox,
1262
2745
  Chip_default as Chip,
1263
2746
  Combobox,
2747
+ CompanyBenefits,
2748
+ CompanyInformation,
2749
+ company_service_latest_exports as CompanyService,
2750
+ CompanyTake,
1264
2751
  Counter,
2752
+ Icon,
1265
2753
  Input_default as Input,
2754
+ JobDescription,
2755
+ JobHeader,
2756
+ JobPost,
2757
+ job_posting_service_latest_exports as JobPostService,
1266
2758
  Label_default as Label,
2759
+ LinkButton,
1267
2760
  ListItem_default as ListItem,
2761
+ MapComponent_default as MapComponent,
1268
2762
  PlacesQueryInput_default as PlacesQueryInput,
2763
+ ReadMore,
1269
2764
  Select_default as Select,
1270
- cn
2765
+ shared_pickle_output_latest_exports as SharedService,
2766
+ WindowHistoryProvider,
2767
+ cn,
2768
+ fetchLocation,
2769
+ useDisplayText,
2770
+ useWindowHistory
1271
2771
  };
1272
2772
  //# sourceMappingURL=index.js.map