@next-degree/pickle-shared-js 0.6.48 → 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 (240) 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 +18 -7
  14. package/dist/components/jobPost/JobDescription.cjs.map +1 -1
  15. package/dist/components/jobPost/JobDescription.js +18 -7
  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 +105 -90
  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 +105 -90
  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 +18 -7
  113. package/dist/components/ui/ReadMore.cjs.map +1 -1
  114. package/dist/components/ui/ReadMore.js +18 -7
  115. package/dist/components/ui/ReadMore.js.map +1 -1
  116. package/dist/components/ui/Select.cjs +68 -70
  117. package/dist/components/ui/Select.cjs.map +1 -1
  118. package/dist/components/ui/Select.js +66 -68
  119. package/dist/components/ui/Select.js.map +1 -1
  120. package/dist/components/ui/StepTabs.cjs +92 -0
  121. package/dist/components/ui/StepTabs.cjs.map +1 -0
  122. package/dist/components/ui/StepTabs.d.cts +13 -0
  123. package/dist/components/ui/StepTabs.d.ts +13 -0
  124. package/dist/components/ui/StepTabs.js +58 -0
  125. package/dist/components/ui/StepTabs.js.map +1 -0
  126. package/dist/components/ui/buttonShadcn.cjs +94 -0
  127. package/dist/components/ui/buttonShadcn.cjs.map +1 -0
  128. package/dist/components/ui/buttonShadcn.d.cts +14 -0
  129. package/dist/components/ui/buttonShadcn.d.ts +14 -0
  130. package/dist/components/ui/buttonShadcn.js +58 -0
  131. package/dist/components/ui/buttonShadcn.js.map +1 -0
  132. package/dist/components/ui/calendar.cjs +152 -0
  133. package/dist/components/ui/calendar.cjs.map +1 -0
  134. package/dist/components/ui/calendar.d.cts +11 -0
  135. package/dist/components/ui/calendar.d.ts +11 -0
  136. package/dist/components/ui/calendar.js +118 -0
  137. package/dist/components/ui/calendar.js.map +1 -0
  138. package/dist/{displayText-mYUVo6Ek.d.cts → displayText-CQRZ2fOT.d.cts} +2 -2
  139. package/dist/{displayText-DDf9iWyg.d.ts → displayText-LlsLfkTS.d.ts} +2 -2
  140. package/dist/hooks/useDisplayText.cjs.map +1 -1
  141. package/dist/hooks/useDisplayText.d.cts +3 -3
  142. package/dist/hooks/useDisplayText.d.ts +3 -3
  143. package/dist/hooks/useDisplayText.js.map +1 -1
  144. package/dist/index.cjs +763 -738
  145. package/dist/index.cjs.map +1 -1
  146. package/dist/index.d.cts +13 -13
  147. package/dist/index.d.ts +13 -13
  148. package/dist/index.js +772 -747
  149. package/dist/index.js.map +1 -1
  150. package/dist/job_posting_service_latest-B5tqLSgo.d.cts +4247 -0
  151. package/dist/job_posting_service_latest-B5tqLSgo.d.ts +4247 -0
  152. package/dist/{job_posting_service_latest-Dn5s8beY.d.cts → job_posting_service_latest-CKITrYyz.d.cts} +230 -230
  153. package/dist/{job_posting_service_latest-Dn5s8beY.d.ts → job_posting_service_latest-CKITrYyz.d.ts} +230 -230
  154. package/dist/job_posting_service_sanity-CeX9tlpb.d.ts +8093 -0
  155. package/dist/job_posting_service_sanity-D5Znr6Ba.d.cts +8093 -0
  156. package/dist/lib/google.cjs.map +1 -1
  157. package/dist/lib/google.js.map +1 -1
  158. package/dist/lib/locations.cjs.map +1 -1
  159. package/dist/lib/locations.d.cts +2 -2
  160. package/dist/lib/locations.d.ts +2 -2
  161. package/dist/lib/locations.js.map +1 -1
  162. package/dist/lib/mappings.cjs.map +1 -1
  163. package/dist/lib/mappings.d.cts +3 -3
  164. package/dist/lib/mappings.d.ts +3 -3
  165. package/dist/lib/mappings.js.map +1 -1
  166. package/dist/lib/salaryRange.cjs.map +1 -1
  167. package/dist/lib/salaryRange.d.cts +1 -1
  168. package/dist/lib/salaryRange.d.ts +1 -1
  169. package/dist/lib/salaryRange.js.map +1 -1
  170. package/dist/lib/utils.cjs.map +1 -1
  171. package/dist/lib/utils.js.map +1 -1
  172. package/dist/services/displayText.cjs.map +1 -1
  173. package/dist/services/displayText.d.cts +3 -3
  174. package/dist/services/displayText.d.ts +3 -3
  175. package/dist/services/displayText.js.map +1 -1
  176. package/dist/shared_pickle_output_latest-Bwfg5B4p.d.cts +350 -0
  177. package/dist/shared_pickle_output_latest-Bwfg5B4p.d.ts +350 -0
  178. package/dist/styles/globals.css +371 -6
  179. package/dist/styles/globals.css.map +1 -1
  180. package/dist/types/data/company_service_latest.cjs.map +1 -1
  181. package/dist/types/data/company_service_latest.d.cts +1 -1
  182. package/dist/types/data/company_service_latest.d.ts +1 -1
  183. package/dist/types/data/company_service_latest.js.map +1 -1
  184. package/dist/types/data/job_posting_service_latest.cjs +3 -1
  185. package/dist/types/data/job_posting_service_latest.cjs.map +1 -1
  186. package/dist/types/data/job_posting_service_latest.d.cts +1 -1
  187. package/dist/types/data/job_posting_service_latest.d.ts +1 -1
  188. package/dist/types/data/job_posting_service_latest.js +3 -1
  189. package/dist/types/data/job_posting_service_latest.js.map +1 -1
  190. package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -1
  191. package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
  192. package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
  193. package/dist/types/data/shared_pickle_output_latest.js.map +1 -1
  194. package/dist/types/index.cjs +505 -0
  195. package/dist/types/index.cjs.map +1 -0
  196. package/dist/types/index.d.cts +10 -0
  197. package/dist/types/index.d.ts +10 -0
  198. package/dist/types/index.js +479 -0
  199. package/dist/types/index.js.map +1 -0
  200. package/dist/types/latest/company_service_latest.cjs +251 -0
  201. package/dist/types/latest/company_service_latest.cjs.map +1 -0
  202. package/dist/types/latest/company_service_latest.d.cts +2 -0
  203. package/dist/types/latest/company_service_latest.d.ts +2 -0
  204. package/dist/types/latest/company_service_latest.js +210 -0
  205. package/dist/types/latest/company_service_latest.js.map +1 -0
  206. package/dist/types/latest/custom/company_service_sanity.cjs +325 -0
  207. package/dist/types/latest/custom/company_service_sanity.cjs.map +1 -0
  208. package/dist/types/latest/custom/company_service_sanity.d.cts +4 -0
  209. package/dist/types/latest/custom/company_service_sanity.d.ts +4 -0
  210. package/dist/types/latest/custom/company_service_sanity.js +288 -0
  211. package/dist/types/latest/custom/company_service_sanity.js.map +1 -0
  212. package/dist/types/latest/custom/custom_sanity_models.cjs +43 -0
  213. package/dist/types/latest/custom/custom_sanity_models.cjs.map +1 -0
  214. package/dist/types/latest/custom/custom_sanity_models.d.cts +30 -0
  215. package/dist/types/latest/custom/custom_sanity_models.d.ts +30 -0
  216. package/dist/types/latest/custom/custom_sanity_models.js +17 -0
  217. package/dist/types/latest/custom/custom_sanity_models.js.map +1 -0
  218. package/dist/types/latest/custom/job_posting_service_sanity.cjs +376 -0
  219. package/dist/types/latest/custom/job_posting_service_sanity.cjs.map +1 -0
  220. package/dist/types/latest/custom/job_posting_service_sanity.d.cts +5 -0
  221. package/dist/types/latest/custom/job_posting_service_sanity.d.ts +5 -0
  222. package/dist/types/latest/custom/job_posting_service_sanity.js +331 -0
  223. package/dist/types/latest/custom/job_posting_service_sanity.js.map +1 -0
  224. package/dist/types/latest/job_posting_service_latest.cjs +293 -0
  225. package/dist/types/latest/job_posting_service_latest.cjs.map +1 -0
  226. package/dist/types/latest/job_posting_service_latest.d.cts +2 -0
  227. package/dist/types/latest/job_posting_service_latest.d.ts +2 -0
  228. package/dist/types/latest/job_posting_service_latest.js +257 -0
  229. package/dist/types/latest/job_posting_service_latest.js.map +1 -0
  230. package/dist/types/latest/shared_pickle_output_latest.cjs +109 -0
  231. package/dist/types/latest/shared_pickle_output_latest.cjs.map +1 -0
  232. package/dist/types/latest/shared_pickle_output_latest.d.cts +2 -0
  233. package/dist/types/latest/shared_pickle_output_latest.d.ts +2 -0
  234. package/dist/types/latest/shared_pickle_output_latest.js +75 -0
  235. package/dist/types/latest/shared_pickle_output_latest.js.map +1 -0
  236. package/package.json +28 -6
  237. package/dist/{company_service_latest-DelYl1hO.d.cts → company_service_latest-8IMr2hMZ.d.cts} +244 -244
  238. package/dist/{company_service_latest-DelYl1hO.d.ts → company_service_latest-8IMr2hMZ.d.ts} +244 -244
  239. package/dist/{shared_pickle_output_latest-DbAgINuf.d.cts → shared_pickle_output_latest-Cwf2EMdH.d.cts} +17 -17
  240. package/dist/{shared_pickle_output_latest-DbAgINuf.d.ts → shared_pickle_output_latest-Cwf2EMdH.d.ts} +17 -17
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,306 +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 setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
198
- const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
199
- function handleLabels() {
200
- if (multiselect) {
201
- return selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
202
- }
203
- return options?.find((option) => option.value === selected.join())?.title;
204
- }
205
- function handleOnOpenChange(isOpen) {
206
- if (!multiselect || isOpen) setOpen(isOpen);
207
- }
208
- function handleChange(newValue) {
209
- let newSelected = [];
210
- setSelected((prev) => {
211
- newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
212
- return multiselect ? newSelected : [newValue];
213
- });
214
- onChange?.(multiselect ? newSelected : newValue);
215
- }
216
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
217
- "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",
218
203
  {
219
- className: cn("flex w-full flex-col gap-1", className),
220
- ref: containerRef,
221
- "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,
222
209
  children: [
223
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
224
- Label_default,
225
- {
226
- text: label,
227
- htmlFor: props.name,
228
- required: props.required,
229
- description,
230
- className: classNames?.label
231
- }
232
- ),
233
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
234
- SelectPrimitive.Root,
235
- {
236
- open,
237
- value: selected.join(","),
238
- onOpenChange: handleOnOpenChange,
239
- onValueChange: multiselect ? void 0 : handleChange,
240
- defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
241
- dir: dir === "rtl" ? "rtl" : "ltr",
242
- ...rest,
243
- children: [
244
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
245
- SelectPrimitive.Trigger,
246
- {
247
- ref,
248
- className: cn(
249
- "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",
250
- classNames?.trigger
251
- ),
252
- children: [
253
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "truncate", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
254
- SelectPrimitive.Value,
255
- {
256
- placeholder: placeholder ?? "Select an option",
257
- "aria-label": handleLabels(),
258
- children: handleLabels()
259
- }
260
- ) }),
261
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
262
- import_lucide_react2.ChevronDownIcon,
263
- {
264
- className: "transform text-black group-data-[state=open]:rotate-180",
265
- size: "16"
266
- }
267
- )
268
- ]
269
- }
270
- ),
271
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.Portal, { container: containerRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
272
- SelectPrimitive.Content,
273
- {
274
- hideWhenDetached: true,
275
- 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",
276
- position: "popper",
277
- sideOffset: 4,
278
- onPointerDownOutside: toggleOpen,
279
- onKeyDown: closeOnEscape,
280
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(SelectPrimitive.Viewport, { children: [
281
- multiselect && !!chipLabels?.length && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
282
- SelectPrimitive.Group,
283
- {
284
- className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
285
- "data-testid": "selected-labels",
286
- children: chipLabels?.map(
287
- (chip) => chip && /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Chip_default, { size: "small", variant: "primary", children: [
288
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: chip.title }),
289
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
290
- import_lucide_react2.X,
291
- {
292
- size: 18,
293
- "data-testid": `chip-remove-${chip.value}`,
294
- className: "cursor-pointer",
295
- onClick: () => handleChange(chip.value)
296
- }
297
- )
298
- ] }, chip.title)
299
- )
300
- }
301
- ),
302
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Separator, {}),
303
- options?.map(({ id: id2, title, value: value2 }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
304
- SelectPrimitive.Item,
305
- {
306
- value: value2,
307
- 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",
308
- "data-state": selected.includes(value2) ? "checked" : "unchecked",
309
- onKeyDown: (e) => setValueOnEnter(e, value2),
310
- onClick: () => handleChange(value2),
311
- children: [
312
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SelectPrimitive.ItemText, { children: title }),
313
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
314
- import_lucide_react2.CheckIcon,
315
- {
316
- className: "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
317
- size: 16
318
- }
319
- )
320
- ]
321
- },
322
- id2
323
- ))
324
- ] })
325
- }
326
- ) })
327
- ]
328
- }
329
- ),
330
- /* @__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*" })
331
212
  ]
332
213
  }
333
- );
334
- }
335
- );
336
- Select.displayName = "Select";
337
- var Select_default = Select;
338
-
339
- // src/components/ui/Checkbox.tsx
340
- var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"), 1);
341
- var import_lucide_react3 = require("lucide-react");
342
- var import_react2 = require("react");
343
- var import_jsx_runtime7 = require("react/jsx-runtime");
344
- var CheckboxToggle = (0, import_react2.forwardRef)(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
345
- CheckboxPrimitive.Root,
346
- {
347
- ref,
348
- className: cn(
349
- "group",
350
- "peer",
351
- "h-5",
352
- "w-5",
353
- "shrink-0",
354
- "rounded-md",
355
- "border",
356
- "border-grey-10",
357
- "outline",
358
- "outline-1",
359
- "outline-offset-2",
360
- "outline-transparent",
361
- "hover:border-grey-20",
362
- "focus:outline-purple-100",
363
- "active:border-green-80",
364
- "disabled:cursor-not-allowed",
365
- "disabled:opacity-50",
366
- "data-[state=checked]:bg-green-80",
367
- "data-[state=indeterminate]:bg-green-80",
368
- "data-[state=checked]:text-white",
369
- "data-[state=indeterminate]:text-primary-foreground",
370
- props.disabled && "data-[state=checked]:text-foreground bg-grey-20 data-[state=checked]:bg-grey-20",
371
- className
372
214
  ),
373
- ...props,
374
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: [
375
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }),
376
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_lucide_react3.Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" })
377
- ] })
378
- }
379
- ));
380
- CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
381
- var Checkbox = (0, import_react2.forwardRef)(
382
- ({ classNames, children, ...props }, ref) => {
383
- const { disabled } = props;
384
- const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
385
- const labelClassName = disabled ? "text-grey-40 pointer-events-none" : "";
386
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cn("flex space-x-2", classNames?.wrapper), children: [
387
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CheckboxToggle, { id, disabled, ref, ...props }),
388
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("label", { htmlFor: id, className: cn(labelClassName, classNames?.label), children })
389
- ] });
390
- }
391
- );
392
- Checkbox.displayName = "Checkbox";
393
- var Checkbox_default = Checkbox;
394
-
395
- // src/components/ui/ListItem.tsx
396
- var import_lucide_react4 = require("lucide-react");
397
- var import_lucide_react5 = require("lucide-react");
398
- var import_jsx_runtime8 = require("react/jsx-runtime");
399
- function ListItem({
400
- icon,
401
- hasCheckbox,
402
- isSelected,
403
- className,
404
- title,
405
- value,
406
- description,
407
- ...props
408
- }) {
409
- const getIconIfValid = (icon2) => {
410
- if (icon2 in import_lucide_react5.icons) {
411
- const IconComponent = import_lucide_react5.icons[icon2];
412
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(IconComponent, { size: 14 });
413
- }
414
- return null;
415
- };
416
- const optionIcon = icon ? getIconIfValid(icon) : void 0;
417
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
418
- "li",
419
- {
420
- className: cn(
421
- "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
422
- className
423
- ),
424
- ...props,
425
- "data-state": isSelected ? "checked" : "unchecked",
426
- children: [
427
- optionIcon && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "mr-2", children: optionIcon }),
428
- hasCheckbox && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Checkbox_default, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
429
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { children: [
430
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: title }),
431
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-xs text-grey-80", children: description })
432
- ] }),
433
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
434
- import_lucide_react4.CheckIcon,
435
- {
436
- className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
437
- size: 16
438
- }
439
- )
440
- ]
441
- }
442
- );
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
+ ] });
443
220
  }
444
- var ListItem_default = ListItem;
221
+ var Label_default = Label;
445
222
 
446
223
  // src/components/ui/Input.tsx
447
- var import_cva2 = require("cva");
448
- var import_lucide_react6 = require("lucide-react");
449
- var import_react3 = require("react");
450
- var import_jsx_runtime9 = require("react/jsx-runtime");
451
- var Input = (0, import_react3.forwardRef)(
224
+ var import_jsx_runtime6 = require("react/jsx-runtime");
225
+ var Input = (0, import_react2.forwardRef)(
452
226
  ({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
453
227
  const handleClear = () => {
454
228
  onChange?.({ target: { value: "" } });
455
229
  onClear?.();
456
230
  };
457
- const IconComponent = icon && import_lucide_react6.icons[icon];
231
+ const IconComponent = icon && import_lucide_react3.icons[icon];
458
232
  const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
459
233
  const hasIcon = !!icon;
460
234
  const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
461
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}`, children: [
462
- 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)(
463
237
  Label_default,
464
238
  {
465
239
  text: label,
@@ -469,14 +243,14 @@ var Input = (0, import_react3.forwardRef)(
469
243
  className: classNames?.label
470
244
  }
471
245
  ),
472
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative flex flex-row items-center", children: [
473
- 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)(
474
248
  IconComponent,
475
249
  {
476
250
  className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
477
251
  }
478
252
  ),
479
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
253
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
480
254
  "input",
481
255
  {
482
256
  className: cn(inputVariants({ theme, hasIcon })),
@@ -488,8 +262,8 @@ var Input = (0, import_react3.forwardRef)(
488
262
  ...props
489
263
  }
490
264
  ),
491
- hasIcon && value && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
492
- import_lucide_react6.X,
265
+ hasIcon && value && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
266
+ import_lucide_react3.X,
493
267
  {
494
268
  className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
495
269
  onClick: handleClear,
@@ -497,7 +271,7 @@ var Input = (0, import_react3.forwardRef)(
497
271
  }
498
272
  )
499
273
  ] }),
500
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ErrorMessage_default, { message: error })
274
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorMessage_default, { message: error })
501
275
  ] });
502
276
  }
503
277
  );
@@ -548,13 +322,64 @@ var inputVariants = (0, import_cva2.cva)(
548
322
  theme: "light",
549
323
  hasIcon: false
550
324
  }
551
- }
552
- );
553
- 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;
554
379
 
555
380
  // src/components/ui/MapComponent.tsx
556
381
  var import_react_google_maps = require("@vis.gl/react-google-maps");
557
- var import_jsx_runtime10 = require("react/jsx-runtime");
382
+ var import_jsx_runtime8 = require("react/jsx-runtime");
558
383
  function MapComponent({
559
384
  apiKey,
560
385
  mapId,
@@ -564,7 +389,7 @@ function MapComponent({
564
389
  }) {
565
390
  const defaultPosition = { lat: 40.715021, lng: -74.00459 };
566
391
  const defaultZoom = 11;
567
- 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)(
568
393
  import_react_google_maps.Map,
569
394
  {
570
395
  defaultZoom: position ? zoom : defaultZoom,
@@ -573,24 +398,28 @@ function MapComponent({
573
398
  keyboardShortcuts: false,
574
399
  disableDefaultUI: true,
575
400
  zoomControl: true,
576
- 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" }) })
577
402
  }
578
403
  ) }) });
579
404
  }
580
405
  var MapComponent_default = MapComponent;
581
406
 
407
+ // src/components/ui/PlacesQueryInput.tsx
408
+ var import_lucide_react8 = require("lucide-react");
409
+ var import_react3 = require("react");
410
+
582
411
  // src/components/primitives/command.tsx
583
412
  var import_cmdk = require("cmdk");
584
- var import_lucide_react8 = require("lucide-react");
585
- var React4 = __toESM(require("react"), 1);
413
+ var import_lucide_react7 = require("lucide-react");
414
+ var React3 = __toESM(require("react"), 1);
586
415
 
587
416
  // src/components/primitives/dialog.tsx
588
417
  var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"), 1);
589
- var import_lucide_react7 = require("lucide-react");
590
- var React3 = __toESM(require("react"), 1);
591
- 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");
592
421
  var DialogPortal = DialogPrimitive.Portal;
593
- 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)(
594
423
  DialogPrimitive.Overlay,
595
424
  {
596
425
  ref,
@@ -602,31 +431,31 @@ var DialogOverlay = React3.forwardRef(({ className, ...props }, ref) => /* @__PU
602
431
  }
603
432
  ));
604
433
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
605
- var DialogContent = React3.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(DialogPortal, { children: [
606
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DialogOverlay, {}),
607
- /* @__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)(
608
437
  DialogPrimitive.Content,
609
438
  {
610
439
  ref,
611
440
  className: cn(
612
- "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",
613
442
  className
614
443
  ),
615
444
  ...props,
616
445
  children: [
617
446
  children,
618
- /* @__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: [
619
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react7.X, { className: "h-4 w-4" }),
620
- /* @__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" })
621
450
  ] })
622
451
  ]
623
452
  }
624
453
  )
625
454
  ] }));
626
455
  DialogContent.displayName = DialogPrimitive.Content.displayName;
627
- 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 });
628
457
  DialogHeader.displayName = "DialogHeader";
629
- var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
458
+ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
630
459
  "div",
631
460
  {
632
461
  className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
@@ -634,7 +463,7 @@ var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
634
463
  }
635
464
  );
636
465
  DialogFooter.displayName = "DialogFooter";
637
- 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)(
638
467
  DialogPrimitive.Title,
639
468
  {
640
469
  ref,
@@ -643,7 +472,7 @@ var DialogTitle = React3.forwardRef(({ className, ...props }, ref) => /* @__PURE
643
472
  }
644
473
  ));
645
474
  DialogTitle.displayName = DialogPrimitive.Title.displayName;
646
- 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)(
647
476
  DialogPrimitive.Description,
648
477
  {
649
478
  ref,
@@ -654,8 +483,8 @@ var DialogDescription = React3.forwardRef(({ className, ...props }, ref) => /* @
654
483
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
655
484
 
656
485
  // src/components/primitives/command.tsx
657
- var import_jsx_runtime12 = require("react/jsx-runtime");
658
- 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)(
659
488
  import_cmdk.Command,
660
489
  {
661
490
  ref,
@@ -667,9 +496,9 @@ var Command = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
667
496
  }
668
497
  ));
669
498
  Command.displayName = import_cmdk.Command.displayName;
670
- 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: [
671
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_lucide_react8.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
672
- /* @__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)(
673
502
  import_cmdk.Command.Input,
674
503
  {
675
504
  ref,
@@ -682,7 +511,7 @@ var CommandInput = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
682
511
  )
683
512
  ] }));
684
513
  CommandInput.displayName = import_cmdk.Command.Input.displayName;
685
- 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)(
686
515
  import_cmdk.Command.List,
687
516
  {
688
517
  ref,
@@ -691,9 +520,9 @@ var CommandList = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
691
520
  }
692
521
  ));
693
522
  CommandList.displayName = import_cmdk.Command.List.displayName;
694
- 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 }));
695
524
  CommandEmpty.displayName = import_cmdk.Command.Empty.displayName;
696
- 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)(
697
526
  import_cmdk.Command.Group,
698
527
  {
699
528
  ref,
@@ -705,7 +534,7 @@ var CommandGroup = React4.forwardRef(({ className, ...props }, ref) => /* @__PUR
705
534
  }
706
535
  ));
707
536
  CommandGroup.displayName = import_cmdk.Command.Group.displayName;
708
- 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)(
709
538
  import_cmdk.Command.Separator,
710
539
  {
711
540
  ref,
@@ -714,7 +543,7 @@ var CommandSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @_
714
543
  }
715
544
  ));
716
545
  CommandSeparator.displayName = import_cmdk.Command.Separator.displayName;
717
- 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)(
718
547
  import_cmdk.Command.Item,
719
548
  {
720
549
  ref,
@@ -727,7 +556,7 @@ var CommandItem = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE
727
556
  ));
728
557
  CommandItem.displayName = import_cmdk.Command.Item.displayName;
729
558
  var CommandShortcut = ({ className, ...props }) => {
730
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
559
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
731
560
  "span",
732
561
  {
733
562
  className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
@@ -788,33 +617,37 @@ var geocode = async (address, key) => {
788
617
  };
789
618
 
790
619
  // src/components/ui/PlacesQueryInput.tsx
791
- var import_lucide_react9 = require("lucide-react");
792
- var import_react4 = require("react");
793
- var import_jsx_runtime13 = require("react/jsx-runtime");
620
+ var import_jsx_runtime11 = require("react/jsx-runtime");
794
621
  function PlacesQueryInput({
795
622
  apiKey,
796
623
  selected,
797
624
  onSelect,
798
625
  className
799
626
  }) {
800
- const [predictions, setPredictions] = (0, import_react4.useState)(null);
801
- const [input, setInput] = (0, import_react4.useState)(selected?.description ?? "");
802
- const [isLoadingPredictions, setIsLoadingPredictions] = (0, import_react4.useState)(false);
803
- const [shouldOpenUpward, setShouldOpenUpward] = (0, import_react4.useState)(false);
804
- const timeoutRef = (0, import_react4.useRef)(null);
805
- const inputRef = (0, import_react4.useRef)(null);
806
- 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) => {
807
634
  if (timeoutRef.current) {
808
635
  clearTimeout(timeoutRef.current);
809
636
  }
810
637
  timeoutRef.current = setTimeout(async () => {
811
- if (value.length > 2) {
812
- setIsLoadingPredictions(true);
813
- const fetchedPredictions = await autocomplete(value, apiKey);
814
- fetchedPredictions && setIsLoadingPredictions(false);
815
- setPredictions(fetchedPredictions ?? []);
816
- } else {
817
- 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);
818
651
  }
819
652
  }, 300);
820
653
  }, []);
@@ -833,7 +666,7 @@ function PlacesQueryInput({
833
666
  setInput("");
834
667
  };
835
668
  const handleBlur = () => setTimeout(() => setPredictions(null), 200);
836
- (0, import_react4.useEffect)(() => {
669
+ (0, import_react3.useEffect)(() => {
837
670
  const checkDropdownPosition = () => {
838
671
  if (inputRef.current) {
839
672
  const rect = inputRef.current.getBoundingClientRect();
@@ -845,9 +678,9 @@ function PlacesQueryInput({
845
678
  window.addEventListener("resize", checkDropdownPosition);
846
679
  return () => window.removeEventListener("resize", checkDropdownPosition);
847
680
  }, []);
848
- 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: [
849
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "relative w-full", children: [
850
- /* @__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)(
851
684
  CommandInput,
852
685
  {
853
686
  placeholder: "Type an address to search...",
@@ -856,18 +689,18 @@ function PlacesQueryInput({
856
689
  className: "truncate pr-8"
857
690
  }
858
691
  ),
859
- 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" }),
860
- 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)(
861
694
  "button",
862
695
  {
863
696
  type: "button",
864
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",
865
698
  onClick: handleClear,
866
- 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" })
867
700
  }
868
701
  )
869
702
  ] }),
870
- predictions && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
703
+ predictions && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
871
704
  CommandList,
872
705
  {
873
706
  className: cn(
@@ -875,8 +708,8 @@ function PlacesQueryInput({
875
708
  shouldOpenUpward ? "bottom-full" : "top-full"
876
709
  ),
877
710
  children: [
878
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CommandEmpty, { children: "No results" }),
879
- /* @__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)(
880
713
  CommandItem,
881
714
  {
882
715
  onSelect: () => handleSelect(prediction),
@@ -890,17 +723,279 @@ function PlacesQueryInput({
890
723
  )
891
724
  ] }) });
892
725
  }
893
- 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
+ }
894
989
 
895
990
  // src/components/ui/Button.tsx
896
991
  var import_react_slot = require("@radix-ui/react-slot");
897
- var import_cva3 = require("cva");
992
+ var import_cva5 = require("cva");
898
993
  var import_react5 = require("react");
899
- var import_jsx_runtime14 = require("react/jsx-runtime");
994
+ var import_jsx_runtime17 = require("react/jsx-runtime");
900
995
  var Button = (0, import_react5.forwardRef)(
901
996
  ({ className, variant, size, asChild = false, ...props }, ref) => {
902
997
  const Component = asChild ? import_react_slot.Slot : "button";
903
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
998
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
904
999
  Component,
905
1000
  {
906
1001
  className: cn(buttonVariants({ variant, size, className })),
@@ -911,7 +1006,7 @@ var Button = (0, import_react5.forwardRef)(
911
1006
  }
912
1007
  );
913
1008
  Button.displayName = "Button";
914
- var buttonVariants = (0, import_cva3.cva)(
1009
+ var buttonVariants = (0, import_cva5.cva)(
915
1010
  [
916
1011
  "flex",
917
1012
  "items-center",
@@ -1002,17 +1097,17 @@ var buttonVariants = (0, import_cva3.cva)(
1002
1097
  );
1003
1098
 
1004
1099
  // src/components/ui/Combobox.tsx
1005
- var import_react6 = require("react");
1100
+ var import_cva6 = require("cva");
1006
1101
  var import_lucide_react10 = require("lucide-react");
1007
- var import_cva5 = require("cva");
1102
+ var import_react6 = require("react");
1008
1103
 
1009
1104
  // src/components/primitives/popover.tsx
1010
- var React6 = __toESM(require("react"), 1);
1011
1105
  var PopoverPrimitive = __toESM(require("@radix-ui/react-popover"), 1);
1012
- var import_jsx_runtime15 = require("react/jsx-runtime");
1106
+ var React7 = __toESM(require("react"), 1);
1107
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1013
1108
  var Popover = PopoverPrimitive.Root;
1014
1109
  var PopoverTrigger = PopoverPrimitive.Trigger;
1015
- 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)(
1016
1111
  PopoverPrimitive.Content,
1017
1112
  {
1018
1113
  ref,
@@ -1027,27 +1122,8 @@ var PopoverContent = React6.forwardRef(({ className, align = "center", sideOffse
1027
1122
  ) }));
1028
1123
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1029
1124
 
1030
- // src/components/ui/Badge.tsx
1031
- var import_cva4 = require("cva");
1032
- var import_jsx_runtime16 = require("react/jsx-runtime");
1033
- var badgeVariants = (0, import_cva4.cva)("rounded-full px-2 py-0.5 text-xs font-semibold", {
1034
- variants: {
1035
- variant: {
1036
- green: "bg-green-90 text-white",
1037
- pickle: "bg-pickle-100 text-black",
1038
- purple: "bg-purple-100 text-white"
1039
- }
1040
- },
1041
- defaultVariants: {
1042
- variant: "green"
1043
- }
1044
- });
1045
- function Badge({ className, variant, ...props }) {
1046
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: cn(badgeVariants({ variant }), className), ...props });
1047
- }
1048
-
1049
1125
  // src/components/ui/Combobox.tsx
1050
- var import_jsx_runtime17 = require("react/jsx-runtime");
1126
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1051
1127
  var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1052
1128
  const {
1053
1129
  id,
@@ -1098,14 +1174,18 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1098
1174
  };
1099
1175
  const handleClear = () => {
1100
1176
  setSelected([]);
1101
- multiselect ? handleChange?.([]) : handleChange?.("");
1177
+ if (multiselect) {
1178
+ handleChange?.([]);
1179
+ } else {
1180
+ handleChange?.("");
1181
+ }
1102
1182
  };
1103
1183
  const handleDisplayValue = () => {
1104
1184
  const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
1105
1185
  return isDefault ? defaultLabel : label;
1106
1186
  };
1107
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: cn("flex flex-col gap-1", className), children: [
1108
- 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)(
1109
1189
  Label_default,
1110
1190
  {
1111
1191
  text: label,
@@ -1115,15 +1195,15 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1115
1195
  className: classNames?.label
1116
1196
  }
1117
1197
  ),
1118
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "relative flex", children: [
1119
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open, onOpenChange: setOpen, children: [
1120
- /* @__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)(
1121
1201
  PopoverTrigger,
1122
1202
  {
1123
1203
  asChild: true,
1124
1204
  disabled: options.length === 0,
1125
1205
  "data-testid": `${id ?? name}-combobox-trigger`,
1126
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1206
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1127
1207
  "div",
1128
1208
  {
1129
1209
  ref,
@@ -1134,9 +1214,9 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1134
1214
  ),
1135
1215
  "aria-expanded": open,
1136
1216
  children: [
1137
- isDefault && IconComponent && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(IconComponent, { className: "h-4 w-4 shrink-0" }),
1138
- isChip && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Badge, { variant: "purple", children: selected.length }),
1139
- /* @__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)(
1140
1220
  "span",
1141
1221
  {
1142
1222
  className: cn(
@@ -1146,7 +1226,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1146
1226
  children: handleDisplayValue()
1147
1227
  }
1148
1228
  ),
1149
- showChevron && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1229
+ showChevron && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1150
1230
  import_lucide_react10.ChevronDownIcon,
1151
1231
  {
1152
1232
  className: "shrink-0 transform group-data-[state=open]:rotate-180",
@@ -1158,7 +1238,7 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1158
1238
  )
1159
1239
  }
1160
1240
  ),
1161
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1241
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1162
1242
  PopoverContent,
1163
1243
  {
1164
1244
  className: cn(
@@ -1169,16 +1249,16 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1169
1249
  collisionPadding: 8,
1170
1250
  sideOffset: 4,
1171
1251
  align: "start",
1172
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Command, { children: [
1173
- !hideSearchBox && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandInput, { placeholder: "Search..." }),
1174
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(CommandList, { children: [
1175
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CommandEmpty, { children: "No results" }),
1176
- /* @__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)(
1177
1257
  CommandItem,
1178
1258
  {
1179
1259
  value: option.title,
1180
1260
  onSelect: () => handleSelect(option.value),
1181
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1261
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1182
1262
  ListItem_default,
1183
1263
  {
1184
1264
  className: cn(classNames?.items, "truncate py-1"),
@@ -1191,26 +1271,26 @@ var Combobox = (0, import_react6.forwardRef)((props, ref) => {
1191
1271
  id2
1192
1272
  )) })
1193
1273
  ] }),
1194
- !!footer && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Separator, {}),
1274
+ !!footer && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Separator, {}),
1195
1275
  footer && footer({ close })
1196
1276
  ] })
1197
1277
  }
1198
1278
  )
1199
1279
  ] }),
1200
- isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1280
+ isDefault && !isEmpty && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1201
1281
  "button",
1202
1282
  {
1203
1283
  type: "button",
1204
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",
1205
1285
  onClick: handleClear,
1206
- 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" })
1207
1287
  }
1208
1288
  )
1209
1289
  ] })
1210
1290
  ] });
1211
1291
  });
1212
1292
  Combobox.displayName = "Combobox";
1213
- var triggerVariants = (0, import_cva5.cva)(
1293
+ var triggerVariants = (0, import_cva6.cva)(
1214
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",
1215
1295
  {
1216
1296
  variants: {
@@ -1237,10 +1317,10 @@ var triggerVariants = (0, import_cva5.cva)(
1237
1317
  );
1238
1318
 
1239
1319
  // src/components/ui/Counter.tsx
1240
- var import_cva6 = require("cva");
1320
+ var import_cva7 = require("cva");
1241
1321
  var import_lucide_react11 = require("lucide-react");
1242
1322
  var import_react7 = require("react");
1243
- var import_jsx_runtime18 = require("react/jsx-runtime");
1323
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1244
1324
  var Counter = (0, import_react7.forwardRef)(
1245
1325
  ({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
1246
1326
  const [count, setCount] = (0, import_react7.useState)(0);
@@ -1275,13 +1355,13 @@ var Counter = (0, import_react7.forwardRef)(
1275
1355
  onChange?.(newValue);
1276
1356
  setCount(newValue);
1277
1357
  };
1278
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
1358
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1279
1359
  "div",
1280
1360
  {
1281
1361
  className: cn("flex w-auto flex-col gap-1", classNames?.root),
1282
1362
  "data-testid": `counter-wrapper-${props.id}`,
1283
1363
  children: [
1284
- label && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1364
+ label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1285
1365
  Label_default,
1286
1366
  {
1287
1367
  text: label,
@@ -1291,17 +1371,17 @@ var Counter = (0, import_react7.forwardRef)(
1291
1371
  className: classNames?.label
1292
1372
  }
1293
1373
  ),
1294
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "relative flex w-[122px] flex-row items-center", children: [
1295
- /* @__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)(
1296
1376
  "button",
1297
1377
  {
1298
1378
  type: "button",
1299
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",
1300
1380
  onClick: decrement,
1301
- 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" })
1302
1382
  }
1303
1383
  ),
1304
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1384
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1305
1385
  "input",
1306
1386
  {
1307
1387
  className: cn(counterVariants({ theme }), classNames?.input),
@@ -1312,24 +1392,24 @@ var Counter = (0, import_react7.forwardRef)(
1312
1392
  ...props
1313
1393
  }
1314
1394
  ),
1315
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1395
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1316
1396
  "button",
1317
1397
  {
1318
1398
  type: "button",
1319
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",
1320
1400
  onClick: increment,
1321
- 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" })
1322
1402
  }
1323
1403
  )
1324
1404
  ] }),
1325
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ErrorMessage_default, { message: error })
1405
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
1326
1406
  ]
1327
1407
  }
1328
1408
  );
1329
1409
  }
1330
1410
  );
1331
1411
  Counter.displayName = "Counter";
1332
- var counterVariants = (0, import_cva6.cva)(
1412
+ var counterVariants = (0, import_cva7.cva)(
1333
1413
  [
1334
1414
  "border-input",
1335
1415
  "placeholder:text-muted-foreground",
@@ -1379,167 +1459,16 @@ var counterVariants = (0, import_cva6.cva)(
1379
1459
  }
1380
1460
  );
1381
1461
 
1382
- // src/components/ui/InputOtp.tsx
1383
- var import_react8 = require("react");
1384
-
1385
- // src/components/primitives/input-otp.tsx
1386
- var React7 = __toESM(require("react"), 1);
1387
- var import_input_otp = require("input-otp");
1388
- var import_lucide_react12 = require("lucide-react");
1389
- var import_jsx_runtime19 = require("react/jsx-runtime");
1390
- var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1391
- import_input_otp.OTPInput,
1392
- {
1393
- ref,
1394
- containerClassName: cn(
1395
- "flex items-center gap-2 has-[:disabled]:opacity-50",
1396
- containerClassName
1397
- ),
1398
- className: cn("disabled:cursor-not-allowed", className),
1399
- ...props
1400
- }
1401
- ));
1402
- InputOTP.displayName = "InputOTP";
1403
- var InputOTPGroup = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ref, className: cn("flex items-center", className), ...props }));
1404
- InputOTPGroup.displayName = "InputOTPGroup";
1405
- var InputOTPSlot = React7.forwardRef(({ index, error, className, ...props }, ref) => {
1406
- const inputOTPContext = React7.useContext(import_input_otp.OTPInputContext);
1407
- const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
1408
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
1409
- "div",
1410
- {
1411
- ref,
1412
- className: cn(
1413
- "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",
1414
- isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
1415
- error && "border-red-500 dark:border-red-400",
1416
- className
1417
- ),
1418
- ...props,
1419
- children: [
1420
- char,
1421
- 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" }) })
1422
- ]
1423
- }
1424
- );
1425
- });
1426
- InputOTPSlot.displayName = "InputOTPSlot";
1427
- 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, {}) }));
1428
- InputOTPSeparator.displayName = "InputOTPSeparator";
1429
-
1430
- // src/components/ui/InputOtp.tsx
1431
- var import_jsx_runtime20 = require("react/jsx-runtime");
1432
- var InputOtp = (0, import_react8.forwardRef)(
1433
- ({ digits, label, description, error, ...props }, ref) => {
1434
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
1435
- "div",
1436
- {
1437
- className: "group flex w-full flex-col gap-1",
1438
- "data-testid": `input-otp-wrapper-${props.id}`,
1439
- children: [
1440
- label && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1441
- Label_default,
1442
- {
1443
- text: label,
1444
- htmlFor: props.name,
1445
- required: props.required,
1446
- description
1447
- }
1448
- ),
1449
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "relative flex flex-row items-center", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1450
- InputOTP,
1451
- {
1452
- ref,
1453
- maxLength: digits,
1454
- "data-testid": `input-otp-element-${props.id}`,
1455
- ...props,
1456
- 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))
1457
- }
1458
- ) }),
1459
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ErrorMessage_default, { message: error })
1460
- ]
1461
- }
1462
- );
1463
- }
1464
- );
1465
- InputOtp.displayName = "Input";
1466
-
1467
- // src/components/primitives/avatar.tsx
1468
- var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar"), 1);
1469
- var React8 = __toESM(require("react"), 1);
1470
- var import_jsx_runtime21 = require("react/jsx-runtime");
1471
- var AvatarBase = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1472
- AvatarPrimitive.Root,
1473
- {
1474
- ref,
1475
- className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
1476
- ...props
1477
- }
1478
- ));
1479
- AvatarBase.displayName = AvatarPrimitive.Root.displayName;
1480
- var AvatarImage = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1481
- AvatarPrimitive.Image,
1482
- {
1483
- ref,
1484
- className: cn("aspect-square h-full w-full", className),
1485
- "data-testid": "job-card-avatar",
1486
- ...props
1487
- }
1488
- ));
1489
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1490
- var AvatarFallback = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1491
- AvatarPrimitive.Fallback,
1492
- {
1493
- ref,
1494
- className: cn(
1495
- "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",
1496
- className
1497
- ),
1498
- ...props
1499
- }
1500
- ));
1501
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1502
-
1503
- // src/components/ui/Avatar.tsx
1504
- var import_cva7 = require("cva");
1505
- var import_link = __toESM(require("next/link"), 1);
1506
- var import_jsx_runtime22 = require("react/jsx-runtime");
1507
- function Avatar({ size, src, href, name, ...linkProps }) {
1508
- const fallbackShort = name?.slice(0, 2);
1509
- const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
1510
- const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
1511
- const renderAvatar = () => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(AvatarBase, { className: avatarVariants({ size }), children: [
1512
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarImage, { src, alt: name }),
1513
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AvatarFallback, { children: fallback?.toUpperCase() })
1514
- ] });
1515
- if (href) {
1516
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_link.default, { href, ...linkProps, children: renderAvatar() });
1517
- }
1518
- return renderAvatar();
1519
- }
1520
- var avatarVariants = (0, import_cva7.cva)("ring ring-white ring-2", {
1521
- variants: {
1522
- size: {
1523
- large: "h-16 w-16",
1524
- medium: "h-10 w-10",
1525
- small: "h-8 w-8"
1526
- }
1527
- },
1528
- defaultVariants: {
1529
- size: "medium"
1530
- }
1531
- });
1532
-
1533
1462
  // src/components/ui/Icon.tsx
1534
1463
  var import_react_slot2 = require("@radix-ui/react-slot");
1535
1464
  var import_cva8 = require("cva");
1536
- var import_react9 = require("react");
1465
+ var import_react8 = require("react");
1537
1466
  var import_tailwind_merge3 = require("tailwind-merge");
1538
- var import_jsx_runtime23 = require("react/jsx-runtime");
1539
- var Icon = (0, import_react9.forwardRef)(
1467
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1468
+ var Icon = (0, import_react8.forwardRef)(
1540
1469
  ({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
1541
1470
  const Component = readonly ? import_react_slot2.Slot : "button";
1542
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
1471
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
1543
1472
  Component,
1544
1473
  {
1545
1474
  className: cn(
@@ -1599,13 +1528,98 @@ var iconVariants = (0, import_cva8.cva)(
1599
1528
  medium: ["h-12", "w-12", "p-4"],
1600
1529
  large: ["h-14", "w-14", "p-4"]
1601
1530
  }
1602
- },
1603
- defaultVariants: {
1604
- variant: "filled",
1605
- size: "medium"
1606
- }
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
+ );
1607
1620
  }
1608
1621
  );
1622
+ InputOtp.displayName = "Input";
1609
1623
 
1610
1624
  // src/components/ui/LinkButton.tsx
1611
1625
  var import_link2 = __toESM(require("next/link"), 1);
@@ -1660,10 +1674,19 @@ function ReadMore({ text, ...props }) {
1660
1674
  const snippet = createReadMoreText(text, maxWords, isExpanded);
1661
1675
  return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { ...props, children: [
1662
1676
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_markdown.default, { children: snippet }) }),
1663
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Button, { className: "mt-2 flex items-center justify-center", variant: "link", onClick: toggleText, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("p", { className: "text-sm font-bold underline underline-offset-2", children: [
1664
- "Read ",
1665
- isExpanded ? "less" : "more"
1666
- ] }) })
1677
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
1678
+ Button,
1679
+ {
1680
+ type: "button",
1681
+ className: "mt-2 flex items-center justify-center",
1682
+ variant: "link",
1683
+ onClick: toggleText,
1684
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("p", { className: "text-sm font-bold underline underline-offset-2", children: [
1685
+ "Read ",
1686
+ isExpanded ? "less" : "more"
1687
+ ] })
1688
+ }
1689
+ )
1667
1690
  ] });
1668
1691
  }
1669
1692
 
@@ -1802,7 +1825,11 @@ function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
1802
1825
  const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(r));
1803
1826
  const goBack = () => {
1804
1827
  const previous = history[history.length - 2];
1805
- 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
+ }
1806
1833
  };
1807
1834
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
1808
1835
  Icon,
@@ -1990,102 +2017,6 @@ function JobHeader({
1990
2017
  // src/components/jobPost/JobPost.tsx
1991
2018
  var DateFns = __toESM(require("date-fns"), 1);
1992
2019
 
1993
- // src/types/data/shared_pickle_output_latest.ts
1994
- var shared_pickle_output_latest_exports = {};
1995
- __export(shared_pickle_output_latest_exports, {
1996
- CurrencyEnum: () => CurrencyEnum,
1997
- DetailLevelEnum: () => DetailLevelEnum,
1998
- TypeEnum: () => TypeEnum,
1999
- UnitTextEnum: () => UnitTextEnum,
2000
- imageAssetSchema: () => imageAssetSchema,
2001
- imageSchema: () => imageSchema,
2002
- monetaryAmountSchema: () => monetaryAmountSchema,
2003
- placeSchema: () => placeSchema,
2004
- postalAddressSchema: () => postalAddressSchema,
2005
- quantitativeValueSchema: () => quantitativeValueSchema
2006
- });
2007
- var import_zod = require("zod");
2008
- var TypeEnum = import_zod.z.enum(["IMAGE"]);
2009
- var DetailLevelEnum = import_zod.z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
2010
- var UnitTextEnum = import_zod.z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
2011
- var CurrencyEnum = import_zod.z.enum(["EUR", "GBP", "USD"]);
2012
- var postalAddressSchema = import_zod.z.object({
2013
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2014
- type: import_zod.z.string().describe("Document type used for schema"),
2015
- addressCountry: import_zod.z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
2016
- addressRegion: import_zod.z.optional(import_zod.z.string()).describe("The region in which the locality is, and which is in the country."),
2017
- 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."),
2018
- streetAddress: import_zod.z.optional(import_zod.z.string()).describe("The street name of the address within the locality."),
2019
- streetNumber: import_zod.z.optional(import_zod.z.string()).describe("The house of building number within the street."),
2020
- postalCode: import_zod.z.optional(import_zod.z.string()).describe("The postal code"),
2021
- description: import_zod.z.optional(import_zod.z.string()).describe("A descriptive string containing the full address.")
2022
- });
2023
- var placeSchema = import_zod.z.object({
2024
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2025
- detailLevel: import_zod.z.optional(DetailLevelEnum),
2026
- latitude: import_zod.z.optional(import_zod.z.number()).describe("The latitude of a location."),
2027
- longitude: import_zod.z.optional(import_zod.z.number()).describe("The longitude of a location."),
2028
- address: import_zod.z.optional(postalAddressSchema).describe("The physical place of the location")
2029
- });
2030
- var quantitativeValueSchema = import_zod.z.object({
2031
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2032
- type: import_zod.z.string().describe("Document type used for schema"),
2033
- 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."),
2034
- 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."),
2035
- maxValue: import_zod.z.optional(import_zod.z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
2036
- unitText: UnitTextEnum
2037
- });
2038
- var monetaryAmountSchema = import_zod.z.object({
2039
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2040
- type: import_zod.z.string().describe("Document type used for schema"),
2041
- 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."),
2042
- 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"),
2043
- 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"),
2044
- value: import_zod.z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
2045
- currency: import_zod.z.optional(CurrencyEnum)
2046
- });
2047
- var imageAssetSchema = import_zod.z.object({
2048
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2049
- altText: import_zod.z.optional(import_zod.z.string()).describe("The alt text for the image"),
2050
- assetId: import_zod.z.optional(import_zod.z.string()).describe("The asset ID for the image"),
2051
- description: import_zod.z.optional(import_zod.z.string()).describe("The description for the image"),
2052
- extension: import_zod.z.optional(import_zod.z.string()).describe("The extension for the image"),
2053
- label: import_zod.z.optional(import_zod.z.string()).describe("The label for the image"),
2054
- mimeType: import_zod.z.optional(import_zod.z.string()).describe("The mime type for the image"),
2055
- originalFilename: import_zod.z.optional(import_zod.z.string()).describe("The original filename for the image"),
2056
- path: import_zod.z.optional(import_zod.z.string()).describe("The path for the image"),
2057
- sha1Hash: import_zod.z.optional(import_zod.z.string()).describe("The SHA1 hash for the image"),
2058
- size: import_zod.z.optional(import_zod.z.number()).describe("The size for the image"),
2059
- title: import_zod.z.optional(import_zod.z.string()).describe("The title for the image"),
2060
- uploadId: import_zod.z.optional(import_zod.z.string()).describe("The upload ID for the image"),
2061
- url: import_zod.z.optional(import_zod.z.string()).describe("The URL for the image")
2062
- });
2063
- var imageSchema = import_zod.z.object({
2064
- version: import_zod.z.literal("1.0.0").default("1.0.0"),
2065
- type: import_zod.z.string().describe("Document type used for schema"),
2066
- asset: import_zod.z.optional(imageAssetSchema).describe("The asset for the image")
2067
- });
2068
-
2069
- // src/lib/salaryRange.ts
2070
- function salaryRange(salary) {
2071
- if (!salary) return null;
2072
- const min = salary.minValue;
2073
- const max = salary.maxValue;
2074
- const single = salary.singleValue;
2075
- const signs = {
2076
- [CurrencyEnum.Values.USD]: "$",
2077
- [CurrencyEnum.Values.GBP]: "\xA3",
2078
- [CurrencyEnum.Values.EUR]: "\u20AC"
2079
- };
2080
- const sign = signs[salary.currency ?? CurrencyEnum.Values.USD];
2081
- if (min == null && max == null && single == null) return null;
2082
- if (single != null) return sign + single.toLocaleString();
2083
- if (min === max) return sign + min?.toLocaleString();
2084
- if (min != null && max != null)
2085
- return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString();
2086
- return null;
2087
- }
2088
-
2089
2020
  // src/hooks/useDisplayText.ts
2090
2021
  var import_react13 = require("react");
2091
2022
 
@@ -2575,6 +2506,102 @@ function formattedJobLocation(job) {
2575
2506
  return [address, remote].filter(Boolean).join(" | ");
2576
2507
  }
2577
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
+
2578
2605
  // src/components/jobPost/JobPost.tsx
2579
2606
  var import_jsx_runtime33 = require("react/jsx-runtime");
2580
2607
  function JobPost({
@@ -2673,24 +2700,6 @@ function JobPost({
2673
2700
  );
2674
2701
  }
2675
2702
 
2676
- // src/types/data/job_posting_service_latest.ts
2677
- var job_posting_service_latest_exports = {};
2678
- __export(job_posting_service_latest_exports, {
2679
- BestFitEnum: () => BestFitEnum,
2680
- ClinicalLicenseEnum: () => ClinicalLicenseEnum,
2681
- ClinicalSettingEnum: () => ClinicalSettingEnum,
2682
- ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum,
2683
- EmploymentLevelEnum: () => EmploymentLevelEnum,
2684
- EmploymentTypeEnum: () => EmploymentTypeEnum,
2685
- JobFunctionEnum: () => JobFunctionEnum,
2686
- JobLocationTypeEnum: () => JobLocationTypeEnum,
2687
- PublishStatusEnum: () => PublishStatusEnum2,
2688
- ShiftEnum: () => ShiftEnum,
2689
- TypeEnum: () => TypeEnum3,
2690
- jobPostSchema: () => jobPostSchema
2691
- });
2692
- var import_zod3 = require("zod");
2693
-
2694
2703
  // src/types/data/company_service_latest.ts
2695
2704
  var company_service_latest_exports = {};
2696
2705
  __export(company_service_latest_exports, {
@@ -2838,6 +2847,22 @@ var officeSchema = import_zod2.z.object({
2838
2847
  });
2839
2848
 
2840
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");
2841
2866
  var TypeEnum3 = import_zod3.z.enum(["JOB_POST"]);
2842
2867
  var JobLocationTypeEnum = import_zod3.z.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
2843
2868
  var EmploymentTypeEnum = import_zod3.z.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);