@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.cjs CHANGED
@@ -65,9 +65,9 @@ __export(index_exports, {
65
65
  });
66
66
  module.exports = __toCommonJS(index_exports);
67
67
 
68
- // src/components/ui/Select.tsx
69
- var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
70
- var import_lucide_react2 = require("lucide-react");
68
+ // src/components/ui/Checkbox.tsx
69
+ var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
70
+ var import_lucide_react = require("lucide-react");
71
71
  var import_react = require("react");
72
72
 
73
73
  // src/lib/utils.ts
@@ -77,68 +77,64 @@ function cn(...inputs) {
77
77
  return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
78
78
  }
79
79
 
80
- // src/components/ui/ErrorMessage.tsx
80
+ // src/components/ui/Checkbox.tsx
81
81
  var import_jsx_runtime = require("react/jsx-runtime");
82
- function ErrorMessage({ message, className, ...props }) {
83
- if (!message) return null;
84
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
85
- }
86
- var ErrorMessage_default = ErrorMessage;
87
-
88
- // src/components/primitives/tooltip.tsx
89
- var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
90
- var React = __toESM(require("react"), 1);
91
- var import_jsx_runtime2 = require("react/jsx-runtime");
92
- var TooltipProvider = TooltipPrimitive.Provider;
93
- var Tooltip = TooltipPrimitive.Root;
94
- var TooltipTrigger = TooltipPrimitive.Trigger;
95
- var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
96
- TooltipPrimitive.Content,
82
+ var CheckboxToggle = (0, import_react.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
83
+ CheckboxPrimitive.Root,
97
84
  {
98
85
  ref,
99
- sideOffset,
100
86
  className: cn(
101
- "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",
87
+ "group",
88
+ "peer",
89
+ "h-5",
90
+ "w-5",
91
+ "shrink-0",
92
+ "rounded-md",
93
+ "border",
94
+ "border-grey-10",
95
+ "outline",
96
+ "outline-1",
97
+ "outline-offset-2",
98
+ "outline-transparent",
99
+ "hover:border-grey-20",
100
+ "focus:outline-purple-100",
101
+ "active:border-green-80",
102
+ "disabled:cursor-not-allowed",
103
+ "disabled:opacity-50",
104
+ "data-[state=checked]:bg-green-80",
105
+ "data-[state=indeterminate]:bg-green-80",
106
+ "data-[state=checked]:text-white",
107
+ "data-[state=indeterminate]:text-primary-foreground",
108
+ props.disabled && "data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",
102
109
  className
103
110
  ),
104
- ...props
111
+ ...props,
112
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
113
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
114
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
115
+ ] })
105
116
  }
106
117
  ));
107
- TooltipContent.displayName = TooltipPrimitive.Content.displayName;
108
-
109
- // src/components/ui/Label.tsx
110
- var import_lucide_react = require("lucide-react");
111
- var import_jsx_runtime3 = require("react/jsx-runtime");
112
- function Label({ text, required, description, className, ...props }) {
113
- if (!text) return null;
114
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex w-full flex-row gap-1", children: [
115
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
116
- "label",
117
- {
118
- className: cn(
119
- "text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
120
- className
121
- ),
122
- ...props,
123
- children: [
124
- text,
125
- required && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "text-red-600", children: "\xA0*" })
126
- ]
127
- }
128
- ),
129
- !!description && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Tooltip, { children: [
130
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_lucide_react.InfoIcon, { className: "h-4 w-4" }) }),
131
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TooltipContent, { className: "max-w-48", children: description })
132
- ] }) })
133
- ] });
134
- }
135
- var Label_default = Label;
118
+ CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
119
+ var Checkbox = (0, import_react.forwardRef)(
120
+ ({ classNames, children, ...props }, ref) => {
121
+ const { disabled } = props;
122
+ const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
123
+ const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
124
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
125
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxToggle, { id, disabled, ref, ...props }),
126
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
127
+ ] });
128
+ }
129
+ );
130
+ Checkbox.displayName = "Checkbox";
131
+ var Checkbox_default = Checkbox;
136
132
 
137
133
  // src/components/ui/Chip.tsx
138
134
  var import_cva = require("cva");
139
135
  var import_tailwind_merge2 = require("tailwind-merge");
140
- var import_jsx_runtime4 = require("react/jsx-runtime");
141
- var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: (0, import_tailwind_merge2.twMerge)(chipVariants({ variant, size, className })), ...props });
136
+ var import_jsx_runtime2 = require("react/jsx-runtime");
137
+ var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: (0, import_tailwind_merge2.twMerge)(chipVariants({ variant, size, className })), ...props });
142
138
  var chipVariants = (0, import_cva.cva)(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
143
139
  variants: {
144
140
  variant: {
@@ -160,300 +156,84 @@ var chipVariants = (0, import_cva.cva)(["flex", "items-center", "rounded-3xl", "
160
156
  });
161
157
  var Chip_default = Chip;
162
158
 
163
- // src/components/primitives/separator.tsx
164
- var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
165
- var React2 = __toESM(require("react"), 1);
166
- var import_jsx_runtime5 = require("react/jsx-runtime");
167
- var Separator = React2.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
168
- SeparatorPrimitive.Root,
159
+ // src/components/ui/Input.tsx
160
+ var import_cva2 = require("cva");
161
+ var import_lucide_react3 = require("lucide-react");
162
+ var import_react2 = require("react");
163
+
164
+ // src/components/ui/ErrorMessage.tsx
165
+ var import_jsx_runtime3 = require("react/jsx-runtime");
166
+ function ErrorMessage({ message, className, ...props }) {
167
+ if (!message) return null;
168
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { className: cn("px-1 text-xs text-red-600", className), ...props, children: message });
169
+ }
170
+ var ErrorMessage_default = ErrorMessage;
171
+
172
+ // src/components/ui/Label.tsx
173
+ var import_lucide_react2 = require("lucide-react");
174
+
175
+ // src/components/primitives/tooltip.tsx
176
+ var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"), 1);
177
+ var React = __toESM(require("react"), 1);
178
+ var import_jsx_runtime4 = require("react/jsx-runtime");
179
+ var TooltipProvider = TooltipPrimitive.Provider;
180
+ var Tooltip = TooltipPrimitive.Root;
181
+ var TooltipTrigger = TooltipPrimitive.Trigger;
182
+ var TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
183
+ TooltipPrimitive.Content,
169
184
  {
170
185
  ref,
171
- decorative,
172
- orientation,
186
+ sideOffset,
173
187
  className: cn(
174
- "shrink-0 bg-grey-10",
175
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
188
+ "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",
176
189
  className
177
190
  ),
178
191
  ...props
179
192
  }
180
193
  ));
181
- Separator.displayName = SeparatorPrimitive.Root.displayName;
194
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
182
195
 
