@next-degree/pickle-shared-js 0.13.1 → 0.13.4

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 (581) hide show
  1. package/dist/chunk-2FGZQI42.js +11 -0
  2. package/dist/chunk-2FGZQI42.js.map +1 -0
  3. package/dist/chunk-325GPWFN.js +24 -0
  4. package/dist/chunk-325GPWFN.js.map +1 -0
  5. package/dist/chunk-37YFXNLL.cjs +46 -0
  6. package/dist/chunk-37YFXNLL.cjs.map +1 -0
  7. package/dist/chunk-3BGXWNKI.cjs +26 -0
  8. package/dist/chunk-3BGXWNKI.cjs.map +1 -0
  9. package/dist/chunk-3CI6PTKT.cjs +82 -0
  10. package/dist/chunk-3CI6PTKT.cjs.map +1 -0
  11. package/dist/chunk-3PARXYUI.cjs +86 -0
  12. package/dist/chunk-3PARXYUI.cjs.map +1 -0
  13. package/dist/chunk-3VIRJK7I.js +63 -0
  14. package/dist/chunk-3VIRJK7I.js.map +1 -0
  15. package/dist/chunk-47H3M7TP.js +72 -0
  16. package/dist/chunk-47H3M7TP.js.map +1 -0
  17. package/dist/chunk-4E3ANVRR.js +35 -0
  18. package/dist/chunk-4E3ANVRR.js.map +1 -0
  19. package/dist/chunk-4GDAUTH4.cjs +112 -0
  20. package/dist/chunk-4GDAUTH4.cjs.map +1 -0
  21. package/dist/chunk-4IJ5TMHI.js +20 -0
  22. package/dist/chunk-4IJ5TMHI.js.map +1 -0
  23. package/dist/chunk-4KXEHU2Z.js +142 -0
  24. package/dist/chunk-4KXEHU2Z.js.map +1 -0
  25. package/dist/chunk-4NEPWF3Z.js +152 -0
  26. package/dist/chunk-4NEPWF3Z.js.map +1 -0
  27. package/dist/chunk-4OJ7NEZU.js +107 -0
  28. package/dist/chunk-4OJ7NEZU.js.map +1 -0
  29. package/dist/chunk-4RVGUZNF.js +72 -0
  30. package/dist/chunk-4RVGUZNF.js.map +1 -0
  31. package/dist/chunk-4TLLJ52E.cjs +28 -0
  32. package/dist/chunk-4TLLJ52E.cjs.map +1 -0
  33. package/dist/chunk-4TP4NYO2.js +41 -0
  34. package/dist/chunk-4TP4NYO2.js.map +1 -0
  35. package/dist/chunk-567FG76G.cjs +39 -0
  36. package/dist/chunk-567FG76G.cjs.map +1 -0
  37. package/dist/chunk-5H35ZVLR.js +43 -0
  38. package/dist/chunk-5H35ZVLR.js.map +1 -0
  39. package/dist/chunk-5H75FIY2.cjs +64 -0
  40. package/dist/chunk-5H75FIY2.cjs.map +1 -0
  41. package/dist/chunk-5QXQ2LBB.cjs +4 -0
  42. package/dist/chunk-5QXQ2LBB.cjs.map +1 -0
  43. package/dist/chunk-5REFGTWO.js +87 -0
  44. package/dist/chunk-5REFGTWO.js.map +1 -0
  45. package/dist/chunk-5RH3VTNV.js +81 -0
  46. package/dist/chunk-5RH3VTNV.js.map +1 -0
  47. package/dist/chunk-5Z4ILTRD.js +48 -0
  48. package/dist/chunk-5Z4ILTRD.js.map +1 -0
  49. package/dist/chunk-7CKQ3FSB.js +24 -0
  50. package/dist/chunk-7CKQ3FSB.js.map +1 -0
  51. package/dist/chunk-7VHZCQL3.js +30 -0
  52. package/dist/chunk-7VHZCQL3.js.map +1 -0
  53. package/dist/chunk-7X6S7GJK.cjs +11 -0
  54. package/dist/chunk-7X6S7GJK.cjs.map +1 -0
  55. package/dist/chunk-A46BJOVJ.cjs +71 -0
  56. package/dist/chunk-A46BJOVJ.cjs.map +1 -0
  57. package/dist/chunk-A7E5UPEP.cjs +36 -0
  58. package/dist/chunk-A7E5UPEP.cjs.map +1 -0
  59. package/dist/chunk-A7MLO6YN.cjs +109 -0
  60. package/dist/chunk-A7MLO6YN.cjs.map +1 -0
  61. package/dist/chunk-AB3775NI.cjs +93 -0
  62. package/dist/chunk-AB3775NI.cjs.map +1 -0
  63. package/dist/chunk-AMNEAWA7.cjs +59 -0
  64. package/dist/chunk-AMNEAWA7.cjs.map +1 -0
  65. package/dist/chunk-AQ54YTF2.js +80 -0
  66. package/dist/chunk-AQ54YTF2.js.map +1 -0
  67. package/dist/chunk-CDQM72QX.cjs +46 -0
  68. package/dist/chunk-CDQM72QX.cjs.map +1 -0
  69. package/dist/chunk-CIFWAE4A.js +39 -0
  70. package/dist/chunk-CIFWAE4A.js.map +1 -0
  71. package/dist/chunk-CUICNKLS.cjs +42 -0
  72. package/dist/chunk-CUICNKLS.cjs.map +1 -0
  73. package/dist/chunk-D5CBPEAR.js +67 -0
  74. package/dist/chunk-D5CBPEAR.js.map +1 -0
  75. package/dist/chunk-DGDBIRAA.js +118 -0
  76. package/dist/chunk-DGDBIRAA.js.map +1 -0
  77. package/dist/chunk-DHB467LV.js +34 -0
  78. package/dist/chunk-DHB467LV.js.map +1 -0
  79. package/dist/chunk-DU5OQA67.cjs +49 -0
  80. package/dist/chunk-DU5OQA67.cjs.map +1 -0
  81. package/dist/chunk-DVSHUNGT.cjs +49 -0
  82. package/dist/chunk-DVSHUNGT.cjs.map +1 -0
  83. package/dist/chunk-E5S6MGBJ.cjs +51 -0
  84. package/dist/chunk-E5S6MGBJ.cjs.map +1 -0
  85. package/dist/chunk-EAFZZSYR.js +69 -0
  86. package/dist/chunk-EAFZZSYR.js.map +1 -0
  87. package/dist/chunk-EBKY3MJH.cjs +72 -0
  88. package/dist/chunk-EBKY3MJH.cjs.map +1 -0
  89. package/dist/chunk-EG7G3RZ2.cjs +79 -0
  90. package/dist/chunk-EG7G3RZ2.cjs.map +1 -0
  91. package/dist/chunk-FMST4EVC.js +11 -0
  92. package/dist/chunk-FMST4EVC.js.map +1 -0
  93. package/dist/chunk-FOJTLQJO.js +152 -0
  94. package/dist/chunk-FOJTLQJO.js.map +1 -0
  95. package/dist/chunk-FRXKCHZ7.cjs +50 -0
  96. package/dist/chunk-FRXKCHZ7.cjs.map +1 -0
  97. package/dist/chunk-FSMBDLNU.js +34 -0
  98. package/dist/chunk-FSMBDLNU.js.map +1 -0
  99. package/dist/chunk-G5ERI2MS.js +59 -0
  100. package/dist/chunk-G5ERI2MS.js.map +1 -0
  101. package/dist/chunk-GK3QI7HQ.js +49 -0
  102. package/dist/chunk-GK3QI7HQ.js.map +1 -0
  103. package/dist/chunk-GN3JZCM3.cjs +99 -0
  104. package/dist/chunk-GN3JZCM3.cjs.map +1 -0
  105. package/dist/chunk-GP5XW2ZR.cjs +36 -0
  106. package/dist/chunk-GP5XW2ZR.cjs.map +1 -0
  107. package/dist/chunk-GQNVPLSG.cjs +44 -0
  108. package/dist/chunk-GQNVPLSG.cjs.map +1 -0
  109. package/dist/chunk-GRLH3A6S.js +40 -0
  110. package/dist/chunk-GRLH3A6S.js.map +1 -0
  111. package/dist/chunk-HCXPKYJR.cjs +37 -0
  112. package/dist/chunk-HCXPKYJR.cjs.map +1 -0
  113. package/dist/chunk-HEHLGQ2U.js +198 -0
  114. package/dist/chunk-HEHLGQ2U.js.map +1 -0
  115. package/dist/chunk-HJYGNJD5.js +27 -0
  116. package/dist/chunk-HJYGNJD5.js.map +1 -0
  117. package/dist/chunk-HMKEBIBE.cjs +14 -0
  118. package/dist/chunk-HMKEBIBE.cjs.map +1 -0
  119. package/dist/chunk-HVNR3VXM.js +34 -0
  120. package/dist/chunk-HVNR3VXM.js.map +1 -0
  121. package/dist/chunk-I4H7XREK.js +91 -0
  122. package/dist/chunk-I4H7XREK.js.map +1 -0
  123. package/dist/chunk-IHWVGIDT.cjs +86 -0
  124. package/dist/chunk-IHWVGIDT.cjs.map +1 -0
  125. package/dist/chunk-IVPCYGXE.cjs +20 -0
  126. package/dist/chunk-IVPCYGXE.cjs.map +1 -0
  127. package/dist/chunk-J5GVGJZA.js +23 -0
  128. package/dist/chunk-J5GVGJZA.js.map +1 -0
  129. package/dist/chunk-JDAV6RWN.js +26 -0
  130. package/dist/chunk-JDAV6RWN.js.map +1 -0
  131. package/dist/chunk-JZVRCP3M.cjs +411 -0
  132. package/dist/chunk-JZVRCP3M.cjs.map +1 -0
  133. package/dist/chunk-K3653KJ6.js +11 -0
  134. package/dist/chunk-K3653KJ6.js.map +1 -0
  135. package/dist/chunk-K76RPF2X.js +37 -0
  136. package/dist/chunk-K76RPF2X.js.map +1 -0
  137. package/dist/chunk-KH3K3OI4.cjs +86 -0
  138. package/dist/chunk-KH3K3OI4.cjs.map +1 -0
  139. package/dist/chunk-KR33HZBW.js +31 -0
  140. package/dist/chunk-KR33HZBW.js.map +1 -0
  141. package/dist/chunk-KWIGG26N.js +3 -0
  142. package/dist/chunk-KWIGG26N.js.map +1 -0
  143. package/dist/chunk-KZBS5RNE.js +41 -0
  144. package/dist/chunk-KZBS5RNE.js.map +1 -0
  145. package/dist/chunk-L4SZQQK6.cjs +171 -0
  146. package/dist/chunk-L4SZQQK6.cjs.map +1 -0
  147. package/dist/chunk-L56JW56Y.cjs +129 -0
  148. package/dist/chunk-L56JW56Y.cjs.map +1 -0
  149. package/dist/chunk-LQPOFYD3.js +47 -0
  150. package/dist/chunk-LQPOFYD3.js.map +1 -0
  151. package/dist/chunk-LQQ244AY.js +28 -0
  152. package/dist/chunk-LQQ244AY.js.map +1 -0
  153. package/dist/chunk-LRBADBNS.cjs +23 -0
  154. package/dist/chunk-LRBADBNS.cjs.map +1 -0
  155. package/dist/chunk-LUCDLADP.cjs +49 -0
  156. package/dist/chunk-LUCDLADP.cjs.map +1 -0
  157. package/dist/chunk-LUFPA3WC.cjs +93 -0
  158. package/dist/chunk-LUFPA3WC.cjs.map +1 -0
  159. package/dist/chunk-M3HMXHAL.cjs +266 -0
  160. package/dist/chunk-M3HMXHAL.cjs.map +1 -0
  161. package/dist/chunk-MDLLVPLD.cjs +35 -0
  162. package/dist/chunk-MDLLVPLD.cjs.map +1 -0
  163. package/dist/chunk-MGWZXPMF.cjs +13 -0
  164. package/dist/chunk-MGWZXPMF.cjs.map +1 -0
  165. package/dist/chunk-NHAD5YHP.js +134 -0
  166. package/dist/chunk-NHAD5YHP.js.map +1 -0
  167. package/dist/chunk-NLGWU2KI.cjs +36 -0
  168. package/dist/chunk-NLGWU2KI.cjs.map +1 -0
  169. package/dist/chunk-NU2XENOZ.js +90 -0
  170. package/dist/chunk-NU2XENOZ.js.map +1 -0
  171. package/dist/chunk-OC2OB575.cjs +200 -0
  172. package/dist/chunk-OC2OB575.cjs.map +1 -0
  173. package/dist/chunk-OT3J7XYM.cjs +120 -0
  174. package/dist/chunk-OT3J7XYM.cjs.map +1 -0
  175. package/dist/chunk-P7CAVAYY.cjs +198 -0
  176. package/dist/chunk-P7CAVAYY.cjs.map +1 -0
  177. package/dist/chunk-PB2N5UFC.js +20 -0
  178. package/dist/chunk-PB2N5UFC.js.map +1 -0
  179. package/dist/chunk-PLL2MFTV.js +26 -0
  180. package/dist/chunk-PLL2MFTV.js.map +1 -0
  181. package/dist/chunk-PLPEZUCB.js +42 -0
  182. package/dist/chunk-PLPEZUCB.js.map +1 -0
  183. package/dist/chunk-PNXBZYED.js +24 -0
  184. package/dist/chunk-PNXBZYED.js.map +1 -0
  185. package/dist/chunk-PONUWUJ7.js +29 -0
  186. package/dist/chunk-PONUWUJ7.js.map +1 -0
  187. package/dist/chunk-PRZZF2EB.js +9 -0
  188. package/dist/chunk-PRZZF2EB.js.map +1 -0
  189. package/dist/chunk-PSRWV7UW.cjs +50 -0
  190. package/dist/chunk-PSRWV7UW.cjs.map +1 -0
  191. package/dist/chunk-PZ5AY32C.js +9 -0
  192. package/dist/chunk-PZ5AY32C.js.map +1 -0
  193. package/dist/chunk-Q7SFCCGT.cjs +11 -0
  194. package/dist/chunk-Q7SFCCGT.cjs.map +1 -0
  195. package/dist/chunk-QDSCHWM3.cjs +64 -0
  196. package/dist/chunk-QDSCHWM3.cjs.map +1 -0
  197. package/dist/chunk-QNVDG3L3.cjs +171 -0
  198. package/dist/chunk-QNVDG3L3.cjs.map +1 -0
  199. package/dist/chunk-RDPMXAQG.cjs +50 -0
  200. package/dist/chunk-RDPMXAQG.cjs.map +1 -0
  201. package/dist/chunk-RIG6I4HV.cjs +49 -0
  202. package/dist/chunk-RIG6I4HV.cjs.map +1 -0
  203. package/dist/chunk-ROBFZCJT.js +176 -0
  204. package/dist/chunk-ROBFZCJT.js.map +1 -0
  205. package/dist/chunk-RYAVZOGW.js +46 -0
  206. package/dist/chunk-RYAVZOGW.js.map +1 -0
  207. package/dist/chunk-SBPJFFRB.js +107 -0
  208. package/dist/chunk-SBPJFFRB.js.map +1 -0
  209. package/dist/chunk-SKMP4FO7.cjs +42 -0
  210. package/dist/chunk-SKMP4FO7.cjs.map +1 -0
  211. package/dist/chunk-SMDQTPJE.cjs +31 -0
  212. package/dist/chunk-SMDQTPJE.cjs.map +1 -0
  213. package/dist/chunk-SPAVM3EE.cjs +95 -0
  214. package/dist/chunk-SPAVM3EE.cjs.map +1 -0
  215. package/dist/chunk-T6O5RJA3.js +91 -0
  216. package/dist/chunk-T6O5RJA3.js.map +1 -0
  217. package/dist/chunk-T7LYMPIA.js +49 -0
  218. package/dist/chunk-T7LYMPIA.js.map +1 -0
  219. package/dist/chunk-TBV7NDAG.cjs +37 -0
  220. package/dist/chunk-TBV7NDAG.cjs.map +1 -0
  221. package/dist/chunk-TCV6N3EK.js +400 -0
  222. package/dist/chunk-TCV6N3EK.js.map +1 -0
  223. package/dist/chunk-TJVXG27I.cjs +13 -0
  224. package/dist/chunk-TJVXG27I.cjs.map +1 -0
  225. package/dist/chunk-U2T647VT.cjs +144 -0
  226. package/dist/chunk-U2T647VT.cjs.map +1 -0
  227. package/dist/chunk-U3D4LL6T.js +54 -0
  228. package/dist/chunk-U3D4LL6T.js.map +1 -0
  229. package/dist/chunk-U6G7EXM6.js +33 -0
  230. package/dist/chunk-U6G7EXM6.js.map +1 -0
  231. package/dist/chunk-USQZOJUG.cjs +121 -0
  232. package/dist/chunk-USQZOJUG.cjs.map +1 -0
  233. package/dist/chunk-UTPXIIHX.js +24 -0
  234. package/dist/chunk-UTPXIIHX.js.map +1 -0
  235. package/dist/chunk-UTYX2NMA.cjs +47 -0
  236. package/dist/chunk-UTYX2NMA.cjs.map +1 -0
  237. package/dist/chunk-V563IKQH.cjs +4 -0
  238. package/dist/chunk-V563IKQH.cjs.map +1 -0
  239. package/dist/chunk-VANX3AQD.js +3 -0
  240. package/dist/chunk-VANX3AQD.js.map +1 -0
  241. package/dist/chunk-VM36U3TK.js +106 -0
  242. package/dist/chunk-VM36U3TK.js.map +1 -0
  243. package/dist/chunk-VUBXXZUL.cjs +22 -0
  244. package/dist/chunk-VUBXXZUL.cjs.map +1 -0
  245. package/dist/chunk-VXNZRGLE.cjs +140 -0
  246. package/dist/chunk-VXNZRGLE.cjs.map +1 -0
  247. package/dist/chunk-VYILTAQR.cjs +51 -0
  248. package/dist/chunk-VYILTAQR.cjs.map +1 -0
  249. package/dist/chunk-W4VQ5YRX.js +45 -0
  250. package/dist/chunk-W4VQ5YRX.js.map +1 -0
  251. package/dist/chunk-W6BMYVY5.js +17 -0
  252. package/dist/chunk-W6BMYVY5.js.map +1 -0
  253. package/dist/chunk-WAZSWGCH.js +47 -0
  254. package/dist/chunk-WAZSWGCH.js.map +1 -0
  255. package/dist/chunk-WPH6SRZT.js +48 -0
  256. package/dist/chunk-WPH6SRZT.js.map +1 -0
  257. package/dist/chunk-WRANITBW.cjs +48 -0
  258. package/dist/chunk-WRANITBW.cjs.map +1 -0
  259. package/dist/chunk-WSDKENUA.cjs +99 -0
  260. package/dist/chunk-WSDKENUA.cjs.map +1 -0
  261. package/dist/chunk-WYSZMCAK.js +12 -0
  262. package/dist/chunk-WYSZMCAK.js.map +1 -0
  263. package/dist/chunk-XAPQTBJR.cjs +45 -0
  264. package/dist/chunk-XAPQTBJR.cjs.map +1 -0
  265. package/dist/chunk-XCYNYXC7.cjs +81 -0
  266. package/dist/chunk-XCYNYXC7.cjs.map +1 -0
  267. package/dist/chunk-XFGURTBJ.js +259 -0
  268. package/dist/chunk-XFGURTBJ.js.map +1 -0
  269. package/dist/chunk-XKKJHTSY.js +77 -0
  270. package/dist/chunk-XKKJHTSY.js.map +1 -0
  271. package/dist/chunk-XUTLQ573.cjs +20 -0
  272. package/dist/chunk-XUTLQ573.cjs.map +1 -0
  273. package/dist/chunk-YB2USB4M.js +17 -0
  274. package/dist/chunk-YB2USB4M.js.map +1 -0
  275. package/dist/chunk-YEYEUQM6.cjs +13 -0
  276. package/dist/chunk-YEYEUQM6.cjs.map +1 -0
  277. package/dist/chunk-YPA6HVCD.cjs +34 -0
  278. package/dist/chunk-YPA6HVCD.cjs.map +1 -0
  279. package/dist/chunk-YUA4DBYT.js +23 -0
  280. package/dist/chunk-YUA4DBYT.js.map +1 -0
  281. package/dist/chunk-Z33TWZHI.js +81 -0
  282. package/dist/chunk-Z33TWZHI.js.map +1 -0
  283. package/dist/chunk-ZBCGHL2Z.cjs +108 -0
  284. package/dist/chunk-ZBCGHL2Z.cjs.map +1 -0
  285. package/dist/chunk-ZC7K3XKN.cjs +51 -0
  286. package/dist/chunk-ZC7K3XKN.cjs.map +1 -0
  287. package/dist/chunk-ZZCTMR2F.cjs +37 -0
  288. package/dist/chunk-ZZCTMR2F.cjs.map +1 -0
  289. package/dist/components/buttons/BackButton.cjs +11 -153
  290. package/dist/components/buttons/BackButton.cjs.map +1 -1
  291. package/dist/components/buttons/BackButton.js +7 -134
  292. package/dist/components/buttons/BackButton.js.map +1 -1
  293. package/dist/components/company/CompanyBenefits.cjs +10 -31
  294. package/dist/components/company/CompanyBenefits.cjs.map +1 -1
  295. package/dist/components/company/CompanyBenefits.js +3 -8
  296. package/dist/components/company/CompanyBenefits.js.map +1 -1
  297. package/dist/components/company/CompanyInformation.cjs +9 -86
  298. package/dist/components/company/CompanyInformation.cjs.map +1 -1
  299. package/dist/components/company/CompanyInformation.js +4 -53
  300. package/dist/components/company/CompanyInformation.js.map +1 -1
  301. package/dist/components/company/CompanyTake.cjs +10 -122
  302. package/dist/components/company/CompanyTake.cjs.map +1 -1
  303. package/dist/components/company/CompanyTake.js +6 -91
  304. package/dist/components/company/CompanyTake.js.map +1 -1
  305. package/dist/components/jobCard/JobLocation.cjs +11 -151
  306. package/dist/components/jobCard/JobLocation.cjs.map +1 -1
  307. package/dist/components/jobCard/JobLocation.js +7 -121
  308. package/dist/components/jobCard/JobLocation.js.map +1 -1
  309. package/dist/components/jobPost/JobDescription.cjs +10 -347
  310. package/dist/components/jobPost/JobDescription.cjs.map +1 -1
  311. package/dist/components/jobPost/JobDescription.js +6 -315
  312. package/dist/components/jobPost/JobDescription.js.map +1 -1
  313. package/dist/components/jobPost/JobHeader.cjs +16 -406
  314. package/dist/components/jobPost/JobHeader.cjs.map +1 -1
  315. package/dist/components/jobPost/JobHeader.js +12 -398
  316. package/dist/components/jobPost/JobHeader.js.map +1 -1
  317. package/dist/components/jobPost/JobPost.cjs +42 -1820
  318. package/dist/components/jobPost/JobPost.cjs.map +1 -1
  319. package/dist/components/jobPost/JobPost.js +33 -1812
  320. package/dist/components/jobPost/JobPost.js.map +1 -1
  321. package/dist/components/primitives/avatar.cjs +17 -82
  322. package/dist/components/primitives/avatar.cjs.map +1 -1
  323. package/dist/components/primitives/avatar.js +4 -50
  324. package/dist/components/primitives/avatar.js.map +1 -1
  325. package/dist/components/primitives/command.cjs +41 -207
  326. package/dist/components/primitives/command.cjs.map +1 -1
  327. package/dist/components/primitives/command.js +5 -170
  328. package/dist/components/primitives/command.js.map +1 -1
  329. package/dist/components/primitives/dialog.cjs +45 -124
  330. package/dist/components/primitives/dialog.cjs.map +1 -1
  331. package/dist/components/primitives/dialog.js +4 -85
  332. package/dist/components/primitives/dialog.js.map +1 -1
  333. package/dist/components/primitives/input-otp.cjs +20 -90
  334. package/dist/components/primitives/input-otp.cjs.map +1 -1
  335. package/dist/components/primitives/input-otp.js +4 -58
  336. package/dist/components/primitives/input-otp.js.map +1 -1
  337. package/dist/components/primitives/popover.cjs +17 -67
  338. package/dist/components/primitives/popover.cjs.map +1 -1
  339. package/dist/components/primitives/popover.js +4 -35
  340. package/dist/components/primitives/popover.js.map +1 -1
  341. package/dist/components/primitives/radio-group.cjs +12 -64
  342. package/dist/components/primitives/radio-group.cjs.map +1 -1
  343. package/dist/components/primitives/radio-group.js +4 -36
  344. package/dist/components/primitives/radio-group.js.map +1 -1
  345. package/dist/components/primitives/separator.cjs +9 -62
  346. package/dist/components/primitives/separator.cjs.map +1 -1
  347. package/dist/components/primitives/separator.js +4 -32
  348. package/dist/components/primitives/separator.js.map +1 -1
  349. package/dist/components/primitives/tooltip.cjs +21 -69
  350. package/dist/components/primitives/tooltip.cjs.map +1 -1
  351. package/dist/components/primitives/tooltip.js +4 -36
  352. package/dist/components/primitives/tooltip.js.map +1 -1
  353. package/dist/components/ui/Avatar.cjs +12 -105
  354. package/dist/components/ui/Avatar.cjs.map +1 -1
  355. package/dist/components/ui/Avatar.js +5 -75
  356. package/dist/components/ui/Avatar.js.map +1 -1
  357. package/dist/components/ui/Badge.cjs +12 -62
  358. package/dist/components/ui/Badge.cjs.map +1 -1
  359. package/dist/components/ui/Badge.js +4 -31
  360. package/dist/components/ui/Badge.js.map +1 -1
  361. package/dist/components/ui/Button.cjs +13 -299
  362. package/dist/components/ui/Button.cjs.map +1 -1
  363. package/dist/components/ui/Button.js +4 -267
  364. package/dist/components/ui/Button.js.map +1 -1
  365. package/dist/components/ui/Checkbox.cjs +13 -109
  366. package/dist/components/ui/Checkbox.cjs.map +1 -1
  367. package/dist/components/ui/Checkbox.js +5 -81
  368. package/dist/components/ui/Checkbox.js.map +1 -1
  369. package/dist/components/ui/Chip.cjs +8 -59
  370. package/dist/components/ui/Chip.cjs.map +1 -1
  371. package/dist/components/ui/Chip.js +3 -29
  372. package/dist/components/ui/Chip.js.map +1 -1
  373. package/dist/components/ui/Combobox.cjs +22 -591
  374. package/dist/components/ui/Combobox.cjs.map +1 -1
  375. package/dist/components/ui/Combobox.js +14 -560
  376. package/dist/components/ui/Combobox.js.map +1 -1
  377. package/dist/components/ui/Counter.cjs +11 -226
  378. package/dist/components/ui/Counter.cjs.map +1 -1
  379. package/dist/components/ui/Counter.js +7 -197
  380. package/dist/components/ui/Counter.js.map +1 -1
  381. package/dist/components/ui/DatePicker.cjs +14 -274
  382. package/dist/components/ui/DatePicker.cjs.map +1 -1
  383. package/dist/components/ui/DatePicker.js +10 -245
  384. package/dist/components/ui/DatePicker.js.map +1 -1
  385. package/dist/components/ui/DismissibleBanner.cjs +9 -77
  386. package/dist/components/ui/DismissibleBanner.cjs.map +1 -1
  387. package/dist/components/ui/DismissibleBanner.js +4 -56
  388. package/dist/components/ui/DismissibleBanner.js.map +1 -1
  389. package/dist/components/ui/ErrorMessage.cjs +7 -36
  390. package/dist/components/ui/ErrorMessage.cjs.map +1 -1
  391. package/dist/components/ui/ErrorMessage.js +4 -16
  392. package/dist/components/ui/ErrorMessage.js.map +1 -1
  393. package/dist/components/ui/Icon.cjs +9 -108
  394. package/dist/components/ui/Icon.cjs.map +1 -1
  395. package/dist/components/ui/Icon.js +4 -87
  396. package/dist/components/ui/Icon.js.map +1 -1
  397. package/dist/components/ui/Input.cjs +9 -186
  398. package/dist/components/ui/Input.cjs.map +1 -1
  399. package/dist/components/ui/Input.js +7 -159
  400. package/dist/components/ui/Input.js.map +1 -1
  401. package/dist/components/ui/InputOtp.cjs +12 -175
  402. package/dist/components/ui/InputOtp.cjs.map +1 -1
  403. package/dist/components/ui/InputOtp.js +8 -145
  404. package/dist/components/ui/InputOtp.js.map +1 -1
  405. package/dist/components/ui/Label.cjs +7 -79
  406. package/dist/components/ui/Label.cjs.map +1 -1
  407. package/dist/components/ui/Label.js +5 -52
  408. package/dist/components/ui/Label.js.map +1 -1
  409. package/dist/components/ui/LinkButton.cjs +10 -58
  410. package/dist/components/ui/LinkButton.cjs.map +1 -1
  411. package/dist/components/ui/LinkButton.js +3 -25
  412. package/dist/components/ui/LinkButton.js.map +1 -1
  413. package/dist/components/ui/ListItem.cjs +8 -150
  414. package/dist/components/ui/ListItem.cjs.map +1 -1
  415. package/dist/components/ui/ListItem.js +6 -125
  416. package/dist/components/ui/ListItem.js.map +1 -1
  417. package/dist/components/ui/Map/ClusterMarker.cjs +9 -74
  418. package/dist/components/ui/Map/ClusterMarker.cjs.map +1 -1
  419. package/dist/components/ui/Map/ClusterMarker.js +5 -55
  420. package/dist/components/ui/Map/ClusterMarker.js.map +1 -1
  421. package/dist/components/ui/Map/FocusCircle.cjs +9 -81
  422. package/dist/components/ui/Map/FocusCircle.cjs.map +1 -1
  423. package/dist/components/ui/Map/FocusCircle.js +4 -61
  424. package/dist/components/ui/Map/FocusCircle.js.map +1 -1
  425. package/dist/components/ui/Map/IndividualMarker.cjs +9 -55
  426. package/dist/components/ui/Map/IndividualMarker.cjs.map +1 -1
  427. package/dist/components/ui/Map/IndividualMarker.js +4 -35
  428. package/dist/components/ui/Map/IndividualMarker.js.map +1 -1
  429. package/dist/components/ui/Map/MapComponent.cjs +16 -395
  430. package/dist/components/ui/Map/MapComponent.cjs.map +1 -1
  431. package/dist/components/ui/Map/MapComponent.js +12 -366
  432. package/dist/components/ui/Map/MapComponent.js.map +1 -1
  433. package/dist/components/ui/Map/MapContent.cjs +13 -273
  434. package/dist/components/ui/Map/MapContent.cjs.map +1 -1
  435. package/dist/components/ui/Map/MapContent.js +9 -254
  436. package/dist/components/ui/Map/MapContent.js.map +1 -1
  437. package/dist/components/ui/Map/clustering.cjs +13 -99
  438. package/dist/components/ui/Map/clustering.cjs.map +1 -1
  439. package/dist/components/ui/Map/clustering.js +5 -76
  440. package/dist/components/ui/Map/clustering.js.map +1 -1
  441. package/dist/components/ui/Map/constants.cjs +33 -61
  442. package/dist/components/ui/Map/constants.cjs.map +1 -1
  443. package/dist/components/ui/Map/constants.js +3 -33
  444. package/dist/components/ui/Map/constants.js.map +1 -1
  445. package/dist/components/ui/Map/hooks.cjs +18 -90
  446. package/dist/components/ui/Map/hooks.cjs.map +1 -1
  447. package/dist/components/ui/Map/hooks.js +6 -58
  448. package/dist/components/ui/Map/hooks.js.map +1 -1
  449. package/dist/components/ui/Map/index.cjs +21 -400
  450. package/dist/components/ui/Map/index.cjs.map +1 -1
  451. package/dist/components/ui/Map/index.js +13 -364
  452. package/dist/components/ui/Map/index.js.map +1 -1
  453. package/dist/components/ui/Map/types.cjs +2 -17
  454. package/dist/components/ui/Map/types.cjs.map +1 -1
  455. package/dist/components/ui/Map/types.js +2 -0
  456. package/dist/components/ui/Map/types.js.map +1 -1
  457. package/dist/components/ui/Map/utils.cjs +25 -75
  458. package/dist/components/ui/Map/utils.cjs.map +1 -1
  459. package/dist/components/ui/Map/utils.js +4 -48
  460. package/dist/components/ui/Map/utils.js.map +1 -1
  461. package/dist/components/ui/PlacesQueryInput.cjs +9 -301
  462. package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
  463. package/dist/components/ui/PlacesQueryInput.js +7 -275
  464. package/dist/components/ui/PlacesQueryInput.js.map +1 -1
  465. package/dist/components/ui/Radio.cjs +12 -151
  466. package/dist/components/ui/Radio.cjs.map +1 -1
  467. package/dist/components/ui/Radio.js +8 -123
  468. package/dist/components/ui/Radio.js.map +1 -1
  469. package/dist/components/ui/ReadMore.cjs +9 -340
  470. package/dist/components/ui/ReadMore.cjs.map +1 -1
  471. package/dist/components/ui/ReadMore.js +5 -311
  472. package/dist/components/ui/ReadMore.js.map +1 -1
  473. package/dist/components/ui/Select.cjs +11 -303
  474. package/dist/components/ui/Select.cjs.map +1 -1
  475. package/dist/components/ui/Select.js +9 -282
  476. package/dist/components/ui/Select.js.map +1 -1
  477. package/dist/components/ui/StepTabs.cjs +9 -129
  478. package/dist/components/ui/StepTabs.cjs.map +1 -1
  479. package/dist/components/ui/StepTabs.js +4 -99
  480. package/dist/components/ui/StepTabs.js.map +1 -1
  481. package/dist/components/ui/Switch.cjs +9 -69
  482. package/dist/components/ui/Switch.cjs.map +1 -1
  483. package/dist/components/ui/Switch.js +5 -39
  484. package/dist/components/ui/Switch.js.map +1 -1
  485. package/dist/components/ui/buttonShadcn.cjs +13 -81
  486. package/dist/components/ui/buttonShadcn.cjs.map +1 -1
  487. package/dist/components/ui/buttonShadcn.js +4 -49
  488. package/dist/components/ui/buttonShadcn.js.map +1 -1
  489. package/dist/components/ui/calendar.cjs +9 -135
  490. package/dist/components/ui/calendar.cjs.map +1 -1
  491. package/dist/components/ui/calendar.js +5 -106
  492. package/dist/components/ui/calendar.js.map +1 -1
  493. package/dist/contexts/WindowHistoryProvider.cjs +13 -43
  494. package/dist/contexts/WindowHistoryProvider.cjs.map +1 -1
  495. package/dist/contexts/WindowHistoryProvider.js +3 -21
  496. package/dist/contexts/WindowHistoryProvider.js.map +1 -1
  497. package/dist/hooks/useDisplayText.cjs +10 -496
  498. package/dist/hooks/useDisplayText.cjs.map +1 -1
  499. package/dist/hooks/useDisplayText.js +6 -476
  500. package/dist/hooks/useDisplayText.js.map +1 -1
  501. package/dist/hooks/useWindowHistory.cjs +9 -37
  502. package/dist/hooks/useWindowHistory.cjs.map +1 -1
  503. package/dist/hooks/useWindowHistory.js +4 -16
  504. package/dist/hooks/useWindowHistory.js.map +1 -1
  505. package/dist/index.cjs +216 -4128
  506. package/dist/index.cjs.map +1 -1
  507. package/dist/index.js +73 -4107
  508. package/dist/index.js.map +1 -1
  509. package/dist/lib/google.cjs +21 -81
  510. package/dist/lib/google.cjs.map +1 -1
  511. package/dist/lib/google.js +3 -57
  512. package/dist/lib/google.js.map +1 -1
  513. package/dist/lib/icons.cjs +10 -50
  514. package/dist/lib/icons.cjs.map +1 -1
  515. package/dist/lib/icons.js +3 -48
  516. package/dist/lib/icons.js.map +1 -1
  517. package/dist/lib/locations.cjs +17 -66
  518. package/dist/lib/locations.cjs.map +1 -1
  519. package/dist/lib/locations.js +3 -42
  520. package/dist/lib/locations.js.map +1 -1
  521. package/dist/lib/mappings.cjs +45 -439
  522. package/dist/lib/mappings.cjs.map +1 -1
  523. package/dist/lib/mappings.js +3 -408
  524. package/dist/lib/mappings.js.map +1 -1
  525. package/dist/lib/salaryRange.cjs +14 -453
  526. package/dist/lib/salaryRange.cjs.map +1 -1
  527. package/dist/lib/salaryRange.js +10 -437
  528. package/dist/lib/salaryRange.js.map +1 -1
  529. package/dist/lib/utils.cjs +10 -32
  530. package/dist/lib/utils.cjs.map +1 -1
  531. package/dist/lib/utils.js +3 -9
  532. package/dist/lib/utils.js.map +1 -1
  533. package/dist/services/displayText.cjs +9 -464
  534. package/dist/services/displayText.cjs.map +1 -1
  535. package/dist/services/displayText.js +5 -442
  536. package/dist/services/displayText.js.map +1 -1
  537. package/dist/types/data/company_service_latest.cjs +73 -246
  538. package/dist/types/data/company_service_latest.cjs.map +1 -1
  539. package/dist/types/data/company_service_latest.js +4 -209
  540. package/dist/types/data/company_service_latest.js.map +1 -1
  541. package/dist/types/data/job_posting_service_latest.cjs +42 -276
  542. package/dist/types/data/job_posting_service_latest.cjs.map +1 -1
  543. package/dist/types/data/job_posting_service_latest.js +5 -256
  544. package/dist/types/data/job_posting_service_latest.js.map +1 -1
  545. package/dist/types/data/shared_pickle_output_latest.cjs +39 -99
  546. package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -1
  547. package/dist/types/data/shared_pickle_output_latest.js +3 -74
  548. package/dist/types/data/shared_pickle_output_latest.js.map +1 -1
  549. package/dist/types/displayText.errors.cjs +13 -40
  550. package/dist/types/displayText.errors.cjs.map +1 -1
  551. package/dist/types/displayText.errors.js +3 -17
  552. package/dist/types/displayText.errors.js.map +1 -1
  553. package/dist/types/index.cjs +28 -494
  554. package/dist/types/index.cjs.map +1 -1
  555. package/dist/types/index.js +9 -478
  556. package/dist/types/index.js.map +1 -1
  557. package/dist/types/latest/company_service_latest.cjs +73 -246
  558. package/dist/types/latest/company_service_latest.cjs.map +1 -1
  559. package/dist/types/latest/company_service_latest.js +4 -209
  560. package/dist/types/latest/company_service_latest.js.map +1 -1
  561. package/dist/types/latest/custom/company_service_sanity.cjs +46 -307
  562. package/dist/types/latest/custom/company_service_sanity.cjs.map +1 -1
  563. package/dist/types/latest/custom/company_service_sanity.js +6 -287
  564. package/dist/types/latest/custom/company_service_sanity.js.map +1 -1
  565. package/dist/types/latest/custom/custom_sanity_models.cjs +13 -39
  566. package/dist/types/latest/custom/custom_sanity_models.cjs.map +1 -1
  567. package/dist/types/latest/custom/custom_sanity_models.js +3 -16
  568. package/dist/types/latest/custom/custom_sanity_models.js.map +1 -1
  569. package/dist/types/latest/custom/job_posting_service_sanity.cjs +66 -353
  570. package/dist/types/latest/custom/job_posting_service_sanity.cjs.map +1 -1
  571. package/dist/types/latest/custom/job_posting_service_sanity.js +7 -330
  572. package/dist/types/latest/custom/job_posting_service_sanity.js.map +1 -1
  573. package/dist/types/latest/job_posting_service_latest.cjs +42 -276
  574. package/dist/types/latest/job_posting_service_latest.cjs.map +1 -1
  575. package/dist/types/latest/job_posting_service_latest.js +5 -256
  576. package/dist/types/latest/job_posting_service_latest.js.map +1 -1
  577. package/dist/types/latest/shared_pickle_output_latest.cjs +39 -99
  578. package/dist/types/latest/shared_pickle_output_latest.cjs.map +1 -1
  579. package/dist/types/latest/shared_pickle_output_latest.js +3 -74
  580. package/dist/types/latest/shared_pickle_output_latest.js.map +1 -1
  581. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,4108 +1,74 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
