@next-degree/pickle-shared-js 0.6.50 → 0.7.51

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 (238) hide show
  1. package/dist/company_service_latest-DFxfjA2x.d.cts +4369 -0
  2. package/dist/company_service_latest-DFxfjA2x.d.ts +4369 -0
  3. package/dist/company_service_sanity--Aw-Y3Us.d.cts +7611 -0
  4. package/dist/company_service_sanity-B5FBDl-4.d.ts +7611 -0
  5. package/dist/components/buttons/BackButton.cjs +5 -1
  6. package/dist/components/buttons/BackButton.cjs.map +1 -1
  7. package/dist/components/buttons/BackButton.js +5 -1
  8. package/dist/components/buttons/BackButton.js.map +1 -1
  9. package/dist/components/company/CompanyTake.cjs +4 -2
  10. package/dist/components/company/CompanyTake.cjs.map +1 -1
  11. package/dist/components/company/CompanyTake.js +4 -2
  12. package/dist/components/company/CompanyTake.js.map +1 -1
  13. package/dist/components/jobPost/JobDescription.cjs +5 -3
  14. package/dist/components/jobPost/JobDescription.cjs.map +1 -1
  15. package/dist/components/jobPost/JobDescription.js +5 -3
  16. package/dist/components/jobPost/JobDescription.js.map +1 -1
  17. package/dist/components/jobPost/JobHeader.cjs +43 -37
  18. package/dist/components/jobPost/JobHeader.cjs.map +1 -1
  19. package/dist/components/jobPost/JobHeader.js +42 -36
  20. package/dist/components/jobPost/JobHeader.js.map +1 -1
  21. package/dist/components/jobPost/JobPost.cjs +92 -86
  22. package/dist/components/jobPost/JobPost.cjs.map +1 -1
  23. package/dist/components/jobPost/JobPost.d.cts +1 -1
  24. package/dist/components/jobPost/JobPost.d.ts +1 -1
  25. package/dist/components/jobPost/JobPost.js +92 -86
  26. package/dist/components/jobPost/JobPost.js.map +1 -1
  27. package/dist/components/primitives/avatar.cjs.map +1 -1
  28. package/dist/components/primitives/avatar.js.map +1 -1
  29. package/dist/components/primitives/command.cjs +6 -4
  30. package/dist/components/primitives/command.cjs.map +1 -1
  31. package/dist/components/primitives/command.d.cts +7 -7
  32. package/dist/components/primitives/command.d.ts +7 -7
  33. package/dist/components/primitives/command.js +6 -4
  34. package/dist/components/primitives/command.js.map +1 -1
  35. package/dist/components/primitives/dialog.cjs +4 -4
  36. package/dist/components/primitives/dialog.cjs.map +1 -1
  37. package/dist/components/primitives/dialog.js +6 -4
  38. package/dist/components/primitives/dialog.js.map +1 -1
  39. package/dist/components/primitives/input-otp.cjs +2 -2
  40. package/dist/components/primitives/input-otp.cjs.map +1 -1
  41. package/dist/components/primitives/input-otp.js +2 -2
  42. package/dist/components/primitives/input-otp.js.map +1 -1
  43. package/dist/components/primitives/popover.cjs +1 -1
  44. package/dist/components/primitives/popover.cjs.map +1 -1
  45. package/dist/components/primitives/popover.d.cts +1 -1
  46. package/dist/components/primitives/popover.d.ts +1 -1
  47. package/dist/components/primitives/popover.js +1 -1
  48. package/dist/components/primitives/popover.js.map +1 -1
  49. package/dist/components/primitives/separator.cjs.map +1 -1
  50. package/dist/components/primitives/separator.js.map +1 -1
  51. package/dist/components/primitives/tooltip.cjs.map +1 -1
  52. package/dist/components/primitives/tooltip.js.map +1 -1
  53. package/dist/components/ui/Avatar.cjs +2 -2
  54. package/dist/components/ui/Avatar.cjs.map +1 -1
  55. package/dist/components/ui/Avatar.js +4 -2
  56. package/dist/components/ui/Avatar.js.map +1 -1
  57. package/dist/components/ui/Badge.cjs.map +1 -1
  58. package/dist/components/ui/Badge.js.map +1 -1
  59. package/dist/components/ui/Button.cjs +3 -3
  60. package/dist/components/ui/Button.cjs.map +1 -1
  61. package/dist/components/ui/Button.d.cts +33 -0
  62. package/dist/components/ui/Button.d.ts +33 -0
  63. package/dist/components/ui/Button.js +5 -3
  64. package/dist/components/ui/Button.js.map +1 -1
  65. package/dist/components/ui/Checkbox.cjs.map +1 -1
  66. package/dist/components/ui/Checkbox.js.map +1 -1
  67. package/dist/components/ui/Combobox.cjs +111 -103
  68. package/dist/components/ui/Combobox.cjs.map +1 -1
  69. package/dist/components/ui/Combobox.d.cts +1 -1
  70. package/dist/components/ui/Combobox.d.ts +1 -1
  71. package/dist/components/ui/Combobox.js +108 -100
  72. package/dist/components/ui/Combobox.js.map +1 -1
  73. package/dist/components/ui/Counter.cjs +3 -1
  74. package/dist/components/ui/Counter.cjs.map +1 -1
  75. package/dist/components/ui/Counter.js +3 -1
  76. package/dist/components/ui/Counter.js.map +1 -1
  77. package/dist/components/ui/DatePicker.cjs +318 -0
  78. package/dist/components/ui/DatePicker.cjs.map +1 -0
  79. package/dist/components/ui/DatePicker.d.cts +16 -0
  80. package/dist/components/ui/DatePicker.d.ts +16 -0
  81. package/dist/components/ui/DatePicker.js +284 -0
  82. package/dist/components/ui/DatePicker.js.map +1 -0
  83. package/dist/components/ui/ErrorMessage.cjs.map +1 -1
  84. package/dist/components/ui/ErrorMessage.js.map +1 -1
  85. package/dist/components/ui/Icon.cjs.map +1 -1
  86. package/dist/components/ui/Icon.js.map +1 -1
  87. package/dist/components/ui/Input.cjs +3 -1
  88. package/dist/components/ui/Input.cjs.map +1 -1
  89. package/dist/components/ui/Input.d.cts +29 -0
  90. package/dist/components/ui/Input.d.ts +29 -0
  91. package/dist/components/ui/Input.js +3 -1
  92. package/dist/components/ui/Input.js.map +1 -1
  93. package/dist/components/ui/InputOtp.cjs +62 -58
  94. package/dist/components/ui/InputOtp.cjs.map +1 -1
  95. package/dist/components/ui/InputOtp.js +62 -58
  96. package/dist/components/ui/InputOtp.js.map +1 -1
  97. package/dist/components/ui/Label.cjs +5 -3
  98. package/dist/components/ui/Label.cjs.map +1 -1
  99. package/dist/components/ui/Label.js +7 -3
  100. package/dist/components/ui/Label.js.map +1 -1
  101. package/dist/components/ui/ListItem.cjs +7 -7
  102. package/dist/components/ui/ListItem.cjs.map +1 -1
  103. package/dist/components/ui/ListItem.js +10 -8
  104. package/dist/components/ui/ListItem.js.map +1 -1
  105. package/dist/components/ui/MapComponent.cjs.map +1 -1
  106. package/dist/components/ui/MapComponent.js +1 -1
  107. package/dist/components/ui/MapComponent.js.map +1 -1
  108. package/dist/components/ui/PlacesQueryInput.cjs +21 -13
  109. package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
  110. package/dist/components/ui/PlacesQueryInput.js +23 -13
  111. package/dist/components/ui/PlacesQueryInput.js.map +1 -1
  112. package/dist/components/ui/ReadMore.cjs +5 -3
  113. package/dist/components/ui/ReadMore.cjs.map +1 -1
  114. package/dist/components/ui/ReadMore.js +5 -3
  115. package/dist/components/ui/ReadMore.js.map +1 -1
  116. package/dist/components/ui/Select.cjs +63 -59
  117. package/dist/components/ui/Select.cjs.map +1 -1
  118. package/dist/components/ui/Select.js +61 -57
  119. package/dist/components/ui/Select.js.map +1 -1
  120. package/dist/components/ui/StepTabs.cjs.map +1 -1
  121. package/dist/components/ui/StepTabs.d.cts +1 -1
  122. package/dist/components/ui/StepTabs.d.ts +1 -1
  123. package/dist/components/ui/StepTabs.js.map +1 -1
  124. package/dist/components/ui/buttonShadcn.cjs +94 -0
  125. package/dist/components/ui/buttonShadcn.cjs.map +1 -0
  126. package/dist/components/ui/buttonShadcn.d.cts +14 -0
  127. package/dist/components/ui/buttonShadcn.d.ts +14 -0
  128. package/dist/components/ui/buttonShadcn.js +58 -0
  129. package/dist/components/ui/buttonShadcn.js.map +1 -0
  130. package/dist/components/ui/calendar.cjs +152 -0
  131. package/dist/components/ui/calendar.cjs.map +1 -0
  132. package/dist/components/ui/calendar.d.cts +11 -0
  133. package/dist/components/ui/calendar.d.ts +11 -0
  134. package/dist/components/ui/calendar.js +118 -0
  135. package/dist/components/ui/calendar.js.map +1 -0
  136. package/dist/{displayText-BCQw5Qq-.d.cts → displayText-CQRZ2fOT.d.cts} +2 -2
  137. package/dist/{displayText-Bqmpx1Va.d.ts → displayText-LlsLfkTS.d.ts} +2 -2
  138. package/dist/hooks/useDisplayText.cjs.map +1 -1
  139. package/dist/hooks/useDisplayText.d.cts +3 -3
  140. package/dist/hooks/useDisplayText.d.ts +3 -3
  141. package/dist/hooks/useDisplayText.js.map +1 -1
  142. package/dist/index.cjs +750 -728
  143. package/dist/index.cjs.map +1 -1
  144. package/dist/index.d.cts +13 -13
  145. package/dist/index.d.ts +13 -13
  146. package/dist/index.js +759 -737
  147. package/dist/index.js.map +1 -1
  148. package/dist/job_posting_service_latest-B5tqLSgo.d.cts +4247 -0
  149. package/dist/job_posting_service_latest-B5tqLSgo.d.ts +4247 -0
  150. package/dist/job_posting_service_sanity-CeX9tlpb.d.ts +8093 -0
  151. package/dist/job_posting_service_sanity-D5Znr6Ba.d.cts +8093 -0
  152. package/dist/lib/google.cjs.map +1 -1
  153. package/dist/lib/google.js.map +1 -1
  154. package/dist/lib/locations.cjs.map +1 -1
  155. package/dist/lib/locations.d.cts +2 -2
  156. package/dist/lib/locations.d.ts +2 -2
  157. package/dist/lib/locations.js.map +1 -1
  158. package/dist/lib/mappings.cjs.map +1 -1
  159. package/dist/lib/mappings.d.cts +3 -3
  160. package/dist/lib/mappings.d.ts +3 -3
  161. package/dist/lib/mappings.js.map +1 -1
  162. package/dist/lib/salaryRange.cjs.map +1 -1
  163. package/dist/lib/salaryRange.d.cts +1 -1
  164. package/dist/lib/salaryRange.d.ts +1 -1
  165. package/dist/lib/salaryRange.js.map +1 -1
  166. package/dist/lib/utils.cjs.map +1 -1
  167. package/dist/lib/utils.js.map +1 -1
  168. package/dist/services/displayText.cjs.map +1 -1
  169. package/dist/services/displayText.d.cts +3 -3
  170. package/dist/services/displayText.d.ts +3 -3
  171. package/dist/services/displayText.js.map +1 -1
  172. package/dist/shared_pickle_output_latest-Bwfg5B4p.d.cts +350 -0
  173. package/dist/shared_pickle_output_latest-Bwfg5B4p.d.ts +350 -0
  174. package/dist/styles/globals.css +275 -0
  175. package/dist/styles/globals.css.map +1 -1
  176. package/dist/types/data/company_service_latest.cjs.map +1 -1
  177. package/dist/types/data/company_service_latest.d.cts +1 -1
  178. package/dist/types/data/company_service_latest.d.ts +1 -1
  179. package/dist/types/data/company_service_latest.js.map +1 -1
  180. package/dist/types/data/job_posting_service_latest.cjs +3 -1
  181. package/dist/types/data/job_posting_service_latest.cjs.map +1 -1
  182. package/dist/types/data/job_posting_service_latest.d.cts +1 -1
  183. package/dist/types/data/job_posting_service_latest.d.ts +1 -1
  184. package/dist/types/data/job_posting_service_latest.js +3 -1
  185. package/dist/types/data/job_posting_service_latest.js.map +1 -1
  186. package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -1
  187. package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
  188. package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
  189. package/dist/types/data/shared_pickle_output_latest.js.map +1 -1
  190. package/dist/types/index.cjs +505 -0
  191. package/dist/types/index.cjs.map +1 -0
  192. package/dist/types/index.d.cts +10 -0
  193. package/dist/types/index.d.ts +10 -0
  194. package/dist/types/index.js +479 -0
  195. package/dist/types/index.js.map +1 -0
  196. package/dist/types/latest/company_service_latest.cjs +251 -0
  197. package/dist/types/latest/company_service_latest.cjs.map +1 -0
  198. package/dist/types/latest/company_service_latest.d.cts +2 -0
  199. package/dist/types/latest/company_service_latest.d.ts +2 -0
  200. package/dist/types/latest/company_service_latest.js +210 -0
  201. package/dist/types/latest/company_service_latest.js.map +1 -0
  202. package/dist/types/latest/custom/company_service_sanity.cjs +325 -0
  203. package/dist/types/latest/custom/company_service_sanity.cjs.map +1 -0
  204. package/dist/types/latest/custom/company_service_sanity.d.cts +4 -0
  205. package/dist/types/latest/custom/company_service_sanity.d.ts +4 -0
  206. package/dist/types/latest/custom/company_service_sanity.js +288 -0
  207. package/dist/types/latest/custom/company_service_sanity.js.map +1 -0
  208. package/dist/types/latest/custom/custom_sanity_models.cjs +43 -0
  209. package/dist/types/latest/custom/custom_sanity_models.cjs.map +1 -0
  210. package/dist/types/latest/custom/custom_sanity_models.d.cts +30 -0
  211. package/dist/types/latest/custom/custom_sanity_models.d.ts +30 -0
  212. package/dist/types/latest/custom/custom_sanity_models.js +17 -0
  213. package/dist/types/latest/custom/custom_sanity_models.js.map +1 -0
  214. package/dist/types/latest/custom/job_posting_service_sanity.cjs +376 -0
  215. package/dist/types/latest/custom/job_posting_service_sanity.cjs.map +1 -0
  216. package/dist/types/latest/custom/job_posting_service_sanity.d.cts +5 -0
  217. package/dist/types/latest/custom/job_posting_service_sanity.d.ts +5 -0
  218. package/dist/types/latest/custom/job_posting_service_sanity.js +331 -0
  219. package/dist/types/latest/custom/job_posting_service_sanity.js.map +1 -0
  220. package/dist/types/latest/job_posting_service_latest.cjs +293 -0
  221. package/dist/types/latest/job_posting_service_latest.cjs.map +1 -0
  222. package/dist/types/latest/job_posting_service_latest.d.cts +2 -0
  223. package/dist/types/latest/job_posting_service_latest.d.ts +2 -0
  224. package/dist/types/latest/job_posting_service_latest.js +257 -0
  225. package/dist/types/latest/job_posting_service_latest.js.map +1 -0
  226. package/dist/types/latest/shared_pickle_output_latest.cjs +109 -0
  227. package/dist/types/latest/shared_pickle_output_latest.cjs.map +1 -0
  228. package/dist/types/latest/shared_pickle_output_latest.d.cts +2 -0
  229. package/dist/types/latest/shared_pickle_output_latest.d.ts +2 -0
  230. package/dist/types/latest/shared_pickle_output_latest.js +75 -0
  231. package/dist/types/latest/shared_pickle_output_latest.js.map +1 -0
  232. package/package.json +27 -9
  233. package/dist/{company_service_latest-B7KhyYDc.d.cts → company_service_latest-8IMr2hMZ.d.cts} +142 -142
  234. package/dist/{company_service_latest-B7KhyYDc.d.ts → company_service_latest-8IMr2hMZ.d.ts} +142 -142
  235. package/dist/{job_posting_service_latest-C2z66hFK.d.cts → job_posting_service_latest-CKITrYyz.d.cts} +129 -129
  236. package/dist/{job_posting_service_latest-C2z66hFK.d.ts → job_posting_service_latest-CKITrYyz.d.ts} +129 -129
  237. package/dist/{shared_pickle_output_latest-_L9GxVle.d.cts → shared_pickle_output_latest-Cwf2EMdH.d.cts} +6 -6
  238. package/dist/{shared_pickle_output_latest-_L9GxVle.d.ts → shared_pickle_output_latest-Cwf2EMdH.d.ts} +6 -6