183
- // src/components/ui/Select.tsx
184
- var import_jsx_runtime6 = require("react/jsx-runtime");
185
- var Select = (0, import_react.forwardRef)(
186
- ({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
187
- const { value, defaultValue, dir, className, onChange, ...rest } = props;
188
- const [selected, setSelected] = (0, import_react.useState)([]);
189
- const [open, setOpen] = (0, import_react.useState)(false);
190
- const containerRef = (0, import_react.useRef)(null);
191
- (0, import_react.useEffect)(() => {
192
- if (!value) return setSelected([]);
193
- setSelected(Array.isArray(value) ? value : [value]);
194
- }, [value]);
195
- const toggleOpen = () => setOpen((prev) => !prev);
196
- const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
197
- const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
198
- const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
199
- const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
200
- const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
201
- function handleChange(newValue) {
202
- if (newValue === "" && !multiselect) return;
203
- let newSelected = [];
204
- setSelected((prev) => {
205
- newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
206
- return multiselect ? newSelected : [newValue];
207
- });
208
- onChange?.(multiselect ? newSelected : newValue);
209
- }
210
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
211
- "div",
196
+ // src/components/ui/Label.tsx
197
+ var import_jsx_runtime5 = require("react/jsx-runtime");
198
+ function Label({ text, required, description, className, ...props }) {
199
+ if (!text) return null;
200
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex w-full flex-row gap-1", children: [
201
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
202
+ "label",
212
203
  {
213
- className: cn("flex w-full flex-col gap-1", className),
214
- ref: containerRef,
215
- "data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
204
+ className: cn(
205
+ "text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
206
+ className
207
+ ),
208
+ ...props,
216
209
  children: [
217
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
218
- Label_default,
219
- {
220
- text: label,
221
- htmlFor: props.name,
222
- required: props.required,
223
- description,
224
- className: classNames?.label
225
- }
226
- ),
227
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
228
- SelectPrimitive.Root,
229
- {
230
- open,
231
- value: selected.join(","),
232
- onOpenChange: handleOnOpenChange,
233
- onValueChange: multiselect ? void 0 : handleChange,
234
- defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
235
- dir: dir === "rtl" ? "rtl" : "ltr",
236
- ...rest,
237
- children: [
238
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
239
- SelectPrimitive.Trigger,
240
- {
241
- ref,
242
- className: cn(
243
- "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",
244
- classNames?.trigger
245
- ),
246
- children: [
247
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "truncate", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
248
- SelectPrimitive.Value,
249
- {
250
- placeholder: placeholder ?? "Select an option",
251
- "aria-label": getLabel(),
252
- children: getLabel()
253
- }
254
- ) }),
255
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
256
- import_lucide_react2.ChevronDownIcon,
257
- {
258
- className: "transform text-black group-data-[state=open]:rotate-180",
259
- size: "16"
260
- }
261
- )
262
- ]
263
- }
264
- ),
265
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
266
- SelectPrimitive.Content,
267
- {
268
- hideWhenDetached: true,
269
- 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",
270
- position: "popper",
271
- sideOffset: 4,
272
- onPointerDownOutside: toggleOpen,
273
- onKeyDown: closeOnEscape,
274
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(SelectPrimitive.Viewport, { children: [
275
- multiselect && !!chipLabels?.length && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
276
- SelectPrimitive.Group,
277
- {
278
- className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
279
- "data-testid": "selected-labels",
280
- children: chipLabels?.map(
281
- (chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
282
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: chip.title }),
283
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
284
- import_lucide_react2.X,
285
- {
286
- size: 18,
287
- "data-testid": `chip-remove-${chip.value}`,
288
- className: "cursor-pointer",
289
- onClick: () => handleChange(chip.value)
290
- }
291
- )
292
- ] }, chip.title)
293
- )
294
- }
295
- ),
296
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Separator, {}),
297
- options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
298
- SelectPrimitive.Item,
299
- {
300
- value: value2,
301
- 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",
302
- "data-state": selected.includes(value2) ? "checked" : "unchecked",
303
- onKeyDown: (e) => setValueOnEnter(e, value2),
304
- onClick: () => handleChange(value2),
305
- children: [
306
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemText, { children: title }),
307
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
308
- import_lucide_react2.CheckIcon,
309
- {
310
- className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
311
- size: 16
312
- }
313
- )
314
- ]
315
- },
316
- id2
317
- ))
318
- ] })
319
- }
320
- ) })
321
- ]
322
- }
323
- ),
324
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error })
210
+ text,
211
+ required && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-red-600", children: "\xA0*" })
325
212
  ]
326
213
  }
327
- );
328
- }
329
- );
330
- Select.displayName = "Select";
331
- var Select_default = Select;
332
-
333
- // src/components/ui/Checkbox.tsx
334
- var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
335
- var import_lucide_react3 = require("lucide-react");
336
- var import_react2 = require("react");
337
- var import_jsx_runtime7 = require("react/jsx-runtime");
338
- var CheckboxToggle = (0, import_react2.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
339
- CheckboxPrimitive.Root,
340
- {
341
- ref,
342
- className: cn(
343
- "group",
344
- "peer",
345
- "h-5",
346
- "w-5",
347
- "shrink-0",
348
- "rounded-md",
349
- "border",
350
- "border-grey-10",
351
- "outline",
352
- "outline-1",
353
- "outline-offset-2",
354
- "outline-transparent",
355
- "hover:border-grey-20",
356
- "focus:outline-purple-100",
357
- "active:border-green-80",
358
- "disabled:cursor-not-allowed",
359
- "disabled:opacity-50",
360
- "data-[state=checked]:bg-green-80",
361
- "data-[state=indeterminate]:bg-green-80",
362
- "data-[state=checked]:text-white",
363
- "data-[state=indeterminate]:text-primary-foreground",
364
- props.disabled && "data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",
365
- className
366
214
  ),
367
- ...props,
368
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
369
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
370
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
371
- ] })
372
- }
373
- ));
374
- CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
375
- var Checkbox = (0, import_react2.forwardRef)(
376
- ({ classNames, children, ...props }, ref) => {
377
- const { disabled } = props;
378
- const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
379
- const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
380
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
381
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CheckboxToggle, { id, disabled, ref, ...props }),
382
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
383
- ] });
384
- }
385
- );
386
- Checkbox.displayName = "Checkbox";
387
- var Checkbox_default = Checkbox;
388
-
389
- // src/components/ui/ListItem.tsx
390
- var import_lucide_react4 = require("lucide-react");
391
- var import_lucide_react5 = require("lucide-react");
392
- var import_jsx_runtime8 = require("react/jsx-runtime");
393
- function ListItem({
394
- icon,
395
- hasCheckbox,
396
- isSelected,
397
- className,
398
- title,
399
- value,
400
- description,
401
- ...props
402
- }) {
403
- const getIconIfValid = (icon2) => {
404
- if (icon2 in import_lucide_react5.icons) {
405
- const IconComponent = import_lucide_react5.icons[icon2];
406
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconComponent, { size: 14 });
407
- }
408
- return null;
409
- };
410
- const optionIcon = icon ? getIconIfValid(icon) : void 0;
411
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
412
- "li",
413
- {
414
- className: cn(
415
- "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
416
- className
417
- ),
418
- ...props,
419
- "data-state": isSelected ? "checked" : "unchecked",
420
- children: [
421
- optionIcon && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "mr-2", children: optionIcon }),
422
- hasCheckbox && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
423
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { children: [
424
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: title }),
425
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-xs text-grey-80", children: description })
426
- ] }),
427
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
428
- import_lucide_react4.CheckIcon,
429
- {
430
- className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
431
- size: 16
432
- }
433
- )
434
- ]
435
- }
436
- );
215
+ !!description && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(Tooltip, { children: [
216
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_lucide_react2.InfoIcon, { className: "h-4 w-4" }) }),
217
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(TooltipContent, { className: "max-w-48", children: description })
218
+ ] }) })
219
+ ] });
437
220
  }
438
- var ListItem_default = ListItem;
221
+ var Label_default = Label;
439
222
 
440
223
  // src/components/ui/Input.tsx
441
- var import_cva2 = require("cva");
442
- var import_lucide_react6 = require("lucide-react");
443
- var import_react3 = require("react");
444
- var import_jsx_runtime9 = require("react/jsx-runtime");
445
- var Input = (0, import_react3.forwardRef)(
224
+ var import_jsx_runtime6 = require("react/jsx-runtime");
225
+ var Input = (0, import_react2.forwardRef)(
446
226
  ({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
447
227
  const handleClear = () => {
448
228
  onChange?.({ target: { value: "" } });
449
229
  onClear?.();
450
230
  };
451
- const IconComponent = icon && import_lucide_react6.icons[icon];
231
+ const IconComponent = icon && import_lucide_react3.icons[icon];
452
232
  const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
453
233
  const hasIcon = !!icon;
454
234
  const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
455
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
456
- label && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
235
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
236
+ label && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
457
237
  Label_default,
458
238
  {
459
239
  text: label,
@@ -463,14 +243,14 @@ var Input = (0, import_react3.forwardRef)(
463
243
  className: classNames?.label
464
244
  }
465
245
  ),
466
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative flex flex-row items-center", children: [
467
- IconComponent && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
246
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative flex flex-row items-center", children: [
247
+ IconComponent && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
468
248
  IconComponent,
469
249
  {
470
250
  className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
471
251
  }
472
252
  ),
473
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
253
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
474
254
  "input",
475
255
  {
476
256
  className: cn(inputVariants({ theme, hasIcon })),
@@ -482,8 +262,8 @@ var Input = (0, import_react3.forwardRef)(
482
262
  ...props
483
263
  }
484
264
  ),
485
- hasIcon && value && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
486
- import_lucide_react6.X,
265
+ hasIcon && value && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
266
+ import_lucide_react3.X,
487
267
  {
488
268
  className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
489
269
  onClick: handleClear,
@@ -491,7 +271,7 @@ var Input = (0, import_react3.forwardRef)(
491
271
  }
492
272
  )
493
273
  ] }),
494
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ErrorMessage_default, { message: error })
274
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error })
495
275
  ] });
496
276
  }
497
277
  );
@@ -542,13 +322,64 @@ var inputVariants = (0, import_cva2.cva)(
542
322
  theme: "light",
543
323
  hasIcon: false
544
324
  }
