@remoteoss/remote-flows 0.28.0 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/dist/{ZendeskTriggerButton-DIV8pCPo.d.ts → ZendeskTriggerButton-Dditzyfj.d.ts} +15 -0
  2. package/dist/chunk-2CDCTUVY.js +2 -0
  3. package/dist/{chunk-3O3Q24JL.js.map → chunk-2CDCTUVY.js.map} +1 -1
  4. package/dist/{chunk-UPXJJBXZ.js → chunk-2N5A6EGD.js} +2 -2
  5. package/dist/chunk-3UDG4IJO.js +2 -0
  6. package/dist/chunk-3UDG4IJO.js.map +1 -0
  7. package/dist/{chunk-WLBRCGTG.js → chunk-4CIYPTKM.js} +2 -2
  8. package/dist/{chunk-DZ7FZ4L2.js → chunk-56LJAMZC.js} +2 -2
  9. package/dist/{chunk-EKKRQI6B.js → chunk-5NARH23N.js} +2 -2
  10. package/dist/{chunk-RINDVT6U.js → chunk-5ORIDYIK.js} +2 -2
  11. package/dist/{chunk-AWDGLK2T.js → chunk-664GOQG3.js} +2 -2
  12. package/dist/{chunk-R645TMO5.js → chunk-67V3DFV4.js} +2 -2
  13. package/dist/chunk-6GQZCUUR.js +2 -0
  14. package/dist/chunk-6GQZCUUR.js.map +1 -0
  15. package/dist/{chunk-OU4Y73FX.js → chunk-6GUXV7XA.js} +2 -2
  16. package/dist/{chunk-HMNHKZGD.js → chunk-7JUP5JEY.js} +2 -2
  17. package/dist/{chunk-ZWZJ4XOY.js → chunk-7OL54VKA.js} +2 -2
  18. package/dist/chunk-7RFJWDXS.js +2 -0
  19. package/dist/chunk-7RFJWDXS.js.map +1 -0
  20. package/dist/{chunk-TM7Q7RHH.js → chunk-7TX2YY4K.js} +2 -2
  21. package/dist/chunk-A6GJNXUZ.js +2 -0
  22. package/dist/chunk-A6GJNXUZ.js.map +1 -0
  23. package/dist/chunk-AP56UUME.js +2 -0
  24. package/dist/chunk-AP56UUME.js.map +1 -0
  25. package/dist/{chunk-6IL4TB7S.js → chunk-BB3WWKGA.js} +2 -2
  26. package/dist/{chunk-QPTO4XXU.js → chunk-BKWNJMNJ.js} +2 -2
  27. package/dist/{chunk-RC3XP5WU.js → chunk-CHDWFMD3.js} +2 -2
  28. package/dist/{chunk-JO4722R7.js → chunk-D64MAPTD.js} +2 -2
  29. package/dist/chunk-D7WCSZGW.js +2 -0
  30. package/dist/chunk-D7WCSZGW.js.map +1 -0
  31. package/dist/{chunk-MGVP76ZI.js → chunk-DTZ23AE6.js} +2 -2
  32. package/dist/{chunk-MRPXDND2.js → chunk-DXTLNOCG.js} +2 -2
  33. package/dist/{chunk-5KHLOGTR.js → chunk-DYXTJBSK.js} +2 -2
  34. package/dist/chunk-EHS4ERDW.js +2 -0
  35. package/dist/chunk-EHS4ERDW.js.map +1 -0
  36. package/dist/chunk-EL5QIDYZ.js +2 -0
  37. package/dist/chunk-EL5QIDYZ.js.map +1 -0
  38. package/dist/{chunk-ZQ6MG635.js → chunk-EVSDVI2G.js} +2 -2
  39. package/dist/{chunk-HFI2MD3H.js → chunk-FDBUFHR3.js} +2 -2
  40. package/dist/{chunk-OIN3HGOQ.js → chunk-GTWY3JK3.js} +2 -2
  41. package/dist/{chunk-P5WUODPR.js → chunk-HBRO74FQ.js} +2 -2
  42. package/dist/chunk-HJYHCWGX.js +2 -0
  43. package/dist/chunk-HJYHCWGX.js.map +1 -0
  44. package/dist/chunk-HMUIT2NU.js +2 -0
  45. package/dist/chunk-HMUIT2NU.js.map +1 -0
  46. package/dist/{chunk-FFMKAMWP.js → chunk-HTJZUAVS.js} +2 -2
  47. package/dist/chunk-HX34JCPL.js +2 -0
  48. package/dist/chunk-HX34JCPL.js.map +1 -0
  49. package/dist/{chunk-ANGJCT4I.js → chunk-HYOJP6J5.js} +2 -2
  50. package/dist/{chunk-AUZWLETL.js → chunk-JK5K2S7N.js} +2 -2
  51. package/dist/{chunk-5ZR7EFPY.js → chunk-K2L2NSOM.js} +2 -2
  52. package/dist/{chunk-Z42H2QEW.js → chunk-KFJJXMAH.js} +2 -2
  53. package/dist/{chunk-GWLOE7WJ.js → chunk-KVAGMBSU.js} +2 -2
  54. package/dist/chunk-LJYCBMDS.js +2 -0
  55. package/dist/chunk-LJYCBMDS.js.map +1 -0
  56. package/dist/{chunk-6VRUYYUV.js → chunk-LLM6MDNY.js} +2 -2
  57. package/dist/chunk-NX7MM6XR.js +2 -0
  58. package/dist/chunk-NX7MM6XR.js.map +1 -0
  59. package/dist/{chunk-DPY77ASH.js → chunk-OHAAAVNB.js} +2 -2
  60. package/dist/{chunk-E6OBNWMU.js → chunk-OIIALEVF.js} +2 -2
  61. package/dist/chunk-OKM7DRCF.js +2 -0
  62. package/dist/{chunk-UTBVLDKY.js → chunk-PEHALKVU.js} +2 -2
  63. package/dist/{chunk-AODV6HT2.js → chunk-PEOWIEYM.js} +2 -2
  64. package/dist/{chunk-W55MUSAS.js → chunk-PFKNQGOD.js} +2 -2
  65. package/dist/{chunk-PYKEYPGA.js → chunk-QAOGIYQL.js} +2 -2
  66. package/dist/chunk-QGWCUGLN.js +2 -0
  67. package/dist/chunk-QGWCUGLN.js.map +1 -0
  68. package/dist/{chunk-BOTWQMOJ.js → chunk-QIVDIOJG.js} +2 -2
  69. package/dist/chunk-QRD43QJA.js +2 -0
  70. package/dist/chunk-QRD43QJA.js.map +1 -0
  71. package/dist/{chunk-CYPGWEOO.js → chunk-RCWBOOZF.js} +2 -2
  72. package/dist/{chunk-IQKZWU7I.js → chunk-RGGU6BNB.js} +2 -2
  73. package/dist/{chunk-N6G4VZXF.js → chunk-RR55GUDT.js} +2 -2
  74. package/dist/{chunk-N6G4VZXF.js.map → chunk-RR55GUDT.js.map} +1 -1
  75. package/dist/{chunk-BV3PGYSH.js → chunk-RYXRWMF4.js} +2 -2
  76. package/dist/{chunk-QTYDDIVO.js → chunk-SOYN4LOZ.js} +2 -2
  77. package/dist/{chunk-UFBTCHEI.js → chunk-TW7Z6G37.js} +2 -2
  78. package/dist/{chunk-6KIQIVKA.js → chunk-U24UNO6X.js} +2 -2
  79. package/dist/{chunk-ANQ4HVVK.js → chunk-UOOM7V2D.js} +2 -2
  80. package/dist/{chunk-ANQ4HVVK.js.map → chunk-UOOM7V2D.js.map} +1 -1
  81. package/dist/{chunk-VM2DQCZO.js → chunk-WMICWLC3.js} +2 -2
  82. package/dist/{chunk-5NPET4ZO.js → chunk-WNGPZXEX.js} +2 -2
  83. package/dist/chunk-XFJPUKYR.js +2 -0
  84. package/dist/chunk-XFJPUKYR.js.map +1 -0
  85. package/dist/{chunk-5MYWJJBQ.js → chunk-XLAKJHGV.js} +2 -2
  86. package/dist/{chunk-RAHCZTQ3.js → chunk-YBB6BOW7.js} +2 -2
  87. package/dist/{chunk-CVIWZYO3.js → chunk-YP2JBYAK.js} +2 -2
  88. package/dist/{chunk-WCIJHQMP.js → chunk-YP7Q47E2.js} +2 -2
  89. package/dist/{chunk-OW5QGJD4.js → chunk-Z47JQN3R.js} +2 -2
  90. package/dist/chunk-ZF4BLPXL.js +2 -0
  91. package/dist/chunk-ZF4BLPXL.js.map +1 -0
  92. package/dist/{chunk-QDYWPG2R.js → chunk-ZF6MZYBK.js} +2 -2
  93. package/dist/chunk-ZOTFS35J.js +2 -0
  94. package/dist/{chunk-U6RM2N4A.js.map → chunk-ZOTFS35J.js.map} +1 -1
  95. package/dist/{chunk-R3DJNVHR.js → chunk-ZXGAFQXW.js} +2 -2
  96. package/dist/{chunk-R3DJNVHR.js.map → chunk-ZXGAFQXW.js.map} +1 -1
  97. package/dist/{chunk-BMDZJNJV.js → chunk-ZZWX3C6V.js} +2 -2
  98. package/dist/flows/ContractAmendment/ContractAmendmentBack.js +1 -1
  99. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  100. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -3
  101. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  102. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  103. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  104. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.js +1 -1
  105. package/dist/flows/ContractAmendment/context.d.ts +3 -3
  106. package/dist/flows/ContractAmendment/hooks.d.ts +3 -3
  107. package/dist/flows/ContractAmendment/hooks.js +1 -1
  108. package/dist/flows/ContractAmendment/index.d.ts +3 -3
  109. package/dist/flows/ContractAmendment/index.js +1 -1
  110. package/dist/flows/ContractAmendment/utils.d.ts +1 -1
  111. package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
  112. package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
  113. package/dist/flows/ContractorOnboarding/api.d.ts +40 -3
  114. package/dist/flows/ContractorOnboarding/api.js +1 -1
  115. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
  116. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
  117. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
  118. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
  119. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
  120. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
  121. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
  122. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
  123. package/dist/flows/ContractorOnboarding/components/OnboardingBack.js +1 -1
  124. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
  125. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
  126. package/dist/flows/ContractorOnboarding/components/OnboardingSubmit.js +1 -1
  127. package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -5
  128. package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
  129. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
  130. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
  131. package/dist/flows/ContractorOnboarding/constants.d.ts +5 -0
  132. package/dist/flows/ContractorOnboarding/constants.js +2 -0
  133. package/dist/flows/ContractorOnboarding/constants.js.map +1 -0
  134. package/dist/flows/ContractorOnboarding/context.d.ts +6 -6
  135. package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -5
  136. package/dist/flows/ContractorOnboarding/hooks.js +1 -1
  137. package/dist/flows/ContractorOnboarding/index.d.ts +5 -5
  138. package/dist/flows/ContractorOnboarding/index.js +1 -1
  139. package/dist/flows/ContractorOnboarding/json-schemas/selectContractorSubscriptionStep.d.ts +23 -0
  140. package/dist/flows/ContractorOnboarding/json-schemas/selectContractorSubscriptionStep.js +2 -0
  141. package/dist/flows/ContractorOnboarding/json-schemas/selectContractorSubscriptionStep.js.map +1 -0
  142. package/dist/flows/ContractorOnboarding/types.d.ts +5 -5
  143. package/dist/flows/ContractorOnboarding/utils.js +1 -1
  144. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -3
  145. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  146. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -3
  147. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  148. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  149. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  150. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +1 -1
  151. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  152. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js +1 -1
  153. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js +1 -1
  154. package/dist/flows/CostCalculator/Results/CostCalculatorExtraStatutoryPaymentsBreakdown.js +1 -1
  155. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js +1 -1
  156. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
  157. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +1 -1
  158. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +1 -1
  159. package/dist/flows/CostCalculator/api.d.ts +1 -1
  160. package/dist/flows/CostCalculator/api.js +1 -1
  161. package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
  162. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  163. package/dist/flows/CostCalculator/context.d.ts +3 -3
  164. package/dist/flows/CostCalculator/hooks.d.ts +3 -3
  165. package/dist/flows/CostCalculator/hooks.js +1 -1
  166. package/dist/flows/CostCalculator/index.d.ts +3 -3
  167. package/dist/flows/CostCalculator/index.js +1 -1
  168. package/dist/flows/CostCalculator/types.d.ts +1 -1
  169. package/dist/flows/CostCalculator/utils.d.ts +3 -3
  170. package/dist/flows/CostCalculator/utils.js +1 -1
  171. package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -4
  172. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  173. package/dist/flows/Onboarding/api.d.ts +6 -16
  174. package/dist/flows/Onboarding/api.js +1 -1
  175. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
  176. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  177. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -4
  178. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  179. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
  180. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  181. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
  182. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  183. package/dist/flows/Onboarding/components/OnboardingBack.js +1 -1
  184. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
  185. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  186. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
  187. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  188. package/dist/flows/Onboarding/components/OnboardingSubmit.js +1 -1
  189. package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -4
  190. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
  191. package/dist/flows/Onboarding/components/SaveDraftButton.js +1 -1
  192. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -4
  193. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  194. package/dist/flows/Onboarding/context.d.ts +4 -4
  195. package/dist/flows/Onboarding/hooks.d.ts +4 -4
  196. package/dist/flows/Onboarding/hooks.js +1 -1
  197. package/dist/flows/Onboarding/index.d.ts +4 -4
  198. package/dist/flows/Onboarding/index.js +1 -1
  199. package/dist/flows/Onboarding/types.d.ts +4 -4
  200. package/dist/flows/Onboarding/utils.d.ts +5 -5
  201. package/dist/flows/Onboarding/utils.js +1 -1
  202. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
  203. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  204. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
  205. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  206. package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
  207. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  208. package/dist/flows/Termination/TerminationBack.js +1 -1
  209. package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
  210. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  211. package/dist/flows/Termination/TerminationFlow.d.ts +4 -4
  212. package/dist/flows/Termination/TerminationFlow.js +1 -1
  213. package/dist/flows/Termination/TerminationForm.d.ts +4 -4
  214. package/dist/flows/Termination/TerminationForm.js +1 -1
  215. package/dist/flows/Termination/TerminationSubmit.js +1 -1
  216. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
  217. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +5 -5
  218. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
  219. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +5 -5
  220. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  221. package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +5 -5
  222. package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
  223. package/dist/flows/Termination/context.d.ts +9 -6
  224. package/dist/flows/Termination/hooks.d.ts +5 -5
  225. package/dist/flows/Termination/hooks.js +1 -1
  226. package/dist/flows/Termination/index.d.ts +6 -6
  227. package/dist/flows/Termination/index.js +1 -1
  228. package/dist/flows/Termination/json-schemas/employeeComunication.js +1 -1
  229. package/dist/flows/Termination/json-schemas/jsonSchema.js +1 -1
  230. package/dist/flows/Termination/json-schemas/paidTimeOff.js +1 -1
  231. package/dist/flows/Termination/json-schemas/schema.js +1 -1
  232. package/dist/flows/Termination/json-schemas/terminationDetails.js +1 -1
  233. package/dist/flows/Termination/types.d.ts +4 -4
  234. package/dist/flows/api.d.ts +4 -4
  235. package/dist/flows/api.js +1 -1
  236. package/dist/index.d.ts +16 -10
  237. package/dist/index.js +1 -1
  238. package/dist/index.js.map +1 -1
  239. package/dist/internals.d.ts +1 -1
  240. package/dist/internals.js +1 -1
  241. package/dist/{mutations-C0KsEf83.d.ts → mutations-BdkQ8BEQ.d.ts} +1 -1
  242. package/dist/{remoteFlows-DJcvCgN2.d.ts → remoteFlows-nNmmcD-T.d.ts} +3 -1
  243. package/dist/{types-Dad_rgYV.d.ts → types-5wwUT05a.d.ts} +29 -16
  244. package/dist/{types-1tGveWWg.d.ts → types-BOXcQDia.d.ts} +6 -5
  245. package/dist/{types-CwUhT-vz.d.ts → types-CNHUaKN_.d.ts} +18 -3
  246. package/dist/{types-DegHPy8Q.d.ts → types-omiJJgNz.d.ts} +5 -5
  247. package/dist/{types.gen-B73oMrmZ.d.ts → types.gen-BS9UfhS-.d.ts} +47 -1
  248. package/package.json +1 -1
  249. package/dist/chunk-2FKEF3OG.js +0 -2
  250. package/dist/chunk-2FKEF3OG.js.map +0 -1
  251. package/dist/chunk-3O3Q24JL.js +0 -2
  252. package/dist/chunk-3ZWDIEEM.js +0 -2
  253. package/dist/chunk-3ZWDIEEM.js.map +0 -1
  254. package/dist/chunk-53KVZ4BP.js +0 -2
  255. package/dist/chunk-53KVZ4BP.js.map +0 -1
  256. package/dist/chunk-6LJRRFK2.js +0 -2
  257. package/dist/chunk-6LJRRFK2.js.map +0 -1
  258. package/dist/chunk-7AC3W7WD.js +0 -2
  259. package/dist/chunk-7AC3W7WD.js.map +0 -1
  260. package/dist/chunk-BDPCUDJB.js +0 -2
  261. package/dist/chunk-BDPCUDJB.js.map +0 -1
  262. package/dist/chunk-DB7ITLRX.js +0 -2
  263. package/dist/chunk-DB7ITLRX.js.map +0 -1
  264. package/dist/chunk-FB2QGVI2.js +0 -2
  265. package/dist/chunk-FB2QGVI2.js.map +0 -1
  266. package/dist/chunk-KDUM4EZJ.js +0 -2
  267. package/dist/chunk-KDUM4EZJ.js.map +0 -1
  268. package/dist/chunk-L3C4AHZJ.js +0 -2
  269. package/dist/chunk-L3C4AHZJ.js.map +0 -1
  270. package/dist/chunk-LRGEEPGK.js +0 -2
  271. package/dist/chunk-LRGEEPGK.js.map +0 -1
  272. package/dist/chunk-NP4G3N5P.js +0 -2
  273. package/dist/chunk-SLMJEZJ7.js +0 -2
  274. package/dist/chunk-SLMJEZJ7.js.map +0 -1
  275. package/dist/chunk-U6RM2N4A.js +0 -2
  276. package/dist/chunk-UQOWSJ2B.js +0 -2
  277. package/dist/chunk-UQOWSJ2B.js.map +0 -1
  278. package/dist/chunk-XPKVRYIU.js +0 -2
  279. package/dist/chunk-XPKVRYIU.js.map +0 -1
  280. package/dist/chunk-ZY5U2UNT.js +0 -2
  281. package/dist/chunk-ZY5U2UNT.js.map +0 -1
  282. /package/dist/{chunk-UPXJJBXZ.js.map → chunk-2N5A6EGD.js.map} +0 -0
  283. /package/dist/{chunk-WLBRCGTG.js.map → chunk-4CIYPTKM.js.map} +0 -0
  284. /package/dist/{chunk-DZ7FZ4L2.js.map → chunk-56LJAMZC.js.map} +0 -0
  285. /package/dist/{chunk-EKKRQI6B.js.map → chunk-5NARH23N.js.map} +0 -0
  286. /package/dist/{chunk-RINDVT6U.js.map → chunk-5ORIDYIK.js.map} +0 -0
  287. /package/dist/{chunk-AWDGLK2T.js.map → chunk-664GOQG3.js.map} +0 -0
  288. /package/dist/{chunk-R645TMO5.js.map → chunk-67V3DFV4.js.map} +0 -0
  289. /package/dist/{chunk-OU4Y73FX.js.map → chunk-6GUXV7XA.js.map} +0 -0
  290. /package/dist/{chunk-HMNHKZGD.js.map → chunk-7JUP5JEY.js.map} +0 -0
  291. /package/dist/{chunk-ZWZJ4XOY.js.map → chunk-7OL54VKA.js.map} +0 -0
  292. /package/dist/{chunk-TM7Q7RHH.js.map → chunk-7TX2YY4K.js.map} +0 -0
  293. /package/dist/{chunk-6IL4TB7S.js.map → chunk-BB3WWKGA.js.map} +0 -0
  294. /package/dist/{chunk-QPTO4XXU.js.map → chunk-BKWNJMNJ.js.map} +0 -0
  295. /package/dist/{chunk-RC3XP5WU.js.map → chunk-CHDWFMD3.js.map} +0 -0
  296. /package/dist/{chunk-JO4722R7.js.map → chunk-D64MAPTD.js.map} +0 -0
  297. /package/dist/{chunk-MGVP76ZI.js.map → chunk-DTZ23AE6.js.map} +0 -0
  298. /package/dist/{chunk-MRPXDND2.js.map → chunk-DXTLNOCG.js.map} +0 -0
  299. /package/dist/{chunk-5KHLOGTR.js.map → chunk-DYXTJBSK.js.map} +0 -0
  300. /package/dist/{chunk-ZQ6MG635.js.map → chunk-EVSDVI2G.js.map} +0 -0
  301. /package/dist/{chunk-HFI2MD3H.js.map → chunk-FDBUFHR3.js.map} +0 -0
  302. /package/dist/{chunk-OIN3HGOQ.js.map → chunk-GTWY3JK3.js.map} +0 -0
  303. /package/dist/{chunk-P5WUODPR.js.map → chunk-HBRO74FQ.js.map} +0 -0
  304. /package/dist/{chunk-FFMKAMWP.js.map → chunk-HTJZUAVS.js.map} +0 -0
  305. /package/dist/{chunk-ANGJCT4I.js.map → chunk-HYOJP6J5.js.map} +0 -0
  306. /package/dist/{chunk-AUZWLETL.js.map → chunk-JK5K2S7N.js.map} +0 -0
  307. /package/dist/{chunk-5ZR7EFPY.js.map → chunk-K2L2NSOM.js.map} +0 -0
  308. /package/dist/{chunk-Z42H2QEW.js.map → chunk-KFJJXMAH.js.map} +0 -0
  309. /package/dist/{chunk-GWLOE7WJ.js.map → chunk-KVAGMBSU.js.map} +0 -0
  310. /package/dist/{chunk-6VRUYYUV.js.map → chunk-LLM6MDNY.js.map} +0 -0
  311. /package/dist/{chunk-DPY77ASH.js.map → chunk-OHAAAVNB.js.map} +0 -0
  312. /package/dist/{chunk-E6OBNWMU.js.map → chunk-OIIALEVF.js.map} +0 -0
  313. /package/dist/{chunk-NP4G3N5P.js.map → chunk-OKM7DRCF.js.map} +0 -0
  314. /package/dist/{chunk-UTBVLDKY.js.map → chunk-PEHALKVU.js.map} +0 -0
  315. /package/dist/{chunk-AODV6HT2.js.map → chunk-PEOWIEYM.js.map} +0 -0
  316. /package/dist/{chunk-W55MUSAS.js.map → chunk-PFKNQGOD.js.map} +0 -0
  317. /package/dist/{chunk-PYKEYPGA.js.map → chunk-QAOGIYQL.js.map} +0 -0
  318. /package/dist/{chunk-BOTWQMOJ.js.map → chunk-QIVDIOJG.js.map} +0 -0
  319. /package/dist/{chunk-CYPGWEOO.js.map → chunk-RCWBOOZF.js.map} +0 -0
  320. /package/dist/{chunk-IQKZWU7I.js.map → chunk-RGGU6BNB.js.map} +0 -0
  321. /package/dist/{chunk-BV3PGYSH.js.map → chunk-RYXRWMF4.js.map} +0 -0
  322. /package/dist/{chunk-QTYDDIVO.js.map → chunk-SOYN4LOZ.js.map} +0 -0
  323. /package/dist/{chunk-UFBTCHEI.js.map → chunk-TW7Z6G37.js.map} +0 -0
  324. /package/dist/{chunk-6KIQIVKA.js.map → chunk-U24UNO6X.js.map} +0 -0
  325. /package/dist/{chunk-VM2DQCZO.js.map → chunk-WMICWLC3.js.map} +0 -0
  326. /package/dist/{chunk-5NPET4ZO.js.map → chunk-WNGPZXEX.js.map} +0 -0
  327. /package/dist/{chunk-5MYWJJBQ.js.map → chunk-XLAKJHGV.js.map} +0 -0
  328. /package/dist/{chunk-RAHCZTQ3.js.map → chunk-YBB6BOW7.js.map} +0 -0
  329. /package/dist/{chunk-CVIWZYO3.js.map → chunk-YP2JBYAK.js.map} +0 -0
  330. /package/dist/{chunk-WCIJHQMP.js.map → chunk-YP7Q47E2.js.map} +0 -0
  331. /package/dist/{chunk-OW5QGJD4.js.map → chunk-Z47JQN3R.js.map} +0 -0
  332. /package/dist/{chunk-QDYWPG2R.js.map → chunk-ZF6MZYBK.js.map} +0 -0
  333. /package/dist/{chunk-BMDZJNJV.js.map → chunk-ZZWX3C6V.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{b as f}from"./chunk-KSHK3ZPX.js";import{a as F}from"./chunk-JO4722R7.js";import{b as p}from"./chunk-2YTBWEC7.js";import{g as C}from"./chunk-CNDSIADP.js";import{g as E}from"./chunk-43WMZDDH.js";import{a as n}from"./chunk-P37U34EQ.js";import{useEffect as R}from"react";import{jsx as u}from"react/jsx-runtime";function T({onSubmit:S,onError:w,onSuccess:y,onErrorWithFields:c,shouldResetForm:d,resetFields:a}){let{form:e,formId:V,costCalculatorBag:o}=f(),{formState:{isSubmitSuccessful:s}}=e;R(()=>{if(s&&d){o?.resetForm(),e.reset();return}if(s&&a){let t={...e.getValues()};a.forEach(r=>{t[r]=""}),o?.resetForm(),e.reset(t)}},[s,e,d,o,a]);let b=n(async i=>{try{let t=o?.parseFormValues(i);o?.meta?.fields&&(o.meta.fields=E(i,o.fields),o.meta.fields.employer_currency_slug=o.meta.fields.currency);let r=await o?.onSubmit(t);if(await S?.(t),r?.data&&!r.error){let l={data:{...r.data.data,employments:r.data.data.employments?.map(m=>({...m,title:t.estimation_title}))}};await y?.(l)}else throw{data:null,error:r?.error,fieldErrors:r?.fieldErrors,rawError:r?.rawError}}catch(t){let r=t,l=r.fieldErrors;if(c){let m=o?.meta?.fields,h=p(l,m);c({error:r.error,rawError:r.rawError,fieldErrors:h})}else w?.(r.error)}},"handleSubmit");return u(C,{...e,children:u("form",{id:V,onSubmit:e.handleSubmit(b),className:"space-y-4 RemoteFlows__CostCalculatorForm",children:u(F,{fields:o?.fields??[]})})})}n(T,"CostCalculatorForm");export{T as a};
2
- //# sourceMappingURL=chunk-PYKEYPGA.js.map
1
+ import{b as f}from"./chunk-KSHK3ZPX.js";import{a as F}from"./chunk-D64MAPTD.js";import{b as p}from"./chunk-2YTBWEC7.js";import{g as C}from"./chunk-CNDSIADP.js";import{g as E}from"./chunk-43WMZDDH.js";import{a as n}from"./chunk-P37U34EQ.js";import{useEffect as R}from"react";import{jsx as u}from"react/jsx-runtime";function T({onSubmit:S,onError:w,onSuccess:y,onErrorWithFields:c,shouldResetForm:d,resetFields:a}){let{form:e,formId:V,costCalculatorBag:o}=f(),{formState:{isSubmitSuccessful:s}}=e;R(()=>{if(s&&d){o?.resetForm(),e.reset();return}if(s&&a){let t={...e.getValues()};a.forEach(r=>{t[r]=""}),o?.resetForm(),e.reset(t)}},[s,e,d,o,a]);let b=n(async i=>{try{let t=o?.parseFormValues(i);o?.meta?.fields&&(o.meta.fields=E(i,o.fields),o.meta.fields.employer_currency_slug=o.meta.fields.currency);let r=await o?.onSubmit(t);if(await S?.(t),r?.data&&!r.error){let l={data:{...r.data.data,employments:r.data.data.employments?.map(m=>({...m,title:t.estimation_title}))}};await y?.(l)}else throw{data:null,error:r?.error,fieldErrors:r?.fieldErrors,rawError:r?.rawError}}catch(t){let r=t,l=r.fieldErrors;if(c){let m=o?.meta?.fields,h=p(l,m);c({error:r.error,rawError:r.rawError,fieldErrors:h})}else w?.(r.error)}},"handleSubmit");return u(C,{...e,children:u("form",{id:V,onSubmit:e.handleSubmit(b),className:"space-y-4 RemoteFlows__CostCalculatorForm",children:u(F,{fields:o?.fields??[]})})})}n(T,"CostCalculatorForm");export{T as a};
2
+ //# sourceMappingURL=chunk-QAOGIYQL.js.map
@@ -0,0 +1,2 @@
1
+ import{a as A}from"./chunk-RYXRWMF4.js";import{a as ve,b as Ge,c as Je,d as qe,e as je,f as Ke,g as Ye,h as Ze,i as Xe,j as xe,k as et,l as be,m as Se,o as ke,q as tt,r as ot,s as rt}from"./chunk-D6X2WCEG.js";import{b as Qe}from"./chunk-HPHWQU34.js";import{b as ye}from"./chunk-UOOM7V2D.js";import{a as Ce,b as I}from"./chunk-WVDTHFGS.js";import{b as S}from"./chunk-XFJPUKYR.js";import{a as ne,b as ae,c as b,d as Ae,e as Oe,f as ze,g as Ue,h as k,i as w,j as N,k as R,l as P,m as D}from"./chunk-CNDSIADP.js";import{g as Ve}from"./chunk-PAQW5BFW.js";import{a as y,e as oe}from"./chunk-43WMZDDH.js";import{a as r}from"./chunk-P37U34EQ.js";import{Fragment as Do,useEffect as To,useRef as Lt}from"react";import{Fragment as Ot,jsx as O,jsxs as se}from"react/jsx-runtime";function ie({name:e,defaultValue:t,description:o,label:n,onChange:s,multiple:m,options:d,component:f,...g}){let{components:p}=S(),{control:i}=b(),u=r((a,l,F)=>{let c=F.value?[...F.value]:[];l?c.includes(a)||F.onChange([...c,a]):F.onChange(c.filter(h=>h!==a))},"handleCheckboxChange");return O(k,{control:i,name:e,defaultValue:t,render:({field:a,fieldState:l})=>{let F=f||p?.checkbox;if(F){let c={name:e,description:o,label:n,defaultValue:t,multiple:m,options:d,...g};return O(F,{field:{...a,onChange:r(h=>{if(m){let{checked:x,value:C}=h.target;u(C,x,a),s?.(x);return}a.onChange(h),s?.(h)},"onChange")},fieldState:l,fieldData:c})}return se(w,{"data-field":e,className:y(`RemoteFlows__CheckBoxField__Item__${e}`),children:[O(R,{children:se(Ot,{children:[d&&m?O(N,{children:n}):null,d&&m?d.map(c=>se("div",{className:"flex space-x-2",children:[O(ve,{id:c.value,onCheckedChange:h=>{u(c.value,h===!0,a),s?.(h,c.value)},checked:a.value?.includes(c.value),className:"RemoteFlows__CheckBox__Input"}),O(N,{htmlFor:c.value,className:"mb-0 RemoteFlows__CheckBox__Label",children:c.label})]},c.value)):se("div",{className:"flex space-x-2",children:[O(ve,{id:e,onCheckedChange:c=>{a.onChange(c),s?.(c)},checked:a.value,className:"RemoteFlows__CheckBox__Input"}),O(N,{htmlFor:e,className:"mb-0 RemoteFlows__CheckBox__Label",children:n})]})]})}),o&&O(P,{children:o}),l.error&&O(D,{})]})}})}r(ie,"CheckBoxField");import{CalendarIcon as Gt}from"lucide-react";import{PopoverClose as Jt}from"@radix-ui/react-popover";import{ChevronLeft as zt,ChevronRight as Vt}from"lucide-react";import{DayPicker as Ut}from"react-day-picker";import{jsx as Ne}from"react/jsx-runtime";function nt({className:e,classNames:t,showOutsideDays:o=!0,...n}){return Ne(Ut,{showOutsideDays:o,className:y("p-3",e),classNames:{months:"flex flex-col sm:flex-row gap-2",month:"flex flex-col gap-4",caption:"flex justify-center pt-1 relative items-center w-full",caption_label:"text-sm font-medium",nav:"flex items-center gap-1",nav_button:y(Ce({variant:"outline"}),"size-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-x-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:y("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md",n.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"),day:y(Ce({variant:"ghost"}),"size-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground",day_range_end:"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground aria-selected:text-muted-foreground",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...t},components:{IconLeft:r(({className:s,...m})=>Ne(zt,{className:y("size-4",s),...m}),"IconLeft"),IconRight:r(({className:s,...m})=>Ne(Vt,{className:y("size-4",s),...m}),"IconRight")},...n})}r(nt,"Calendar");import*as z from"@radix-ui/react-popover";import{jsx as le}from"react/jsx-runtime";function me({...e}){return le(z.Root,{"data-slot":"popover",...e})}r(me,"Popover");function ce({...e}){return le(z.Trigger,{"data-slot":"popover-trigger",...e})}r(ce,"PopoverTrigger");function de({className:e,align:t="center",sideOffset:o=4,...n}){return le(z.Portal,{children:le(z.Content,{"data-slot":"popover-content",align:t,sideOffset:o,className:y("bg-popover text-popover-foreground 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...n})})}r(de,"PopoverContent");import{format as at}from"date-fns";import{Fragment as qt,jsx as M,jsxs as we}from"react/jsx-runtime";function st({description:e,label:t,name:o,minDate:n,maxDate:s,onChange:m,component:d,...f}){let{components:g}=S(),{control:p}=b(),i;f.meta?.mot&&typeof f.meta.mot=="number"?i=Ve(f.meta.mot):n&&(i=new Date(`${n}T00:00:00`));let u;return s&&(u=new Date(`${s}T23:59:59`)),M(k,{control:p,name:o,render:({field:a,fieldState:l})=>{let F=d||g?.date;if(F){let c={description:e,label:t,name:o,onChange:m,...i&&{minDate:i.toISOString()},...u&&{maxDate:u.toISOString()},...f};return M(F,{field:{...a,onChange:r(h=>{a.onChange(h),m?.(h)},"onChange")},fieldState:l,fieldData:c})}return we(w,{"data-field":o,className:`flex flex-col RemoteFlows__DatePickerField__Item__${o}`,children:[M(N,{className:"RemoteFlows__DatePickerField__Label",children:t}),we(me,{children:[M(ce,{asChild:!0,children:M(R,{children:M("div",{children:we(I,{type:"button",variant:"outline",className:y("w-full pl-3 text-left font-normal",!a.value&&"text-muted-foreground"),"data-testid":`date-picker-button-${o}`,children:[a.value&&M(qt,{children:at(a.value,"yyyy-MM-dd")}),M(Gt,{className:"ml-auto h-4 w-4 opacity-50"})]})})})}),M(de,{className:"w-auto p-0 RemoteFlows__DatepickerField__PopoverContent",align:"start",children:M(nt,{mode:"single",className:"RemoteFlows__DatepickerField__Calendar",selected:a.value?new Date(a.value):void 0,onSelect:c=>{a.onChange(c?at(c,"yyyy-MM-dd"):null),m?.(c)},defaultMonth:i,components:{DayContent:r(c=>M(Jt,{children:c.date.getDate()}),"DayContent")},disabled:c=>!!(i&&c<i||u&&c>u)})})]}),e?M(P,{children:e}):null,l.error&&M(D,{className:"RemoteFlows__DatePickerField__Error"})]})}})}r(st,"DatePickerField");import{useState as jt,useRef as Kt,useEffect as Yt}from"react";import{Upload as Zt,X as Xt}from"lucide-react";import{jsx as V,jsxs as ue}from"react/jsx-runtime";var Qt=r(e=>e?e.split(",").map(t=>t.trim().toUpperCase()).join(", "):null,"getAcceptedFormats");function it({onChange:e,className:t,multiple:o,accept:n,files:s}){let[m,d]=jt(s||[]),f=Kt(null);Yt(()=>{s&&s.length>0&&d(s)},[s]);let g=r(a=>{a.preventDefault(),f.current?.click()},"handleClick"),p=r(a=>{if(a.target.files&&a.target.files.length>0){let l=Array.from(a.target.files);d(l),e(a)}},"handleChange"),i=r(a=>{d(l=>l.filter(F=>F!==a))},"onRemoveFile"),u=Qt(n);return ue("div",{className:y("flex flex-col items-start gap-4",t),children:[V("input",{type:"file",ref:f,onChange:p,className:"hidden","aria-label":"File upload",multiple:o,accept:n}),ue(I,{type:"button",onClick:g,className:"gap-2",children:[V(Zt,{className:"h-4 w-4"}),"Choose File"]}),u&&ue("div",{className:"text-sm text-gray-600",children:["Accepted formats:"," ",V("span",{className:"font-medium",children:u})]}),m.length===0&&V("div",{className:"text-sm",children:o?V("span",{className:"font-medium",children:"No files selected. You can select multiple files"}):V("span",{className:"font-medium",children:"No file selected."})}),m.length>0&&m.map((a,l)=>ue("div",{className:"text-sm flex items-center gap-2",children:["Selected file: ",V("span",{className:"font-medium",children:a.name})," (",Math.round(a.size/1024)," KB)",V(I,{variant:"ghost",onClick:()=>i(a),children:V(Xt,{})})]},l))]})}r(it,"FileUploader");import{jsx as U,jsxs as ro}from"react/jsx-runtime";var eo=r(e=>new Promise((t,o)=>{let n=new FileReader;n.readAsDataURL(e),n.onload=()=>t(n.result),n.onerror=s=>o(s)}),"toBase64"),to=r(async e=>await Promise.all(e.map(async o=>{let n=await eo(o);return{name:o.name,content:n.split(",")[1],size:o.size,type:o.type}})),"convertFilesToBase64"),oo=r((e,t)=>{if(!t)return null;for(let o of e)if(o.size>t){let n=Math.round(t/1048576),s=Math.round(o.size/(1024*1024));return`File "${o.name}" exceeds maximum size of ${n}MB (file is ${s}MB)`}return null},"validateFileSize");function lt({name:e,description:t,label:o,multiple:n,onChange:s,component:m,accept:d,maxSize:f,...g}){let{components:p}=S(),{control:i,setError:u,clearErrors:a}=b(),l=r(async(F,c)=>{let h=F.target.files?Array.from(F.target.files):[],x=oo(h,f);if(x){u(e,{message:x});return}a(e);let C=await to(h);c.onChange(C),s?.(C)},"handleOnChange");return U(k,{control:i,name:e,render:({field:F,fieldState:c})=>{let h=m||p?.file;if(h){let x={name:e,description:t,label:o,multiple:n,accept:d,maxFileSize:f,...g};return U(h,{field:{...F,value:F.value,onChange:r(async C=>l(C,F),"onChange")},fieldState:c,fieldData:x})}return ro(w,{"data-field":e,className:`RemoteFlows__FileUpload__Item__${e}`,children:[U(N,{className:"RemoteFlows__FileUpload__Label",children:o}),U(R,{children:U(it,{onChange:x=>l(x,F),multiple:n,className:y("RemoteFlows__FileUpload__Input"),accept:d,files:F.value})}),t&&U("div",{className:"flex items-center justify-between",children:U(P,{className:"RemoteFlows__FileUpload__Description",children:t})}),c.error&&U(D,{className:"RemoteFlows__FileUpload__Error"})]})}})}r(lt,"FileUploadField");import{jsx as Re}from"react/jsx-runtime";function pe(e){let{components:t}=S(),{control:o}=b(),n=e.component||t?.number;return n?Re(k,{control:o,name:e.name,render:({field:s,fieldState:m})=>Re(n,{field:{...s,onChange:r(d=>{s.onChange(d),e.onChange?.(d)},"onChange")},fieldState:m,fieldData:e})}):Re(A,{...e,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$"})}r(pe,"NumberField");import{Fragment as no}from"react";import{jsx as W,jsxs as Pe}from"react/jsx-runtime";function mt({name:e,defaultValue:t,description:o,label:n,options:s,onChange:m,component:d,...f}){let{components:g}=S(),{control:p}=b();return W(k,{control:p,name:e,defaultValue:t,render:({field:i,fieldState:u})=>{let a=d||g?.radio;if(a){let l={name:e,defaultValue:t,description:o,label:n,options:s,...f};return W(a,{field:{...i,onChange:r(F=>{i.onChange(F),m?.(F)},"onChange")},fieldState:u,fieldData:l})}return Pe(w,{className:y("space-y-3",`RemoteFlows__RadioGroupField__Item__${e}`),"data-field":e,children:[W(N,{children:n}),W(R,{children:W(Ge,{"aria-label":n||e,onValueChange:l=>{i.onChange(l),m?.(l)},value:i.value,className:"flex flex-col space-y-3",children:s?.map(l=>W(no,{children:Pe(w,{"data-field":e,className:"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item",children:[W(R,{children:W(Je,{value:l.value,className:"RemoteFlows__RadioField__Input",disabled:l.disabled})}),Pe("div",{children:[W(N,{className:"font-normal mb-0 RemoteFlows__RadioField__Label",children:l.label}),l.description&&W(P,{className:"mt-2",children:l.description})]})]})},l.value))})}),o&&W(P,{children:o}),u.error&&W(D,{})]})}})}r(mt,"RadioGroupField");import{jsx as E,jsxs as ct}from"react/jsx-runtime";function dt({label:e,name:t,options:o,defaultValue:n,description:s,onChange:m,component:d,...f}){let{control:g}=b(),{components:p}=S();return E(k,{defaultValue:n,control:g,name:t,render:({field:i,fieldState:u})=>{let a=d||p?.select;if(a){let l={label:e,name:t,options:o,defaultValue:n,description:s,onChange:m,...f};return E(a,{field:{...i,onChange:r(F=>{let c=f.jsonType==="number"?Number(F):F;i.onChange(c),m?.(c)},"onChange")},fieldState:u,fieldData:l})}return ct(w,{"data-field":t,className:`RemoteFlows__SelectField__Item__${t}`,children:[E(N,{className:"RemoteFlows__SelectField__Label",children:e}),E(R,{children:E("div",{className:"relative",children:ct(qe,{value:i.value||"",onValueChange:l=>{let F=f.jsonType==="number"?Number(l):l;i.onChange(F),m?.(F)},children:[E(Ye,{className:"RemoteFlows__SelectField__Trigger","aria-invalid":!!u.error,"aria-label":e,children:E("span",{className:"absolute",children:E(Ke,{placeholder:e})})}),E(Ze,{className:"RemoteFlows__SelectField__Content",children:E(je,{className:"RemoteFlows__SelectField__Group",children:o.map(l=>E(Xe,{value:l.value,className:"RemoteFlows__SelectField__SelectItem",disabled:l.disabled,children:l.label},l.value))})})]})})}),s&&E(P,{children:s}),u.error&&E(D,{})]})}})}r(dt,"SelectField");import{useState as co}from"react";import{Fragment as ao,useState as so}from"react";import{Check as io,ChevronDownIcon as lo,X as mo}from"lucide-react";import{Command as K}from"cmdk";import{SearchIcon as sn}from"lucide-react";import{jsx as Y,jsxs as dn}from"react/jsx-runtime";function ut({className:e,...t}){return Y(K,{"data-slot":"command",className:y("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",e),...t})}r(ut,"Command");function pt({className:e,...t}){return Y(K.List,{"data-slot":"command-list",className:y("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",e),...t})}r(pt,"CommandList");function ft({...e}){return Y(K.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...e})}r(ft,"CommandEmpty");function Ft({className:e,...t}){return Y(K.Group,{"data-slot":"command-group",className:y("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",e),...t})}r(Ft,"CommandGroup");function gt({className:e,...t}){return Y(K.Separator,{"data-slot":"command-separator",className:y("bg-border -mx-1 h-px",e),...t})}r(gt,"CommandSeparator");function ht({className:e,...t}){return Y(K.Item,{"data-slot":"command-item",className:y("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}r(ht,"CommandItem");import{jsx as L,jsxs as Z}from"react/jsx-runtime";function fe({options:e,selected:t,onChange:o,placeholder:n,...s}){let[m,d]=so(!1),f=r(i=>{o(t.filter(u=>u.value!==i.value))},"handleUnselect"),g=e.some(i=>i.category),p=e.reduce((i,u)=>{let a=u.category||"Uncategorized";return i[a]||(i[a]=[]),i[a].push(u),i},{});return Z(me,{open:m,onOpenChange:d,...s,children:[L(ce,{children:Z(I,{variant:"outline",role:"combobox","aria-expanded":m,className:"w-full justify-between font-normal",type:"button",children:[L("div",{className:"flex gap-1 flex-wrap overflow-x-auto max-h-[2.5rem] items-center",children:t.length>0?t.map(i=>Z(Qe,{variant:"secondary",className:"mr-1 mb-1",children:[i.label,L("div",{role:"button",tabIndex:0,"aria-label":`remove ${i.label}`,className:"ml-1 ring-offset-background rounded-full outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-pointer",onKeyDown:u=>{u.key==="Enter"&&f(i)},onMouseDown:u=>{u.preventDefault(),u.stopPropagation()},onClick:()=>f(i),children:L(mo,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},i.label)):L("span",{className:"text-foreground",children:n})}),L(lo,{className:"size-4"})]})}),L(de,{align:"start",className:"w-full p-0",children:L(ut,{children:Z(pt,{children:[L(ft,{children:"No item found."}),Object.entries(p).map(([i,u],a)=>Z(ao,{children:[a>0&&L(gt,{}),L(Ft,{heading:g?i:void 0,children:u.map(l=>{let F=t.some(c=>c.value===l.value);return Z(ht,{onSelect:()=>{o(F?t.filter(c=>c.value!==l.value):[...t,l])},children:[L(io,{className:y("mr-2 h-4 w-4",F?"opacity-100":"opacity-0")}),l.label]},l.label)})})]},i))]})})})]})}r(fe,"MultiSelect");import{jsx as G,jsxs as uo}from"react/jsx-runtime";function _t({label:e,name:t,options:o,defaultValue:n,description:s,onChange:m,$meta:d,component:f,...g}){let{control:p}=b(),{components:i}=S(),[u,a]=co([]);return G(k,{defaultValue:n,control:p,name:t,render:({field:l,fieldState:F})=>{let c=f||i?.countries;if(c){let C={label:e,name:t,options:o,defaultValue:n,description:s,onChange:m,$meta:d,...g};return G(c,{field:{...l,onChange:r(T=>{l.onChange(T),m?.(T)},"onChange")},fieldState:F,fieldData:C})}let h=[...Object.entries(d?.regions||{}).map(([C,T])=>({value:T,label:C,category:"Regions"})),...Object.entries(d?.subregions||{}).map(([C,T])=>({value:T,label:C,category:"Subregions"})),...o.map(C=>({...C,value:C.value,label:C.label,category:"Countries"}))],x=r(C=>{let T=C.map(({value:j})=>j);l.onChange(T),m?.(T),a(C)},"handleChange");return uo(w,{"data-field":t,className:`RemoteFlows__CountryField__Item__${t}`,children:[G(N,{className:"RemoteFlows__CountryField__Label",children:e}),G(R,{children:G(fe,{options:h,selected:u,onChange:x,...g})}),s&&G(P,{children:s}),F.error&&G(D,{})]})}})}r(_t,"CountryField");import*as yt from"react";import{jsx as po}from"react/jsx-runtime";var De=yt.forwardRef(({className:e,...t},o)=>po("textarea",{className:y("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:o,...t}));De.displayName="Textarea";import{jsx as J,jsxs as Te}from"react/jsx-runtime";function vt({name:e,description:t,label:o,onChange:n,maxLength:s,component:m,...d}){let{components:f}=S(),{control:g}=b();return J(k,{control:g,name:e,render:({field:p,fieldState:i})=>{let u=m||f?.textarea;if(u){let l={name:e,description:t,label:o,maxLength:s,...d};return J(u,{field:{...p,onChange:r(F=>{p.onChange(F),n?.(F)},"onChange")},fieldState:i,fieldData:l})}let a=p.value?.length??0;return Te(w,{"data-field":e,className:`RemoteFlows__TextArea__Item__${e}`,children:[J(N,{className:"RemoteFlows__TextArea__Label",children:o}),J(R,{children:J(De,{...p,value:p.value??"",onChange:l=>{p.onChange(l),n?.(l)},className:y(i.error&&"border-red-500 focus-visible:ring-red-500","RemoteFlows__TextArea__Input"),placeholder:o})}),(t||s)&&Te("div",{className:"flex items-center justify-between",children:[t&&J(P,{className:"RemoteFlows__TextArea__Description",children:t}),s&&Te("span",{className:"text-sm ml-auto RemoteFlows__TextArea__MaxLength",children:[a,"/",s]})]}),i.error&&J(D,{className:"RemoteFlows__TextArea__Error"})]})}})}r(vt,"TextAreaField");import{jsx as $e}from"react/jsx-runtime";function Ct(e){let{components:t}=S(),{control:o}=b(),n=e.component||t?.email;return n?$e(k,{control:o,name:e.name,render:({field:s,fieldState:m})=>$e(n,{field:{...s,onChange:r(d=>{s.onChange(d),e.onChange?.(d)},"onChange")},fieldState:m,fieldData:e})}):$e(A,{...e,type:"email"})}r(Ct,"EmailField");import{jsx as xt}from"react/jsx-runtime";function bt(e){let{control:t}=b();return xt(k,{control:t,name:e.name,render:({field:o})=>xt("input",{...o,type:"hidden"})})}r(bt,"HiddenField");import vo,{useEffect as Co,useState as $t}from"react";var St=r((e,t,o)=>{if(e&&"reportValidity"in e){let n=ne(o,t);e.setCustomValidity(n&&n.message||""),e.reportValidity()}},"r"),Ie=r((e,t)=>{for(let o in t.fields){let n=t.fields[o];n&&n.ref&&"reportValidity"in n.ref?St(n.ref,o,e):n&&n.refs&&n.refs.forEach(s=>St(s,o,e))}},"o"),Nt=r((e,t)=>{t.shouldUseNativeValidation&&Ie(e,t);let o={};for(let n in e){let s=ne(t.fields,n),m=Object.assign(e[n]||{},{ref:s&&s.ref});if(fo(t.names||Object.keys(e),n)){let d=Object.assign({},ne(o,n));ae(d,"root",m),ae(o,n,d)}else ae(o,n,m)}return o},"s"),fo=r((e,t)=>{let o=kt(t);return e.some(n=>kt(n).match(`^${o}\\.\\d+`))},"i");function kt(e){return e.replace(/\]|\[/g,"")}r(kt,"n");function wt(e,t,o){return t===void 0&&(t={}),o===void 0&&(o={}),function(n,s,m){try{return Promise.resolve(function(d,f){try{var g=(t.context&&process.env.NODE_ENV==="development"&&console.warn("You should not used the yup options context. Please, use the 'useForm' context object instead"),Promise.resolve(e[o.mode==="sync"?"validateSync":"validate"](n,Object.assign({abortEarly:!1},t,{context:s}))).then(function(p){return m.shouldUseNativeValidation&&Ie({},m),{values:o.raw?Object.assign({},n):p,errors:{}}}))}catch(p){return f(p)}return g&&g.then?g.then(void 0,f):g}(0,function(d){if(!d.inner)throw d;return{values:{},errors:Nt((f=d,g=!m.shouldUseNativeValidation&&m.criteriaMode==="all",(f.inner||[]).reduce(function(p,i){if(p[i.path]||(p[i.path]={message:i.message,type:i.type}),g){var u=p[i.path].types,a=u&&u[i.type];p[i.path]=Ae(i.path,g,p,i.type,a?[].concat(a,i.message):i.message)}return p},{})),m)};var f,g}))}catch(d){return Promise.reject(d)}}}r(wt,"o");import*as $ from"yup";import Rt from"lodash.groupby";import X from"lodash.capitalize";var Pt=60,Fe=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"];function Fo(e){if(e<60)return`${e}m`;let t=Math.floor(e/Pt),o=e%Pt;return o>0?`${t}h${o}m`:`${t}h`}r(Fo,"convertBreakDurationToHours");function Dt(e){let t=e.reduce((o,n)=>n.hours+o,0);return Number(t.toFixed(2))}r(Dt,"calculateTotalWorkHours");function go(e,t){let o=t.map(({day:m})=>m.toLowerCase()),n=o.indexOf(e),s=null;for(;n<o.length&&!s;){let m=o[n],d=o[n+1],f=Fe.indexOf(m)+1;Fe[f]===d||(s=m),n+=1}return s}r(go,"findLastConsecutiveDay");function ho(e){return e.start_time&&e.end_time&&(typeof e.hours=="number"?e.hours:Number.parseInt(e.hours))>0}r(ho,"shouldSummarizeSchedule");function _o(e){return Number.parseInt(e.break_duration_minutes)>0}r(_o,"shouldSummarizeBreaks");function Tt(e){let t=e.filter(ho),o=Rt(t,f=>`${f.start_time}|${f.end_time}`),n=e.filter(_o),s=Rt(n,"break_duration_minutes"),m=Object.keys(o).map(f=>{let g=o[f],p=g[0].day,[i,u]=f.split("|"),a=`from <span>${i.replace(":","h")}</span> to <span>${u.replace(":","h")}</span>`,l=go(p,g),c=(l?g.findIndex(h=>h.day===l):-1)===g.length-1;return g.length===1?`${X(p)}, ${a}`:!c||!l?g.reduce((h,x,C)=>{let T=X(x.day);return C===g.length-1?`${h}and ${T}, ${a}`:`${h}<span>${T}</span>, `},""):`<span>${X(p)}</span> to <span>${X(l)}</span>, ${a}`}),d=Object.keys(s).reverse().map((f,g)=>{let p=g===0,i=s[f],u=Fo(parseInt(f,10));if(Object.keys(s).length===1)return`With ${u} daily breaks`;if(i.length===1){let a=`${u} break on ${X(i[0].day)}.`;return p?`With ${a}`:a}return i.reduce((a,l,F)=>{let c=X(l.day);return F===0?`${a} ${c}`:F===i.length-1?`${a}, and ${c}.`:`${a}, ${c}`},p?`With ${u} break on`:`${u} break on`)});return{workHoursSummary:m,breakSummary:d}}r(Tt,"buildWorkScheduleSummary");function Me(e){let{checked:t,start_time:o,end_time:n,break_duration_minutes:s}=e;if(!t)return 0;let[m,d]=o.split(":").map(Number),[f,g]=n.split(":").map(Number),p=m*60+d,a=(f*60+g-p-Number.parseInt(s||"0"))/60;return a===Math.floor(a)?a:Number(a.toFixed(2))}r(Me,"calculateHours");var yo={monday:"Mon",tuesday:"Tue",wednesday:"Wed",thursday:"Thu",friday:"Fri",saturday:"Sat",sunday:"Sun"};function ge(e){return yo[e]}r(ge,"getShortWeekday");import{jsx as v,jsxs as B}from"react/jsx-runtime";var xo=$.object({day:$.string().required(),checked:$.boolean().required(),start_time:$.string().matches(/^([01]\d|2[0-3]):([0-5]\d)$/,"Invalid time format (HH:mm)").when("checked",{is:!0,then:r(e=>e.required("Required"),"then"),otherwise:r(e=>e.optional().nullable(),"otherwise")}),end_time:$.string().matches(/^([01]\d|2[0-3]):([0-5]\d)$/,"Invalid time format (HH:mm)").when("checked",{is:!0,then:r(e=>e.required("Required"),"then"),otherwise:r(e=>e.optional().nullable(),"otherwise")}),hours:$.number().default(0),break_duration_minutes:$.string().default("0")}),bo=$.object({schedule:$.array(xo)});function So({defaultSchedule:e,onSubmit:t}){let[o,n]=$t(!1),s=Fe.map(c=>{let h=e.find(x=>x.day.toLowerCase()===ge(c).toLowerCase()||x.day.toLowerCase()===c.toLowerCase());return h?{...h,day:ge(c),checked:!0}:{...e[0],checked:!1,day:ge(c)}}),m=ze({defaultValues:{schedule:s},resolver:wt(bo)}),{handleSubmit:d,watch:f,reset:g,control:p,formState:i}=m,{fields:u}=Oe({name:"schedule",control:p}),a=f("schedule");function l(c){let h=c.schedule.filter(({checked:x})=>x).map(x=>({...x,hours:Me(x)}));t(h),n(!1)}r(l,"handleSubmitWorkingHours");function F(){g(),n(!1)}return r(F,"handleCancel"),v("div",{className:"flex items-center justify-between",children:B(xe,{open:o,onOpenChange:n,children:[v(et,{asChild:!0,children:v(I,{variant:"link",className:"flex items-center p-0 RemoteFlows__WorkScheduleSelectionForm__Trigger",children:"Edit Schedule"})}),B(be,{className:"max-w-5xl max-h-[90vh] overflow-y-auto px-8 py-4 RemoteFlows__WorkScheduleSelectionForm__Content",children:[v(Se,{children:v(ke,{className:"RemoteFlows__WorkScheduleSelectionForm__Title",children:"Edit employee working hours"})}),v(Ue,{...m,children:B("form",{className:"space-y-4 RemoteFlows__WorkScheduleSelectionForm__Form",children:[B("div",{className:"rounded-lg",children:[v("p",{className:"text-gray-600 text-sm mb-4 RemoteFlows__WorkScheduleSelectionForm__Description",children:"The times displayed are in the employee's time zone in the 24-hour format."}),B("div",{className:"grid grid-cols-12 gap-4 text-sm font-medium text-gray-500 uppercase tracking-wide RemoteFlows__WorkScheduleSelectionForm__Header",children:[v("div",{className:"col-span-2"}),v("div",{className:"col-span-3 text-center",children:"START"}),v("div",{className:"col-span-1 text-center"}),v("div",{className:"col-span-3 text-center",children:"END"}),v("div",{className:"col-span-2 text-center",children:"HOURS"})]}),v("div",{className:"RemoteFlows__WorkScheduleSelectionForm__Rows",children:u.map((c,h)=>{let x=a[h],C=Me(x);return B(vo.Fragment,{children:[B("div",{className:"grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Hours",children:[v("div",{className:"col-span-2 flex items-center gap-3",children:v(ie,{label:c.day,name:`schedule.${h}.checked`})}),v("div",{className:"col-span-3",children:v(A,{name:`schedule.${h}.start_time`,includeErrorMessage:!1})}),v("div",{className:"col-span-1 text-center text-gray-500",children:"to"}),v("div",{className:"col-span-3",children:v(A,{name:`schedule.${h}.end_time`,includeErrorMessage:!1})}),v("div",{className:"col-span-2 text-center text-gray-600",children:isNaN(C)?"-":`${C} hours`})]}),B("div",{className:"grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Break",children:[v("div",{className:"col-span-2 text-gray-500",children:"Break"}),v("div",{className:"col-span-2",children:v(A,{name:`schedule.${h}.break_duration_minutes`,includeErrorMessage:!1})}),v("div",{className:"col-span-2 text-gray-500",children:"minutes"}),v("div",{className:"col-span-4"})]})]},c.id)})})]}),Object.keys(i.errors).length>0&&v("p",{className:"text-destructive text-sm mb-0",children:"Invalid time format (HH:mm)"}),B("div",{className:"flex gap-4 pt-4",children:[v(I,{type:"button",className:"reset-button",variant:"outline",onClick:F,children:"Cancel"}),v(I,{type:"button",className:"submit-button",onClick:d(l),children:"Save Schedule"})]})]})})]})]})})}r(So,"WorkScheduleSelectionForm");function It(e){let{components:t}=S(),{setValue:o,control:n,watch:s}=b(),m=s(e.name),[d,f]=$t(m),{workHoursSummary:g,breakSummary:p}=Tt(d),i=Dt(d);Co(()=>{o(e.name,d)},[d,e.name,o]);function u(l){f(l)}r(u,"onSubmit");let a=e.component||t?.["work-schedule"];return a?v(k,{control:n,name:e.name,render:({field:l,fieldState:F})=>v(a,{field:{...l,onChange:r(c=>{l.onChange(c),e.onChange?.(c)},"onChange")},fieldState:F,fieldData:{...e,defaultFormattedValue:{workHoursSummary:g,breakSummary:p,totalWorkHours:i}}})}):B("div",{className:"flex flex-col gap-3 RemoteFlows__WorkScheduleField",children:[v("p",{className:"text-sm RemoteFlows__WorkScheduleField__Title",children:"Work hours"}),B("div",{className:"flex flex-col gap-1 RemoteFlows__WorkScheduleField__Summary",children:[v("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__WorkHours",dangerouslySetInnerHTML:{__html:g.join(", ")}}),v("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Break",children:p.join()}),B("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Total",children:["Total of ",v("span",{children:i})," hours per week"]}),v(So,{defaultSchedule:d,onSubmit:u})]})]})}r(It,"WorkScheduleField");import{useState as ko}from"react";import{jsx as q,jsxs as No}from"react/jsx-runtime";function Mt({label:e,name:t,options:o,defaultValue:n,description:s,onChange:m,component:d,...f}){let{control:g}=b(),{components:p}=S(),[i,u]=ko();return q(k,{defaultValue:n,control:g,name:t,render:({field:a,fieldState:l})=>{let F=d||p?.["multi-select"];if(F){let h={label:e,name:t,options:o,defaultValue:n,description:s,onChange:m,...f};return q(F,{field:{...a,onChange:r(x=>{a.onChange(x),m?.(x)},"onChange")},fieldState:l,fieldData:h})}let c=i||o.filter(h=>a.value.includes(h.value));return No(w,{"data-field":t,className:`RemoteFlows__SelectField__Item__${t}`,children:[q(N,{className:"RemoteFlows__SelectField__Label",children:e}),q(R,{children:q(fe,{options:o,selected:c,onChange:h=>{let x=h.map(({value:C})=>C);a.onChange(x),m?.(x),u(h)},...f})}),s&&q(P,{children:s}),l.error&&q(D,{})]})}})}r(Mt,"MultiSelectField");import{jsx as wo}from"react/jsx-runtime";var Et=r(e=>wo(pe,{maxLength:15,...e}),"MoneyField");var Ee={checkbox:ie,text:A,email:Ct,money:Et,select:dt,"multi-select":Mt,radio:mt,number:pe,file:lt,date:st,textarea:vt,countries:_t,hidden:bt,"work-schedule":It};import{AlertCircle as Ro}from"lucide-react";import{jsx as he,jsxs as Po}from"react/jsx-runtime";function Wt({title:e,description:t,severity:o}){let{components:n}=S();if(n?.statement){let s=n?.statement;return he(s,{data:{title:e,description:oe(t),severity:o}})}return Po(tt,{variant:"warning",children:[he(Ro,{className:"h-4 w-4"}),e&&he(ot,{children:e}),t&&he(rt,{dangerouslySetInnerHTML:{__html:oe(t)}})]})}r(Wt,"Statement");import{Fragment as Io,jsx as H,jsxs as Q}from"react/jsx-runtime";var $o=r(({isExpanded:e,onToggle:t,className:o,...n})=>H(I,{type:"button",className:y("RemoteFlows__Button RemoteFlows__FieldSetField__ToggleButton",o),variant:"default",onClick:t,...n,children:e?"Remove":"Define"}),"DefaultToggleButton");function Bt({label:e,name:t,fields:o,description:n,components:s,statement:m,isFlatFieldset:d,extra:f,variant:g="outset",features:p,meta:i}){let{helpCenter:u}=i||{},{watch:a,setValue:l,trigger:F,formState:c}=b(),{components:h}=S(),x=p?.toggle?.stateField,C=x?a(x):p?.toggle?.defaultExpanded??!0,T=o.map(({name:_})=>`${t}.${_}`),j=a(T),We=Lt(j),ee=Lt(null),Ht=r(()=>{x&&l(x,!C)},"toggleExpanded");To(()=>{let _=j,re=We.current,_e=c.isSubmitted||c.submitCount>0,He=!1;for(let te=0;te<_.length;te++)if(_[te]!==void 0&&re[te]!==_[te]){He=!0;break}return He&&_e&&(ee.current&&clearTimeout(ee.current),ee.current=setTimeout(()=>{F()},50)),We.current=[..._],()=>{ee.current&&clearTimeout(ee.current)}},[j,F,c.isSubmitted,c.submitCount]);let At=h?.fieldsetToggle||$o,Le=`${t}-content`,Be=`${t}-header`;return Q("fieldset",{className:y("border-1 border-input p-4 rounded-xl","RemoteFlows__FieldSetField",`RemoteFlows__FieldSetField__${t}`),children:[H("legend",{className:y("text-sm font-semibold px-2",g==="inset"&&"hidden"),children:e}),u?.callToAction&&u?.id&&g==="outset"&&H(ye,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:u.id,children:u.callToAction}),g==="inset"&&Q(Io,{children:[Q("div",{className:"RemoteFlows__FieldSetField__Header",id:Be,"data-state":C?"expanded":"collapsed","aria-expanded":C,children:[H("h3",{className:y("RemoteFlows__FieldSetField__Title"),children:e}),p?.toggle?.enabled&&H(At,{isExpanded:C,onToggle:Ht,"aria-expanded":C,"aria-controls":Le,"aria-label":`${C?"Hide":"Show"} ${e}`,className:y("RemoteFlows__FieldSetField__Toggle",p.toggle?.className),children:C?p.toggle.labels?.collapse??"Remove":p.toggle.labels?.expand??"Define"})]}),u?.callToAction&&u?.id&&H(ye,{className:"RemoteFlows__FieldSetField__HelpCenterLink mb-3",zendeskId:u.id,children:u.callToAction})]}),C&&Q("div",{id:Le,"aria-labelledby":Be,role:"region",children:[n?H("div",{className:"mb-5 RemoteFlows__FieldSetField__Description",dangerouslySetInnerHTML:{__html:oe(n)}}):null,Q("div",{className:"grid gap-4",children:[o.map(_=>{if(_.calculateDynamicProperties&&(_={..._,..._.calculateDynamicProperties(j,_)||{}}),_.isVisible===!1||_.deprecated)return null;if(_.Component){let{Component:_e}=_;return H(_e,{..._},_.name)}if(_.type==="fieldset")return H(Bt,{..._,name:`${d?_.name:`${t}.${_.name}`}`,components:s},`${d?_.name:`${t}.${_.name}`}`);if(_.type==="fieldset-flat")return H(Bt,{..._,name:`${d?_.name:`${t}.${_.name}`}`,components:s,isFlatFieldset:!0},`${d?_.name:`${t}.${_.name}`}`);let re=Ee[_.type];return _.type==="select"&&_.multiple&&(re=Ee["multi-select"]),Q(Do,{children:[H(re,{..._,name:`${d?_.name:`${t}.${_.name}`}`,component:s?.[_.type]}),_.extra?_.extra:null]},`${d?_.name:`${t}.${_.name}`}`)}),f||null,m?H(Wt,{...m}):null]})]})]})}r(Bt,"FieldSetField");export{Ee as a,Wt as b,Bt as c};
2
+ //# sourceMappingURL=chunk-QGWCUGLN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/CheckBoxField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/ui/file-uploader.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/form/fields/CountryField.tsx","../src/components/ui/multi-select.tsx","../src/components/ui/command.tsx","../src/components/ui/textarea.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/HiddenField.tsx","../src/components/form/fields/WorkScheduleField.tsx","../node_modules/@hookform/resolvers/src/validateFieldsNatively.ts","../node_modules/@hookform/resolvers/src/toNestErrors.ts","../node_modules/@hookform/resolvers/yup/src/yup.ts","../src/components/form/fields/workScheduleUtils.ts","../src/components/form/fields/MultiSelectField.tsx","../src/components/form/fields/MoneyField.tsx","../src/components/form/fields/baseFields.tsx","../src/components/form/Statement.tsx"],"sourcesContent":["import { useFormContext } from 'react-hook-form';\nimport { Fragment, useEffect, useRef } from 'react';\nimport { baseFields } from '@/src/components/form/fields/baseFields';\nimport { cn, sanitizeHtml } from '@/src/lib/utils';\nimport {\n $TSFixMe,\n Components,\n FieldSetToggleComponentProps,\n} from '@/src/types/remoteFlows';\nimport { Statement, StatementProps } from '@/src/components/form/Statement';\nimport { useFormFields } from '@/src/context';\nimport { Button } from '@/src/components/ui/button';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { SupportedTypes } from './types';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n Component?: React.ComponentType<$TSFixMe>;\n inputType: SupportedTypes;\n multiple?: boolean;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetFeatures = {\n toggle?: {\n enabled: boolean;\n defaultExpanded?: boolean;\n stateField?: string;\n labels?: {\n expand: string;\n collapse: string;\n };\n className?: string;\n };\n};\n\nexport type FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n features?: FieldSetFeatures;\n components: Components;\n statement?: StatementProps;\n isFlatFieldset: boolean;\n extra?: React.ReactNode;\n variant: 'outset' | 'inset';\n meta?: {\n helpCenter?: {\n callToAction: string;\n id: number;\n url: string;\n label: string;\n };\n } & Record<string, $TSFixMe>;\n};\n\nconst DefaultToggleButton = ({\n isExpanded,\n onToggle,\n className,\n ...props\n}: FieldSetToggleComponentProps) => (\n <Button\n type='button'\n className={cn(\n 'RemoteFlows__Button RemoteFlows__FieldSetField__ToggleButton',\n className,\n )}\n variant='default'\n onClick={onToggle}\n {...props}\n >\n {isExpanded ? 'Remove' : 'Define'}\n </Button>\n);\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n components,\n statement,\n isFlatFieldset,\n extra,\n variant = 'outset',\n features,\n meta,\n}: FieldSetProps) {\n const { helpCenter } = meta || {};\n const { watch, setValue, trigger, formState } = useFormContext();\n const { components: formComponents } = useFormFields();\n\n // Get expanded state from form state if stateField is provided\n const stateField = features?.toggle?.stateField;\n const isExpanded = stateField\n ? watch(stateField)\n : (features?.toggle?.defaultExpanded ?? true);\n\n const fieldNames = fields.map(\n ({ name: fieldName }) => `${name}.${fieldName}`,\n );\n const watchedValues = watch(fieldNames);\n const prevValuesRef = useRef<string[]>(watchedValues);\n const triggerTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const toggleExpanded = () => {\n if (stateField) {\n setValue(stateField, !isExpanded);\n }\n };\n\n useEffect(() => {\n const currentValues = watchedValues;\n const previousValues = prevValuesRef.current;\n const hasBeenSubmitted = formState.isSubmitted || formState.submitCount > 0;\n\n // Check if any value has changed\n let hasChanged = false;\n for (let i = 0; i < currentValues.length; i++) {\n if (\n currentValues[i] !== undefined &&\n previousValues[i] !== currentValues[i]\n ) {\n hasChanged = true;\n // This is to prevent the form from triggering validation too many times\n break;\n }\n }\n // If changes detected and we haven't triggered yet, run trigger\n if (hasChanged && hasBeenSubmitted) {\n // We need to debounce the validation trigger so that tests don't freeze\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n triggerTimeoutRef.current = setTimeout(() => {\n trigger();\n }, 50);\n }\n\n prevValuesRef.current = [...currentValues];\n\n return () => {\n if (triggerTimeoutRef.current) {\n clearTimeout(triggerTimeoutRef.current);\n }\n };\n }, [watchedValues, trigger, formState.isSubmitted, formState.submitCount]);\n\n const ToggleComponent = formComponents?.fieldsetToggle || DefaultToggleButton;\n const contentId = `${name}-content`;\n const headerId = `${name}-header`;\n\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField`,\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend\n className={cn(\n 'text-sm font-semibold px-2',\n variant === 'inset' && 'hidden',\n )}\n >\n {label}\n </legend>\n {helpCenter?.callToAction && helpCenter?.id && variant === 'outset' && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n {variant === 'inset' && (\n <>\n <div\n className='RemoteFlows__FieldSetField__Header'\n id={headerId}\n data-state={isExpanded ? 'expanded' : 'collapsed'}\n aria-expanded={isExpanded}\n >\n <h3 className={cn('RemoteFlows__FieldSetField__Title')}>{label}</h3>\n {features?.toggle?.enabled && (\n <ToggleComponent\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n aria-expanded={isExpanded}\n aria-controls={contentId}\n aria-label={`${isExpanded ? 'Hide' : 'Show'} ${label}`}\n className={cn(\n 'RemoteFlows__FieldSetField__Toggle',\n features.toggle?.className,\n )}\n >\n {isExpanded\n ? (features.toggle.labels?.collapse ?? 'Remove')\n : (features.toggle.labels?.expand ?? 'Define')}\n </ToggleComponent>\n )}\n </div>\n {helpCenter?.callToAction && helpCenter?.id && (\n <ZendeskTriggerButton\n className='RemoteFlows__FieldSetField__HelpCenterLink mb-3'\n zendeskId={helpCenter.id}\n >\n {helpCenter.callToAction}\n </ZendeskTriggerButton>\n )}\n </>\n )}\n {isExpanded && (\n <div id={contentId} aria-labelledby={headerId} role='region'>\n {description ? (\n <div\n className='mb-5 RemoteFlows__FieldSetField__Description'\n dangerouslySetInnerHTML={{ __html: sanitizeHtml(description) }}\n />\n ) : null}\n <div className='grid gap-4'>\n {fields.map((field: $TSFixMe) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(watchedValues, field) ||\n {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<$TSFixMe>;\n };\n return <Component key={field.name} {...field} />;\n }\n\n // Handle nested fieldsets\n if (field.type === 'fieldset') {\n return (\n <FieldSetField\n key={`${isFlatFieldset ? field.name : `${name}.${field.name}`}`}\n {...field}\n name={`${isFlatFieldset ? field.name : `${name}.${field.name}`}`}\n components={components}\n />\n );\n }\n\n if (field.type === 'fieldset-flat') {\n return (\n <FieldSetField\n key={`${isFlatFieldset ? field.name : `${name}.${field.name}`}`}\n {...field}\n name={`${isFlatFieldset ? field.name : `${name}.${field.name}`}`}\n components={components}\n isFlatFieldset\n />\n );\n }\n\n let FieldComponent =\n baseFields[\n field.type as Exclude<\n SupportedTypes,\n 'fieldset' | 'fieldset-flat'\n >\n ];\n\n if (field.type === 'select' && field.multiple) {\n FieldComponent = baseFields['multi-select'];\n }\n\n return (\n <Fragment\n key={`${isFlatFieldset ? field.name : `${name}.${field.name}`}`}\n >\n <FieldComponent\n {...field}\n name={`${isFlatFieldset ? field.name : `${name}.${field.name}`}`}\n component={components?.[field.type as SupportedTypes]}\n />\n {field.extra ? field.extra : null}\n </Fragment>\n );\n })}\n {extra ? extra : null}\n {statement ? <Statement {...statement} /> : null}\n </div>\n </div>\n )}\n </fieldset>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Checkbox } from '@/src/components/ui/checkbox';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { CheckedState } from '@radix-ui/react-checkbox';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\n\nexport type CheckBoxFieldProps = {\n name: string;\n} & Partial<\n JSFField & {\n onChange?: (checked: any, optionId?: string) => void;\n component?: Components['checkbox'];\n }\n>;\n\nexport function CheckBoxField({\n name,\n defaultValue,\n description,\n label,\n onChange,\n multiple,\n options,\n component,\n ...rest\n}: CheckBoxFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const handleCheckboxChange = (\n optionId: string,\n checked: boolean,\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const currentValues = field.value ? [...field.value] : [];\n\n if (checked) {\n // Add the value if it's not already in the array\n if (!currentValues.includes(optionId)) {\n field.onChange([...currentValues, optionId]);\n }\n } else {\n // Remove the value from the array\n field.onChange(currentValues.filter((value) => value !== optionId));\n }\n };\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const CustomCheckboxField = component || components?.checkbox;\n if (CustomCheckboxField) {\n const customCheckboxFieldProps = {\n name,\n description,\n label,\n defaultValue,\n multiple,\n options,\n ...rest,\n };\n return (\n <CustomCheckboxField\n field={{\n ...field,\n onChange: (evt: any) => {\n if (multiple) {\n const { checked, value } = evt.target;\n handleCheckboxChange(value, checked, field);\n onChange?.(checked);\n return;\n }\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customCheckboxFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={cn(`RemoteFlows__CheckBoxField__Item__${name}`)}\n >\n <FormControl>\n <>\n {options && multiple ? <FormLabel>{label}</FormLabel> : null}\n\n {options && multiple ? (\n options.map((option) => (\n <div key={option.value} className='flex space-x-2'>\n <Checkbox\n id={option.value}\n onCheckedChange={(checked: CheckedState) => {\n handleCheckboxChange(\n option.value,\n checked === true,\n field,\n );\n onChange?.(checked, option.value);\n }}\n checked={field.value?.includes(option.value)}\n className='RemoteFlows__CheckBox__Input'\n />\n <FormLabel\n htmlFor={option.value}\n className='mb-0 RemoteFlows__CheckBox__Label'\n >\n {option.label}\n </FormLabel>\n </div>\n ))\n ) : (\n <div className='flex space-x-2'>\n <Checkbox\n id={name}\n onCheckedChange={(event: CheckedState) => {\n field.onChange(event);\n onChange?.(event);\n }}\n checked={field.value}\n className='RemoteFlows__CheckBox__Input'\n />\n <FormLabel\n htmlFor={name}\n className='mb-0 RemoteFlows__CheckBox__Label'\n >\n {label}\n </FormLabel>\n </div>\n )}\n </>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { CalendarIcon } from 'lucide-react';\nimport { useFormContext } from 'react-hook-form';\nimport { PopoverClose } from '@radix-ui/react-popover';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Calendar } from '@/src/components/ui/calendar';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/src/components/ui/popover';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { getMinStartDate } from '@/src/components/form/utils';\nimport { format } from 'date-fns';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: any) => void;\n component?: Components['date'];\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n maxDate,\n onChange,\n component,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n let minDateValue: Date;\n if (rest.meta?.mot && typeof rest.meta.mot === 'number') {\n minDateValue = getMinStartDate(rest.meta.mot);\n } else if (minDate) {\n minDateValue = new Date(`${minDate}T00:00:00`);\n }\n\n let maxDateValue: Date | undefined;\n if (maxDate) {\n maxDateValue = new Date(`${maxDate}T23:59:59`);\n }\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomDatePickerField = component || components?.date;\n\n if (CustomDatePickerField) {\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n onChange,\n ...(minDateValue && { minDate: minDateValue.toISOString() }),\n ...(maxDateValue && { maxDate: maxDateValue.toISOString() }),\n ...rest,\n };\n return (\n <CustomDatePickerField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={`flex flex-col RemoteFlows__DatePickerField__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__DatePickerField__Label'>\n {label}\n </FormLabel>\n <Popover>\n <PopoverTrigger asChild>\n <FormControl>\n <div>\n <Button\n type='button'\n variant={'outline'}\n className={cn(\n 'w-full pl-3 text-left font-normal',\n !field.value && 'text-muted-foreground',\n )}\n data-testid={`date-picker-button-${name}`}\n >\n {field.value && <>{format(field.value, 'yyyy-MM-dd')}</>}\n <CalendarIcon className='ml-auto h-4 w-4 opacity-50' />\n </Button>\n </div>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent\n className={`w-auto p-0 RemoteFlows__DatepickerField__PopoverContent`}\n align='start'\n >\n <Calendar\n mode='single'\n className='RemoteFlows__DatepickerField__Calendar'\n selected={field.value ? new Date(field.value) : undefined}\n onSelect={(date) => {\n field.onChange(date ? format(date, 'yyyy-MM-dd') : null);\n onChange?.(date);\n }}\n defaultMonth={minDateValue}\n components={{\n DayContent: (props) => {\n return (\n <PopoverClose>{props.date.getDate()}</PopoverClose>\n );\n },\n }}\n disabled={(date: Date) => {\n if (minDateValue && date < minDateValue) return true;\n if (maxDateValue && date > maxDateValue) return true;\n return false;\n }}\n />\n </PopoverContent>\n </Popover>\n {description ? (\n <FormDescription>{description}</FormDescription>\n ) : null}\n {fieldState.error && (\n <FormMessage className='RemoteFlows__DatePickerField__Error' />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '@/src/lib/utils';\nimport { buttonVariants } from '@/src/components/ui/button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col sm:flex-row gap-2',\n month: 'flex flex-col gap-4',\n caption: 'flex justify-center pt-1 relative items-center w-full',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center gap-1',\n nav_button: cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n ),\n nav_button_previous: 'absolute left-1',\n nav_button_next: 'absolute right-1',\n table: 'w-full border-collapse space-x-1',\n head_row: 'flex',\n head_cell:\n 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',\n row: 'flex w-full mt-2',\n cell: cn(\n 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&: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'\n : '[&:has([aria-selected])]:rounded-md',\n ),\n day: cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-8 p-0 font-normal aria-selected:opacity-100',\n ),\n day_range_start:\n 'day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_range_end:\n 'day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_selected:\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n day_today: 'bg-accent text-accent-foreground',\n day_outside:\n 'day-outside text-muted-foreground aria-selected:text-muted-foreground',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle:\n 'aria-selected:bg-accent aria-selected:text-accent-foreground',\n day_hidden: 'invisible',\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn('size-4', className)} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn('size-4', className)} {...props} />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot='popover' {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot='popover-trigger' {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot='popover-content'\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot='popover-anchor' {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Button } from '@/src/components/ui/button';\nimport { Upload, X } from 'lucide-react';\nimport { cn } from '@/src/lib/utils';\n\n// Convert accept string to readable format (e.g., \".pdf, .doc\" -> \"PDF, DOC\")\nconst getAcceptedFormats = (accept?: string) => {\n if (!accept) return null;\n return accept\n .split(',')\n .map((ext) => ext.trim().toUpperCase())\n .join(', ');\n};\n\ntype FileUploaderProps = {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n className?: string;\n multiple?: boolean;\n accept?: string;\n files?: File[];\n};\n\nexport function FileUploader({\n onChange,\n className,\n multiple,\n accept,\n files: externalFiles,\n}: FileUploaderProps) {\n const [files, setFiles] = useState<File[]>(externalFiles || []);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (externalFiles && externalFiles.length > 0) {\n setFiles(externalFiles);\n }\n }, [externalFiles]);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const newFiles = Array.from(e.target.files);\n\n setFiles(newFiles);\n onChange(e);\n }\n };\n\n const onRemoveFile = (file: File) => {\n setFiles((prevFiles) => prevFiles.filter((f) => f !== file));\n };\n\n const acceptedFormats = getAcceptedFormats(accept);\n\n return (\n <div className={cn('flex flex-col items-start gap-4', className)}>\n <input\n type='file'\n ref={inputRef}\n onChange={handleChange}\n className='hidden'\n aria-label='File upload'\n multiple={multiple}\n accept={accept}\n />\n <Button type='button' onClick={handleClick} className='gap-2'>\n <Upload className='h-4 w-4' />\n Choose File\n </Button>\n {acceptedFormats && (\n <div className='text-sm text-gray-600'>\n Accepted formats:{' '}\n <span className='font-medium'>{acceptedFormats}</span>\n </div>\n )}\n {files.length === 0 && (\n <div className='text-sm'>\n {!multiple ? (\n <span className='font-medium'>No file selected.</span>\n ) : (\n <span className='font-medium'>\n No files selected. You can select multiple files\n </span>\n )}\n </div>\n )}\n {files.length > 0 &&\n files.map((file, index) => (\n <div key={index} className='text-sm flex items-center gap-2'>\n Selected file: <span className='font-medium'>{file.name}</span> (\n {Math.round(file.size / 1024)} KB)\n <Button variant='ghost' onClick={() => onRemoveFile(file)}>\n <X />\n </Button>\n </div>\n ))}\n </div>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\nimport { FileUploader } from '../../ui/file-uploader';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\nconst toBase64 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n};\n\nconst convertFilesToBase64 = async (files: File[]) => {\n const base64Files = await Promise.all(\n files.map(async (file) => {\n const base64 = await toBase64(file);\n return {\n name: file.name,\n content: base64.split(',')[1],\n size: file.size,\n type: file.type,\n };\n }),\n );\n return base64Files;\n};\n\nconst validateFileSize = (files: File[], maxSize?: number): string | null => {\n if (!maxSize) return null;\n\n for (const file of files) {\n if (file.size > maxSize) {\n const maxSizeMB = Math.round(maxSize / (1024 * 1024));\n const fileSizeMB = Math.round(file.size / (1024 * 1024));\n return `File \"${file.name}\" exceeds maximum size of ${maxSizeMB}MB (file is ${fileSizeMB}MB)`;\n }\n }\n return null;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: any) => void;\n multiple?: boolean;\n component?: Components['file'];\n maxSize?: number;\n accept?: string;\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n component,\n accept,\n maxSize,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control, setError, clearErrors } = useFormContext();\n\n const handleOnChange = async (\n event: React.ChangeEvent<HTMLInputElement>,\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const files = event.target.files ? Array.from(event.target.files) : [];\n\n const sizeError = validateFileSize(files, maxSize);\n if (sizeError) {\n setError(name, { message: sizeError });\n return;\n }\n\n clearErrors(name);\n const base64Files = await convertFilesToBase64(files);\n field.onChange(base64Files);\n onChange?.(base64Files);\n };\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomFileUploadField = component || components?.file;\n if (CustomFileUploadField) {\n const customFileUploadFieldProps = {\n name,\n description,\n label,\n multiple,\n accept,\n maxFileSize: maxSize,\n ...rest,\n };\n return (\n <CustomFileUploadField\n field={{\n ...field,\n value: field.value,\n onChange: async (value: any) => handleOnChange(value, field),\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__FileUpload__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__FileUpload__Label'>\n {label}\n </FormLabel>\n <FormControl>\n <FileUploader\n onChange={(evt) => handleOnChange(evt, field)}\n multiple={multiple}\n className={cn('RemoteFlows__FileUpload__Input')}\n accept={accept}\n files={field.value}\n />\n </FormControl>\n {description && (\n <div className='flex items-center justify-between'>\n <FormDescription className='RemoteFlows__FileUpload__Description'>\n {description}\n </FormDescription>\n </div>\n )}\n {fieldState.error && (\n <FormMessage className='RemoteFlows__FileUpload__Error' />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextField, TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\nexport type NumberFieldProps = TextFieldProps & {\n component?: Components['number'];\n};\n\nexport function NumberField(props: NumberFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const CustomNumberField = props.component || components?.number;\n\n if (CustomNumberField) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <CustomNumberField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={props}\n />\n );\n }}\n />\n );\n }\n\n return (\n <TextField {...props} type='text' inputMode='decimal' pattern='^[0-9.]*$' />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Fragment } from 'react';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { RadioGroup, RadioGroupItem } from '@/src/components/ui/radio-group';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: any) => void;\n component?: Components['radio'];\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n component,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n const CustomRadioGroupField = component || components?.radio;\n if (CustomRadioGroupField) {\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n ...rest,\n };\n return (\n <CustomRadioGroupField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n className={cn(\n 'space-y-3',\n `RemoteFlows__RadioGroupField__Item__${name}`,\n )}\n data-field={name}\n >\n <FormLabel>{label}</FormLabel>\n <FormControl>\n <RadioGroup\n aria-label={label || name}\n onValueChange={(value: string) => {\n field.onChange(value);\n onChange?.(value);\n }}\n value={field.value}\n className='flex flex-col space-y-3'\n >\n {options?.map((option) => (\n <Fragment key={option.value}>\n <FormItem\n data-field={name}\n className='flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item'\n >\n <FormControl>\n <RadioGroupItem\n value={option.value}\n className='RemoteFlows__RadioField__Input'\n disabled={option.disabled}\n />\n </FormControl>\n <div>\n <FormLabel className='font-normal mb-0 RemoteFlows__RadioField__Label'>\n {option.label}\n </FormLabel>\n {option.description && (\n <FormDescription className='mt-2'>\n {option.description}\n </FormDescription>\n )}\n </div>\n </FormItem>\n </Fragment>\n ))}\n </RadioGroup>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/src/components/ui/select';\nimport { useFormFields } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string | number; label: string }>;\n className?: string;\n onChange?: (value: any) => void;\n component?: Components['select'];\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomSelectField = component || components?.select;\n if (CustomSelectField) {\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n ...rest,\n };\n return (\n <CustomSelectField\n field={{\n ...field,\n onChange: (value: string | number) => {\n const maybeCastValue =\n rest.jsonType === 'number' ? Number(value) : value;\n field.onChange(maybeCastValue);\n onChange?.(maybeCastValue);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__SelectField__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__SelectField__Label'>\n {label}\n </FormLabel>\n <FormControl>\n <div className='relative'>\n <Select\n value={field.value || ''}\n onValueChange={(value: string) => {\n // For some reason react-hook-form converts option values from numbers to strings.\n // If a value can be cast to a number, the field in the form state should use the numeric type instead.\n const maybeCastValue =\n rest.jsonType === 'number' ? Number(value) : value;\n field.onChange(maybeCastValue);\n onChange?.(maybeCastValue);\n }}\n >\n <SelectTrigger\n className='RemoteFlows__SelectField__Trigger'\n aria-invalid={Boolean(fieldState.error)}\n aria-label={label}\n >\n <span className='absolute'>\n <SelectValue placeholder={label} />\n </span>\n </SelectTrigger>\n <SelectContent className='RemoteFlows__SelectField__Content'>\n <SelectGroup className='RemoteFlows__SelectField__Group'>\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className='RemoteFlows__SelectField__SelectItem'\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useState } from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { MultiSelect } from '../../ui/multi-select';\n\ntype CountryFieldProps = JSFField & {\n options: Array<{ value: string; label: string }>;\n onChange?: (value: any) => void;\n $meta: {\n regions: Record<string, string[]>;\n subregions: Record<string, string[]>;\n };\n component?: Components['countries'];\n};\n\nexport function CountryField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n component,\n ...rest\n}: CountryFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const [selected, setSelected] = useState<any[]>([]);\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomSelectField = component || components?.countries;\n\n if (CustomSelectField) {\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n $meta,\n ...rest,\n };\n return (\n <CustomSelectField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }\n\n const countryOptions = [\n ...Object.entries($meta?.regions || {}).map(([key, value]) => ({\n value,\n label: key,\n category: 'Regions',\n })),\n ...Object.entries($meta?.subregions || {}).map(([key, value]) => ({\n value,\n label: key,\n category: 'Subregions',\n })),\n ...options.map((option) => ({\n ...option,\n value: option.value,\n label: option.label,\n category: 'Countries',\n })),\n ];\n\n const handleChange = (rawValues: any[]) => {\n const values = rawValues.map(({ value }) => value);\n field.onChange(values);\n onChange?.(values);\n setSelected(rawValues);\n };\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__CountryField__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__CountryField__Label'>\n {label}\n </FormLabel>\n <FormControl>\n <MultiSelect\n options={countryOptions}\n selected={selected}\n onChange={handleChange}\n {...rest}\n />\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","import { Fragment, useState } from 'react';\nimport { Check, ChevronDownIcon, X } from 'lucide-react';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Badge } from '@/src/components/ui/badge';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from '@/src/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/src/components/ui/popover';\nimport { cn } from '@/src/lib/utils';\n\nexport type Option = {\n label: string;\n value: string | string[];\n category?: string;\n};\n\ninterface MultiSelectProps {\n options: Option[];\n selected: Option[];\n onChange: (options: Option[]) => void;\n placeholder?: string;\n}\n\nexport function MultiSelect({\n options,\n selected,\n onChange,\n placeholder,\n ...props\n}: MultiSelectProps) {\n const [open, setOpen] = useState(false);\n const handleUnselect = (option: Option) => {\n onChange(selected.filter((item) => item.value !== option.value));\n };\n\n const hasCategories = options.some((option) => option.category);\n\n const groupedOptions = options.reduce(\n (groups, option) => {\n const category = option.category || 'Uncategorized';\n if (!groups[category]) {\n groups[category] = [];\n }\n groups[category].push(option);\n return groups;\n },\n {} as Record<string, Option[]>,\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen} {...props}>\n <PopoverTrigger>\n <Button\n variant='outline'\n role='combobox'\n aria-expanded={open}\n className='w-full justify-between font-normal'\n type='button'\n >\n <div className='flex gap-1 flex-wrap overflow-x-auto max-h-[2.5rem] items-center'>\n {selected.length > 0 ? (\n selected.map((option) => {\n return (\n <Badge\n key={option.label}\n variant='secondary'\n className='mr-1 mb-1'\n >\n {option.label}\n <div\n role='button'\n tabIndex={0}\n aria-label={`remove ${option.label}`}\n className='ml-1 ring-offset-background rounded-full outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-pointer'\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleUnselect(option);\n }\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={() => handleUnselect(option)}\n >\n <X className='h-3 w-3 text-muted-foreground hover:text-foreground' />\n </div>\n </Badge>\n );\n })\n ) : (\n <span className='text-foreground'>{placeholder}</span>\n )}\n </div>\n <ChevronDownIcon className='size-4' />\n </Button>\n </PopoverTrigger>\n <PopoverContent align='start' className='w-full p-0'>\n <Command>\n <CommandList>\n <CommandEmpty>No item found.</CommandEmpty>\n {Object.entries(groupedOptions).map(\n ([category, categoryOptions], index) => (\n <Fragment key={category}>\n {index > 0 && <CommandSeparator />}\n <CommandGroup heading={hasCategories ? category : undefined}>\n {categoryOptions.map((option) => {\n const isSelected = selected.some(\n (item) => item.value === option.value,\n );\n return (\n <CommandItem\n key={option.label}\n onSelect={() => {\n onChange(\n isSelected\n ? selected.filter(\n (item) => item.value !== option.value,\n )\n : [...selected, option],\n );\n }}\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n isSelected ? 'opacity-100' : 'opacity-0',\n )}\n />\n {option.label}\n </CommandItem>\n );\n })}\n </CommandGroup>\n </Fragment>\n ),\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as React from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { SearchIcon } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/src/components/ui/dialog';\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot='command'\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = 'Command Palette',\n description = 'Search for a command to run...',\n children,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className='sr-only'>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent className='overflow-hidden p-0'>\n <Command className='[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5'>\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot='command-input-wrapper'\n className='flex h-9 items-center gap-2 border-b px-3'\n >\n <SearchIcon className='size-4 shrink-0 opacity-50' />\n <CommandPrimitive.Input\n data-slot='command-input'\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot='command-list'\n className={cn(\n 'max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot='command-empty'\n className='py-6 text-center text-sm'\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot='command-group'\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot='command-separator'\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot='command-item'\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot='command-shortcut'\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<'textarea'>\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { Textarea } from '../../ui/textarea';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n component?: Components['textarea'];\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n component,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomTextAreaField = component || components?.textarea;\n if (CustomTextAreaField) {\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n ...rest,\n };\n return (\n <CustomTextAreaField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }\n\n const valueLength = field.value?.length ?? 0;\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__TextArea__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__TextArea__Label'>\n {label}\n </FormLabel>\n <FormControl>\n <Textarea\n {...field}\n value={field.value ?? ''}\n onChange={(event: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(event);\n onChange?.(event);\n }}\n className={cn(\n fieldState.error &&\n 'border-red-500 focus-visible:ring-red-500',\n 'RemoteFlows__TextArea__Input',\n )}\n placeholder={label}\n />\n </FormControl>\n {(description || maxLength) && (\n <div className='flex items-center justify-between'>\n {description && (\n <FormDescription className='RemoteFlows__TextArea__Description'>\n {description}\n </FormDescription>\n )}\n {maxLength && (\n <span className='text-sm ml-auto RemoteFlows__TextArea__MaxLength'>\n {valueLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n {fieldState.error && (\n <FormMessage className='RemoteFlows__TextArea__Error' />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextField, TextFieldProps } from './TextField';\nimport { Components } from '@/src/types/remoteFlows';\n\ntype EmailFieldProps = TextFieldProps & {\n component?: Components['email'];\n};\n\nexport function EmailField(props: EmailFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const CustomEmailField = props.component || components?.email;\n\n if (CustomEmailField) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <CustomEmailField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={props}\n />\n );\n }}\n />\n );\n }\n\n return <TextField {...props} type='email' />;\n}\n","import { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { Field } from '@/src/flows/types';\n\nexport function HiddenField(props: Field) {\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field }) => {\n return <input {...field} type='hidden' />;\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState } from 'react';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { useForm, useFormContext, useFieldArray } from 'react-hook-form';\nimport * as yup from 'yup';\n\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { useFormFields } from '@/src/context';\nimport { Form, FormField } from '@/src/components/ui/form';\nimport { Components } from '@/src/types/remoteFlows';\nimport { Button } from '@/src/components/ui/button';\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '@/src/components/ui/dialog';\n\nimport {\n buildWorkScheduleSummary,\n calculateHours,\n calculateTotalWorkHours,\n DailySchedule,\n DAYS_OF_THE_WEEK,\n getShortWeekday,\n} from './workScheduleUtils';\nimport { CheckBoxField } from './CheckBoxField';\nimport { TextField } from './TextField';\n\ntype WorkScheduleFieldProps = JSFField & {\n name: string;\n default: DailySchedule[];\n onChange?: (value: any) => void;\n component?: Components['work-schedule'];\n};\n\ntype WorkScheduleFormData = {\n schedule: DailySchedule[];\n};\n\ntype WorkScheduleSelectionProps = {\n defaultSchedule: DailySchedule[];\n onSubmit: (data: WorkScheduleFormData['schedule']) => void;\n};\n\nconst fieldSchema = yup.object({\n day: yup.string().required(),\n checked: yup.boolean().required(),\n start_time: yup\n .string()\n .matches(/^([01]\\d|2[0-3]):([0-5]\\d)$/, 'Invalid time format (HH:mm)')\n .when('checked', {\n is: true,\n then: (schema) => schema.required('Required'),\n otherwise: (schema) => schema.optional().nullable(),\n }),\n end_time: yup\n .string()\n .matches(/^([01]\\d|2[0-3]):([0-5]\\d)$/, 'Invalid time format (HH:mm)')\n .when('checked', {\n is: true,\n then: (schema) => schema.required('Required'),\n otherwise: (schema) => schema.optional().nullable(),\n }),\n hours: yup.number().default(0),\n break_duration_minutes: yup.string().default('0'),\n});\n\nconst formSchema = yup.object({\n schedule: yup.array(fieldSchema),\n});\n\nfunction WorkScheduleSelectionForm({\n defaultSchedule,\n onSubmit,\n}: WorkScheduleSelectionProps) {\n const [openDialog, setOpenDialog] = useState(false);\n\n const transformedSchedule = DAYS_OF_THE_WEEK.map((day) => {\n const existingSchedule = defaultSchedule.find(\n (schedule) =>\n schedule.day.toLowerCase() === getShortWeekday(day).toLowerCase() ||\n schedule.day.toLowerCase() === day.toLowerCase(),\n );\n\n if (existingSchedule) {\n return {\n ...existingSchedule,\n day: getShortWeekday(day),\n checked: true,\n };\n }\n\n return {\n // We just need to override the day and checked. The rest of the fields are the same for every day.\n ...defaultSchedule[0],\n checked: false,\n day: getShortWeekday(day),\n };\n });\n\n const form = useForm<WorkScheduleFormData>({\n defaultValues: {\n schedule: transformedSchedule,\n },\n resolver: yupResolver(formSchema) as any,\n });\n\n const { handleSubmit, watch, reset, control, formState } = form;\n\n const { fields } = useFieldArray({\n name: 'schedule',\n control,\n });\n\n const watchedSchedule = watch('schedule');\n\n function handleSubmitWorkingHours(data: WorkScheduleFormData) {\n // We can only send the days that are checked.\n const schedule = data.schedule\n .filter(({ checked }) => checked)\n .map((day) => ({\n ...day,\n hours: calculateHours(day),\n }));\n\n onSubmit(schedule);\n setOpenDialog(false);\n }\n\n function handleCancel() {\n reset();\n setOpenDialog(false);\n }\n\n return (\n <div className='flex items-center justify-between'>\n <Dialog open={openDialog} onOpenChange={setOpenDialog}>\n <DialogTrigger asChild>\n <Button\n variant={'link'}\n className='flex items-center p-0 RemoteFlows__WorkScheduleSelectionForm__Trigger'\n >\n Edit Schedule\n </Button>\n </DialogTrigger>\n <DialogContent className='max-w-5xl max-h-[90vh] overflow-y-auto px-8 py-4 RemoteFlows__WorkScheduleSelectionForm__Content'>\n <DialogHeader>\n <DialogTitle className='RemoteFlows__WorkScheduleSelectionForm__Title'>\n Edit employee working hours\n </DialogTitle>\n </DialogHeader>\n\n <Form {...form}>\n <form className='space-y-4 RemoteFlows__WorkScheduleSelectionForm__Form'>\n <div className='rounded-lg'>\n <p className='text-gray-600 text-sm mb-4 RemoteFlows__WorkScheduleSelectionForm__Description'>\n The times displayed are in the employee's time zone in the\n 24-hour format.\n </p>\n\n <div className='grid grid-cols-12 gap-4 text-sm font-medium text-gray-500 uppercase tracking-wide RemoteFlows__WorkScheduleSelectionForm__Header'>\n <div className='col-span-2'></div>\n <div className='col-span-3 text-center'>START</div>\n <div className='col-span-1 text-center'></div>\n <div className='col-span-3 text-center'>END</div>\n <div className='col-span-2 text-center'>HOURS</div>\n {/* <div className=\"col-span-2 text-center\">ACTIONS</div> */}\n </div>\n\n <div className='RemoteFlows__WorkScheduleSelectionForm__Rows'>\n {fields.map((field, index) => {\n const currentDay = watchedSchedule[index];\n const calculatedHours = calculateHours(currentDay);\n\n return (\n <React.Fragment key={field.id}>\n <div className='grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Hours'>\n <div className='col-span-2 flex items-center gap-3'>\n <CheckBoxField\n label={field.day}\n name={`schedule.${index}.checked`}\n />\n </div>\n <div className='col-span-3'>\n <TextField\n name={`schedule.${index}.start_time`}\n includeErrorMessage={false}\n />\n </div>\n <div className='col-span-1 text-center text-gray-500'>\n to\n </div>\n <div className='col-span-3'>\n <TextField\n name={`schedule.${index}.end_time`}\n includeErrorMessage={false}\n />\n </div>\n <div className='col-span-2 text-center text-gray-600'>\n {isNaN(calculatedHours)\n ? '-'\n : `${calculatedHours} hours`}\n </div>\n </div>\n\n <div className='grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Break'>\n <div className='col-span-2 text-gray-500'>Break</div>\n <div className='col-span-2'>\n <TextField\n name={`schedule.${index}.break_duration_minutes`}\n includeErrorMessage={false}\n />\n </div>\n <div className='col-span-2 text-gray-500'>\n minutes\n </div>\n <div className='col-span-4'></div>\n </div>\n </React.Fragment>\n );\n })}\n </div>\n </div>\n\n {Object.keys(formState.errors).length > 0 && (\n <p className='text-destructive text-sm mb-0'>\n Invalid time format (HH:mm)\n </p>\n )}\n\n <div className='flex gap-4 pt-4'>\n <Button\n type='button'\n className='reset-button'\n variant='outline'\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n type='button'\n className='submit-button'\n onClick={handleSubmit(handleSubmitWorkingHours)}\n >\n Save Schedule\n </Button>\n </div>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nexport function WorkScheduleField(props: WorkScheduleFieldProps) {\n const { components } = useFormFields();\n const { setValue, control, watch } = useFormContext();\n const watchedSchedule = watch(props.name);\n const [currentSchedule, setCurrentSchedule] =\n useState<DailySchedule[]>(watchedSchedule);\n\n const { workHoursSummary, breakSummary } =\n buildWorkScheduleSummary(currentSchedule);\n const totalWorkHours = calculateTotalWorkHours(currentSchedule);\n\n useEffect(() => {\n setValue(props.name, currentSchedule);\n }, [currentSchedule, props.name, setValue]);\n\n function onSubmit(data: WorkScheduleFormData['schedule']) {\n setCurrentSchedule(data);\n }\n\n const CustomWorkScheduleField =\n props.component || components?.['work-schedule'];\n\n if (CustomWorkScheduleField) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n return (\n <CustomWorkScheduleField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={{\n ...props,\n // @ts-expect-error - defaultFormattedValue is not part of fieldData. It's generated in this component.\n defaultFormattedValue: {\n workHoursSummary,\n breakSummary,\n totalWorkHours,\n },\n }}\n />\n );\n }}\n />\n );\n }\n\n return (\n <div className={`flex flex-col gap-3 RemoteFlows__WorkScheduleField`}>\n <p className={`text-sm RemoteFlows__WorkScheduleField__Title`}>\n Work hours\n </p>\n <div className='flex flex-col gap-1 RemoteFlows__WorkScheduleField__Summary'>\n <p\n className='text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__WorkHours'\n dangerouslySetInnerHTML={{\n __html: workHoursSummary.join(', '),\n }}\n />\n\n <p className='text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Break'>\n {breakSummary.join()}\n </p>\n <p className='text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Total'>\n Total of <span>{totalWorkHours}</span> hours per week\n </p>\n <WorkScheduleSelectionForm\n defaultSchedule={currentSchedule}\n onSubmit={onSubmit}\n />\n </div>\n </div>\n );\n}\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n Ref,\n ResolverOptions,\n get,\n} from 'react-hook-form';\n\nconst setCustomValidity = (\n ref: Ref,\n fieldPath: string,\n errors: FieldErrors,\n) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues extends FieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors);\n } else if (field && field.refs) {\n field.refs.forEach((ref: HTMLInputElement) =>\n setCustomValidity(ref, fieldPath, errors),\n );\n }\n }\n};\n","import {\n Field,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n ResolverOptions,\n get,\n set,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestErrors = <TFieldValues extends FieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n const error = Object.assign(errors[path] || {}, {\n ref: field && field.ref,\n });\n\n if (isNameInFieldArray(options.names || Object.keys(errors), path)) {\n const fieldArrayErrors = Object.assign({}, get(fieldErrors, path));\n\n set(fieldArrayErrors, 'root', error);\n set(fieldErrors, path, fieldArrayErrors);\n } else {\n set(fieldErrors, path, error);\n }\n }\n\n return fieldErrors;\n};\n\nconst isNameInFieldArray = (\n names: InternalFieldName[],\n name: InternalFieldName,\n) => {\n const path = escapeBrackets(name);\n return names.some((n) => escapeBrackets(n).match(`^${path}\\\\.\\\\d+`));\n};\n\n/**\n * Escapes special characters in a string to be used in a regex pattern.\n * it removes the brackets from the string to match the `set` method.\n *\n * @param input - The input string to escape.\n * @returns The escaped string.\n */\nfunction escapeBrackets(input: string): string {\n return input.replace(/\\]|\\[/g, '');\n}\n","import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport {\n FieldError,\n FieldValues,\n Resolver,\n appendErrors,\n} from 'react-hook-form';\nimport * as Yup from 'yup';\n\n/**\n * Why `path!` ? because it could be `undefined` in some case\n * https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n */\nfunction parseErrorSchema(\n error: Yup.ValidationError,\n validateAllFieldCriteria: boolean,\n) {\n return (error.inner || []).reduce<Record<string, FieldError>>(\n (previous, error) => {\n if (!previous[error.path!]) {\n previous[error.path!] = { message: error.message, type: error.type! };\n }\n\n if (validateAllFieldCriteria) {\n const types = previous[error.path!].types;\n const messages = types && types[error.type!];\n\n previous[error.path!] = appendErrors(\n error.path!,\n validateAllFieldCriteria,\n previous,\n error.type!,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n return previous;\n },\n {},\n );\n}\n\n/**\n * Creates a resolver for react-hook-form using Yup schema validation\n * @param {Yup.ObjectSchema<TFieldValues> | ReturnType<typeof Yup.lazy<Yup.ObjectSchema<TFieldValues>>>} schema - Yup validation schema\n * @param {Parameters<(typeof schema)['validate']>[1]} schemaOptions - Options to pass to Yup's validate/validateSync\n * @param {Object} resolverOptions - Additional resolver configuration\n * @param {('async' | 'sync')} [resolverOptions.mode] - Validation mode\n * @param {boolean} [resolverOptions.raw] - If true, returns raw values instead of validated results\n * @returns {Resolver<Yup.InferType<typeof schema>>} A resolver function compatible with react-hook-form\n * @example\n * const schema = Yup.object({\n * name: Yup.string().required(),\n * age: Yup.number().required(),\n * });\n *\n * useForm({\n * resolver: yupResolver(schema)\n * });\n */\nexport function yupResolver<TFieldValues extends FieldValues>(\n schema:\n | Yup.ObjectSchema<TFieldValues>\n | ReturnType<typeof Yup.lazy<Yup.ObjectSchema<TFieldValues>>>,\n schemaOptions: Parameters<(typeof schema)['validate']>[1] = {},\n resolverOptions: {\n mode?: 'async' | 'sync';\n raw?: boolean;\n } = {},\n): Resolver<Yup.InferType<typeof schema>> {\n return async (values, context, options) => {\n try {\n if (schemaOptions.context && process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn(\n \"You should not used the yup options context. Please, use the 'useForm' context object instead\",\n );\n }\n\n const result = await schema[\n resolverOptions.mode === 'sync' ? 'validateSync' : 'validate'\n ](\n values,\n Object.assign({ abortEarly: false }, schemaOptions, { context }),\n );\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n values: resolverOptions.raw ? Object.assign({}, values) : result,\n errors: {},\n };\n } catch (e: any) {\n if (!e.inner) {\n throw e;\n }\n\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n e,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n };\n}\n","import groupBy from 'lodash.groupby';\nimport capitalize from 'lodash.capitalize';\n\nconst MINUTES_IN_HOUR = 60;\n\nexport const DAYS_OF_THE_WEEK = [\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n 'saturday',\n 'sunday',\n] as const;\n\nexport type DailySchedule = {\n day: string;\n start_time: string;\n end_time: string;\n hours: number;\n break_duration_minutes: string;\n checked: boolean;\n};\n\n/**\n * Convert break duration in minutes to hours and minutes\n * @param breakDuration - Break duration in minutes\n * @returns Break duration in hours and minutes\n */\nfunction convertBreakDurationToHours(breakDuration: number) {\n if (breakDuration < 60) {\n return `${breakDuration}m`;\n }\n\n const hours = Math.floor(breakDuration / MINUTES_IN_HOUR);\n const minutes = breakDuration % MINUTES_IN_HOUR;\n\n if (minutes > 0) {\n return `${hours}h${minutes}m`;\n }\n\n return `${hours}h`;\n}\n\n/**\n * Calculate total work hours from daily schedules\n * @param dailySchedules - Daily schedules\n * @returns Total work hours\n */\nexport function calculateTotalWorkHours(dailySchedules: DailySchedule[]) {\n const totalWorkHours = dailySchedules.reduce((total, daySchedule) => {\n const sum = daySchedule.hours + total;\n return sum;\n }, 0);\n\n return Number(totalWorkHours.toFixed(2));\n}\n\n/**\n * Find the last consecutive day in a schedule (used to summarize work hours)\n * @param startDay - The starting day\n * @param dailySchedule - The daily schedule\n * @returns The last consecutive day\n */\nfunction findLastConsecutiveDay(\n startDay: string,\n dailySchedule: DailySchedule[],\n): Weekday | null {\n const daysScheduled = dailySchedule.map(\n ({ day }: DailySchedule) => day.toLowerCase() as Weekday,\n );\n\n let idx = daysScheduled.indexOf(startDay as Weekday);\n let day: Weekday | null = null;\n\n while (idx < daysScheduled.length && !day) {\n const currentDay = daysScheduled[idx];\n const nextDay = daysScheduled[idx + 1];\n\n const nextDayIdx = DAYS_OF_THE_WEEK.indexOf(currentDay) + 1;\n const isNextDay = DAYS_OF_THE_WEEK[nextDayIdx] === nextDay;\n\n if (!isNextDay) {\n day = currentDay;\n }\n\n idx += 1;\n }\n\n return day;\n}\n\n/**\n * Check if a day schedule should be summarized\n * @param daySchedule - The day schedule\n * @returns True if the day schedule should be summarized\n */\nfunction shouldSummarizeSchedule(daySchedule: DailySchedule) {\n return (\n daySchedule.start_time &&\n daySchedule.end_time &&\n (typeof daySchedule.hours === 'number'\n ? daySchedule.hours\n : Number.parseInt(daySchedule.hours)) > 0\n );\n}\n\n/**\n * Check if break duration should be summarized\n * @param daySchedule - The day schedule\n * @returns True if the break duration should be summarized\n */\nfunction shouldSummarizeBreaks(daySchedule: DailySchedule) {\n return Number.parseInt(daySchedule.break_duration_minutes) > 0;\n}\n\n/**\n * Build the work schedule summary\n * @param dailySchedules - The daily schedules\n * @returns The work schedule summary\n */\nexport function buildWorkScheduleSummary(dailySchedules: DailySchedule[]) {\n const activeScheduleDays = dailySchedules.filter(shouldSummarizeSchedule);\n\n const groupedWorkHours = groupBy(activeScheduleDays, (dailySchedule) => {\n return `${dailySchedule.start_time}|${dailySchedule.end_time}`;\n });\n\n const activeBreakDays = dailySchedules.filter(shouldSummarizeBreaks);\n const groupedBreaks = groupBy(activeBreakDays, 'break_duration_minutes');\n\n const workHoursSummary = Object.keys(groupedWorkHours).map(\n (scheduleTimes) => {\n const sameDailySchedule = groupedWorkHours[scheduleTimes];\n const startDay = sameDailySchedule[0].day;\n const [start_time, end_time] = scheduleTimes.split('|');\n const timeSummary = `from <span>${start_time.replace(':', 'h')}</span> to <span>${end_time.replace(':', 'h')}</span>`;\n\n const lastConsecutiveDay = findLastConsecutiveDay(\n startDay,\n sameDailySchedule,\n );\n const lastConsecutiveDayIdx = lastConsecutiveDay\n ? sameDailySchedule.findIndex(\n (dailySchedule) => dailySchedule.day === lastConsecutiveDay,\n )\n : -1;\n const allDaysAreConsecutive =\n lastConsecutiveDayIdx === sameDailySchedule.length - 1;\n\n if (sameDailySchedule.length === 1) {\n return `${capitalize(startDay)}, ${timeSummary}`;\n }\n\n if (!allDaysAreConsecutive || !lastConsecutiveDay) {\n return sameDailySchedule.reduce((summary, dailySchedule, idx) => {\n const day = capitalize(dailySchedule.day);\n if (idx === sameDailySchedule.length - 1) {\n return `${summary}and ${day}, ${timeSummary}`;\n }\n\n return `${summary}<span>${day}</span>, `;\n }, '');\n }\n\n return `<span>${capitalize(startDay)}</span> to <span>${capitalize(lastConsecutiveDay)}</span>, ${timeSummary}`;\n },\n );\n\n const breakSummary = Object.keys(groupedBreaks)\n .reverse()\n .map((breakDuration, idx) => {\n const isFirstGroup = idx === 0;\n const sameDailyBreaks = groupedBreaks[breakDuration];\n const breakString = convertBreakDurationToHours(\n parseInt(breakDuration, 10),\n );\n\n if (Object.keys(groupedBreaks).length === 1) {\n return `With ${breakString} daily breaks`;\n }\n\n if (sameDailyBreaks.length === 1) {\n const breakText = `${breakString} break on ${capitalize(sameDailyBreaks[0].day)}.`;\n return isFirstGroup ? `With ${breakText}` : breakText;\n }\n\n return sameDailyBreaks.reduce(\n (summary, dailySchedule, breakIdx) => {\n const day = capitalize(dailySchedule.day);\n\n if (breakIdx === 0) {\n return `${summary} ${day}`;\n }\n\n if (breakIdx === sameDailyBreaks.length - 1) {\n return `${summary}, and ${day}.`;\n }\n\n return `${summary}, ${day}`;\n },\n isFirstGroup\n ? `With ${breakString} break on`\n : `${breakString} break on`,\n );\n });\n\n return { workHoursSummary, breakSummary };\n}\n\n// Calculate hours for each day\nexport function calculateHours(day: DailySchedule) {\n const { checked, start_time, end_time, break_duration_minutes } = day;\n if (!checked) return 0;\n\n const [startHour, startMin] = start_time.split(':').map(Number);\n const [endHour, endMin] = end_time.split(':').map(Number);\n\n const startTotalMin = startHour * 60 + startMin;\n const endTotalMin = endHour * 60 + endMin;\n const workMinutes =\n endTotalMin -\n startTotalMin -\n Number.parseInt(break_duration_minutes || '0');\n\n const hours = workMinutes / 60;\n return hours === Math.floor(hours) ? hours : Number(hours.toFixed(2));\n}\n\ntype Weekday = (typeof DAYS_OF_THE_WEEK)[number];\n\nconst dayMap: Record<Weekday, string> = {\n monday: 'Mon',\n tuesday: 'Tue',\n wednesday: 'Wed',\n thursday: 'Thu',\n friday: 'Fri',\n saturday: 'Sat',\n sunday: 'Sun',\n};\n\nexport function getShortWeekday(fullName: Weekday): string {\n return dayMap[fullName];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport { Components, JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { MultiSelect } from '../../ui/multi-select';\nimport { useState } from 'react';\n\ntype MultiSelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: any) => void;\n component?: Components['select'];\n};\n\nexport function MultiSelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n component,\n ...rest\n}: MultiSelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n const [selected, setSelected] = useState<any[]>();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n const CustomSelectField = component || components?.['multi-select'];\n if (CustomSelectField) {\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n ...rest,\n };\n return (\n <CustomSelectField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }\n\n const selectedOptions =\n selected ||\n options.filter((option) => field.value.includes(option.value));\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__SelectField__Item__${name}`}\n >\n <FormLabel className='RemoteFlows__SelectField__Label'>\n {label}\n </FormLabel>\n <FormControl>\n <MultiSelect\n options={options}\n selected={selectedOptions}\n onChange={(rawValues: any[]) => {\n const values = rawValues.map(({ value }) => value);\n field.onChange(values);\n onChange?.(values);\n setSelected(rawValues);\n }}\n {...rest}\n />\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","import {\n NumberField,\n NumberFieldProps,\n} from '@/src/components/form/fields/NumberField';\n\n// TODO: We use the number field and the the number type is what the partner overrides\n// TODO: this needs to be changed in the future with the changes from https://github.com/remoteoss/remote-flows/pull/128\nexport const MoneyField = (props: NumberFieldProps) => {\n return <NumberField maxLength={15} {...props} />;\n};\n","import { CheckBoxField } from './CheckBoxField';\nimport { DatePickerField } from './DatePickerField';\nimport { FileUploadField } from './FileUploadField';\nimport { NumberField } from './NumberField';\nimport { RadioGroupField } from './RadioGroupField';\nimport { SelectField } from './SelectField';\nimport { CountryField } from './CountryField';\nimport { TextAreaField } from './TextAreaField';\nimport { TextField } from './TextField';\nimport { EmailField } from './EmailField';\nimport { HiddenField } from './HiddenField';\nimport { WorkScheduleField } from './WorkScheduleField';\nimport { MultiSelectField } from './MultiSelectField';\nimport { MoneyField } from './MoneyField';\nimport { SupportedTypes } from './types';\nimport { $TSFixMe } from '@/src/types/remoteFlows';\n\nexport const baseFields: Record<\n Exclude<SupportedTypes, 'fieldset' | 'fieldset-flat'>,\n React.ComponentType<$TSFixMe>\n> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: MoneyField,\n select: SelectField,\n 'multi-select': MultiSelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n date: DatePickerField,\n textarea: TextAreaField,\n countries: CountryField,\n hidden: HiddenField,\n 'work-schedule': WorkScheduleField,\n};\n","import { Alert, AlertDescription, AlertTitle } from '@/src/components/ui/alert';\nimport { useFormFields } from '@/src/context';\nimport { sanitizeHtml } from '@/src/lib/utils';\nimport { AlertCircle } from 'lucide-react';\n\nexport type StatementProps = {\n title?: string;\n description: string;\n severity: 'warning' | 'error' | 'success' | 'info' | 'neutral' | 'time';\n};\n\nexport function Statement({ title, description, severity }: StatementProps) {\n const { components } = useFormFields();\n\n if (components?.statement) {\n const CustomStatement = components?.statement;\n return (\n <CustomStatement\n data={{\n title,\n description: sanitizeHtml(description),\n severity,\n }}\n />\n );\n }\n\n return (\n <Alert variant='warning'>\n <AlertCircle className='h-4 w-4' />\n {title && <AlertTitle>{title}</AlertTitle>}\n {description && (\n <AlertDescription\n dangerouslySetInnerHTML={{ __html: sanitizeHtml(description) }}\n />\n )}\n </Alert>\n );\n}\n"],"mappings":"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","names":["Fragment","useEffect","useRef","Fragment","jsx","jsxs","CheckBoxField","name","defaultValue","description","label","onChange","multiple","options","component","rest","components","useFormFields","control","useFormContext","handleCheckboxChange","__name","optionId","checked","field","currentValues","value","FormField","fieldState","CustomCheckboxField","customCheckboxFieldProps","evt","FormItem","cn","FormControl","FormLabel","option","Checkbox","event","FormDescription","FormMessage","CalendarIcon","PopoverClose","ChevronLeft","ChevronRight","DayPicker","jsx","Calendar","className","classNames","showOutsideDays","props","DayPicker","cn","buttonVariants","__name","ChevronLeft","ChevronRight","PopoverPrimitive","jsx","Popover","props","__name","PopoverTrigger","PopoverContent","className","align","sideOffset","cn","format","Fragment","jsx","jsxs","DatePickerField","description","label","name","minDate","maxDate","onChange","component","rest","components","useFormFields","control","useFormContext","minDateValue","getMinStartDate","maxDateValue","FormField","field","fieldState","CustomDatePickerField","customDatePickerFieldProps","__name","value","FormItem","FormLabel","Popover","PopoverTrigger","FormControl","Button","cn","format","CalendarIcon","PopoverContent","Calendar","date","props","PopoverClose","FormDescription","FormMessage","useState","useRef","useEffect","Upload","X","jsx","jsxs","getAcceptedFormats","__name","accept","ext","FileUploader","onChange","className","multiple","externalFiles","files","setFiles","useState","inputRef","useRef","useEffect","handleClick","e","handleChange","newFiles","onRemoveFile","file","prevFiles","f","acceptedFormats","cn","Button","Upload","index","X","jsx","jsxs","toBase64","__name","file","resolve","reject","reader","error","convertFilesToBase64","files","base64","validateFileSize","maxSize","maxSizeMB","fileSizeMB","FileUploadField","name","description","label","multiple","onChange","component","accept","rest","components","useFormFields","control","setError","clearErrors","useFormContext","handleOnChange","event","field","sizeError","base64Files","FormField","fieldState","CustomFileUploadField","customFileUploadFieldProps","value","FormItem","FormLabel","FormControl","FileUploader","evt","cn","FormDescription","FormMessage","jsx","NumberField","props","components","useFormFields","control","useFormContext","CustomNumberField","FormField","field","fieldState","__name","value","TextField","Fragment","jsx","jsxs","RadioGroupField","name","defaultValue","description","label","options","onChange","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomRadioGroupField","customRadioGroupFieldProps","__name","value","FormItem","cn","FormLabel","FormControl","RadioGroup","option","Fragment","RadioGroupItem","FormDescription","FormMessage","jsx","jsxs","SelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","FormField","field","fieldState","CustomSelectField","customSelectFieldProps","__name","value","maybeCastValue","FormItem","FormLabel","FormControl","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","option","SelectItem","FormDescription","FormMessage","useState","Fragment","useState","Check","ChevronDownIcon","X","CommandPrimitive","SearchIcon","jsx","jsxs","Command","className","props","CommandPrimitive","cn","__name","CommandList","className","props","jsx","CommandPrimitive","cn","__name","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","jsx","jsxs","MultiSelect","options","selected","onChange","placeholder","props","open","setOpen","useState","handleUnselect","__name","option","item","hasCategories","groupedOptions","groups","category","Popover","PopoverTrigger","Button","Badge","e","X","ChevronDownIcon","PopoverContent","Command","CommandList","CommandEmpty","categoryOptions","index","Fragment","CommandSeparator","CommandGroup","isSelected","CommandItem","Check","cn","jsx","jsxs","CountryField","label","name","options","defaultValue","description","onChange","$meta","component","rest","control","useFormContext","components","useFormFields","selected","setSelected","useState","FormField","field","fieldState","CustomSelectField","customSelectFieldProps","__name","value","countryOptions","key","option","handleChange","rawValues","values","FormItem","FormLabel","FormControl","MultiSelect","FormDescription","FormMessage","React","jsx","Textarea","className","props","ref","cn","jsx","jsxs","TextAreaField","name","description","label","onChange","maxLength","component","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomTextAreaField","customTextAreaFieldProps","__name","value","valueLength","FormItem","FormLabel","FormControl","Textarea","event","cn","FormDescription","FormMessage","jsx","EmailField","props","components","useFormFields","control","useFormContext","CustomEmailField","FormField","field","fieldState","__name","value","TextField","jsx","HiddenField","props","control","useFormContext","FormField","field","__name","React","useEffect","useState","setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","fields","field","refs","forEach","toNestErrors","shouldUseNativeValidation","fieldErrors","path","Object","assign","isNameInFieldArray","names","keys","fieldArrayErrors","set","name","escapeBrackets","some","n","match","input","replace","yupResolver","schema","schemaOptions","resolverOptions","values","context","options","Promise","resolve","process","env","NODE_ENV","console","warn","mode","Object","assign","abortEarly","then","result","shouldUseNativeValidation","validateFieldsNatively","raw","errors","e","r","u","_catch","inner","toNestErrors","error","validateAllFieldCriteria","criteriaMode","reduce","previous","path","message","type","types","messages","appendErrors","concat","reject","yup","groupBy","capitalize","MINUTES_IN_HOUR","DAYS_OF_THE_WEEK","convertBreakDurationToHours","breakDuration","hours","minutes","__name","calculateTotalWorkHours","dailySchedules","totalWorkHours","total","daySchedule","findLastConsecutiveDay","startDay","dailySchedule","daysScheduled","day","idx","currentDay","nextDay","nextDayIdx","shouldSummarizeSchedule","shouldSummarizeBreaks","buildWorkScheduleSummary","activeScheduleDays","groupedWorkHours","groupBy","activeBreakDays","groupedBreaks","workHoursSummary","scheduleTimes","sameDailySchedule","start_time","end_time","timeSummary","lastConsecutiveDay","allDaysAreConsecutive","capitalize","summary","breakSummary","isFirstGroup","sameDailyBreaks","breakString","breakText","breakIdx","calculateHours","checked","break_duration_minutes","startHour","startMin","endHour","endMin","startTotalMin","dayMap","getShortWeekday","fullName","jsx","jsxs","fieldSchema","__name","schema","formSchema","WorkScheduleSelectionForm","defaultSchedule","onSubmit","openDialog","setOpenDialog","useState","transformedSchedule","DAYS_OF_THE_WEEK","day","existingSchedule","schedule","getShortWeekday","form","useForm","o","handleSubmit","watch","reset","control","formState","fields","useFieldArray","watchedSchedule","handleSubmitWorkingHours","data","checked","calculateHours","handleCancel","Dialog","DialogTrigger","Button","DialogContent","DialogHeader","DialogTitle","Form","field","index","currentDay","calculatedHours","React","CheckBoxField","TextField","WorkScheduleField","props","components","useFormFields","setValue","useFormContext","currentSchedule","setCurrentSchedule","workHoursSummary","breakSummary","buildWorkScheduleSummary","totalWorkHours","calculateTotalWorkHours","useEffect","CustomWorkScheduleField","FormField","fieldState","value","useState","jsx","jsxs","MultiSelectField","label","name","options","defaultValue","description","onChange","component","rest","control","useFormContext","components","useFormFields","selected","setSelected","useState","FormField","field","fieldState","CustomSelectField","customSelectFieldProps","__name","value","selectedOptions","option","FormItem","FormLabel","FormControl","MultiSelect","rawValues","values","FormDescription","FormMessage","jsx","MoneyField","__name","props","NumberField","baseFields","CheckBoxField","TextField","EmailField","MoneyField","SelectField","MultiSelectField","RadioGroupField","NumberField","FileUploadField","DatePickerField","TextAreaField","CountryField","HiddenField","WorkScheduleField","AlertCircle","jsx","jsxs","Statement","title","description","severity","components","useFormFields","CustomStatement","sanitizeHtml","Alert","AlertCircle","AlertTitle","AlertDescription","__name","Fragment","jsx","jsxs","DefaultToggleButton","__name","isExpanded","onToggle","className","props","Button","cn","FieldSetField","label","name","fields","description","components","statement","isFlatFieldset","extra","variant","features","meta","helpCenter","watch","setValue","trigger","formState","useFormContext","formComponents","useFormFields","stateField","fieldNames","fieldName","watchedValues","prevValuesRef","useRef","triggerTimeoutRef","toggleExpanded","useEffect","currentValues","previousValues","hasBeenSubmitted","hasChanged","i","ToggleComponent","contentId","headerId","ZendeskTriggerButton","sanitizeHtml","field","Component","FieldComponent","baseFields","Statement"]}
@@ -1,2 +1,2 @@
1
- import{a as t}from"./chunk-R3DJNVHR.js";import{a}from"./chunk-LMYJ6V44.js";import{a as e}from"./chunk-N6G4VZXF.js";import{a as r}from"./chunk-XPKVRYIU.js";var i={data:{version:7,schema:{additionalProperties:!1,allOf:[...e.data.schema.allOf,...t.data.schema.allOf,...r.data.schema.allOf,...a.data.schema.allOf],properties:{...e.data.schema.properties,...t.data.schema.properties,...r.data.schema.properties,...a.data.schema.properties},required:[...e.data.schema.required,...t.data.schema.required,...r.data.schema.required,...a.data.schema.required],type:"object","x-jsf-order":[...e.data.schema["x-jsf-order"],...t.data.schema["x-jsf-order"],...r.data.schema["x-jsf-order"],...a.data.schema["x-jsf-order"]]}}};export{i as a};
2
- //# sourceMappingURL=chunk-BOTWQMOJ.js.map
1
+ import{a as r}from"./chunk-NX7MM6XR.js";import{a as t}from"./chunk-ZXGAFQXW.js";import{a}from"./chunk-LMYJ6V44.js";import{a as e}from"./chunk-RR55GUDT.js";var i={data:{version:7,schema:{additionalProperties:!1,allOf:[...e.data.schema.allOf,...t.data.schema.allOf,...r.data.schema.allOf,...a.data.schema.allOf],properties:{...e.data.schema.properties,...t.data.schema.properties,...r.data.schema.properties,...a.data.schema.properties},required:[...e.data.schema.required,...t.data.schema.required,...r.data.schema.required,...a.data.schema.required],type:"object","x-jsf-order":[...e.data.schema["x-jsf-order"],...t.data.schema["x-jsf-order"],...r.data.schema["x-jsf-order"],...a.data.schema["x-jsf-order"]]}}};export{i as a};
2
+ //# sourceMappingURL=chunk-QIVDIOJG.js.map
@@ -0,0 +1,2 @@
1
+ import{c as et,d as nt}from"./chunk-EHS4ERDW.js";import{a as z,f as Q,h as X,k as Z}from"./chunk-7RFJWDXS.js";import{a as at,b as it,c as ct,e as st,f as lt,g as mt,h as ut}from"./chunk-HX34JCPL.js";import{a as ot,b as rt}from"./chunk-3UDG4IJO.js";import{a as dt,b as pt}from"./chunk-ZOTFS35J.js";import{a as v}from"./chunk-2YTBWEC7.js";import{a as tt}from"./chunk-PJBAQZ6G.js";import{c as f,d as C}from"./chunk-PAQW5BFW.js";import{g as P}from"./chunk-43WMZDDH.js";import{a as p}from"./chunk-P37U34EQ.js";import{useEffect as Kt,useMemo as c,useRef as Yt,useState as k}from"react";var zt={select_country:null,basic_information:"employment_basic_information",contract_details:null,pricing_plan:null,contract_preview:null,review:null},Qt={employment_basic_information:"basic_information"},me=p(({countryCode:ft,externalId:yt,employmentId:y,skipSteps:_t,options:u,initialValues:i})=>{let[a,A]=k(ft||null),[o,St]=k(y),[T,gt]=k(void 0),O=Yt({select_country:{},basic_information:{},contract_details:{},contract_preview:{},pricing_plan:{}}),bt=_t?.includes("select_country")?pt:dt,{fieldValues:h,stepState:e,setFieldValues:Ct,previousStep:ht,nextStep:Ft,goToStep:D,setStepValues:B}=tt(bt),{data:s,isLoading:I,refetch:Vt}=z(o),{status:_}=s||{},j=_&&et.includes(_),Et=_&&!nt.includes(_),wt=c(()=>_==="invited"?"invited":"not_invited",[_]),J=X(u),q=lt(),N=it(),Pt=st(),{mutateAsync:vt}=v(J),{mutateAsync:Ot}=v(q),{mutateAsync:Mt}=v(N),{mutateAsync:x}=v(Pt);y&&s?.country?.code&&!a&&A(s.country.code);let{selectCountryForm:M,isLoading:Tt}=Z({jsfModify:u?.jsfModify?.select_country,queryOptions:{enabled:e.currentStep.name==="select_country"}}),{form:U,isLoading:Dt}=ut(o,{jsonSchemaVersion:u?.jsonSchemaVersion,queryOptions:{enabled:e.currentStep.name==="pricing_plan"}}),It=zt[e.currentStep.name]||"contractor_basic_information",jt=Qt[It],Lt=s?.[jt]||{},Rt=p(({form:t,options:r={},query:g={}})=>{let b=Object.keys(h).length>0?{...i,...e.values?.[e.currentStep.name],...h}:{...i,...Lt};return Q({countryCode:a,form:t,fieldValues:b,query:g,options:{...r,queryOptions:{enabled:r.queryOptions?.enabled??!0}}})},"useJSONSchema"),kt=!!(a&&(e.currentStep.name==="basic_information"||y)),At=!!(a&&(e.currentStep.name==="contract_details"||y)),{data:l,isLoading:Bt}=Rt({form:"contractor_basic_information",options:{jsfModify:u?.jsfModify?.basic_information,queryOptions:{enabled:kt},jsonSchemaVersion:u?.jsonSchemaVersion}}),{data:m,isLoading:Jt}=mt({countryCode:a,fieldValues:h,options:{queryOptions:{enabled:At},jsfModify:u?.jsfModify?.contract_details,jsonSchemaVersion:u?.jsonSchemaVersion}}),{data:d}=at({fieldValues:h,options:{queryOptions:{enabled:e.currentStep.name==="contract_preview"}}}),{data:qt,isLoading:Nt}=ct({employmentId:o,contractDocumentId:T,options:{queryOptions:{enabled:!!T}}}),n=c(()=>({select_country:M?.fields||[],basic_information:l?.fields||[],pricing_plan:U?.fields||[],contract_details:m?.fields||[],contract_preview:d?.fields||[],review:[]}),[M?.fields,l?.fields,U?.fields,m?.fields,d?.fields]),xt={select_country:null,basic_information:l?.meta["x-jsf-fieldsets"],pricing_plan:null,contract_details:m?.meta["x-jsf-fieldsets"],contract_preview:null,review:null},{country:Ut,basic_information:H={},contract_details:S={}}=s||{},G=Ut?.code,F=c(()=>C(n.select_country,{country:a||G||""}),[n.select_country,a,G]),V=c(()=>{let t={...i,...H};return C(n.basic_information,t)},[n.basic_information,H,i]),E=c(()=>{let t={...i,...S};return C(n.contract_details,t)},[n.contract_details,S,i]),W=c(()=>{let t={...i,...S};return C(n.contract_preview,t)},[n.contract_preview,S,i]),$=c(()=>{let t={...i,...S};return C(n.pricing_plan,t?.pricing_plan??{})},[n.pricing_plan,S,i]),Ht=c(()=>({select_country:F,basic_information:V,contract_details:E,contract_preview:W,pricing_plan:$}),[F,V,E,W,$]),K=c(()=>!!(!!(y&&j&&e.currentStep.name!=="review")&&!I&&n.basic_information.length>0&&n.contract_details.length>0),[y,j,I,n.basic_information.length,n.contract_details.length,e.currentStep.name]);Kt(()=>{K&&(O.current={select_country:P(F,n.select_country),basic_information:P(V,n.basic_information),contract_details:P(E,n.contract_details),contract_preview:{},pricing_plan:{}},B({select_country:F,basic_information:V,contract_details:E,contract_preview:{},pricing_plan:{},review:{}}),D("review"))},[K,D,F,V,E,B,n.select_country,n.basic_information,n.contract_details]);let Gt=p(t=>{D(t)},"goTo"),Y=p(t=>M&&e.currentStep.name==="select_country"?t:l&&e.currentStep.name==="basic_information"?f(t,l?.fields,{isPartialValidation:!1}):m&&e.currentStep.name==="contract_details"?f(t,m?.fields,{isPartialValidation:!1}):d&&e.currentStep.name==="contract_preview"?f(t,d?.fields,{isPartialValidation:!1}):e.currentStep.name==="pricing_plan"?t:{},"parseFormValues");async function Wt(t){let r=e.currentStep.name;r in O.current&&(O.current[r]=P(t,n[r]));let g=Y(t);switch(e.currentStep.name){case"select_country":return A(g.country),Promise.resolve({data:{countryCode:g.country}});case"basic_information":{let L=!o&&a,b=o&&a&&s?.country&&s?.country.code!==a;if(L||b){let R={basic_information:g,type:"contractor",country_code:a,external_id:yt};try{let w=await vt(R),$t=w.data?.data?.employment?.id;return St($t),w}catch(w){throw console.error("Error creating onboarding:",w),w}}else if(o)return Promise.resolve({data:{employmentId:o}});return}case"contract_details":{let b=await Ot({employmentId:o,payload:{contract_document:g}}),R=b.data?.data?.contract_document?.id;return gt(R),b}case"contract_preview":return Mt({employmentId:o,contractDocumentId:T,payload:{signature:t.signature}});case"pricing_plan":return t.subscription==ot?x({employmentId:o,payload:{operation:"downgrade"}}):t.subscription==rt?x({employmentId:o,payload:{operation:"upgrade"}}):Promise.reject({error:"invalid selection"});default:throw new Error("Invalid step state")}}return p(Wt,"onSubmit"),{isLoading:Tt||Bt||I||Jt||Dt||Nt,fieldValues:h,stepState:e,checkFieldUpdates:Ct,back:ht,next:Ft,goTo:Gt,onSubmit:Wt,fields:n[e.currentStep.name],meta:{fields:O.current,fieldsets:xt[e.currentStep.name]},parseFormValues:Y,handleValidation:p(t=>{if(e.currentStep.name==="select_country")return M.handleValidation(t);if(l&&e.currentStep.name==="basic_information"){let r=f(t,l?.fields,{isPartialValidation:!1});return l?.handleValidation(r)}if(m&&e.currentStep.name==="contract_details"){let r=f(t,m?.fields,{isPartialValidation:!1});return m?.handleValidation(r)}if(d&&e.currentStep.name==="contract_preview"){let r=f(t,d?.fields,{isPartialValidation:!1});return d?.handleValidation(r)}return e.currentStep.name==="pricing_plan"?{formErrors:{},yupError:null}:null},"handleValidation"),initialValues:Ht,employmentId:o,refetchEmployment:Vt,isSubmitting:J.isPending||q.isPending||N.isPending,documentPreviewPdf:qt,canInvite:Et,isEmploymentReadOnly:j,invitedStatus:wt,employment:s}},"useContractorOnboarding");export{me as a};
2
+ //# sourceMappingURL=chunk-QRD43QJA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/ContractorOnboarding/hooks.tsx"],"sourcesContent":["import {\n CreateContractDocument,\n Employment,\n EmploymentCreateParams,\n} from '@/src/client/types.gen';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport {\n useContractorOnboardingDetailsSchema,\n useCreateContractorContractDocument,\n useGetContractDocumentSignatureSchema,\n usePostManageContractorSubscriptions,\n useContractorSubscriptionSchemaField,\n useGetShowContractDocument,\n useSignContractDocument,\n} from '@/src/flows/ContractorOnboarding/api';\nimport { ContractorOnboardingFlowProps } from '@/src/flows/ContractorOnboarding/types';\nimport {\n STEPS,\n STEPS_WITHOUT_SELECT_COUNTRY,\n} from '@/src/flows/ContractorOnboarding/utils';\nimport {\n useCountriesSchemaField,\n useCreateEmployment,\n useEmployment,\n useJSONSchemaForm,\n} from '@/src/flows/Onboarding/api';\nimport {\n disabledInviteButtonEmploymentStatus,\n reviewStepAllowedEmploymentStatus,\n} from '@/src/flows/Onboarding/utils';\nimport { FlowOptions, JSFModify, JSONSchemaFormType } from '@/src/flows/types';\nimport { Step, useStepState } from '@/src/flows/useStepState';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { prettifyFormValues } from '@/src/lib/utils';\nimport { $TSFixMe, JSFFieldset, Meta } from '@/src/types/remoteFlows';\nimport { Fields } from '@remoteoss/json-schema-form';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { FieldValues } from 'react-hook-form';\n\ntype useContractorOnboardingProps = Omit<\n ContractorOnboardingFlowProps,\n 'render'\n>;\n\nconst stepToFormSchemaMap: Record<\n keyof typeof STEPS,\n JSONSchemaFormType | null\n> = {\n select_country: null,\n basic_information: 'employment_basic_information',\n contract_details: null,\n pricing_plan: null,\n contract_preview: null,\n review: null,\n};\n\nimport {\n contractorStandardProductIdentifier,\n contractorPlusProductIdentifier,\n} from '@/src/flows/ContractorOnboarding/constants';\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n};\n\nexport const useContractorOnboarding = ({\n countryCode,\n externalId,\n employmentId,\n skipSteps,\n options,\n initialValues: onboardingInitialValues,\n}: useContractorOnboardingProps) => {\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalContractDocumentId, setInternalContractDocumentId] = useState<\n string | undefined\n >(undefined);\n const fieldsMetaRef = useRef<{\n select_country: Meta;\n basic_information: Meta;\n contract_details: Meta;\n contract_preview: Meta;\n pricing_plan: Meta;\n }>({\n select_country: {},\n basic_information: {},\n contract_details: {},\n contract_preview: {},\n pricing_plan: {},\n });\n\n const stepsToUse = skipSteps?.includes('select_country')\n ? STEPS_WITHOUT_SELECT_COUNTRY\n : STEPS;\n\n const {\n fieldValues,\n stepState,\n setFieldValues,\n previousStep,\n nextStep,\n goToStep,\n setStepValues,\n } = useStepState(\n stepsToUse as Record<keyof typeof STEPS, Step<keyof typeof STEPS>>,\n );\n\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmployment(internalEmploymentId);\n\n const { status: employmentStatus } = employment || {};\n\n const isEmploymentReadOnly =\n employmentStatus &&\n reviewStepAllowedEmploymentStatus.includes(employmentStatus);\n\n const canInvite =\n employmentStatus &&\n !disabledInviteButtonEmploymentStatus.includes(employmentStatus);\n\n const invitedStatus: 'invited' | 'not_invited' = useMemo(() => {\n const isInvited = employmentStatus === 'invited';\n\n return isInvited ? 'invited' : 'not_invited';\n }, [employmentStatus]);\n\n const createEmploymentMutation = useCreateEmployment(options);\n const createContractorContractDocumentMutation =\n useCreateContractorContractDocument();\n const signContractDocumentMutation = useSignContractDocument();\n const manageContractorSubscriptionMutation =\n usePostManageContractorSubscriptions();\n\n const { mutateAsync: createEmploymentMutationAsync } = mutationToPromise(\n createEmploymentMutation,\n );\n\n const { mutateAsync: createContractorContractDocumentMutationAsync } =\n mutationToPromise(createContractorContractDocumentMutation);\n\n const { mutateAsync: signContractDocumentMutationAsync } = mutationToPromise(\n signContractDocumentMutation,\n );\n\n const { mutateAsync: manageContractorSubscriptionMutationAsync } =\n mutationToPromise(manageContractorSubscriptionMutation);\n\n // if the employment is loaded, country code has not been set yet\n // we set the internal country code with the employment country code\n if (employmentId && employment?.country?.code && !internalCountryCode) {\n setInternalCountryCode(employment.country.code);\n }\n\n const { selectCountryForm, isLoading: isLoadingCountries } =\n useCountriesSchemaField({\n jsfModify: options?.jsfModify?.select_country,\n queryOptions: {\n enabled: stepState.currentStep.name === 'select_country',\n },\n });\n\n const {\n form: selectContractorSubscriptionForm,\n isLoading: isLoadingContractorSubscriptions,\n } = useContractorSubscriptionSchemaField(internalEmploymentId as string, {\n jsonSchemaVersion: options?.jsonSchemaVersion,\n queryOptions: {\n enabled: stepState.currentStep.name === 'pricing_plan',\n },\n });\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'contractor_basic_information';\n const employmentKey = jsonSchemaToEmployment[formType] as keyof Employment;\n const serverEmploymentData = (employment?.[employmentKey] || {}) as Record<\n string,\n unknown\n >;\n\n const useJSONSchema = ({\n form,\n options: jsonSchemaOptions = {},\n query = {},\n }: {\n form: JSONSchemaFormType;\n options?: {\n jsfModify?: JSFModify;\n queryOptions?: { enabled?: boolean };\n jsonSchemaVersion?: FlowOptions['jsonSchemaVersion'];\n };\n query?: Record<string, string>;\n }) => {\n const hasUserEnteredAnyValues = Object.keys(fieldValues).length > 0;\n // when you write on the fields, the values are stored in the fieldValues state\n // when values are stored in the stepState is when the user has navigated to the step\n // and then we have the values from the server and the onboardingInitialValues that the user can inject,\n const mergedFormValues = hasUserEnteredAnyValues\n ? {\n ...onboardingInitialValues,\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : {\n ...onboardingInitialValues,\n ...serverEmploymentData,\n };\n\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues: mergedFormValues,\n query,\n options: {\n ...jsonSchemaOptions,\n queryOptions: {\n enabled: jsonSchemaOptions.queryOptions?.enabled ?? true,\n },\n },\n });\n };\n\n const isBasicInformationDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'basic_information' ||\n Boolean(employmentId)),\n );\n\n const isContractorOnboardingDetailsEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'contract_details' ||\n Boolean(employmentId)),\n );\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'contractor_basic_information',\n options: {\n jsfModify: options?.jsfModify?.basic_information,\n queryOptions: {\n enabled: isBasicInformationDetailsEnabled,\n },\n jsonSchemaVersion: options?.jsonSchemaVersion,\n },\n });\n\n const {\n data: contractorOnboardingDetailsForm,\n isLoading: isLoadingContractorOnboardingDetailsForm,\n } = useContractorOnboardingDetailsSchema({\n countryCode: internalCountryCode as string,\n fieldValues: fieldValues,\n options: {\n queryOptions: {\n enabled: isContractorOnboardingDetailsEnabled,\n },\n jsfModify: options?.jsfModify?.contract_details,\n jsonSchemaVersion: options?.jsonSchemaVersion,\n },\n });\n\n const { data: signatureSchemaForm } = useGetContractDocumentSignatureSchema({\n fieldValues: fieldValues,\n options: {\n queryOptions: {\n enabled: stepState.currentStep.name === 'contract_preview',\n },\n },\n });\n const { data: documentPreviewPdf, isLoading: isLoadingDocumentPreviewForm } =\n useGetShowContractDocument({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n options: {\n queryOptions: {\n enabled: Boolean(internalContractDocumentId),\n },\n },\n });\n\n const stepFields: Record<keyof typeof STEPS, Fields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n pricing_plan: selectContractorSubscriptionForm?.fields || [],\n contract_details: contractorOnboardingDetailsForm?.fields || [],\n contract_preview: signatureSchemaForm?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n selectContractorSubscriptionForm?.fields,\n contractorOnboardingDetailsForm?.fields,\n signatureSchemaForm?.fields,\n ],\n );\n\n const stepFieldsWithFlatFieldsets: Record<\n keyof typeof STEPS,\n JSFFieldset | null | undefined\n > = {\n select_country: null,\n basic_information: basicInformationForm?.meta['x-jsf-fieldsets'],\n pricing_plan: null,\n contract_details: contractorOnboardingDetailsForm?.meta['x-jsf-fieldsets'],\n contract_preview: null,\n review: null,\n };\n\n const {\n country,\n basic_information: employmentBasicInformation = {},\n contract_details: employmentContractDetails = {},\n } = employment || {};\n\n const employmentCountryCode = country?.code;\n\n const selectCountryInitialValues = useMemo(\n () =>\n getInitialValues(stepFields.select_country, {\n country: internalCountryCode || employmentCountryCode || '',\n }),\n [stepFields.select_country, internalCountryCode, employmentCountryCode],\n );\n\n const basicInformationInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentBasicInformation,\n };\n\n return getInitialValues(stepFields.basic_information, initialValues);\n }, [\n stepFields.basic_information,\n employmentBasicInformation,\n onboardingInitialValues,\n ]);\n\n const contractDetailsInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(stepFields.contract_details, initialValues);\n }, [\n stepFields.contract_details,\n employmentContractDetails,\n onboardingInitialValues,\n ]);\n\n const contractPreviewInitialValues = useMemo(() => {\n // TODO: TBD not sure if contract preview needs to be populated with anything\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(stepFields.contract_preview, initialValues);\n }, [\n stepFields.contract_preview,\n employmentContractDetails,\n onboardingInitialValues,\n ]);\n\n const pricingPlanInitialValues = useMemo(() => {\n const initialValues = {\n ...onboardingInitialValues,\n ...employmentContractDetails,\n };\n\n return getInitialValues(\n stepFields.pricing_plan,\n (initialValues?.pricing_plan ?? {}) as Record<string, unknown>,\n );\n }, [\n stepFields.pricing_plan,\n employmentContractDetails,\n onboardingInitialValues,\n ]);\n\n const initialValues = useMemo(() => {\n return {\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n contract_preview: contractPreviewInitialValues,\n pricing_plan: pricingPlanInitialValues,\n };\n }, [\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n contractPreviewInitialValues,\n pricingPlanInitialValues,\n ]);\n\n const isNavigatingToReview = useMemo(() => {\n const shouldHandleReadOnlyEmployment = Boolean(\n employmentId &&\n isEmploymentReadOnly &&\n stepState.currentStep.name !== 'review',\n );\n\n return Boolean(\n shouldHandleReadOnlyEmployment &&\n !isLoadingEmployment &&\n stepFields.basic_information.length > 0 &&\n stepFields.contract_details.length > 0,\n );\n }, [\n employmentId,\n isEmploymentReadOnly,\n isLoadingEmployment,\n stepFields.basic_information.length,\n stepFields.contract_details.length,\n stepState.currentStep.name,\n ]);\n\n useEffect(() => {\n if (isNavigatingToReview) {\n fieldsMetaRef.current = {\n select_country: prettifyFormValues(\n selectCountryInitialValues,\n stepFields.select_country,\n ),\n basic_information: prettifyFormValues(\n basicInformationInitialValues,\n stepFields.basic_information,\n ),\n contract_details: prettifyFormValues(\n contractDetailsInitialValues,\n stepFields.contract_details,\n ),\n // TODO: TBD\n contract_preview: {},\n // TODO: TBD\n pricing_plan: {},\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n contract_preview: {},\n pricing_plan: {},\n review: {},\n });\n goToStep('review');\n }\n }, [\n isNavigatingToReview,\n goToStep,\n selectCountryInitialValues,\n basicInformationInitialValues,\n contractDetailsInitialValues,\n setStepValues,\n stepFields.select_country,\n stepFields.basic_information,\n stepFields.contract_details,\n ]);\n\n const goTo = (step: keyof typeof STEPS) => {\n goToStep(step);\n };\n\n const parseFormValues = (values: FieldValues) => {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (\n contractorOnboardingDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return parseJSFToValidate(\n values,\n contractorOnboardingDetailsForm?.fields,\n {\n isPartialValidation: false,\n },\n );\n }\n\n if (\n signatureSchemaForm &&\n stepState.currentStep.name === 'contract_preview'\n ) {\n return parseJSFToValidate(values, signatureSchemaForm?.fields, {\n isPartialValidation: false,\n });\n }\n\n if (stepState.currentStep.name === 'pricing_plan') {\n return values;\n }\n\n return {};\n };\n\n async function onSubmit(values: FieldValues) {\n const currentStepName = stepState.currentStep.name;\n if (currentStepName in fieldsMetaRef.current) {\n fieldsMetaRef.current[\n currentStepName as keyof typeof fieldsMetaRef.current\n ] = prettifyFormValues(values, stepFields[currentStepName]);\n }\n const parsedValues = parseFormValues(values);\n switch (stepState.currentStep.name) {\n case 'select_country': {\n setInternalCountryCode(parsedValues.country);\n return Promise.resolve({ data: { countryCode: parsedValues.country } });\n }\n case 'basic_information': {\n const isEmploymentNotLoaded =\n !internalEmploymentId && internalCountryCode;\n const hasChangedCountry =\n internalEmploymentId &&\n internalCountryCode &&\n employment?.country &&\n employment?.country.code !== internalCountryCode;\n\n if (isEmploymentNotLoaded || hasChangedCountry) {\n const payload: EmploymentCreateParams = {\n basic_information: parsedValues,\n type: 'contractor',\n country_code: internalCountryCode,\n external_id: externalId,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n // @ts-expect-error the types from the response are not matching\n const employmentId = response.data?.data?.employment?.id;\n setInternalEmploymentId(employmentId);\n\n return response;\n } catch (error) {\n console.error('Error creating onboarding:', error);\n throw error;\n }\n } else if (internalEmploymentId) {\n // TODO: Provisional it seems you cannot update a contractor employment\n return Promise.resolve({\n data: { employmentId: internalEmploymentId },\n });\n }\n\n return;\n }\n case 'contract_details': {\n const payload: CreateContractDocument = {\n contract_document: parsedValues,\n };\n const response: $TSFixMe =\n await createContractorContractDocumentMutationAsync({\n employmentId: internalEmploymentId as string,\n payload,\n });\n\n const contractDocumentId = response.data?.data?.contract_document?.id;\n setInternalContractDocumentId(contractDocumentId);\n return response;\n }\n\n case 'contract_preview': {\n return signContractDocumentMutationAsync({\n employmentId: internalEmploymentId as string,\n contractDocumentId: internalContractDocumentId as string,\n payload: {\n signature: values.signature,\n },\n });\n }\n case 'pricing_plan': {\n if (values.subscription == contractorStandardProductIdentifier) {\n return manageContractorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: {\n operation: 'downgrade',\n },\n });\n } else if (values.subscription == contractorPlusProductIdentifier) {\n return manageContractorSubscriptionMutationAsync({\n employmentId: internalEmploymentId as string,\n payload: {\n operation: 'upgrade',\n },\n });\n }\n return Promise.reject({ error: 'invalid selection' });\n }\n\n default: {\n throw new Error('Invalid step state');\n }\n }\n }\n\n const isLoading =\n isLoadingCountries ||\n isLoadingBasicInformationForm ||\n isLoadingEmployment ||\n isLoadingContractorOnboardingDetailsForm ||\n isLoadingContractorSubscriptions ||\n isLoadingDocumentPreviewForm;\n\n return {\n /**\n * Loading state indicating if the flow is loading data\n */\n isLoading,\n\n /**\n * Current state of the form fields for the current step.\n */\n fieldValues,\n\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back: previousStep,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next: nextStep,\n\n /**\n * Function to handle going to a specific step\n * @param step The step to go to.\n * @returns {void}\n */\n goTo: goTo,\n\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n fieldsets: stepFieldsWithFlatFieldsets[stepState.currentStep.name],\n },\n\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues,\n\n /**\n * Function to validate form values against the onboarding schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: FieldValues) => {\n if (stepState.currentStep.name === 'select_country') {\n return selectCountryForm.handleValidation(values);\n }\n\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n { isPartialValidation: false },\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractorOnboardingDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n contractorOnboardingDetailsForm?.fields,\n { isPartialValidation: false },\n );\n return contractorOnboardingDetailsForm?.handleValidation(parsedValues);\n }\n\n if (\n signatureSchemaForm &&\n stepState.currentStep.name === 'contract_preview'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n signatureSchemaForm?.fields,\n { isPartialValidation: false },\n );\n return signatureSchemaForm?.handleValidation(parsedValues);\n }\n\n if (stepState.currentStep.name === 'pricing_plan') {\n // TODO: TBD\n return {\n formErrors: {},\n yupError: null,\n };\n }\n\n return null;\n },\n\n /**\n * Initial form values\n */\n initialValues,\n\n /**\n * Employment id\n */\n employmentId: internalEmploymentId,\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment: refetchEmployment,\n\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n createContractorContractDocumentMutation.isPending ||\n signContractDocumentMutation.isPending,\n\n /**\n * Document preview PDF data\n */\n documentPreviewPdf,\n\n /**\n * let's the user know if the company can invite employees\n * @returns {boolean}\n */\n canInvite,\n\n /**\n * let's the user know that the employment cannot be edited, happens when employment.status is invited\n * @returns {boolean}\n */\n isEmploymentReadOnly,\n /**\n * let's the user know if the employment is invited or not\n * @returns {'invited' | 'not_invited'}\n */\n invitedStatus,\n\n /**\n * Employment data\n * @returns {Employment}\n */\n employment,\n };\n};\n"],"mappings":"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","names":["useEffect","useMemo","useRef","useState","stepToFormSchemaMap","jsonSchemaToEmployment","useContractorOnboarding","__name","countryCode","externalId","employmentId","skipSteps","options","onboardingInitialValues","internalCountryCode","setInternalCountryCode","useState","internalEmploymentId","setInternalEmploymentId","internalContractDocumentId","setInternalContractDocumentId","fieldsMetaRef","useRef","stepsToUse","STEPS_WITHOUT_SELECT_COUNTRY","STEPS","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","employment","isLoadingEmployment","refetchEmployment","useEmployment","employmentStatus","isEmploymentReadOnly","reviewStepAllowedEmploymentStatus","canInvite","disabledInviteButtonEmploymentStatus","invitedStatus","useMemo","createEmploymentMutation","useCreateEmployment","createContractorContractDocumentMutation","useCreateContractorContractDocument","signContractDocumentMutation","useSignContractDocument","manageContractorSubscriptionMutation","usePostManageContractorSubscriptions","createEmploymentMutationAsync","mutationToPromise","createContractorContractDocumentMutationAsync","signContractDocumentMutationAsync","manageContractorSubscriptionMutationAsync","selectCountryForm","isLoadingCountries","useCountriesSchemaField","selectContractorSubscriptionForm","isLoadingContractorSubscriptions","useContractorSubscriptionSchemaField","formType","employmentKey","serverEmploymentData","useJSONSchema","form","jsonSchemaOptions","query","mergedFormValues","useJSONSchemaForm","isBasicInformationDetailsEnabled","isContractorOnboardingDetailsEnabled","basicInformationForm","isLoadingBasicInformationForm","contractorOnboardingDetailsForm","isLoadingContractorOnboardingDetailsForm","useContractorOnboardingDetailsSchema","signatureSchemaForm","useGetContractDocumentSignatureSchema","documentPreviewPdf","isLoadingDocumentPreviewForm","useGetShowContractDocument","stepFields","stepFieldsWithFlatFieldsets","country","employmentBasicInformation","employmentContractDetails","employmentCountryCode","selectCountryInitialValues","getInitialValues","basicInformationInitialValues","initialValues","contractDetailsInitialValues","contractPreviewInitialValues","pricingPlanInitialValues","isNavigatingToReview","useEffect","prettifyFormValues","goTo","step","parseFormValues","values","parseJSFToValidate","onSubmit","currentStepName","parsedValues","isEmploymentNotLoaded","hasChangedCountry","payload","response","error","contractDocumentId","contractorStandardProductIdentifier","contractorPlusProductIdentifier"]}