package/dist/index.js CHANGED
@@ -4,14 +4,11 @@ var __export = (target, all) => {
4
4
  __defProp(target, name, { get: all[name], enumerable: true });
5
5
  };
6
6
 
7
- // src/components/ui/Select.tsx
8
- import * as SelectPrimitive from "@radix-ui/react-select";
9
- import { CheckIcon, ChevronDownIcon, X } from "lucide-react";
7
+ // src/components/ui/Checkbox.tsx
8
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
9
+ import { Check, Minus } from "lucide-react";
10
10
  import {
11
- forwardRef as forwardRef3,
12
- useEffect,
13
- useRef,
14
- useState
11
+ forwardRef
15
12
  } from "react";
16
13
 
17
14
  // src/lib/utils.ts
@@ -21,267 +18,9 @@ function cn(...inputs) {
21
18
  return twMerge(clsx(inputs));
22
19
  }
23
20
 
24
- // src/components/ui/ErrorMessage.tsx
25
- import { jsx } from "react/jsx-runtime";
26
- function ErrorMessage({ message, className, ...props }) {
27
- if (!message) return null;
28
- return /* @__PURE__ */ jsx("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
29
- }
30
- var ErrorMessage_default = ErrorMessage;
31
-
32
- // src/components/primitives/tooltip.tsx
33
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
34
- import * as React from "react";
35
- import { jsx as jsx2 } from "react/jsx-runtime";
36
- var TooltipProvider = TooltipPrimitive.Provider;
37
- var Tooltip = TooltipPrimitive.Root;
38
- var TooltipTrigger = TooltipPrimitive.Trigger;
39
- var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx2(
40
- TooltipPrimitive.Content,
41
- {
42
- ref,
43
- sideOffset,
44
- className: cn(
45
- "z-50 overflow-hidden rounded-md border border-neutral-200 bg-white px-3 py-1.5 text-sm text-neutral-950 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
46
- className
47
- ),
48
- ...props
49
- }
50
- ));
51
- TooltipContent.displayName = TooltipPrimitive.Content.displayName;
52
-
53
- // src/components/ui/Label.tsx
54
- import { InfoIcon } from "lucide-react";
55
- import { jsx as jsx3, jsxs } from "react/jsx-runtime";
56
- function Label({ text, required, description, className, ...props }) {
57
- if (!text) return null;
58
- return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-row gap-1", children: [
59
- /* @__PURE__ */ jsxs(
60
- "label",
61
- {
62
- className: cn(
63
- "text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
64
- className
65
- ),
66
- ...props,
67
- children: [
68
- text,
69
- required && /* @__PURE__ */ jsx3("span", { className: "text-red-600", children: "\xA0*" })
70
- ]
71
- }
72
- ),
73
- !!description && /* @__PURE__ */ jsx3(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
74
- /* @__PURE__ */ jsx3(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx3(InfoIcon, { className: "h-4 w-4" }) }),
75
- /* @__PURE__ */ jsx3(TooltipContent, { className: "max-w-48", children: description })
76
- ] }) })
77
- ] });
78
- }
79
- var Label_default = Label;
80
-
81
- // src/components/ui/Chip.tsx
82
- import { cva } from "cva";
83
- import { twMerge as twMerge2 } from "tailwind-merge";
84
- import { jsx as jsx4 } from "react/jsx-runtime";
85
- var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ jsx4("div", { className: twMerge2(chipVariants({ variant, size, className })), ...props });
86
- var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
87
- variants: {
88
- variant: {
89
- neutral: ["text-grey-80", "border-grey-10"],
90
- primary: ["text-purple-100", "border-purple-20"],
91
- danger: ["text-pumpkin-100", "border-pumpkin-20"],
92
- onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
93
- onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
94
- },
95
- size: {
96
- small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
97
- medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
98
- }
99
- },
100
- defaultVariants: {
101
- variant: "neutral",
102
- size: "medium"
103
- }
104
- });
105
- var Chip_default = Chip;
106
-
107
- // src/components/primitives/separator.tsx
108
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
109
- import * as React2 from "react";
110
- import { jsx as jsx5 } from "react/jsx-runtime";
111
- var Separator = React2.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx5(
112
- SeparatorPrimitive.Root,
113
- {
114
- ref,
115
- decorative,
116
- orientation,
117
- className: cn(
118
- "shrink-0 bg-grey-10",
119
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
120
- className
121
- ),
122
- ...props
123
- }
124
- ));
125
- Separator.displayName = SeparatorPrimitive.Root.displayName;
126
-
127
- // src/components/ui/Select.tsx
128
- import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
129
- var Select = forwardRef3(
130
- ({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
131
- const { value, defaultValue, dir, className, onChange, ...rest } = props;
132
- const [selected, setSelected] = useState([]);
133
- const [open, setOpen] = useState(false);
134
- const containerRef = useRef(null);
135
- useEffect(() => {
136
- if (!value) return setSelected([]);
137
- setSelected(Array.isArray(value) ? value : [value]);
138
- }, [value]);
139
- const toggleOpen = () => setOpen((prev) => !prev);
140
- const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
141
- const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
142
- const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
143
- const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
144
- const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
145
- function handleChange(newValue) {
146
- if (newValue === "" && !multiselect) return;
147
- let newSelected = [];
148
- setSelected((prev) => {
149
- newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
150
- return multiselect ? newSelected : [newValue];
151
- });
152
- onChange?.(multiselect ? newSelected : newValue);
153
- }
154
- return /* @__PURE__ */ jsxs2(
155
- "div",
156
- {
157
- className: cn("flex w-full flex-col gap-1", className),
158
- ref: containerRef,
159
- "data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
160
- children: [
161
- /* @__PURE__ */ jsx6(
162
- Label_default,
163
- {
164
- text: label,
165
- htmlFor: props.name,
166
- required: props.required,
167
- description,
168
- className: classNames?.label
169
- }
170
- ),
171
- /* @__PURE__ */ jsxs2(
172
- SelectPrimitive.Root,
173
- {
174
- open,
175
- value: selected.join(","),
176
- onOpenChange: handleOnOpenChange,
177
- onValueChange: multiselect ? void 0 : handleChange,
178
- defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
179
- dir: dir === "rtl" ? "rtl" : "ltr",
180
- ...rest,
181
- children: [
182
- /* @__PURE__ */ jsxs2(
183
- SelectPrimitive.Trigger,
184
- {
185
- ref,
186
- className: cn(
187
- "group flex h-11 w-full flex-row items-center justify-between gap-3 rounded-lg border px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",
188
- classNames?.trigger
189
- ),
190
- children: [
191
- /* @__PURE__ */ jsx6("span", { className: "truncate", children: /* @__PURE__ */ jsx6(
192
- SelectPrimitive.Value,
193
- {
194
- placeholder: placeholder ?? "Select an option",
195
- "aria-label": getLabel(),
196
- children: getLabel()
197
- }
198
- ) }),
199
- /* @__PURE__ */ jsx6(
200
- ChevronDownIcon,
201
- {
202
- className: "transform text-black group-data-[state=open]:rotate-180",
203
- size: "16"
204
- }
205
- )
206
- ]
207
- }
208
- ),
209
- /* @__PURE__ */ jsx6(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ jsx6(
210
- SelectPrimitive.Content,
211
- {
212
- hideWhenDetached: true,
213
- className: "z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
214
- position: "popper",
215
- sideOffset: 4,
216
- onPointerDownOutside: toggleOpen,
217
- onKeyDown: closeOnEscape,
218
- children: /* @__PURE__ */ jsxs2(SelectPrimitive.Viewport, { children: [
219
- multiselect && !!chipLabels?.length && /* @__PURE__ */ jsx6(
220
- SelectPrimitive.Group,
221
- {
222
- className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
223
- "data-testid": "selected-labels",
224
- children: chipLabels?.map(
225
- (chip) => chip && /* @__PURE__ */ jsxs2(Chip_default, { size: "small", variant: "primary", children: [
226
- /* @__PURE__ */ jsx6("span", { children: chip.title }),
227
- /* @__PURE__ */ jsx6(
228
- X,
229
- {
230
- size: 18,
231
- "data-testid": `chip-remove-${chip.value}`,
232
- className: "cursor-pointer",
233
- onClick: () => handleChange(chip.value)
234
- }
235
- )
236
- ] }, chip.title)
237
- )
238
- }
239
- ),
240
- /* @__PURE__ */ jsx6(Separator, {}),
241
- options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ jsxs2(
242
- SelectPrimitive.Item,
243
- {
244
- value: value2,
245
- className: "group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100",
246
- "data-state": selected.includes(value2) ? "checked" : "unchecked",
247
- onKeyDown: (e) => setValueOnEnter(e, value2),
248
- onClick: () => handleChange(value2),
249
- children: [
250
- /* @__PURE__ */ jsx6(SelectPrimitive.ItemText, { children: title }),
251
- /* @__PURE__ */ jsx6(
252
- CheckIcon,
253
- {
254
- className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
255
- size: 16
256
- }
257
- )
258
- ]
259
- },
260
- id2
261
- ))
262
- ] })
263
- }
264
- ) })
265
- ]
266
- }
267
- ),
268
- /* @__PURE__ */ jsx6(ErrorMessage_default, { message: error })
269
- ]
270
- }
271
- );
272
- }
273
- );
274
- Select.displayName = "Select";
275
- var Select_default = Select;
276
-
277
21
  // src/components/ui/Checkbox.tsx