545
- }
546
- );
547
- var Input_default = Input;
325
+ }
326
+ );
327
+ var Input_default = Input;
328
+
329
+ // src/components/ui/ListItem.tsx
330
+ var import_lucide_react4 = require("lucide-react");
331
+ var import_lucide_react5 = require("lucide-react");
332
+ var import_jsx_runtime7 = require("react/jsx-runtime");
333
+ function ListItem({
334
+ icon,
335
+ hasCheckbox,
336
+ isSelected,
337
+ className,
338
+ title,
339
+ value,
340
+ description,
341
+ ...props
342
+ }) {
343
+ const getIconIfValid = (icon2) => {
344
+ if (icon2 in import_lucide_react5.icons) {
345
+ const IconComponent = import_lucide_react5.icons[icon2];
346
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(IconComponent, { size: 14 });
347
+ }
348
+ return null;
349
+ };
350
+ const optionIcon = icon ? getIconIfValid(icon) : void 0;
351
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
352
+ "li",
353
+ {
354
+ className: cn(
355
+ "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
356
+ className
357
+ ),
358
+ ...props,
359
+ "data-state": isSelected ? "checked" : "unchecked",
360
+ children: [
361
+ optionIcon && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "mr-2", children: optionIcon }),
362
+ hasCheckbox && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
363
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
364
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { children: title }),
365
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-xs text-grey-80", children: description })
366
+ ] }),
367
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
368
+ import_lucide_react4.CheckIcon,
369
+ {
370
+ className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
371
+ size: 16
372
+ }
373
+ )
374
+ ]
375
+ }
376
+ );
377
+ }
378
+ var ListItem_default = ListItem;
548
379
 
549
380
  // src/components/ui/MapComponent.tsx
550
381
  var import_react_google_maps = require("@vis.gl/react-google-maps");
551
- var import_jsx_runtime10 = require("react/jsx-runtime");
382
+ var import_jsx_runtime8 = require("react/jsx-runtime");
552
383
  function MapComponent({
553
384
  apiKey,
554
385
  mapId,
@@ -558,7 +389,7 @@ function MapComponent({
558
389
  }) {
559
390
  const defaultPosition = { lat: 40.715021, lng: -74.00459 };
560
391
  const defaultZoom = 11;
561
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_google_maps.APIProvider, { apiKey, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
392
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_google_maps.APIProvider, { apiKey, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: cn("h-screen max-w-full", className), children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
562
393
  import_react_google_maps.Map,
563
394
  {
564
395
  defaultZoom: position ? zoom : defaultZoom,
@@ -567,24 +398,28 @@ function MapComponent({
567
398
  keyboardShortcuts: false,
568
399
  disableDefaultUI: true,
569
400
  zoomControl: true,
570
- children: position && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_google_maps.AdvancedMarker, { position, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_google_maps.Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
401
+ children: position && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_google_maps.AdvancedMarker, { position, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_react_google_maps.Pin, { background: "#0B5441", borderColor: "#EBFDF1", glyphColor: "#D4F500" }) })
571
402
  }
572
403
  ) }) });
573
404
  }
574
405
  var MapComponent_default = MapComponent;
575
406
 
407
+ // src/components/ui/PlacesQueryInput.tsx
408
+ var import_lucide_react8 = require("lucide-react");
409
+ var import_react3 = require("react");
410
+
576
411
  // src/components/primitives/command.tsx
577
412
  var import_cmdk = require("cmdk");
578
- var import_lucide_react8 = require("lucide-react");
579
- var React4 = __toESM(require("react"), 1);
413
+ var import_lucide_react7 = require("lucide-react");
414
+ var React3 = __toESM(require("react"), 1);
580
415
 
581
416
  // src/components/primitives/dialog.tsx
582
417
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
583
- var import_lucide_react7 = require("lucide-react");
584
- var React3 = __toESM(require("react"), 1);
585
- var import_jsx_runtime11 = require("react/jsx-runtime");
418
+ var import_lucide_react6 = require("lucide-react");
419
+ var React2 = __toESM(require("react"), 1);
420
+ var import_jsx_runtime9 = require("react/jsx-runtime");
586
421
  var DialogPortal = DialogPrimitive.Portal;
587
- var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
422
+ var DialogOverlay = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
588
423
  DialogPrimitive.Overlay,
589
424
  {
590
425
  ref,
@@ -596,31 +431,31 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
596
431
  }
597
432
  ));
598
433
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
599
- var DialogContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogPortal, { children: [
600
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DialogOverlay, {}),
601
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
434
+ var DialogContent = React2.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogPortal, { children: [
435
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, {}),
436
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
602
437
  DialogPrimitive.Content,
603
438
  {
604
439
  ref,
605
440
  className: cn(
606
- "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",
441
+ "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",
607
442
  className
608
443
  ),
609
444
  ...props,
610
445
  children: [
611
446
  children,
612
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(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: [
613
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react7.X, { className: "h-4 w-4" }),
614
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "sr-only", children: "Close" })
447
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(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: [
448
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react6.X, { className: "h-4 w-4" }),
449
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "sr-only", children: "Close" })
615
450
  ] })
616
451
  ]
617
452
  }
618
453
  )
619
454
  ] }));
620
455
  DialogContent.displayName = DialogPrimitive.Content.displayName;
621
- var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
456
+ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
622
457
  DialogHeader.displayName = "DialogHeader";
623
- var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
458
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
624
459
  "div",
625
460
  {
626
461
  className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
@@ -628,7 +463,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
628
463
  }
629
464
  );
630
465
  DialogFooter.displayName = "DialogFooter";
631
- var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
466
+ var DialogTitle = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
632
467
  DialogPrimitive.Title,
633
468
  {
634
469
  ref,
@@ -637,7 +472,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
637
472
  }
638
473
  ));
639
474
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
640
- var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
475
+ var DialogDescription = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
641
476
  DialogPrimitive.Description,
642
477
  {
643
478
  ref,
@@ -648,8 +483,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
648
483
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
649
484
 
650
485
  // src/components/primitives/command.tsx
651
- var import_jsx_runtime12 = require("react/jsx-runtime");
652
- var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
486
+ var import_jsx_runtime10 = require("react/jsx-runtime");
487
+ var Command = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
653
488
  import_cmdk.Command,
654
489
  {
655
490
  ref,
@@ -661,9 +496,9 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
661
496
  }
662
497
  ));
663
498
  Command.displayName = import_cmdk.Command.displayName;
664
- var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
665
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react8.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
666
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
499
+ var CommandInput = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "", children: [
500
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react7.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
501
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
667
502
  import_cmdk.Command.Input,
668
503
  {
669
504
  ref,
@@ -676,7 +511,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
676
511
  )
677
512
  ] }));
678
513
  CommandInput.displayName = import_cmdk.Command.Input.displayName;
679
- var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
514
+ var CommandList = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
680
515
  import_cmdk.Command.List,
681
516
  {
682
517
  ref,
@@ -685,9 +520,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
685
520
  }
686
521
  ));
687
522
  CommandList.displayName = import_cmdk.Command.List.displayName;
688
- var CommandEmpty = React4.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
523
+ var CommandEmpty = React3.forwardRef((props, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_cmdk.Command.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
689
524
  CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
690
- var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
525
+ var CommandGroup = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
691
526
  import_cmdk.Command.Group,
692
527
  {
693
528
  ref,
@@ -699,7 +534,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
699
534
  }
700
535
  ));
701
536
  CommandGroup.displayName = import_cmdk.Command.Group.displayName;
702
- var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
537
+ var CommandSeparator = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
703
538
  import_cmdk.Command.Separator,
704
539
  {
705
540
  ref,
@@ -708,7 +543,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
708
543
  }
709
544
  ));
710
545
  CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
711
- var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
546
+ var CommandItem = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
712
547
  import_cmdk.Command.Item,
713
548
  {
714
549
  ref,
@@ -721,7 +556,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
721
556
  ));
722
557
  CommandItem.displayName = import_cmdk.Command.Item.displayName;
