@next-degree/pickle-shared-js 0.13.0 → 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.
- package/dist/chunk-2FGZQI42.js +11 -0
- package/dist/chunk-2FGZQI42.js.map +1 -0
- package/dist/chunk-325GPWFN.js +24 -0
- package/dist/chunk-325GPWFN.js.map +1 -0
- package/dist/chunk-37YFXNLL.cjs +46 -0
- package/dist/chunk-37YFXNLL.cjs.map +1 -0
- package/dist/chunk-3BGXWNKI.cjs +26 -0
- package/dist/chunk-3BGXWNKI.cjs.map +1 -0
- package/dist/chunk-3CI6PTKT.cjs +82 -0
- package/dist/chunk-3CI6PTKT.cjs.map +1 -0
- package/dist/chunk-3PARXYUI.cjs +86 -0
- package/dist/chunk-3PARXYUI.cjs.map +1 -0
- package/dist/chunk-3VIRJK7I.js +63 -0
- package/dist/chunk-3VIRJK7I.js.map +1 -0
- package/dist/chunk-47H3M7TP.js +72 -0
- package/dist/chunk-47H3M7TP.js.map +1 -0
- package/dist/chunk-4E3ANVRR.js +35 -0
- package/dist/chunk-4E3ANVRR.js.map +1 -0
- package/dist/chunk-4GDAUTH4.cjs +112 -0
- package/dist/chunk-4GDAUTH4.cjs.map +1 -0
- package/dist/chunk-4IJ5TMHI.js +20 -0
- package/dist/chunk-4IJ5TMHI.js.map +1 -0
- package/dist/chunk-4KXEHU2Z.js +142 -0
- package/dist/chunk-4KXEHU2Z.js.map +1 -0
- package/dist/chunk-4NEPWF3Z.js +152 -0
- package/dist/chunk-4NEPWF3Z.js.map +1 -0
- package/dist/chunk-4OJ7NEZU.js +107 -0
- package/dist/chunk-4OJ7NEZU.js.map +1 -0
- package/dist/chunk-4RVGUZNF.js +72 -0
- package/dist/chunk-4RVGUZNF.js.map +1 -0
- package/dist/chunk-4TLLJ52E.cjs +28 -0
- package/dist/chunk-4TLLJ52E.cjs.map +1 -0
- package/dist/chunk-4TP4NYO2.js +41 -0
- package/dist/chunk-4TP4NYO2.js.map +1 -0
- package/dist/chunk-567FG76G.cjs +39 -0
- package/dist/chunk-567FG76G.cjs.map +1 -0
- package/dist/chunk-5H35ZVLR.js +43 -0
- package/dist/chunk-5H35ZVLR.js.map +1 -0
- package/dist/chunk-5H75FIY2.cjs +64 -0
- package/dist/chunk-5H75FIY2.cjs.map +1 -0
- package/dist/chunk-5QXQ2LBB.cjs +4 -0
- package/dist/chunk-5QXQ2LBB.cjs.map +1 -0
- package/dist/chunk-5REFGTWO.js +87 -0
- package/dist/chunk-5REFGTWO.js.map +1 -0
- package/dist/chunk-5RH3VTNV.js +81 -0
- package/dist/chunk-5RH3VTNV.js.map +1 -0
- package/dist/chunk-5Z4ILTRD.js +48 -0
- package/dist/chunk-5Z4ILTRD.js.map +1 -0
- package/dist/chunk-7CKQ3FSB.js +24 -0
- package/dist/chunk-7CKQ3FSB.js.map +1 -0
- package/dist/chunk-7VHZCQL3.js +30 -0
- package/dist/chunk-7VHZCQL3.js.map +1 -0
- package/dist/chunk-7X6S7GJK.cjs +11 -0
- package/dist/chunk-7X6S7GJK.cjs.map +1 -0
- package/dist/chunk-A46BJOVJ.cjs +71 -0
- package/dist/chunk-A46BJOVJ.cjs.map +1 -0
- package/dist/chunk-A7E5UPEP.cjs +36 -0
- package/dist/chunk-A7E5UPEP.cjs.map +1 -0
- package/dist/chunk-A7MLO6YN.cjs +109 -0
- package/dist/chunk-A7MLO6YN.cjs.map +1 -0
- package/dist/chunk-AB3775NI.cjs +93 -0
- package/dist/chunk-AB3775NI.cjs.map +1 -0
- package/dist/chunk-AMNEAWA7.cjs +59 -0
- package/dist/chunk-AMNEAWA7.cjs.map +1 -0
- package/dist/chunk-AQ54YTF2.js +80 -0
- package/dist/chunk-AQ54YTF2.js.map +1 -0
- package/dist/chunk-CDQM72QX.cjs +46 -0
- package/dist/chunk-CDQM72QX.cjs.map +1 -0
- package/dist/chunk-CIFWAE4A.js +39 -0
- package/dist/chunk-CIFWAE4A.js.map +1 -0
- package/dist/chunk-CUICNKLS.cjs +42 -0
- package/dist/chunk-CUICNKLS.cjs.map +1 -0
- package/dist/chunk-D5CBPEAR.js +67 -0
- package/dist/chunk-D5CBPEAR.js.map +1 -0
- package/dist/chunk-DGDBIRAA.js +118 -0
- package/dist/chunk-DGDBIRAA.js.map +1 -0
- package/dist/chunk-DHB467LV.js +34 -0
- package/dist/chunk-DHB467LV.js.map +1 -0
- package/dist/chunk-DU5OQA67.cjs +49 -0
- package/dist/chunk-DU5OQA67.cjs.map +1 -0
- package/dist/chunk-DVSHUNGT.cjs +49 -0
- package/dist/chunk-DVSHUNGT.cjs.map +1 -0
- package/dist/chunk-E5S6MGBJ.cjs +51 -0
- package/dist/chunk-E5S6MGBJ.cjs.map +1 -0
- package/dist/chunk-EAFZZSYR.js +69 -0
- package/dist/chunk-EAFZZSYR.js.map +1 -0
- package/dist/chunk-EBKY3MJH.cjs +72 -0
- package/dist/chunk-EBKY3MJH.cjs.map +1 -0
- package/dist/chunk-EG7G3RZ2.cjs +79 -0
- package/dist/chunk-EG7G3RZ2.cjs.map +1 -0
- package/dist/chunk-FMST4EVC.js +11 -0
- package/dist/chunk-FMST4EVC.js.map +1 -0
- package/dist/chunk-FOJTLQJO.js +152 -0
- package/dist/chunk-FOJTLQJO.js.map +1 -0
- package/dist/chunk-FRXKCHZ7.cjs +50 -0
- package/dist/chunk-FRXKCHZ7.cjs.map +1 -0
- package/dist/chunk-FSMBDLNU.js +34 -0
- package/dist/chunk-FSMBDLNU.js.map +1 -0
- package/dist/chunk-G5ERI2MS.js +59 -0
- package/dist/chunk-G5ERI2MS.js.map +1 -0
- package/dist/chunk-GK3QI7HQ.js +49 -0
- package/dist/chunk-GK3QI7HQ.js.map +1 -0
- package/dist/chunk-GN3JZCM3.cjs +99 -0
- package/dist/chunk-GN3JZCM3.cjs.map +1 -0
- package/dist/chunk-GP5XW2ZR.cjs +36 -0
- package/dist/chunk-GP5XW2ZR.cjs.map +1 -0
- package/dist/chunk-GQNVPLSG.cjs +44 -0
- package/dist/chunk-GQNVPLSG.cjs.map +1 -0
- package/dist/chunk-GRLH3A6S.js +40 -0
- package/dist/chunk-GRLH3A6S.js.map +1 -0
- package/dist/chunk-HCXPKYJR.cjs +37 -0
- package/dist/chunk-HCXPKYJR.cjs.map +1 -0
- package/dist/chunk-HEHLGQ2U.js +198 -0
- package/dist/chunk-HEHLGQ2U.js.map +1 -0
- package/dist/chunk-HJYGNJD5.js +27 -0
- package/dist/chunk-HJYGNJD5.js.map +1 -0
- package/dist/chunk-HMKEBIBE.cjs +14 -0
- package/dist/chunk-HMKEBIBE.cjs.map +1 -0
- package/dist/chunk-HVNR3VXM.js +34 -0
- package/dist/chunk-HVNR3VXM.js.map +1 -0
- package/dist/chunk-I4H7XREK.js +91 -0
- package/dist/chunk-I4H7XREK.js.map +1 -0
- package/dist/chunk-IHWVGIDT.cjs +86 -0
- package/dist/chunk-IHWVGIDT.cjs.map +1 -0
- package/dist/chunk-IVPCYGXE.cjs +20 -0
- package/dist/chunk-IVPCYGXE.cjs.map +1 -0
- package/dist/chunk-J5GVGJZA.js +23 -0
- package/dist/chunk-J5GVGJZA.js.map +1 -0
- package/dist/chunk-JDAV6RWN.js +26 -0
- package/dist/chunk-JDAV6RWN.js.map +1 -0
- package/dist/chunk-JZVRCP3M.cjs +411 -0
- package/dist/chunk-JZVRCP3M.cjs.map +1 -0
- package/dist/chunk-K3653KJ6.js +11 -0
- package/dist/chunk-K3653KJ6.js.map +1 -0
- package/dist/chunk-K76RPF2X.js +37 -0
- package/dist/chunk-K76RPF2X.js.map +1 -0
- package/dist/chunk-KH3K3OI4.cjs +86 -0
- package/dist/chunk-KH3K3OI4.cjs.map +1 -0
- package/dist/chunk-KR33HZBW.js +31 -0
- package/dist/chunk-KR33HZBW.js.map +1 -0
- package/dist/chunk-KWIGG26N.js +3 -0
- package/dist/chunk-KWIGG26N.js.map +1 -0
- package/dist/chunk-KZBS5RNE.js +41 -0
- package/dist/chunk-KZBS5RNE.js.map +1 -0
- package/dist/chunk-L4SZQQK6.cjs +171 -0
- package/dist/chunk-L4SZQQK6.cjs.map +1 -0
- package/dist/chunk-L56JW56Y.cjs +129 -0
- package/dist/chunk-L56JW56Y.cjs.map +1 -0
- package/dist/chunk-LQPOFYD3.js +47 -0
- package/dist/chunk-LQPOFYD3.js.map +1 -0
- package/dist/chunk-LQQ244AY.js +28 -0
- package/dist/chunk-LQQ244AY.js.map +1 -0
- package/dist/chunk-LRBADBNS.cjs +23 -0
- package/dist/chunk-LRBADBNS.cjs.map +1 -0
- package/dist/chunk-LUCDLADP.cjs +49 -0
- package/dist/chunk-LUCDLADP.cjs.map +1 -0
- package/dist/chunk-LUFPA3WC.cjs +93 -0
- package/dist/chunk-LUFPA3WC.cjs.map +1 -0
- package/dist/chunk-M3HMXHAL.cjs +266 -0
- package/dist/chunk-M3HMXHAL.cjs.map +1 -0
- package/dist/chunk-MDLLVPLD.cjs +35 -0
- package/dist/chunk-MDLLVPLD.cjs.map +1 -0
- package/dist/chunk-MGWZXPMF.cjs +13 -0
- package/dist/chunk-MGWZXPMF.cjs.map +1 -0
- package/dist/chunk-NHAD5YHP.js +134 -0
- package/dist/chunk-NHAD5YHP.js.map +1 -0
- package/dist/chunk-NLGWU2KI.cjs +36 -0
- package/dist/chunk-NLGWU2KI.cjs.map +1 -0
- package/dist/chunk-NU2XENOZ.js +90 -0
- package/dist/chunk-NU2XENOZ.js.map +1 -0
- package/dist/chunk-OC2OB575.cjs +200 -0
- package/dist/chunk-OC2OB575.cjs.map +1 -0
- package/dist/chunk-OT3J7XYM.cjs +120 -0
- package/dist/chunk-OT3J7XYM.cjs.map +1 -0
- package/dist/chunk-P7CAVAYY.cjs +198 -0
- package/dist/chunk-P7CAVAYY.cjs.map +1 -0
- package/dist/chunk-PB2N5UFC.js +20 -0
- package/dist/chunk-PB2N5UFC.js.map +1 -0
- package/dist/chunk-PLL2MFTV.js +26 -0
- package/dist/chunk-PLL2MFTV.js.map +1 -0
- package/dist/chunk-PLPEZUCB.js +42 -0
- package/dist/chunk-PLPEZUCB.js.map +1 -0
- package/dist/chunk-PNXBZYED.js +24 -0
- package/dist/chunk-PNXBZYED.js.map +1 -0
- package/dist/chunk-PONUWUJ7.js +29 -0
- package/dist/chunk-PONUWUJ7.js.map +1 -0
- package/dist/chunk-PRZZF2EB.js +9 -0
- package/dist/chunk-PRZZF2EB.js.map +1 -0
- package/dist/chunk-PSRWV7UW.cjs +50 -0
- package/dist/chunk-PSRWV7UW.cjs.map +1 -0
- package/dist/chunk-PZ5AY32C.js +9 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-Q7SFCCGT.cjs +11 -0
- package/dist/chunk-Q7SFCCGT.cjs.map +1 -0
- package/dist/chunk-QDSCHWM3.cjs +64 -0
- package/dist/chunk-QDSCHWM3.cjs.map +1 -0
- package/dist/chunk-QNVDG3L3.cjs +171 -0
- package/dist/chunk-QNVDG3L3.cjs.map +1 -0
- package/dist/chunk-RDPMXAQG.cjs +50 -0
- package/dist/chunk-RDPMXAQG.cjs.map +1 -0
- package/dist/chunk-RIG6I4HV.cjs +49 -0
- package/dist/chunk-RIG6I4HV.cjs.map +1 -0
- package/dist/chunk-ROBFZCJT.js +176 -0
- package/dist/chunk-ROBFZCJT.js.map +1 -0
- package/dist/chunk-RYAVZOGW.js +46 -0
- package/dist/chunk-RYAVZOGW.js.map +1 -0
- package/dist/chunk-SBPJFFRB.js +107 -0
- package/dist/chunk-SBPJFFRB.js.map +1 -0
- package/dist/chunk-SKMP4FO7.cjs +42 -0
- package/dist/chunk-SKMP4FO7.cjs.map +1 -0
- package/dist/chunk-SMDQTPJE.cjs +31 -0
- package/dist/chunk-SMDQTPJE.cjs.map +1 -0
- package/dist/chunk-SPAVM3EE.cjs +95 -0
- package/dist/chunk-SPAVM3EE.cjs.map +1 -0
- package/dist/chunk-T6O5RJA3.js +91 -0
- package/dist/chunk-T6O5RJA3.js.map +1 -0
- package/dist/chunk-T7LYMPIA.js +49 -0
- package/dist/chunk-T7LYMPIA.js.map +1 -0
- package/dist/chunk-TBV7NDAG.cjs +37 -0
- package/dist/chunk-TBV7NDAG.cjs.map +1 -0
- package/dist/chunk-TCV6N3EK.js +400 -0
- package/dist/chunk-TCV6N3EK.js.map +1 -0
- package/dist/chunk-TJVXG27I.cjs +13 -0
- package/dist/chunk-TJVXG27I.cjs.map +1 -0
- package/dist/chunk-U2T647VT.cjs +144 -0
- package/dist/chunk-U2T647VT.cjs.map +1 -0
- package/dist/chunk-U3D4LL6T.js +54 -0
- package/dist/chunk-U3D4LL6T.js.map +1 -0
- package/dist/chunk-U6G7EXM6.js +33 -0
- package/dist/chunk-U6G7EXM6.js.map +1 -0
- package/dist/chunk-USQZOJUG.cjs +121 -0
- package/dist/chunk-USQZOJUG.cjs.map +1 -0
- package/dist/chunk-UTPXIIHX.js +24 -0
- package/dist/chunk-UTPXIIHX.js.map +1 -0
- package/dist/chunk-UTYX2NMA.cjs +47 -0
- package/dist/chunk-UTYX2NMA.cjs.map +1 -0
- package/dist/chunk-V563IKQH.cjs +4 -0
- package/dist/chunk-V563IKQH.cjs.map +1 -0
- package/dist/chunk-VANX3AQD.js +3 -0
- package/dist/chunk-VANX3AQD.js.map +1 -0
- package/dist/chunk-VM36U3TK.js +106 -0
- package/dist/chunk-VM36U3TK.js.map +1 -0
- package/dist/chunk-VUBXXZUL.cjs +22 -0
- package/dist/chunk-VUBXXZUL.cjs.map +1 -0
- package/dist/chunk-VXNZRGLE.cjs +140 -0
- package/dist/chunk-VXNZRGLE.cjs.map +1 -0
- package/dist/chunk-VYILTAQR.cjs +51 -0
- package/dist/chunk-VYILTAQR.cjs.map +1 -0
- package/dist/chunk-W4VQ5YRX.js +45 -0
- package/dist/chunk-W4VQ5YRX.js.map +1 -0
- package/dist/chunk-W6BMYVY5.js +17 -0
- package/dist/chunk-W6BMYVY5.js.map +1 -0
- package/dist/chunk-WAZSWGCH.js +47 -0
- package/dist/chunk-WAZSWGCH.js.map +1 -0
- package/dist/chunk-WPH6SRZT.js +48 -0
- package/dist/chunk-WPH6SRZT.js.map +1 -0
- package/dist/chunk-WRANITBW.cjs +48 -0
- package/dist/chunk-WRANITBW.cjs.map +1 -0
- package/dist/chunk-WSDKENUA.cjs +99 -0
- package/dist/chunk-WSDKENUA.cjs.map +1 -0
- package/dist/chunk-WYSZMCAK.js +12 -0
- package/dist/chunk-WYSZMCAK.js.map +1 -0
- package/dist/chunk-XAPQTBJR.cjs +45 -0
- package/dist/chunk-XAPQTBJR.cjs.map +1 -0
- package/dist/chunk-XCYNYXC7.cjs +81 -0
- package/dist/chunk-XCYNYXC7.cjs.map +1 -0
- package/dist/chunk-XFGURTBJ.js +259 -0
- package/dist/chunk-XFGURTBJ.js.map +1 -0
- package/dist/chunk-XKKJHTSY.js +77 -0
- package/dist/chunk-XKKJHTSY.js.map +1 -0
- package/dist/chunk-XUTLQ573.cjs +20 -0
- package/dist/chunk-XUTLQ573.cjs.map +1 -0
- package/dist/chunk-YB2USB4M.js +17 -0
- package/dist/chunk-YB2USB4M.js.map +1 -0
- package/dist/chunk-YEYEUQM6.cjs +13 -0
- package/dist/chunk-YEYEUQM6.cjs.map +1 -0
- package/dist/chunk-YPA6HVCD.cjs +34 -0
- package/dist/chunk-YPA6HVCD.cjs.map +1 -0
- package/dist/chunk-YUA4DBYT.js +23 -0
- package/dist/chunk-YUA4DBYT.js.map +1 -0
- package/dist/chunk-Z33TWZHI.js +81 -0
- package/dist/chunk-Z33TWZHI.js.map +1 -0
- package/dist/chunk-ZBCGHL2Z.cjs +108 -0
- package/dist/chunk-ZBCGHL2Z.cjs.map +1 -0
- package/dist/chunk-ZC7K3XKN.cjs +51 -0
- package/dist/chunk-ZC7K3XKN.cjs.map +1 -0
- package/dist/chunk-ZZCTMR2F.cjs +37 -0
- package/dist/chunk-ZZCTMR2F.cjs.map +1 -0
- package/dist/{company_service_sanity-BzaIPM-N.d.ts → company_service_sanity-ByIKe90u.d.cts} +2085 -2085
- package/dist/{company_service_sanity-Zy8TiORb.d.cts → company_service_sanity-DbYwWmnS.d.ts} +2085 -2085
- package/dist/components/buttons/BackButton.cjs +11 -153
- package/dist/components/buttons/BackButton.cjs.map +1 -1
- package/dist/components/buttons/BackButton.js +7 -134
- package/dist/components/buttons/BackButton.js.map +1 -1
- package/dist/components/company/CompanyBenefits.cjs +10 -31
- package/dist/components/company/CompanyBenefits.cjs.map +1 -1
- package/dist/components/company/CompanyBenefits.js +3 -8
- package/dist/components/company/CompanyBenefits.js.map +1 -1
- package/dist/components/company/CompanyInformation.cjs +9 -86
- package/dist/components/company/CompanyInformation.cjs.map +1 -1
- package/dist/components/company/CompanyInformation.js +4 -53
- package/dist/components/company/CompanyInformation.js.map +1 -1
- package/dist/components/company/CompanyTake.cjs +10 -122
- package/dist/components/company/CompanyTake.cjs.map +1 -1
- package/dist/components/company/CompanyTake.js +6 -91
- package/dist/components/company/CompanyTake.js.map +1 -1
- package/dist/components/jobCard/JobLocation.cjs +11 -151
- package/dist/components/jobCard/JobLocation.cjs.map +1 -1
- package/dist/components/jobCard/JobLocation.d.cts +1 -1
- package/dist/components/jobCard/JobLocation.d.ts +1 -1
- package/dist/components/jobCard/JobLocation.js +7 -121
- package/dist/components/jobCard/JobLocation.js.map +1 -1
- package/dist/components/jobPost/JobDescription.cjs +10 -347
- package/dist/components/jobPost/JobDescription.cjs.map +1 -1
- package/dist/components/jobPost/JobDescription.js +6 -315
- package/dist/components/jobPost/JobDescription.js.map +1 -1
- package/dist/components/jobPost/JobHeader.cjs +16 -406
- package/dist/components/jobPost/JobHeader.cjs.map +1 -1
- package/dist/components/jobPost/JobHeader.js +12 -398
- package/dist/components/jobPost/JobHeader.js.map +1 -1
- package/dist/components/jobPost/JobPost.cjs +42 -1820
- package/dist/components/jobPost/JobPost.cjs.map +1 -1
- package/dist/components/jobPost/JobPost.d.cts +1 -1
- package/dist/components/jobPost/JobPost.d.ts +1 -1
- package/dist/components/jobPost/JobPost.js +33 -1812
- package/dist/components/jobPost/JobPost.js.map +1 -1
- package/dist/components/primitives/avatar.cjs +17 -82
- package/dist/components/primitives/avatar.cjs.map +1 -1
- package/dist/components/primitives/avatar.js +4 -50
- package/dist/components/primitives/avatar.js.map +1 -1
- package/dist/components/primitives/command.cjs +41 -207
- package/dist/components/primitives/command.cjs.map +1 -1
- package/dist/components/primitives/command.d.cts +1 -1
- package/dist/components/primitives/command.d.ts +1 -1
- package/dist/components/primitives/command.js +5 -170
- package/dist/components/primitives/command.js.map +1 -1
- package/dist/components/primitives/dialog.cjs +45 -124
- package/dist/components/primitives/dialog.cjs.map +1 -1
- package/dist/components/primitives/dialog.js +4 -85
- package/dist/components/primitives/dialog.js.map +1 -1
- package/dist/components/primitives/input-otp.cjs +20 -90
- package/dist/components/primitives/input-otp.cjs.map +1 -1
- package/dist/components/primitives/input-otp.js +4 -58
- package/dist/components/primitives/input-otp.js.map +1 -1
- package/dist/components/primitives/popover.cjs +17 -67
- package/dist/components/primitives/popover.cjs.map +1 -1
- package/dist/components/primitives/popover.js +4 -35
- package/dist/components/primitives/popover.js.map +1 -1
- package/dist/components/primitives/radio-group.cjs +12 -64
- package/dist/components/primitives/radio-group.cjs.map +1 -1
- package/dist/components/primitives/radio-group.js +4 -36
- package/dist/components/primitives/radio-group.js.map +1 -1
- package/dist/components/primitives/separator.cjs +9 -62
- package/dist/components/primitives/separator.cjs.map +1 -1
- package/dist/components/primitives/separator.js +4 -32
- package/dist/components/primitives/separator.js.map +1 -1
- package/dist/components/primitives/tooltip.cjs +21 -69
- package/dist/components/primitives/tooltip.cjs.map +1 -1
- package/dist/components/primitives/tooltip.js +4 -36
- package/dist/components/primitives/tooltip.js.map +1 -1
- package/dist/components/ui/Avatar.cjs +12 -105
- package/dist/components/ui/Avatar.cjs.map +1 -1
- package/dist/components/ui/Avatar.js +5 -75
- package/dist/components/ui/Avatar.js.map +1 -1
- package/dist/components/ui/Badge.cjs +12 -62
- package/dist/components/ui/Badge.cjs.map +1 -1
- package/dist/components/ui/Badge.js +4 -31
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Button.cjs +13 -299
- package/dist/components/ui/Button.cjs.map +1 -1
- package/dist/components/ui/Button.d.cts +1 -1
- package/dist/components/ui/Button.d.ts +1 -1
- package/dist/components/ui/Button.js +4 -267
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Checkbox.cjs +13 -109
- package/dist/components/ui/Checkbox.cjs.map +1 -1
- package/dist/components/ui/Checkbox.js +5 -81
- package/dist/components/ui/Checkbox.js.map +1 -1
- package/dist/components/ui/Chip.cjs +8 -59
- package/dist/components/ui/Chip.cjs.map +1 -1
- package/dist/components/ui/Chip.d.cts +1 -1
- package/dist/components/ui/Chip.d.ts +1 -1
- package/dist/components/ui/Chip.js +3 -29
- package/dist/components/ui/Chip.js.map +1 -1
- package/dist/components/ui/Combobox.cjs +22 -591
- package/dist/components/ui/Combobox.cjs.map +1 -1
- package/dist/components/ui/Combobox.js +14 -560
- package/dist/components/ui/Combobox.js.map +1 -1
- package/dist/components/ui/Counter.cjs +11 -226
- package/dist/components/ui/Counter.cjs.map +1 -1
- package/dist/components/ui/Counter.js +7 -197
- package/dist/components/ui/Counter.js.map +1 -1
- package/dist/components/ui/DatePicker.cjs +14 -274
- package/dist/components/ui/DatePicker.cjs.map +1 -1
- package/dist/components/ui/DatePicker.js +10 -245
- package/dist/components/ui/DatePicker.js.map +1 -1
- package/dist/components/ui/DismissibleBanner.cjs +9 -77
- package/dist/components/ui/DismissibleBanner.cjs.map +1 -1
- package/dist/components/ui/DismissibleBanner.js +4 -56
- package/dist/components/ui/DismissibleBanner.js.map +1 -1
- package/dist/components/ui/ErrorMessage.cjs +7 -36
- package/dist/components/ui/ErrorMessage.cjs.map +1 -1
- package/dist/components/ui/ErrorMessage.js +4 -16
- package/dist/components/ui/ErrorMessage.js.map +1 -1
- package/dist/components/ui/Icon.cjs +9 -108
- package/dist/components/ui/Icon.cjs.map +1 -1
- package/dist/components/ui/Icon.js +4 -87
- package/dist/components/ui/Icon.js.map +1 -1
- package/dist/components/ui/Input.cjs +9 -186
- package/dist/components/ui/Input.cjs.map +1 -1
- package/dist/components/ui/Input.js +7 -159
- package/dist/components/ui/Input.js.map +1 -1
- package/dist/components/ui/InputOtp.cjs +12 -175
- package/dist/components/ui/InputOtp.cjs.map +1 -1
- package/dist/components/ui/InputOtp.js +8 -145
- package/dist/components/ui/InputOtp.js.map +1 -1
- package/dist/components/ui/Label.cjs +7 -79
- package/dist/components/ui/Label.cjs.map +1 -1
- package/dist/components/ui/Label.js +5 -52
- package/dist/components/ui/Label.js.map +1 -1
- package/dist/components/ui/LinkButton.cjs +10 -58
- package/dist/components/ui/LinkButton.cjs.map +1 -1
- package/dist/components/ui/LinkButton.js +3 -25
- package/dist/components/ui/LinkButton.js.map +1 -1
- package/dist/components/ui/ListItem.cjs +8 -150
- package/dist/components/ui/ListItem.cjs.map +1 -1
- package/dist/components/ui/ListItem.js +6 -125
- package/dist/components/ui/ListItem.js.map +1 -1
- package/dist/components/ui/Map/ClusterMarker.cjs +9 -74
- package/dist/components/ui/Map/ClusterMarker.cjs.map +1 -1
- package/dist/components/ui/Map/ClusterMarker.js +5 -55
- package/dist/components/ui/Map/ClusterMarker.js.map +1 -1
- package/dist/components/ui/Map/FocusCircle.cjs +9 -81
- package/dist/components/ui/Map/FocusCircle.cjs.map +1 -1
- package/dist/components/ui/Map/FocusCircle.js +4 -61
- package/dist/components/ui/Map/FocusCircle.js.map +1 -1
- package/dist/components/ui/Map/IndividualMarker.cjs +9 -55
- package/dist/components/ui/Map/IndividualMarker.cjs.map +1 -1
- package/dist/components/ui/Map/IndividualMarker.js +4 -35
- package/dist/components/ui/Map/IndividualMarker.js.map +1 -1
- package/dist/components/ui/Map/MapComponent.cjs +16 -395
- package/dist/components/ui/Map/MapComponent.cjs.map +1 -1
- package/dist/components/ui/Map/MapComponent.js +12 -366
- package/dist/components/ui/Map/MapComponent.js.map +1 -1
- package/dist/components/ui/Map/MapContent.cjs +13 -273
- package/dist/components/ui/Map/MapContent.cjs.map +1 -1
- package/dist/components/ui/Map/MapContent.js +9 -254
- package/dist/components/ui/Map/MapContent.js.map +1 -1
- package/dist/components/ui/Map/clustering.cjs +13 -99
- package/dist/components/ui/Map/clustering.cjs.map +1 -1
- package/dist/components/ui/Map/clustering.js +5 -76
- package/dist/components/ui/Map/clustering.js.map +1 -1
- package/dist/components/ui/Map/constants.cjs +33 -61
- package/dist/components/ui/Map/constants.cjs.map +1 -1
- package/dist/components/ui/Map/constants.js +3 -33
- package/dist/components/ui/Map/constants.js.map +1 -1
- package/dist/components/ui/Map/hooks.cjs +18 -90
- package/dist/components/ui/Map/hooks.cjs.map +1 -1
- package/dist/components/ui/Map/hooks.js +6 -58
- package/dist/components/ui/Map/hooks.js.map +1 -1
- package/dist/components/ui/Map/index.cjs +21 -400
- package/dist/components/ui/Map/index.cjs.map +1 -1
- package/dist/components/ui/Map/index.js +13 -364
- package/dist/components/ui/Map/index.js.map +1 -1
- package/dist/components/ui/Map/types.cjs +2 -17
- package/dist/components/ui/Map/types.cjs.map +1 -1
- package/dist/components/ui/Map/types.js +2 -0
- package/dist/components/ui/Map/types.js.map +1 -1
- package/dist/components/ui/Map/utils.cjs +25 -75
- package/dist/components/ui/Map/utils.cjs.map +1 -1
- package/dist/components/ui/Map/utils.js +4 -48
- package/dist/components/ui/Map/utils.js.map +1 -1
- package/dist/components/ui/PlacesQueryInput.cjs +9 -301
- package/dist/components/ui/PlacesQueryInput.cjs.map +1 -1
- package/dist/components/ui/PlacesQueryInput.js +7 -275
- package/dist/components/ui/PlacesQueryInput.js.map +1 -1
- package/dist/components/ui/Radio.cjs +12 -151
- package/dist/components/ui/Radio.cjs.map +1 -1
- package/dist/components/ui/Radio.js +8 -123
- package/dist/components/ui/Radio.js.map +1 -1
- package/dist/components/ui/ReadMore.cjs +9 -340
- package/dist/components/ui/ReadMore.cjs.map +1 -1
- package/dist/components/ui/ReadMore.js +5 -311
- package/dist/components/ui/ReadMore.js.map +1 -1
- package/dist/components/ui/Select.cjs +11 -303
- package/dist/components/ui/Select.cjs.map +1 -1
- package/dist/components/ui/Select.js +9 -282
- package/dist/components/ui/Select.js.map +1 -1
- package/dist/components/ui/StepTabs.cjs +9 -129
- package/dist/components/ui/StepTabs.cjs.map +1 -1
- package/dist/components/ui/StepTabs.js +4 -99
- package/dist/components/ui/StepTabs.js.map +1 -1
- package/dist/components/ui/Switch.cjs +9 -69
- package/dist/components/ui/Switch.cjs.map +1 -1
- package/dist/components/ui/Switch.js +5 -39
- package/dist/components/ui/Switch.js.map +1 -1
- package/dist/components/ui/buttonShadcn.cjs +13 -81
- package/dist/components/ui/buttonShadcn.cjs.map +1 -1
- package/dist/components/ui/buttonShadcn.d.cts +1 -1
- package/dist/components/ui/buttonShadcn.d.ts +1 -1
- package/dist/components/ui/buttonShadcn.js +4 -49
- package/dist/components/ui/buttonShadcn.js.map +1 -1
- package/dist/components/ui/calendar.cjs +9 -135
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.js +5 -106
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/contexts/WindowHistoryProvider.cjs +13 -43
- package/dist/contexts/WindowHistoryProvider.cjs.map +1 -1
- package/dist/contexts/WindowHistoryProvider.js +3 -21
- package/dist/contexts/WindowHistoryProvider.js.map +1 -1
- package/dist/{displayText-DIxMXVLl.d.ts → displayText-Ce_aqgGP.d.ts} +2 -2
- package/dist/{displayText-DRyxjHTZ.d.cts → displayText-Cm8PqS6s.d.cts} +2 -2
- package/dist/hooks/useDisplayText.cjs +10 -496
- package/dist/hooks/useDisplayText.cjs.map +1 -1
- package/dist/hooks/useDisplayText.d.cts +3 -3
- package/dist/hooks/useDisplayText.d.ts +3 -3
- package/dist/hooks/useDisplayText.js +6 -476
- package/dist/hooks/useDisplayText.js.map +1 -1
- package/dist/hooks/useWindowHistory.cjs +9 -37
- package/dist/hooks/useWindowHistory.cjs.map +1 -1
- package/dist/hooks/useWindowHistory.js +4 -16
- package/dist/hooks/useWindowHistory.js.map +1 -1
- package/dist/index.cjs +216 -4128
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +73 -4107
- package/dist/index.js.map +1 -1
- package/dist/{job_posting_service_latest-BrZndMS6.d.cts → job_posting_service_latest-82DHqOGu.d.cts} +1097 -1097
- package/dist/{job_posting_service_latest-BrZndMS6.d.ts → job_posting_service_latest-82DHqOGu.d.ts} +1097 -1097
- package/dist/{job_posting_service_latest-7q4A7RpW.d.cts → job_posting_service_latest-D9I5NE7l.d.cts} +1097 -1097
- package/dist/{job_posting_service_latest-7q4A7RpW.d.ts → job_posting_service_latest-D9I5NE7l.d.ts} +1097 -1097
- package/dist/{job_posting_service_sanity-LlRkfIpt.d.ts → job_posting_service_sanity-1eG3Jh9_.d.ts} +2016 -2016
- package/dist/{job_posting_service_sanity-B5NZ-7tI.d.cts → job_posting_service_sanity-DKYye6oH.d.cts} +2016 -2016
- package/dist/lib/google.cjs +21 -81
- package/dist/lib/google.cjs.map +1 -1
- package/dist/lib/google.js +3 -57
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/icons.cjs +10 -50
- package/dist/lib/icons.cjs.map +1 -1
- package/dist/lib/icons.js +3 -48
- package/dist/lib/icons.js.map +1 -1
- package/dist/lib/locations.cjs +17 -66
- package/dist/lib/locations.cjs.map +1 -1
- package/dist/lib/locations.d.cts +3 -3
- package/dist/lib/locations.d.ts +3 -3
- package/dist/lib/locations.js +3 -42
- package/dist/lib/locations.js.map +1 -1
- package/dist/lib/mappings.cjs +45 -439
- package/dist/lib/mappings.cjs.map +1 -1
- package/dist/lib/mappings.d.cts +3 -3
- package/dist/lib/mappings.d.ts +3 -3
- package/dist/lib/mappings.js +3 -408
- package/dist/lib/mappings.js.map +1 -1
- package/dist/lib/salaryRange.cjs +14 -453
- package/dist/lib/salaryRange.cjs.map +1 -1
- package/dist/lib/salaryRange.d.cts +1 -1
- package/dist/lib/salaryRange.d.ts +1 -1
- package/dist/lib/salaryRange.js +10 -437
- package/dist/lib/salaryRange.js.map +1 -1
- package/dist/lib/utils.cjs +10 -32
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.js +3 -9
- package/dist/lib/utils.js.map +1 -1
- package/dist/services/displayText.cjs +9 -464
- package/dist/services/displayText.cjs.map +1 -1
- package/dist/services/displayText.d.cts +3 -3
- package/dist/services/displayText.d.ts +3 -3
- package/dist/services/displayText.js +5 -442
- package/dist/services/displayText.js.map +1 -1
- package/dist/styles/globals.css +30 -0
- package/dist/styles/globals.css.map +1 -1
- package/dist/types/data/company_service_latest.cjs +73 -246
- package/dist/types/data/company_service_latest.cjs.map +1 -1
- package/dist/types/data/company_service_latest.d.cts +1 -1
- package/dist/types/data/company_service_latest.d.ts +1 -1
- package/dist/types/data/company_service_latest.js +4 -209
- package/dist/types/data/company_service_latest.js.map +1 -1
- package/dist/types/data/job_posting_service_latest.cjs +42 -276
- package/dist/types/data/job_posting_service_latest.cjs.map +1 -1
- package/dist/types/data/job_posting_service_latest.d.cts +1 -1
- package/dist/types/data/job_posting_service_latest.d.ts +1 -1
- package/dist/types/data/job_posting_service_latest.js +5 -256
- package/dist/types/data/job_posting_service_latest.js.map +1 -1
- package/dist/types/data/shared_pickle_output_latest.cjs +39 -99
- package/dist/types/data/shared_pickle_output_latest.cjs.map +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/data/shared_pickle_output_latest.d.ts +1 -1
- package/dist/types/data/shared_pickle_output_latest.js +3 -74
- package/dist/types/data/shared_pickle_output_latest.js.map +1 -1
- package/dist/types/displayText.errors.cjs +13 -40
- package/dist/types/displayText.errors.cjs.map +1 -1
- package/dist/types/displayText.errors.js +3 -17
- package/dist/types/displayText.errors.js.map +1 -1
- package/dist/types/index.cjs +28 -494
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +5 -5
- package/dist/types/index.d.ts +5 -5
- package/dist/types/index.js +9 -478
- package/dist/types/index.js.map +1 -1
- package/dist/types/latest/company_service_latest.cjs +73 -246
- package/dist/types/latest/company_service_latest.cjs.map +1 -1
- package/dist/types/latest/company_service_latest.d.cts +1 -1
- package/dist/types/latest/company_service_latest.d.ts +1 -1
- package/dist/types/latest/company_service_latest.js +4 -209
- package/dist/types/latest/company_service_latest.js.map +1 -1
- package/dist/types/latest/custom/company_service_sanity.cjs +46 -307
- package/dist/types/latest/custom/company_service_sanity.cjs.map +1 -1
- package/dist/types/latest/custom/company_service_sanity.d.cts +3 -3
- package/dist/types/latest/custom/company_service_sanity.d.ts +3 -3
- package/dist/types/latest/custom/company_service_sanity.js +6 -287
- package/dist/types/latest/custom/company_service_sanity.js.map +1 -1
- package/dist/types/latest/custom/custom_sanity_models.cjs +13 -39
- package/dist/types/latest/custom/custom_sanity_models.cjs.map +1 -1
- package/dist/types/latest/custom/custom_sanity_models.js +3 -16
- package/dist/types/latest/custom/custom_sanity_models.js.map +1 -1
- package/dist/types/latest/custom/job_posting_service_sanity.cjs +66 -353
- package/dist/types/latest/custom/job_posting_service_sanity.cjs.map +1 -1
- package/dist/types/latest/custom/job_posting_service_sanity.d.cts +3 -3
- package/dist/types/latest/custom/job_posting_service_sanity.d.ts +3 -3
- package/dist/types/latest/custom/job_posting_service_sanity.js +7 -330
- package/dist/types/latest/custom/job_posting_service_sanity.js.map +1 -1
- package/dist/types/latest/job_posting_service_latest.cjs +42 -276
- package/dist/types/latest/job_posting_service_latest.cjs.map +1 -1
- package/dist/types/latest/job_posting_service_latest.d.cts +1 -1
- package/dist/types/latest/job_posting_service_latest.d.ts +1 -1
- package/dist/types/latest/job_posting_service_latest.js +5 -256
- package/dist/types/latest/job_posting_service_latest.js.map +1 -1
- package/dist/types/latest/shared_pickle_output_latest.cjs +39 -99
- package/dist/types/latest/shared_pickle_output_latest.cjs.map +1 -1
- package/dist/types/latest/shared_pickle_output_latest.d.cts +1 -1
- package/dist/types/latest/shared_pickle_output_latest.d.ts +1 -1
- package/dist/types/latest/shared_pickle_output_latest.js +3 -74
- package/dist/types/latest/shared_pickle_output_latest.js.map +1 -1
- package/package.json +3 -2
- package/dist/{company_service_latest-BwbaqchJ.d.cts → company_service_latest-BjyG4KCB.d.cts} +1103 -1103
- package/dist/{company_service_latest-BwbaqchJ.d.ts → company_service_latest-BjyG4KCB.d.ts} +1103 -1103
- package/dist/{company_service_latest-FHqG4LjA.d.cts → company_service_latest-KJi2W9Ij.d.cts} +1103 -1103
- package/dist/{company_service_latest-FHqG4LjA.d.ts → company_service_latest-KJi2W9Ij.d.ts} +1103 -1103
- package/dist/{shared_pickle_output_latest-DIPgxUul.d.cts → shared_pickle_output_latest-YbRs_xtC.d.cts} +40 -40
- package/dist/{shared_pickle_output_latest-DIPgxUul.d.ts → shared_pickle_output_latest-YbRs_xtC.d.ts} +40 -40
- package/dist/{shared_pickle_output_latest-CKHNY1lx.d.cts → shared_pickle_output_latest-dO-t8iZx.d.cts} +40 -40
- package/dist/{shared_pickle_output_latest-CKHNY1lx.d.ts → shared_pickle_output_latest-dO-t8iZx.d.ts} +40 -40
package/dist/index.js
CHANGED
|
@@ -1,4108 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
import
|
|
36
|
-
import
|
|
37
|
-
import
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
import
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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-2"]
|
|
1422
|
-
},
|
|
1423
|
-
{
|
|
1424
|
-
variant: "icon-outline",
|
|
1425
|
-
size: "small",
|
|
1426
|
-
class: ["h-10", "w-10", "p-3"]
|
|
1427
|
-
},
|
|
1428
|
-
{
|
|
1429
|
-
variant: "icon-outline",
|
|
1430
|
-
size: "medium",
|
|
1431
|
-
class: ["h-12", "w-12", "p-4"]
|
|
1432
|
-
},
|
|
1433
|
-
{
|
|
1434
|
-
variant: "icon-outline",
|
|
1435
|
-
size: "large",
|
|
1436
|
-
class: ["h-14", "w-14", "p-4"]
|
|
1437
|
-
},
|
|
1438
|
-
{
|
|
1439
|
-
variant: "icon-primary",
|
|
1440
|
-
size: "extra-small",
|
|
1441
|
-
class: ["h-8", "w-8", "p-2"]
|
|
1442
|
-
},
|
|
1443
|
-
{
|
|
1444
|
-
variant: "icon-primary",
|
|
1445
|
-
size: "small",
|
|
1446
|
-
class: ["h-10", "w-10", "p-3"]
|
|
1447
|
-
},
|
|
1448
|
-
{
|
|
1449
|
-
variant: "icon-primary",
|
|
1450
|
-
size: "medium",
|
|
1451
|
-
class: ["h-12", "w-12", "p-4"]
|
|
1452
|
-
},
|
|
1453
|
-
{
|
|
1454
|
-
variant: "icon-primary",
|
|
1455
|
-
size: "large",
|
|
1456
|
-
class: ["h-14", "w-14", "p-4"]
|
|
1457
|
-
},
|
|
1458
|
-
{
|
|
1459
|
-
variant: "icon-secondary",
|
|
1460
|
-
size: "extra-small",
|
|
1461
|
-
class: ["h-8", "w-8", "p-2"]
|
|
1462
|
-
},
|
|
1463
|
-
{
|
|
1464
|
-
variant: "icon-secondary",
|
|
1465
|
-
size: "small",
|
|
1466
|
-
class: ["h-10", "w-10", "p-3"]
|
|
1467
|
-
},
|
|
1468
|
-
{
|
|
1469
|
-
variant: "icon-secondary",
|
|
1470
|
-
size: "medium",
|
|
1471
|
-
class: ["h-12", "w-12", "p-4"]
|
|
1472
|
-
},
|
|
1473
|
-
{
|
|
1474
|
-
variant: "icon-secondary",
|
|
1475
|
-
size: "large",
|
|
1476
|
-
class: ["h-14", "w-14", "p-4"]
|
|
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
|