278
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
279
- import { Check, Minus } from "lucide-react";
280
- import {
281
- forwardRef as forwardRef4
282
- } from "react";
283
- import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
284
- var CheckboxToggle = forwardRef4(({ className, ...props }, ref) => /* @__PURE__ */ jsx7(
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ var CheckboxToggle = forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
285
24
  CheckboxPrimitive.Root,
286
25
  {
287
26
  ref,
@@ -311,95 +50,131 @@ var CheckboxToggle = forwardRef4(({ className, ...props }, ref) => /* @__PURE__
311
50
  className
312
51
  ),
313
52
  ...props,
314
- children: /* @__PURE__ */ jsxs3(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
315
- /* @__PURE__ */ jsx7(Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
316
- /* @__PURE__ */ jsx7(Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
53
+ children: /* @__PURE__ */ jsxs(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
54
+ /* @__PURE__ */ jsx(Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
55
+ /* @__PURE__ */ jsx(Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
317
56
  ] })
318
57
  }
319
58
  ));
320
59
  CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
321
- var Checkbox = forwardRef4(
60
+ var Checkbox = forwardRef(
322
61
  ({ classNames, children, ...props }, ref) => {
323
62
  const { disabled } = props;
324
63
  const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
325
64
  const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
326
- return /* @__PURE__ */ jsxs3("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
327
- /* @__PURE__ */ jsx7(CheckboxToggle, { id, disabled, ref, ...props }),
328
- /* @__PURE__ */ jsx7("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
65
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
66
+ /* @__PURE__ */ jsx(CheckboxToggle, { id, disabled, ref, ...props }),
67
+ /* @__PURE__ */ jsx("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
329
68
  ] });
330
69
  }
331
70
  );
332
71
  Checkbox.displayName = "Checkbox";
333
72
  var Checkbox_default = Checkbox;
334
73
 
335
- // src/components/ui/ListItem.tsx
336
- import { CheckIcon as CheckIcon2 } from "lucide-react";
337
- import { icons } from "lucide-react";
338
- import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
339
- function ListItem({
340
- icon,
341
- hasCheckbox,
342
- isSelected,
343
- className,
344
- title,
345
- value,
346
- description,
347
- ...props
348
- }) {
349
- const getIconIfValid = (icon2) => {
350
- if (icon2 in icons) {
351
- const IconComponent = icons[icon2];
352
- return /* @__PURE__ */ jsx8(IconComponent, { size: 14 });
353
- }
354
- return null;
355
- };
356
- const optionIcon = icon ? getIconIfValid(icon) : void 0;
357
- return /* @__PURE__ */ jsxs4(
358
- "li",
359
- {
360
- className: cn(
361
- "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
362
- className
363
- ),
364
- ...props,
365
- "data-state": isSelected ? "checked" : "unchecked",
366
- children: [
367
- optionIcon && /* @__PURE__ */ jsx8("span", { className: "mr-2", children: optionIcon }),
368
- hasCheckbox && /* @__PURE__ */ jsx8(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
369
- /* @__PURE__ */ jsxs4("div", { children: [
370
- /* @__PURE__ */ jsx8("p", { children: title }),
371
- /* @__PURE__ */ jsx8("p", { className: "text-xs text-grey-80", children: description })
372
- ] }),
373
- /* @__PURE__ */ jsx8(
374
- CheckIcon2,
375
- {
376
- className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
377
- size: 16
378
- }
379
- )
380
- ]
74
+ // src/components/ui/Chip.tsx
75
+ import { cva } from "cva";
76
+ import { twMerge as twMerge2 } from "tailwind-merge";
77
+ import { jsx as jsx2 } from "react/jsx-runtime";
78
+ var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ jsx2("div", { className: twMerge2(chipVariants({ variant, size, className })), ...props });
79
+ var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
80
+ variants: {
81
+ variant: {
82
+ neutral: ["text-grey-80", "border-grey-10"],
83
+ primary: ["text-purple-100", "border-purple-20"],
84
+ danger: ["text-pumpkin-100", "border-pumpkin-20"],
85
+ onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
86
+ onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
87
+ },
88
+ size: {
89
+ small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
90
+ medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
381
91
  }
382
- );
92
+ },
93
+ defaultVariants: {
94
+ variant: "neutral",
95
+ size: "medium"
96
+ }
97
+ });
98
+ var Chip_default = Chip;
99
+
100
+ // src/components/ui/Input.tsx
101
+ import { cva as cva2 } from "cva";
102
+ import { icons, X } from "lucide-react";
103
+ import { forwardRef as forwardRef3 } from "react";
104
+
105
+ // src/components/ui/ErrorMessage.tsx
106
+ import { jsx as jsx3 } from "react/jsx-runtime";
107
+ function ErrorMessage({ message, className, ...props }) {
108
+ if (!message) return null;
109
+ return /* @__PURE__ */ jsx3("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
110
+ }
111
+ var ErrorMessage_default = ErrorMessage;
112
+
113
+ // src/components/ui/Label.tsx
114
+ import { InfoIcon } from "lucide-react";
115
+
116
+ // src/components/primitives/tooltip.tsx
117
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
118
+ import * as React from "react";
119
+ import { jsx as jsx4 } from "react/jsx-runtime";
120
+ var TooltipProvider = TooltipPrimitive.Provider;
121
+ var Tooltip = TooltipPrimitive.Root;
122
+ var TooltipTrigger = TooltipPrimitive.Trigger;
123
+ var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx4(
124
+ TooltipPrimitive.Content,
125
+ {
126
+ ref,
127
+ sideOffset,
128
+ className: cn(
129
+ "z-50 overflow-hidden rounded-md border border-neutral-200 bg-white px-3 py-1.5 text-sm text-neutral-950 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
130
+ className
131
+ ),
132
+ ...props
133
+ }
134
+ ));
135
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
136
+
137
+ // src/components/ui/Label.tsx
138
+ import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
139
+ function Label({ text, required, description, className, ...props }) {
140
+ if (!text) return null;
141
+ return /* @__PURE__ */ jsxs2("div", { className: "flex w-full flex-row gap-1", children: [
142
+ /* @__PURE__ */ jsxs2(
143
+ "label",
144
+ {
145
+ className: cn(
146
+ "text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
147
+ className
148
+ ),
149
+ ...props,
150
+ children: [
151
+ text,
152
+ required && /* @__PURE__ */ jsx5("span", { className: "text-red-600", children: "\xA0*" })
153
+ ]
154
+ }
155
+ ),
156
+ !!description && /* @__PURE__ */ jsx5(TooltipProvider, { children: /* @__PURE__ */ jsxs2(Tooltip, { children: [
157
+ /* @__PURE__ */ jsx5(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx5(InfoIcon, { className: "h-4 w-4" }) }),
158
+ /* @__PURE__ */ jsx5(TooltipContent, { className: "max-w-48", children: description })
159
+ ] }) })
160
+ ] });
383
161
  }
384
- var ListItem_default = ListItem;
162
+ var Label_default = Label;
385
163
 
386
164
  // src/components/ui/Input.tsx
387
- import { cva as cva2 } from "cva";
388
- import { icons as icons2, X as X2 } from "lucide-react";
389
- import { forwardRef as forwardRef5 } from "react";
390
- import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
391
- var Input = forwardRef5(
165
+ import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
166
+ var Input = forwardRef3(
392
167
  ({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
393
168
  const handleClear = () => {
394
169
  onChange?.({ target: { value: "" } });
395
170
  onClear?.();
396
171
  };
397
- const IconComponent = icon && icons2[icon];
172
+ const IconComponent = icon && icons[icon];
398
173
  const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
399
174
  const hasIcon = !!icon;
400
175
  const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
401
- return /* @__PURE__ */ jsxs5("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
402
- label && /* @__PURE__ */ jsx9(
176
+ return /* @__PURE__ */ jsxs3("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
177
+ label && /* @__PURE__ */ jsx6(
403
178
  Label_default,
404
179
  {
405
180
  text: label,
@@ -409,14 +184,14 @@ var Input = forwardRef5(
409
184
  className: classNames?.label
410
185
  }
411
186
  ),
412
- /* @__PURE__ */ jsxs5("div", { className: "relative flex flex-row items-center", children: [
413
- IconComponent && /* @__PURE__ */ jsx9(
187
+ /* @__PURE__ */ jsxs3("div", { className: "relative flex flex-row items-center", children: [
188
+ IconComponent && /* @__PURE__ */ jsx6(
414
189
  IconComponent,
415
190
  {
416
191
  className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
417
192
  }
418
193
  ),
419
- /* @__PURE__ */ jsx9(
194
+ /* @__PURE__ */ jsx6(
420
195
  "input",
421
196
  {
422
197
  className: cn(inputVariants({ theme, hasIcon })),
@@ -428,8 +203,8 @@ var Input = forwardRef5(
428
203
  ...props
429
204
  }
430
205
  ),
431
- hasIcon && value && /* @__PURE__ */ jsx9(
432
- X2,
206
+ hasIcon && value && /* @__PURE__ */ jsx6(
207
+ X,
433
208
  {
434
209
  className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
435
210
  onClick: handleClear,
@@ -437,7 +212,7 @@ var Input = forwardRef5(
437
212
  }
438
213
  )
439
214
  ] }),
440
- /* @__PURE__ */ jsx9(ErrorMessage_default, { message: error })
215
+ /* @__PURE__ */ jsx6(ErrorMessage_default, { message: error })
441
216
  ] });
442
217
  }
443
218
  );
@@ -492,9 +267,60 @@ var inputVariants = cva2(
492
267
  );
493
268
  var Input_default = Input;
494
269
 
270
+ // src/components/ui/ListItem.tsx
271
+ import { CheckIcon } from "lucide-react";
272
+ import { icons as icons2 } from "lucide-react";
273
+ import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
274
+ function ListItem({
275
+ icon,
276
+ hasCheckbox,
277
+ isSelected,
278
+ className,
279
+ title,
280
+ value,
281
+ description,
282
+ ...props
283
+ }) {
284
+ const getIconIfValid = (icon2) => {
285
+ if (icon2 in icons2) {
286
+ const IconComponent = icons2[icon2];
287
+ return /* @__PURE__ */ jsx7(IconComponent, { size: 14 });
288
+ }
289
+ return null;
290
+ };
291
+ const optionIcon = icon ? getIconIfValid(icon) : void 0;
292
+ return /* @__PURE__ */ jsxs4(
293
+ "li",
294
+ {
295
+ className: cn(
296
+ "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
297
+ className
298
+ ),
299
+ ...props,
300
+ "data-state": isSelected ? "checked" : "unchecked",
301
+ children: [
302
+ optionIcon && /* @__PURE__ */ jsx7("span", { className: "mr-2", children: optionIcon }),
303
+ hasCheckbox && /* @__PURE__ */ jsx7(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
304
+ /* @__PURE__ */ jsxs4("div", { children: [
305
+ /* @__PURE__ */ jsx7("p", { children: title }),
306
+ /* @__PURE__ */ jsx7("p", { className: "text-xs text-grey-80", children: description })
307
+ ] }),
308
+ /* @__PURE__ */ jsx7(
309
+ CheckIcon,
310
+ {
311
+ className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
312
+ size: 16
313
+ }
314
+ )
315
+ ]
316
+ }
317
+ );
318
+ }
319
+ var ListItem_default = ListItem;
320
+
495
321
  // src/components/ui/MapComponent.tsx
496
- import { APIProvider, Map, AdvancedMarker, Pin } from "@vis.gl/react-google-maps";
497
- import { jsx as jsx10 } from "react/jsx-runtime";
322
+ import { AdvancedMarker, APIProvider, Map, Pin } from "@vis.gl/react-google-maps";
323
+ import { jsx as jsx8 } from "react/jsx-runtime";
498
324
  function MapComponent({
499
325
  apiKey,
500
326
  mapId,
@@ -504,7 +330,7 @@ function MapComponent({
504
330
  }) {
505
331
  const defaultPosition = { lat: 40.715021, lng: -74.00459 };
506
332
  const defaultZoom = 11;
507
- return /* @__PURE__ */ jsx10(APIProvider, { apiKey, children: /* @__PURE__ */ jsx10("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ jsx10(
333
+ return /* @__PURE__ */ jsx8(APIProvider, { apiKey, children: /* @__PURE__ */ jsx8("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ jsx8(
508
334
  Map,
509
335
  {
510
336
  defaultZoom: position ? zoom : defaultZoom,
@@ -513,24 +339,28 @@ function MapComponent({
513
339
  keyboardShortcuts: false,
514
340
  disableDefaultUI: true,
515
341
  zoomControl: true,
516
- children: position && /* @__PURE__ */ jsx10(AdvancedMarker, { position, children: /* @__PURE__ */ jsx10(Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
342
+ children: position && /* @__PURE__ */ jsx8(AdvancedMarker, { position, children: /* @__PURE__ */ jsx8(Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
517
343
  }
518
344
  ) }) });
519
345
  }
520
346
  var MapComponent_default = MapComponent;
521
347
 
348
+ // src/components/ui/PlacesQueryInput.tsx
349
+ import { CircleX, LoaderCircle } from "lucide-react";
350
+ import { useCallback, useEffect, useRef, useState } from "react";
351
+
522
352
  // src/components/primitives/command.tsx
523
353
  import { Command as CommandPrimitive } from "cmdk";
524
354
  import { Search } from "lucide-react";
525
- import * as React4 from "react";
355
+ import * as React3 from "react";
526
356
 
527
357
  // src/components/primitives/dialog.tsx
528
358
  import * as DialogPrimitive from "@radix-ui/react-dialog";
529
- import { X as X3 } from "lucide-react";
530
- import * as React3 from "react";
531
- import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
359
+ import { X as X2 } from "lucide-react";
360
+ import * as React2 from "react";
361
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
532
362
  var DialogPortal = DialogPrimitive.Portal;
533
- var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
363
+ var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
534
364
  DialogPrimitive.Overlay,
535
365
  {
536
366
  ref,
@@ -542,31 +372,31 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
542
372
  }
543
373
  ));
544
374
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
545
- var DialogContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs6(DialogPortal, { children: [
546
- /* @__PURE__ */ jsx11(DialogOverlay, {}),
547
- /* @__PURE__ */ jsxs6(
375
+ var DialogContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs5(DialogPortal, { children: [
376
+ /* @__PURE__ */ jsx9(DialogOverlay, {}),
377
+ /* @__PURE__ */ jsxs5(
548
378
  DialogPrimitive.Content,
549
379
  {
550
380
  ref,
551
381
  className: cn(
552
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg dark:border-neutral-800 dark:bg-neutral-950",
382
+ "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-neutral-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] dark:border-neutral-800 dark:bg-neutral-950 sm:rounded-lg",
553
383
  className
554
384
  ),
555
385
  ...props,
556
386
  children: [
557
387
  children,
558
- /* @__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: [
559
- /* @__PURE__ */ jsx11(X3, { className: "h-4 w-4" }),
560
- /* @__PURE__ */ jsx11("span", { className: "sr-only", children: "Close" })
388
+ /* @__PURE__ */ jsxs5(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: [
389
+ /* @__PURE__ */ jsx9(X2, { className: "h-4 w-4" }),
390
+ /* @__PURE__ */ jsx9("span", { className: "sr-only", children: "Close" })
561
391
  ] })
562
392
  ]
563
393
  }
564
394
  )
565
395
  ] }));
566
396
  DialogContent.displayName = DialogPrimitive.Content.displayName;
567
- var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx11("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
397
+ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx9("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
568
398
  DialogHeader.displayName = "DialogHeader";
569
- var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx11(
399
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx9(
570
400
  "div",
571
401
  {
572
402
  className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
@@ -574,7 +404,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx11(
574
404
  }
575
405
  );
576
406
  DialogFooter.displayName = "DialogFooter";
577
- var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
407
+ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
578
408
  DialogPrimitive.Title,
579
409
  {
580
410
  ref,
@@ -583,7 +413,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
583
413
  }
584
414
  ));
585
415
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
586
- var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx11(
416
+ var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx9(
587
417
  DialogPrimitive.Description,
588
418
  {
589
419
  ref,
@@ -594,8 +424,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
594
424
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
595
425
 
596
426
  // src/components/primitives/command.tsx
597
- import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
598
- var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
427
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
428
+ var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
599
429
  CommandPrimitive,
600
430
  {
601
431
  ref,
@@ -607,9 +437,9 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
607
437
  }
608
438
  ));
609
439
  Command.displayName = CommandPrimitive.displayName;
610
- 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: [
611
- /* @__PURE__ */ jsx12(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
612
- /* @__PURE__ */ jsx12(
440
+ var CommandInput = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs6("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
441
+ /* @__PURE__ */ jsx10(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
442
+ /* @__PURE__ */ jsx10(
613
443
  CommandPrimitive.Input,
614
444
  {
615
445
  ref,
@@ -622,7 +452,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
622
452
  )
623
453
  ] }));
624
454
  CommandInput.displayName = CommandPrimitive.Input.displayName;
625
- var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
455
+ var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
626
456
  CommandPrimitive.List,
627
457
  {
628
458
  ref,
@@ -631,9 +461,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
631
461
  }
632
462
  ));
633
463
  CommandList.displayName = CommandPrimitive.List.displayName;
634
- var CommandEmpty = React4.forwardRef((props, ref) => /* @__PURE__ */ jsx12(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
464
+ var CommandEmpty = React3.forwardRef((props, ref) => /* @__PURE__ */ jsx10(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
635
465
  CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
636
- var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
466
+ var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
637
467
  CommandPrimitive.Group,
638
468
  {
639
469
  ref,
@@ -645,7 +475,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
645
475
  }
646
476
  ));
647
477
  CommandGroup.displayName = CommandPrimitive.Group.displayName;
648
- var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
478
+ var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
649
479
  CommandPrimitive.Separator,
650
480
  {
651
481
  ref,
@@ -654,7 +484,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
654
484
  }
655
485
  ));
656
486
  CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
657
- var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
487
+ var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx10(
658
488
  CommandPrimitive.Item,
659
489
  {
660
490
  ref,
@@ -667,7 +497,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
667
497
  ));
668
498
  CommandItem.displayName = CommandPrimitive.Item.displayName;
669
499
  var CommandShortcut = ({ className, ...props }) => {
670
- return /* @__PURE__ */ jsx12(
500
+ return /* @__PURE__ */ jsx10(
671
501
  "span",
672
502
  {
673
503
  className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
@@ -728,33 +558,37 @@ var geocode = async (address, key) => {
728
558
  };
729
559
 
730
560
  // src/components/ui/PlacesQueryInput.tsx
731
- import { CircleX, LoaderCircle } from "lucide-react";
732
- import { useState as useState2, useCallback, useRef as useRef2, useEffect as useEffect2 } from "react";
733
- import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
561
+ import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
734
562
  function PlacesQueryInput({
735
563
  apiKey,
736
564
  selected,
737
565
  onSelect,
738
566
  className
739
567
  }) {
740
- const [predictions, setPredictions] = useState2(null);
741
- const [input, setInput] = useState2(selected?.description ?? "");
742
- const [isLoadingPredictions, setIsLoadingPredictions] = useState2(false);
743
- const [shouldOpenUpward, setShouldOpenUpward] = useState2(false);
744
- const timeoutRef = useRef2(null);
745
- const inputRef = useRef2(null);
568
+ const [predictions, setPredictions] = useState(null);
569
+ const [input, setInput] = useState(selected?.description ?? "");
570
+ const [isLoadingPredictions, setIsLoadingPredictions] = useState(false);
571
+ const [shouldOpenUpward, setShouldOpenUpward] = useState(false);
572
+ const timeoutRef = useRef(null);
573
+ const inputRef = useRef(null);
746
574
  const debouncedAutocomplete = useCallback((value) => {
747
575
  if (timeoutRef.current) {
748
576
  clearTimeout(timeoutRef.current);
749
577
  }
750
578
  timeoutRef.current = setTimeout(async () => {
751
- if (value.length > 2) {
752
- setIsLoadingPredictions(true);
753
- const fetchedPredictions = await autocomplete(value, apiKey);
754
- fetchedPredictions && setIsLoadingPredictions(false);
755
- setPredictions(fetchedPredictions ?? []);
756
- } else {
757
- setPredictions(null);
579
+ try {
580
+ if (value.length > 2) {
581
+ setIsLoadingPredictions(true);
582
+ const fetchedPredictions = await autocomplete(value, apiKey);
583
+ setIsLoadingPredictions(false);
584
+ setPredictions(fetchedPredictions ?? []);
585
+ } else {
586
+ setPredictions(null);
587
+ }
588
+ } catch (error) {
589
+ setIsLoadingPredictions(false);
590
+ setPredictions([]);
591
+ console.error("Autocomplete error:", error);
758
592
  }
759
593
  }, 300);
760
594
  }, []);
@@ -773,7 +607,7 @@ function PlacesQueryInput({
773
607
  setInput("");
774
608
  };
775
609
  const handleBlur = () => setTimeout(() => setPredictions(null), 200);
776
- useEffect2(() => {
610
+ useEffect(() => {
777
611
  const checkDropdownPosition = () => {
778
612
  if (inputRef.current) {
779
613
  const rect = inputRef.current.getBoundingClientRect();
@@ -785,9 +619,9 @@ function PlacesQueryInput({
785
619
  window.addEventListener("resize", checkDropdownPosition);
786
620
  return () => window.removeEventListener("resize", checkDropdownPosition);
787
621
  }, []);
788
- return /* @__PURE__ */ jsx13("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxs8(Command, { children: [
789
- /* @__PURE__ */ jsxs8("div", { className: "relative w-full", children: [
790
- /* @__PURE__ */ jsx13(
622
+ return /* @__PURE__ */ jsx11("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ jsxs7(Command, { children: [
623
+ /* @__PURE__ */ jsxs7("div", { className: "relative w-full", children: [
624
+ /* @__PURE__ */ jsx11(
791
625
  CommandInput,
792
626
  {
793
627
  placeholder: "Type an address to search...",
@@ -796,18 +630,18 @@ function PlacesQueryInput({
796
630
  className: "truncate pr-8"
797
631
  }
798
632
  ),
799
- 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" }),
800
- input && /* @__PURE__ */ jsx13(
633
+ isLoadingPredictions && /* @__PURE__ */ jsx11(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" }),
634
+ input && /* @__PURE__ */ jsx11(
801
635
  "button",
802
636
  {
803
637
  type: "button",
804
638
  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",
805
639
  onClick: handleClear,
806
- children: /* @__PURE__ */ jsx13(CircleX, { className: "h-4 w-4 text-green-100" })
640
+ children: /* @__PURE__ */ jsx11(CircleX, { className: "h-4 w-4 text-green-100" })
807
641
  }
808
642
  )
809
643
  ] }),
810
- predictions && /* @__PURE__ */ jsxs8(
644
+ predictions && /* @__PURE__ */ jsxs7(
811
645
  CommandList,
812
646
  {
813
647
  className: cn(
@@ -815,8 +649,8 @@ function PlacesQueryInput({
815
649
  shouldOpenUpward ? "bottom-full" : "top-full"
816
650
  ),
817
651
  children: [
818
- /* @__PURE__ */ jsx13(CommandEmpty, { children: "No results" }),
819
- /* @__PURE__ */ jsx13(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsx13(
652
+ /* @__PURE__ */ jsx11(CommandEmpty, { children: "No results" }),
653
+ /* @__PURE__ */ jsx11(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ jsx11(
820
654
  CommandItem,
821
655
  {
822
656
  onSelect: () => handleSelect(prediction),
@@ -830,17 +664,284 @@ function PlacesQueryInput({
830
664
  )
831
665
  ] }) });
832
666
  }
833
- var PlacesQueryInput_default = PlacesQueryInput;
667
+ var PlacesQueryInput_default = PlacesQueryInput;
668
+
669
+ // src/components/ui/Select.tsx
670
+ import * as SelectPrimitive from "@radix-ui/react-select";
671
+ import { CheckIcon as CheckIcon2, ChevronDownIcon, X as X3 } from "lucide-react";
672
+ import {
673
+ forwardRef as forwardRef7,
674
+ useEffect as useEffect2,
675
+ useRef as useRef2,
676
+ useState as useState2
677
+ } from "react";
678
+
679
+ // src/components/primitives/separator.tsx
680
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
681
+ import * as React4 from "react";
682
+ import { jsx as jsx12 } from "react/jsx-runtime";
683
+ var Separator = React4.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx12(
684
+ SeparatorPrimitive.Root,
685
+ {
686
+ ref,
687
+ decorative,
688
+ orientation,
689
+ className: cn(
690
+ "shrink-0 bg-grey-10",
691
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
692
+ className
693
+ ),
694
+ ...props
695
+ }
696
+ ));
697
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
698
+
699
+ // src/components/ui/Select.tsx
700
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
701
+ var Select = forwardRef7(
702
+ ({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
703
+ const { value, defaultValue, dir, className, onChange, ...rest } = props;
704
+ const [selected, setSelected] = useState2([]);
705
+ const [open, setOpen] = useState2(false);
706
+ const containerRef = useRef2(null);
707
+ useEffect2(() => {
708
+ if (!value) return setSelected([]);
709
+ setSelected(Array.isArray(value) ? value : [value]);
710
+ }, [value]);
711
+ const toggleOpen = () => setOpen((prev) => !prev);
712
+ const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
713
+ const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
714
+ const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
715
+ const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
716
+ const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
717
+ function handleChange(newValue) {
718
+ if (newValue === "" && !multiselect) return;
719
+ let newSelected = [];
720
+ setSelected((prev) => {
721
+ newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
722
+ return multiselect ? newSelected : [newValue];
723
+ });
724
+ onChange?.(multiselect ? newSelected : newValue);
725
+ }
726
+ return /* @__PURE__ */ jsxs8(
727
+ "div",
728
+ {
729
+ className: cn("flex w-full flex-col gap-1", className),
730
+ ref: containerRef,
731
+ "data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
732
+ children: [
733
+ /* @__PURE__ */ jsx13(
734
+ Label_default,
735
+ {
736
+ text: label,
737
+ htmlFor: props.name,
738
+ required: props.required,
739
+ description,
740
+ className: classNames?.label
741
+ }
742
+ ),
743
+ /* @__PURE__ */ jsxs8(
744
+ SelectPrimitive.Root,
745
+ {
746
+ open,
747
+ value: selected.join(","),
748
+ onOpenChange: handleOnOpenChange,
749
+ onValueChange: multiselect ? void 0 : handleChange,
750
+ defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
751
+ dir: dir === "rtl" ? "rtl" : "ltr",
752
+ ...rest,
753
+ children: [
754
+ /* @__PURE__ */ jsxs8(
755
+ SelectPrimitive.Trigger,
756
+ {
757
+ ref,
758
+ className: cn(
759
+ "group flex h-11 w-full flex-row items-center justify-between gap-3 rounded-lg border px-4 py-3 text-sm font-normal focus:outline-purple-100 disabled:bg-grey-5 data-[placeholder]:text-grey-50 data-[placeholder]:disabled:text-grey-40",
760
+ classNames?.trigger
761
+ ),
762
+ children: [
763
+ /* @__PURE__ */ jsx13("span", { className: "truncate", children: /* @__PURE__ */ jsx13(
764
+ SelectPrimitive.Value,
765
+ {
766
+ placeholder: placeholder ?? "Select an option",
767
+ "aria-label": getLabel(),
768
+ children: getLabel()
769
+ }
770
+ ) }),
771
+ /* @__PURE__ */ jsx13(
772
+ ChevronDownIcon,
773
+ {
774
+ className: "transform text-black group-data-[state=open]:rotate-180",
775
+ size: "16"
776
+ }
777
+ )
778
+ ]
779
+ }
780
+ ),
781
+ /* @__PURE__ */ jsx13(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ jsx13(
782
+ SelectPrimitive.Content,
783
+ {
784
+ hideWhenDetached: true,
785
+ className: "z-10 max-h-[var(--radix-select-content-available-height)] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
786
+ position: "popper",
787
+ sideOffset: 4,
788
+ onPointerDownOutside: toggleOpen,
789
+ onKeyDown: closeOnEscape,
790
+ children: /* @__PURE__ */ jsxs8(SelectPrimitive.Viewport, { children: [
791
+ multiselect && !!chipLabels?.length && /* @__PURE__ */ jsx13(
792
+ SelectPrimitive.Group,
793
+ {
794
+ className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
795
+ "data-testid": "selected-labels",
796
+ children: chipLabels?.map(
797
+ (chip) => chip && /* @__PURE__ */ jsxs8(Chip_default, { size: "small", variant: "primary", children: [
798
+ /* @__PURE__ */ jsx13("span", { children: chip.title }),
799
+ /* @__PURE__ */ jsx13(
800
+ X3,
801
+ {
802
+ size: 18,
803
+ "data-testid": `chip-remove-${chip.value}`,
804
+ className: "cursor-pointer",
805
+ onClick: () => handleChange(chip.value)
806
+ }
807
+ )
808
+ ] }, chip.title)
809
+ )
810
+ }
811
+ ),
812
+ /* @__PURE__ */ jsx13(Separator, {}),
813
+ options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ jsxs8(
814
+ SelectPrimitive.Item,
815
+ {
816
+ value: value2,
817
+ className: "group relative cursor-pointer px-4 py-2 text-left text-sm hover:bg-purple-50 focus:bg-purple-50 focus:outline-none data-[state=checked]:bg-purple-50 data-[state=checked]:pr-10 data-[state=checked]:text-purple-100",
818
+ "data-state": selected.includes(value2) ? "checked" : "unchecked",
819
+ onKeyDown: (e) => setValueOnEnter(e, value2),
820
+ onClick: () => handleChange(value2),
821
+ children: [
822
+ /* @__PURE__ */ jsx13(SelectPrimitive.ItemText, { children: title }),
823
+ /* @__PURE__ */ jsx13(
824
+ CheckIcon2,
825
+ {
826
+ className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
827
+ size: 16
828
+ }
829
+ )
830
+ ]
831
+ },
832
+ id2
833
+ ))
834
+ ] })
835
+ }
836
+ ) })
837
+ ]
838
+ }
839
+ ),
840
+ /* @__PURE__ */ jsx13(ErrorMessage_default, { message: error })
841
+ ]
842
+ }
843
+ );
844
+ }
845
+ );
846
+ Select.displayName = "Select";
847
+ var Select_default = Select;
848
+
849
+ // src/components/ui/Avatar.tsx
850
+ import { cva as cva3 } from "cva";
851
+ import Link from "next/link";
852
+
853
+ // src/components/primitives/avatar.tsx
854
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
855
+ import * as React5 from "react";
856
+ import { jsx as jsx14 } from "react/jsx-runtime";
857
+ var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
858
+ AvatarPrimitive.Root,
859
+ {
860
+ ref,
861
+ className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
862
+ ...props
863
+ }
864
+ ));
865
+ AvatarBase.displayName = AvatarPrimitive.Root.displayName;
866
+ var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
867
+ AvatarPrimitive.Image,
868
+ {
869
+ ref,
870
+ className: cn("aspect-square h-full w-full", className),
871
+ "data-testid": "job-card-avatar",
872
+ ...props
873
+ }
874
+ ));
875
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
876
+ var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx14(
877
+ AvatarPrimitive.Fallback,
878
+ {
879
+ ref,
880
+ className: cn(
881
+ "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",
882
+ className
883
+ ),
884
+ ...props
885
+ }
886
+ ));
887
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
888
+
889
+ // src/components/ui/Avatar.tsx
890
+ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
891
+ function Avatar({ size, src, href, name, ...linkProps }) {
892
+ const fallbackShort = name?.slice(0, 2);
893
+ const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
894
+ const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
895
+ const renderAvatar = () => /* @__PURE__ */ jsxs9(AvatarBase, { className: avatarVariants({ size }), children: [
896
+ /* @__PURE__ */ jsx15(AvatarImage, { src, alt: name }),
897
+ /* @__PURE__ */ jsx15(AvatarFallback, { children: fallback?.toUpperCase() })
898
+ ] });
899
+ if (href) {
900
+ return /* @__PURE__ */ jsx15(Link, { href, ...linkProps, children: renderAvatar() });
901
+ }
902
+ return renderAvatar();
903
+ }
904
+ var avatarVariants = cva3("ring ring-white ring-2", {
905
+ variants: {
906
+ size: {
907
+ large: "h-16 w-16",
908
+ medium: "h-10 w-10",
909
+ small: "h-8 w-8"
910
+ }
911
+ },
912
+ defaultVariants: {
913
+ size: "medium"
914
+ }
915
+ });
916
+
917
+ // src/components/ui/Badge.tsx
918
+ import { cva as cva4 } from "cva";
919
+ import { jsx as jsx16 } from "react/jsx-runtime";
920
+ var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
921
+ variants: {
922
+ variant: {
923
+ green: "bg-green-90 text-white",
924
+ pickle: "bg-pickle-100 text-black",
925
+ purple: "bg-purple-100 text-white"
926
+ }
927
+ },
928
+ defaultVariants: {
929
+ variant: "green"
930
+ }
931
+ });
932
+ function Badge({ className, variant, ...props }) {
933
+ return /* @__PURE__ */ jsx16("div", { className: cn(badgeVariants({ variant }), className), ...props });
934
+ }
834
935
 
835
936
  // src/components/ui/Button.tsx
836
937
  import { Slot } from "@radix-ui/react-slot";
837
- import { cva as cva3 } from "cva";
838
- import { forwardRef as forwardRef8 } from "react";
839
- import { jsx as jsx14 } from "react/jsx-runtime";
840
- var Button = forwardRef8(
938
+ import { cva as cva5 } from "cva";
939
+ import { forwardRef as forwardRef9 } from "react";
940
+ import { jsx as jsx17 } from "react/jsx-runtime";
941
+ var Button = forwardRef9(
841
942
  ({ className, variant, size, asChild = false, ...props }, ref) => {
842
943
  const Component = asChild ? Slot : "button";
843
- return /* @__PURE__ */ jsx14(
944
+ return /* @__PURE__ */ jsx17(
844
945
  Component,
845
946
  {
846
947
  className: cn(buttonVariants({ variant, size, className })),
@@ -851,7 +952,7 @@ var Button = forwardRef8(
851
952
  }
852
953
  );
853
954
  Button.displayName = "Button";
854
- var buttonVariants = cva3(
955
+ var buttonVariants = cva5(
855
956
  [
856
957
  "flex",
857
958
  "items-center",
@@ -942,17 +1043,17 @@ var buttonVariants = cva3(
942
1043
  );
943
1044
 
944
1045
  // src/components/ui/Combobox.tsx
945
- import { forwardRef as forwardRef10, useEffect as useEffect3, useState as useState3 } from "react";
1046
+ import { cva as cva6 } from "cva";
946
1047
  import { ChevronDownIcon as ChevronDownIcon2, CircleX as CircleX2, icons as icons3 } from "lucide-react";
947
- import { cva as cva5 } from "cva";
1048
+ import { forwardRef as forwardRef11, useEffect as useEffect3, useState as useState3 } from "react";
948
1049
 
949
1050
  // src/components/primitives/popover.tsx
950
- import * as React6 from "react";
951
1051
  import * as PopoverPrimitive from "@radix-ui/react-popover";
952
- import { jsx as jsx15 } from "react/jsx-runtime";
1052
+ import * as React7 from "react";
1053
+ import { jsx as jsx18 } from "react/jsx-runtime";
953
1054
  var Popover = PopoverPrimitive.Root;
954
1055
  var PopoverTrigger = PopoverPrimitive.Trigger;
955
- var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx15(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx15(
1056
+ var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx18(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx18(
956
1057
  PopoverPrimitive.Content,
957
1058
  {
958
1059
  ref,
@@ -967,28 +1068,9 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
967
1068
  ) }));
968
1069
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
969
1070
 
970
- // src/components/ui/Badge.tsx
971
- import { cva as cva4 } from "cva";
972
- import { jsx as jsx16 } from "react/jsx-runtime";
973
- var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
974
- variants: {
975
- variant: {
976
- green: "bg-green-90 text-white",
977
- pickle: "bg-pickle-100 text-black",
978
- purple: "bg-purple-100 text-white"
979
- }
980
- },
981
- defaultVariants: {
982
- variant: "green"
983
- }
984
- });
985
- function Badge({ className, variant, ...props }) {
986
- return /* @__PURE__ */ jsx16("div", { className: cn(badgeVariants({ variant }), className), ...props });
987
- }
988
-
989
1071
  // src/components/ui/Combobox.tsx
990
- import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
991
- var Combobox = forwardRef10((props, ref) => {
1072
+ import { jsx as jsx19, jsxs as jsxs10 } from "react/jsx-runtime";
1073
+ var Combobox = forwardRef11((props, ref) => {
992
1074
  const {
993
1075
  id,
994
1076
  name,
@@ -1038,14 +1120,18 @@ var Combobox = forwardRef10((props, ref) => {
1038
1120
  };
1039
1121
  const handleClear = () => {
1040
1122
  setSelected([]);
1041
- multiselect ? handleChange?.([]) : handleChange?.("");
1123
+ if (multiselect) {
1124
+ handleChange?.([]);
1125
+ } else {
1126
+ handleChange?.("");
1127
+ }
1042
1128
  };
1043
1129
  const handleDisplayValue = () => {
1044
1130
  const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
1045
1131
  return isDefault ? defaultLabel : label;
1046
1132
  };
1047
- return /* @__PURE__ */ jsxs9("div", { className: cn("flex flex-col gap-1", className), children: [
1048
- isDefault && /* @__PURE__ */ jsx17(
1133
+ return /* @__PURE__ */ jsxs10("div", { className: cn("flex flex-col gap-1", className), children: [
1134
+ isDefault && /* @__PURE__ */ jsx19(
1049
1135
  Label_default,
1050
1136
  {
1051
1137
  text: label,
@@ -1055,15 +1141,15 @@ var Combobox = forwardRef10((props, ref) => {
1055
1141
  className: classNames?.label
1056
1142
  }
1057
1143
  ),
1058
- /* @__PURE__ */ jsxs9("div", { className: "relative flex", children: [
1059
- /* @__PURE__ */ jsxs9(Popover, { open, onOpenChange: setOpen, children: [
1060
- /* @__PURE__ */ jsx17(
1144
+ /* @__PURE__ */ jsxs10("div", { className: "relative flex", children: [
1145
+ /* @__PURE__ */ jsxs10(Popover, { open, onOpenChange: setOpen, children: [
1146
+ /* @__PURE__ */ jsx19(
1061
1147
  PopoverTrigger,
1062
1148
  {
1063
1149
  asChild: true,
1064
1150
  disabled: options.length === 0,
1065
1151
  "data-testid": `${id ?? name}-combobox-trigger`,
1066
- children: /* @__PURE__ */ jsxs9(
1152
+ children: /* @__PURE__ */ jsxs10(
1067
1153
  "div",
1068
1154
  {
1069
1155
  ref,
@@ -1074,9 +1160,9 @@ var Combobox = forwardRef10((props, ref) => {
1074
1160
  ),
1075
1161
  "aria-expanded": open,
1076
1162
  children: [
1077
- isDefault && IconComponent && /* @__PURE__ */ jsx17(IconComponent, { className: "h-4 w-4 shrink-0" }),
1078
- isChip && !isEmpty && /* @__PURE__ */ jsx17(Badge, { variant: "purple", children: selected.length }),
1079
- /* @__PURE__ */ jsx17(
1163
+ isDefault && IconComponent && /* @__PURE__ */ jsx19(IconComponent, { className: "h-4 w-4 shrink-0" }),
1164
+ isChip && !isEmpty && /* @__PURE__ */ jsx19(Badge, { variant: "purple", children: selected.length }),
1165
+ /* @__PURE__ */ jsx19(
1080
1166
  "span",
1081
1167
  {
1082
1168
  className: cn(
@@ -1086,7 +1172,7 @@ var Combobox = forwardRef10((props, ref) => {
1086
1172
  children: handleDisplayValue()
1087
1173
  }
1088
1174
  ),
1089
- showChevron && /* @__PURE__ */ jsx17(
1175
+ showChevron && /* @__PURE__ */ jsx19(
1090
1176
  ChevronDownIcon2,
1091
1177
  {
1092
1178
  className: "shrink-0 transform group-data-[state=open]:rotate-180",
@@ -1098,7 +1184,7 @@ var Combobox = forwardRef10((props, ref) => {
1098
1184
  )
1099
1185
  }
1100
1186
  ),
1101
- /* @__PURE__ */ jsx17(
1187
+ /* @__PURE__ */ jsx19(
1102
1188
  PopoverContent,
1103
1189
  {
1104
1190
  className: cn(
@@ -1109,16 +1195,16 @@ var Combobox = forwardRef10((props, ref) => {
1109
1195
  collisionPadding: 8,
1110
1196
  sideOffset: 4,
1111
1197
  align: "start",
1112
- children: /* @__PURE__ */ jsxs9(Command, { children: [
1113
- !hideSearchBox && /* @__PURE__ */ jsx17(CommandInput, { placeholder: "Search..." }),
1114
- /* @__PURE__ */ jsxs9(CommandList, { children: [
1115
- /* @__PURE__ */ jsx17(CommandEmpty, { children: "No results" }),
1116
- /* @__PURE__ */ jsx17(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ jsx17(
1198
+ children: /* @__PURE__ */ jsxs10(Command, { children: [
1199
+ !hideSearchBox && /* @__PURE__ */ jsx19(CommandInput, { placeholder: "Search..." }),
1200
+ /* @__PURE__ */ jsxs10(CommandList, { children: [
1201
+ /* @__PURE__ */ jsx19(CommandEmpty, { children: "No results" }),
1202
+ /* @__PURE__ */ jsx19(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ jsx19(
1117
1203
  CommandItem,
1118
1204
  {
1119
1205
  value: option.title,
1120
1206
  onSelect: () => handleSelect(option.value),
1121
- children: /* @__PURE__ */ jsx17(
1207
+ children: /* @__PURE__ */ jsx19(
1122
1208
  ListItem_default,
1123
1209
  {
1124
1210
  className: cn(classNames?.items, "truncate py-1"),
@@ -1131,26 +1217,26 @@ var Combobox = forwardRef10((props, ref) => {
1131
1217
  id2
1132
1218
  )) })
1133
1219
  ] }),
1134
- !!footer && /* @__PURE__ */ jsx17(Separator, {}),
1220
+ !!footer && /* @__PURE__ */ jsx19(Separator, {}),
1135
1221
  footer && footer({ close })
1136
1222
  ] })
1137
1223
  }
1138
1224
  )
1139
1225
  ] }),
1140
- isDefault && !isEmpty && /* @__PURE__ */ jsx17(
1226
+ isDefault && !isEmpty && /* @__PURE__ */ jsx19(
1141
1227
  "button",
1142
1228
  {
1143
1229
  type: "button",
1144
1230
  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",
1145
1231
  onClick: handleClear,
1146
- children: /* @__PURE__ */ jsx17(CircleX2, { className: "h-4 w-4 text-green-100" })
1232
+ children: /* @__PURE__ */ jsx19(CircleX2, { className: "h-4 w-4 text-green-100" })
1147
1233
  }
1148
1234
  )
1149
1235
  ] })
1150
1236
  ] });
1151
1237
  });
1152
1238
  Combobox.displayName = "Combobox";
1153
- var triggerVariants = cva5(
1239
+ var triggerVariants = cva6(
1154
1240
  "group relative cursor-pointer text-green-100 flex flex-row items-center justify-between gap-2 border border-grey-20 focus:outline-green-80 disabled:bg-grey-5",
1155
1241
  {
1156
1242
  variants: {
@@ -1177,11 +1263,11 @@ var triggerVariants = cva5(
1177
1263
  );
1178
1264
 
1179
1265
  // src/components/ui/Counter.tsx
1180
- import { cva as cva6 } from "cva";
1266
+ import { cva as cva7 } from "cva";
1181
1267
  import { Minus as Minus2, Plus } from "lucide-react";
1182
- import { forwardRef as forwardRef11, useEffect as useEffect4, useState as useState4 } from "react";
1183
- import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1184
- var Counter = forwardRef11(
1268
+ import { forwardRef as forwardRef12, useEffect as useEffect4, useState as useState4 } from "react";
1269
+ import { jsx as jsx20, jsxs as jsxs11 } from "react/jsx-runtime";
1270
+ var Counter = forwardRef12(
1185
1271
  ({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
1186
1272
  const [count, setCount] = useState4(0);
1187
1273
  useEffect4(() => {
@@ -1215,13 +1301,13 @@ var Counter = forwardRef11(
1215
1301
  onChange?.(newValue);
1216
1302
  setCount(newValue);
1217
1303
  };
1218
- return /* @__PURE__ */ jsxs10(
1304
+ return /* @__PURE__ */ jsxs11(
1219
1305
  "div",
1220
1306
  {
1221
1307
  className: cn("flex w-auto flex-col gap-1", classNames?.root),
1222
1308
  "data-testid": `counter-wrapper-${props.id}`,
1223
1309
  children: [
1224
- label && /* @__PURE__ */ jsx18(
1310
+ label && /* @__PURE__ */ jsx20(
1225
1311
  Label_default,
1226
1312
  {
1227
1313
  text: label,
@@ -1231,17 +1317,17 @@ var Counter = forwardRef11(
1231
1317
  className: classNames?.label
1232
1318
  }
1233
1319
  ),
1234
- /* @__PURE__ */ jsxs10("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1235
- /* @__PURE__ */ jsx18(
1320
+ /* @__PURE__ */ jsxs11("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1321
+ /* @__PURE__ */ jsx20(
1236
1322
  "button",
1237
1323
  {
1238
1324
  type: "button",
1239
1325
  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",
1240
1326
  onClick: decrement,
1241
- children: /* @__PURE__ */ jsx18(Minus2, { className: "h-4 w-4 text-green-100" })
1327
+ children: /* @__PURE__ */ jsx20(Minus2, { className: "h-4 w-4 text-green-100" })
1242
1328
  }
1243
1329
  ),
1244
- /* @__PURE__ */ jsx18(
1330
+ /* @__PURE__ */ jsx20(
1245
1331
  "input",
1246
1332
  {
1247
1333
  className: cn(counterVariants({ theme }), classNames?.input),
@@ -1252,24 +1338,24 @@ var Counter = forwardRef11(
1252
1338
  ...props
1253
1339
  }
1254
1340
  ),
1255
- /* @__PURE__ */ jsx18(
1341
+ /* @__PURE__ */ jsx20(
1256
1342
  "button",
1257
1343
  {
1258
1344
  type: "button",
1259
1345
  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",
1260
1346
  onClick: increment,
1261
- children: /* @__PURE__ */ jsx18(Plus, { className: "h-4 w-4 text-green-100" })
1347
+ children: /* @__PURE__ */ jsx20(Plus, { className: "h-4 w-4 text-green-100" })
1262
1348
  }
1263
1349
  )
1264
1350
  ] }),
1265
- /* @__PURE__ */ jsx18(ErrorMessage_default, { message: error })
1351
+ /* @__PURE__ */ jsx20(ErrorMessage_default, { message: error })
1266
1352
  ]
1267
1353
  }
1268
1354
  );
1269
1355
  }
1270
1356
  );
1271
1357
  Counter.displayName = "Counter";
1272
- var counterVariants = cva6(
1358
+ var counterVariants = cva7(
1273
1359
  [
1274
1360
  "border-input",
1275
1361
  "placeholder:text-muted-foreground",
@@ -1319,167 +1405,16 @@ var counterVariants = cva6(
1319
1405
  }
1320
1406
  );
1321
1407
 
1322
- // src/components/ui/InputOtp.tsx
1323
- import { forwardRef as forwardRef13 } from "react";
1324
-
1325
- // src/components/primitives/input-otp.tsx
1326
- import * as React7 from "react";
1327
- import { OTPInput, OTPInputContext } from "input-otp";
1328
- import { Dot } from "lucide-react";
1329
- import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
1330
- var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx19(
1331
- OTPInput,
1332
- {
1333
- ref,
1334
- containerClassName: cn(
1335
- "flex items-center gap-2 has-[:disabled]:opacity-50",
1336
- containerClassName
1337
- ),
1338
- className: cn("disabled:cursor-not-allowed", className),
1339
- ...props
1340
- }
1341
- ));
1342
- InputOTP.displayName = "InputOTP";
1343
- var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx19("div", { ref, className: cn("flex items-center", className), ...props }));
1344
- InputOTPGroup.displayName = "InputOTPGroup";
1345
- var InputOTPSlot = React7.forwardRef(({ index, error, className, ...props }, ref) => {
1346
- const inputOTPContext = React7.useContext(OTPInputContext);
1347
- const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1348
- return /* @__PURE__ */ jsxs11(
1349
- "div",
1350
- {
1351
- ref,
1352
- className: cn(
1353
- "relative flex h-10 w-10 items-center justify-center border-y border-r border-neutral-200 text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md dark:border-neutral-800",
1354
- isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
1355
- error && "border-red-500 dark:border-red-400",
1356
- className
1357
- ),
1358
- ...props,
1359
- children: [
1360
- char,
1361
- hasFakeCaret && /* @__PURE__ */ jsx19("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx19("div", { className: "animate-caret-blink h-4 w-px bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
1362
- ]
1363
- }
1364
- );
1365
- });
1366
- InputOTPSlot.displayName = "InputOTPSlot";
1367
- var InputOTPSeparator = React7.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx19("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx19(Dot, {}) }));
1368
- InputOTPSeparator.displayName = "InputOTPSeparator";
1369
-
1370
- // src/components/ui/InputOtp.tsx
1371
- import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
1372
- var InputOtp = forwardRef13(
1373
- ({ digits, label, description, error, ...props }, ref) => {
1374
- return /* @__PURE__ */ jsxs12(
1375
- "div",
1376
- {
1377
- className: "group flex w-full flex-col gap-1",
1378
- "data-testid": `input-otp-wrapper-${props.id}`,
1379
- children: [
1380
- label && /* @__PURE__ */ jsx20(
1381
- Label_default,
1382
- {
1383
- text: label,
1384
- htmlFor: props.name,
1385
- required: props.required,
1386
- description
1387
- }
1388
- ),
1389
- /* @__PURE__ */ jsx20("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ jsx20(
1390
- InputOTP,
1391
- {
1392
- ref,
1393
- maxLength: digits,
1394
- "data-testid": `input-otp-element-${props.id}`,
1395
- ...props,
1396
- children: [...Array(digits)].map((_, index) => /* @__PURE__ */ jsx20(InputOTPGroup, { children: /* @__PURE__ */ jsx20(InputOTPSlot, { index, error: Boolean(error) }) }, index))
1397
- }
1398
- ) }),
1399
- /* @__PURE__ */ jsx20(ErrorMessage_default, { message: error })
1400
- ]
1401
- }
1402
- );
1403
- }
1404
- );
1405
- InputOtp.displayName = "Input";
1406
-
1407
- // src/components/primitives/avatar.tsx
1408
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
1409
- import * as React8 from "react";
1410
- import { jsx as jsx21 } from "react/jsx-runtime";
1411
- var AvatarBase = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1412
- AvatarPrimitive.Root,
1413
- {
1414
- ref,
1415
- className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
1416
- ...props
1417
- }
1418
- ));
1419
- AvatarBase.displayName = AvatarPrimitive.Root.displayName;
1420
- var AvatarImage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1421
- AvatarPrimitive.Image,
1422
- {
1423
- ref,
1424
- className: cn("aspect-square h-full w-full", className),
1425
- "data-testid": "job-card-avatar",
1426
- ...props
1427
- }
1428
- ));
1429
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1430
- var AvatarFallback = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx21(
1431
- AvatarPrimitive.Fallback,
1432
- {
1433
- ref,
1434
- className: cn(
1435
- "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",
1436
- className
1437
- ),
1438
- ...props
1439
- }
1440
- ));
1441
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1442
-
1443
- // src/components/ui/Avatar.tsx
1444
- import { cva as cva7 } from "cva";
1445
- import Link from "next/link";
1446
- import { jsx as jsx22, jsxs as jsxs13 } from "react/jsx-runtime";
1447
- function Avatar({ size, src, href, name, ...linkProps }) {
1448
- const fallbackShort = name?.slice(0, 2);
1449
- const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
1450
- const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
1451
- const renderAvatar = () => /* @__PURE__ */ jsxs13(AvatarBase, { className: avatarVariants({ size }), children: [
1452
- /* @__PURE__ */ jsx22(AvatarImage, { src, alt: name }),
1453
- /* @__PURE__ */ jsx22(AvatarFallback, { children: fallback?.toUpperCase() })
1454
- ] });
1455
- if (href) {
1456
- return /* @__PURE__ */ jsx22(Link, { href, ...linkProps, children: renderAvatar() });
1457
- }
1458
- return renderAvatar();
1459
- }
1460
- var avatarVariants = cva7("ring ring-white ring-2", {
1461
- variants: {
1462
- size: {
1463
- large: "h-16 w-16",
1464
- medium: "h-10 w-10",
1465
- small: "h-8 w-8"
1466
- }
1467
- },
1468
- defaultVariants: {
1469
- size: "medium"
1470
- }
1471
- });
1472
-
1473
1408
  // src/components/ui/Icon.tsx
1474
1409
  import { Slot as Slot2 } from "@radix-ui/react-slot";
1475
1410
  import { cva as cva8 } from "cva";
1476
- import { forwardRef as forwardRef15 } from "react";
1411
+ import { forwardRef as forwardRef13 } from "react";
1477
1412
  import { twMerge as twMerge3 } from "tailwind-merge";
1478
- import { jsx as jsx23 } from "react/jsx-runtime";
1479
- var Icon = forwardRef15(
1413
+ import { jsx as jsx21 } from "react/jsx-runtime";
1414
+ var Icon = forwardRef13(
1480
1415
  ({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
1481
1416
  const Component = readonly ? Slot2 : "button";
1482
- return /* @__PURE__ */ jsx23(
1417
+ return /* @__PURE__ */ jsx21(
1483
1418
  Component,
1484
1419
  {
1485
1420
  className: cn(
@@ -1539,13 +1474,98 @@ var iconVariants = cva8(
1539
1474
  medium: ["h-12", "w-12", "p-4"],
1540
1475
  large: ["h-14", "w-14", "p-4"]
1541
1476
  }
1542
- },
1543
- defaultVariants: {
1544
- variant: "filled",
1545
- size: "medium"
1546
- }
1477
+ },
1478
+ defaultVariants: {
1479
+ variant: "filled",
1480
+ size: "medium"
1481
+ }
1482
+ }
1483
+ );
1484
+
1485
+ // src/components/ui/InputOtp.tsx
1486
+ import { forwardRef as forwardRef15 } from "react";
1487
+
1488
+ // src/components/primitives/input-otp.tsx
1489
+ import { OTPInput, OTPInputContext } from "input-otp";
1490
+ import { Dot } from "lucide-react";
1491
+ import * as React8 from "react";
1492
+ import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
1493
+ var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx22(
1494
+ OTPInput,
1495
+ {
1496
+ ref,
1497
+ containerClassName: cn(
1498
+ "flex items-center gap-2 has-[:disabled]:opacity-50",
1499
+ containerClassName
1500
+ ),
1501
+ className: cn("disabled:cursor-not-allowed", className),
1502
+ ...props
1503
+ }
1504
+ ));
1505
+ InputOTP.displayName = "InputOTP";
1506
+ var InputOTPGroup = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, className: cn("flex items-center", className), ...props }));
1507
+ InputOTPGroup.displayName = "InputOTPGroup";
1508
+ var InputOTPSlot = React8.forwardRef(({ index, error, className, ...props }, ref) => {
1509
+ const inputOTPContext = React8.useContext(OTPInputContext);
1510
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1511
+ return /* @__PURE__ */ jsxs12(
1512
+ "div",
1513
+ {
1514
+ ref,
1515
+ className: cn(
1516
+ "relative flex h-10 w-10 items-center justify-center border-y border-r border-neutral-200 text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md dark:border-neutral-800",
1517
+ isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
1518
+ error && "border-red-500 dark:border-red-400",
1519
+ className
1520
+ ),
1521
+ ...props,
1522
+ children: [
1523
+ char,
1524
+ hasFakeCaret && /* @__PURE__ */ jsx22("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx22("div", { className: "h-4 w-px animate-caret-blink bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
1525
+ ]
1526
+ }
1527
+ );
1528
+ });
1529
+ InputOTPSlot.displayName = "InputOTPSlot";
1530
+ var InputOTPSeparator = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx22("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx22(Dot, {}) }));
1531
+ InputOTPSeparator.displayName = "InputOTPSeparator";
1532
+
1533
+ // src/components/ui/InputOtp.tsx
1534
+ import { jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
1535
+ var InputOtp = forwardRef15(
1536
+ ({ digits, label, description, error, ...props }, ref) => {
1537
+ return /* @__PURE__ */ jsxs13(
1538
+ "div",
1539
+ {
1540
+ className: "group flex w-full flex-col gap-1",
1541
+ "data-testid": `input-otp-wrapper-${props.id}`,
1542
+ children: [
1543
+ label && /* @__PURE__ */ jsx23(
1544
+ Label_default,
1545
+ {
1546
+ text: label,
1547
+ htmlFor: props.name,
1548
+ required: props.required,
1549
+ description
1550
+ }
1551
+ ),
1552
+ /* @__PURE__ */ jsx23("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ jsx23(
1553
+ InputOTP,
1554
+ {
1555
+ ref,
1556
+ maxLength: digits,
1557
+ "data-testid": `input-otp-element-${props.id}`,
1558
+ ...props,
1559
+ children: [...Array(digits)].map((_, index) => /* @__PURE__ */ jsx23(InputOTPGroup, { children: /* @__PURE__ */ jsx23(InputOTPSlot, { index, error: Boolean(error) }) }, index))
1560
+ }
1561
+ ) }),
1562
+ /* @__PURE__ */ jsx23(ErrorMessage_default, { message: error })
1563
+ ]
1564
+ }
1565
+ );
1547
1566
  }
1548
1567
  );
1568
+ InputOtp.displayName = "Input";
1549
1569
 
1550
1570
  // src/components/ui/LinkButton.tsx
1551
1571
  import Link2 from "next/link";
@@ -1751,7 +1771,11 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
1751
1771
  const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
1752
1772
  const goBack = () => {
1753
1773
  const previous = history[history.length - 2];
1754
- history.length > 1 && isAcceptedRoute(previous) ? router.back() : router.push(fallbackHref ?? "/");
1774
+ if (history.length > 1 && isAcceptedRoute(previous)) {
1775
+ router.back();
1776
+ } else {
1777
+ router.push(fallbackHref ?? "/");
1778
+ }
1755
1779
  };
1756
1780
  return /* @__PURE__ */ jsx31(
1757
1781
  Icon,
@@ -1960,102 +1984,6 @@ function JobHeader({
1960
1984
  // src/components/jobPost/JobPost.tsx
1961
1985
  import * as DateFns from "date-fns";
1962
1986
 
1963
- // src/types/data/shared_pickle_output_latest.ts
1964
- var shared_pickle_output_latest_exports = {};
1965
- __export(shared_pickle_output_latest_exports, {
1966
- CurrencyEnum: () => CurrencyEnum,
1967
- DetailLevelEnum: () => DetailLevelEnum,
1968
- TypeEnum: () => TypeEnum,
1969
- UnitTextEnum: () => UnitTextEnum,
1970
- imageAssetSchema: () => imageAssetSchema,
1971
- imageSchema: () => imageSchema,
1972
- monetaryAmountSchema: () => monetaryAmountSchema,
1973
- placeSchema: () => placeSchema,
1974
- postalAddressSchema: () => postalAddressSchema,
1975
- quantitativeValueSchema: () => quantitativeValueSchema
1976
- });
1977
- import { z } from "zod";
1978
- var TypeEnum = z.enum(["IMAGE"]);
1979
- var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
1980
- var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
1981
- var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
1982
- var postalAddressSchema = z.object({
1983
- version: z.literal("1.0.0").default("1.0.0"),
1984
- type: z.string().describe("Document type used for schema"),
1985
- addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
1986
- addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
1987
- 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."),
1988
- streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
1989
- streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
1990
- postalCode: z.optional(z.string()).describe("The postal code"),
1991
- description: z.optional(z.string()).describe("A descriptive string containing the full address.")
1992
- });
1993
- var placeSchema = z.object({
1994
- version: z.literal("1.0.0").default("1.0.0"),
1995
- detailLevel: z.optional(DetailLevelEnum),
1996
- latitude: z.optional(z.number()).describe("The latitude of a location."),
1997
- longitude: z.optional(z.number()).describe("The longitude of a location."),
1998
- address: z.optional(postalAddressSchema).describe("The physical place of the location")
1999
- });
2000
- var quantitativeValueSchema = z.object({
2001
- version: z.literal("1.0.0").default("1.0.0"),
2002
- type: z.string().describe("Document type used for schema"),
2003
- 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."),
2004
- minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
2005
- maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
2006
- unitText: UnitTextEnum
2007
- });
2008
- var monetaryAmountSchema = z.object({
2009
- version: z.literal("1.0.0").default("1.0.0"),
2010
- type: z.string().describe("Document type used for schema"),
2011
- 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."),
2012
- minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
2013
- maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
2014
- value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
2015
- currency: z.optional(CurrencyEnum)
2016
- });
2017
- var imageAssetSchema = z.object({
2018
- version: z.literal("1.0.0").default("1.0.0"),
2019
- altText: z.optional(z.string()).describe("The alt text for the image"),
2020
- assetId: z.optional(z.string()).describe("The asset ID for the image"),
2021
- description: z.optional(z.string()).describe("The description for the image"),
2022
- extension: z.optional(z.string()).describe("The extension for the image"),
2023
- label: z.optional(z.string()).describe("The label for the image"),
2024
- mimeType: z.optional(z.string()).describe("The mime type for the image"),
2025
- originalFilename: z.optional(z.string()).describe("The original filename for the image"),
2026
- path: z.optional(z.string()).describe("The path for the image"),
2027
- sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
2028
- size: z.optional(z.number()).describe("The size for the image"),
2029
- title: z.optional(z.string()).describe("The title for the image"),
2030
- uploadId: z.optional(z.string()).describe("The upload ID for the image"),
2031
- url: z.optional(z.string()).describe("The URL for the image")
2032
- });
2033
- var imageSchema = z.object({
2034
- version: z.literal("1.0.0").default("1.0.0"),
2035
- type: z.string().describe("Document type used for schema"),
2036
- asset: z.optional(imageAssetSchema).describe("The asset for the image")
2037
- });
2038
-
2039
- // src/lib/salaryRange.ts
2040
- function salaryRange(salary) {
2041
- if (!salary) return null;
2042
- const min = salary.minValue;
2043
- const max = salary.maxValue;
2044
- const single = salary.singleValue;
2045
- const signs = {
2046
- [CurrencyEnum.Values.USD]: "$",
2047
- [CurrencyEnum.Values.GBP]: "\xA3",
2048
- [CurrencyEnum.Values.EUR]: "\u20AC"
2049
- };
2050
- const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
2051
- if (min == null && max == null && single == null) return null;
2052
- if (single != null) return sign + single.toLocaleString();
2053
- if (min === max) return sign + min?.toLocaleString();
2054
- if (min != null && max != null)
2055
- return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
2056
- return null;
2057
- }
2058
-
2059
1987
  // src/hooks/useDisplayText.ts
2060
1988
  import { useEffect as useEffect7, useMemo as useMemo2, useState as useState7 } from "react";
2061
1989
 
@@ -2545,6 +2473,102 @@ function formattedJobLocation(job) {
2545
2473
  return [address, remote].filter(Boolean).join(" | ");
2546
2474
  }
2547
2475
 
2476
+ // src/types/data/shared_pickle_output_latest.ts
2477
+ var shared_pickle_output_latest_exports = {};
2478
+ __export(shared_pickle_output_latest_exports, {
2479
+ CurrencyEnum: () => CurrencyEnum,
2480
+ DetailLevelEnum: () => DetailLevelEnum,
2481
+ TypeEnum: () => TypeEnum,
2482
+ UnitTextEnum: () => UnitTextEnum,
2483
+ imageAssetSchema: () => imageAssetSchema,
2484
+ imageSchema: () => imageSchema,
2485
+ monetaryAmountSchema: () => monetaryAmountSchema,
2486
+ placeSchema: () => placeSchema,
2487
+ postalAddressSchema: () => postalAddressSchema,
2488
+ quantitativeValueSchema: () => quantitativeValueSchema
2489
+ });
2490
+ import { z } from "zod";
2491
+ var TypeEnum = z.enum(["IMAGE"]);
2492
+ var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
2493
+ var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
2494
+ var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
2495
+ var postalAddressSchema = z.object({
2496
+ version: z.literal("1.0.0").default("1.0.0"),
2497
+ type: z.string().describe("Document type used for schema"),
2498
+ addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
2499
+ addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
2500
+ 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."),
2501
+ streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
2502
+ streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
2503
+ postalCode: z.optional(z.string()).describe("The postal code"),
2504
+ description: z.optional(z.string()).describe("A descriptive string containing the full address.")
2505
+ });
2506
+ var placeSchema = z.object({
2507
+ version: z.literal("1.0.0").default("1.0.0"),
2508
+ detailLevel: z.optional(DetailLevelEnum),
2509
+ latitude: z.optional(z.number()).describe("The latitude of a location."),
2510
+ longitude: z.optional(z.number()).describe("The longitude of a location."),
2511
+ address: z.optional(postalAddressSchema).describe("The physical place of the location")
2512
+ });
2513
+ var quantitativeValueSchema = z.object({
2514
+ version: z.literal("1.0.0").default("1.0.0"),
2515
+ type: z.string().describe("Document type used for schema"),
2516
+ 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."),
2517
+ minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
2518
+ maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
2519
+ unitText: UnitTextEnum
2520
+ });
2521
+ var monetaryAmountSchema = z.object({
2522
+ version: z.literal("1.0.0").default("1.0.0"),
2523
+ type: z.string().describe("Document type used for schema"),
2524
+ 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."),
2525
+ minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
2526
+ maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
2527
+ value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
2528
+ currency: z.optional(CurrencyEnum)
2529
+ });
2530
+ var imageAssetSchema = z.object({
2531
+ version: z.literal("1.0.0").default("1.0.0"),
2532
+ altText: z.optional(z.string()).describe("The alt text for the image"),
2533
+ assetId: z.optional(z.string()).describe("The asset ID for the image"),
2534
+ description: z.optional(z.string()).describe("The description for the image"),
2535
+ extension: z.optional(z.string()).describe("The extension for the image"),
2536
+ label: z.optional(z.string()).describe("The label for the image"),
2537
+ mimeType: z.optional(z.string()).describe("The mime type for the image"),
2538
+ originalFilename: z.optional(z.string()).describe("The original filename for the image"),
2539
+ path: z.optional(z.string()).describe("The path for the image"),
2540
+ sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
2541
+ size: z.optional(z.number()).describe("The size for the image"),
2542
+ title: z.optional(z.string()).describe("The title for the image"),
2543
+ uploadId: z.optional(z.string()).describe("The upload ID for the image"),
2544
+ url: z.optional(z.string()).describe("The URL for the image")
2545
+ });
2546
+ var imageSchema = z.object({
2547
+ version: z.literal("1.0.0").default("1.0.0"),
2548
+ type: z.string().describe("Document type used for schema"),
2549
+ asset: z.optional(imageAssetSchema).describe("The asset for the image")
2550
+ });
2551
+
2552
+ // src/lib/salaryRange.ts
2553
+ function salaryRange(salary) {
2554
+ if (!salary) return null;
2555
+ const min = salary.minValue;
2556
+ const max = salary.maxValue;
2557
+ const single = salary.singleValue;
2558
+ const signs = {
2559
+ [CurrencyEnum.Values.USD]: "$",
2560
+ [CurrencyEnum.Values.GBP]: "\xA3",
2561
+ [CurrencyEnum.Values.EUR]: "\u20AC"
2562
+ };
2563
+ const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
2564
+ if (min == null && max == null && single == null) return null;
2565
+ if (single != null) return sign + single.toLocaleString();
2566
+ if (min === max) return sign + min?.toLocaleString();
2567
+ if (min != null && max != null)
2568
+ return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
2569
+ return null;
2570
+ }
2571
+
2548
2572
  // src/components/jobPost/JobPost.tsx
2549
2573
  import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
2550
2574
  function JobPost({
@@ -2643,24 +2667,6 @@ function JobPost({
2643
2667
  );
2644
2668
  }
2645
2669
 
2646
- // src/types/data/job_posting_service_latest.ts
2647
- var job_posting_service_latest_exports = {};
2648
- __export(job_posting_service_latest_exports, {
2649
- BestFitEnum: () => BestFitEnum,
2650
- ClinicalLicenseEnum: () => ClinicalLicenseEnum,
2651
- ClinicalSettingEnum: () => ClinicalSettingEnum,
2652
- ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
2653
- EmploymentLevelEnum: () => EmploymentLevelEnum,
2654
- EmploymentTypeEnum: () => EmploymentTypeEnum,
2655
- JobFunctionEnum: () => JobFunctionEnum,
2656
- JobLocationTypeEnum: () => JobLocationTypeEnum,
2657
- PublishStatusEnum: () => PublishStatusEnum2,
2658
- ShiftEnum: () => ShiftEnum,
2659
- TypeEnum: () => TypeEnum3,
2660
- jobPostSchema: () => jobPostSchema
2661
- });
2662
- import { z as z3 } from "zod";
2663
-
2664
2670
  // src/types/data/company_service_latest.ts
2665
2671
  var company_service_latest_exports = {};
2666
2672
  __export(company_service_latest_exports, {
@@ -2808,6 +2814,22 @@ var officeSchema = z2.object({
2808
2814
  });
2809
2815
 
2810
2816
  // src/types/data/job_posting_service_latest.ts
2817
+ var job_posting_service_latest_exports = {};
2818
+ __export(job_posting_service_latest_exports, {
2819
+ BestFitEnum: () => BestFitEnum,
2820
+ ClinicalLicenseEnum: () => ClinicalLicenseEnum,
2821
+ ClinicalSettingEnum: () => ClinicalSettingEnum,
2822
+ ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
2823
+ EmploymentLevelEnum: () => EmploymentLevelEnum,
2824
+ EmploymentTypeEnum: () => EmploymentTypeEnum,
2825
+ JobFunctionEnum: () => JobFunctionEnum,
2826
+ JobLocationTypeEnum: () => JobLocationTypeEnum,
2827
+ PublishStatusEnum: () => PublishStatusEnum2,
2828
+ ShiftEnum: () => ShiftEnum,
2829
+ TypeEnum: () => TypeEnum3,
2830
+ jobPostSchema: () => jobPostSchema
2831
+ });
2832
+ import { z as z3 } from "zod";
2811
2833
  var TypeEnum3 = z3.enum(["JOB_POST"]);
2812
2834
  var JobLocationTypeEnum = z3.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
2813
2835
  var EmploymentTypeEnum = z3.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);