723
558
  var CommandShortcut = ({ className, ...props }) => {
724
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
559
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
725
560
  "span",
726
561
  {
727
562
  className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
@@ -782,33 +617,37 @@ var geocode = async (address, key) => {
782
617
  };
783
618
 
784
619
  // src/components/ui/PlacesQueryInput.tsx
785
- var import_lucide_react9 = require("lucide-react");
786
- var import_react4 = require("react");
787
- var import_jsx_runtime13 = require("react/jsx-runtime");
620
+ var import_jsx_runtime11 = require("react/jsx-runtime");
788
621
  function PlacesQueryInput({
789
622
  apiKey,
790
623
  selected,
791
624
  onSelect,
792
625
  className
793
626
  }) {
794
- const [predictions, setPredictions] = (0, import_react4.useState)(null);
795
- const [input, setInput] = (0, import_react4.useState)(selected?.description ?? "");
796
- const [isLoadingPredictions, setIsLoadingPredictions] = (0, import_react4.useState)(false);
797
- const [shouldOpenUpward, setShouldOpenUpward] = (0, import_react4.useState)(false);
798
- const timeoutRef = (0, import_react4.useRef)(null);
799
- const inputRef = (0, import_react4.useRef)(null);
800
- const debouncedAutocomplete = (0, import_react4.useCallback)((value) => {
627
+ const [predictions, setPredictions] = (0, import_react3.useState)(null);
628
+ const [input, setInput] = (0, import_react3.useState)(selected?.description ?? "");
629
+ const [isLoadingPredictions, setIsLoadingPredictions] = (0, import_react3.useState)(false);
630
+ const [shouldOpenUpward, setShouldOpenUpward] = (0, import_react3.useState)(false);
631
+ const timeoutRef = (0, import_react3.useRef)(null);
632
+ const inputRef = (0, import_react3.useRef)(null);
633
+ const debouncedAutocomplete = (0, import_react3.useCallback)((value) => {
801
634
  if (timeoutRef.current) {
802
635
  clearTimeout(timeoutRef.current);
803
636
  }
804
637
  timeoutRef.current = setTimeout(async () => {
805
- if (value.length > 2) {
806
- setIsLoadingPredictions(true);
807
- const fetchedPredictions = await autocomplete(value, apiKey);
808
- fetchedPredictions && setIsLoadingPredictions(false);
809
- setPredictions(fetchedPredictions ?? []);
810
- } else {
811
- setPredictions(null);
638
+ try {
639
+ if (value.length > 2) {
640
+ setIsLoadingPredictions(true);
641
+ const fetchedPredictions = await autocomplete(value, apiKey);
642
+ setIsLoadingPredictions(false);
643
+ setPredictions(fetchedPredictions ?? []);
644
+ } else {
645
+ setPredictions(null);
646
+ }
647
+ } catch (error) {
648
+ setIsLoadingPredictions(false);
649
+ setPredictions([]);
650
+ console.error("Autocomplete error:", error);
812
651
  }
813
652
  }, 300);
814
653
  }, []);
@@ -827,7 +666,7 @@ function PlacesQueryInput({
827
666
  setInput("");
828
667
  };
829
668
  const handleBlur = () => setTimeout(() => setPredictions(null), 200);
830
- (0, import_react4.useEffect)(() => {
669
+ (0, import_react3.useEffect)(() => {
831
670
  const checkDropdownPosition = () => {
832
671
  if (inputRef.current) {
833
672
  const rect = inputRef.current.getBoundingClientRect();
@@ -839,9 +678,9 @@ function PlacesQueryInput({
839
678
  window.addEventListener("resize", checkDropdownPosition);
840
679
  return () => window.removeEventListener("resize", checkDropdownPosition);
841
680
  }, []);
842
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Command, { children: [
843
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "relative w-full", children: [
844
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
681
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(Command, { children: [
682
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "relative w-full", children: [
683
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
845
684
  CommandInput,
846
685
  {
847
686
  placeholder: "Type an address to search...",
@@ -850,18 +689,18 @@ function PlacesQueryInput({
850
689
  className: "truncate pr-8"
851
690
  }
852
691
  ),
853
- isLoadingPredictions && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react9.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" }),
854
- input && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
692
+ isLoadingPredictions && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react8.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" }),
693
+ input && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
855
694
  "button",
856
695
  {
857
696
  type: "button",
858
697
  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",
859
698
  onClick: handleClear,
860
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react9.CircleX, { className: "h-4 w-4 text-green-100" })
699
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react8.CircleX, { className: "h-4 w-4 text-green-100" })
861
700
  }
862
701
  )
863
702
  ] }),
864
- predictions && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
703
+ predictions && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
865
704
  CommandList,
866
705
  {
867
706
  className: cn(
@@ -869,8 +708,8 @@ function PlacesQueryInput({
869
708
  shouldOpenUpward ? "bottom-full" : "top-full"
870
709
  ),
871
710
  children: [
872
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CommandEmpty, { children: "No results" }),
873
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
711
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CommandEmpty, { children: "No results" }),
712
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(CommandGroup, { children: predictions.map((prediction) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
874
713
  CommandItem,
875
714
  {
876
715
  onSelect: () => handleSelect(prediction),
@@ -884,17 +723,279 @@ function PlacesQueryInput({
884
723
  )
885
724
  ] }) });
886
725
  }
887
- var PlacesQueryInput_default = PlacesQueryInput;
726
+ var PlacesQueryInput_default = PlacesQueryInput;
727
+
728
+ // src/components/ui/Select.tsx
729
+ var SelectPrimitive = __toESM(require("@radix-ui/react-select"), 1);
730
+ var import_lucide_react9 = require("lucide-react");
731
+ var import_react4 = require("react");
732
+
733
+ // src/components/primitives/separator.tsx
734
+ var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"), 1);
735
+ var React4 = __toESM(require("react"), 1);
736
+ var import_jsx_runtime12 = require("react/jsx-runtime");
737
+ var Separator = React4.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
738
+ SeparatorPrimitive.Root,
739
+ {
740
+ ref,
741
+ decorative,
742
+ orientation,
743
+ className: cn(
744
+ "shrink-0 bg-grey-10",
745
+ orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
746
+ className
747
+ ),
748
+ ...props
749
+ }
750
+ ));
751
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
752
+
753
+ // src/components/ui/Select.tsx
754
+ var import_jsx_runtime13 = require("react/jsx-runtime");
755
+ var Select = (0, import_react4.forwardRef)(
756
+ ({ label, options, placeholder, multiselect, description, classNames, error, id, ...props }, ref) => {
757
+ const { value, defaultValue, dir, className, onChange, ...rest } = props;
758
+ const [selected, setSelected] = (0, import_react4.useState)([]);
759
+ const [open, setOpen] = (0, import_react4.useState)(false);
760
+ const containerRef = (0, import_react4.useRef)(null);
761
+ (0, import_react4.useEffect)(() => {
762
+ if (!value) return setSelected([]);
763
+ setSelected(Array.isArray(value) ? value : [value]);
764
+ }, [value]);
765
+ const toggleOpen = () => setOpen((prev) => !prev);
766
+ const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
767
+ const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
768
+ const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
769
+ const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
770
+ const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
771
+ function handleChange(newValue) {
772
+ if (newValue === "" && !multiselect) return;
773
+ let newSelected = [];
774
+ setSelected((prev) => {
775
+ newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
776
+ return multiselect ? newSelected : [newValue];
777
+ });
778
+ onChange?.(multiselect ? newSelected : newValue);
779
+ }
780
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
781
+ "div",
782
+ {
783
+ className: cn("flex w-full flex-col gap-1", className),
784
+ ref: containerRef,
785
+ "data-testid": `${(label ?? id)?.toLowerCase()}-select-element`,
786
+ children: [
787
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
788
+ Label_default,
789
+ {
790
+ text: label,
791
+ htmlFor: props.name,
792
+ required: props.required,
793
+ description,
794
+ className: classNames?.label
795
+ }
796
+ ),
797
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
798
+ SelectPrimitive.Root,
799
+ {
800
+ open,
801
+ value: selected.join(","),
802
+ onOpenChange: handleOnOpenChange,
803
+ onValueChange: multiselect ? void 0 : handleChange,
804
+ defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
805
+ dir: dir === "rtl" ? "rtl" : "ltr",
806
+ ...rest,
807
+ children: [
808
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
809
+ SelectPrimitive.Trigger,
810
+ {
811
+ ref,
812
+ className: cn(
813
+ "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",
814
+ classNames?.trigger
815
+ ),
816
+ children: [
817
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
818
+ SelectPrimitive.Value,
819
+ {
820
+ placeholder: placeholder ?? "Select an option",
821
+ "aria-label": getLabel(),
822
+ children: getLabel()
823
+ }
824
+ ) }),
825
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
826
+ import_lucide_react9.ChevronDownIcon,
827
+ {
828
+ className: "transform text-black group-data-[state=open]:rotate-180",
829
+ size: "16"
830
+ }
831
+ )
832
+ ]
833
+ }
834
+ ),
835
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
836
+ SelectPrimitive.Content,
837
+ {
838
+ hideWhenDetached: true,
839
+ 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",
840
+ position: "popper",
841
+ sideOffset: 4,
842
+ onPointerDownOutside: toggleOpen,
843
+ onKeyDown: closeOnEscape,
844
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(SelectPrimitive.Viewport, { children: [
845
+ multiselect && !!chipLabels?.length && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
846
+ SelectPrimitive.Group,
847
+ {
848
+ className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
849
+ "data-testid": "selected-labels",
850
+ children: chipLabels?.map(
851
+ (chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
852
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: chip.title }),
853
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
854
+ import_lucide_react9.X,
855
+ {
856
+ size: 18,
857
+ "data-testid": `chip-remove-${chip.value}`,
858
+ className: "cursor-pointer",
859
+ onClick: () => handleChange(chip.value)
860
+ }
861
+ )
862
+ ] }, chip.title)
863
+ )
864
+ }
865
+ ),
866
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Separator, {}),
867
+ options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
868
+ SelectPrimitive.Item,
869
+ {
870
+ value: value2,
871
+ 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",
872
+ "data-state": selected.includes(value2) ? "checked" : "unchecked",
873
+ onKeyDown: (e) => setValueOnEnter(e, value2),
874
+ onClick: () => handleChange(value2),
875
+ children: [
876
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SelectPrimitive.ItemText, { children: title }),
877
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
878
+ import_lucide_react9.CheckIcon,
879
+ {
880
+ className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
881
+ size: 16
882
+ }
883
+ )
884
+ ]
885
+ },
886
+ id2
887
+ ))
888
+ ] })
889
+ }
890
+ ) })
891
+ ]
892
+ }
893
+ ),
894
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ErrorMessage_default, { message: error })
895
+ ]
896
+ }
897
+ );
898
+ }
899
+ );
900
+ Select.displayName = "Select";
901
+ var Select_default = Select;
902
+
903
+ // src/components/ui/Avatar.tsx
904
+ var import_cva3 = require("cva");
905
+ var import_link = __toESM(require("next/link"), 1);
906
+
907
+ // src/components/primitives/avatar.tsx
908
+ var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
909
+ var React5 = __toESM(require("react"), 1);
910
+ var import_jsx_runtime14 = require("react/jsx-runtime");
911
+ var AvatarBase = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
912
+ AvatarPrimitive.Root,
913
+ {
914
+ ref,
915
+ className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
916
+ ...props
917
+ }
918
+ ));
919
+ AvatarBase.displayName = AvatarPrimitive.Root.displayName;
920
+ var AvatarImage = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
921
+ AvatarPrimitive.Image,
922
+ {
923
+ ref,
924
+ className: cn("aspect-square h-full w-full", className),
925
+ "data-testid": "job-card-avatar",
926
+ ...props
927
+ }
928
+ ));
929
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
930
+ var AvatarFallback = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
931
+ AvatarPrimitive.Fallback,
932
+ {
933
+ ref,
934
+ className: cn(
935
+ "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",
936
+ className
937
+ ),
938
+ ...props
939
+ }
940
+ ));
941
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
942
+
943
+ // src/components/ui/Avatar.tsx
944
+ var import_jsx_runtime15 = require("react/jsx-runtime");
945
+ function Avatar({ size, src, href, name, ...linkProps }) {
946
+ const fallbackShort = name?.slice(0, 2);
947
+ const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
948
+ const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
949
+ const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
950
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarImage, { src, alt: name }),
951
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
952
+ ] });
953
+ if (href) {
954
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
955
+ }
956
+ return renderAvatar();
957
+ }
958
+ var avatarVariants = (0, import_cva3.cva)("ring ring-white ring-2", {
959
+ variants: {
960
+ size: {
961
+ large: "h-16 w-16",
962
+ medium: "h-10 w-10",
963
+ small: "h-8 w-8"
964
+ }
965
+ },
966
+ defaultVariants: {
967
+ size: "medium"
968
+ }
969
+ });
970
+
971
+ // src/components/ui/Badge.tsx
972
+ var import_cva4 = require("cva");
973
+ var import_jsx_runtime16 = require("react/jsx-runtime");
974
+ var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
975
+ variants: {
976
+ variant: {
977
+ green: "bg-green-90 text-white",
978
+ pickle: "bg-pickle-100 text-black",
979
+ purple: "bg-purple-100 text-white"
980
+ }
981
+ },
982
+ defaultVariants: {
983
+ variant: "green"
984
+ }
985
+ });
986
+ function Badge({ className, variant, ...props }) {
987
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
988
+ }
888
989
 