- // src/components/ui/Chip.tsx
8
- import { cva } from "cva";
9
- import React2 from "react";
10
- import { twMerge } from "tailwind-merge";
11
- var Chip = ({ className, variant, size, ...props }) => /* @__PURE__ */ React2.createElement("div", { className: twMerge(chipVariants({ variant, size, className })), ...props });
12
- var chipVariants = cva(["flex", "items-center", "rounded-3xl", "border", "w-fit"], {
13
- variants: {
14
- variant: {
15
- neutral: ["text-grey-80", "border-grey-10"],
16
- primary: ["text-purple-100", "border-purple-20"],
17
- danger: ["text-pumpkin-100", "border-pumpkin-20"],
18
- jobLocation: ["text-grey-80", "border-grey-10", "bg-grey-5"],
19
- onboarding: ["text-green-100", "bg-green-10", "cursor-pointer"],
20
- onboardingSelected: ["text-white", "bg-green-90", "cursor-pointer"]
21
- },
22
- size: {
23
- small: ["text-sm", "leading-5", "px-2", "py-1", "gap-1.5"],
24
- medium: ["text-base", "leading-6", "px-3", "py-2", "gap-2"]
25
- }
26
- },
27
- defaultVariants: {
28
- variant: "neutral",
29
- size: "medium"
30
- }
31
- });
32
- var Chip_default = Chip;
33
-
34
- // src/components/ui/Input.tsx
35
- import { cva as cva2 } from "cva";
36
- import { icons, X } from "lucide-react";
37
- import { forwardRef as forwardRef2 } from "react";
38
-
39
- // src/lib/utils.ts
40
- import { clsx } from "clsx";
41
- import { twMerge as twMerge2 } from "tailwind-merge";
42
- function cn(...inputs) {
43
- return twMerge2(clsx(inputs));
44
- }
45
-
46
- // src/components/ui/ErrorMessage.tsx
47
- function ErrorMessage({ message, className, ...props }) {
48
- if (!message) return null;
49
- return /* @__PURE__ */ React.createElement("p", { className: cn("px-1 text-xs text-red-600", className), ...props }, message);
50
- }
51
- var ErrorMessage_default = ErrorMessage;
52
-
53
- // src/components/ui/Label.tsx
54
- import { InfoIcon } from "lucide-react";
55
-
56
- // src/components/primitives/tooltip.tsx
57
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
58
- import * as React3 from "react";
59
- var TooltipProvider = TooltipPrimitive.Provider;
60
- var Tooltip = TooltipPrimitive.Root;
61
- var TooltipTrigger = TooltipPrimitive.Trigger;
62
- var TooltipContent = React3.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React3.createElement(
63
- TooltipPrimitive.Content,
64
- {
65
- ref,
66
- sideOffset,
67
- className: cn(
68
- "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",
69
- className
70
- ),
71
- ...props
72
- }
73
- ));
74
- TooltipContent.displayName = TooltipPrimitive.Content.displayName;
75
-
76
- // src/components/ui/Label.tsx
77
- function Label({ text, required, description, className, ...props }) {
78
- if (!text) return null;
79
- return /* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-row gap-1" }, /* @__PURE__ */ React.createElement(
80
- "label",
81
- {
82
- className: cn(
83
- "text-xs text-grey-80 peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
84
- className
85
- ),
86
- ...props
87
- },
88
- text,
89
- required && /* @__PURE__ */ React.createElement("span", { className: "text-red-600" }, "\xA0*")
90
- ), !!description && /* @__PURE__ */ React.createElement(TooltipProvider, null, /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(InfoIcon, { className: "h-4 w-4" })), /* @__PURE__ */ React.createElement(TooltipContent, { className: "max-w-48" }, description))));
91
- }
92
- var Label_default = Label;
93
-
94
- // src/components/ui/Input.tsx
95
- var Input = forwardRef2(
96
- ({ label, error, description, theme, icon, onClear, value, onChange, classNames, ...props }, ref) => {
97
- const handleClear = () => {
98
- onChange?.({ target: { value: "" } });
99
- onClear?.();
100
- };
101
- const IconComponent = icon && icons[icon];
102
- const placeholder = props.placeholder ?? (icon === "Search" ? "Search..." : "");
103
- const hasIcon = !!icon;
104
- const iconColor = theme === "dark" ? "text-white" : "text-grey-80";
105
- return /* @__PURE__ */ React.createElement("div", { className: "group flex w-full flex-col gap-1", "data-testid": `input-wrapper-${props.id}` }, label && /* @__PURE__ */ React.createElement(
106
- Label_default,
107
- {
108
- text: label,
109
- htmlFor: props.name,
110
- required: props.required,
111
- description,
112
- className: classNames?.label
113
- }
114
- ), /* @__PURE__ */ React.createElement("div", { className: "relative flex flex-row items-center" }, IconComponent && /* @__PURE__ */ React.createElement(
115
- IconComponent,
116
- {
117
- className: `absolute left-3 h-4 w-4 ${iconColor} opacity-50 group-hover:opacity-100`
118
- }
119
- ), /* @__PURE__ */ React.createElement(
120
- "input",
121
- {
122
- className: cn(inputVariants({ theme, hasIcon })),
123
- ref,
124
- placeholder,
125
- value,
126
- onChange,
127
- "data-testid": `input-element-${props.id}`,
128
- ...props
129
- }
130
- ), hasIcon && value && /* @__PURE__ */ React.createElement(
131
- X,
132
- {
133
- className: `absolute right-3 h-4 w-4 cursor-pointer ${iconColor}`,
134
- onClick: handleClear,
135
- "data-testid": "clear-button"
136
- }
137
- )), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
138
- }
139
- );
140
- Input.displayName = "Input";
141
- var inputVariants = cva2(
142
- [
143
- "border-input",
144
- "placeholder:text-muted-foreground",
145
- "focus-visible:ring-ring",
146
- "inline-flex",
147
- "w-full",
148
- "h-11",
149
- "items-center",
150
- "justify-start",
151
- "gap-3",
152
- "rounded-lg",
153
- "bg-transparent",
154
- "px-3",
155
- "pt-0.5",
156
- "text-sm",
157
- "shadow-sm",
158
- "ring-grey-50",
159
- "transition-colors",
160
- "focus-visible:outline-none",
161
- "focus-visible:ring-1",
162
- "disabled:cursor-not-allowed",
163
- "disabled:opacity-50",
164
- "appearance-none",
165
- "[&::-webkit-search-cancel-button]:appearance-none",
166
- "[&::-webkit-search-decoration]:appearance-none",
167
- "[&::-webkit-search-results-button]:appearance-none",
168
- "[&::-webkit-search-results-decoration]:appearance-none",
169
- "[&::-ms-clear]:display-none",
170
- "[&::-ms-reveal]:display-none"
171
- ],
172
- {
173
- variants: {
174
- theme: {
175
- light: "text-grey-80 border",
176
- dark: "text-white"
177
- },
178
- hasIcon: {
179
- false: "pl-3",
180
- true: "pl-8"
181
- }
182
- },
183
- defaultVariants: {
184
- theme: "light",
185
- hasIcon: false
186
- }
187
- }
188
- );
189
- var Input_default = Input;
190
-
191
- // src/components/ui/ListItem.tsx
192
- import { CheckIcon } from "lucide-react";
193
- import { icons as icons2 } from "lucide-react";
194
-
195
- // src/components/ui/Checkbox.tsx
196
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
197
- import { Check, Minus } from "lucide-react";
198
- import {
199
- forwardRef as forwardRef3
200
- } from "react";
201
- var CheckboxToggle = forwardRef3(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(
202
- CheckboxPrimitive.Root,
203
- {
204
- ref,
205
- className: cn(
206
- "group",
207
- "peer",
208
- "h-5",
209
- "w-5",
210
- "shrink-0",
211
- "rounded-md",
212
- "border",
213
- "border-grey-10",
214
- "outline",
215
- "outline-1",
216
- "outline-offset-2",
217
- "outline-transparent",
218
- "hover:border-grey-20",
219
- "focus:outline-purple-100",
220
- "active:border-green-80",
221
- "disabled:cursor-not-allowed",
222
- "disabled:opacity-50",
223
- "data-[state=checked]:bg-green-80",
224
- "data-[state=indeterminate]:bg-green-80",
225
- "data-[state=checked]:text-white",
226
- "data-[state=indeterminate]:text-primary-foreground",
227
- props.disabled && "bg-grey-20 data-[state=checked]:bg-grey-20 data-[state=checked]:text-foreground",
228
- className
229
- ),
230
- ...props
231
- },
232
- /* @__PURE__ */ React.createElement(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current" }, /* @__PURE__ */ React.createElement(Check, { className: "hidden h-4 w-4 group-data-[state=checked]:block" }), /* @__PURE__ */ React.createElement(Minus, { className: "hidden h-4 w-4 group-data-[state=indeterminate]:block" }))
233
- ));
234
- CheckboxToggle.displayName = CheckboxPrimitive.Root.displayName;
235
- var Checkbox = forwardRef3(
236
- ({ error, classNames, children, ...props }, ref) => {
237
- const id = props.id ?? `${props.name ?? props.value?.toString()}-checkbox`;
238
- return /* @__PURE__ */ React.createElement("div", { className: cn("flex space-x-2", classNames?.wrapper) }, /* @__PURE__ */ React.createElement(CheckboxToggle, { id, ref, ...props }), /* @__PURE__ */ React.createElement(
239
- "label",
240
- {
241
- htmlFor: id,
242
- className: cn(
243
- "text-sm",
244
- props.disabled && "pointer-events-none text-grey-40",
245
- classNames?.label
246
- )
247
- },
248
- children,
249
- /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error, className: "mt-1" })
250
- ));
251
- }
252
- );
253
- Checkbox.displayName = "Checkbox";
254
-
255
- // src/components/ui/ListItem.tsx
256
- function ListItem({
257
- icon,
258
- hasCheckbox,
259
- isSelected,
260
- className,
261
- title,
262
- value,
263
- description,
264
- ...props
265
- }) {
266
- const getIconIfValid = (icon2) => {
267
- if (icon2 in icons2) {
268
- const IconComponent = icons2[icon2];
269
- return /* @__PURE__ */ React.createElement(IconComponent, { size: 14 });
270
- }
271
- return null;
272
- };
273
- const optionIcon = icon ? getIconIfValid(icon) : void 0;
274
- return /* @__PURE__ */ React.createElement(
275
- "li",
276
- {
277
- className: cn(
278
- "group relative flex w-72 cursor-pointer flex-row items-center text-left text-sm",
279
- className
280
- ),
281
- ...props,
282
- "data-state": isSelected ? "checked" : "unchecked"
283
- },
284
- optionIcon && /* @__PURE__ */ React.createElement("span", { className: "mr-2" }, optionIcon),
285
- hasCheckbox && /* @__PURE__ */ React.createElement(Checkbox, { id: value, checked: isSelected, onClick: (e) => e.preventDefault() }),
286
- /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("p", null, title), /* @__PURE__ */ React.createElement("p", { className: "text-xs text-grey-80" }, description)),
287
- /* @__PURE__ */ React.createElement(
288
- CheckIcon,
289
- {
290
- className: "absolute inset-y-0 right-0 my-auto hidden w-6 text-green-100 group-data-[state=checked]:block",
291
- size: 16
292
- }
293
- )
294
- );
295
- }
296
- var ListItem_default = ListItem;
297
-
298
- // src/components/ui/Map/MapComponent.tsx
299
- import { APIProvider } from "@vis.gl/react-google-maps";
300
-
301
- // src/components/ui/Map/constants.ts
302
- var DEFAULT_POSITION = { lat: 40.715021, lng: -74.00459 };
303
- var DEFAULT_ZOOM = 10;
304
- var CLUSTER_DISTANCE_THRESHOLD = 1e-3;
305
- var PIN_COLORS = {
306
- background: "#0B5441",
307
- borderColor: "#EBFDF1",
308
- glyphColor: "#D4F500"
309
- };
310
- var FOCUS_CIRCLE_STYLES = {
311
- strokeColor: "#0B5441",
312
- strokeOpacity: 0.8,
313
- strokeWeight: 2,
314
- fillColor: "#0B5441",
315
- fillOpacity: 0.1,
316
- clickable: false,
317
- zIndex: 1
318
- };
319
- var CLUSTERING_CONFIG = {
320
- radius: 60,
321
- maxZoom: 16,
322
- minPoints: 2
323
- };
324
-
325
- // src/components/ui/Map/hooks.ts
326
- import { useMemo, useState } from "react";
327
- import useSupercluster from "use-supercluster";
328
-
329
- // src/components/ui/Map/utils.ts
330
- function getCenterForCoordinates(coords) {
331
- if (coords.length === 0) return DEFAULT_POSITION;
332
- const avgLat = coords.reduce((sum, coord) => sum + coord.lat, 0) / coords.length;
333
- const avgLng = coords.reduce((sum, coord) => sum + coord.lng, 0) / coords.length;
334
- return { lat: avgLat, lng: avgLng };
335
- }
336
- function getZoomForCoordinates(coords, defaultZoom) {
337
- if (coords.length <= 1) return defaultZoom;
338
- const lats = coords.map((coord) => coord.lat);
339
- const lngs = coords.map((coord) => coord.lng);
340
- const latDiff = Math.max(...lats) - Math.min(...lats);
341
- const lngDiff = Math.max(...lngs) - Math.min(...lngs);
342
- const maxDiff = Math.max(latDiff, lngDiff);
343
- if (maxDiff > 0.1) return 8;
344
- if (maxDiff > 0.05) return 10;
345
- if (maxDiff > 0.01) return 12;
346
- return 14;
347
- }
348
- function filterClusterCoordinates(coordinates, clusterLat, clusterLng) {
349
- return coordinates.filter((coord) => {
350
- const latDiff = Math.abs(coord.lat - clusterLat);
351
- const lngDiff = Math.abs(coord.lng - clusterLng);
352
- const distance = Math.sqrt(latDiff * latDiff + lngDiff * lngDiff);
353
- return distance < CLUSTER_DISTANCE_THRESHOLD;
354
- });
355
- }
356
-
357
- // src/components/ui/Map/clustering.ts
358
- function convertCoordinatesToGeoJSON(coordinates) {
359
- return coordinates.map((coord, index) => ({
360
- type: "Feature",
361
- properties: {
362
- cluster: false,
363
- pointId: index,
364
- data: coord.data
365
- },
366
- geometry: {
367
- type: "Point",
368
- coordinates: [coord.lng, coord.lat]
369
- }
370
- }));
371
- }
372
-
373
- // src/components/ui/Map/hooks.ts
374
- function useMapBounds(_coordinates) {
375
- const [bounds, setBounds] = useState([
376
- [-180, -85],
377
- [180, 85]
378
- ]);
379
- return { bounds, setBounds };
380
- }
381
- function useZoomLevel(initialZoom) {
382
- const [zoomLevel, setZoomLevel] = useState(initialZoom);
383
- return { zoomLevel, setZoomLevel };
384
- }
385
- function useClusters(coordinates, bounds, zoomLevel) {
386
- const points = useMemo(() => {
387
- if (!coordinates) return [];
388
- return convertCoordinatesToGeoJSON(coordinates);
389
- }, [coordinates]);
390
- const { clusters, supercluster } = useSupercluster({
391
- points,
392
- bounds: [-180, -85, 180, 85],
393
- // Use global bounds for consistency
394
- zoom: zoomLevel || 10,
395
- options: CLUSTERING_CONFIG
396
- });
397
- return { clusters, supercluster };
398
- }
399
-
400
- // src/components/ui/Map/MapContent.tsx
401
- import { AdvancedMarker as AdvancedMarker3, Map, Pin as Pin2, useMap, useMapsLibrary } from "@vis.gl/react-google-maps";
402
- import { useCallback } from "react";
403
-
404
- // src/components/ui/Map/ClusterMarker.tsx
405
- import { AdvancedMarker } from "@vis.gl/react-google-maps";
406
- function ClusterMarker({
407
- cluster,
408
- coordinates,
409
- onPinClick,
410
- onPinHover,
411
- zoomToLevel,
412
- supercluster
413
- }) {
414
- const [lng, lat] = cluster.geometry.coordinates;
415
- const { point_count: pointCount } = cluster.properties;
416
- const handleClick = () => {
417
- const clusterCoordinates = filterClusterCoordinates(coordinates, lat, lng);
418
- onPinClick?.(clusterCoordinates);
419
- const expansionZoom = supercluster.getClusterExpansionZoom(cluster.id);
420
- zoomToLevel(expansionZoom);
421
- };
422
- const handleMouseEnter = () => {
423
- const clusterCoordinates = filterClusterCoordinates(coordinates, lat, lng);
424
- onPinHover?.(clusterCoordinates);
425
- };
426
- const handleMouseLeave = () => onPinHover?.(null);
427
- return /* @__PURE__ */ React.createElement(
428
- AdvancedMarker,
429
- {
430
- key: `cluster-${cluster.id}`,
431
- position: { lat, lng },
432
- onClick: handleClick,
433
- onMouseEnter: handleMouseEnter,
434
- onMouseLeave: handleMouseLeave
435
- },
436
- /* @__PURE__ */ React.createElement("div", { className: "relative flex items-center justify-center", id: "CLUSTER_MARKER" }, /* @__PURE__ */ React.createElement("div", { className: "flex h-8 w-8 items-center justify-center rounded-full border-2 border-white bg-red-500 text-sm font-bold text-white shadow-lg" }, pointCount || "?"))
437
- );
438
- }
439
-
440
- // src/components/ui/Map/FocusCircle.tsx
441
- import { useEffect, useMemo as useMemo2, useRef } from "react";
442
- function FocusCircle({
443
- focusPoint,
444
- radiusMiles,
445
- map,
446
- mapsLibrary
447
- }) {
448
- const circleRef = useRef(null);
449
- const circleProps = useMemo2(() => {
450
- if (!focusPoint || !radiusMiles) return null;
451
- return {
452
- center: focusPoint,
453
- radius: radiusMiles * 1609.34
454
- };
455
- }, [focusPoint, radiusMiles]);
456
- useEffect(() => {
457
- if (!map || !mapsLibrary || !circleProps) {
458
- return;
459
- }
460
- if (!circleRef.current) {
461
- const circle = new google.maps.Circle({
462
- center: circleProps.center,
463
- radius: circleProps.radius,
464
- ...FOCUS_CIRCLE_STYLES,
465
- map
466
- });
467
- circleRef.current = circle;
468
- } else {
469
- circleRef.current.setCenter(circleProps.center);
470
- circleRef.current.setRadius(circleProps.radius);
471
- }
472
- }, [map, mapsLibrary, circleProps]);
473
- useEffect(() => {
474
- return () => {
475
- if (circleRef.current) {
476
- circleRef.current.setMap(null);
477
- circleRef.current = null;
478
- }
479
- };
480
- }, []);
481
- return null;
482
- }
483
-
484
- // src/components/ui/Map/IndividualMarker.tsx
485
- import { AdvancedMarker as AdvancedMarker2, Pin } from "@vis.gl/react-google-maps";
486
- function IndividualMarker({
487
- coordinate,
488
- onPinClick,
489
- onPinHover
490
- }) {
491
- const handleMouseEnter = () => onPinHover?.(coordinate);
492
- const handleMouseLeave = () => onPinHover?.(null);
493
- const handleClick = () => onPinClick?.(coordinate);
494
- return /* @__PURE__ */ React.createElement(
495
- AdvancedMarker2,
496
- {
497
- position: { lat: coordinate.lat, lng: coordinate.lng },
498
- onMouseEnter: handleMouseEnter,
499
- onMouseLeave: handleMouseLeave,
500
- onClick: handleClick
501
- },
502
- /* @__PURE__ */ React.createElement(Pin, { ...PIN_COLORS })
503
- );
504
- }
505
-
506
- // src/components/ui/Map/MapContent.tsx
507
- function MapContent({
508
- mapId,
509
- mapCenter,
510
- mapZoom,
511
- position,
512
- coordinates,
513
- clusters,
514
- supercluster,
515
- onPinHover,
516
- onPinClick,
517
- focusPoint,
518
- radiusMiles,
519
- className,
520
- setBounds,
521
- setZoomLevel
522
- }) {
523
- const map = useMap();
524
- const mapsLibrary = useMapsLibrary("maps");
525
- const zoomToLevel = useCallback(
526
- (newZoom) => {
527
- if (map) {
528
- map.setZoom(newZoom);
529
- }
530
- },
531
- [map]
532
- );
533
- const handleBoundsChanged = (e) => {
534
- if (e.detail.bounds) {
535
- const bounds = e.detail.bounds;
536
- setBounds([
537
- [bounds.south, bounds.west],
538
- [bounds.north, bounds.east]
539
- ]);
540
- }
541
- };
542
- const handleZoomChanged = (e) => {
543
- if (e.detail.zoom) {
544
- setZoomLevel(e.detail.zoom);
545
- }
546
- };
547
- const handleCameraChanged = (e) => {
548
- if (e.detail.zoom) {
549
- setZoomLevel(e.detail.zoom);
550
- }
551
- };
552
- return /* @__PURE__ */ React.createElement("div", { className: cn("relative h-screen max-w-full", className) }, /* @__PURE__ */ React.createElement(
553
- Map,
554
- {
555
- defaultZoom: mapZoom,
556
- defaultCenter: mapCenter,
557
- mapId,
558
- keyboardShortcuts: true,
559
- disableDefaultUI: true,
560
- zoomControl: true,
561
- onBoundsChanged: handleBoundsChanged,
562
- onZoomChanged: handleZoomChanged,
563
- onCameraChanged: handleCameraChanged
564
- },
565
- position && !coordinates && /* @__PURE__ */ React.createElement(AdvancedMarker3, { position }, /* @__PURE__ */ React.createElement(Pin2, { ...PIN_COLORS })),
566
- coordinates && clusters.map((cluster) => {
567
- const { cluster: isCluster } = cluster.properties;
568
- if (isCluster) {
569
- return /* @__PURE__ */ React.createElement(
570
- ClusterMarker,
571
- {
572
- key: `cluster-${cluster.id}`,
573
- cluster,
574
- coordinates,
575
- onPinClick,
576
- onPinHover,
577
- zoomToLevel,
578
- supercluster
579
- }
580
- );
581
- }
582
- const originalPoint = coordinates[cluster.properties.pointId];
583
- return /* @__PURE__ */ React.createElement(
584
- IndividualMarker,
585
- {
586
- key: `marker-${cluster.properties.pointId}`,
587
- coordinate: originalPoint,
588
- onPinClick,
589
- onPinHover
590
- }
591
- );
592
- }),
593
- coordinates && clusters.length === 0 && coordinates.map((coord, index) => /* @__PURE__ */ React.createElement(
594
- IndividualMarker,
595
- {
596
- key: `fallback-${index}`,
597
- coordinate: coord,
598
- onPinClick,
599
- onPinHover
600
- }
601
- )),
602
- focusPoint && radiusMiles && /* @__PURE__ */ React.createElement(
603
- FocusCircle,
604
- {
605
- focusPoint,
606
- radiusMiles,
607
- map,
608
- mapsLibrary
609
- }
610
- )
611
- ));
612
- }
613
-
614
- // src/components/ui/Map/MapComponent.tsx
615
- function MapComponent({
616
- apiKey,
617
- mapId,
618
- position,
619
- coordinates,
620
- onPinHover,
621
- onPinClick,
622
- focusPoint,
623
- radiusMiles,
624
- className,
625
- zoom = 10
626
- }) {
627
- const { bounds, setBounds } = useMapBounds(coordinates);
628
- const { zoomLevel, setZoomLevel } = useZoomLevel(zoom || DEFAULT_ZOOM);
629
- const { clusters, supercluster } = useClusters(coordinates, bounds, zoomLevel);
630
- const mapCenter = coordinates && coordinates.length > 0 ? getCenterForCoordinates(coordinates) : position || DEFAULT_POSITION;
631
- const mapZoom = coordinates && coordinates.length > 1 ? getZoomForCoordinates(coordinates, zoom) : position ? zoom : DEFAULT_ZOOM;
632
- return /* @__PURE__ */ React.createElement(APIProvider, { apiKey }, /* @__PURE__ */ React.createElement(
633
- MapContent,
634
- {
635
- mapId,
636
- mapCenter,
637
- mapZoom,
638
- position,
639
- coordinates,
640
- clusters,
641
- supercluster,
642
- onPinHover,
643
- onPinClick,
644
- focusPoint,
645
- radiusMiles,
646
- className,
647
- setBounds,
648
- setZoomLevel
649
- }
650
- ));
651
- }
652
-
653
- // src/components/ui/PlacesQueryInput.tsx
654
- import { CircleX, LoaderCircle } from "lucide-react";
655
- import { useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
656
-
657
- // src/components/primitives/command.tsx
658
- import { Command as CommandPrimitive } from "cmdk";
659
- import { Search } from "lucide-react";
660
- import * as React5 from "react";
661
-
662
- // src/components/primitives/dialog.tsx
663
- import * as DialogPrimitive from "@radix-ui/react-dialog";
664
- import { X as X2 } from "lucide-react";
665
- import * as React4 from "react";
666
- var DialogPortal = DialogPrimitive.Portal;
667
- var DialogOverlay = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
668
- DialogPrimitive.Overlay,
669
- {
670
- ref,
671
- className: cn(
672
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
673
- className
674
- ),
675
- ...props
676
- }
677
- ));
678
- DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
679
- var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ React4.createElement(DialogPortal, null, /* @__PURE__ */ React4.createElement(DialogOverlay, null), /* @__PURE__ */ React4.createElement(
680
- DialogPrimitive.Content,
681
- {
682
- ref,
683
- className: cn(
684
- "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",
685
- className
686
- ),
687
- ...props
688
- },
689
- children,
690
- /* @__PURE__ */ React4.createElement(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" }, /* @__PURE__ */ React4.createElement(X2, { className: "h-4 w-4" }), /* @__PURE__ */ React4.createElement("span", { className: "sr-only" }, "Close"))
691
- )));
692
- DialogContent.displayName = DialogPrimitive.Content.displayName;
693
- var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ React4.createElement("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props });
694
- DialogHeader.displayName = "DialogHeader";
695
- var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ React4.createElement(
696
- "div",
697
- {
698
- className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className),
699
- ...props
700
- }
701
- );
702
- DialogFooter.displayName = "DialogFooter";
703
- var DialogTitle = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
704
- DialogPrimitive.Title,
705
- {
706
- ref,
707
- className: cn("text-lg font-semibold leading-none tracking-tight", className),
708
- ...props
709
- }
710
- ));
711
- DialogTitle.displayName = DialogPrimitive.Title.displayName;
712
- var DialogDescription = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React4.createElement(
713
- DialogPrimitive.Description,
714
- {
715
- ref,
716
- className: cn("text-sm text-neutral-500 dark:text-neutral-400", className),
717
- ...props
718
- }
719
- ));
720
- DialogDescription.displayName = DialogPrimitive.Description.displayName;
721
-
722
- // src/components/primitives/command.tsx
723
- var Command = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
724
- CommandPrimitive,
725
- {
726
- ref,
727
- className: cn(
728
- "flex h-full w-full flex-col overflow-hidden rounded-xl bg-white text-neutral-950",
729
- className
730
- ),
731
- ...props
732
- }
733
- ));
734
- Command.displayName = CommandPrimitive.displayName;
735
- var CommandInput = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement("div", { className: "m-1 flex items-center rounded-xl border px-3", "cmdk-input-wrapper": "" }, /* @__PURE__ */ React5.createElement(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ React5.createElement(
736
- CommandPrimitive.Input,
737
- {
738
- ref,
739
- className: cn(
740
- "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-neutral-500 disabled:cursor-not-allowed disabled:opacity-50",
741
- className
742
- ),
743
- ...props
744
- }
745
- )));
746
- CommandInput.displayName = CommandPrimitive.Input.displayName;
747
- var CommandList = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
748
- CommandPrimitive.List,
749
- {
750
- ref,
751
- className: cn("overflow-y-auto overflow-x-hidden", className),
752
- ...props
753
- }
754
- ));
755
- CommandList.displayName = CommandPrimitive.List.displayName;
756
- var CommandEmpty = React5.forwardRef((props, ref) => /* @__PURE__ */ React5.createElement(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
757
- CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
758
- var CommandGroup = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
759
- CommandPrimitive.Group,
760
- {
761
- ref,
762
- className: cn(
763
- "overflow-hidden p-1 text-neutral-950 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500",
764
- className
765
- ),
766
- ...props
767
- }
768
- ));
769
- CommandGroup.displayName = CommandPrimitive.Group.displayName;
770
- var CommandSeparator = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
771
- CommandPrimitive.Separator,
772
- {
773
- ref,
774
- className: cn("-mx-1 h-px bg-neutral-200", className),
775
- ...props
776
- }
777
- ));
778
- CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
779
- var CommandItem = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React5.createElement(
780
- CommandPrimitive.Item,
781
- {
782
- ref,
783
- className: cn(
784
- "relative flex cursor-pointer select-none items-center rounded-xl px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-neutral-100 data-[selected=true]:text-neutral-900 data-[disabled=true]:opacity-50",
785
- className
786
- ),
787
- ...props
788
- }
789
- ));
790
- CommandItem.displayName = CommandPrimitive.Item.displayName;
791
- var CommandShortcut = ({ className, ...props }) => {
792
- return /* @__PURE__ */ React5.createElement(
793
- "span",
794
- {
795
- className: cn("ml-auto text-xs tracking-widest text-neutral-500", className),
796
- ...props
797
- }
798
- );
799
- };
800
- CommandShortcut.displayName = "CommandShortcut";
801
-
802
- // src/lib/google.ts
803
- import { Client, PlaceAutocompleteType } from "@googlemaps/google-maps-services-js";
804
- var client = new Client();
805
- var autocomplete = async (input, key) => {
806
- try {
807
- const response = await client.placeAutocomplete({
808
- params: { input, key, types: PlaceAutocompleteType.address }
809
- });
810
- return response.data.predictions;
811
- } catch (error) {
812
- console.error(error);
813
- }
814
- };
815
- var fetchLocation = async (place, key) => {
816
- try {
817
- if (place.place_id) {
818
- const placeDetails = await getPlaceDetails(place.place_id, key);
819
- if (placeDetails) return placeDetails;
820
- }
821
- if (place.address) {
822
- const result = await geocode(place.address, key);
823
- const firstAddress = result?.[0];
824
- return firstAddress;
825
- }
826
- return void 0;
827
- } catch (error) {
828
- console.error("Error fetching location:", error);
829
- }
830
- };
831
- var getPlaceDetails = async (place_id, key) => {
832
- try {
833
- const response = await client.placeDetails({
834
- params: { place_id, key }
835
- });
836
- return response.data.result;
837
- } catch (error) {
838
- console.error(error);
839
- }
840
- };
841
- var geocode = async (address, key) => {
842
- try {
843
- const response = await client.geocode({
844
- params: { address, key }
845
- });
846
- return response.data.results;
847
- } catch (error) {
848
- console.error(error);
849
- }
850
- };
851
-
852
- // src/components/ui/PlacesQueryInput.tsx
853
- function PlacesQueryInput({
854
- apiKey,
855
- selected,
856
- onSelect,
857
- className
858
- }) {
859
- const [predictions, setPredictions] = useState2(null);
860
- const [input, setInput] = useState2(selected?.description ?? "");
861
- const [isLoadingPredictions, setIsLoadingPredictions] = useState2(false);
862
- const [shouldOpenUpward, setShouldOpenUpward] = useState2(false);
863
- const timeoutRef = useRef2(null);
864
- const inputRef = useRef2(null);
865
- const debouncedAutocomplete = useCallback2((value) => {
866
- if (timeoutRef.current) {
867
- clearTimeout(timeoutRef.current);
868
- }
869
- timeoutRef.current = setTimeout(async () => {
870
- try {
871
- if (value.length > 2) {
872
- setIsLoadingPredictions(true);
873
- const fetchedPredictions = await autocomplete(value, apiKey);
874
- setIsLoadingPredictions(false);
875
- setPredictions(fetchedPredictions ?? []);
876
- } else {
877
- setPredictions(null);
878
- }
879
- } catch (error) {
880
- setIsLoadingPredictions(false);
881
- setPredictions([]);
882
- console.error("Autocomplete error:", error);
883
- }
884
- }, 300);
885
- }, []);
886
- const handleInputChange = (value) => {
887
- setInput(value);
888
- debouncedAutocomplete(value);
889
- };
890
- const handleSelect = (prediction) => {
891
- onSelect(prediction);
892
- setPredictions(null);
893
- setInput(prediction.description);
894
- };
895
- const handleClear = () => {
896
- onSelect();
897
- setPredictions(null);
898
- setInput("");
899
- };
900
- const handleBlur = () => setTimeout(() => setPredictions(null), 200);
901
- useEffect2(() => {
902
- const checkDropdownPosition = () => {
903
- if (inputRef.current) {
904
- const rect = inputRef.current.getBoundingClientRect();
905
- const windowHeight = window.innerHeight;
906
- setShouldOpenUpward(rect.bottom + 200 > windowHeight);
907
- }
908
- };
909
- checkDropdownPosition();
910
- window.addEventListener("resize", checkDropdownPosition);
911
- return () => window.removeEventListener("resize", checkDropdownPosition);
912
- }, []);
913
- return /* @__PURE__ */ React.createElement("div", { className: cn("relative w-full", className), ref: inputRef, onBlur: handleBlur }, /* @__PURE__ */ React.createElement(Command, null, /* @__PURE__ */ React.createElement("div", { className: "relative w-full" }, /* @__PURE__ */ React.createElement(
914
- CommandInput,
915
- {
916
- placeholder: "Type an address to search...",
917
- value: input,
918
- onValueChange: handleInputChange,
919
- className: "truncate pr-8"
920
- }
921
- ), isLoadingPredictions && /* @__PURE__ */ React.createElement(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" }), input && /* @__PURE__ */ React.createElement(
922
- "button",
923
- {
924
- type: "button",
925
- 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",
926
- onClick: handleClear
927
- },
928
- /* @__PURE__ */ React.createElement(CircleX, { className: "h-4 w-4 text-green-100" })
929
- )), predictions && /* @__PURE__ */ React.createElement(
930
- CommandList,
931
- {
932
- className: cn(
933
- "absolute z-50 w-full rounded-md border bg-white shadow-lg",
934
- shouldOpenUpward ? "bottom-full" : "top-full"
935
- )
936
- },
937
- /* @__PURE__ */ React.createElement(CommandEmpty, null, "No results"),
938
- /* @__PURE__ */ React.createElement(CommandGroup, null, predictions.map((prediction) => /* @__PURE__ */ React.createElement(
939
- CommandItem,
940
- {
941
- key: prediction.place_id,
942
- onSelect: () => handleSelect(prediction),
943
- className: "truncate"
944
- },
945
- prediction.description
946
- )))
947
- )));
948
- }
949
- var PlacesQueryInput_default = PlacesQueryInput;
950
-
951
- // src/components/ui/Select.tsx
952
- import * as SelectPrimitive from "@radix-ui/react-select";
953
- import { CheckIcon as CheckIcon2, ChevronDownIcon, X as X3 } from "lucide-react";
954
- import {
955
- forwardRef as forwardRef7,
956
- useEffect as useEffect3,
957
- useRef as useRef3,
958
- useState as useState3
959
- } from "react";
960
-
961
- // src/components/primitives/separator.tsx
962
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
963
- import * as React6 from "react";
964
- var Separator = React6.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ React6.createElement(
965
- SeparatorPrimitive.Root,
966
- {
967
- ref,
968
- decorative,
969
- orientation,
970
- className: cn(
971
- "shrink-0 bg-grey-10",
972
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
973
- className
974
- ),
975
- ...props
976
- }
977
- ));
978
- Separator.displayName = SeparatorPrimitive.Root.displayName;
979
-
980
- // src/components/ui/Select.tsx
981
- var Select = forwardRef7(
982
- ({
983
- label,
984
- options,
985
- placeholder,
986
- multiselect,
987
- description,
988
- classNames,
989
- dropdownAlign = "start",
990
- error,
991
- id,
992
- children: footer,
993
- ...props
994
- }, ref) => {
995
- const { value, defaultValue, dir, className, onChange, ...rest } = props;
996
- const [selected, setSelected] = useState3([]);
997
- const [open, setOpen] = useState3(false);
998
- const containerRef = useRef3(null);
999
- useEffect3(() => {
1000
- if (!value) return setSelected([]);
1001
- setSelected(Array.isArray(value) ? value : [value]);
1002
- }, [value]);
1003
- const toggleOpen = () => setOpen((prev) => !prev);
1004
- const closeOnEscape = (event) => event.key === "Escape" && setOpen(false);
1005
- const handleOnOpenChange = (isOpen) => (!multiselect || isOpen) && setOpen(isOpen);
1006
- const setValueOnEnter = (event, value2) => event.key === "Enter" && handleChange(value2);
1007
- const getLabel = () => selected.map((o) => options?.find((option) => option.value === o)?.title).join(", ");
1008
- const chipLabels = selected?.map((s) => options?.find(({ value: value2 }) => value2 === s)).filter(Boolean);
1009
- function handleChange(newValue) {
1010
- if (newValue === "" && !multiselect) return;
1011
- let newSelected = [];
1012
- setSelected((prev) => {
1013
- newSelected = prev.includes(newValue) ? prev.filter((item) => item !== newValue) : [...prev, newValue];
1014
- return multiselect ? newSelected : [newValue];
1015
- });
1016
- onChange?.(multiselect ? newSelected : newValue);
1017
- }
1018
- return /* @__PURE__ */ React.createElement(
1019
- "div",
1020
- {
1021
- className: cn("flex w-full flex-col gap-1", className),
1022
- ref: containerRef,
1023
- "data-testid": `${(label ?? id)?.toLowerCase()}-select-element`
1024
- },
1025
- /* @__PURE__ */ React.createElement(
1026
- Label_default,
1027
- {
1028
- text: label,
1029
- htmlFor: props.name,
1030
- required: props.required,
1031
- description,
1032
- className: classNames?.label
1033
- }
1034
- ),
1035
- /* @__PURE__ */ React.createElement(
1036
- SelectPrimitive.Root,
1037
- {
1038
- open,
1039
- value: selected.join(","),
1040
- onOpenChange: handleOnOpenChange,
1041
- onValueChange: multiselect ? void 0 : handleChange,
1042
- defaultValue: typeof defaultValue === "string" ? defaultValue : void 0,
1043
- dir: dir === "rtl" ? "rtl" : "ltr",
1044
- ...rest
1045
- },
1046
- /* @__PURE__ */ React.createElement(
1047
- SelectPrimitive.Trigger,
1048
- {
1049
- ref,
1050
- className: cn(
1051
- "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",
1052
- classNames?.trigger
1053
- )
1054
- },
1055
- /* @__PURE__ */ React.createElement("span", { className: "truncate" }, /* @__PURE__ */ React.createElement(
1056
- SelectPrimitive.Value,
1057
- {
1058
- placeholder: placeholder ?? "Select an option",
1059
- "aria-label": getLabel()
1060
- },
1061
- getLabel()
1062
- )),
1063
- /* @__PURE__ */ React.createElement(
1064
- ChevronDownIcon,
1065
- {
1066
- className: "transform text-black group-data-[state=open]:rotate-180",
1067
- size: "16"
1068
- }
1069
- )
1070
- ),
1071
- /* @__PURE__ */ React.createElement(SelectPrimitive.Portal, { container: containerRef.current }, /* @__PURE__ */ React.createElement(
1072
- SelectPrimitive.Content,
1073
- {
1074
- hideWhenDetached: true,
1075
- className: cn(
1076
- "z-10 max-h-[var(--radix-select-content-available-height)] overflow-hidden rounded-md bg-white py-2 shadow-lg",
1077
- "w-[var(--radix-select-trigger-width)] min-w-[var(--radix-select-trigger-width)]",
1078
- classNames?.content
1079
- ),
1080
- position: "popper",
1081
- align: dropdownAlign,
1082
- sideOffset: 4,
1083
- onPointerDownOutside: toggleOpen,
1084
- onKeyDown: closeOnEscape
1085
- },
1086
- /* @__PURE__ */ React.createElement(SelectPrimitive.Viewport, null, multiselect && !!chipLabels?.length && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
1087
- SelectPrimitive.Group,
1088
- {
1089
- className: "mb-2 flex flex-row flex-wrap gap-1 px-2",
1090
- "data-testid": "selected-labels"
1091
- },
1092
- chipLabels?.map(
1093
- (chip) => chip && /* @__PURE__ */ React.createElement(Chip_default, { key: chip.title, size: "small", variant: "primary" }, /* @__PURE__ */ React.createElement("span", null, chip.title), /* @__PURE__ */ React.createElement(
1094
- X3,
1095
- {
1096
- size: 18,
1097
- "data-testid": `chip-remove-${chip.value}`,
1098
- className: "cursor-pointer",
1099
- onClick: () => handleChange(chip.value)
1100
- }
1101
- ))
1102
- )
1103
- ), /* @__PURE__ */ React.createElement(Separator, null)), options?.map(({ id: id2, title, value: value2, description: description2 }) => /* @__PURE__ */ React.createElement(
1104
- SelectPrimitive.Item,
1105
- {
1106
- key: id2,
1107
- value: value2,
1108
- className: cn(
1109
- "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",
1110
- classNames?.item
1111
- ),
1112
- "data-state": selected.includes(value2) ? "checked" : "unchecked",
1113
- onKeyDown: (e) => setValueOnEnter(e, value2),
1114
- onClick: () => handleChange(value2)
1115
- },
1116
- /* @__PURE__ */ React.createElement(
1117
- CheckIcon2,
1118
- {
1119
- className: cn(
1120
- "absolute inset-y-0 right-3 my-auto hidden w-6 text-purple-100 group-data-[state=checked]:block",
1121
- classNames?.checkmark
1122
- ),
1123
- size: 16
1124
- }
1125
- ),
1126
- /* @__PURE__ */ React.createElement(SelectPrimitive.ItemText, null, title),
1127
- description2 && /* @__PURE__ */ React.createElement("span", { className: "block text-sm text-grey-70" }, description2)
1128
- )), !!footer && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Separator, null), /* @__PURE__ */ React.createElement(
1129
- SelectPrimitive.Group,
1130
- {
1131
- className: "mt-2 flex flex-row flex-wrap gap-1 px-2",
1132
- "data-testid": "selected-labels"
1133
- },
1134
- footer
1135
- )))
1136
- ))
1137
- ),
1138
- /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
1139
- );
1140
- }
1141
- );
1142
- Select.displayName = "Select";
1143
- var Select_default = Select;
1144
-
1145
- // src/components/ui/Avatar.tsx
1146
- import { cva as cva3 } from "cva";
1147
- import Link from "next/link";
1148
-
1149
- // src/components/primitives/avatar.tsx
1150
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
1151
- import * as React7 from "react";
1152
- var AvatarBase = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
1153
- AvatarPrimitive.Root,
1154
- {
1155
- ref,
1156
- className: cn("relative flex shrink-0 overflow-hidden rounded-full", className),
1157
- ...props
1158
- }
1159
- ));
1160
- AvatarBase.displayName = AvatarPrimitive.Root.displayName;
1161
- var AvatarImage = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
1162
- AvatarPrimitive.Image,
1163
- {
1164
- ref,
1165
- className: cn("aspect-square h-full w-full", className),
1166
- "data-testid": "job-card-avatar",
1167
- ...props
1168
- }
1169
- ));
1170
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1171
- var AvatarFallback = React7.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React7.createElement(
1172
- AvatarPrimitive.Fallback,
1173
- {
1174
- ref,
1175
- className: cn(
1176
- "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",
1177
- className
1178
- ),
1179
- ...props
1180
- }
1181
- ));
1182
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1183
-
1184
- // src/components/ui/Avatar.tsx
1185
- function Avatar({ size, src, href, name, ...linkProps }) {
1186
- const fallbackShort = name?.slice(0, 2);
1187
- const fallbackWords = name?.split(" ").map((n) => n[0]).join("").slice(0, 2);
1188
- const fallback = fallbackWords && fallbackWords.length > 1 ? fallbackWords : fallbackShort;
1189
- const renderAvatar = () => /* @__PURE__ */ React.createElement(AvatarBase, { className: avatarVariants({ size }) }, /* @__PURE__ */ React.createElement(AvatarImage, { src, alt: name }), /* @__PURE__ */ React.createElement(AvatarFallback, null, fallback?.toUpperCase()));
1190
- if (href) {
1191
- return /* @__PURE__ */ React.createElement(Link, { href, ...linkProps }, renderAvatar());
1192
- }
1193
- return renderAvatar();
1194
- }
1195
- var avatarVariants = cva3("ring ring-white ring-2", {
1196
- variants: {
1197
- size: {
1198
- large: "h-16 w-16",
1199
- medium: "h-10 w-10",
1200
- small: "h-8 w-8"
1201
- }
1202
- },
1203
- defaultVariants: {
1204
- size: "medium"
1205
- }
1206
- });
1207
-
1208
- // src/components/ui/Badge.tsx
1209
- import { cva as cva4 } from "cva";
1210
- import * as React8 from "react";
1211
- var badgeVariants = cva4("rounded-full px-2 py-0.5 text-xs font-semibold", {
1212
- variants: {
1213
- variant: {
1214
- green: "bg-green-90 text-white",
1215
- pickle: "bg-pickle-100 text-black",
1216
- purple: "bg-purple-100 text-white"
1217
- }
1218
- },
1219
- defaultVariants: {
1220
- variant: "green"
1221
- }
1222
- });
1223
- function Badge({ className, variant, ...props }) {
1224
- return /* @__PURE__ */ React8.createElement("div", { className: cn(badgeVariants({ variant }), className), ...props });
1225
- }
1226
-
1227
- // src/components/ui/Button.tsx
1228
- import { Slot } from "@radix-ui/react-slot";
1229
- import { cva as cva5 } from "cva";
1230
- import { Loader2 } from "lucide-react";
1231
- import React9, { forwardRef as forwardRef9 } from "react";
1232
- var Button = forwardRef9(
1233
- ({
1234
- className,
1235
- variant,
1236
- size,
1237
- asChild = false,
1238
- type = "button",
1239
- children,
1240
- isLoading = false,
1241
- ...props
1242
- }, ref) => {
1243
- const Component = asChild ? Slot : "button";
1244
- return /* @__PURE__ */ React9.createElement(
1245
- Component,
1246
- {
1247
- className: cn(buttonVariants({ variant, size, className, isLoading, asChild })),
1248
- type,
1249
- ref,
1250
- ...props
1251
- },
1252
- asChild ? children : /* @__PURE__ */ React9.createElement(React9.Fragment, null, children, isLoading && /* @__PURE__ */ React9.createElement("div", { className: "absolute inset-0 flex items-center justify-center bg-white/30 backdrop-blur-[0.5px]" }, /* @__PURE__ */ React9.createElement(Loader2, { className: "h-5 w-5 animate-spin text-gray-800" })))
1253
- );
1254
- }
1255
- );
1256
- Button.displayName = "Button";
1257
- var buttonVariants = cva5(
1258
- [
1259
- "relative",
1260
- "flex",
1261
- "items-center",
1262
- "justify-center",
1263
- "gap-2",
1264
- "rounded-full",
1265
- "font-bold",
1266
- "outline-2",
1267
- "outline-offset-2",
1268
- "outline-dashed",
1269
- "outline-transparent",
1270
- "overflow-hidden"
1271
- ],
1272
- {
1273
- variants: {
1274
- variant: {
1275
- neutral: [
1276
- "bg-black",
1277
- "text-white",
1278
- "hover:bg-grey-90",
1279
- "active:bg-grey-80",
1280
- "focus:outline-purple-100",
1281
- "disabled:text-grey-40",
1282
- "disabled:bg-grey-10"
1283
- ],
1284
- primary: [
1285
- "bg-pickle-100",
1286
- "text-black",
1287
- "hover:bg-pickle-80",
1288
- "active:bg-pickle-60",
1289
- "focus:outline-purple-100",
1290
- "disabled:text-grey-40",
1291
- "disabled:bg-grey-10"
1292
- ],
1293
- secondary: [
1294
- "bg-green-80",
1295
- "text-white",
1296
- "hover:bg-green-90",
1297
- "active:bg-green-100",
1298
- "focus:outline-pickle-100",
1299
- "disabled:text-grey-40",
1300
- "disabled:bg-grey-10"
1301
- ],
1302
- transparent: [
1303
- "text-white",
1304
- "hover:bg-green-80",
1305
- "active:bg-green-100",
1306
- "focus:outline-pickle-100",
1307
- "disabled:text-grey-40"
1308
- ],
1309
- link: [
1310
- "leading-tight",
1311
- "text-black",
1312
- "underline",
1313
- "hover:text-purple-100",
1314
- "focus:text-black",
1315
- "focus:outline-purple-100",
1316
- "active:text-purple-80"
1317
- ],
1318
- "outline-primary": [
1319
- "bg-transparent",
1320
- "border-2",
1321
- "border-pickle-100",
1322
- "text-pickle-100",
1323
- "hover:bg-pickle-100",
1324
- "hover:text-black",
1325
- "active:bg-pickle-80",
1326
- "active:text-black",
1327
- "focus:outline-purple-100",
1328
- "disabled:text-grey-40",
1329
- "disabled:border-grey-40",
1330
- "disabled:hover:bg-transparent",
1331
- "disabled:hover:text-grey-40"
1332
- ],
1333
- "outline-secondary": [
1334
- "bg-transparent",
1335
- "border-2",
1336
- "border-green-80",
1337
- "text-green-80",
1338
- "hover:bg-green-80",
1339
- "hover:text-white",
1340
- "active:bg-green-90",
1341
- "active:text-white",
1342
- "focus:outline-pickle-100",
1343
- "disabled:text-grey-40",
1344
- "disabled:border-grey-40",
1345
- "disabled:hover:bg-transparent",
1346
- "disabled:hover:text-grey-40"
1347
- ],
1348
- "icon-outline": [
1349
- "bg-transparent",
1350
- "text-black",
1351
- "hover:bg-grey-5",
1352
- "active:bg-grey-10",
1353
- "focus:outline-purple-100",
1354
- "disabled:text-grey-40",
1355
- "disabled:hover:bg-transparent",
1356
- "disabled:hover:text-grey-40"
1357
- ],
1358
- "icon-primary": [
1359
- "bg-pickle-100",
1360
- "text-black",
1361
- "hover:bg-pickle-80",
1362
- "active:bg-pickle-60",
1363
- "focus:outline-purple-100",
1364
- "disabled:text-grey-40",
1365
- "disabled:bg-grey-10"
1366
- ],
1367
- "icon-secondary": [
1368
- "bg-green-80",
1369
- "text-white",
1370
- "hover:bg-green-90",
1371
- "active:bg-green-100",
1372
- "focus:outline-pickle-100",
1373
- "disabled:text-grey-40",
1374
- "disabled:bg-grey-10"
1375
- ]
1376
- },
1377
- size: {
1378
- "extra-small": ["h-8", "text-xs", "px-3", "py-1"],
1379
- small: ["h-10", "text-sm", "px-4", "py-2"],
1380
- medium: ["h-12", "text-base", "px-6", "py-3"],
1381
- large: ["h-14", "text-lg", "px-8", "py-4"]
1382
- },
1383
- isLoading: {
1384
- true: ["cursor-not-allowed", "pointer-events-none"]
1385
- },
1386
- asChild: {
1387
- true: [],
1388
- false: ["cursor-pointer", "pointer-events-auto"]
1389
- }
1390
- },
1391
- defaultVariants: {
1392
- variant: "neutral",
1393
- size: "medium",
1394
- isLoading: false,
1395
- asChild: false
1396
- },
1397
- compoundVariants: [
1398
- {
1399
- variant: "link",
1400
- size: "extra-small",
1401
- class: ["h-3", "text-xs", "p-0"]
1402
- },
1403
- {
1404
- variant: "link",
1405
- size: "small",
1406
- class: ["h-3", "text-xs", "p-0"]
1407
- },
1408
- {
1409
- variant: "link",
1410
- size: "medium",
1411
- class: ["h-4", "text-sm", "p-0"]
1412
- },
1413
- {
1414
- variant: "link",
1415
- size: "large",
1416
- class: ["h-6", "text-base", "p-0"]
1417
- },
1418
- {
1419
- variant: "icon-outline",
1420
- size: "extra-small",
1421
- class: ["h-8", "w-8", "p-1.5", "[&>svg]:w-5", "[&>svg]:h-5"]
1422
- },
1423
- {
1424
- variant: "icon-outline",
1425
- size: "small",
1426
- class: ["h-10", "w-10", "p-2", "[&>svg]:w-6", "[&>svg]:h-6"]
1427
- },
1428
- {
1429
- variant: "icon-outline",
1430
- size: "medium",
1431
- class: ["h-12", "w-12", "p-2.5", "[&>svg]:w-7", "[&>svg]:h-7"]
1432
- },
1433
- {
1434
- variant: "icon-outline",
1435
- size: "large",
1436
- class: ["h-14", "w-14", "p-3", "[&>svg]:w-8", "[&>svg]:h-8"]
1437
- },
1438
- {
1439
- variant: "icon-primary",
1440
- size: "extra-small",
1441
- class: ["h-8", "w-8", "p-1.5", "[&>svg]:w-5", "[&>svg]:h-5"]
1442
- },
1443
- {
1444
- variant: "icon-primary",
1445
- size: "small",
1446
- class: ["h-10", "w-10", "p-2", "[&>svg]:w-6", "[&>svg]:h-6"]
1447
- },
1448
- {
1449
- variant: "icon-primary",
1450
- size: "medium",
1451
- class: ["h-12", "w-12", "p-2.5", "[&>svg]:w-7", "[&>svg]:h-7"]
1452
- },
1453
- {
1454
- variant: "icon-primary",
1455
- size: "large",
1456
- class: ["h-14", "w-14", "p-3", "[&>svg]:w-8", "[&>svg]:h-8"]
1457
- },
1458
- {
1459
- variant: "icon-secondary",
1460
- size: "extra-small",
1461
- class: ["h-8", "w-8", "p-1.5", "[&>svg]:w-5", "[&>svg]:h-5"]
1462
- },
1463
- {
1464
- variant: "icon-secondary",
1465
- size: "small",
1466
- class: ["h-10", "w-10", "p-2", "[&>svg]:w-6", "[&>svg]:h-6"]
1467
- },
1468
- {
1469
- variant: "icon-secondary",
1470
- size: "medium",
1471
- class: ["h-12", "w-12", "p-2.5", "[&>svg]:w-7", "[&>svg]:h-7"]
1472
- },
1473
- {
1474
- variant: "icon-secondary",
1475
- size: "large",
1476
- class: ["h-14", "w-14", "p-3", "[&>svg]:w-8", "[&>svg]:h-8"]
1477
- }
1478
- ]
1479
- }
1480
- );
1481
-
1482
- // src/components/ui/Combobox.tsx
1483
- import { cva as cva6 } from "cva";
1484
- import { ChevronDownIcon as ChevronDownIcon2, CircleX as CircleX2, icons as icons3 } from "lucide-react";
1485
- import { forwardRef as forwardRef11, useEffect as useEffect4, useRef as useRef4, useState as useState4 } from "react";
1486
-
1487
- // src/components/primitives/popover.tsx
1488
- import * as PopoverPrimitive from "@radix-ui/react-popover";
1489
- import * as React10 from "react";
1490
- var Popover = PopoverPrimitive.Root;
1491
- var PopoverTrigger = PopoverPrimitive.Trigger;
1492
- var PopoverContent = React10.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ React10.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ React10.createElement(
1493
- PopoverPrimitive.Content,
1494
- {
1495
- ref,
1496
- align,
1497
- sideOffset,
1498
- className: cn(
1499
- "z-50 rounded-2xl border bg-white p-4 text-black shadow-md outline-none 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-[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",
1500
- className
1501
- ),
1502
- ...props
1503
- }
1504
- )));
1505
- PopoverContent.displayName = PopoverPrimitive.Content.displayName;
1506
-
1507
- // src/components/ui/Combobox.tsx
1508
- var Combobox = forwardRef11((props, ref) => {
1509
- const {
1510
- id,
1511
- name,
1512
- value,
1513
- label,
1514
- options,
1515
- required,
1516
- description,
1517
- classNames,
1518
- multiselect,
1519
- placeholder,
1520
- error,
1521
- variant = "default",
1522
- size,
1523
- icon,
1524
- className,
1525
- onChange: handleChange,
1526
- children: footer
1527
- } = props;
1528
- const [selected, setSelected] = useState4([]);
1529
- const [open, setOpen] = useState4(false);
1530
- const isUserUpdate = useRef4(false);
1531
- const IconComponent = icon && icons3[icon];
1532
- const hideSearchBox = options?.length <= 5;
1533
- const isDefault = variant === "default";
1534
- const isChip = variant === "chip";
1535
- const isEmpty = selected.length === 0;
1536
- const showChevron = isDefault ? isEmpty : true;
1537
- const close = () => setOpen(false);
1538
- useEffect4(() => {
1539
- if (!isUserUpdate.current) {
1540
- const valueArray = multiselect ? value ?? [] : value ? [value] : [];
1541
- setSelected(
1542
- valueArray.map((v) => options.find((o) => o.value === v)).filter((v) => v !== void 0)
1543
- );
1544
- }
1545
- }, [value, options, multiselect]);
1546
- useEffect4(() => {
1547
- if (isUserUpdate.current) {
1548
- if (multiselect) {
1549
- handleChange?.(selected.map((o) => o.value));
1550
- } else {
1551
- handleChange?.(selected[0]?.value ?? "");
1552
- }
1553
- isUserUpdate.current = false;
1554
- }
1555
- }, [selected, multiselect, handleChange]);
1556
- const updateMultiSelect = (prev, option) => {
1557
- return prev.some((o) => o.value === option.value) ? prev.filter((v) => v !== option) : [...prev, option];
1558
- };
1559
- const handleSelect = (value2) => {
1560
- const option = options.find((o) => o.value === value2);
1561
- if (!option) return;
1562
- isUserUpdate.current = true;
1563
- if (multiselect) {
1564
- setSelected((prev) => updateMultiSelect(prev, option));
1565
- } else {
1566
- setSelected([option]);
1567
- close();
1568
- }
1569
- };
1570
- const handleClear = () => {
1571
- isUserUpdate.current = true;
1572
- setSelected([]);
1573
- };
1574
- const handleDisplayValue = () => {
1575
- const defaultLabel = !isEmpty ? selected.map((s) => s.title).join(", ") : placeholder;
1576
- return isDefault ? defaultLabel : label;
1577
- };
1578
- return /* @__PURE__ */ React.createElement("div", { className: cn("flex flex-col gap-1", className) }, isDefault && /* @__PURE__ */ React.createElement(
1579
- Label_default,
1580
- {
1581
- text: label,
1582
- htmlFor: name,
1583
- required,
1584
- description,
1585
- className: classNames?.label
1586
- }
1587
- ), /* @__PURE__ */ React.createElement("div", { className: "relative flex" }, /* @__PURE__ */ React.createElement(Popover, { open, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(
1588
- PopoverTrigger,
1589
- {
1590
- asChild: true,
1591
- disabled: options.length === 0,
1592
- "data-testid": `${id ?? name}-combobox-trigger`
1593
- },
1594
- /* @__PURE__ */ React.createElement(
1595
- "div",
1596
- {
1597
- ref,
1598
- className: cn(
1599
- triggerVariants({ variant, size }),
1600
- isDefault && !isEmpty && "pr-10",
1601
- classNames?.trigger
1602
- ),
1603
- "aria-expanded": open
1604
- },
1605
- isDefault && IconComponent && /* @__PURE__ */ React.createElement(IconComponent, { className: "h-4 w-4 shrink-0" }),
1606
- isChip && !isEmpty && /* @__PURE__ */ React.createElement(Badge, { variant: "purple" }, selected.length),
1607
- /* @__PURE__ */ React.createElement(
1608
- "span",
1609
- {
1610
- className: cn(
1611
- "w-full truncate leading-normal",
1612
- isDefault && isEmpty && "text-grey-40"
1613
- )
1614
- },
1615
- handleDisplayValue()
1616
- ),
1617
- showChevron && /* @__PURE__ */ React.createElement(
1618
- ChevronDownIcon2,
1619
- {
1620
- className: "shrink-0 transform group-data-[state=open]:rotate-180",
1621
- size: "16"
1622
- }
1623
- )
1624
- )
1625
- ), /* @__PURE__ */ React.createElement(
1626
- PopoverContent,
1627
- {
1628
- className: cn(
1629
- "flex w-full max-w-xs flex-col overflow-hidden p-0",
1630
- "max-h-[--radix-popover-content-available-height]",
1631
- classNames?.content
1632
- ),
1633
- collisionPadding: 8,
1634
- sideOffset: 4,
1635
- align: "start"
1636
- },
1637
- /* @__PURE__ */ React.createElement(Command, null, !hideSearchBox && /* @__PURE__ */ React.createElement(CommandInput, { placeholder: "Search..." }), /* @__PURE__ */ React.createElement(CommandList, null, /* @__PURE__ */ React.createElement(CommandEmpty, null, "No results"), /* @__PURE__ */ React.createElement(CommandGroup, null, options.map(({ id: id2, ...option }) => /* @__PURE__ */ React.createElement(
1638
- CommandItem,
1639
- {
1640
- key: id2,
1641
- value: option.title,
1642
- onSelect: () => handleSelect(option.value)
1643
- },
1644
- /* @__PURE__ */ React.createElement(
1645
- ListItem_default,
1646
- {
1647
- className: cn(classNames?.items, "truncate py-1"),
1648
- isSelected: selected.some((s) => s.value === option.value),
1649
- hasCheckbox: multiselect,
1650
- ...option
1651
- }
1652
- )
1653
- )))), !!footer && /* @__PURE__ */ React.createElement(Separator, null), footer && footer({ close }))
1654
- )), isDefault && !isEmpty && /* @__PURE__ */ React.createElement(
1655
- "button",
1656
- {
1657
- type: "button",
1658
- 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",
1659
- onClick: handleClear
1660
- },
1661
- /* @__PURE__ */ React.createElement(CircleX2, { className: "h-4 w-4 text-green-100" })
1662
- )), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
1663
- });
1664
- Combobox.displayName = "Combobox";
1665
- var triggerVariants = cva6(
1666
- "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",
1667
- {
1668
- variants: {
1669
- variant: {
1670
- default: ["w-full", "rounded-lg"],
1671
- chip: [
1672
- "font-bold",
1673
- "rounded-3xl",
1674
- "data-[state=open]:bg-black",
1675
- "data-[state=open]:text-white"
1676
- ]
1677
- },
1678
- size: {
1679
- small: ["h-8", "py-1", "px-2", "text-xs"],
1680
- normal: ["h-9", "py-2", "px-3", "text-sm"],
1681
- large: ["h-10", "py-3", "px-4", "text-base"]
1682
- }
1683
- },
1684
- defaultVariants: {
1685
- variant: "default",
1686
- size: "normal"
1687
- }
1688
- }
1689
- );
1690
-
1691
- // src/components/ui/Switch.tsx
1692
- import * as SwitchPrimitive from "@radix-ui/react-switch";
1693
- import { forwardRef as forwardRef12 } from "react";
1694
- var Switch = forwardRef12(
1695
- ({ label, error, className, ...props }, ref) => {
1696
- return /* @__PURE__ */ React.createElement("div", { className: cn("flex items-center", props.disabled && "opacity-50") }, /* @__PURE__ */ React.createElement(
1697
- SwitchPrimitive.Root,
1698
- {
1699
- className: cn(
1700
- "relative h-[25px] w-[42px] cursor-default rounded-full bg-grey-20 shadow-md outline-none focus:outline-purple-100 data-[state=checked]:bg-green-90",
1701
- className
1702
- ),
1703
- ref,
1704
- ...props
1705
- },
1706
- /* @__PURE__ */ React.createElement(SwitchPrimitive.Thumb, { className: "block h-[21px] w-[21px] translate-x-0.5 rounded-full bg-white shadow-[0_2px_2px] transition-transform duration-100 will-change-transform data-[state=checked]:translate-x-[19px]" })
1707
- ), label && /* @__PURE__ */ React.createElement("label", { className: "pl-4 text-sm leading-none text-inherit", htmlFor: props.name }, label, /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error, className: "mt-1" })));
1708
- }
1709
- );
1710
- Switch.displayName = "Switch";
1711
-
1712
- // src/components/ui/Radio.tsx
1713
- import { forwardRef as forwardRef14 } from "react";
1714
-
1715
- // src/components/primitives/radio-group.tsx
1716
- import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
1717
- import {
1718
- forwardRef as forwardRef13
1719
- } from "react";
1720
- var RadioGroup = forwardRef13(({ className, ...props }, ref) => /* @__PURE__ */ React.createElement(RadioGroupPrimitive.Root, { className, ...props, ref }));
1721
- RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
1722
- var RadioGroupItem = forwardRef13(({ className, children, ...props }, ref) => {
1723
- return /* @__PURE__ */ React.createElement("div", { className: "group flex flex-row items-center gap-2" }, /* @__PURE__ */ React.createElement(
1724
- RadioGroupPrimitive.Item,
1725
- {
1726
- ref,
1727
- className: cn(
1728
- "peer aspect-square h-4 rounded-full border border-grey-10 shadow outline outline-1 outline-offset-2 outline-transparent focus:outline-none focus:outline-purple-100 focus-visible:ring-1 focus-visible:ring-ring active:border-green-80 disabled:cursor-not-allowed disabled:opacity-50 group-hover:border-grey-20 data-[state=checked]:border-4 data-[disabled]:border-grey-20 data-[state=checked]:border-green-90 data-[disabled]:bg-grey-10 data-[state=checked]:group-hover:border-green-80",
1729
- className
1730
- ),
1731
- ...props
1732
- }
1733
- ), /* @__PURE__ */ React.createElement("label", { htmlFor: props.id, className: "text-sm peer-data-[disabled]:text-grey-40" }, children));
1734
- });
1735
- RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
1736
-
1737
- // src/components/ui/Radio.tsx
1738
- var Radio = forwardRef14(
1739
- ({
1740
- label,
1741
- error,
1742
- description,
1743
- options,
1744
- classNames,
1745
- onChange: handleValueChange,
1746
- orientation,
1747
- ...props
1748
- }, ref) => {
1749
- return /* @__PURE__ */ React.createElement("div", { className: cn("flex flex-col gap-1", classNames?.root) }, /* @__PURE__ */ React.createElement(Label_default, { text: label, description, required: props.required }), /* @__PURE__ */ React.createElement(
1750
- RadioGroup,
1751
- {
1752
- ref,
1753
- className: cn(
1754
- "flex text-sm",
1755
- orientation === "vertical" ? "flex-col gap-2" : "flex-row gap-4",
1756
- classNames?.group
1757
- ),
1758
- onValueChange: handleValueChange,
1759
- ...props
1760
- },
1761
- options?.map(({ id, title, value }) => /* @__PURE__ */ React.createElement(
1762
- RadioGroupItem,
1763
- {
1764
- key: id,
1765
- value,
1766
- id: `radio-group-item-${title}`,
1767
- className: classNames?.item
1768
- },
1769
- title
1770
- ))
1771
- ), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
1772
- }
1773
- );
1774
- Radio.displayName = "Radio";
1775
-
1776
- // src/components/ui/Counter.tsx
1777
- import { cva as cva7 } from "cva";
1778
- import { Minus as Minus2, Plus } from "lucide-react";
1779
- import { forwardRef as forwardRef15, useEffect as useEffect5, useState as useState5 } from "react";
1780
- var Counter = forwardRef15(
1781
- ({ label, error, min, max, step = 1, description, theme, value, classNames, onChange, ...props }, ref) => {
1782
- const [count, setCount] = useState5(0);
1783
- useEffect5(() => {
1784
- setCount(value ?? 0);
1785
- }, [value]);
1786
- const handleChange = (e) => {
1787
- const newValue = parseInt(e.target.value.replace(/\D/g, ""), 10);
1788
- if (isNaN(newValue)) return;
1789
- if (min && newValue < min) {
1790
- onChange?.(min);
1791
- setCount(min);
1792
- return;
1793
- }
1794
- if (max && newValue > max) {
1795
- onChange?.(max);
1796
- setCount(max);
1797
- return;
1798
- }
1799
- onChange?.(newValue);
1800
- setCount(newValue);
1801
- };
1802
- const decrement = () => {
1803
- const proposedValue = count - step;
1804
- const newValue = Math.max(min ?? -Infinity, proposedValue);
1805
- onChange?.(newValue);
1806
- setCount(newValue);
1807
- };
1808
- const increment = () => {
1809
- const proposedValue = count + step;
1810
- const newValue = Math.min(max ?? Infinity, proposedValue);
1811
- onChange?.(newValue);
1812
- setCount(newValue);
1813
- };
1814
- return /* @__PURE__ */ React.createElement(
1815
- "div",
1816
- {
1817
- className: cn("flex w-auto flex-col gap-1", classNames?.root),
1818
- "data-testid": `counter-wrapper-${props.id}`
1819
- },
1820
- label && /* @__PURE__ */ React.createElement(
1821
- Label_default,
1822
- {
1823
- text: label,
1824
- htmlFor: props.name,
1825
- required: props.required,
1826
- description,
1827
- className: classNames?.label
1828
- }
1829
- ),
1830
- /* @__PURE__ */ React.createElement("div", { className: "relative flex w-[122px] flex-row items-center" }, /* @__PURE__ */ React.createElement(
1831
- "button",
1832
- {
1833
- type: "button",
1834
- 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",
1835
- onClick: decrement
1836
- },
1837
- /* @__PURE__ */ React.createElement(Minus2, { className: "h-4 w-4 text-green-100" })
1838
- ), /* @__PURE__ */ React.createElement(
1839
- "input",
1840
- {
1841
- className: cn(counterVariants({ theme }), classNames?.input),
1842
- ref,
1843
- value: count,
1844
- onChange: handleChange,
1845
- "data-testid": `counter-element-${props.id}`,
1846
- ...props
1847
- }
1848
- ), /* @__PURE__ */ React.createElement(
1849
- "button",
1850
- {
1851
- type: "button",
1852
- 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",
1853
- onClick: increment
1854
- },
1855
- /* @__PURE__ */ React.createElement(Plus, { className: "h-4 w-4 text-green-100" })
1856
- )),
1857
- /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
1858
- );
1859
- }
1860
- );
1861
- Counter.displayName = "Counter";
1862
- var counterVariants = cva7(
1863
- [
1864
- "border-input",
1865
- "placeholder:text-muted-foreground",
1866
- "focus-visible:ring-ring",
1867
- "inline-flex",
1868
- "w-[122px]",
1869
- "h-11",
1870
- "items-center",
1871
- "justify-start",
1872
- "gap-3",
1873
- "rounded-lg",
1874
- "bg-transparent",
1875
- "px-3",
1876
- "pt-0.5",
1877
- "text-sm",
1878
- "text-center",
1879
- "shadow-sm",
1880
- "ring-grey-50",
1881
- "transition-colors",
1882
- "focus-visible:outline-none",
1883
- "focus-visible:ring-1",
1884
- "disabled:cursor-not-allowed",
1885
- "disabled:opacity-50",
1886
- "appearance-none",
1887
- "[&::-webkit-search-cancel-button]:appearance-none",
1888
- "[&::-webkit-search-decoration]:appearance-none",
1889
- "[&::-webkit-search-results-button]:appearance-none",
1890
- "[&::-webkit-search-results-decoration]:appearance-none",
1891
- "[&::-ms-clear]:display-none",
1892
- "[&::-ms-reveal]:display-none"
1893
- ],
1894
- {
1895
- variants: {
1896
- theme: {
1897
- light: "text-grey-80 border",
1898
- dark: "text-white"
1899
- },
1900
- hasIcon: {
1901
- false: "pl-3",
1902
- true: "pl-8"
1903
- }
1904
- },
1905
- defaultVariants: {
1906
- theme: "light",
1907
- hasIcon: false
1908
- }
1909
- }
1910
- );
1911
-
1912
- // src/components/ui/Icon.tsx
1913
- import { Slot as Slot2 } from "@radix-ui/react-slot";
1914
- import { cva as cva8 } from "cva";
1915
- import { forwardRef as forwardRef16 } from "react";
1916
- import { twMerge as twMerge3 } from "tailwind-merge";
1917
- var Icon = forwardRef16(
1918
- ({ variant, size, active = false, readonly = false, className, ...props }, ref) => {
1919
- const Component = readonly ? Slot2 : "button";
1920
- return /* @__PURE__ */ React.createElement(
1921
- Component,
1922
- {
1923
- className: cn(
1924
- twMerge3(iconVariants({ variant: active ? "active" : variant, size })),
1925
- className
1926
- ),
1927
- ...props,
1928
- ref
1929
- }
1930
- );
1931
- }
1932
- );
1933
- Icon.displayName = "Icon";
1934
- var iconVariants = cva8(
1935
- [
1936
- "inline-flex",
1937
- "items-center",
1938
- "rounded-full",
1939
- "outline-2",
1940
- "outline-offset-2",
1941
- "outline-dashed",
1942
- "outline-transparent",
1943
- "disabled:text-grey-40",
1944
- "disabled:bg-transparent",
1945
- "disabled:pointer-events-none"
1946
- ],
1947
- {
1948
- variants: {
1949
- variant: {
1950
- filled: [
1951
- "border",
1952
- "border-green-80",
1953
- "bg-green-90",
1954
- "text-white",
1955
- "hover:bg-green-80",
1956
- "active:bg-green-80",
1957
- "focus:outline-pickle-100",
1958
- "disabled:bg-green-70"
1959
- ],
1960
- transparent: [
1961
- "text-black",
1962
- "hover:bg-grey-5",
1963
- "active:bg-grey-10",
1964
- "focus:outline-purple-100"
1965
- ],
1966
- tonal: [
1967
- "border",
1968
- "border-grey-5",
1969
- "hover:border-grey-10",
1970
- "active:border-grey-20",
1971
- "focus:outline-purple-100"
1972
- ],
1973
- active: ["text-black", "bg-pickle-100"]
1974
- },
1975
- size: {
1976
- small: ["h-10", "w-10", "p-3"],
1977
- medium: ["h-12", "w-12", "p-4"],
1978
- large: ["h-14", "w-14", "p-4"]
1979
- }
1980
- },
1981
- defaultVariants: {
1982
- variant: "filled",
1983
- size: "medium"
1984
- }
1985
- }
1986
- );
1987
-
1988
- // src/components/ui/InputOtp.tsx
1989
- import { forwardRef as forwardRef18 } from "react";
1990
-
1991
- // src/components/primitives/input-otp.tsx
1992
- import { OTPInput, OTPInputContext } from "input-otp";
1993
- import { Dot } from "lucide-react";
1994
- import * as React11 from "react";
1995
- var InputOTP = React11.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ React11.createElement(
1996
- OTPInput,
1997
- {
1998
- ref,
1999
- containerClassName: cn(
2000
- "flex items-center gap-2 has-[:disabled]:opacity-50",
2001
- containerClassName
2002
- ),
2003
- className: cn("disabled:cursor-not-allowed", className),
2004
- ...props
2005
- }
2006
- ));
2007
- InputOTP.displayName = "InputOTP";
2008
- var InputOTPGroup = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ React11.createElement("div", { ref, className: cn("flex items-center", className), ...props }));
2009
- InputOTPGroup.displayName = "InputOTPGroup";
2010
- var InputOTPSlot = React11.forwardRef(({ index, error, className, ...props }, ref) => {
2011
- const inputOTPContext = React11.useContext(OTPInputContext);
2012
- const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
2013
- return /* @__PURE__ */ React11.createElement(
2014
- "div",
2015
- {
2016
- ref,
2017
- className: cn(
2018
- "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",
2019
- isActive && "z-10 ring-2 ring-purple-100 ring-offset-white dark:ring-purple-20 dark:ring-offset-purple-100",
2020
- error && "border-red-500 dark:border-red-400",
2021
- className
2022
- ),
2023
- ...props
2024
- },
2025
- char,
2026
- hasFakeCaret && /* @__PURE__ */ React11.createElement("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center" }, /* @__PURE__ */ React11.createElement("div", { className: "h-4 w-px animate-caret-blink bg-neutral-950 duration-1000 dark:bg-neutral-50" }))
2027
- );
2028
- });
2029
- InputOTPSlot.displayName = "InputOTPSlot";
2030
- var InputOTPSeparator = React11.forwardRef(({ ...props }, ref) => /* @__PURE__ */ React11.createElement("div", { ref, role: "separator", ...props }, /* @__PURE__ */ React11.createElement(Dot, null)));
2031
- InputOTPSeparator.displayName = "InputOTPSeparator";
2032
-
2033
- // src/components/ui/InputOtp.tsx
2034
- var InputOtp = forwardRef18(
2035
- ({ digits, label, description, error, ...props }, ref) => {
2036
- return /* @__PURE__ */ React.createElement(
2037
- "div",
2038
- {
2039
- className: "group flex w-full flex-col gap-1",
2040
- "data-testid": `input-otp-wrapper-${props.id}`
2041
- },
2042
- label && /* @__PURE__ */ React.createElement(
2043
- Label_default,
2044
- {
2045
- text: label,
2046
- htmlFor: props.name,
2047
- required: props.required,
2048
- description
2049
- }
2050
- ),
2051
- /* @__PURE__ */ React.createElement("div", { className: "relative flex flex-row items-center" }, /* @__PURE__ */ React.createElement(
2052
- InputOTP,
2053
- {
2054
- ref,
2055
- maxLength: digits,
2056
- "data-testid": `input-otp-element-${props.id}`,
2057
- ...props
2058
- },
2059
- [...Array(digits)].map((_, index) => /* @__PURE__ */ React.createElement(InputOTPGroup, { key: index }, /* @__PURE__ */ React.createElement(
2060
- InputOTPSlot,
2061
- {
2062
- "data-testid": `input-otp-slot-${index}`,
2063
- index,
2064
- error: Boolean(error)
2065
- }
2066
- )))
2067
- )),
2068
- /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error })
2069
- );
2070
- }
2071
- );
2072
- InputOtp.displayName = "Input";
2073
-
2074
- // src/components/ui/LinkButton.tsx
2075
- import Link2 from "next/link";
2076
- import React12 from "react";
2077
- var LinkButton = ({
2078
- disabled = false,
2079
- useAnchor = false,
2080
- children,
2081
- href,
2082
- ...props
2083
- }) => {
2084
- const Component = useAnchor ? "a" : Link2;
2085
- return /* @__PURE__ */ React12.createElement(
2086
- Component,
2087
- {
2088
- href,
2089
- className: `inline-flex items-center justify-center gap-2 rounded-full text-sm font-bold leading-tight text-black underline outline-dashed outline-2 outline-offset-2 outline-transparent hover:text-purple-100 focus:text-black focus:outline-purple-100 active:text-purple-80 ${disabled ? "pointer-events-none text-grey-40" : ""} `,
2090
- ...disabled && { "aria-disabled": true, tabIndex: -1 },
2091
- ...props
2092
- },
2093
- children
2094
- );
2095
- };
2096
-
2097
- // src/components/ui/ReadMore.tsx
2098
- import { useEffect as useEffect6, useState as useState6 } from "react";
2099
- import Markdown from "react-markdown";
2100
- function ReadMore({ text, ...props }) {
2101
- const [isExpanded, setIsExpanded] = useState6(false);
2102
- const [maxWords, setMaxWords] = useState6(160);
2103
- const isOverMaxWords = text.split(" ").length > maxWords;
2104
- useEffect6(() => {
2105
- const updateMaxWords = () => {
2106
- const windowWidth = window.innerWidth;
2107
- if (windowWidth <= 768) {
2108
- setMaxWords(50);
2109
- } else {
2110
- setMaxWords(160);
2111
- }
2112
- };
2113
- updateMaxWords();
2114
- window.addEventListener("resize", updateMaxWords);
2115
- return () => window.removeEventListener("resize", updateMaxWords);
2116
- }, []);
2117
- function createReadMoreText(text2, maxWords2, isExpanded2) {
2118
- if (!isOverMaxWords) return text2;
2119
- const words = text2.split(" ");
2120
- const snippet2 = isExpanded2 ? text2 : words.slice(0, maxWords2).join(" ");
2121
- const readMoreText = isExpanded2 ? "" : "...";
2122
- return `${snippet2} ${readMoreText}`;
2123
- }
2124
- const toggleText = () => setIsExpanded(!isExpanded);
2125
- const snippet = createReadMoreText(text, maxWords, isExpanded);
2126
- return /* @__PURE__ */ React.createElement("div", { ...props }, /* @__PURE__ */ React.createElement("div", { "data-testid": "read-more-text", className: "prose lg:prose-lg" }, /* @__PURE__ */ React.createElement(Markdown, null, snippet)), isOverMaxWords && /* @__PURE__ */ React.createElement(
2127
- Button,
2128
- {
2129
- type: "button",
2130
- className: "mt-2 flex items-center justify-center",
2131
- variant: "link",
2132
- onClick: toggleText
2133
- },
2134
- /* @__PURE__ */ React.createElement("p", { className: "text-sm font-bold underline underline-offset-2" }, "Read ", isExpanded ? "less" : "more")
2135
- ));
2136
- }
2137
-
2138
- // src/components/ui/DatePicker.tsx
2139
- import { cva as cva10 } from "cva";
2140
- import { format } from "date-fns";
2141
- import { Calendar as CalendarIcon } from "lucide-react";
2142
- import { forwardRef as forwardRef20, useEffect as useEffect7, useState as useState7 } from "react";
2143
-
2144
- // src/components/ui/calendar.tsx
2145
- import { ChevronLeft, ChevronRight } from "lucide-react";
2146
- import * as React14 from "react";
2147
- import { DayPicker } from "react-day-picker";
2148
-
2149
- // src/components/ui/buttonShadcn.tsx
2150
- import { Slot as Slot3 } from "@radix-ui/react-slot";
2151
- import { cva as cva9 } from "class-variance-authority";
2152
- import * as React13 from "react";
2153
- var buttonVariants2 = cva9(
2154
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-neutral-950 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 dark:focus-visible:ring-neutral-300",
2155
- {
2156
- variants: {
2157
- variant: {
2158
- default: "bg-neutral-900 text-neutral-50 shadow hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90",
2159
- destructive: "bg-red-500 text-neutral-50 shadow-sm hover:bg-red-500/90 dark:bg-red-900 dark:text-neutral-50 dark:hover:bg-red-900/90",
2160
- outline: "border border-neutral-200 bg-white shadow-sm hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",
2161
- secondary: "bg-neutral-100 text-neutral-900 shadow-sm hover:bg-neutral-100/80 dark:bg-neutral-800 dark:text-neutral-50 dark:hover:bg-neutral-800/80",
2162
- ghost: "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",
2163
- link: "text-neutral-900 underline-offset-4 hover:underline dark:text-neutral-50"
2164
- },
2165
- size: {
2166
- default: "h-9 px-4 py-2",
2167
- sm: "h-8 rounded-md px-3 text-xs",
2168
- lg: "h-10 rounded-md px-8",
2169
- icon: "h-9 w-9"
2170
- }
2171
- },
2172
- defaultVariants: {
2173
- variant: "default",
2174
- size: "default"
2175
- }
2176
- }
2177
- );
2178
- var Button2 = React13.forwardRef(
2179
- ({ className, variant, size, asChild = false, ...props }, ref) => {
2180
- const Comp = asChild ? Slot3 : "button";
2181
- return /* @__PURE__ */ React13.createElement(Comp, { className: cn(buttonVariants2({ variant, size, className })), ref, ...props });
2182
- }
2183
- );
2184
- Button2.displayName = "Button";
2185
-
2186
- // src/components/ui/calendar.tsx
2187
- function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
2188
- return /* @__PURE__ */ React14.createElement(
2189
- DayPicker,
2190
- {
2191
- showOutsideDays,
2192
- className: cn("p-3", className),
2193
- classNames: {
2194
- months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
2195
- month: "space-y-4",
2196
- caption: "flex justify-center pt-1 relative items-center",
2197
- caption_label: "text-sm font-medium",
2198
- nav: "space-x-1 flex items-center",
2199
- nav_button: cn(
2200
- buttonVariants2({ variant: "outline" }),
2201
- "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
2202
- ),
2203
- nav_button_previous: "absolute left-1",
2204
- nav_button_next: "absolute right-1",
2205
- table: "w-full border-collapse space-y-1",
2206
- head_row: "flex",
2207
- head_cell: "text-neutral-500 rounded-md w-8 font-normal text-[0.8rem] dark:text-neutral-400",
2208
- row: "flex w-full mt-2",
2209
- cell: cn(
2210
- "relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-neutral-100 [&:has([aria-selected].day-outside)]:bg-neutral-100/50 [&:has([aria-selected].day-range-end)]:rounded-r-md dark:[&:has([aria-selected])]:bg-neutral-800 dark:[&:has([aria-selected].day-outside)]:bg-neutral-800/50",
2211
- props.mode === "range" ? "[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md" : "[&:has([aria-selected])]:rounded-md"
2212
- ),
2213
- day: cn(
2214
- buttonVariants2({ variant: "ghost" }),
2215
- "h-8 w-8 p-0 font-normal aria-selected:opacity-100"
2216
- ),
2217
- day_range_start: "day-range-start",
2218
- day_range_end: "day-range-end",
2219
- day_selected: "bg-neutral-900 text-neutral-50 hover:bg-neutral-900 hover:text-neutral-50 focus:bg-neutral-900 focus:text-neutral-50 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50 dark:hover:text-neutral-900 dark:focus:bg-neutral-50 dark:focus:text-neutral-900",
2220
- day_today: "bg-neutral-100 text-neutral-900 dark:bg-neutral-800 dark:text-neutral-50",
2221
- day_outside: "day-outside text-neutral-500 aria-selected:bg-neutral-100/50 aria-selected:text-neutral-500 dark:text-neutral-400 dark:aria-selected:bg-neutral-800/50 dark:aria-selected:text-neutral-400",
2222
- day_disabled: "text-neutral-500 opacity-50 dark:text-neutral-400",
2223
- day_range_middle: "aria-selected:bg-neutral-100 aria-selected:text-neutral-900 dark:aria-selected:bg-neutral-800 dark:aria-selected:text-neutral-50",
2224
- day_hidden: "invisible",
2225
- ...classNames
2226
- },
2227
- components: {
2228
- IconLeft: ({ className: className2, ...props2 }) => /* @__PURE__ */ React14.createElement(ChevronLeft, { className: cn("h-4 w-4", className2), ...props2 }),
2229
- IconRight: ({ className: className2, ...props2 }) => /* @__PURE__ */ React14.createElement(ChevronRight, { className: cn("h-4 w-4", className2), ...props2 })
2230
- },
2231
- ...props
2232
- }
2233
- );
2234
- }
2235
- Calendar.displayName = "Calendar";
2236
-
2237
- // src/components/ui/DatePicker.tsx
2238
- var DatePicker = forwardRef20(
2239
- ({ label, description, required, classNames, value, onChange, error, id, testId }, ref) => {
2240
- const [date, setDate] = useState7(null);
2241
- useEffect7(() => {
2242
- setDate(value ?? null);
2243
- }, [value]);
2244
- const handleDateSelect = (dateSelected) => {
2245
- if (!dateSelected) return;
2246
- onChange?.(dateSelected);
2247
- setDate(dateSelected);
2248
- };
2249
- return /* @__PURE__ */ React.createElement("div", { id, className: cn("flex w-auto flex-col gap-1") }, label && /* @__PURE__ */ React.createElement(
2250
- Label_default,
2251
- {
2252
- text: label,
2253
- required,
2254
- description,
2255
- className: classNames?.label
2256
- }
2257
- ), /* @__PURE__ */ React.createElement(Popover, null, /* @__PURE__ */ React.createElement(PopoverTrigger, { "data-testid": testId }, /* @__PURE__ */ React.createElement("div", { className: cn(datePickerStyle(), classNames?.input) }, /* @__PURE__ */ React.createElement(CalendarIcon, { size: 16 }), date ? format(date, "MM/dd/yyyy") : "Select a date")), /* @__PURE__ */ React.createElement(PopoverContent, { ref }, /* @__PURE__ */ React.createElement(
2258
- Calendar,
2259
- {
2260
- mode: "single",
2261
- selected: date || void 0,
2262
- onSelect: handleDateSelect,
2263
- captionLayout: "dropdown",
2264
- showOutsideDays: true,
2265
- className: classNames?.calendar
2266
- }
2267
- ))), /* @__PURE__ */ React.createElement(ErrorMessage_default, { message: error }));
2268
- }
2269
- );
2270
- var datePickerStyle = cva10([
2271
- "placeholder:text-muted-foreground",
2272
- "focus-visible:ring-ring",
2273
- "inline-flex",
2274
- "w-full",
2275
- "h-11",
2276
- "items-center",
2277
- "justify-start",
2278
- "gap-3",
2279
- "rounded-lg",
2280
- "bg-transparent",
2281
- "px-3",
2282
- "pt-0.5",
2283
- "text-sm",
2284
- "shadow-sm",
2285
- "ring-grey-50",
2286
- "transition-colors",
2287
- "focus-visible:outline-none",
2288
- "focus-visible:ring-1",
2289
- "disabled:cursor-not-allowed",
2290
- "disabled:opacity-50",
2291
- "appearance-none",
2292
- "[&::-webkit-search-cancel-button]:appearance-none",
2293
- "[&::-webkit-search-decoration]:appearance-none",
2294
- "[&::-webkit-search-results-button]:appearance-none",
2295
- "[&::-webkit-search-results-decoration]:appearance-none",
2296
- "[&::-ms-clear]:display-none",
2297
- "[&::-ms-reveal]:display-none",
2298
- "text-grey-80 border",
2299
- "font-normal"
2300
- ]);
2301
-
2302
- // src/components/ui/StepTabs.tsx
2303
- import * as Tabs from "@radix-ui/react-tabs";
2304
- import { cva as cva11 } from "cva";
2305
- var tabParentVariants = cva11("flex flex-col", {
2306
- variants: {
2307
- variant: {
2308
- primary: "rounded-lg border shadow-sm",
2309
- neutral: "",
2310
- minimal: "relative overflow-x-auto"
2311
- }
2312
- },
2313
- defaultVariants: {
2314
- variant: "primary"
2315
- }
2316
- });
2317
- var headerVariants = cva11("flex shrink-0 border-b border-grey-20", {
2318
- variants: {
2319
- variant: {
2320
- primary: "",
2321
- neutral: "",
2322
- minimal: "w-fit relative border-none"
2323
- }
2324
- },
2325
- defaultVariants: {
2326
- variant: "primary"
2327
- }
2328
- });
2329
- var singleTabVariants = cva11(
2330
- "flex h-[45px] flex-1 cursor-pointer select-none items-center justify-center bg-white px-5 text-[15px] leading-none text-gray-800 outline-none",
2331
- {
2332
- variants: {
2333
- variant: {
2334
- primary: "first:rounded-tl-md last:rounded-tr-md hover:text-purple-100 data-[state=active]:text-purple-100 data-[state=active]:shadow-[inset_0_-1px_0_0,0_1px_0_0] data-[state=active]:shadow-current data-[state=active]:focus:relative data-[state=active]:focus:shadow-[0_0_0_2px] data-[state=active]:focus:shadow-black",
2335
- neutral: "first:rounded-tl-md last:rounded-tr-md hover:text-black data-[state=active]:text-black data-[state=active]:shadow-[inset_0_-1px_0_0,0_1px_0_0] data-[state=active]:shadow-current data-[state=active]:focus:relative",
2336
- minimal: "whitespace-nowrap flex-none first:rounded-tl-md last:rounded-tr-md hover:text-black data-[state=active]:font-bold data-[state=active]:text-black data-[state=active]:shadow-[inset_0_-2px_0_0] data-[state=active]:shadow-current data-[state=active]:focus:relative"
2337
- }
2338
- },
2339
- defaultVariants: {
2340
- variant: "primary"
2341
- }
2342
- }
2343
- );
2344
- function StepTabs({
2345
- list,
2346
- currentStep,
2347
- setCurrentStep,
2348
- children,
2349
- className,
2350
- classNameTab,
2351
- defaultValue,
2352
- variant,
2353
- ...props
2354
- }) {
2355
- return /* @__PURE__ */ React.createElement(
2356
- Tabs.Root,
2357
- {
2358
- value: currentStep,
2359
- onValueChange: setCurrentStep,
2360
- defaultValue: defaultValue ?? "0",
2361
- className: cn(tabParentVariants({ variant }), className),
2362
- ...props
2363
- },
2364
- /* @__PURE__ */ React.createElement(Tabs.List, { className: cn(headerVariants({ variant })) }, list.length > 1 && list.map((item, index) => /* @__PURE__ */ React.createElement(
2365
- Tabs.Trigger,
2366
- {
2367
- key: `${item}-${index}`,
2368
- className: cn(singleTabVariants({ variant }), classNameTab),
2369
- value: index.toString()
2370
- },
2371
- item
2372
- ))),
2373
- children && children.map((child, index) => /* @__PURE__ */ React.createElement(
2374
- Tabs.Content,
2375
- {
2376
- key: index,
2377
- className: cn(
2378
- "grow rounded-b-md bg-white p-5 outline-none",
2379
- variant === "minimal" && "border-t"
2380
- ),
2381
- value: index.toString()
2382
- },
2383
- child
2384
- ))
2385
- );
2386
- }
2387
-
2388
- // src/components/ui/DismissibleBanner.tsx
2389
- import { X as X4 } from "lucide-react";
2390
- import { useEffect as useEffect8, useState as useState8 } from "react";
2391
- function DismissibleBanner({
2392
- children,
2393
- cookieId,
2394
- className,
2395
- textClassNames,
2396
- buttonClassNames
2397
- }) {
2398
- const safeId = encodeURIComponent(cookieId);
2399
- const [isVisible, setIsVisible] = useState8(false);
2400
- useEffect8(() => {
2401
- const cookies = document.cookie.split(";");
2402
- const isDismissed = cookies.some((cookie) => cookie.trim().startsWith(`${safeId}=true`));
2403
- if (!isDismissed) {
2404
- setIsVisible(true);
2405
- }
2406
- }, [safeId]);
2407
- const handleDismiss = () => {
2408
- document.cookie = `${safeId}=true;path=/`;
2409
- setIsVisible(false);
2410
- };
2411
- if (!isVisible) return null;
2412
- return /* @__PURE__ */ React.createElement(
2413
- "nav",
2414
- {
2415
- className: cn(
2416
- "align-center flex w-full items-center justify-between gap-2 bg-blue-100 px-4 py-3",
2417
- className
2418
- )
2419
- },
2420
- /* @__PURE__ */ React.createElement("div", { className: cn("w-full text-center text-sm text-green-100", textClassNames) }, children),
2421
- /* @__PURE__ */ React.createElement(
2422
- "button",
2423
- {
2424
- className: cn("text-green-100", buttonClassNames),
2425
- "aria-label": "Close banner",
2426
- onClick: handleDismiss
2427
- },
2428
- /* @__PURE__ */ React.createElement(X4, { size: 28 })
2429
- )
2430
- );
2431
- }
2432
-
2433
- // src/types/latest/company_service_latest.ts
2434
- import { z as z2 } from "zod";
2435
-
2436
- // src/types/latest/shared_pickle_output_latest.ts
2437
- var shared_pickle_output_latest_exports = {};
2438
- __export(shared_pickle_output_latest_exports, {
2439
- CurrencyEnum: () => CurrencyEnum,
2440
- DetailLevelEnum: () => DetailLevelEnum,
2441
- TypeEnum: () => TypeEnum,
2442
- UnitTextEnum: () => UnitTextEnum,
2443
- imageAssetSchema: () => imageAssetSchema,
2444
- imageSchema: () => imageSchema,
2445
- monetaryAmountSchema: () => monetaryAmountSchema,
2446
- placeSchema: () => placeSchema,
2447
- postalAddressSchema: () => postalAddressSchema,
2448
- quantitativeValueSchema: () => quantitativeValueSchema
2449
- });
2450
- import { z } from "zod";
2451
- var TypeEnum = z.enum(["IMAGE"]);
2452
- var DetailLevelEnum = z.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
2453
- var UnitTextEnum = z.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
2454
- var CurrencyEnum = z.enum(["EUR", "GBP", "USD"]);
2455
- var postalAddressSchema = z.object({
2456
- version: z.literal("1.0.0").default("1.0.0"),
2457
- type: z.string().describe("Document type used for schema"),
2458
- addressCountry: z.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
2459
- addressRegion: z.optional(z.string()).describe("The region in which the locality is, and which is in the country."),
2460
- addressLocality: z.optional(z.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
2461
- streetAddress: z.optional(z.string()).describe("The street name of the address within the locality."),
2462
- streetNumber: z.optional(z.string()).describe("The house of building number within the street."),
2463
- postalCode: z.optional(z.string()).describe("The postal code"),
2464
- description: z.optional(z.string()).describe("A descriptive string containing the full address.")
2465
- });
2466
- var placeSchema = z.object({
2467
- version: z.literal("1.0.0").default("1.0.0"),
2468
- detailLevel: z.optional(DetailLevelEnum),
2469
- latitude: z.optional(z.number()).describe("The latitude of a location."),
2470
- longitude: z.optional(z.number()).describe("The longitude of a location."),
2471
- address: z.optional(postalAddressSchema).describe("The physical place of the location")
2472
- });
2473
- var quantitativeValueSchema = z.object({
2474
- version: z.literal("1.0.0").default("1.0.0"),
2475
- type: z.string().describe("Document type used for schema"),
2476
- value: z.optional(z.number()).describe("The single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Typically used for a single salary."),
2477
- minValue: z.optional(z.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
2478
- maxValue: z.optional(z.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
2479
- unitText: UnitTextEnum
2480
- });
2481
- var monetaryAmountSchema = z.object({
2482
- version: z.literal("1.0.0").default("1.0.0"),
2483
- type: z.string().describe("Document type used for schema"),
2484
- singleValue: z.optional(z.number()).describe("The annualized single value for some quantity e.g 5000, if a range is needed use minValue and maxValue. Deprecated - use value.value instead."),
2485
- minValue: z.optional(z.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
2486
- maxValue: z.optional(z.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
2487
- value: z.optional(quantitativeValueSchema).describe("The quantitative_value for a given salary"),
2488
- currency: z.optional(CurrencyEnum)
2489
- });
2490
- var imageAssetSchema = z.object({
2491
- version: z.literal("1.0.0").default("1.0.0"),
2492
- altText: z.optional(z.string()).describe("The alt text for the image"),
2493
- assetId: z.optional(z.string()).describe("The asset ID for the image"),
2494
- description: z.optional(z.string()).describe("The description for the image"),
2495
- extension: z.optional(z.string()).describe("The extension for the image"),
2496
- label: z.optional(z.string()).describe("The label for the image"),
2497
- mimeType: z.optional(z.string()).describe("The mime type for the image"),
2498
- originalFilename: z.optional(z.string()).describe("The original filename for the image"),
2499
- path: z.optional(z.string()).describe("The path for the image"),
2500
- sha1Hash: z.optional(z.string()).describe("The SHA1 hash for the image"),
2501
- size: z.optional(z.number()).describe("The size for the image"),
2502
- title: z.optional(z.string()).describe("The title for the image"),
2503
- uploadId: z.optional(z.string()).describe("The upload ID for the image"),
2504
- url: z.optional(z.string()).describe("The URL for the image")
2505
- });
2506
- var imageSchema = z.object({
2507
- version: z.literal("1.0.0").default("1.0.0"),
2508
- type: z.string().describe("Document type used for schema"),
2509
- asset: z.optional(imageAssetSchema).describe("The asset for the image")
2510
- });
2511
-
2512
- // src/types/latest/company_service_latest.ts
2513
- var TypeEnum2 = z2.enum(["OFFICE"]);
2514
- var CategoryEnum = z2.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
2515
- var TitleEnum = z2.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
2516
- var PublishStatusEnum = z2.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
2517
- var OfficeTypeEnum = z2.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
2518
- var socialMediaSchema = z2.object({
2519
- version: z2.literal("1.0.0").default("1.0.0"),
2520
- url: z2.string().describe("The link to the social media platform"),
2521
- type: z2.string().describe("The type of social media link")
2522
- });
2523
- var companyBenefitsSchema = z2.object({
2524
- version: z2.literal("1.0.0").default("1.0.0"),
2525
- type: z2.string().describe("Document type used for schema"),
2526
- title: z2.string(),
2527
- description: z2.optional(z2.string()),
2528
- category: CategoryEnum
2529
- });
2530
- var industrySchema = z2.lazy(() => z2.object({
2531
- version: z2.literal("1.0.0").default("1.0.0"),
2532
- type: z2.string().describe("Document type used for schema"),
2533
- name: z2.string(),
2534
- description: z2.optional(z2.string()).describe("A brief description of the industry"),
2535
- onetIndustryId: z2.optional(z2.string()).describe("ONET industry ID"),
2536
- parent: z2.optional(industrySchema)
2537
- }));
2538
- var jobBoardSchema = z2.object({
2539
- version: z2.literal("1.0.0").default("1.0.0"),
2540
- type: z2.string().describe("Document type used for schema"),
2541
- name: z2.string().describe("The name of the job board"),
2542
- description: z2.string().describe("A brief description of the job board"),
2543
- logo: z2.optional(imageSchema).describe("The logo of the job board"),
2544
- baseUrl: z2.optional(z2.string()).describe("The base URL of the job board")
2545
- });
2546
- var personSchema = z2.object({
2547
- version: z2.literal("1.0.0").default("1.0.0"),
2548
- type: z2.string().describe("Document type used for schema"),
2549
- firstName: z2.string().describe("The first name of the person"),
2550
- lastName: z2.string().describe("The last name of the person"),
2551
- title: z2.optional(z2.array(z2.string())).describe("The titles of the degree of the person"),
2552
- slug: z2.string().describe("person slug - should be familyname-givenname-title(s)"),
2553
- jobTitle: z2.optional(z2.string()).describe("The job title of the person"),
2554
- isDoctor: z2.optional(z2.boolean()).describe("Is the person a doctor"),
2555
- isMedical: z2.optional(z2.boolean()).describe("Are they of a medical background?"),
2556
- isScientist: z2.optional(z2.boolean()).describe("Are they a scientist?"),
2557
- image: z2.optional(imageSchema).describe("The image of the person"),
2558
- email: z2.optional(z2.string()).describe("The email of the person"),
2559
- socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the person"),
2560
- telephone: z2.optional(z2.string()).describe("The telephone number of the person"),
2561
- url: z2.optional(z2.string()).describe("The URL of the person"),
2562
- address: z2.optional(placeSchema).describe("The address of the person")
2563
- });
2564
- var companyCareersSchema = z2.object({
2565
- version: z2.literal("1.0.0").default("1.0.0"),
2566
- type: z2.string().describe("Document type used for schema"),
2567
- careersUrl: z2.string().describe("The URL of the company careers page"),
2568
- jobBoard: z2.optional(jobBoardSchema),
2569
- jobBoardSlug: z2.optional(z2.array(z2.string())),
2570
- companyBenefits: z2.optional(z2.array(companyBenefitsSchema)).describe("What are the specific benefits of that company. The benefit is generic.")
2571
- });
2572
- var companyPhilosophySchema = z2.object({
2573
- version: z2.literal("1.0.0").default("1.0.0"),
2574
- type: z2.string().describe("Document type used for schema"),
2575
- companyMission: z2.optional(z2.string()).describe("The mission statement of the company."),
2576
- companyHow: z2.optional(z2.string()).describe("How does the company achieve its mission"),
2577
- companyCulture: z2.optional(z2.array(z2.string())).describe("What are some of the culture aspects of this company?")
2578
- });
2579
- var companyNdgSchema = z2.object({
2580
- version: z2.literal("1.0.0").default("1.0.0"),
2581
- type: z2.string().describe("Document type used for schema"),
2582
- companyWow: z2.optional(z2.string()).describe("What is the wow of this company?"),
2583
- companyNdgTake: z2.optional(z2.string()).describe("What is the NDG POV on this company?"),
2584
- companyBestFit: z2.optional(z2.array(z2.string())),
2585
- companyInterests: z2.optional(z2.array(z2.string()))
2586
- });
2587
- var foundingInformationSchema = z2.object({
2588
- version: z2.literal("1.0.0").default("1.0.0"),
2589
- type: z2.string().describe("Document type used for schema"),
2590
- foundedDate: z2.optional(z2.string()),
2591
- foundedCountry: z2.optional(z2.string()),
2592
- foundedCity: z2.optional(z2.string()),
2593
- founders: z2.optional(z2.array(personSchema))
2594
- });
2595
- var ngdMetadataSchema = z2.object({
2596
- version: z2.literal("1.0.0").default("1.0.0"),
2597
- type: z2.string().describe("Document type used for schema"),
2598
- lastScraped: z2.optional(z2.string()).describe("Date the last entity was scraped, if applicable"),
2599
- scraperVersion: z2.optional(z2.string()),
2600
- postProcessorVersion: z2.optional(z2.string()),
2601
- uniqueRunId: z2.optional(z2.string()),
2602
- postProcessorUniqueRunId: z2.optional(z2.string()),
2603
- isScrapeManaged: z2.optional(z2.boolean()).default(true)
2604
- });
2605
- var companySchema = z2.object({
2606
- version: z2.literal("1.0.0").default("1.0.0"),
2607
- id: z2.string().describe("The NDG specific id for a company. Cannot be changed."),
2608
- createdAt: z2.string().datetime().describe("Time document was created. Autoset by Sanity"),
2609
- updatedAt: z2.string().datetime().describe("Time document was created. Autoset by Sanity"),
2610
- companyName: z2.string().describe("The name of the company"),
2611
- slug: z2.string().describe("The NDG specific slug for a company."),
2612
- type: z2.string().describe("Document type used for schema"),
2613
- logo: z2.optional(imageSchema).describe("The logo of the company"),
2614
- companyWebsite: z2.optional(z2.string()).describe("The website of the company"),
2615
- socialMedia: z2.optional(z2.array(socialMediaSchema)).describe("The social media links of the company"),
2616
- brandColor: z2.optional(z2.string()).describe("The brand color of the company"),
2617
- companyCareers: z2.optional(companyCareersSchema).describe("Career Specific Information for the company."),
2618
- companyPhilosophy: z2.optional(companyPhilosophySchema).describe("Company mission,values and how the company achieves its mission."),
2619
- companyNdg: z2.optional(companyNdgSchema).describe("Next Degree specific information for the company."),
2620
- foundingInfo: z2.optional(foundingInformationSchema),
2621
- headquartersLocation: z2.optional(placeSchema),
2622
- employeeEstimate: z2.optional(z2.string()),
2623
- publishStatus: z2.optional(z2.string()),
2624
- ngdMetadata: z2.optional(ngdMetadataSchema)
2625
- });
2626
- var officeSchema = z2.object({
2627
- version: z2.literal("1.0.0").default("1.0.0"),
2628
- type: z2.string().describe("Document type used for schema"),
2629
- name: z2.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
2630
- officeType: OfficeTypeEnum,
2631
- companyId: z2.optional(companySchema),
2632
- geoLocation: z2.optional(placeSchema).describe("Geographical location details: coordinates + postal address"),
2633
- createdAt: z2.optional(z2.string()),
2634
- updatedAt: z2.optional(z2.string())
2635
- });
2636
-
2637
- // src/types/latest/job_posting_service_latest.ts
2638
- import { z as z3 } from "zod";
2639
- var TypeEnum3 = z3.enum(["JOB_POST"]);
2640
- var JobLocationTypeEnum = z3.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
2641
- var EmploymentTypeEnum = z3.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
2642
- var EmploymentLevelEnum = z3.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
2643
- var JobFunctionEnum = z3.enum(["CLINICAL_RESEARCH", "CUSTOMER_SUCCESS", "DATA_ANALYTICS", "FINANCE_AND_AUDIT", "MARKETING", "OPERATIONS", "PEOPLE_HUMAN_RESOURCES", "PRODUCT_AND_TECH", "QUALITY_ASSURANCE_AND_OUTCOMES", "SALES_AND_BUSINESS_DEVELOPMENT", "STRATEGY_AND_CONSULTING"]);
2644
- var PublishStatusEnum2 = z3.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
2645
- var BestFitEnum = z3.enum(["DENTIST", "DIETICIAN", "DOULA", "MEDICAL_ASSISTANT", "MIDWIFE", "NURSE", "OCCUPATIONAL_THERAPIST", "PHARMACIST", "PHYSICAL_THERAPIST", "PHYSICIAN", "PHYSICIAN_ASSISTANT", "PSYCHOLOGIST", "RADIOLOGIST", "SOCIAL_WORKER", "SPEECH_LANGUAGE_PATHOLOGIST", "SURGEON"]);
2646
- var ClinicalLicenseEnum = z3.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
2647
- var ShiftEnum = z3.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
2648
- var ClinicalSettingEnum = z3.enum(["ACUTE_CARE", "AMBULATORY_SURGERY_CENTER", "CLINIC", "HOME_HEALTH", "HOSPITAL", "INPATIENT", "LONG_TERM_CARE", "MED_SPA", "NURSING_HOME", "OFFICE", "OUTPATIENT", "PRIVATE_PRACTICE", "REHAB_CENTER", "SCHOOL", "SKILLED_NURSING_FACILITY"]);
2649
- var ClinicalSpecialtyEnum = z3.enum(["ANESTHESIOLOGY", "CARDIOLOGY", "CASE_MANAGEMENT", "CHRONIC_PAIN", "CLINICAL_ELECTROPHYSIOLOGY", "CRITICAL_AND_ACUTE_CARE", "DERMATOLOGY", "DIALYSIS", "EMERGENCY_MEDICINE", "ENDOCRINOLOGY", "ERGONOMICS", "FEEDING_EATING_AND_SWALLOWING", "GASTROENTEROLOGY", "GERIATRICS", "HAND_THERAPY", "HEMATOLOGY", "HOLISTIC_MEDICINE", "INFORMATICS", "INTERNAL_MEDICINE", "LABOR_AND_DELIVERY", "MANUAL_THERAPY", "MED_SURG", "MENTAL_HEALTH", "NEPHROLOGY", "NEUROLOGY", "ONCOLOGY", "ORTHOPEDICS", "OTOLARYNGOLOGY", "PEDIATRICS", "PHYSICAL_AND_REHABILITATION_MEDICINE", "PLASTIC_SURGERY", "PRIMARY_CARE", "PSYCHIATRY", "PULMONOLOGY", "RADIOLOGY", "SENSORY", "SPORTS", "SURGERY", "TRAUMA_MEDICINE", "URGENT_CARE", "UROLOGY", "VISION", "WOMENS_HEALTH", "WOUND_AND_BURN_CARE"]);
2650
- var jobPostSchema = z3.object({
2651
- version: z3.literal("1.0.0").default("1.0.0"),
2652
- id: z3.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
2653
- type: z3.string().describe("Document type used for schema"),
2654
- createdAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
2655
- updatedAt: z3.string().datetime().describe("Time document was created. Autoset by Sanity"),
2656
- dateAdded: z3.optional(z3.string().datetime()).describe("The date the job was added to the platform"),
2657
- datePosted: z3.optional(z3.string().datetime()).describe("The date the job was published for public viewing"),
2658
- dateRemoved: z3.optional(z3.string().datetime()).describe("The date the job was removed from public viewing"),
2659
- validThrough: z3.optional(z3.string().datetime()).describe("The date the job posting is valid through. After this date it will be removed from public viewing"),
2660
- vacancyCount: z3.optional(z3.number().int()).describe("The number of vacancies for a given job posting"),
2661
- clientId: z3.string().describe("The ID assigned by the client to a job - normally the same as the GH / Lever / Ashby ID or internal ID"),
2662
- url: z3.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
2663
- title: z3.string().describe("The title of the job post"),
2664
- description: z3.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
2665
- richTextDescription: z3.optional(z3.string()).describe("The description of the job post saved as rich text"),
2666
- isClinical: z3.boolean().default(false).describe("Denotes if a job posting is clinical in nature or not. A role is clinical if it requires direct clinical patient care."),
2667
- isRemote: z3.boolean().default(false).describe("Denotes if a job posting is remote in nature. For a posting to be 'remote' it must be 100% remote (e.g hybrid roles would denote this to false)."),
2668
- isVerified: z3.boolean().default(false).describe("Denotes if a job posting has been manually verified - and thus ALL fields can be considered accurate. Can be used for DS training."),
2669
- isDirectApply: z3.boolean().default(false).describe("Denotes if a job posting url is direct apply. To be direct apply a user must be able to apply to the role without logging in and under 2 clicks."),
2670
- jobLocationType: z3.optional(z3.array(JobLocationTypeEnum)),
2671
- employmentType: z3.optional(z3.array(EmploymentTypeEnum)),
2672
- employmentLevel: z3.optional(EmploymentLevelEnum),
2673
- jobFunction: z3.optional(JobFunctionEnum),
2674
- publishStatus: PublishStatusEnum2,
2675
- bestFit: z3.optional(z3.array(BestFitEnum)),
2676
- clinicalLicense: z3.optional(z3.array(ClinicalLicenseEnum)),
2677
- shift: z3.optional(z3.array(ShiftEnum)),
2678
- clinicalSetting: z3.optional(z3.array(ClinicalSettingEnum)),
2679
- clinicalSpecialty: z3.optional(z3.array(ClinicalSpecialtyEnum)),
2680
- estimatedSalary: z3.optional(monetaryAmountSchema).describe("Determines the estimated salary for a given job posting"),
2681
- jobLocation: z3.optional(postalAddressSchema).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
2682
- applicableOffices: z3.optional(z3.array(officeSchema)).describe("The physical location(s) in which employees may be located for to be eligible for the job. Used in conjunction with job_location_type."),
2683
- applicantLocationRequirements: z3.optional(z3.array(placeSchema)).describe("The geographic location(s) in which employees may be located for to be eligible for the job. The job description must clearly state that the applicant may be located in certain geographical location(s). This property is required if applicants may be located in one or more geographic locations and the job is 100% remote."),
2684
- hiringOrganization: z3.optional(companySchema).describe("The organization that is hiring for the role")
2685
- });
2686
-
2687
- // src/types/latest/custom/company_service_sanity.ts
2688
- import { z as z5 } from "zod";
2689
-
2690
- // src/types/latest/custom/custom_sanity_models.ts
2691
- import { z as z4 } from "zod";
2692
- var sanityReferenceSchema = z4.object({
2693
- _ref: z4.string(),
2694
- _type: z4.string(),
2695
- _key: z4.optional(z4.string())
2696
- });
2697
- var sanitySlugSchema = z4.object({
2698
- current: z4.string(),
2699
- _type: z4.string(),
2700
- _key: z4.optional(z4.string())
2701
- });
2702
-
2703
- // src/types/latest/custom/company_service_sanity.ts
2704
- var foundingInformationSchema2 = foundingInformationSchema.extend({
2705
- _type: z5.string().describe("Document type used within sanity").default("companyFounding"),
2706
- founders: z5.optional(z5.union([z5.array(personSchema), z5.array(sanityReferenceSchema)])).nullable(),
2707
- founderList: z5.optional(z5.union([z5.array(personSchema), z5.array(sanityReferenceSchema)])).nullable()
2708
- }).omit({ type: true }).strict().transform((data) => ({
2709
- ...data,
2710
- type: data._type,
2711
- founders: data.founders || data.founderList || void 0
2712
- })).transform(({ _type, founderList, ...rest }) => rest);
2713
- var companyNdgSchema2 = companyNdgSchema.extend({
2714
- _type: z5.string().describe("Document type used within sanity").default("companyNDG"),
2715
- companyNDGTake: z5.string().nullable().describe("What is the NDG POV on this company?")
2716
- }).omit({ type: true }).strict().transform((data) => ({
2717
- ...data,
2718
- type: data._type,
2719
- companyNdgTake: data.companyNDGTake
2720
- })).transform(({ _type, companyNDGTake, ...rest }) => rest);
2721
- var ngdMetadataSchema2 = ngdMetadataSchema.extend({
2722
- _type: z5.string().describe("Document type used within sanity").default("ndgMetadata")
2723
- }).omit({ type: true }).transform((data) => ({
2724
- ...data,
2725
- type: data._type
2726
- })).transform(({ _type, ...rest }) => rest);
2727
- var companyPhilosophySchema2 = companyPhilosophySchema.extend({
2728
- _type: z5.string().describe("Document type used within sanity").default("companyPhilosophy")
2729
- }).omit({ type: true }).strict().transform((data) => ({
2730
- ...data,
2731
- type: data._type
2732
- })).transform(({ _type, ...rest }) => rest);
2733
- var companyCareersSchema2 = companyCareersSchema.extend({
2734
- _type: z5.string().describe("Document type used within sanity").default("companyCareers"),
2735
- companyBenefits: z5.optional(z5.array(
2736
- z5.union([companyBenefitsSchema, sanityReferenceSchema])
2737
- )).nullable().describe("What are the specific benefits of that company. The benefit is generic."),
2738
- jobBoard: z5.union([jobBoardSchema, sanityReferenceSchema]).nullable(),
2739
- jobBoardSlug: z5.optional(z5.union([z5.array(z5.string()), z5.array(sanitySlugSchema)]))
2740
- }).omit({ type: true }).strict().transform((data) => ({
2741
- ...data,
2742
- type: data._type
2743
- })).transform(({ _type, ...rest }) => rest);
2744
- var companySchema2 = companySchema.extend({
2745
- _id: z5.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
2746
- _rev: z5.string().nullable().describe("Revision number"),
2747
- _type: z5.string().describe("Document type used within sanity").default("company"),
2748
- _createdAt: z5.string().datetime().describe("Time document was created. Autoset by Sanity"),
2749
- _updatedAt: z5.string().datetime().describe("Time document was created. Autoset by Sanity"),
2750
- companyCareers: companyCareersSchema2.nullable().describe("Career Specific Information for the company."),
2751
- companyPhilosophy: companyPhilosophySchema2.nullable().describe("Company mission,values and how the company achieves its mission."),
2752
- companyNDG: companyNdgSchema2.nullable().describe("Next Degree specific information for the company."),
2753
- foundingInfo: foundingInformationSchema2.nullable(),
2754
- slug: z5.union([z5.string(), sanitySlugSchema]).describe("The NDG specific slug for a company."),
2755
- ndgMetadata: ngdMetadataSchema2.nullable(),
2756
- logo: z5.union([imageSchema, z5.record(z5.any())]).nullable().describe("The logo of the company"),
2757
- //Deprecated Models
2758
- logoImageURL: z5.optional(z5.string()).describe("The logo of the company"),
2759
- industryList: z5.optional(z5.array(sanityReferenceSchema)).describe("The industry of the company")
2760
- }).omit({ type: true, id: true, createdAt: true, updatedAt: true }).strict().transform((data) => ({
2761
- ...data,
2762
- type: data._type,
2763
- id: data._id,
2764
- createdAt: data._createdAt,
2765
- updatedAt: data._updatedAt,
2766
- rev: data._rev
2767
- })).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
2768
-
2769
- // src/types/latest/custom/job_posting_service_sanity.ts
2770
- import { z as z6 } from "zod";
2771
- var JobPostTypeEnum = z6.enum(["jobPost"]);
2772
- var MonetaryAmountTypeEnum = z6.enum(["monetaryAmount"]);
2773
- var postalAddressSchema2 = postalAddressSchema.extend({
2774
- _type: z6.string().describe("Document type used within sanity").default("address")
2775
- }).omit({ type: true }).strict().transform((data) => ({
2776
- ...data,
2777
- type: data._type
2778
- })).transform(({ _type, ...rest }) => rest);
2779
- var quantitativeValueSchema2 = quantitativeValueSchema.extend({
2780
- _type: z6.string().describe("Document type used within sanity").default("quantitativeValue")
2781
- }).omit({ type: true }).strict().transform((data) => ({
2782
- ...data,
2783
- type: data._type
2784
- })).transform(({ _type, ...rest }) => rest);
2785
- var monetaryAmountSchema2 = monetaryAmountSchema.extend({
2786
- _type: z6.string().describe("Document type used within sanity").default("monetaryAmount"),
2787
- value: quantitativeValueSchema2.optional().describe("The quantitative_value for a given salary")
2788
- }).omit({ type: true }).strict().transform((data) => ({
2789
- ...data,
2790
- type: data._type
2791
- })).transform(({ _type, ...rest }) => rest);
2792
- var jobPostSchema2 = jobPostSchema.extend({
2793
- // Override base fields with Sanity-specific fields
2794
- _id: z6.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed.").regex(/^ndg-.*-.*$/),
2795
- _rev: z6.string().optional().describe("Revision number"),
2796
- _type: z6.string().describe("Document type used within sanity").default("jobPost"),
2797
- _createdAt: z6.string().datetime().describe("Time document was created. Autoset by Sanity"),
2798
- _updatedAt: z6.string().datetime().describe("Time document was created. Autoset by Sanity"),
2799
- // Override fields with new schemas
2800
- estimatedSalary: monetaryAmountSchema2.optional().describe("Determines the estimated salary for a given job posting"),
2801
- jobLocation: postalAddressSchema2.optional().describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
2802
- // Add Sanity-specific fields
2803
- ndgMetadata: z6.record(z6.any()).optional(),
2804
- ndgID: z6.string().optional(),
2805
- hiringOrganization: z6.optional(z6.union([sanityReferenceSchema, companySchema])),
2806
- raw: z6.record(z6.any()).optional(),
2807
- isLoaded: z6.boolean().default(false),
2808
- isVerified: z6.boolean().default(false),
2809
- needsReview: z6.boolean().default(false),
2810
- schema_version: z6.string().optional(),
2811
- origin: z6.string().optional(),
2812
- temp: z6.record(z6.any()).optional(),
2813
- applicationType: z6.string().optional(),
2814
- // Override clientId to use Sanity naming convention
2815
- clientID: z6.string()
2816
- }).omit({ type: true, id: true, createdAt: true, updatedAt: true, clientId: true }).transform((data) => ({
2817
- ...data,
2818
- type: data._type,
2819
- id: data._id,
2820
- createdAt: data._createdAt,
2821
- updatedAt: data._updatedAt,
2822
- rev: data._rev
2823
- })).transform(({ _type, _id, _rev, _createdAt, _updatedAt, ...rest }) => rest);
2824
-
2825
- // src/lib/salaryRange.ts
2826
- var CurrencyEnum2 = shared_pickle_output_latest_exports.CurrencyEnum;
2827
- function salaryRange(salary, showUnitText = true) {
2828
- if (!salary) return null;
2829
- let min = salary.minValue;
2830
- let max = salary.maxValue;
2831
- let single = salary.singleValue;
2832
- let value = salary.value;
2833
- let unitText = "YEAR";
2834
- const signs = {
2835
- [CurrencyEnum2.Values.USD]: "$",
2836
- [CurrencyEnum2.Values.GBP]: "\xA3",
2837
- [CurrencyEnum2.Values.EUR]: "\u20AC"
2838
- };
2839
- const sign = signs[salary.currency ?? CurrencyEnum2.Values.USD];
2840
- if (value != null && typeof value === "object") {
2841
- min = value.minValue;
2842
- max = value.maxValue;
2843
- single = value.value;
2844
- unitText = value.unitText;
2845
- }
2846
- if (unitText === "YEAR") unitText = " per year";
2847
- if (unitText === "MONTH") unitText = " per month";
2848
- if (unitText === "WEEK") unitText = " per week";
2849
- if (unitText === "DAY") unitText = " per day";
2850
- if (unitText === "PER_ACTIVITY") unitText = " per activity";
2851
- if (unitText === "HOUR") unitText = " per hour";
2852
- if (showUnitText === false) unitText = "";
2853
- const isValid = (v) => v != null && v >= 0;
2854
- if (!isValid(min) && !isValid(max) && !isValid(single)) return null;
2855
- if (isValid(single)) return sign + single.toLocaleString() + unitText;
2856
- if (min === max) return sign + min?.toLocaleString() + unitText;
2857
- if (isValid(min) && isValid(max))
2858
- return sign + min?.toLocaleString() + " - " + sign + max?.toLocaleString() + unitText;
2859
- return null;
2860
- }
2861
-
2862
- // src/components/company/CompanyBenefits.tsx
2863
- function CompanyBenefits({ benefits }) {
2864
- if (!benefits) return null;
2865
- return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2", "data-testid": "company-benefits" }, /* @__PURE__ */ React.createElement("h2", { className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg" }, "Company benefits"), /* @__PURE__ */ React.createElement("ul", { className: "flex flex-col gap-3" }, benefits.map((benefit, i) => /* @__PURE__ */ React.createElement("li", { key: `${benefit}-${i}`, className: "text-base text-grey-80" }, benefit))));
2866
- }
2867
-
2868
- // src/components/company/CompanyInformation.tsx
2869
- function CompanyInformation({
2870
- name,
2871
- how,
2872
- mission,
2873
- wow,
2874
- website
2875
- }) {
2876
- return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React.createElement(
2877
- "h2",
2878
- {
2879
- "data-testid": "company-name",
2880
- className: "break-word max-w-full text-xl font-bold text-black sm:max-w-2xl md:max-w-lg"
2881
- },
2882
- "About ",
2883
- name
2884
- ), how && /* @__PURE__ */ React.createElement("p", { "data-testid": "company-information", className: "text-base text-grey-80" }, how), mission && /* @__PURE__ */ React.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React.createElement("span", null, "\u{1F680}"), /* @__PURE__ */ React.createElement("p", { className: "text-base text-grey-80" }, /* @__PURE__ */ React.createElement("span", { className: "pr-1 font-bold" }, "Mission"), mission)), wow && /* @__PURE__ */ React.createElement("div", { className: "flex gap-2" }, /* @__PURE__ */ React.createElement("span", null, "\u{1F31F}"), /* @__PURE__ */ React.createElement("p", { className: "text-base text-grey-80" }, /* @__PURE__ */ React.createElement("span", { className: "pr-1 font-bold" }, "Wow Factor"), wow)), website && /* @__PURE__ */ React.createElement("div", { className: "pt-2" }, /* @__PURE__ */ React.createElement(
2885
- LinkButton,
2886
- {
2887
- "data-testid": "company-website-link",
2888
- href: website,
2889
- target: "_blank",
2890
- rel: "noopener noreferrer"
2891
- },
2892
- "Website"
2893
- )));
2894
- }
2895
-
2896
- // src/components/company/CompanyTake.tsx
2897
- function CompanyTake({ content, avatarSrc }) {
2898
- if (!content) return null;
2899
- return /* @__PURE__ */ React.createElement(
2900
- "div",
2901
- {
2902
- "data-testid": "company-take",
2903
- className: "align-center w-full justify-start rounded-2xl bg-green-90 p-6"
2904
- },
2905
- /* @__PURE__ */ React.createElement("p", { className: "text-lg font-bold text-white sm:text-xl" }, "The Real Dill \u2618\uFE0F"),
2906
- /* @__PURE__ */ React.createElement("div", { className: "mt-2 flex items-center justify-start" }, /* @__PURE__ */ React.createElement("p", { className: "text-sm font-normal text-grey-10" }, content)),
2907
- /* @__PURE__ */ React.createElement("div", { className: "mt-8 flex w-full items-center gap-3" }, /* @__PURE__ */ React.createElement(Avatar, { name: "Jon Lee", src: avatarSrc }), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col flex-wrap items-start" }, /* @__PURE__ */ React.createElement("p", { className: "text-sm font-bold text-white" }, "Jon Lee, PT, DPT, OCS, FAAOMPT, MBA"), /* @__PURE__ */ React.createElement("p", { className: "text-xs font-normal text-grey-30" }, "Pickle co-founder")))
2908
- );
2909
- }
2910
-
2911
- // src/components/jobPost/JobDescription.tsx
2912
- function JobDescription({ description }) {
2913
- if (!description) return null;
2914
- return /* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-col gap-2" }, /* @__PURE__ */ React.createElement("h3", { className: "text-xl font-bold" }, "Job Description"), /* @__PURE__ */ React.createElement(ReadMore, { text: description }));
2915
- }
2916
-
2917
- // src/components/jobPost/JobHeader.tsx
2918
- import { Dot as Dot2 } from "lucide-react";
2919
- import Image2 from "next/image";
2920
-
2921
- // src/components/buttons/BackButton.tsx
2922
- import { X as X5 } from "lucide-react";
2923
- import { useRouter } from "next/navigation";
2924
-
2925
- // src/hooks/useWindowHistory.ts
2926
- import { useContext as useContext2 } from "react";
2927
-
2928
- // src/contexts/WindowHistoryProvider.tsx
2929
- import { useSearchParams } from "next/navigation";
2930
- import { createContext, useEffect as useEffect9, useMemo as useMemo3, useState as useState9 } from "react";
2931
- var WindowHistoryContext = createContext({});
2932
- function WindowHistoryProvider({ children }) {
2933
- const [history, setHistory] = useState9([]);
2934
- const searchParams = useSearchParams();
2935
- useEffect9(() => {
2936
- setHistory(
2937
- (prev) => prev.at(-1) === window.location.href ? prev : [...prev, window.location.href]
2938
- );
2939
- }, [searchParams]);
2940
- const contextValue = useMemo3(() => ({ history }), [history]);
2941
- return /* @__PURE__ */ React.createElement(WindowHistoryContext.Provider, { value: contextValue }, children);
2942
- }
2943
-
2944
- // src/hooks/useWindowHistory.ts
2945
- function useWindowHistory() {
2946
- const windowHistoryContext = useContext2(WindowHistoryContext);
2947
- return windowHistoryContext;
2948
- }
2949
-
2950
- // src/components/buttons/BackButton.tsx
2951
- function BackButton({ acceptedRoutes, fallbackHref, className, ...props }) {
2952
- const { history } = useWindowHistory();
2953
- const router = useRouter();
2954
- const isAcceptedRoute = (r) => !!acceptedRoutes?.find((route) => new RegExp("^" + route + "$", "i").test(new URL(r).pathname));
2955
- const goBack = () => {
2956
- const previous = history[history.length - 2];
2957
- if (history.length > 1 && isAcceptedRoute(previous)) {
2958
- router.back();
2959
- } else {
2960
- router.push(fallbackHref ?? "/");
2961
- }
2962
- };
2963
- return /* @__PURE__ */ React.createElement(
2964
- Icon,
2965
- {
2966
- "aria-label": "back button",
2967
- variant: "transparent",
2968
- size: "small",
2969
- onClick: goBack,
2970
- className,
2971
- ...props
2972
- },
2973
- /* @__PURE__ */ React.createElement(X5, null)
2974
- );
2975
- }
2976
-
2977
- // src/lib/icons.ts
2978
- import {
2979
- Banknote,
2980
- Bell,
2981
- BriefcaseBusiness,
2982
- Building,
2983
- Building2,
2984
- CircleUser,
2985
- CircleUserRound,
2986
- Clock2,
2987
- Contact,
2988
- GalleryVerticalEnd,
2989
- Home,
2990
- KeyRound,
2991
- Layers,
2992
- LifeBuoy,
2993
- MapPin,
2994
- MessageSquareDot,
2995
- Settings,
2996
- SquareKanban,
2997
- Users,
2998
- Wallet
2999
- } from "lucide-react";
3000
- var iconMap = {
3001
- house: Home,
3002
- layers: Layers,
3003
- users: Users,
3004
- settings: Settings,
3005
- building: Building,
3006
- bell: Bell,
3007
- wallet: Wallet,
3008
- contact: Contact,
3009
- banknote: Banknote,
3010
- "message-square-dot": MessageSquareDot,
3011
- "life-buoy": LifeBuoy,
3012
- "building-2": Building2,
3013
- "gallery-vertical-end": GalleryVerticalEnd,
3014
- "square-kanban": SquareKanban,
3015
- "briefcase-business": BriefcaseBusiness,
3016
- "circle-user": CircleUser,
3017
- "key-round": KeyRound,
3018
- "clock-2": Clock2,
3019
- "circle-user-round": CircleUserRound,
3020
- "map-pin": MapPin
3021
- };
3022
-
3023
- // src/components/jobPost/JobHeader.tsx
3024
- function JobHeader({
3025
- title,
3026
- subtitles,
3027
- standalone,
3028
- bannerSrc,
3029
- avatarSrc,
3030
- avatarName,
3031
- avatarHref,
3032
- backFallbackHref,
3033
- backAcceptedRoutes,
3034
- actions,
3035
- tags
3036
- }) {
3037
- const renderIcon = (icon) => {
3038
- const Icon2 = iconMap[icon];
3039
- return /* @__PURE__ */ React.createElement(Icon2, { size: 18 });
3040
- };
3041
- return /* @__PURE__ */ React.createElement(
3042
- "div",
3043
- {
3044
- "data-testid": "job-header-root",
3045
- className: cn(
3046
- "-mt-8 flex w-full flex-col items-center justify-between gap-6 md:-mt-0",
3047
- !standalone && "rounded-3xl"
3048
- )
3049
- },
3050
- !standalone && /* @__PURE__ */ React.createElement("div", { className: "relative flex min-h-16 w-full items-center rounded-t-3xl bg-transparent md:min-h-24 md:flex-row lg:min-h-32" }, /* @__PURE__ */ React.createElement(
3051
- Image2,
3052
- {
3053
- className: "h-full w-full rounded-t-3xl object-cover",
3054
- src: bannerSrc,
3055
- alt: "job banner",
3056
- fill: true
3057
- }
3058
- ), /* @__PURE__ */ React.createElement(
3059
- BackButton,
3060
- {
3061
- acceptedRoutes: backAcceptedRoutes,
3062
- fallbackHref: backFallbackHref,
3063
- className: "absolute right-2 top-2 flex items-center justify-center text-white sm:hidden",
3064
- "data-testid": "job-header-back-button"
3065
- }
3066
- ), /* @__PURE__ */ React.createElement(
3067
- "div",
3068
- {
3069
- className: "absolute left-4 top-8 md:left-6 md:top-16 lg:top-24",
3070
- "data-testid": "job-header-avatar"
3071
- },
3072
- /* @__PURE__ */ React.createElement(
3073
- Avatar,
3074
- {
3075
- size: "large",
3076
- target: "_blank",
3077
- href: avatarHref,
3078
- name: avatarName,
3079
- src: avatarSrc,
3080
- rel: "noopener noreferrer"
3081
- }
3082
- )
3083
- )),
3084
- /* @__PURE__ */ React.createElement("div", { className: "flex w-full flex-col items-start justify-start gap-4 px-6" }, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col md:flex-row" }, standalone && /* @__PURE__ */ React.createElement("div", { className: "-mt-4 mr-4 md:mt-0", "data-testid": "job-header-avatar" }, /* @__PURE__ */ React.createElement(
3085
- Avatar,
3086
- {
3087
- size: "large",
3088
- target: "_blank",
3089
- href: avatarHref,
3090
- name: avatarName,
3091
- src: avatarSrc,
3092
- rel: "noopener noreferrer"
3093
- }
3094
- )), /* @__PURE__ */ React.createElement("div", { className: "prose mt-4 flex w-full items-center text-grey-80 lg:prose-lg" }, subtitles?.map((subtitle, i) => /* @__PURE__ */ React.createElement(
3095
- "div",
3096
- {
3097
- key: subtitle,
3098
- "data-testid": `job-header-subtitle-${i}`,
3099
- className: "flex items-center"
3100
- },
3101
- subtitle,
3102
- i < subtitles.length - 1 && /* @__PURE__ */ React.createElement(Dot2, { className: "mx-1 shrink-0", size: 10 })
3103
- )))), /* @__PURE__ */ React.createElement(
3104
- "div",
3105
- {
3106
- "data-testid": "job-header-content",
3107
- className: "mt-2 flex w-full flex-row flex-wrap items-center justify-between gap-1"
3108
- },
3109
- /* @__PURE__ */ React.createElement(
3110
- "h2",
3111
- {
3112
- "data-testid": "job-header-title",
3113
- className: "break-word max-w-full text-2xl font-bold text-black sm:max-w-2xl md:max-w-lg"
3114
- },
3115
- title
3116
- ),
3117
- !!actions && /* @__PURE__ */ React.createElement(
3118
- "div",
3119
- {
3120
- className: "flex w-full justify-end gap-2 md:w-auto",
3121
- "data-testid": "job-header-actions"
3122
- },
3123
- actions
3124
- )
3125
- ), /* @__PURE__ */ React.createElement(
3126
- "div",
3127
- {
3128
- "data-testid": "job-header-tags",
3129
- className: "flex flex-row flex-wrap items-center justify-start gap-2"
3130
- },
3131
- tags?.map(({ name, label, icon }) => /* @__PURE__ */ React.createElement(
3132
- Chip_default,
3133
- {
3134
- key: `${name}-${label}`,
3135
- size: "small",
3136
- variant: "neutral",
3137
- "aria-label": name,
3138
- "data-testid": `job-header-tag-${name}`
3139
- },
3140
- renderIcon(icon),
3141
- /* @__PURE__ */ React.createElement("span", null, label)
3142
- ))
3143
- ))
3144
- );
3145
- }
3146
-
3147
- // src/components/jobPost/JobPost.tsx
3148
- import * as DateFns from "date-fns";
3149
-
3150
- // src/hooks/useDisplayText.ts
3151
- import { useEffect as useEffect10, useMemo as useMemo4, useState as useState10 } from "react";
3152
-
3153
- // src/lib/mappings.ts
3154
- var employmentTypeDisplayText = {
3155
- FULL_TIME: {
3156
- en: "Full Time"
3157
- },
3158
- INTERNSHIP: {
3159
- en: "Internship"
3160
- },
3161
- OTHER: {
3162
- en: "Other"
3163
- },
3164
- PART_TIME: {
3165
- en: "Part Time"
3166
- },
3167
- PER_DIEM: {
3168
- en: "Per-Diem"
3169
- },
3170
- TEMPORARY: {
3171
- en: "Temporary"
3172
- },
3173
- CONTRACT: {
3174
- en: "Contract"
3175
- }
3176
- };
3177
- var unitTextDisplayText = {
3178
- DAY: {
3179
- en: "Day"
3180
- },
3181
- HOUR: {
3182
- en: "Hour"
3183
- },
3184
- MONTH: {
3185
- en: "Month"
3186
- },
3187
- PER_ACTIVITY: {
3188
- en: "Per Activity"
3189
- },
3190
- WEEK: {
3191
- en: "Week"
3192
- },
3193
- YEAR: {
3194
- en: "Year"
3195
- }
3196
- };
3197
- var currencyDisplayText = {
3198
- EUR: {
3199
- en: "\u20AC"
3200
- },
3201
- GBP: {
3202
- en: "\xA3"
3203
- },
3204
- USD: {
3205
- en: "$"
3206
- }
3207
- };
3208
- var employmentLevelDisplayText = {
3209
- DIRECTOR: {
3210
- en: "Director"
3211
- },
3212
- ENTRY_LEVEL: {
3213
- en: "Entry Level"
3214
- },
3215
- EXECUTIVE: {
3216
- en: "Executive"
3217
- },
3218
- EXPERIENCED: {
3219
- en: "Experienced"
3220
- },
3221
- INTERN: {
3222
- en: "Intern"
3223
- },
3224
- MANAGER: {
3225
- en: "Manager"
3226
- }
3227
- };
3228
- var jobFunctionDisplayText = {
3229
- CLINICAL_RESEARCH: {
3230
- en: "Clinical Research"
3231
- },
3232
- CUSTOMER_SUCCESS: {
3233
- en: "Customer Success"
3234
- },
3235
- DATA_ANALYTICS: {
3236
- en: "Data Analytics"
3237
- },
3238
- FINANCE_AND_AUDIT: {
3239
- en: "Finance and Audit"
3240
- },
3241
- MARKETING: {
3242
- en: "Marketing"
3243
- },
3244
- OPERATIONS: {
3245
- en: "Operations"
3246
- },
3247
- PEOPLE_HUMAN_RESOURCES: {
3248
- en: "People Human Resources"
3249
- },
3250
- PRODUCT_AND_TECH: {
3251
- en: "Product and Tech"
3252
- },
3253
- QUALITY_ASSURANCE_AND_OUTCOMES: {
3254
- en: "Quality Assurance and Outcomes"
3255
- },
3256
- SALES_AND_BUSINESS_DEVELOPMENT: {
3257
- en: "Sales and Business Development"
3258
- },
3259
- STRATEGY_AND_CONSULTING: {
3260
- en: "Strategy and Consulting"
3261
- }
3262
- };
3263
- var bestFitDisplayText = {
3264
- DENTIST: {
3265
- en: "Dentist"
3266
- },
3267
- DIETICIAN: {
3268
- en: "Dietician"
3269
- },
3270
- DOULA: {
3271
- en: "Doula"
3272
- },
3273
- MEDICAL_ASSISTANT: {
3274
- en: "Medical Assistant"
3275
- },
3276
- MIDWIFE: {
3277
- en: "Midwife"
3278
- },
3279
- NURSE: {
3280
- en: "Nurse"
3281
- },
3282
- OCCUPATIONAL_THERAPIST: {
3283
- en: "Occupational Therapist"
3284
- },
3285
- PHARMACIST: {
3286
- en: "Pharmacist"
3287
- },
3288
- PHYSICAL_THERAPIST: {
3289
- en: "Physical Therapist"
3290
- },
3291
- PHYSICIAN: {
3292
- en: "Physician"
3293
- },
3294
- PHYSICIAN_ASSISTANT: {
3295
- en: "Physician Assistant"
3296
- },
3297
- PSYCHOLOGIST: {
3298
- en: "Psychologist"
3299
- },
3300
- RADIOLOGIST: {
3301
- en: "Radiologist"
3302
- },
3303
- SOCIAL_WORKER: {
3304
- en: "Social Worker"
3305
- },
3306
- SPEECH_LANGUAGE_PATHOLOGIST: {
3307
- en: "Speech Language Pathologist"
3308
- },
3309
- SURGEON: {
3310
- en: "Surgeon"
3311
- }
3312
- };
3313
- var clinicalSpecialtyDisplayText = {
3314
- ANESTHESIOLOGY: {
3315
- en: "Anesthesiology"
3316
- },
3317
- CARDIOLOGY: {
3318
- en: "Cardiology"
3319
- },
3320
- CARDIOVASCULAR_AND_PULMONARY: {
3321
- en: "Cardiovascular and Pulmonary"
3322
- },
3323
- CASE_MANAGEMENT: {
3324
- en: "Case Management"
3325
- },
3326
- CHRONIC_PAIN: {
3327
- en: "Chronic Pain"
3328
- },
3329
- CLINICAL_ELECTROPHYSIOLOGY: {
3330
- en: "Clinical Electrophysiology"
3331
- },
3332
- CRITICAL_AND_ACUTE_CARE: {
3333
- en: "Critical and Acute Care"
3334
- },
3335
- DERMATOLOGY: {
3336
- en: "Dermatology"
3337
- },
3338
- DIALYSIS: {
3339
- en: "Dialysis"
3340
- },
3341
- EMERGENCY_MEDICINE: {
3342
- en: "Emergency Medicine"
3343
- },
3344
- ENDOCRINOLOGY: {
3345
- en: "Endocrinology"
3346
- },
3347
- ERGONOMICS: {
3348
- en: "Ergonomics"
3349
- },
3350
- FEEDING_EATING_AND_SWALLOWING: {
3351
- en: "Feeding, Eating, and Swallowing"
3352
- },
3353
- GASTROENTEROLOGY: {
3354
- en: "Gastroenterology"
3355
- },
3356
- GERIATRICS: {
3357
- en: "Geriatrics"
3358
- },
3359
- HAND_THERAPY: {
3360
- en: "Hand Therapy"
3361
- },
3362
- HEMATOLOGY: {
3363
- en: "Hematology"
3364
- },
3365
- HOLISTIC_MEDICINE: {
3366
- en: "Holistic Medicine"
3367
- },
3368
- INFORMATICS: {
3369
- en: "Informatics"
3370
- },
3371
- INTERNAL_MEDICINE: {
3372
- en: "Internal Medicine"
3373
- },
3374
- LABOR_AND_DELIVERY: {
3375
- en: "Labor and Delivery"
3376
- },
3377
- MANUAL_THERAPY: {
3378
- en: "Manual Therapy"
3379
- },
3380
- MED_SURG: {
3381
- en: "Medical-Surgical"
3382
- },
3383
- MENTAL_HEALTH: {
3384
- en: "Mental Health"
3385
- },
3386
- NEPHROLOGY: {
3387
- en: "Nephrology"
3388
- },
3389
- NEUROLOGY: {
3390
- en: "Neurology"
3391
- },
3392
- ONCOLOGY: {
3393
- en: "Oncology"
3394
- },
3395
- ORTHOPEDICS: {
3396
- en: "Orthopedics"
3397
- },
3398
- OTOLARYNGOLOGY: {
3399
- en: "Otolaryngology"
3400
- },
3401
- PEDIATRICS: {
3402
- en: "Pediatrics"
3403
- },
3404
- PHYSICAL_AND_REHABILITATION_MEDICINE: {
3405
- en: "Physical and Rehabilitation Medicine"
3406
- },
3407
- PLASTIC_SURGERY: {
3408
- en: "Plastic Surgery"
3409
- },
3410
- PRIMARY_CARE: {
3411
- en: "Primary Care"
3412
- },
3413
- PSYCHIATRY: {
3414
- en: "Psychiatry"
3415
- },
3416
- PULMONOLOGY: {
3417
- en: "Pulmonology"
3418
- },
3419
- RADIOLOGY: {
3420
- en: "Radiology"
3421
- },
3422
- SENSORY: {
3423
- en: "Sensory"
3424
- },
3425
- SPORTS: {
3426
- en: "Sports"
3427
- },
3428
- SURGERY: {
3429
- en: "Surgery"
3430
- },
3431
- TRANSPLANT_SURGERY: {
3432
- en: "Transplant Surgery"
3433
- },
3434
- TRAUMA_MEDICINE: {
3435
- en: "Trauma Medicine"
3436
- },
3437
- URGENT_CARE: {
3438
- en: "Urgent Care"
3439
- },
3440
- UROLOGY: {
3441
- en: "Urology"
3442
- },
3443
- VISION: {
3444
- en: "Vision"
3445
- },
3446
- WOMENS_HEALTH: {
3447
- en: "Women's Health"
3448
- },
3449
- WOUND_AND_BURN_CARE: {
3450
- en: "Wound and Burn Care"
3451
- },
3452
- WOUND_MANAGEMENT: {
3453
- en: "Wound Management"
3454
- }
3455
- };
3456
- var shiftDisplayText = {
3457
- TEN_HOUR: {
3458
- en: "10 Hour"
3459
- },
3460
- TWELVE_HOUR: {
3461
- en: "12 Hour"
3462
- },
3463
- EIGHT_HOUR: {
3464
- en: "8 Hour"
3465
- },
3466
- DAY: {
3467
- en: "Day"
3468
- },
3469
- EVENING: {
3470
- en: "Evening"
3471
- },
3472
- FLEXIBLE: {
3473
- en: "Flexible"
3474
- },
3475
- MID_SHIFT: {
3476
- en: "Mid Shift"
3477
- },
3478
- MONDAY_TO_FRIDAY: {
3479
- en: "Monday to Friday"
3480
- },
3481
- NIGHT: {
3482
- en: "Night"
3483
- },
3484
- ON_CALL: {
3485
- en: "On Call"
3486
- },
3487
- WEEKENDS: {
3488
- en: "Weekends"
3489
- }
3490
- };
3491
- var clinicalSettingDisplayText = {
3492
- ACUTE_CARE: {
3493
- en: "Acute Care"
3494
- },
3495
- AMBULATORY_SURGERY_CENTER: {
3496
- en: "Ambulatory Surgery Center"
3497
- },
3498
- CLINIC: {
3499
- en: "Clinic"
3500
- },
3501
- HOME_HEALTH: {
3502
- en: "Home Health"
3503
- },
3504
- HOSPITAL: {
3505
- en: "Hospital"
3506
- },
3507
- INPATIENT: {
3508
- en: "Inpatient"
3509
- },
3510
- LONG_TERM_CARE: {
3511
- en: "Long Term Care"
3512
- },
3513
- MED_SPA: {
3514
- en: "Med Spa"
3515
- },
3516
- NURSING_HOME: {
3517
- en: "Nursing Home"
3518
- },
3519
- OFFICE: {
3520
- en: "Office"
3521
- },
3522
- OUTPATIENT: {
3523
- en: "Outpatient"
3524
- },
3525
- PRIVATE_PRACTICE: {
3526
- en: "Private Practice"
3527
- },
3528
- REHAB_CENTER: {
3529
- en: "Rehab Center"
3530
- },
3531
- SCHOOL: {
3532
- en: "School"
3533
- },
3534
- SKILLED_NURSING_FACILITY: {
3535
- en: "Skilled Nursing Facility"
3536
- }
3537
- };
3538
- var defaultMappings = {
3539
- employmentType: employmentTypeDisplayText,
3540
- unitText: unitTextDisplayText,
3541
- currency: currencyDisplayText,
3542
- employmentLevel: employmentLevelDisplayText,
3543
- jobFunction: jobFunctionDisplayText,
3544
- bestFit: bestFitDisplayText,
3545
- clinicalSpecialty: clinicalSpecialtyDisplayText,
3546
- clinicalSetting: clinicalSettingDisplayText,
3547
- shift: shiftDisplayText
3548
- };
3549
-
3550
- // src/types/displayText.errors.tsx
3551
- var DisplayTextScopeNotFoundError = class extends Error {
3552
- constructor(scope) {
3553
- super(`No display text mapping found for scope: ${scope}`);
3554
- this.name = "DisplayTextScopeNotFoundError";
3555
- }
3556
- };
3557
- var DisplayTextValueNotFoundError = class extends Error {
3558
- constructor(value, scope) {
3559
- super(`No display text found for value: '${value}' in scope: '${scope}'`);
3560
- this.name = "DisplayTextValueNotFoundError";
3561
- }
3562
- };
3563
-
3564
- // src/services/displayText.tsx
3565
- var DisplayTextService = class {
3566
- constructor(customMappings) {
3567
- this.defaultLanguage = "en";
3568
- this.mappings = {
3569
- ...defaultMappings,
3570
- // Use all pre-defined mappings as defaults
3571
- ...customMappings
3572
- // Override with any custom mappings if provided
3573
- };
3574
- }
3575
- async getDisplayText(scope, value, language = this.defaultLanguage) {
3576
- const scopeMapping = this.mappings[scope];
3577
- if (!scopeMapping) {
3578
- throw new DisplayTextScopeNotFoundError(scope);
3579
- }
3580
- if (Array.isArray(value)) {
3581
- const displayTextPromises = value.map((v) => this.getDisplayText(scope, v, language));
3582
- const displayTexts2 = await Promise.all(displayTextPromises);
3583
- return displayTexts2.filter((v) => !!v).join(", ");
3584
- }
3585
- const displayTexts = scopeMapping[value];
3586
- if (!displayTexts) {
3587
- throw new DisplayTextValueNotFoundError(value, scope);
3588
- }
3589
- return displayTexts[language] || displayTexts[this.defaultLanguage] || value;
3590
- }
3591
- };
3592
-
3593
- // src/hooks/useDisplayText.ts
3594
- var useDisplayText = (scope, value) => {
3595
- const [displayText, setDisplayText] = useState10("");
3596
- const displayService = useMemo4(() => new DisplayTextService(), []);
3597
- useEffect10(() => {
3598
- if (!displayService || !value) {
3599
- setDisplayText("");
3600
- return;
3601
- }
3602
- void (async () => {
3603
- try {
3604
- const result = await displayService.getDisplayText(scope, value);
3605
- if (typeof result === "string") {
3606
- setDisplayText(result);
3607
- } else {
3608
- console.error("Expected a string result, but got:", result);
3609
- }
3610
- } catch (error) {
3611
- if (error instanceof DisplayTextValueNotFoundError) {
3612
- console.warn("Display text value not found:", value);
3613
- setDisplayText(String(value));
3614
- } else {
3615
- console.error("Unexpected error formatting text:", error);
3616
- setDisplayText(String(value));
3617
- }
3618
- }
3619
- })();
3620
- }, [scope, value, displayService]);
3621
- return displayText;
3622
- };
3623
-
3624
- // src/lib/locations.ts
3625
- function formattedAddress(address, isRemote = false) {
3626
- if (!address) return null;
3627
- const { addressLocality, addressRegion, addressCountry } = address;
3628
- const remoteMessage = isRemote ? " | Remote" : "";
3629
- if (addressLocality && addressRegion)
3630
- return `${addressLocality}, ${addressRegion + remoteMessage}`;
3631
- if (addressRegion && addressCountry) return `${addressRegion}, ${addressCountry + remoteMessage}`;
3632
- if (addressRegion) return `${addressRegion + remoteMessage}`;
3633
- if (addressCountry) return `${addressCountry + remoteMessage}`;
3634
- return null;
3635
- }
3636
- function getAddressList(jobPost) {
3637
- const locations = [];
3638
- if (jobPost.jobLocation) {
3639
- const address = formattedAddress(jobPost.jobLocation, jobPost.isRemote);
3640
- if (address) locations.push(address);
3641
- }
3642
- if (jobPost.applicableOffices && jobPost.applicableOffices.length > 0) {
3643
- jobPost.applicableOffices.map((office) => {
3644
- const address = formattedAddress(office?.geoLocation?.address, jobPost.isRemote);
3645
- if (address && !locations.includes(address)) locations.push(address);
3646
- });
3647
- }
3648
- if (jobPost.applicantLocationRequirements && jobPost.applicantLocationRequirements.length > 0) {
3649
- jobPost.applicantLocationRequirements.map((place) => {
3650
- const address = formattedAddress(place?.address, jobPost.isRemote);
3651
- if (address && !locations.includes(address)) locations.push(address);
3652
- });
3653
- }
3654
- return locations;
3655
- }
3656
-
3657
- // src/components/jobPost/JobPost.tsx
3658
- function JobPost({
3659
- job,
3660
- bannerSrc,
3661
- avatarSrc,
3662
- standalone,
3663
- avatarHref,
3664
- fallbackHref,
3665
- backAcceptedRoutes,
3666
- actions
3667
- }) {
3668
- const formattedEmploymentType = useDisplayText("employmentType", job.employmentType);
3669
- const formattedEmploymentLevel = useDisplayText("employmentLevel", job.employmentLevel);
3670
- const formattedJobFunction = useDisplayText("jobFunction", job.jobFunction);
3671
- const formattedLocations = getAddressList(job);
3672
- const formattedSalary = salaryRange(job.estimatedSalary);
3673
- const formattedDate = DateFns.formatDistanceToNow(new Date(job.datePosted), {
3674
- addSuffix: true
3675
- });
3676
- const tags = [
3677
- !!formattedSalary && {
3678
- icon: "banknote",
3679
- name: "salary",
3680
- label: formattedSalary
3681
- },
3682
- !!formattedEmploymentType && {
3683
- icon: "briefcase-business",
3684
- name: "employmentType",
3685
- label: formattedEmploymentType
3686
- },
3687
- !!formattedEmploymentLevel && {
3688
- icon: "circle-user",
3689
- name: "level",
3690
- label: formattedEmploymentLevel
3691
- },
3692
- !!formattedJobFunction && {
3693
- icon: "briefcase-business",
3694
- name: "jobFunction",
3695
- label: formattedJobFunction
3696
- },
3697
- ...formattedLocations.map((label) => ({
3698
- icon: "map-pin",
3699
- name: "location",
3700
- label
3701
- }))
3702
- ].filter((t) => !!t);
3703
- return /* @__PURE__ */ React.createElement(
3704
- "div",
3705
- {
3706
- className: cn(
3707
- "flex flex-col gap-10 pb-4",
3708
- !standalone && "border-1 rounded-3xl border-grey-5"
3709
- )
3710
- },
3711
- /* @__PURE__ */ React.createElement(
3712
- JobHeader,
3713
- {
3714
- title: job.title,
3715
- bannerSrc,
3716
- avatarName: job.hiringOrganization?.companyName,
3717
- avatarSrc: job.hiringOrganization?.logo?.asset?.url,
3718
- subtitles: [job.hiringOrganization?.companyName ?? "", `Posted ${formattedDate}`],
3719
- actions,
3720
- standalone,
3721
- avatarHref,
3722
- backFallbackHref: fallbackHref,
3723
- backAcceptedRoutes,
3724
- tags
3725
- }
3726
- ),
3727
- /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-8 px-6" }, /* @__PURE__ */ React.createElement(JobDescription, { description: job.description }), /* @__PURE__ */ React.createElement(
3728
- CompanyTake,
3729
- {
3730
- avatarSrc,
3731
- content: job.hiringOrganization?.companyNDG?.companyNDGTake
3732
- }
3733
- ), /* @__PURE__ */ React.createElement(
3734
- CompanyInformation,
3735
- {
3736
- name: job.hiringOrganization?.companyName ?? "",
3737
- how: job.hiringOrganization?.companyPhilosophy?.companyHow,
3738
- mission: job.hiringOrganization?.companyPhilosophy?.companyMission,
3739
- wow: job.hiringOrganization?.companyNDG?.companyWow,
3740
- website: job.hiringOrganization?.companyWebsite
3741
- }
3742
- ), /* @__PURE__ */ React.createElement(
3743
- CompanyBenefits,
3744
- {
3745
- benefits: job.hiringOrganization?.companyCareers?.companyBenefits?.map((b) => b.title).filter((d) => d !== void 0)
3746
- }
3747
- ))
3748
- );
3749
- }
3750
-
3751
- // src/components/jobCard/JobLocation.tsx
3752
- import { MapPin as MapPin2 } from "lucide-react";
3753
- function JobLocation({ jobPost }) {
3754
- const locations = getAddressList(jobPost);
3755
- if (!locations || locations.length === 0) return null;
3756
- const primaryOffice = locations[0];
3757
- const extendedLocations = locations.slice(1).map((address) => address);
3758
- return /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2", "data-testid": "job-location-element" }, /* @__PURE__ */ React.createElement(MapPin2, { size: 16 }), /* @__PURE__ */ React.createElement("span", { className: "text-sm font-thin" }, primaryOffice), extendedLocations.length > 0 && /* @__PURE__ */ React.createElement(TooltipProvider, null, /* @__PURE__ */ React.createElement(Tooltip, null, /* @__PURE__ */ React.createElement(TooltipTrigger, null, /* @__PURE__ */ React.createElement(
3759
- Chip_default,
3760
- {
3761
- className: "font-bold",
3762
- size: "small",
3763
- variant: "jobLocation",
3764
- "data-testid": "job-location-tooltip"
3765
- },
3766
- "+ ",
3767
- extendedLocations.length,
3768
- " more"
3769
- )), /* @__PURE__ */ React.createElement(
3770
- TooltipContent,
3771
- {
3772
- className: "border-1 rounded-md border border-grey-5 bg-white p-2",
3773
- "data-testid": "job-location-tooltip-content"
3774
- },
3775
- extendedLocations.map((location) => /* @__PURE__ */ React.createElement("div", { key: location, className: "text-nowrap text-sm" }, location))
3776
- ))));
3777
- }
3778
-
3779
- // src/types/data/company_service_latest.ts
3780
- var company_service_latest_exports2 = {};
3781
- __export(company_service_latest_exports2, {
3782
- CategoryEnum: () => CategoryEnum2,
3783
- OfficeTypeEnum: () => OfficeTypeEnum2,
3784
- PublishStatusEnum: () => PublishStatusEnum3,
3785
- TitleEnum: () => TitleEnum2,
3786
- TypeEnum: () => TypeEnum5,
3787
- companyBenefitsSchema: () => companyBenefitsSchema2,
3788
- companyCareersSchema: () => companyCareersSchema3,
3789
- companyNdgSchema: () => companyNdgSchema3,
3790
- companyPhilosophySchema: () => companyPhilosophySchema3,
3791
- companySchema: () => companySchema3,
3792
- foundingInformationSchema: () => foundingInformationSchema3,
3793
- industrySchema: () => industrySchema2,
3794
- jobBoardSchema: () => jobBoardSchema2,
3795
- ngdMetadataSchema: () => ngdMetadataSchema3,
3796
- officeSchema: () => officeSchema2,
3797
- personSchema: () => personSchema2,
3798
- socialMediaSchema: () => socialMediaSchema2
3799
- });
3800
- import { z as z8 } from "zod";
3801
-
3802
- // src/types/data/shared_pickle_output_latest.ts
3803
- var shared_pickle_output_latest_exports2 = {};
3804
- __export(shared_pickle_output_latest_exports2, {
3805
- CurrencyEnum: () => CurrencyEnum3,
3806
- DetailLevelEnum: () => DetailLevelEnum2,
3807
- TypeEnum: () => TypeEnum4,
3808
- UnitTextEnum: () => UnitTextEnum2,
3809
- imageAssetSchema: () => imageAssetSchema2,
3810
- imageSchema: () => imageSchema2,
3811
- monetaryAmountSchema: () => monetaryAmountSchema3,
3812
- placeSchema: () => placeSchema2,
3813
- postalAddressSchema: () => postalAddressSchema3,
3814
- quantitativeValueSchema: () => quantitativeValueSchema3
3815
- });
3816
- import { z as z7 } from "zod";
3817
- var TypeEnum4 = z7.enum(["IMAGE"]);
3818
- var DetailLevelEnum2 = z7.enum(["COUNTRY", "GEO", "LOCALITY", "POSTAL_CODE", "REGION"]);
3819
- var UnitTextEnum2 = z7.enum(["DAY", "HOUR", "MONTH", "PER_ACTIVITY", "WEEK", "YEAR"]);
3820
- var CurrencyEnum3 = z7.enum(["EUR", "GBP", "USD"]);
3821
- var postalAddressSchema3 = z7.object({
3822
- version: z7.literal("1.0.0").default("1.0.0"),
3823
- type: z7.string().describe("Document type used for schema"),
3824
- addressCountry: z7.string().describe("The physical country as defined in ISO 3166 Alpha-2"),
3825
- addressRegion: z7.optional(z7.string()).describe("The region in which the locality is, and which is in the country."),
3826
- addressLocality: z7.optional(z7.string()).describe("The locality in which the street address is, and which is in the region. In the US this would be city."),
3827
- streetAddress: z7.optional(z7.string()).describe("The street name of the address within the locality."),
3828
- streetNumber: z7.optional(z7.string()).describe("The house of building number within the street."),
3829
- postalCode: z7.optional(z7.string()).describe("The postal code"),
3830
- description: z7.optional(z7.string()).describe("A descriptive string containing the full address.")
3831
- });
3832
- var placeSchema2 = z7.object({
3833
- version: z7.literal("1.0.0").default("1.0.0"),
3834
- detailLevel: z7.optional(DetailLevelEnum2),
3835
- latitude: z7.optional(z7.number()).describe("The latitude of a location."),
3836
- longitude: z7.optional(z7.number()).describe("The longitude of a location."),
3837
- address: z7.optional(postalAddressSchema3).describe("The physical place of the location")
3838
- });
3839
- var quantitativeValueSchema3 = z7.object({
3840
- version: z7.literal("1.0.0").default("1.0.0"),
3841
- type: z7.string().describe("Document type used for schema"),
3842
- value: z7.optional(z7.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."),
3843
- minValue: z7.optional(z7.number()).describe("The single minium value in a range for a quantitative_value, requires a maximum value."),
3844
- maxValue: z7.optional(z7.number()).describe("The maximum value in a range for a quantitative_value, requires a minimum value."),
3845
- unitText: UnitTextEnum2
3846
- });
3847
- var monetaryAmountSchema3 = z7.object({
3848
- version: z7.literal("1.0.0").default("1.0.0"),
3849
- type: z7.string().describe("Document type used for schema"),
3850
- singleValue: z7.optional(z7.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."),
3851
- minValue: z7.optional(z7.number()).describe("The annualized single minium value in a range for a quantitative_value. Deprecated use value.minValue"),
3852
- maxValue: z7.optional(z7.number()).describe("The annualized maximum value in a range for a quantitative_value. Deprecated use value.maxValue"),
3853
- value: z7.optional(quantitativeValueSchema3).describe("The quantitative_value for a given salary"),
3854
- currency: z7.optional(CurrencyEnum3)
3855
- });
3856
- var imageAssetSchema2 = z7.object({
3857
- version: z7.literal("1.0.0").default("1.0.0"),
3858
- altText: z7.optional(z7.string()).describe("The alt text for the image"),
3859
- assetId: z7.optional(z7.string()).describe("The asset ID for the image"),
3860
- description: z7.optional(z7.string()).describe("The description for the image"),
3861
- extension: z7.optional(z7.string()).describe("The extension for the image"),
3862
- label: z7.optional(z7.string()).describe("The label for the image"),
3863
- mimeType: z7.optional(z7.string()).describe("The mime type for the image"),
3864
- originalFilename: z7.optional(z7.string()).describe("The original filename for the image"),
3865
- path: z7.optional(z7.string()).describe("The path for the image"),
3866
- sha1Hash: z7.optional(z7.string()).describe("The SHA1 hash for the image"),
3867
- size: z7.optional(z7.number()).describe("The size for the image"),
3868
- title: z7.optional(z7.string()).describe("The title for the image"),
3869
- uploadId: z7.optional(z7.string()).describe("The upload ID for the image"),
3870
- url: z7.optional(z7.string()).describe("The URL for the image")
3871
- });
3872
- var imageSchema2 = z7.object({
3873
- version: z7.literal("1.0.0").default("1.0.0"),
3874
- type: z7.string().describe("Document type used for schema"),
3875
- asset: z7.optional(imageAssetSchema2).describe("The asset for the image")
3876
- });
3877
-
3878
- // src/types/data/company_service_latest.ts
3879
- var TypeEnum5 = z8.enum(["OFFICE"]);
3880
- var CategoryEnum2 = z8.enum(["FINANCIAL", "HEALTH", "PROFESSIONAL_DEVELOPMENT", "WORK_LIFE_BALANCE"]);
3881
- var TitleEnum2 = z8.enum(["DMD", "JD", "MBA", "MD", "MHA", "MPH", "PT", "PH_D", "RN"]);
3882
- var PublishStatusEnum3 = z8.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
3883
- var OfficeTypeEnum2 = z8.enum(["BRANCH", "HEADQUARTERS", "SATELLITE"]);
3884
- var socialMediaSchema2 = z8.object({
3885
- version: z8.literal("1.0.0").default("1.0.0"),
3886
- url: z8.string().describe("The link to the social media platform"),
3887
- type: z8.string().describe("The type of social media link")
3888
- });
3889
- var companyBenefitsSchema2 = z8.object({
3890
- version: z8.literal("1.0.0").default("1.0.0"),
3891
- type: z8.string().describe("Document type used for schema"),
3892
- title: z8.string(),
3893
- description: z8.optional(z8.string()),
3894
- category: CategoryEnum2
3895
- });
3896
- var industrySchema2 = z8.lazy(() => z8.object({
3897
- version: z8.literal("1.0.0").default("1.0.0"),
3898
- type: z8.string().describe("Document type used for schema"),
3899
- name: z8.string(),
3900
- description: z8.optional(z8.string()).describe("A brief description of the industry"),
3901
- onetIndustryId: z8.optional(z8.string()).describe("ONET industry ID"),
3902
- parent: z8.optional(industrySchema2)
3903
- }));
3904
- var jobBoardSchema2 = z8.object({
3905
- version: z8.literal("1.0.0").default("1.0.0"),
3906
- type: z8.string().describe("Document type used for schema"),
3907
- name: z8.string().describe("The name of the job board"),
3908
- description: z8.string().describe("A brief description of the job board"),
3909
- logo: z8.optional(imageSchema2).describe("The logo of the job board"),
3910
- baseUrl: z8.optional(z8.string()).describe("The base URL of the job board")
3911
- });
3912
- var personSchema2 = z8.object({
3913
- version: z8.literal("1.0.0").default("1.0.0"),
3914
- type: z8.string().describe("Document type used for schema"),
3915
- firstName: z8.string().describe("The first name of the person"),
3916
- lastName: z8.string().describe("The last name of the person"),
3917
- title: z8.optional(z8.array(z8.string())).describe("The titles of the degree of the person"),
3918
- slug: z8.string().describe("person slug - should be familyname-givenname-title(s)"),
3919
- jobTitle: z8.optional(z8.string()).describe("The job title of the person"),
3920
- isDoctor: z8.optional(z8.boolean()).describe("Is the person a doctor"),
3921
- isMedical: z8.optional(z8.boolean()).describe("Are they of a medical background?"),
3922
- isScientist: z8.optional(z8.boolean()).describe("Are they a scientist?"),
3923
- image: z8.optional(imageSchema2).describe("The image of the person"),
3924
- email: z8.optional(z8.string()).describe("The email of the person"),
3925
- socialMedia: z8.optional(z8.array(socialMediaSchema2)).describe("The social media links of the person"),
3926
- telephone: z8.optional(z8.string()).describe("The telephone number of the person"),
3927
- url: z8.optional(z8.string()).describe("The URL of the person"),
3928
- address: z8.optional(placeSchema2).describe("The address of the person")
3929
- });
3930
- var companyCareersSchema3 = z8.object({
3931
- version: z8.literal("1.0.0").default("1.0.0"),
3932
- type: z8.string().describe("Document type used for schema"),
3933
- careersUrl: z8.string().describe("The URL of the company careers page"),
3934
- jobBoard: z8.optional(jobBoardSchema2),
3935
- jobBoardSlug: z8.optional(z8.array(z8.string())),
3936
- companyBenefits: z8.optional(z8.array(companyBenefitsSchema2)).describe("What are the specific benefits of that company. The benefit is generic.")
3937
- });
3938
- var companyPhilosophySchema3 = z8.object({
3939
- version: z8.literal("1.0.0").default("1.0.0"),
3940
- type: z8.string().describe("Document type used for schema"),
3941
- companyMission: z8.optional(z8.string()).describe("The mission statement of the company."),
3942
- companyHow: z8.optional(z8.string()).describe("How does the company achieve its mission"),
3943
- companyCulture: z8.optional(z8.array(z8.string())).describe("What are some of the culture aspects of this company?")
3944
- });
3945
- var companyNdgSchema3 = z8.object({
3946
- version: z8.literal("1.0.0").default("1.0.0"),
3947
- type: z8.string().describe("Document type used for schema"),
3948
- companyWow: z8.optional(z8.string()).describe("What is the wow of this company?"),
3949
- companyNDGTake: z8.optional(z8.string()).describe("What is the NDG POV on this company?"),
3950
- companyBestFit: z8.optional(z8.array(z8.string())),
3951
- companyInterests: z8.optional(z8.array(z8.string()))
3952
- });
3953
- var foundingInformationSchema3 = z8.object({
3954
- version: z8.literal("1.0.0").default("1.0.0"),
3955
- type: z8.string().describe("Document type used for schema"),
3956
- foundedDate: z8.optional(z8.string()),
3957
- foundedCountry: z8.optional(z8.string()),
3958
- foundedCity: z8.optional(z8.string()),
3959
- founders: z8.optional(z8.array(personSchema2))
3960
- });
3961
- var ngdMetadataSchema3 = z8.object({
3962
- version: z8.literal("1.0.0").default("1.0.0"),
3963
- type: z8.string().describe("Document type used for schema"),
3964
- lastScraped: z8.optional(z8.string()).describe("Date the last entity was scraped, if applicable"),
3965
- scraperVersion: z8.optional(z8.string()),
3966
- postProcessorVersion: z8.optional(z8.string()),
3967
- uniqueRunId: z8.optional(z8.string()),
3968
- postProcessorUniqueRunId: z8.optional(z8.string()),
3969
- isScrapeManaged: z8.optional(z8.boolean()).default(true)
3970
- });
3971
- var companySchema3 = z8.object({
3972
- version: z8.literal("1.0.0").default("1.0.0"),
3973
- id: z8.string().describe("The NDG specific id for a company. Cannot be changed."),
3974
- createdAt: z8.string().datetime().describe("Time document was created. Autoset by Sanity"),
3975
- updatedAt: z8.string().datetime().describe("Time document was created. Autoset by Sanity"),
3976
- companyName: z8.string().describe("The name of the company"),
3977
- slug: z8.string().describe("The NDG specific slug for a company."),
3978
- type: z8.string().describe("Document type used for schema"),
3979
- logo: z8.optional(imageSchema2).describe("The logo of the company"),
3980
- companyWebsite: z8.optional(z8.string()).describe("The website of the company"),
3981
- socialMedia: z8.optional(z8.array(socialMediaSchema2)).describe("The social media links of the company"),
3982
- brandColor: z8.optional(z8.string()).describe("The brand color of the company"),
3983
- companyCareers: z8.optional(companyCareersSchema3).describe("Career Specific Information for the company."),
3984
- companyPhilosophy: z8.optional(companyPhilosophySchema3).describe("Company mission,values and how the company achieves its mission."),
3985
- companyNDG: z8.optional(companyNdgSchema3).describe("Next Degree specific information for the company."),
3986
- foundingInfo: z8.optional(foundingInformationSchema3),
3987
- headquartersLocation: z8.optional(placeSchema2),
3988
- employeeEstimate: z8.optional(z8.string()),
3989
- publishStatus: z8.optional(z8.string()),
3990
- ngdMetadata: z8.optional(ngdMetadataSchema3)
3991
- });
3992
- var officeSchema2 = z8.object({
3993
- version: z8.literal("1.0.0").default("1.0.0"),
3994
- type: z8.string().describe("Document type used for schema"),
3995
- name: z8.string().describe("Name or nickname for the office (e.g., 'NYC HQ', 'West Coast Branch')"),
3996
- officeType: OfficeTypeEnum2,
3997
- companyId: z8.optional(companySchema3),
3998
- geoLocation: z8.optional(placeSchema2).describe("Geographical location details: coordinates + postal address"),
3999
- createdAt: z8.optional(z8.string()),
4000
- updatedAt: z8.optional(z8.string())
4001
- });
4002
-
4003
- // src/types/data/job_posting_service_latest.ts
4004
- var job_posting_service_latest_exports2 = {};
4005
- __export(job_posting_service_latest_exports2, {
4006
- BestFitEnum: () => BestFitEnum2,
4007
- ClinicalLicenseEnum: () => ClinicalLicenseEnum2,
4008
- ClinicalSettingEnum: () => ClinicalSettingEnum2,
4009
- ClinicalSpecialtyEnum: () => ClinicalSpecialtyEnum2,
4010
- EmploymentLevelEnum: () => EmploymentLevelEnum2,
4011
- EmploymentTypeEnum: () => EmploymentTypeEnum2,
4012
- JobFunctionEnum: () => JobFunctionEnum2,
4013
- JobLocationTypeEnum: () => JobLocationTypeEnum2,
4014
- PublishStatusEnum: () => PublishStatusEnum4,
4015
- ShiftEnum: () => ShiftEnum2,
4016
- TypeEnum: () => TypeEnum6,
4017
- jobPostSchema: () => jobPostSchema3
4018
- });
4019
- import { z as z9 } from "zod";
4020
- var TypeEnum6 = z9.enum(["JOB_POST"]);
4021
- var JobLocationTypeEnum2 = z9.enum(["FLOAT", "HYBRID", "ONSITE", "REMOTE"]);
4022
- var EmploymentTypeEnum2 = z9.enum(["CONTRACT", "FULL_TIME", "INTERNSHIP", "OTHER", "PART_TIME", "PER_DIEM", "TEMPORARY"]);
4023
- var EmploymentLevelEnum2 = z9.enum(["DIRECTOR", "ENTRY_LEVEL", "EXECUTIVE", "EXPERIENCED", "INTERN", "MANAGER"]);
4024
- var JobFunctionEnum2 = z9.enum(["CLINICAL_RESEARCH", "CUSTOMER_SUCCESS", "DATA_ANALYTICS", "FINANCE_AND_AUDIT", "MARKETING", "OPERATIONS", "PEOPLE_HUMAN_RESOURCES", "PRODUCT_AND_TECH", "QUALITY_ASSURANCE_AND_OUTCOMES", "SALES_AND_BUSINESS_DEVELOPMENT", "STRATEGY_AND_CONSULTING"]);
4025
- var PublishStatusEnum4 = z9.enum(["DRAFT", "IN_REVIEW", "PUBLISHED", "REMOVED"]);
4026
- var BestFitEnum2 = z9.enum(["DENTIST", "DIETICIAN", "DOULA", "MEDICAL_ASSISTANT", "MIDWIFE", "NURSE", "OCCUPATIONAL_THERAPIST", "PHARMACIST", "PHYSICAL_THERAPIST", "PHYSICIAN", "PHYSICIAN_ASSISTANT", "PSYCHOLOGIST", "RADIOLOGIST", "SOCIAL_WORKER", "SPEECH_LANGUAGE_PATHOLOGIST", "SURGEON"]);
4027
- var ClinicalLicenseEnum2 = z9.enum(["CNA", "CNM", "CNS", "COTA", "CRNA", "LPN", "LVN", "NP", "OT", "PT", "PTA", "RN"]);
4028
- var ShiftEnum2 = z9.enum(["DAY", "EIGHT_HOUR", "EVENING", "FLEXIBLE", "MID_SHIFT", "MONDAY_TO_FRIDAY", "NIGHT", "ON_CALL", "TEN_HOUR", "TWELVE_HOUR", "WEEKENDS"]);
4029
- var ClinicalSettingEnum2 = z9.enum(["ACUTE_CARE", "AMBULATORY_SURGERY_CENTER", "CLINIC", "HOME_HEALTH", "HOSPITAL", "INPATIENT", "LONG_TERM_CARE", "MED_SPA", "NURSING_HOME", "OFFICE", "OUTPATIENT", "PRIVATE_PRACTICE", "REHAB_CENTER", "SCHOOL", "SKILLED_NURSING_FACILITY"]);
4030
- var ClinicalSpecialtyEnum2 = z9.enum(["ANESTHESIOLOGY", "CARDIOLOGY", "CASE_MANAGEMENT", "CHRONIC_PAIN", "CLINICAL_ELECTROPHYSIOLOGY", "CRITICAL_AND_ACUTE_CARE", "DERMATOLOGY", "DIALYSIS", "EMERGENCY_MEDICINE", "ENDOCRINOLOGY", "ERGONOMICS", "FEEDING_EATING_AND_SWALLOWING", "GASTROENTEROLOGY", "GERIATRICS", "HAND_THERAPY", "HEMATOLOGY", "HOLISTIC_MEDICINE", "INFORMATICS", "INTERNAL_MEDICINE", "LABOR_AND_DELIVERY", "MANUAL_THERAPY", "MED_SURG", "MENTAL_HEALTH", "NEPHROLOGY", "NEUROLOGY", "ONCOLOGY", "ORTHOPEDICS", "OTOLARYNGOLOGY", "PEDIATRICS", "PHYSICAL_AND_REHABILITATION_MEDICINE", "PLASTIC_SURGERY", "PRIMARY_CARE", "PSYCHIATRY", "PULMONOLOGY", "RADIOLOGY", "SENSORY", "SPORTS", "SURGERY", "TRAUMA_MEDICINE", "URGENT_CARE", "UROLOGY", "VISION", "WOMENS_HEALTH", "WOUND_AND_BURN_CARE"]);
4031
- var jobPostSchema3 = z9.object({
4032
- version: z9.literal("1.0.0").default("1.0.0"),
4033
- id: z9.string().describe("The NDG specific id for a job posting in form of ndg-<company_slug>-<unique-job-id>. Serves as unique identifier. Cannot be changed."),
4034
- type: z9.string().describe("Document type used for schema"),
4035
- createdAt: z9.string().datetime().describe("Time document was created. Autoset by Sanity"),
4036
- updatedAt: z9.string().datetime().describe("Time document was created. Autoset by Sanity"),
4037
- dateAdded: z9.optional(z9.string().datetime()).describe("The date the job was added to the platform"),
4038
- datePosted: z9.optional(z9.string().datetime()).describe("The date the job was published for public viewing"),
4039
- dateRemoved: z9.optional(z9.string().datetime()).describe("The date the job was removed from public viewing"),
4040
- validThrough: z9.optional(z9.string().datetime()).describe("The date the job posting is valid through. After this date it will be removed from public viewing"),
4041
- vacancyCount: z9.optional(z9.number().int()).describe("The number of vacancies for a given job posting"),
4042
- clientId: z9.string().describe("The ID assigned by the client to a job - normally the same as the GH / Lever / Ashby ID or internal ID"),
4043
- url: z9.string().describe("The URL of the job to be displayed for users to apply with. Direct job link."),
4044
- title: z9.string().describe("The title of the job post"),
4045
- description: z9.string().describe("The description of the job post saved as markdown. Used for rendering the job description."),
4046
- richTextDescription: z9.optional(z9.string()).describe("The description of the job post saved as rich text"),
4047
- isClinical: z9.boolean().default(false).describe("Denotes if a job posting is clinical in nature or not. A role is clinical if it requires direct clinical patient care."),
4048
- isRemote: z9.boolean().default(false).describe("Denotes if a job posting is remote in nature. For a posting to be 'remote' it must be 100% remote (e.g hybrid roles would denote this to false)."),
4049
- isVerified: z9.boolean().default(false).describe("Denotes if a job posting has been manually verified - and thus ALL fields can be considered accurate. Can be used for DS training."),
4050
- isDirectApply: z9.boolean().default(false).describe("Denotes if a job posting url is direct apply. To be direct apply a user must be able to apply to the role without logging in and under 2 clicks."),
4051
- jobLocationType: z9.optional(z9.array(JobLocationTypeEnum2)),
4052
- employmentType: z9.optional(z9.array(EmploymentTypeEnum2)),
4053
- employmentLevel: z9.optional(EmploymentLevelEnum2),
4054
- jobFunction: z9.optional(JobFunctionEnum2),
4055
- publishStatus: PublishStatusEnum4,
4056
- bestFit: z9.optional(z9.array(BestFitEnum2)),
4057
- clinicalLicense: z9.optional(z9.array(ClinicalLicenseEnum2)),
4058
- shift: z9.optional(z9.array(ShiftEnum2)),
4059
- clinicalSetting: z9.optional(z9.array(ClinicalSettingEnum2)),
4060
- clinicalSpecialty: z9.optional(z9.array(ClinicalSpecialtyEnum2)),
4061
- estimatedSalary: z9.optional(monetaryAmountSchema3).describe("Determines the estimated salary for a given job posting"),
4062
- jobLocation: z9.optional(postalAddressSchema3).describe("Determines the primary physical location where the job is to be performed. For remote roles, use applicantLocationRequirements"),
4063
- applicableOffices: z9.optional(z9.array(officeSchema2)).describe("The physical location(s) in which employees may be located for to be eligible for the job. Used in conjunction with job_location_type."),
4064
- applicantLocationRequirements: z9.optional(z9.array(placeSchema2)).describe("The geographic location(s) in which employees may be located for to be eligible for the job. The job description must clearly state that the applicant may be located in certain geographical location(s). This property is required if applicants may be located in one or more geographic locations and the job is 100% remote."),
4065
- hiringOrganization: z9.optional(companySchema3).describe("The organization that is hiring for the role")
4066
- });
4067
- export {
4068
- Avatar,
4069
- BackButton,
4070
- Badge,
4071
- Button,
4072
- Checkbox,
4073
- Chip_default as Chip,
4074
- Combobox,
4075
- CompanyBenefits,
4076
- CompanyInformation,
4077
- company_service_latest_exports2 as CompanyService,
4078
- CompanyTake,
4079
- Counter,
4080
- DatePicker,
4081
- DismissibleBanner,
4082
- Icon,
4083
- Input_default as Input,
4084
- InputOtp,
4085
- JobDescription,
4086
- JobHeader,
4087
- JobLocation,
4088
- JobPost,
4089
- job_posting_service_latest_exports2 as JobPostService,
4090
- Label_default as Label,
4091
- LinkButton,
4092
- ListItem_default as ListItem,
4093
- MapComponent,
4094
- PlacesQueryInput_default as PlacesQueryInput,
4095
- Radio,
4096
- ReadMore,
4097
- Select_default as Select,
4098
- shared_pickle_output_latest_exports2 as SharedService,
4099
- StepTabs,
4100
- Switch,
4101
- WindowHistoryProvider,
4102
- cn,
4103
- fetchLocation,
4104
- salaryRange,
4105
- useDisplayText,
4106
- useWindowHistory
4107
- };
1
+ import './chunk-VANX3AQD.js';
2
+ export { MapComponent } from './chunk-LQPOFYD3.js';
3
+ import './chunk-DGDBIRAA.js';
4
+ import './chunk-FSMBDLNU.js';
5
+ import './chunk-EAFZZSYR.js';
6
+ import './chunk-GRLH3A6S.js';
7
+ import './chunk-5H35ZVLR.js';
8
+ import './chunk-5Z4ILTRD.js';
9
+ import './chunk-PLL2MFTV.js';
10
+ import './chunk-LQQ244AY.js';
11
+ export { job_posting_service_latest_exports as JobPostService } from './chunk-4RVGUZNF.js';
12
+ export { company_service_latest_exports as CompanyService } from './chunk-4NEPWF3Z.js';
13
+ export { shared_pickle_output_latest_exports as SharedService } from './chunk-5RH3VTNV.js';
14
+ export { PlacesQueryInput_default as PlacesQueryInput } from './chunk-4OJ7NEZU.js';
15
+ export { fetchLocation } from './chunk-U3D4LL6T.js';
16
+ export { Radio } from './chunk-WAZSWGCH.js';
17
+ export { Select_default as Select } from './chunk-ROBFZCJT.js';
18
+ export { StepTabs } from './chunk-NU2XENOZ.js';
19
+ export { Switch } from './chunk-JDAV6RWN.js';
20
+ export { DismissibleBanner } from './chunk-T7LYMPIA.js';
21
+ export { Input_default as Input } from './chunk-VM36U3TK.js';
22
+ export { InputOtp } from './chunk-WPH6SRZT.js';
23
+ export { Combobox } from './chunk-HEHLGQ2U.js';
24
+ export { ListItem_default as ListItem } from './chunk-GK3QI7HQ.js';
25
+ export { Badge } from './chunk-J5GVGJZA.js';
26
+ export { Checkbox } from './chunk-3VIRJK7I.js';
27
+ export { Counter } from './chunk-4KXEHU2Z.js';
28
+ export { DatePicker } from './chunk-XKKJHTSY.js';
29
+ import './chunk-G5ERI2MS.js';
30
+ import './chunk-4TP4NYO2.js';
31
+ export { Label_default as Label } from './chunk-UTPXIIHX.js';
32
+ import './chunk-WYSZMCAK.js';
33
+ import './chunk-T6O5RJA3.js';
34
+ import './chunk-D5CBPEAR.js';
35
+ import './chunk-RYAVZOGW.js';
36
+ import './chunk-325GPWFN.js';
37
+ import './chunk-7CKQ3FSB.js';
38
+ import './chunk-YUA4DBYT.js';
39
+ export { JobLocation } from './chunk-HVNR3VXM.js';
40
+ import './chunk-PNXBZYED.js';
41
+ export { JobPost } from './chunk-SBPJFFRB.js';
42
+ export { salaryRange } from './chunk-PLPEZUCB.js';
43
+ export { CompanyBenefits } from './chunk-PRZZF2EB.js';
44
+ export { CompanyInformation } from './chunk-U6G7EXM6.js';
45
+ export { LinkButton } from './chunk-HJYGNJD5.js';
46
+ export { CompanyTake } from './chunk-4IJ5TMHI.js';
47
+ import './chunk-KZBS5RNE.js';
48
+ export { JobDescription } from './chunk-K3653KJ6.js';
49
+ export { ReadMore } from './chunk-W4VQ5YRX.js';
50
+ export { Button } from './chunk-XFGURTBJ.js';
51
+ export { JobHeader } from './chunk-NHAD5YHP.js';
52
+ import './chunk-PONUWUJ7.js';
53
+ export { BackButton } from './chunk-DHB467LV.js';
54
+ export { Icon } from './chunk-AQ54YTF2.js';
55
+ export { Avatar } from './chunk-7VHZCQL3.js';
56
+ import './chunk-CIFWAE4A.js';
57
+ export { Chip_default as Chip } from './chunk-KR33HZBW.js';
58
+ export { cn } from './chunk-2FGZQI42.js';
59
+ import './chunk-KWIGG26N.js';
60
+ import './chunk-5REFGTWO.js';
61
+ import './chunk-I4H7XREK.js';
62
+ import './chunk-W6BMYVY5.js';
63
+ import './chunk-47H3M7TP.js';
64
+ import './chunk-FOJTLQJO.js';
65
+ import './chunk-Z33TWZHI.js';
66
+ export { useDisplayText } from './chunk-K76RPF2X.js';
67
+ import './chunk-4E3ANVRR.js';
68
+ import './chunk-TCV6N3EK.js';
69
+ import './chunk-YB2USB4M.js';
70
+ export { useWindowHistory } from './chunk-FMST4EVC.js';
71
+ export { WindowHistoryProvider } from './chunk-PB2N5UFC.js';
72
+ import './chunk-PZ5AY32C.js';
73
+ //# sourceMappingURL=index.js.map
4108
74
  //# sourceMappingURL=index.js.map