889
990
  // src/components/ui/Button.tsx
890
991
  var import_react_slot = require("@radix-ui/react-slot");
891
- var import_cva3 = require("cva");
992
+ var import_cva5 = require("cva");
892
993
  var import_react5 = require("react");
893
- var import_jsx_runtime14 = require("react/jsx-runtime");
994
+ var import_jsx_runtime17 = require("react/jsx-runtime");
894
995
  var Button = (0, import_react5.forwardRef)(
895
996
  ({ className, variant, size, asChild = false, ...props }, ref) => {
896
997
  const Component = asChild ? import_react_slot.Slot : "button";
897
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
998
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
898
999
  Component,
899
1000
  {
900
1001
  className: cn(buttonVariants({ variant, size, className })),
@@ -905,7 +1006,7 @@ var Button = (0, import_react5.forwardRef)(
905
1006
  }
906
1007
  );
907
1008
  Button.displayName = "Button";
908
- var buttonVariants = (0, import_cva3.cva)(
1009
+ var buttonVariants = (0, import_cva5.cva)(
909
1010
  [
910
1011
  "flex",
911
1012
  "items-center",
@@ -996,17 +1097,17 @@ var buttonVariants = (0, import_cva3.cva)(
996
1097
  );
997
1098
 
998
1099
  // src/components/ui/Combobox.tsx
999
- var import_react6 = require("react");
1100
+ var import_cva6 = require("cva");
1000
1101
  var import_lucide_react10 = require("lucide-react");
1001
- var import_cva5 = require("cva");
1102
+ var import_react6 = require("react");
1002
1103
 
1003
1104
  // src/components/primitives/popover.tsx
1004
- var React6 = __toESM(require("react"), 1);
1005
1105
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
1006
- var import_jsx_runtime15 = require("react/jsx-runtime");
1106
+ var React7 = __toESM(require("react"), 1);
1107
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1007
1108
  var Popover = PopoverPrimitive.Root;
1008
1109
  var PopoverTrigger = PopoverPrimitive.Trigger;
1009
- var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1110
+ var PopoverContent = React7.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1010
1111
  PopoverPrimitive.Content,
1011
1112
  {
1012
1113
  ref,
@@ -1021,27 +1122,8 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
1021
1122
  ) }));
1022
1123
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1023
1124
 
1024
- // src/components/ui/Badge.tsx
1025
- var import_cva4 = require("cva");
1026
- var import_jsx_runtime16 = require("react/jsx-runtime");
1027
- var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
1028
- variants: {
1029
- variant: {
1030
- green: "bg-green-90 text-white",
1031
- pickle: "bg-pickle-100 text-black",
1032
- purple: "bg-purple-100 text-white"
1033
- }
1034
- },
1035
- defaultVariants: {
1036
- variant: "green"
1037
- }
1038
- });
1039
- function Badge({ className, variant, ...props }) {
1040
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
1041
- }
1042
-
1043
1125
  // src/components/ui/Combobox.tsx
1044
- var import_jsx_runtime17 = require("react/jsx-runtime");
1126
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1045
1127
  var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1046
1128
  const {
1047
1129
  id,
@@ -1092,14 +1174,18 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1092
1174
  };
1093
1175
  const handleClear = () => {
1094
1176
  setSelected([]);
1095
- multiselect ? handleChange?.([]) : handleChange?.("");
1177
+ if (multiselect) {
1178
+ handleChange?.([]);
1179
+ } else {
1180
+ handleChange?.("");
1181
+ }
1096
1182
  };
1097
1183
  const handleDisplayValue = () => {
1098
1184
  const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
1099
1185
  return isDefault ? defaultLabel : label;
1100
1186
  };
1101
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: cn("flex flex-col gap-1", className), children: [
1102
- isDefault && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1187
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: cn("flex flex-col gap-1", className), children: [
1188
+ isDefault && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1103
1189
  Label_default,
1104
1190
  {
1105
1191
  text: label,
@@ -1109,15 +1195,15 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1109
1195
  className: classNames?.label
1110
1196
  }
1111
1197
  ),
1112
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "relative flex", children: [
1113
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
1114
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1198
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "relative flex", children: [
1199
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
1200
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1115
1201
  PopoverTrigger,
1116
1202
  {
1117
1203
  asChild: true,
1118
1204
  disabled: options.length === 0,
1119
1205
  "data-testid": `${id ?? name}-combobox-trigger`,
1120
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1206
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1121
1207
  "div",
1122
1208
  {
1123
1209
  ref,
@@ -1128,9 +1214,9 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1128
1214
  ),
1129
1215
  "aria-expanded": open,
1130
1216
  children: [
1131
- isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
1132
- isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Badge, { variant: "purple", children: selected.length }),
1133
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1217
+ isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
1218
+ isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Badge, { variant: "purple", children: selected.length }),
1219
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1134
1220
  "span",
1135
1221
  {
1136
1222
  className: cn(
@@ -1140,7 +1226,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1140
1226
  children: handleDisplayValue()
1141
1227
  }
1142
1228
  ),
1143
- showChevron && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1229
+ showChevron && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1144
1230
  import_lucide_react10.ChevronDownIcon,
1145
1231
  {
1146
1232
  className: "shrink-0 transform group-data-[state=open]:rotate-180",
@@ -1152,7 +1238,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1152
1238
  )
1153
1239
  }
1154
1240
  ),
1155
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1241
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1156
1242
  PopoverContent,
1157
1243
  {
1158
1244
  className: cn(
@@ -1163,16 +1249,16 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1163
1249
  collisionPadding: 8,
1164
1250
  sideOffset: 4,
1165
1251
  align: "start",
1166
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Command, { children: [
1167
- !hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandInput, { placeholder: "Search..." }),
1168
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(CommandList, { children: [
1169
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandEmpty, { children: "No results" }),
1170
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1252
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(Command, { children: [
1253
+ !hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandInput, { placeholder: "Search..." }),
1254
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(CommandList, { children: [
1255
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandEmpty, { children: "No results" }),
1256
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommandGroup, { children: options.map(({ id: id2, ...option }) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1171
1257
  CommandItem,
1172
1258
  {
1173
1259
  value: option.title,
1174
1260
  onSelect: () => handleSelect(option.value),
1175
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1261
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1176
1262
  ListItem_default,
1177
1263
  {
1178
1264
  className: cn(classNames?.items, "truncate py-1"),
@@ -1185,26 +1271,26 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1185
1271
  id2
1186
1272
  )) })
1187
1273
  ] }),
1188
- !!footer && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Separator, {}),
1274
+ !!footer && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator, {}),
1189
1275
  footer && footer({ close })
1190
1276
  ] })
1191
1277
  }
1192
1278
  )
1193
1279
  ] }),
1194
- isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1280
+ isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1195
1281
  "button",
1196
1282
  {
1197
1283
  type: "button",
1198
1284
  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",
1199
1285
  onClick: handleClear,
1200
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react10.CircleX, { className: "h-4 w-4 text-green-100" })
1286
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.CircleX, { className: "h-4 w-4 text-green-100" })
1201
1287
  }
1202
1288
  )
1203
1289
  ] })
1204
1290
  ] });
1205
1291
  });
1206
1292
  Combobox.displayName = "Combobox";
1207
- var triggerVariants = (0, import_cva5.cva)(
1293
+ var triggerVariants = (0, import_cva6.cva)(
1208
1294
  "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",
1209
1295
  {
1210
1296
  variants: {
@@ -1231,10 +1317,10 @@ var triggerVariants = (0, import_cva5.cva)(
1231
1317
  );
1232
1318
 
1233
1319
  // src/components/ui/Counter.tsx
1234
- var import_cva6 = require("cva");
1320
+ var import_cva7 = require("cva");
1235
1321
  var import_lucide_react11 = require("lucide-react");
1236
1322
  var import_react7 = require("react");
1237
- var import_jsx_runtime18 = require("react/jsx-runtime");
1323
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1238
1324
  var Counter = (0, import_react7.forwardRef)(
1239
1325
  ({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
1240
1326
  const [count, setCount] = (0, import_react7.useState)(0);
@@ -1269,13 +1355,13 @@ var Counter = (0, import_react7.forwardRef)(
1269
1355
  onChange?.(newValue);
1270
1356
  setCount(newValue);
1271
1357
  };
1272
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1358
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1273
1359
  "div",
1274
1360
  {
1275
1361
  className: cn("flex w-auto flex-col gap-1", classNames?.root),
1276
1362
  "data-testid": `counter-wrapper-${props.id}`,
1277
1363
  children: [
1278
- label && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1364
+ label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1279
1365
  Label_default,
1280
1366
  {
1281
1367
  text: label,
@@ -1285,17 +1371,17 @@ var Counter = (0, import_react7.forwardRef)(
1285
1371
  className: classNames?.label
1286
1372
  }
1287
1373
  ),
1288
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1289
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1374
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1375
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1290
1376
  "button",
1291
1377
  {
1292
1378
  type: "button",
1293
1379
  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",
1294
1380
  onClick: decrement,
1295
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react11.Minus, { className: "h-4 w-4 text-green-100" })
1381
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.Minus, { className: "h-4 w-4 text-green-100" })
1296
1382
  }
1297
1383
  ),
1298
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1384
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1299
1385
  "input",
1300
1386
  {
1301
1387
  className: cn(counterVariants({ theme }), classNames?.input),
@@ -1306,24 +1392,24 @@ var Counter = (0, import_react7.forwardRef)(
1306
1392
  ...props
1307
1393
  }
1308
1394
  ),
1309
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1395
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1310
1396
  "button",
1311
1397
  {
1312
1398
  type: "button",
1313
1399
  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",
1314
1400
  onClick: increment,
1315
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react11.Plus, { className: "h-4 w-4 text-green-100" })
1401
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.Plus, { className: "h-4 w-4 text-green-100" })
1316
1402
  }
1317
1403
  )
1318
1404
  ] }),
1319
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ErrorMessage_default, { message: error })
1405
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
1320
1406
  ]
1321
1407
  }
1322
1408
  );
1323
1409
  }
1324
1410
  );
1325
1411
  Counter.displayName = "Counter";
1326
- var counterVariants = (0, import_cva6.cva)(
1412
+ var counterVariants = (0, import_cva7.cva)(
1327
1413
  [
1328
1414
  "border-input",
1329
1415
  "placeholder:text-muted-foreground",
@@ -1373,167 +1459,16 @@ var counterVariants = (0, import_cva6.cva)(
1373
1459
  }
1374
1460
  );
1375
1461
 
1376
- // src/components/ui/InputOtp.tsx
1377
- var import_react8 = require("react");
1378
-
1379
- // src/components/primitives/input-otp.tsx
1380
- var React7 = __toESM(require("react"), 1);
1381
- var import_input_otp = require("input-otp");
1382
- var import_lucide_react12 = require("lucide-react");
1383
- var import_jsx_runtime19 = require("react/jsx-runtime");
1384
- var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1385
- import_input_otp.OTPInput,
1386
- {
1387
- ref,
1388
- containerClassName: cn(
1389
- "flex items-center gap-2 has-[:disabled]:opacity-50",
1390
- containerClassName
1391
- ),
1392
- className: cn("disabled:cursor-not-allowed", className),
1393
- ...props
1394
- }
1395
- ));
1396
- InputOTP.displayName = "InputOTP";
1397
- var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
1398
- InputOTPGroup.displayName = "InputOTPGroup";
1399
- var InputOTPSlot = React7.forwardRef(({ index, error, className, ...props }, ref) => {
1400
- const inputOTPContext = React7.useContext(import_input_otp.OTPInputContext);
1401
- const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1402
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1403
- "div",
1404
- {
1405
- ref,
1406
- className: cn(
1407
- "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",
1408
- isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
1409
- error && "border-red-500 dark:border-red-400",
1410
- className
1411
- ),
1412
- ...props,
1413
- children: [
1414
- char,
1415
- hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "animate-caret-blink h-4 w-px bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
1416
- ]
1417
- }
1418
- );
1419
- });
1420
- InputOTPSlot.displayName = "InputOTPSlot";
1421
- var InputOTPSeparator = React7.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react12.Dot, {}) }));
1422
- InputOTPSeparator.displayName = "InputOTPSeparator";
1423
-
1424
- // src/components/ui/InputOtp.tsx
1425
- var import_jsx_runtime20 = require("react/jsx-runtime");
1426
- var InputOtp = (0, import_react8.forwardRef)(
1427
- ({ digits, label, description, error, ...props }, ref) => {
1428
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1429
- "div",
1430
- {
1431
- className: "group flex w-full flex-col gap-1",
1432
- "data-testid": `input-otp-wrapper-${props.id}`,
1433
- children: [
1434
- label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1435
- Label_default,
1436
- {
1437
- text: label,
1438
- htmlFor: props.name,
1439
- required: props.required,
1440
- description
1441
- }
1442
- ),
1443
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1444
- InputOTP,
1445
- {
1446
- ref,
1447
- maxLength: digits,
1448
- "data-testid": `input-otp-element-${props.id}`,
1449
- ...props,
1450
- children: [...Array(digits)].map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(InputOTPGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(InputOTPSlot, { index, error: Boolean(error) }) }, index))
1451
- }
1452
- ) }),
1453
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
1454
- ]
1455
- }
1456
- );
1457
- }
1458
- );
1459
- InputOtp.displayName = "Input";
1460
-
1461
- // src/components/primitives/avatar.tsx
1462
- var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
1463
- var React8 = __toESM(require("react"), 1);
1464
- var import_jsx_runtime21 = require("react/jsx-runtime");
1465
- var AvatarBase = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1466
- AvatarPrimitive.Root,
1467
- {
1468
- ref,
1469
- className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
1470
- ...props
1471
- }
1472
- ));
1473
- AvatarBase.displayName = AvatarPrimitive.Root.displayName;
1474
- var AvatarImage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1475
- AvatarPrimitive.Image,
1476
- {
1477
- ref,
1478
- className: cn("aspect-square h-full w-full", className),
1479
- "data-testid": "job-card-avatar",
1480
- ...props
1481
- }
1482
- ));
1483
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1484
- var AvatarFallback = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1485
- AvatarPrimitive.Fallback,
1486
- {
1487
- ref,
1488
- className: cn(
1489
- "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",
1490
- className
1491
- ),
1492
- ...props
1493
- }
1494
- ));
1495
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1496
-
1497
- // src/components/ui/Avatar.tsx
1498
- var import_cva7 = require("cva");
1499
- var import_link = __toESM(require("next/link"), 1);
1500
- var import_jsx_runtime22 = require("react/jsx-runtime");
1501
- function Avatar({ size, src, href, name, ...linkProps }) {
1502
- const fallbackShort = name?.slice(0, 2);
1503
- const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
1504
- const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
1505
- const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
1506
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarImage, { src, alt: name }),
1507
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
1508
- ] });
1509
- if (href) {
1510
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
1511
- }
1512
- return renderAvatar();
1513
- }
1514
- var avatarVariants = (0, import_cva7.cva)("ring ring-white ring-2", {
1515
- variants: {
1516
- size: {
1517
- large: "h-16 w-16",
1518
- medium: "h-10 w-10",
1519
- small: "h-8 w-8"
1520
- }
1521
- },
1522
- defaultVariants: {
1523
- size: "medium"
1524
- }
1525
- });
1526
-
1527
1462
  // src/components/ui/Icon.tsx
1528
1463
  var import_react_slot2 = require("@radix-ui/react-slot");
1529
1464
  var import_cva8 = require("cva");
1530
- var import_react9 = require("react");
1465
+ var import_react8 = require("react");
1531
1466
  var import_tailwind_merge3 = require("tailwind-merge");
1532
- var import_jsx_runtime23 = require("react/jsx-runtime");
1533
- var Icon = (0, import_react9.forwardRef)(
1467
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1468
+ var Icon = (0, import_react8.forwardRef)(
1534
1469
  ({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
1535
1470
  const Component = readonly ? import_react_slot2.Slot : "button";
1536
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1471
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1537
1472
  Component,
1538
1473
  {
1539
1474
  className: cn(
@@ -1593,13 +1528,98 @@ var iconVariants = (0, import_cva8.cva)(
1593
1528
  medium: ["h-12", "w-12", "p-4"],
1594
1529
  large: ["h-14", "w-14", "p-4"]
1595
1530
  }
1596
- },
1597
- defaultVariants: {
1598
- variant: "filled",
1599
- size: "medium"
1600
- }
1531
+ },
1532
+ defaultVariants: {
1533
+ variant: "filled",
1534
+ size: "medium"
1535
+ }
1536
+ }
1537
+ );
1538
+
1539
+ // src/components/ui/InputOtp.tsx
1540
+ var import_react9 = require("react");
1541
+
1542
+ // src/components/primitives/input-otp.tsx
1543
+ var import_input_otp = require("input-otp");
1544
+ var import_lucide_react12 = require("lucide-react");
1545
+ var React8 = __toESM(require("react"), 1);
1546
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1547
+ var InputOTP = React8.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1548
+ import_input_otp.OTPInput,
1549
+ {
1550
+ ref,
1551
+ containerClassName: cn(
1552
+ "flex items-center gap-2 has-[:disabled]:opacity-50",
1553
+ containerClassName
1554
+ ),
1555
+ className: cn("disabled:cursor-not-allowed", className),
1556
+ ...props
1557
+ }
1558
+ ));
1559
+ InputOTP.displayName = "InputOTP";
1560
+ var InputOTPGroup = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
1561
+ InputOTPGroup.displayName = "InputOTPGroup";
1562
+ var InputOTPSlot = React8.forwardRef(({ index, error, className, ...props }, ref) => {
1563
+ const inputOTPContext = React8.useContext(import_input_otp.OTPInputContext);
1564
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1565
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
1566
+ "div",
1567
+ {
1568
+ ref,
1569
+ className: cn(
1570
+ "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",
1571
+ isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
1572
+ error && "border-red-500 dark:border-red-400",
1573
+ className
1574
+ ),
1575
+ ...props,
1576
+ children: [
1577
+ char,
1578
+ hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-neutral-950 duration-1000 dark:bg-neutral-50" }) })
1579
+ ]
1580
+ }
1581
+ );
1582
+ });
1583
+ InputOTPSlot.displayName = "InputOTPSlot";
1584
+ var InputOTPSeparator = React8.forwardRef(({ ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react12.Dot, {}) }));
1585
+ InputOTPSeparator.displayName = "InputOTPSeparator";
1586
+
1587
+ // src/components/ui/InputOtp.tsx
1588
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1589
+ var InputOtp = (0, import_react9.forwardRef)(
1590
+ ({ digits, label, description, error, ...props }, ref) => {
1591
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
1592
+ "div",
1593
+ {
1594
+ className: "group flex w-full flex-col gap-1",
1595
+ "data-testid": `input-otp-wrapper-${props.id}`,
1596
+ children: [
1597
+ label && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1598
+ Label_default,
1599
+ {
1600
+ text: label,
1601
+ htmlFor: props.name,
1602
+ required: props.required,
1603
+ description
1604
+ }
1605
+ ),
1606
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1607
+ InputOTP,
1608
+ {
1609
+ ref,
1610
+ maxLength: digits,
1611
+ "data-testid": `input-otp-element-${props.id}`,
1612
+ ...props,
1613
+ children: [...Array(digits)].map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InputOTPGroup, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InputOTPSlot, { index, error: Boolean(error) }) }, index))
1614
+ }
1615
+ ) }),
1616
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(ErrorMessage_default, { message: error })
1617
+ ]
1618
+ }
1619
+ );
1601
1620
  }
1602
1621
  );
1622
+ InputOtp.displayName = "Input";
1603
1623
 
1604
1624
  // src/components/ui/LinkButton.tsx
1605
1625
  var import_link2 = __toESM(require("next/link"), 1);
@@ -1805,7 +1825,11 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
1805
1825
  const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
1806
1826
  const goBack = () => {
1807
1827
  const previous = history[history.length - 2];
1808
- history.length > 1 && isAcceptedRoute(previous) ? router.back() : router.push(fallbackHref ?? "/");
1828
+ if (history.length > 1 && isAcceptedRoute(previous)) {
1829
+ router.back();
1830
+ } else {
1831
+ router.push(fallbackHref ?? "/");
1832
+ }
1809
1833
  };
1810
1834
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1811
1835
  Icon,
@@ -1993,102 +2017,6 @@ function JobHeader({
1993
2017
  // src/components/jobPost/JobPost.tsx
1994
2018
  var DateFns = __toESM(require("date-fns"), 1);
1995
2019
 
1996
- // src/types/data/shared_pickle_output_latest.ts
1997
- var shared_pickle_output_latest_exports = {};
1998
- __export(shared_pickle_output_latest_exports, {
1999
- CurrencyEnum: () => CurrencyEnum,
2000
- DetailLevelEnum: () => DetailLevelEnum,
2001
- TypeEnum: () => TypeEnum,
2002
- UnitTextEnum: () => UnitTextEnum,
2003
- imageAssetSchema: () => imageAssetSchema,
2004
- imageSchema: () => imageSchema,
2005
- monetaryAmountSchema: () => monetaryAmountSchema,
2006
- placeSchema: () => placeSchema,
2007
- postalAddressSchema: () => postalAddressSchema,
2008
- quantitativeValueSchema: () => quantitativeValueSchema
2009
- });
2010
- var import_zod = require("zod");
2011
- var TypeEnum = import_zod.z.enum(["IMAGE"]);
2012
- var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
2013
- var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
2014
- var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
2015
- var postalAddressSchema = import_zod.z.object({
2016
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2017
- type: import_zod.z.string().describe("Document type used for schema"),
2018
- addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
2019
- addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
2020
- addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
2021
- streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
2022
- streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
2023
- postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
2024
- description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
2025
- });
2026
- var placeSchema = import_zod.z.object({
2027
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2028
- detailLevel: import_zod.z.optional(DetailLevelEnum),
2029
- latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
2030
- longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
2031
- address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
2032
- });
2033
- var quantitativeValueSchema = import_zod.z.object({
2034
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2035
- type: import_zod.z.string().describe("Document type used for schema"),
2036
- value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
2037
- minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
2038
- maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
2039
- unitText: UnitTextEnum
2040
- });
2041
- var monetaryAmountSchema = import_zod.z.object({
2042
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2043
- type: import_zod.z.string().describe("Document type used for schema"),
2044
- singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
2045
- minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
2046
- maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
2047
- value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
2048
- currency: import_zod.z.optional(CurrencyEnum)
2049
- });
2050
- var imageAssetSchema = import_zod.z.object({
2051
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2052
- altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
2053
- assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
2054
- description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
2055
- extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
2056
- label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
2057
- mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
2058
- originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
2059
- path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
2060
- sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
2061
- size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
2062
- title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
2063
- uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
2064
- url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
2065
- });
2066
- var imageSchema = import_zod.z.object({
2067
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2068
- type: import_zod.z.string().describe("Document type used for schema"),
2069
- asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
2070
- });
2071
-
2072
- // src/lib/salaryRange.ts
2073
- function salaryRange(salary) {
2074
- if (!salary) return null;
2075
- const min = salary.minValue;
2076
- const max = salary.maxValue;
2077
- const single = salary.singleValue;
2078
- const signs = {
2079
- [CurrencyEnum.Values.USD]: "$",
2080
- [CurrencyEnum.Values.GBP]: "\xA3",
2081
- [CurrencyEnum.Values.EUR]: "\u20AC"
2082
- };
2083
- const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
2084
- if (min == null && max == null && single == null) return null;
2085
- if (single != null) return sign + single.toLocaleString();
2086
- if (min === max) return sign + min?.toLocaleString();
2087
- if (min != null && max != null)
2088
- return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
2089
- return null;
2090
- }
2091
-
2092
2020
  // src/hooks/useDisplayText.ts
2093
2021
  var import_react13 = require("react");
2094
2022
 
@@ -2578,6 +2506,102 @@ function formattedJobLocation(job) {
2578
2506
  return [address, remote].filter(Boolean).join(" | ");
2579
2507
  }
2580
2508
 
2509
+ // src/types/data/shared_pickle_output_latest.ts
2510
+ var shared_pickle_output_latest_exports = {};
2511
+ __export(shared_pickle_output_latest_exports, {
2512
+ CurrencyEnum: () => CurrencyEnum,
2513
+ DetailLevelEnum: () => DetailLevelEnum,
2514
+ TypeEnum: () => TypeEnum,
2515
+ UnitTextEnum: () => UnitTextEnum,
2516
+ imageAssetSchema: () => imageAssetSchema,
2517
+ imageSchema: () => imageSchema,
2518
+ monetaryAmountSchema: () => monetaryAmountSchema,
2519
+ placeSchema: () => placeSchema,
2520
+ postalAddressSchema: () => postalAddressSchema,
2521
+ quantitativeValueSchema: () => quantitativeValueSchema
2522
+ });
2523
+ var import_zod = require("zod");
2524
+ var TypeEnum = import_zod.z.enum(["IMAGE"]);
2525
+ var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
2526
+ var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
2527
+ var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
2528
+ var postalAddressSchema = import_zod.z.object({
2529
+ version: import_zod.z.literal("1.0.0").default("1.0.0"),
2530
+ type: import_zod.z.string().describe("Document type used for schema"),
2531
+ addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
2532
+ addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
2533
+ addressLocality: import_zod.z.optional(import_zod.z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
2534
+ streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
2535
+ streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
2536
+ postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
2537
+ description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
2538
+ });
2539
+ var placeSchema = import_zod.z.object({
2540
+ version: import_zod.z.literal("1.0.0").default("1.0.0"),
2541
+ detailLevel: import_zod.z.optional(DetailLevelEnum),
2542
+ latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
2543
+ longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
2544
+ address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
2545
+ });
2546
+ var quantitativeValueSchema = import_zod.z.object({
2547
+ version: import_zod.z.literal("1.0.0").default("1.0.0"),
2548
+ type: import_zod.z.string().describe("Document type used for schema"),
2549
+ value: import_zod.z.optional(import_zod.z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
2550
+ minValue: import_zod.z.optional(import_zod.z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
2551
+ maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
2552
+ unitText: UnitTextEnum
2553
+ });
2554
+ var monetaryAmountSchema = import_zod.z.object({
2555
+ version: import_zod.z.literal("1.0.0").default("1.0.0"),
2556
+ type: import_zod.z.string().describe("Document type used for schema"),
2557
+ singleValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
2558
+ minValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
2559
+ maxValue: import_zod.z.optional(import_zod.z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
2560
+ value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
2561
+ currency: import_zod.z.optional(CurrencyEnum)
2562
+ });
2563
+ var imageAssetSchema = import_zod.z.object({
2564
+ version: import_zod.z.literal("1.0.0").default("1.0.0"),
2565
+ altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
2566
+ assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
2567
+ description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
2568
+ extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
2569
+ label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
2570
+ mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
2571
+ originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
2572
+ path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
2573
+ sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
2574
+ size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
2575
+ title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
2576
+ uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
2577
+ url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
2578
+ });
2579
+ var imageSchema = import_zod.z.object({
2580
+ version: import_zod.z.literal("1.0.0").default("1.0.0"),
2581
+ type: import_zod.z.string().describe("Document type used for schema"),
2582
+ asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
2583
+ });
2584
+
2585
+ // src/lib/salaryRange.ts
2586
+ function salaryRange(salary) {
2587
+ if (!salary) return null;
2588
+ const min = salary.minValue;
2589
+ const max = salary.maxValue;
2590
+ const single = salary.singleValue;
2591
+ const signs = {
2592
+ [CurrencyEnum.Values.USD]: "$",
2593
+ [CurrencyEnum.Values.GBP]: "\xA3",
2594
+ [CurrencyEnum.Values.EUR]: "\u20AC"
2595
+ };
2596
+ const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
2597
+ if (min == null && max == null && single == null) return null;
2598
+ if (single != null) return sign + single.toLocaleString();
2599
+ if (min === max) return sign + min?.toLocaleString();
2600
+ if (min != null && max != null)
2601
+ return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
2602
+ return null;
2603
+ }
2604
+
2581
2605
  // src/components/jobPost/JobPost.tsx
2582
2606
  var import_jsx_runtime33 = require("react/jsx-runtime");
2583
2607
  function JobPost({
@@ -2676,24 +2700,6 @@ function JobPost({
2676
2700
  );
2677
2701
  }
2678
2702
 
2679
- // src/types/data/job_posting_service_latest.ts
2680
- var job_posting_service_latest_exports = {};
2681
- __export(job_posting_service_latest_exports, {
2682
- BestFitEnum: () => BestFitEnum,
2683
- ClinicalLicenseEnum: () => ClinicalLicenseEnum,
2684
- ClinicalSettingEnum: () => ClinicalSettingEnum,
2685
- ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
2686
- EmploymentLevelEnum: () => EmploymentLevelEnum,
2687
- EmploymentTypeEnum: () => EmploymentTypeEnum,
2688
- JobFunctionEnum: () => JobFunctionEnum,
2689
- JobLocationTypeEnum: () => JobLocationTypeEnum,
2690
- PublishStatusEnum: () => PublishStatusEnum2,
2691
- ShiftEnum: () => ShiftEnum,
2692
- TypeEnum: () => TypeEnum3,
2693
- jobPostSchema: () => jobPostSchema
2694
- });
2695
- var import_zod3 = require("zod");
2696
-
2697
2703
  // src/types/data/company_service_latest.ts
2698
2704
  var company_service_latest_exports = {};
2699
2705
  __export(company_service_latest_exports, {
@@ -2841,6 +2847,22 @@ var officeSchema = import_zod2.z.object({
2841
2847
  });
2842
2848
 
2843
2849
  // src/types/data/job_posting_service_latest.ts
2850
+ var job_posting_service_latest_exports = {};
2851
+ __export(job_posting_service_latest_exports, {
2852
+ BestFitEnum: () => BestFitEnum,
2853
+ ClinicalLicenseEnum: () => ClinicalLicenseEnum,
2854
+ ClinicalSettingEnum: () => ClinicalSettingEnum,
2855
+ ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
2856
+ EmploymentLevelEnum: () => EmploymentLevelEnum,
2857
+ EmploymentTypeEnum: () => EmploymentTypeEnum,
2858
+ JobFunctionEnum: () => JobFunctionEnum,
2859
+ JobLocationTypeEnum: () => JobLocationTypeEnum,
2860
+ PublishStatusEnum: () => PublishStatusEnum2,
2861
+ ShiftEnum: () => ShiftEnum,
2862
+ TypeEnum: () => TypeEnum3,
2863
+ jobPostSchema: () => jobPostSchema
2864
+ });
2865
+ var import_zod3 = require("zod");
2844
2866
  var TypeEnum3 = import_zod3.z.enum(["JOB_POST"]);
2845
2867
  var JobLocationTypeEnum = import_zod3.z.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
2846
2868
  var EmploymentTypeEnum = import_zod3.z.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);