@remoteoss/remote-flows 0.4.0-alpha.9 → 0.4.1

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 (350) hide show
  1. package/README.md +25 -13
  2. package/dist/chunk-276MJCIE.js +2 -0
  3. package/dist/chunk-276MJCIE.js.map +1 -0
  4. package/dist/{chunk-OIXUBXFU.js → chunk-2IOIRPXX.js} +2 -2
  5. package/dist/chunk-2XVOKTPC.js +2 -0
  6. package/dist/chunk-2XVOKTPC.js.map +1 -0
  7. package/dist/{chunk-4YNOSVYQ.js → chunk-3TAUIOLW.js} +2 -2
  8. package/dist/{chunk-WRDKLT4N.js → chunk-3ZWDIEEM.js} +2 -2
  9. package/dist/chunk-52J6QK2N.js +2 -0
  10. package/dist/chunk-52J6QK2N.js.map +1 -0
  11. package/dist/chunk-5KX664N7.js +2 -0
  12. package/dist/chunk-5KX664N7.js.map +1 -0
  13. package/dist/chunk-5NCRPBBP.js +2 -0
  14. package/dist/chunk-5NCRPBBP.js.map +1 -0
  15. package/dist/chunk-6ACGE24H.js +2 -0
  16. package/dist/chunk-6ACGE24H.js.map +1 -0
  17. package/dist/{chunk-XQRRFXRN.js → chunk-6O3WKNSB.js} +2 -2
  18. package/dist/chunk-6O3WKNSB.js.map +1 -0
  19. package/dist/chunk-7TOZZQQJ.js +2 -0
  20. package/dist/chunk-7TOZZQQJ.js.map +1 -0
  21. package/dist/{chunk-UEKXODGJ.js → chunk-ABFF6YSW.js} +2 -2
  22. package/dist/{chunk-IAHI4OUM.js → chunk-BHXNRWYC.js} +2 -2
  23. package/dist/chunk-BIXYNFMY.js +2 -0
  24. package/dist/chunk-BIXYNFMY.js.map +1 -0
  25. package/dist/{chunk-V2NCE4LO.js → chunk-BLVS2A23.js} +2 -2
  26. package/dist/chunk-CCJOYSVQ.js +2 -0
  27. package/dist/chunk-CCJOYSVQ.js.map +1 -0
  28. package/dist/{chunk-A4RX3KRZ.js → chunk-CFIJKJXD.js} +2 -2
  29. package/dist/{chunk-OKAOH4ER.js → chunk-CK2Y7YLV.js} +2 -2
  30. package/dist/chunk-CM7ZXKYC.js +2 -0
  31. package/dist/chunk-CM7ZXKYC.js.map +1 -0
  32. package/dist/chunk-CNYSTJVL.js +2 -0
  33. package/dist/chunk-CNYSTJVL.js.map +1 -0
  34. package/dist/{chunk-P5VTRXW3.js → chunk-CVXZNBHC.js} +2 -2
  35. package/dist/chunk-DBRBPYIF.js +2 -0
  36. package/dist/chunk-DBRBPYIF.js.map +1 -0
  37. package/dist/chunk-G7ELSCK7.js +2 -0
  38. package/dist/chunk-G7ELSCK7.js.map +1 -0
  39. package/dist/{chunk-L5OIK2ZJ.js → chunk-GATKVXGB.js} +2 -2
  40. package/dist/chunk-GVDARE4K.js +2 -0
  41. package/dist/chunk-GVDARE4K.js.map +1 -0
  42. package/dist/{chunk-LTDDSH45.js → chunk-HHMKYM4S.js} +2 -2
  43. package/dist/chunk-HRIDANZ6.js +2 -0
  44. package/dist/{chunk-GFWQG4ZT.js → chunk-HS3TP43Z.js} +2 -2
  45. package/dist/chunk-HSW5HMHH.js +2 -0
  46. package/dist/chunk-IKJFPDZL.js +2 -0
  47. package/dist/chunk-IKJFPDZL.js.map +1 -0
  48. package/dist/chunk-JW2HLB6X.js +2 -0
  49. package/dist/{chunk-6I6RMJXC.js → chunk-KFVOK5X5.js} +2 -2
  50. package/dist/chunk-KFVOK5X5.js.map +1 -0
  51. package/dist/{chunk-U4M5QBBG.js → chunk-KKM4IXYC.js} +2 -2
  52. package/dist/{chunk-YG5FFTC4.js → chunk-KSHK3ZPX.js} +2 -2
  53. package/dist/chunk-KT6EAWZO.js +2 -0
  54. package/dist/chunk-L6CLZL2D.js +2 -0
  55. package/dist/chunk-L6CLZL2D.js.map +1 -0
  56. package/dist/{chunk-IKQ25VV5.js → chunk-LU6YNL6P.js} +2 -2
  57. package/dist/chunk-M6ZWJ7KV.js +2 -0
  58. package/dist/chunk-M6ZWJ7KV.js.map +1 -0
  59. package/dist/chunk-MC6FNME3.js +2 -0
  60. package/dist/chunk-MC6FNME3.js.map +1 -0
  61. package/dist/{chunk-HSY5OO7D.js → chunk-MIALHORP.js} +2 -2
  62. package/dist/{chunk-DZYFSFZ7.js → chunk-MRYRNB7Y.js} +2 -2
  63. package/dist/{chunk-PH5CQN7X.js → chunk-NTJN7NCK.js} +2 -2
  64. package/dist/{chunk-NEFNFYRS.js → chunk-OYI5OCMY.js} +2 -2
  65. package/dist/chunk-OZCFRM4R.js +2 -0
  66. package/dist/chunk-OZCFRM4R.js.map +1 -0
  67. package/dist/chunk-P37U34EQ.js +2 -0
  68. package/dist/{chunk-O562EWKG.js → chunk-PGWKJ6FK.js} +2 -2
  69. package/dist/{chunk-B4SVITZI.js → chunk-PJ6EQF5M.js} +2 -2
  70. package/dist/{chunk-JI4NYTW4.js → chunk-PJBAQZ6G.js} +2 -2
  71. package/dist/chunk-PJBAQZ6G.js.map +1 -0
  72. package/dist/{chunk-G7BISHWK.js → chunk-PWUYHFON.js} +2 -2
  73. package/dist/chunk-QJWVOD4K.js +2 -0
  74. package/dist/chunk-QJWVOD4K.js.map +1 -0
  75. package/dist/chunk-QW4JPW6J.js +2 -0
  76. package/dist/chunk-QW4JPW6J.js.map +1 -0
  77. package/dist/chunk-R4PWQPR6.js +2 -0
  78. package/dist/chunk-R4PWQPR6.js.map +1 -0
  79. package/dist/chunk-RNR4JEHX.js +2 -0
  80. package/dist/chunk-RNR4JEHX.js.map +1 -0
  81. package/dist/{chunk-6T3A6GWH.js → chunk-SG67NZYI.js} +2 -2
  82. package/dist/chunk-SX5W3CBP.js +2 -0
  83. package/dist/chunk-SX5W3CBP.js.map +1 -0
  84. package/dist/{chunk-WEIRXEXU.js → chunk-SYEPIESJ.js} +2 -2
  85. package/dist/chunk-SYEPIESJ.js.map +1 -0
  86. package/dist/chunk-TC3SWPEN.js +2 -0
  87. package/dist/{chunk-5ETXP2QF.js.map → chunk-TC3SWPEN.js.map} +1 -1
  88. package/dist/chunk-TQNMLD3A.js +2 -0
  89. package/dist/chunk-TQNMLD3A.js.map +1 -0
  90. package/dist/{chunk-6HGUGIYJ.js → chunk-TVZAFTPT.js} +2 -2
  91. package/dist/{chunk-T5NPHXFC.js → chunk-V4X62BBS.js} +2 -2
  92. package/dist/{chunk-3PH5E6CZ.js → chunk-VTNGEN34.js} +2 -2
  93. package/dist/chunk-VTNGEN34.js.map +1 -0
  94. package/dist/{chunk-EMVYCKDC.js → chunk-WZSGDTVV.js} +2 -2
  95. package/dist/chunk-X36OBDKD.js +2 -0
  96. package/dist/chunk-X36OBDKD.js.map +1 -0
  97. package/dist/chunk-XIPPSRO6.js +2 -0
  98. package/dist/chunk-XIPPSRO6.js.map +1 -0
  99. package/dist/chunk-Y6K2UK3D.js +2 -0
  100. package/dist/chunk-Y6K2UK3D.js.map +1 -0
  101. package/dist/chunk-YECC5GAT.js +2 -0
  102. package/dist/chunk-YJXRJTOH.js +1 -0
  103. package/dist/{chunk-O3QLBSMV.js → chunk-Z4FTX74F.js} +2 -2
  104. package/dist/{chunk-7KUKFRKC.js → chunk-ZHGFPGWR.js} +2 -2
  105. package/dist/{chunk-QHN4PPHD.js → chunk-ZOTFG7GS.js} +2 -2
  106. package/dist/flows/ContractAmendment/ContractAmendmentBack.js +1 -1
  107. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  108. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  109. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +2 -3
  110. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  111. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  112. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  113. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.js +1 -1
  114. package/dist/flows/ContractAmendment/context.d.ts +5 -3
  115. package/dist/flows/ContractAmendment/context.js +1 -1
  116. package/dist/flows/ContractAmendment/hooks.d.ts +2 -3
  117. package/dist/flows/ContractAmendment/hooks.js +1 -1
  118. package/dist/flows/ContractAmendment/index.d.ts +2 -3
  119. package/dist/flows/ContractAmendment/index.js +1 -1
  120. package/dist/flows/ContractAmendment/types.d.ts +0 -2
  121. package/dist/flows/ContractAmendment/utils.d.ts +1 -1
  122. package/dist/flows/ContractAmendment/utils.js +1 -1
  123. package/dist/flows/CostCalculator/CostCalculatorDisclaimer.js +1 -1
  124. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +9 -6
  125. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  126. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +1 -2
  127. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  128. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  129. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  130. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js +1 -1
  131. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js +1 -1
  132. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js +1 -1
  133. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
  134. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +1 -1
  135. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js +1 -1
  136. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.js +1 -1
  137. package/dist/flows/CostCalculator/api.d.ts +70 -0
  138. package/dist/flows/CostCalculator/api.js +2 -0
  139. package/dist/flows/CostCalculator/components/SalaryField.d.ts +20 -0
  140. package/dist/flows/CostCalculator/components/SalaryField.js +2 -0
  141. package/dist/flows/CostCalculator/context.d.ts +3 -4
  142. package/dist/flows/CostCalculator/context.js +1 -1
  143. package/dist/flows/CostCalculator/disclaimerUtils.js +1 -1
  144. package/dist/flows/CostCalculator/hooks.d.ts +7 -21
  145. package/dist/flows/CostCalculator/hooks.js +1 -1
  146. package/dist/flows/CostCalculator/index.d.ts +6 -5
  147. package/dist/flows/CostCalculator/index.js +1 -1
  148. package/dist/flows/CostCalculator/jsonSchema.js +1 -1
  149. package/dist/flows/CostCalculator/types.d.ts +6 -4
  150. package/dist/flows/CostCalculator/utils.d.ts +6 -4
  151. package/dist/flows/CostCalculator/utils.js +1 -1
  152. package/dist/flows/Onboarding/OnboardingFlow.d.ts +16 -14
  153. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  154. package/dist/flows/Onboarding/api.d.ts +48 -8
  155. package/dist/flows/Onboarding/api.js +1 -1
  156. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +18 -0
  157. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +2 -0
  158. package/dist/flows/Onboarding/{BasicInformationStep.d.ts → components/BasicInformationStep.d.ts} +9 -5
  159. package/dist/flows/Onboarding/components/BasicInformationStep.js +2 -0
  160. package/dist/flows/Onboarding/{BenefitsStep.d.ts → components/BenefitsStep.d.ts} +11 -7
  161. package/dist/flows/Onboarding/components/BenefitsStep.js +2 -0
  162. package/dist/flows/Onboarding/{ContractDetailsStep.d.ts → components/ContractDetailsStep.d.ts} +9 -5
  163. package/dist/flows/Onboarding/components/ContractDetailsStep.js +2 -0
  164. package/dist/flows/Onboarding/components/OnboardingBack.d.ts +7 -0
  165. package/dist/flows/Onboarding/components/OnboardingBack.js +2 -0
  166. package/dist/flows/Onboarding/{OnboardingForm.d.ts → components/OnboardingForm.d.ts} +5 -6
  167. package/dist/flows/Onboarding/components/OnboardingForm.js +2 -0
  168. package/dist/flows/Onboarding/{OnboardingInvite.d.ts → components/OnboardingInvite.d.ts} +10 -5
  169. package/dist/flows/Onboarding/components/OnboardingInvite.js +2 -0
  170. package/dist/flows/Onboarding/components/OnboardingSubmit.js +2 -0
  171. package/dist/flows/Onboarding/components/OnboardingSubmit.js.map +1 -0
  172. package/dist/flows/Onboarding/{ReviewStep.d.ts → components/ReviewStep.d.ts} +3 -4
  173. package/dist/flows/Onboarding/components/ReviewStep.js +2 -0
  174. package/dist/flows/Onboarding/components/ReviewStep.js.map +1 -0
  175. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +15 -0
  176. package/dist/flows/Onboarding/components/SaveDraftButton.js +2 -0
  177. package/dist/flows/Onboarding/components/SaveDraftButton.js.map +1 -0
  178. package/dist/flows/Onboarding/{SelectCountryStep.d.ts → components/SelectCountryStep.d.ts} +9 -5
  179. package/dist/flows/Onboarding/components/SelectCountryStep.js +2 -0
  180. package/dist/flows/Onboarding/components/SelectCountryStep.js.map +1 -0
  181. package/dist/flows/Onboarding/context.d.ts +16 -7
  182. package/dist/flows/Onboarding/context.js +1 -1
  183. package/dist/flows/Onboarding/hooks.d.ts +24 -8
  184. package/dist/flows/Onboarding/hooks.js +1 -1
  185. package/dist/flows/Onboarding/index.d.ts +14 -14
  186. package/dist/flows/Onboarding/index.js +1 -1
  187. package/dist/flows/Onboarding/json-schemas/selectCountryStep.js +1 -1
  188. package/dist/flows/Onboarding/types.d.ts +37 -5
  189. package/dist/flows/Onboarding/utils.d.ts +11 -1
  190. package/dist/flows/Onboarding/utils.js +1 -1
  191. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +1 -1
  192. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  193. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +1 -1
  194. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  195. package/dist/flows/Termination/PaidTimeOffForm.d.ts +1 -1
  196. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  197. package/dist/flows/Termination/TerminationBack.js +1 -1
  198. package/dist/flows/Termination/TerminationDetailsForm.d.ts +1 -1
  199. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  200. package/dist/flows/Termination/TerminationFlow.d.ts +3 -3
  201. package/dist/flows/Termination/TerminationFlow.js +1 -1
  202. package/dist/flows/Termination/TerminationForm.d.ts +1 -1
  203. package/dist/flows/Termination/TerminationForm.js +1 -1
  204. package/dist/flows/Termination/TerminationSubmit.js +1 -1
  205. package/dist/flows/Termination/TimeOff.d.ts +1 -1
  206. package/dist/flows/Termination/TimeOff.js +1 -1
  207. package/dist/flows/Termination/context.d.ts +6 -3
  208. package/dist/flows/Termination/context.js +1 -1
  209. package/dist/flows/Termination/hooks.d.ts +3 -3
  210. package/dist/flows/Termination/hooks.js +1 -1
  211. package/dist/flows/Termination/index.d.ts +3 -3
  212. package/dist/flows/Termination/index.js +1 -1
  213. package/dist/flows/Termination/json-schemas/additionalInformation.js +1 -1
  214. package/dist/flows/Termination/json-schemas/defaultSchema.js +1 -1
  215. package/dist/flows/Termination/json-schemas/employeeComunication.js +1 -1
  216. package/dist/flows/Termination/json-schemas/jsonSchema.js +1 -1
  217. package/dist/flows/Termination/json-schemas/paidTimeOff.js +1 -1
  218. package/dist/flows/Termination/json-schemas/schema.js +1 -1
  219. package/dist/flows/Termination/json-schemas/terminationDetails.js +1 -1
  220. package/dist/flows/Termination/types.d.ts +1 -1
  221. package/dist/flows/Termination/utils.js +1 -1
  222. package/dist/flows/types.d.ts +3 -4
  223. package/dist/flows/useStepState.js +1 -1
  224. package/dist/flows/utils.d.ts +1 -1
  225. package/dist/flows/utils.js +1 -1
  226. package/dist/index.css +1 -1
  227. package/dist/index.css.map +1 -1
  228. package/dist/index.d.ts +21 -19
  229. package/dist/index.js +1 -1
  230. package/dist/index.js.map +1 -1
  231. package/dist/mutations-B6HWH-rZ.d.ts +22 -0
  232. package/dist/{remoteFlows-D0i6pVe5.d.ts → remoteFlows-B-p1H61n.d.ts} +32 -8
  233. package/dist/types-Zg1n_9wh.d.ts +3 -0
  234. package/dist/{types.gen-Ctv2nomK.d.ts → types.gen-DSJsKiNm.d.ts} +93 -1
  235. package/package.json +2 -1
  236. package/dist/chunk-2Y22JKVE.js +0 -2
  237. package/dist/chunk-3PH5E6CZ.js.map +0 -1
  238. package/dist/chunk-55SA3TEF.js +0 -2
  239. package/dist/chunk-5ETXP2QF.js +0 -2
  240. package/dist/chunk-6I6RMJXC.js.map +0 -1
  241. package/dist/chunk-AN5JSUEO.js +0 -2
  242. package/dist/chunk-AN5JSUEO.js.map +0 -1
  243. package/dist/chunk-AYDF3IFZ.js +0 -2
  244. package/dist/chunk-BHFT5CRC.js +0 -2
  245. package/dist/chunk-BHFT5CRC.js.map +0 -1
  246. package/dist/chunk-CVGR3FDH.js +0 -2
  247. package/dist/chunk-CVGR3FDH.js.map +0 -1
  248. package/dist/chunk-DBIPVIBO.js +0 -2
  249. package/dist/chunk-DBIPVIBO.js.map +0 -1
  250. package/dist/chunk-EGDD73PU.js +0 -2
  251. package/dist/chunk-EGDD73PU.js.map +0 -1
  252. package/dist/chunk-ENBY6GBG.js +0 -2
  253. package/dist/chunk-ENBY6GBG.js.map +0 -1
  254. package/dist/chunk-FB4QOGWE.js +0 -2
  255. package/dist/chunk-FGBEOUQK.js +0 -1
  256. package/dist/chunk-GBWDHU5E.js +0 -2
  257. package/dist/chunk-GBWDHU5E.js.map +0 -1
  258. package/dist/chunk-GMU3QGAR.js +0 -2
  259. package/dist/chunk-GMU3QGAR.js.map +0 -1
  260. package/dist/chunk-HBH2PSYQ.js +0 -2
  261. package/dist/chunk-HBH2PSYQ.js.map +0 -1
  262. package/dist/chunk-HJBXUPHM.js +0 -2
  263. package/dist/chunk-HJBXUPHM.js.map +0 -1
  264. package/dist/chunk-JI4NYTW4.js.map +0 -1
  265. package/dist/chunk-JJPI2YDM.js +0 -2
  266. package/dist/chunk-JJPI2YDM.js.map +0 -1
  267. package/dist/chunk-JRQSZHUU.js +0 -2
  268. package/dist/chunk-JRQSZHUU.js.map +0 -1
  269. package/dist/chunk-MGUDZTTV.js +0 -2
  270. package/dist/chunk-MGUDZTTV.js.map +0 -1
  271. package/dist/chunk-NF5IMQEW.js +0 -2
  272. package/dist/chunk-NWCW5MRR.js +0 -2
  273. package/dist/chunk-NWCW5MRR.js.map +0 -1
  274. package/dist/chunk-ONZPO4GN.js +0 -2
  275. package/dist/chunk-ONZPO4GN.js.map +0 -1
  276. package/dist/chunk-PJMKZ3HR.js +0 -2
  277. package/dist/chunk-PJMKZ3HR.js.map +0 -1
  278. package/dist/chunk-RQWGNKGW.js +0 -2
  279. package/dist/chunk-RYEOLQIL.js +0 -2
  280. package/dist/chunk-RYEOLQIL.js.map +0 -1
  281. package/dist/chunk-SIJ5SUY6.js +0 -2
  282. package/dist/chunk-SIJ5SUY6.js.map +0 -1
  283. package/dist/chunk-TLKP4CWE.js +0 -2
  284. package/dist/chunk-TLKP4CWE.js.map +0 -1
  285. package/dist/chunk-TPRGCMIZ.js +0 -2
  286. package/dist/chunk-TPRGCMIZ.js.map +0 -1
  287. package/dist/chunk-VI7WS34A.js +0 -2
  288. package/dist/chunk-VI7WS34A.js.map +0 -1
  289. package/dist/chunk-WEIRXEXU.js.map +0 -1
  290. package/dist/chunk-WU77JQYU.js +0 -2
  291. package/dist/chunk-WU77JQYU.js.map +0 -1
  292. package/dist/chunk-XQRRFXRN.js.map +0 -1
  293. package/dist/flows/Onboarding/BasicInformationStep.js +0 -2
  294. package/dist/flows/Onboarding/BenefitsStep.js +0 -2
  295. package/dist/flows/Onboarding/ContractDetailsStep.js +0 -2
  296. package/dist/flows/Onboarding/OnboardingBack.d.ts +0 -6
  297. package/dist/flows/Onboarding/OnboardingBack.js +0 -2
  298. package/dist/flows/Onboarding/OnboardingForm.js +0 -2
  299. package/dist/flows/Onboarding/OnboardingInvite.js +0 -2
  300. package/dist/flows/Onboarding/OnboardingSubmit.js +0 -2
  301. package/dist/flows/Onboarding/ReviewStep.js +0 -2
  302. package/dist/flows/Onboarding/SelectCountryStep.js +0 -2
  303. package/dist/mutations-v9H353tz.d.ts +0 -10
  304. package/dist/types-CxSFjQw5.d.ts +0 -3
  305. /package/dist/{chunk-OIXUBXFU.js.map → chunk-2IOIRPXX.js.map} +0 -0
  306. /package/dist/{chunk-4YNOSVYQ.js.map → chunk-3TAUIOLW.js.map} +0 -0
  307. /package/dist/{chunk-WRDKLT4N.js.map → chunk-3ZWDIEEM.js.map} +0 -0
  308. /package/dist/{chunk-UEKXODGJ.js.map → chunk-ABFF6YSW.js.map} +0 -0
  309. /package/dist/{chunk-IAHI4OUM.js.map → chunk-BHXNRWYC.js.map} +0 -0
  310. /package/dist/{chunk-V2NCE4LO.js.map → chunk-BLVS2A23.js.map} +0 -0
  311. /package/dist/{chunk-A4RX3KRZ.js.map → chunk-CFIJKJXD.js.map} +0 -0
  312. /package/dist/{chunk-OKAOH4ER.js.map → chunk-CK2Y7YLV.js.map} +0 -0
  313. /package/dist/{chunk-P5VTRXW3.js.map → chunk-CVXZNBHC.js.map} +0 -0
  314. /package/dist/{chunk-L5OIK2ZJ.js.map → chunk-GATKVXGB.js.map} +0 -0
  315. /package/dist/{chunk-LTDDSH45.js.map → chunk-HHMKYM4S.js.map} +0 -0
  316. /package/dist/{chunk-FB4QOGWE.js.map → chunk-HRIDANZ6.js.map} +0 -0
  317. /package/dist/{chunk-GFWQG4ZT.js.map → chunk-HS3TP43Z.js.map} +0 -0
  318. /package/dist/{chunk-2Y22JKVE.js.map → chunk-HSW5HMHH.js.map} +0 -0
  319. /package/dist/{chunk-55SA3TEF.js.map → chunk-JW2HLB6X.js.map} +0 -0
  320. /package/dist/{chunk-U4M5QBBG.js.map → chunk-KKM4IXYC.js.map} +0 -0
  321. /package/dist/{chunk-YG5FFTC4.js.map → chunk-KSHK3ZPX.js.map} +0 -0
  322. /package/dist/{chunk-RQWGNKGW.js.map → chunk-KT6EAWZO.js.map} +0 -0
  323. /package/dist/{chunk-IKQ25VV5.js.map → chunk-LU6YNL6P.js.map} +0 -0
  324. /package/dist/{chunk-HSY5OO7D.js.map → chunk-MIALHORP.js.map} +0 -0
  325. /package/dist/{chunk-DZYFSFZ7.js.map → chunk-MRYRNB7Y.js.map} +0 -0
  326. /package/dist/{chunk-PH5CQN7X.js.map → chunk-NTJN7NCK.js.map} +0 -0
  327. /package/dist/{chunk-NEFNFYRS.js.map → chunk-OYI5OCMY.js.map} +0 -0
  328. /package/dist/{chunk-AYDF3IFZ.js.map → chunk-P37U34EQ.js.map} +0 -0
  329. /package/dist/{chunk-O562EWKG.js.map → chunk-PGWKJ6FK.js.map} +0 -0
  330. /package/dist/{chunk-B4SVITZI.js.map → chunk-PJ6EQF5M.js.map} +0 -0
  331. /package/dist/{chunk-G7BISHWK.js.map → chunk-PWUYHFON.js.map} +0 -0
  332. /package/dist/{chunk-6T3A6GWH.js.map → chunk-SG67NZYI.js.map} +0 -0
  333. /package/dist/{chunk-6HGUGIYJ.js.map → chunk-TVZAFTPT.js.map} +0 -0
  334. /package/dist/{chunk-T5NPHXFC.js.map → chunk-V4X62BBS.js.map} +0 -0
  335. /package/dist/{chunk-EMVYCKDC.js.map → chunk-WZSGDTVV.js.map} +0 -0
  336. /package/dist/{chunk-NF5IMQEW.js.map → chunk-YECC5GAT.js.map} +0 -0
  337. /package/dist/{chunk-FGBEOUQK.js.map → chunk-YJXRJTOH.js.map} +0 -0
  338. /package/dist/{chunk-O3QLBSMV.js.map → chunk-Z4FTX74F.js.map} +0 -0
  339. /package/dist/{chunk-7KUKFRKC.js.map → chunk-ZHGFPGWR.js.map} +0 -0
  340. /package/dist/{chunk-QHN4PPHD.js.map → chunk-ZOTFG7GS.js.map} +0 -0
  341. /package/dist/flows/{Onboarding/BasicInformationStep.js.map → CostCalculator/api.js.map} +0 -0
  342. /package/dist/flows/{Onboarding/BenefitsStep.js.map → CostCalculator/components/SalaryField.js.map} +0 -0
  343. /package/dist/flows/Onboarding/{ContractDetailsStep.js.map → components/AnnualGrossSalary.js.map} +0 -0
  344. /package/dist/flows/Onboarding/{OnboardingBack.js.map → components/BasicInformationStep.js.map} +0 -0
  345. /package/dist/flows/Onboarding/{OnboardingForm.js.map → components/BenefitsStep.js.map} +0 -0
  346. /package/dist/flows/Onboarding/{OnboardingInvite.js.map → components/ContractDetailsStep.js.map} +0 -0
  347. /package/dist/flows/Onboarding/{OnboardingSubmit.js.map → components/OnboardingBack.js.map} +0 -0
  348. /package/dist/flows/Onboarding/{ReviewStep.js.map → components/OnboardingForm.js.map} +0 -0
  349. /package/dist/flows/Onboarding/{SelectCountryStep.js.map → components/OnboardingInvite.js.map} +0 -0
  350. /package/dist/flows/Onboarding/{OnboardingSubmit.d.ts → components/OnboardingSubmit.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
- import { PropsWithChildren } from 'react';
1
+ import { PropsWithChildren, ReactNode } from 'react';
2
2
  import { ControllerRenderProps, FieldValues, ControllerFieldState } from 'react-hook-form';
3
3
  import { AnySchema } from 'yup';
4
- import { S as SupportedTypes } from './types-CxSFjQw5.js';
4
+ import { S as SupportedTypes } from './types-Zg1n_9wh.js';
5
5
 
6
6
  type ThemeProviderProps = PropsWithChildren<{
7
7
  theme?: Partial<{
@@ -31,13 +31,26 @@ type StatementProps = {
31
31
  severity: 'warning' | 'error' | 'success' | 'info' | 'neutral' | 'time';
32
32
  };
33
33
 
34
+ declare const ENVIRONMENTS: {
35
+ partners: string;
36
+ production: string;
37
+ sandbox: string;
38
+ staging: string;
39
+ };
40
+
34
41
  type AuthResponse = {
35
42
  accessToken: string;
36
43
  expiresIn: number;
37
44
  };
45
+ type JSFFieldset = {
46
+ [x: string]: {
47
+ propertiesByName: string[];
48
+ title: string;
49
+ };
50
+ };
38
51
  type JSFField = {
39
52
  computedAttributes: Record<string, unknown>;
40
- description: string;
53
+ description: ReactNode;
41
54
  errorMessage: Record<string, string>;
42
55
  inputType: SupportedTypes;
43
56
  isVisible: boolean;
@@ -52,11 +65,13 @@ type JSFField = {
52
65
  value: string;
53
66
  label: string;
54
67
  description?: string;
68
+ disabled?: boolean;
55
69
  }>;
56
70
  defaultValue?: string | number;
57
71
  minDate?: string;
58
72
  maxLength?: number;
59
73
  multiple?: boolean;
74
+ meta?: Record<string, unknown>;
60
75
  };
61
76
  /**
62
77
  * Props for custom field components.
@@ -80,7 +95,9 @@ type FieldComponentProps = {
80
95
  * Metadata derived from JSON schema parsing that provides additional context and validation rules for the field.
81
96
  * Contains properties defined in the original JSON schema such as type, format, constraints, etc.
82
97
  */
83
- fieldData: Partial<JSFField>;
98
+ fieldData: Partial<JSFField> & {
99
+ metadata?: Record<string, unknown>;
100
+ };
84
101
  };
85
102
  /**
86
103
  * Props for custom button components.
@@ -118,10 +135,10 @@ type RemoteFlowsSDKProps = Omit<ThemeProviderProps, 'children'> & {
118
135
  */
119
136
  components?: Components;
120
137
  /**
121
- * Flag to indicate if the SDK is in testing mode and use the testing environment.
122
- * If true, the SDK will use the testing environment for all API calls.
138
+ * Environment to use for API calls.
139
+ * If not provided, the SDK will use production environment.
123
140
  */
124
- isTestingMode?: boolean;
141
+ environment?: keyof typeof ENVIRONMENTS;
125
142
  proxy?: {
126
143
  /**
127
144
  * URL of the proxy server to use for API calls.
@@ -136,5 +153,12 @@ type RemoteFlowsSDKProps = Omit<ThemeProviderProps, 'children'> & {
136
153
  };
137
154
  };
138
155
  type $TSFixMe = any;
156
+ declare global {
157
+ interface Window {
158
+ RemoteFlowsSDK?: {
159
+ version: string;
160
+ };
161
+ }
162
+ }
139
163
 
140
- export type { $TSFixMe as $, ButtonComponentProps as B, Components as C, FieldComponentProps as F, RemoteFlowsSDKProps as R, StatementComponentProps as S };
164
+ export type { $TSFixMe as $, ButtonComponentProps as B, Components as C, FieldComponentProps as F, JSFFieldset as J, RemoteFlowsSDKProps as R, StatementComponentProps as S, JSFField as a };
@@ -0,0 +1,3 @@
1
+ type SupportedTypes = 'text' | 'number' | 'email' | 'select' | 'multi-select' | 'radio' | 'fieldset' | 'fieldset-flat' | 'date' | 'checkbox' | 'textarea' | 'money' | 'file' | 'countries' | 'hidden' | 'work-schedule';
2
+
3
+ export type { SupportedTypes as S };
@@ -38,6 +38,25 @@ type TerminationOffboarding = {
38
38
  type UnifiedEmploymentUpsertBenefitOffersRequest = {
39
39
  [key: string]: unknown;
40
40
  };
41
+ /**
42
+ * The response from the currency converter
43
+ */
44
+ type ConvertCurrency = {
45
+ /**
46
+ * The exchange rate used to convert the amount
47
+ */
48
+ exchange_rate: number;
49
+ /**
50
+ * The amount in cents in the source currency
51
+ */
52
+ source_amount: number;
53
+ source_currency: CurrencyDefinition;
54
+ /**
55
+ * The amount in cents in the target currency
56
+ */
57
+ target_amount: number;
58
+ target_currency: CurrencyDefinition;
59
+ };
41
60
  type MinimalCountry = {
42
61
  alpha_2_code: string;
43
62
  code: string;
@@ -534,6 +553,23 @@ type RequestDetails = {
534
553
  reason_for_change_description?: string | null;
535
554
  salary_decrease_details?: SalaryDecreaseDetails;
536
555
  };
556
+ /**
557
+ * The parameters for the currency conversion
558
+ */
559
+ type ConvertCurrencyParams = {
560
+ /**
561
+ * The amount to convert in cents
562
+ */
563
+ amount: number;
564
+ /**
565
+ * The currency code to convert from
566
+ */
567
+ source_currency: string;
568
+ /**
569
+ * The currency code to convert to
570
+ */
571
+ target_currency: string;
572
+ };
537
573
  /**
538
574
  * Indicates the expected start date of the employee or contractor.
539
575
  *
@@ -802,6 +838,14 @@ type TooManyRequestsResponse = {
802
838
  type ConflictResponse = {
803
839
  message?: string;
804
840
  };
841
+ /**
842
+ * Currency object without a UUID identifier
843
+ */
844
+ type CurrencyDefinition = {
845
+ code: string;
846
+ name: string;
847
+ symbol: string;
848
+ };
805
849
  /**
806
850
  * TimeoffDay schema
807
851
  */
@@ -940,6 +984,16 @@ type ParameterError = {
940
984
  param: string;
941
985
  };
942
986
  type GenericFile = Blob | File;
987
+ type CreateContractEligibilityParams = {
988
+ /**
989
+ * type of employment eligibility to work in residing country
990
+ */
991
+ eligible_to_work_in_residing_country: 'citizen' | 'permanent_resident' | 'temporary_resident';
992
+ /**
993
+ * whether the employer or work restrictions apply
994
+ */
995
+ employer_or_work_restrictions: boolean;
996
+ };
943
997
  type TimeoffType = 'time_off' | 'sick_leave' | 'public_holiday' | 'unpaid_leave' | 'extended_leave' | 'in_lieu_time' | 'maternity_leave' | 'paternity_leave' | 'parental_leave' | 'bereavement' | 'military_leave' | 'other' | 'paid_time_off' | 'custom_company_leave' | 'rtt' | 'casual_leave' | 'rol' | 'ex_festivita';
944
998
  /**
945
999
  * The details of the salary decrease request if there is one
@@ -949,6 +1003,14 @@ type SalaryDecreaseDetails = {
949
1003
  salary_decrease_reason_description?: string | null;
950
1004
  was_employee_informed?: string;
951
1005
  } | null;
1006
+ /**
1007
+ * The response from the currency converter
1008
+ */
1009
+ type ConvertCurrencyResponse = {
1010
+ data: {
1011
+ conversion_data: ConvertCurrency;
1012
+ };
1013
+ };
952
1014
  type RequestError = {
953
1015
  errors: {
954
1016
  /**
@@ -1175,6 +1237,21 @@ type PatchUpdateEmployment2Errors = {
1175
1237
  429: TooManyRequestsResponse;
1176
1238
  };
1177
1239
  type PatchUpdateEmployment2Error = PatchUpdateEmployment2Errors[keyof PatchUpdateEmployment2Errors];
1240
+ type PostCreateContractEligibilityErrors = {
1241
+ /**
1242
+ * Bad Request
1243
+ */
1244
+ 400: BadRequestResponse;
1245
+ /**
1246
+ * Unprocessable Entity
1247
+ */
1248
+ 422: UnprocessableEntityResponse;
1249
+ /**
1250
+ * Unprocessable Entity
1251
+ */
1252
+ 429: TooManyRequestsResponse;
1253
+ };
1254
+ type PostCreateContractEligibilityError = PostCreateContractEligibilityErrors[keyof PostCreateContractEligibilityErrors];
1178
1255
  type PostAutomatableContractAmendmentErrors = {
1179
1256
  /**
1180
1257
  * Unauthorized
@@ -1209,5 +1286,20 @@ type PostInviteEmploymentInvitationErrors = {
1209
1286
  429: TooManyRequestsResponse;
1210
1287
  };
1211
1288
  type PostInviteEmploymentInvitationError = PostInviteEmploymentInvitationErrors[keyof PostInviteEmploymentInvitationErrors];
1289
+ type PostConvertCurrencyConverterErrors = {
1290
+ /**
1291
+ * Unauthorized
1292
+ */
1293
+ 401: UnauthorizedResponse;
1294
+ /**
1295
+ * Not Found
1296
+ */
1297
+ 404: NotFoundResponse;
1298
+ /**
1299
+ * Unprocessable Entity
1300
+ */
1301
+ 422: UnprocessableEntityResponse;
1302
+ };
1303
+ type PostConvertCurrencyConverterError = PostConvertCurrencyConverterErrors[keyof PostConvertCurrencyConverterErrors];
1212
1304
 
1213
- export type { ContractAmendmentAutomatableResponse as C, EmploymentShowResponse as E, ListTimeoffResponse as L, MagicLinkResponse as M, OffboardingResponse as O, PostAutomatableContractAmendmentError as P, SuccessResponse as S, TerminationDetailsParams as T, UnifiedEmploymentUpsertBenefitOffersRequest as U, ContractAmendmentResponse as a, PostCreateContractAmendmentError as b, CostCalculatorEstimateResponse as c, PostCreateEstimationError as d, CostCalculatorEstimatePdfResponse as e, PostCreateEstimationPdfError as f, CostCalculatorEstimateParams as g, EmploymentCreateParams as h, Employment as i, EmploymentTermType as j, PostCreateOffboardingError as k, EmploymentCreationResponse as l, PostCreateEmployment2Error as m, EmploymentResponse as n, PatchUpdateEmployment2Error as o, PutUpdateBenefitOfferError as p, Company as q, PostInviteEmploymentInvitationError as r, PostCreateRiskReserveError as s, EmploymentFullParams as t, UnprocessableEntityResponse as u, MagicLinkParams as v, TimeoffStatus as w, CostCalculatorEmployment as x, Currency as y };
1305
+ export type { CreateContractEligibilityParams as A, PostCreateOffboardingError as B, ContractAmendmentAutomatableResponse as C, TimeoffStatus as D, EmploymentShowResponse as E, CostCalculatorEmployment as F, Currency as G, ListTimeoffResponse as L, MinimalRegion as M, OffboardingResponse as O, PostAutomatableContractAmendmentError as P, SuccessResponse as S, TerminationDetailsParams as T, UnifiedEmploymentUpsertBenefitOffersRequest as U, ContractAmendmentResponse as a, PostCreateContractAmendmentError as b, CostCalculatorEstimateResponse as c, CostCalculatorEstimatePdfResponse as d, PostCreateEstimationPdfError as e, CostCalculatorEstimateParams as f, PostCreateEstimationError as g, EmploymentTermType as h, Employment as i, Company as j, PostInviteEmploymentInvitationError as k, PostCreateRiskReserveError as l, EmploymentCreationResponse as m, PostCreateEmployment2Error as n, EmploymentCreateParams as o, EmploymentResponse as p, PatchUpdateEmployment2Error as q, EmploymentFullParams as r, PutUpdateBenefitOfferError as s, MagicLinkResponse as t, UnprocessableEntityResponse as u, MagicLinkParams as v, ConvertCurrencyResponse as w, PostConvertCurrencyConverterError as x, ConvertCurrencyParams as y, PostCreateContractEligibilityError as z };
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@remoteoss/remote-flows",
3
- "version": "0.4.0-alpha.9",
3
+ "version": "0.4.1",
4
4
  "scripts": {
5
5
  "build": "NODE_ENV=production tsup",
6
6
  "ci": "npm run build && npm run check-format && npm run check-exports && npm run lint && npm run test",
7
7
  "check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm --exclude-entrypoints index.css",
8
8
  "check-format": "prettier --check .",
9
9
  "dev": "NODE_ENV=development tsup --watch",
10
+ "build:reset": "postcss src/styles/reset.css -o ./example/src/css/reset.css",
10
11
  "lint": "eslint .",
11
12
  "format": "prettier --write .",
12
13
  "openapi-ts": "openapi-ts",
@@ -1,2 +0,0 @@
1
- import{a as o}from"./chunk-JODJFARP.js";import{a as m}from"./chunk-W5DG5WWJ.js";import{a as e}from"./chunk-VX2UC3HG.js";import{a as i}from"./chunk-XSHHMBMT.js";var p={employee_communication:o,termination_details:e,paid_time_off:m,additional_information:i};export{p as a};
2
- //# sourceMappingURL=chunk-2Y22JKVE.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/hooks.ts"],"sourcesContent":["import {\n getIndexTimeoff,\n getShowEmployment,\n TimeoffStatus,\n} from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { ContractAmendmentParams } from '@/src/flows/ContractAmendment/types';\nimport { Client } from '@hey-api/client-fetch';\nimport { useQuery } from '@tanstack/react-query';\n\ntype UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;\n\n/**\n * Hook to retrieve employment details for a specific employment ID.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} params.employmentId - The ID of the employment to fetch details for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the employment details.\n */\nexport const useEmploymentQuery = ({ employmentId }: UseEmployment) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n queryFn: () => {\n return getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId },\n });\n },\n select: ({ data }) => data,\n });\n};\n\n/**\n * Hook to retrieve time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch time off data for.\n * @param {TimeoffStatus} [params.status] - The status of the time off requests to filter by (e.g., 'approved', 'pending').\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the time off data.\n *\n */\nexport const useTimeOffQuery = ({\n employmentId,\n status,\n}: {\n employmentId?: string;\n status?: TimeoffStatus;\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['timeoff', employmentId, status],\n retry: false,\n queryFn: () => {\n return getIndexTimeoff({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n query: {\n employment_id: employmentId,\n status: status,\n },\n });\n },\n select: ({ data }) => data,\n });\n};\n"],"mappings":"+HAQA,OAAS,YAAAA,MAAgB,wBAWlB,IAAMC,EAAqBC,EAAA,CAAC,CAAE,aAAAC,CAAa,IAAqB,CACrE,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,aAAcH,CAAY,EACrC,MAAO,GACP,QAASD,EAAA,IACAK,EAAkB,CACvB,OAAQH,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CAAE,cAAeD,CAAa,CACtC,CAAC,EAPM,WAST,OAAQD,EAAA,CAAC,CAAE,KAAAM,CAAK,IAAMA,EAAd,SACV,CAAC,CACH,EAhBkC,sBA2BrBC,EAAkBP,EAAA,CAAC,CAC9B,aAAAC,EACA,OAAAO,CACF,IAGM,CACJ,GAAM,CAAE,OAAAN,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,UAAWH,EAAcO,CAAM,EAC1C,MAAO,GACP,QAASR,EAAA,IACAS,EAAgB,CACrB,OAAQP,EACR,QAAS,CACP,cAAe,EACjB,EACA,MAAO,CACL,cAAeD,EACf,OAAQO,CACV,CACF,CAAC,EAVM,WAYT,OAAQR,EAAA,CAAC,CAAE,KAAAM,CAAK,IAAMA,EAAd,SACV,CAAC,CACH,EAzB+B","names":["useQuery","useEmploymentQuery","__name","employmentId","client","useClient","useQuery","getShowEmployment","data","useTimeOffQuery","status","getIndexTimeoff"]}
@@ -1,2 +0,0 @@
1
- import{b as e}from"./chunk-DZYFSFZ7.js";import{b as i}from"./chunk-EMVYCKDC.js";import{b as u}from"./chunk-WRDKLT4N.js";import{a as m}from"./chunk-AYDF3IFZ.js";import{jsx as s}from"react/jsx-runtime";function T({children:t,...o}){let{formId:n}=e(),{components:f}=u(),r=f?.button;return r?s(r,{...o,form:n,children:t}):s(i,{...o,form:n,children:t})}m(T,"TerminationSubmit");export{T as a};
2
- //# sourceMappingURL=chunk-55SA3TEF.js.map
@@ -1,2 +0,0 @@
1
- import{a as i}from"./chunk-AYDF3IFZ.js";import{clsx as e}from"clsx";import{twMerge as a}from"tailwind-merge";function c(...n){return a(e(n))}i(c,"cn");function m(n,t="\u20AC"){if(!n)return"-";let r=n/100;return`${t}${r.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}`}i(m,"formatCurrency");var s=i(n=>{let t={};return n.inner.forEach(r=>{r.path!==void 0&&(t[r.path]={type:r.type,errors:r.errors,inner:r.inner.map(o=>s(o))})}),t},"transformYupErrorsIntoObject");export{c as a,m as b,s as c};
2
- //# sourceMappingURL=chunk-5ETXP2QF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/ReviewStep.tsx"],"sourcesContent":["import { useOnboardingContext } from '@/src/flows/Onboarding/context';\nimport {\n CreditRiskStatus,\n CreditRiskState,\n Employment,\n} from '@/src/flows/Onboarding/types';\n\ntype ReviewStepProps = {\n /**\n * Render prop function for customizing the review step credit risk flow UI\n *\n * @param props - Object containing credit risk information\n * @param props.creditRiskState - Current state of the credit risk flow\n * - 'deposit_required': Deposit payment is required but not yet paid\n * - 'deposit_required_successful': Deposit payment has been successfully processed\n * - 'invite': Regular invite flow is available (no deposit required)\n * - 'invite_successful': Invitation has been successfully sent\n * - null: No specific credit risk state applies\n *\n * @param props.creditRiskStatus - Credit risk status from the backend\n * - 'not_started': Credit risk assessment has not been initiated\n * - 'ready': Ready for credit risk assessment\n * - 'in_progress': Credit risk assessment is in progress\n * - 'referred': Company has been referred for manual review\n * - 'fail': Credit risk assessment failed\n * - 'deposit_required': Company requires a deposit payment\n * - 'no_deposit_required': No deposit is required for this company\n * - undefined: Credit risk status not yet determined\n * @returns React.ReactNode to render for the review step\n */\n render: (props: {\n creditRiskState: CreditRiskState;\n creditRiskStatus: CreditRiskStatus | undefined;\n }) => React.ReactNode;\n};\n\nconst statusesToNotShowDeposit: Employment['status'][] = [\n 'invited',\n 'created_reserve_paid',\n];\n\nconst CREDIT_RISK_STATUSES: CreditRiskStatus[] = [\n 'deposit_required',\n 'referred',\n];\n\nexport function ReviewStep({ render }: ReviewStepProps) {\n const { onboardingBag, creditScore } = useOnboardingContext();\n\n // Helper variables to make logic more readable\n const isDepositRequiredCreditRisk =\n onboardingBag.creditRiskStatus === 'deposit_required';\n\n const hasEmploymentStatusThatHidesDeposit =\n onboardingBag.employment?.status &&\n statusesToNotShowDeposit.includes(onboardingBag.employment.status);\n\n const isCreditRiskStatusInExclusionList =\n onboardingBag.creditRiskStatus &&\n CREDIT_RISK_STATUSES.includes(onboardingBag.creditRiskStatus);\n\n const shouldShowDepositFlow =\n isDepositRequiredCreditRisk &&\n onboardingBag.employment?.status &&\n !hasEmploymentStatusThatHidesDeposit;\n\n const shouldShowInviteFlow =\n (onboardingBag.creditRiskStatus && !isCreditRiskStatusInExclusionList) ||\n (onboardingBag.employment?.status && hasEmploymentStatusThatHidesDeposit);\n\n const getCreditRiskState = (): CreditRiskState => {\n // Priority 1: Deposit required flow\n if (shouldShowDepositFlow) {\n return creditScore.showReserveInvoice\n ? 'deposit_required_successful'\n : 'deposit_required';\n }\n\n // Priority 2: Invite flow\n if (shouldShowInviteFlow) {\n return creditScore.showInviteSuccessful ? 'invite_successful' : 'invite';\n }\n\n // Default case\n return null;\n };\n\n const creditRiskState = getCreditRiskState();\n\n return render({\n creditRiskState,\n creditRiskStatus: onboardingBag.creditRiskStatus,\n });\n}\n"],"mappings":"gFAoCA,IAAMA,EAAmD,CACvD,UACA,sBACF,EAEMC,EAA2C,CAC/C,mBACA,UACF,EAEO,SAASC,EAAW,CAAE,OAAAC,CAAO,EAAoB,CACtD,GAAM,CAAE,cAAAC,EAAe,YAAAC,CAAY,EAAIC,EAAqB,EAGtDC,EACJH,EAAc,mBAAqB,mBAE/BI,EACJJ,EAAc,YAAY,QAC1BJ,EAAyB,SAASI,EAAc,WAAW,MAAM,EAE7DK,EACJL,EAAc,kBACdH,EAAqB,SAASG,EAAc,gBAAgB,EAExDM,EACJH,GACAH,EAAc,YAAY,QAC1B,CAACI,EAEGG,EACHP,EAAc,kBAAoB,CAACK,GACnCL,EAAc,YAAY,QAAUI,EAmBjCI,EAjBqBC,EAAA,IAErBH,EACKL,EAAY,mBACf,8BACA,mBAIFM,EACKN,EAAY,qBAAuB,oBAAsB,SAI3D,KAdkB,sBAiBgB,EAE3C,OAAOF,EAAO,CACZ,gBAAAS,EACA,iBAAkBR,EAAc,gBAClC,CAAC,CACH,CA/CgBS,EAAAX,EAAA","names":["statusesToNotShowDeposit","CREDIT_RISK_STATUSES","ReviewStep","render","onboardingBag","creditScore","useOnboardingContext","isDepositRequiredCreditRisk","hasEmploymentStatusThatHidesDeposit","isCreditRiskStatusInExclusionList","shouldShowDepositFlow","shouldShowInviteFlow","creditRiskState","__name"]}
@@ -1,2 +0,0 @@
1
- import{a as p}from"./chunk-NWCW5MRR.js";import{a as i}from"./chunk-JJPI2YDM.js";import{a as f}from"./chunk-6I6RMJXC.js";import{a as c}from"./chunk-RYEOLQIL.js";import{a as t}from"./chunk-BHFT5CRC.js";import{a as r}from"./chunk-SIJ5SUY6.js";import{a as m}from"./chunk-HJBXUPHM.js";import{a as s}from"./chunk-MGUDZTTV.js";import{a}from"./chunk-GBWDHU5E.js";import{a as n}from"./chunk-O562EWKG.js";import{a as e}from"./chunk-AYDF3IFZ.js";import{useId as y,useState as I}from"react";import{jsx as w}from"react/jsx-runtime";var A=e(({employmentId:d,companyId:S,countryCode:b,type:g="employee",render:u,options:l})=>{let B=y(),o=t({companyId:S,countryCode:b,employmentId:d,type:g,options:l}),[O,v]=I({showReserveInvoice:!1,showInviteSuccessful:!1});return w(n.Provider,{value:{formId:B,onboardingBag:o,creditScore:O,setCreditScore:v},children:u({onboardingBag:o,components:{BasicInformationStep:r,ContractDetailsStep:s,BenefitsStep:m,SubmitButton:i,BackButton:a,OnboardingInvite:p,SelectCountryStep:c,ReviewStep:f}})})},"OnboardingFlow");export{A as a};
2
- //# sourceMappingURL=chunk-AN5JSUEO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/OnboardingFlow.tsx"],"sourcesContent":["import React, { useId, useState } from 'react';\nimport { useOnboarding } from '@/src/flows/Onboarding/hooks';\nimport { BasicInformationStep } from '@/src/flows/Onboarding/BasicInformationStep';\nimport { OnboardingContext } from '@/src/flows/Onboarding/context';\nimport { OnboardingSubmit } from '@/src/flows/Onboarding/OnboardingSubmit';\nimport { OnboardingBack } from '@/src/flows/Onboarding/OnboardingBack';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { OnboardingInvite } from '@/src/flows/Onboarding/OnboardingInvite';\nimport { ContractDetailsStep } from '@/src/flows/Onboarding/ContractDetailsStep';\nimport { BenefitsStep } from '@/src/flows/Onboarding/BenefitsStep';\nimport { SelectCountryStep } from '@/src/flows/Onboarding/SelectCountryStep';\nimport { ReviewStep } from '@/src/flows/Onboarding/ReviewStep';\n\nexport type OnboardingRenderProps = {\n /**\n * The onboarding bag returned by the useOnboarding hook.\n * This bag contains all the methods and properties needed to handle the onboarding flow.\n * @see {@link useOnboarding}\n */\n onboardingBag: ReturnType<typeof useOnboarding>;\n /**\n * The components used in the onboarding flow.\n * This includes different steps, submit button, back button.\n * @see {@link BasicInformationStep}\n * @see {@link ContractDetailsStep}\n * @see {@link OnboardingSubmit}\n * @see {@link OnboardingBack}\n * @see {@link OnboardingInvite}\n * @see {@link BenefitsStep}\n * @see {@link OnboardingCreateReserve}\n * @see {@link InvitationSection}\n * @see {@link SelectCountryStep}\n * @see {@link ReviewStep}\n */\n components: {\n SubmitButton: typeof OnboardingSubmit;\n BackButton: typeof OnboardingBack;\n BasicInformationStep: typeof BasicInformationStep;\n OnboardingInvite: typeof OnboardingInvite;\n ContractDetailsStep: typeof ContractDetailsStep;\n BenefitsStep: typeof BenefitsStep;\n SelectCountryStep: typeof SelectCountryStep;\n ReviewStep: typeof ReviewStep;\n };\n};\n\ntype OnboardingFlowProps = OnboardingFlowParams & {\n render: ({\n onboardingBag,\n components,\n }: OnboardingRenderProps) => React.ReactNode;\n};\n\nexport const OnboardingFlow = ({\n employmentId,\n companyId,\n countryCode,\n type = 'employee',\n render,\n options,\n}: OnboardingFlowProps) => {\n const formId = useId();\n const onboardingBag = useOnboarding({\n companyId,\n countryCode,\n employmentId,\n type,\n options,\n });\n\n const [creditScore, setCreditScore] = useState<{\n showReserveInvoice: boolean;\n showInviteSuccessful: boolean;\n }>({\n showReserveInvoice: false,\n showInviteSuccessful: false,\n });\n\n return (\n <OnboardingContext.Provider\n value={{\n formId: formId,\n onboardingBag,\n creditScore,\n setCreditScore: setCreditScore,\n }}\n >\n {render({\n onboardingBag,\n components: {\n BasicInformationStep: BasicInformationStep,\n ContractDetailsStep: ContractDetailsStep,\n BenefitsStep: BenefitsStep,\n SubmitButton: OnboardingSubmit,\n BackButton: OnboardingBack,\n OnboardingInvite: OnboardingInvite,\n SelectCountryStep: SelectCountryStep,\n ReviewStep: ReviewStep,\n },\n })}\n </OnboardingContext.Provider>\n );\n};\n"],"mappings":"mbAAA,OAAgB,SAAAA,EAAO,YAAAC,MAAgB,QA+EnC,cAAAC,MAAA,oBA1BG,IAAMC,EAAiBC,EAAA,CAAC,CAC7B,aAAAC,EACA,UAAAC,EACA,YAAAC,EACA,KAAAC,EAAO,WACP,OAAAC,EACA,QAAAC,CACF,IAA2B,CACzB,IAAMC,EAASC,EAAM,EACfC,EAAgBC,EAAc,CAClC,UAAAR,EACA,YAAAC,EACA,aAAAF,EACA,KAAAG,EACA,QAAAE,CACF,CAAC,EAEK,CAACK,EAAaC,CAAc,EAAIC,EAGnC,CACD,mBAAoB,GACpB,qBAAsB,EACxB,CAAC,EAED,OACEf,EAACgB,EAAkB,SAAlB,CACC,MAAO,CACL,OAAQP,EACR,cAAAE,EACA,YAAAE,EACA,eAAgBC,CAClB,EAEC,SAAAP,EAAO,CACN,cAAAI,EACA,WAAY,CACV,qBAAsBM,EACtB,oBAAqBC,EACrB,aAAcC,EACd,aAAcC,EACd,WAAYC,EACZ,iBAAkBC,EAClB,kBAAmBC,EACnB,WAAYC,CACd,CACF,CAAC,EACH,CAEJ,EAjD8B","names":["useId","useState","jsx","OnboardingFlow","__name","employmentId","companyId","countryCode","type","render","options","formId","useId","onboardingBag","useOnboarding","creditScore","setCreditScore","useState","OnboardingContext","BasicInformationStep","ContractDetailsStep","BenefitsStep","OnboardingSubmit","OnboardingBack","OnboardingInvite","SelectCountryStep","ReviewStep"]}
@@ -1,2 +0,0 @@
1
- var c=Object.defineProperty;var d=(a,b)=>c(a,"name",{value:b,configurable:!0});export{d as a};
2
- //# sourceMappingURL=chunk-AYDF3IFZ.js.map
@@ -1,2 +0,0 @@
1
- import{a as D,b as q,c as d}from"./chunk-CVGR3FDH.js";import{a as x,b as H,c as j,f as W,g as K,h as Y,i as z,j as G,l as Q}from"./chunk-VI7WS34A.js";import{a as E}from"./chunk-JRQSZHUU.js";import{a as U}from"./chunk-JI4NYTW4.js";import{c as u,d as c}from"./chunk-TPRGCMIZ.js";import{a as s}from"./chunk-AYDF3IFZ.js";import{useEffect as Ce,useMemo as X,useRef as Le,useState as Z}from"react";import we from"lodash.mergewith";var ke={employment_basic_information:"basic_information",contract_details:"contract_details"},Ie={select_country:null,basic_information:"employment_basic_information",contract_details:"contract_details",benefits:null,review:null},Be=["invited","created_awaiting_reserve","created_reserve_paid"],qe=s(({employmentId:S,companyId:$,countryCode:C,type:ee,options:h})=>{let F=Le({}),[i,te]=Z(S),[r,L]=Z(C||null),{data:n,isLoading:ne,refetch:oe}=x(i);n?.country?.code&&r!==n.country.code&&L(n.country.code);let{data:w,isLoading:ae}=j(i),{data:k,isLoading:ie,refetch:I}=H($),re=C?q:D,{fieldValues:f,stepState:e,setFieldValues:se,previousStep:ce,nextStep:me,goToStep:V,setStepValues:B}=U(re),{selectCountryForm:g,isLoading:le}=Q(h),R=Y(),v=z(),M=G(),{mutateAsync:ue}=E(R),{mutateAsync:N}=E(v),{mutateAsync:de}=E(M),fe=Ie[e.currentStep.name]||"employment_basic_information",pe=ke[fe],ye=n?.[pe]||{},_e=!!(r&&(e.currentStep.name==="basic_information"||e.currentStep.name==="contract_details"||S)),A=s(({form:t})=>W({countryCode:r,form:t,fieldValues:Object.keys(f).length>0?{...e.values?.[e.currentStep.name],...f}:ye,options:{...h,queryOptions:{enabled:_e}}}),"useJSONSchema"),{data:m,isLoading:Se}=A({form:"employment_basic_information"}),{data:l,isLoading:ge}=A({form:"contract_details"}),{data:p,isLoading:be}=K(i,f,h),O=X(()=>{if(e.currentStep.name==="benefits"){let t={...e.values?.[e.currentStep.name],...f};return we({},w,t)}return{}},[e.currentStep.name,w,e.values,f]),o=X(()=>({select_country:g?.fields||[],basic_information:m?.fields||[],contract_details:l?.fields||[],benefits:p?.fields||[],review:[]}),[g?.fields,m?.fields,l?.fields,p?.fields]),Ee={select_country:c(o[e.currentStep.name],{country:r||n?.country.code||""}),basic_information:c(o[e.currentStep.name],n?.basic_information||{}),contract_details:c(o[e.currentStep.name],n?.contract_details||{}),benefits:O||{}},T=Se||ge||ne||be||ae||ie||le,P=!!(S&&n&&Be.includes(n?.status)&&!T&&o.basic_information.length>0&&o.contract_details.length>0&&e.currentStep.name!=="review");Ce(()=>{if(P){let t=c(o.select_country,{country:r||n?.country.code||""}),a=c(o.basic_information,n?.basic_information||{}),y=c(o.contract_details,n?.contract_details||{}),b=c(o.benefits,O||{});F.current={select_country:d(t,o.select_country),basic_information:d(a,o.basic_information),contract_details:d(y,o.contract_details),benefits:d(b,o.benefits)},B({select_country:t,basic_information:a,contract_details:y,benefits:b,review:{}}),V("review")}},[S,n,T,r,V,O,o,e.currentStep.name,B,P]);let he=T||P;function J(t){return g&&e.currentStep.name==="select_country"?t:m&&e.currentStep.name==="basic_information"?u(t,m?.fields,{isPartialValidation:!0}):l&&e.currentStep.name==="contract_details"?u(t,l?.fields,{isPartialValidation:!0}):{}}s(J,"parseFormValues");async function Fe(t){F.current[e.currentStep.name]=d(t,o[e.currentStep.name]);let a=J(t);switch(I(),e.currentStep.name){case"select_country":return L(a.country),Promise.resolve({data:{countryCode:a.country}});case"basic_information":{let y=!i&&r,b=i&&r&&n?.country&&n?.country.code!==r;if(y||b){let Pe={basic_information:a,type:ee,country_code:r};try{let _=await ue(Pe);return await I(),te(_.data?.data?.employment?.id),_}catch(_){throw console.error("Error creating onboarding:",_),_}}else if(i)return N({employmentId:i,basic_information:a,pricing_plan_details:{frequency:"monthly"}});return}case"contract_details":return N({employmentId:i,...{contract_details:a,pricing_plan_details:{frequency:"monthly"}}});case"benefits":return de({employmentId:i,...t})}}s(Fe,"onSubmit");function Ve(){ce()}s(Ve,"back");function Oe(){me()}s(Oe,"next");function Te(t){V(t)}return s(Te,"goTo"),{employmentId:i,creditRiskStatus:k?.default_legal_entity_credit_risk_status,owner_id:k?.company_owner_user_id,stepState:e,fields:o[e.currentStep.name],isLoading:he,isSubmitting:R.isPending||v.isPending||M.isPending,initialValues:Ee,handleValidation:s(t=>{if(e.currentStep.name==="select_country")return g.handleValidation(t);if(e.currentStep.name==="benefits"&&p){let a=u(t,p?.fields);return p?.handleValidation(a)}if(m&&e.currentStep.name==="basic_information"){let a=u(t,m?.fields);return m?.handleValidation(a)}if(l&&e.currentStep.name==="contract_details"){let a=u(t,l?.fields);return l?.handleValidation(a)}return null},"handleValidation"),checkFieldUpdates:se,parseFormValues:J,onSubmit:Fe,back:Ve,next:Oe,goTo:Te,meta:{fields:F.current},refetchEmployment:oe,employment:n}},"useOnboarding");export{qe as a};
2
- //# sourceMappingURL=chunk-BHFT5CRC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/hooks.ts"],"sourcesContent":["import {\n Employment,\n EmploymentCreateParams,\n EmploymentFullParams,\n} from '@/src/client';\nimport { Fields } from '@remoteoss/json-schema-form';\n\nimport { useStepState, Step } from '@/src/flows/useStepState';\nimport {\n prettifyFormValues,\n STEPS,\n STEPS_WITHOUT_SELECT_COUNTRY,\n} from '@/src/flows/Onboarding/utils';\nimport {\n getInitialValues,\n parseJSFToValidate,\n} from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { FieldValues } from 'react-hook-form';\nimport { OnboardingFlowParams } from '@/src/flows/Onboarding/types';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport mergeWith from 'lodash.mergewith';\nimport {\n useBenefitOffers,\n useBenefitOffersSchema,\n useCompany,\n useCountriesSchemaField,\n useCreateEmployment,\n useEmployment,\n useJSONSchemaForm,\n useUpdateBenefitsOffers,\n useUpdateEmployment,\n} from '@/src/flows/Onboarding/api';\nimport { JSONSchemaFormType } from '@/src/flows/types';\n\ntype OnboardingHookProps = OnboardingFlowParams;\n\nconst jsonSchemaToEmployment: Partial<\n Record<JSONSchemaFormType, keyof Employment>\n> = {\n employment_basic_information: 'basic_information',\n contract_details: 'contract_details',\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: 'contract_details',\n benefits: null,\n review: null,\n};\n\nconst reviewStepAllowedEmploymentStatus: Employment['status'][] = [\n 'invited',\n 'created_awaiting_reserve',\n 'created_reserve_paid',\n];\n\nexport const useOnboarding = ({\n employmentId,\n companyId,\n countryCode,\n type,\n options,\n}: OnboardingHookProps) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fieldsMetaRef = useRef<Record<string, any>>({});\n const [internalEmploymentId, setInternalEmploymentId] = useState<\n string | undefined\n >(employmentId);\n const [internalCountryCode, setInternalCountryCode] = useState<string | null>(\n countryCode || null,\n );\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n refetch: refetchEmployment,\n } = useEmployment(internalEmploymentId);\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 (\n employment?.country?.code &&\n internalCountryCode !== employment.country.code\n ) {\n setInternalCountryCode(employment.country.code);\n }\n\n const { data: benefitOffers, isLoading: isLoadingBenefitOffers } =\n useBenefitOffers(internalEmploymentId);\n const {\n data: company,\n isLoading: isLoadingCompany,\n refetch: refetchCompany,\n } = useCompany(companyId);\n const stepsToUse = countryCode ? STEPS_WITHOUT_SELECT_COUNTRY : 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 { selectCountryForm, isLoading: isLoadingCountries } =\n useCountriesSchemaField(options);\n\n const createEmploymentMutation = useCreateEmployment();\n const updateEmploymentMutation = useUpdateEmployment();\n const updateBenefitsOffersMutation = useUpdateBenefitsOffers();\n const { mutateAsync: createEmploymentMutationAsync } = mutationToPromise(\n createEmploymentMutation,\n );\n const { mutateAsync: updateEmploymentMutationAsync } = mutationToPromise(\n updateEmploymentMutation,\n );\n const { mutateAsync: updateBenefitsOffersMutationAsync } = mutationToPromise(\n updateBenefitsOffersMutation,\n );\n\n const formType =\n stepToFormSchemaMap[stepState.currentStep.name] ||\n 'employment_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 isOnboardingFormEnabled = Boolean(\n internalCountryCode &&\n (stepState.currentStep.name === 'basic_information' ||\n stepState.currentStep.name === 'contract_details' ||\n Boolean(employmentId)),\n );\n\n const useJSONSchema = ({ form }: { form: JSONSchemaFormType }) => {\n return useJSONSchemaForm({\n countryCode: internalCountryCode as string,\n form: form,\n fieldValues:\n Object.keys(fieldValues).length > 0\n ? {\n ...stepState.values?.[stepState.currentStep.name], // Restore values for the current step\n ...fieldValues,\n }\n : serverEmploymentData,\n options: {\n ...options,\n queryOptions: {\n enabled: isOnboardingFormEnabled,\n },\n },\n });\n };\n\n const {\n data: basicInformationForm,\n isLoading: isLoadingBasicInformationForm,\n } = useJSONSchema({\n form: 'employment_basic_information',\n });\n\n const { data: contractDetailsForm, isLoading: isLoadingContractDetailsForm } =\n useJSONSchema({\n form: 'contract_details',\n });\n\n const {\n data: benefitOffersSchema,\n isLoading: isLoadingBenefitsOffersSchema,\n } = useBenefitOffersSchema(\n internalEmploymentId as string,\n fieldValues,\n options,\n );\n\n const initialValuesBenefitOffers = useMemo(() => {\n if (stepState.currentStep.name === 'benefits') {\n const benefitsFormValues = {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n };\n return mergeWith({}, benefitOffers, benefitsFormValues);\n }\n return {};\n }, [\n stepState.currentStep.name,\n benefitOffers,\n stepState.values,\n fieldValues,\n ]);\n\n const stepFields: Record<keyof typeof STEPS, Fields> = useMemo(\n () => ({\n select_country: selectCountryForm?.fields || [],\n basic_information: basicInformationForm?.fields || [],\n contract_details: contractDetailsForm?.fields || [],\n benefits: benefitOffersSchema?.fields || [],\n review: [],\n }),\n [\n selectCountryForm?.fields,\n basicInformationForm?.fields,\n contractDetailsForm?.fields,\n benefitOffersSchema?.fields,\n ],\n );\n\n const initialValues = {\n select_country: getInitialValues(stepFields[stepState.currentStep.name], {\n country: internalCountryCode || employment?.country.code || '',\n }),\n basic_information: getInitialValues(\n stepFields[stepState.currentStep.name],\n employment?.basic_information || {},\n ),\n contract_details: getInitialValues(\n stepFields[stepState.currentStep.name],\n employment?.contract_details || {},\n ),\n benefits: initialValuesBenefitOffers || {},\n };\n\n const initialLoading =\n isLoadingBasicInformationForm ||\n isLoadingContractDetailsForm ||\n isLoadingEmployment ||\n isLoadingBenefitsOffersSchema ||\n isLoadingBenefitOffers ||\n isLoadingCompany ||\n isLoadingCountries;\n\n const isNavigatingToReview = Boolean(\n employmentId &&\n employment &&\n reviewStepAllowedEmploymentStatus.includes(employment?.status) &&\n !initialLoading &&\n stepFields['basic_information'].length > 0 &&\n stepFields['contract_details'].length > 0 &&\n stepState.currentStep.name !== 'review',\n );\n\n useEffect(() => {\n if (isNavigatingToReview) {\n const selectCountryInitialValues = getInitialValues(\n stepFields['select_country'],\n {\n country: internalCountryCode || employment?.country.code || '',\n },\n );\n\n const basicInformationInitialValues = getInitialValues(\n stepFields['basic_information'],\n employment?.basic_information || {},\n );\n\n const contractDetailsInitialValues = getInitialValues(\n stepFields['contract_details'],\n employment?.contract_details || {},\n );\n\n const benefitsInitialValues = getInitialValues(\n stepFields['benefits'],\n initialValuesBenefitOffers || {},\n );\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 benefits: prettifyFormValues(\n benefitsInitialValues,\n stepFields['benefits'],\n ),\n };\n\n setStepValues({\n select_country: selectCountryInitialValues,\n basic_information: basicInformationInitialValues,\n contract_details: contractDetailsInitialValues,\n benefits: benefitsInitialValues,\n review: {},\n });\n\n goToStep('review');\n }\n }, [\n employmentId,\n employment,\n initialLoading,\n internalCountryCode,\n goToStep,\n initialValuesBenefitOffers,\n stepFields,\n stepState.currentStep.name,\n setStepValues,\n isNavigatingToReview,\n ]);\n\n const isLoading = initialLoading || isNavigatingToReview;\n\n function parseFormValues(values: FieldValues) {\n if (selectCountryForm && stepState.currentStep.name === 'select_country') {\n return values;\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n return parseJSFToValidate(values, basicInformationForm?.fields, {\n isPartialValidation: true,\n });\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n return parseJSFToValidate(values, contractDetailsForm?.fields, {\n isPartialValidation: true,\n });\n }\n\n return {};\n }\n\n async function onSubmit(values: FieldValues) {\n // Prettify values for the current step\n fieldsMetaRef.current[stepState.currentStep.name] = prettifyFormValues(\n values,\n stepFields[stepState.currentStep.name],\n );\n\n const parsedValues = parseFormValues(values);\n refetchCompany();\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 if (isEmploymentNotLoaded || hasChangedCountry) {\n const payload: EmploymentCreateParams = {\n basic_information: parsedValues,\n type: type,\n country_code: internalCountryCode,\n };\n try {\n const response = await createEmploymentMutationAsync(payload);\n await refetchCompany();\n setInternalEmploymentId(\n // @ts-expect-error the types from the response are not matching\n response.data?.data?.employment?.id,\n );\n return response;\n } catch (error) {\n console.error('Error creating onboarding:', error);\n throw error;\n }\n } else if (internalEmploymentId) {\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId,\n basic_information: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n });\n }\n\n return;\n }\n case 'contract_details': {\n const payload: EmploymentFullParams = {\n contract_details: parsedValues,\n pricing_plan_details: {\n frequency: 'monthly',\n },\n };\n return updateEmploymentMutationAsync({\n employmentId: internalEmploymentId as string,\n ...payload,\n });\n }\n\n case 'benefits': {\n return updateBenefitsOffersMutationAsync({\n employmentId: internalEmploymentId as string,\n ...values,\n });\n }\n }\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n function goTo(step: keyof typeof STEPS) {\n goToStep(step);\n }\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId: internalEmploymentId,\n\n /**\n * Credit risk status of the company, useful to know what to to show in the review step\n * The possible values are:\n * - not_started\n * - ready\n * - in_progress\n * - referred\n * - fail\n * - deposit_required\n * - no_deposit_required\n */\n\n creditRiskStatus: company?.default_legal_entity_credit_risk_status,\n\n owner_id: company?.company_owner_user_id,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the onboarding schema\n */\n fields: stepFields[stepState.currentStep.name],\n /**\n * Loading state indicating if the onboarding schema is being fetched\n */\n isLoading: isLoading,\n /**\n * Loading state indicating if the onboarding mutation is in progress\n */\n isSubmitting:\n createEmploymentMutation.isPending ||\n updateEmploymentMutation.isPending ||\n updateBenefitsOffersMutation.isPending,\n /**\n * Initial form values\n */\n initialValues,\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 if (stepState.currentStep.name === 'benefits' && benefitOffersSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n benefitOffersSchema?.fields,\n );\n\n return benefitOffersSchema?.handleValidation(parsedValues);\n }\n if (\n basicInformationForm &&\n stepState.currentStep.name === 'basic_information'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n basicInformationForm?.fields,\n );\n return basicInformationForm?.handleValidation(parsedValues);\n }\n\n if (\n contractDetailsForm &&\n stepState.currentStep.name === 'contract_details'\n ) {\n const parsedValues = parseJSFToValidate(\n values,\n contractDetailsForm?.fields,\n );\n return contractDetailsForm?.handleValidation(parsedValues);\n }\n\n return null;\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 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 handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n\n /**\n * Function to handle going to the next step\n * @returns {void}\n */\n next,\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,\n\n /**\n * Fields metadata for each step\n */\n meta: {\n fields: fieldsMetaRef.current,\n },\n\n /**\n * Function to refetch the employment data\n * @returns {void}\n */\n refetchEmployment,\n /**\n * Employment data\n */\n employment,\n };\n};\n"],"mappings":"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","names":["useEffect","useMemo","useRef","useState","mergeWith","jsonSchemaToEmployment","stepToFormSchemaMap","reviewStepAllowedEmploymentStatus","useOnboarding","__name","employmentId","companyId","countryCode","type","options","fieldsMetaRef","useRef","internalEmploymentId","setInternalEmploymentId","useState","internalCountryCode","setInternalCountryCode","employment","isLoadingEmployment","refetchEmployment","useEmployment","benefitOffers","isLoadingBenefitOffers","useBenefitOffers","company","isLoadingCompany","refetchCompany","useCompany","stepsToUse","STEPS_WITHOUT_SELECT_COUNTRY","STEPS","fieldValues","stepState","setFieldValues","previousStep","nextStep","goToStep","setStepValues","useStepState","selectCountryForm","isLoadingCountries","useCountriesSchemaField","createEmploymentMutation","useCreateEmployment","updateEmploymentMutation","useUpdateEmployment","updateBenefitsOffersMutation","useUpdateBenefitsOffers","createEmploymentMutationAsync","mutationToPromise","updateEmploymentMutationAsync","updateBenefitsOffersMutationAsync","formType","employmentKey","serverEmploymentData","isOnboardingFormEnabled","useJSONSchema","form","useJSONSchemaForm","basicInformationForm","isLoadingBasicInformationForm","contractDetailsForm","isLoadingContractDetailsForm","benefitOffersSchema","isLoadingBenefitsOffersSchema","useBenefitOffersSchema","initialValuesBenefitOffers","useMemo","benefitsFormValues","mergeWith","stepFields","initialValues","getInitialValues","initialLoading","isNavigatingToReview","useEffect","selectCountryInitialValues","basicInformationInitialValues","contractDetailsInitialValues","benefitsInitialValues","prettifyFormValues","isLoading","parseFormValues","values","parseJSFToValidate","onSubmit","parsedValues","isEmploymentNotLoaded","hasChangedCountry","payload","response","error","back","next","goTo","step"]}
@@ -1,2 +0,0 @@
1
- import{a as s}from"./chunk-AYDF3IFZ.js";var c={select_country:{index:0,name:"select_country"},basic_information:{index:1,name:"basic_information"},contract_details:{index:2,name:"contract_details"},benefits:{index:3,name:"benefits"},review:{index:4,name:"review"}},d={basic_information:{index:0,name:"basic_information"},contract_details:{index:1,name:"contract_details"},benefits:{index:2,name:"benefits"},review:{index:3,name:"review"}};function l(o,a){return a?Object.fromEntries(Object.entries(o).map(([t,i])=>{if(i===void 0)return[t,void 0];let e=a.find(n=>n.name===t);if(e?.isVisible===!1||e?.deprecated)return[t,void 0];if(e?.type==="radio"||e?.type==="select"){let n=e.options.find(r=>r.value===i);return n?[t,{prettyValue:n?.label,label:e?.label}]:void 0}if(e?.type==="checkbox"&&e?.const)return[t,{prettyValue:!0,label:e.label}];if(e?.type==="countries"&&Array.isArray(i))return[t,{prettyValue:i.join(),label:e.label}];if(e?.type==="fieldset"){let n=l(i,e.fields);if(!n.label&&n.value){let r={...n.value,label:e.label};return[t,r]}return[t,n]}if(e)return[t,{prettyValue:i,label:e.label}]}).filter(Boolean)):{}}s(l,"prettifyFormValues");export{c as a,d as b,l as c};
2
- //# sourceMappingURL=chunk-CVGR3FDH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Onboarding/utils.ts"],"sourcesContent":["import { Step } from '@/src/flows/useStepState';\nimport { Fields } from '@remoteoss/json-schema-form';\n\ntype StepKeys =\n | 'select_country'\n | 'basic_information'\n | 'contract_details'\n | 'benefits'\n | 'review';\n\nexport const STEPS: Record<StepKeys, Step<StepKeys>> = {\n select_country: {\n index: 0,\n name: 'select_country',\n },\n basic_information: { index: 1, name: 'basic_information' },\n contract_details: { index: 2, name: 'contract_details' },\n benefits: { index: 3, name: 'benefits' },\n review: { index: 4, name: 'review' },\n} as const;\n\nexport const STEPS_WITHOUT_SELECT_COUNTRY: Record<\n Exclude<StepKeys, 'select_country'>,\n Step<Exclude<StepKeys, 'select_country'>>\n> = {\n basic_information: { index: 0, name: 'basic_information' },\n contract_details: { index: 1, name: 'contract_details' },\n benefits: { index: 2, name: 'benefits' },\n review: { index: 3, name: 'review' },\n} as const;\n\n/**\n * Function to prettify form values. Returns a pretty value and label for each field.\n * @param values - Form values to prettify\n * @param fields - Form fields\n * @returns Prettified form values\n */\n// @ts-expect-error need to check function return type\nexport function prettifyFormValues(\n values: Record<string, unknown>,\n fields: Fields | undefined,\n) {\n if (!fields) {\n return {};\n }\n return Object.fromEntries(\n Object.entries(values)\n // @ts-expect-error need to check function return type\n .map(([key, value]) => {\n if (value === undefined) {\n return [key, undefined];\n }\n\n const field = fields.find((field) => field.name === key);\n\n if (field?.isVisible === false || field?.deprecated) {\n return [key, undefined];\n }\n\n if (field?.type === 'radio' || field?.type === 'select') {\n const option = (\n field.options as Array<{ value: string; label: string }>\n ).find((option) => option.value === value);\n\n if (option) {\n return [key, { prettyValue: option?.label, label: field?.label }];\n }\n return;\n }\n\n if (field?.type === 'checkbox' && field?.const) {\n return [key, { prettyValue: true, label: field.label }];\n }\n\n if (field?.type === 'countries' && Array.isArray(value)) {\n return [key, { prettyValue: value.join(), label: field.label }];\n }\n\n if (field?.type === 'fieldset') {\n // @ts-expect-error need to check function return type\n const prettiedFieldset = prettifyFormValues(\n value as Record<string, unknown>,\n field.fields as Fields,\n );\n\n // Handles benefits fieldset in specific\n if (!prettiedFieldset.label && prettiedFieldset.value) {\n const prettyValue: Record<string, unknown> = {\n ...prettiedFieldset.value,\n label: field.label,\n };\n return [key, prettyValue];\n }\n\n return [key, prettiedFieldset];\n }\n\n if (field) {\n return [key, { prettyValue: value, label: field.label }];\n }\n })\n .filter(Boolean),\n );\n}\n"],"mappings":"wCAUO,IAAMA,EAA0C,CACrD,eAAgB,CACd,MAAO,EACP,KAAM,gBACR,EACA,kBAAmB,CAAE,MAAO,EAAG,KAAM,mBAAoB,EACzD,iBAAkB,CAAE,MAAO,EAAG,KAAM,kBAAmB,EACvD,SAAU,CAAE,MAAO,EAAG,KAAM,UAAW,EACvC,OAAQ,CAAE,MAAO,EAAG,KAAM,QAAS,CACrC,EAEaC,EAGT,CACF,kBAAmB,CAAE,MAAO,EAAG,KAAM,mBAAoB,EACzD,iBAAkB,CAAE,MAAO,EAAG,KAAM,kBAAmB,EACvD,SAAU,CAAE,MAAO,EAAG,KAAM,UAAW,EACvC,OAAQ,CAAE,MAAO,EAAG,KAAM,QAAS,CACrC,EASO,SAASC,EACdC,EACAC,EACA,CACA,OAAKA,EAGE,OAAO,YACZ,OAAO,QAAQD,CAAM,EAElB,IAAI,CAAC,CAACE,EAAKC,CAAK,IAAM,CACrB,GAAIA,IAAU,OACZ,MAAO,CAACD,EAAK,MAAS,EAGxB,IAAME,EAAQH,EAAO,KAAMG,GAAUA,EAAM,OAASF,CAAG,EAEvD,GAAIE,GAAO,YAAc,IAASA,GAAO,WACvC,MAAO,CAACF,EAAK,MAAS,EAGxB,GAAIE,GAAO,OAAS,SAAWA,GAAO,OAAS,SAAU,CACvD,IAAMC,EACJD,EAAM,QACN,KAAMC,GAAWA,EAAO,QAAUF,CAAK,EAEzC,OAAIE,EACK,CAACH,EAAK,CAAE,YAAaG,GAAQ,MAAO,MAAOD,GAAO,KAAM,CAAC,EAElE,MACF,CAEA,GAAIA,GAAO,OAAS,YAAcA,GAAO,MACvC,MAAO,CAACF,EAAK,CAAE,YAAa,GAAM,MAAOE,EAAM,KAAM,CAAC,EAGxD,GAAIA,GAAO,OAAS,aAAe,MAAM,QAAQD,CAAK,EACpD,MAAO,CAACD,EAAK,CAAE,YAAaC,EAAM,KAAK,EAAG,MAAOC,EAAM,KAAM,CAAC,EAGhE,GAAIA,GAAO,OAAS,WAAY,CAE9B,IAAME,EAAmBP,EACvBI,EACAC,EAAM,MACR,EAGA,GAAI,CAACE,EAAiB,OAASA,EAAiB,MAAO,CACrD,IAAMC,EAAuC,CAC3C,GAAGD,EAAiB,MACpB,MAAOF,EAAM,KACf,EACA,MAAO,CAACF,EAAKK,CAAW,CAC1B,CAEA,MAAO,CAACL,EAAKI,CAAgB,CAC/B,CAEA,GAAIF,EACF,MAAO,CAACF,EAAK,CAAE,YAAaC,EAAO,MAAOC,EAAM,KAAM,CAAC,CAE3D,CAAC,EACA,OAAO,OAAO,CACnB,EA3DS,CAAC,CA4DZ,CAjEgBI,EAAAT,EAAA","names":["STEPS","STEPS_WITHOUT_SELECT_COUNTRY","prettifyFormValues","values","fields","key","value","field","option","prettiedFieldset","prettyValue","__name"]}
@@ -1,2 +0,0 @@
1
- import{a as l}from"./chunk-YG5FFTC4.js";import{d as s,e}from"./chunk-WU77JQYU.js";import{b as a}from"./chunk-A4RX3KRZ.js";import{a as r}from"./chunk-AYDF3IFZ.js";import{useId as g}from"react";import{useForm as y}from"react-hook-form";import{jsx as p}from"react/jsx-runtime";var P=r(({estimationOptions:n=s,defaultValues:o={countryRegionSlug:"",currencySlug:"",salary:""},options:i,render:u})=>{let c=g(),t=e({defaultRegion:o.countryRegionSlug,estimationOptions:n,options:i}),m=a(t.handleValidation),C=y({resolver:m,defaultValues:{country:o?.countryRegionSlug,currency:o?.currencySlug,region:"",salary:o?.salary},shouldUnregister:!1,mode:"onBlur"});return p(l.Provider,{value:{form:C,formId:c,costCalculatorBag:t},children:u(t)})},"CostCalculatorFlow");export{P as a};
2
- //# sourceMappingURL=chunk-DBIPVIBO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/CostCalculator/CostCalculatorFlow.tsx"],"sourcesContent":["import { useJsonSchemasValidationFormResolver } from '@/src/components/form/yupValidationResolver';\nimport { CostCalculatorContext } from '@/src/flows/CostCalculator/context';\nimport {\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\nimport {\n CostCalculatorEstimationOptions,\n JSFModify,\n} from '@/src/flows/CostCalculator/types';\nimport React, { useId } from 'react';\nimport { useForm } from 'react-hook-form';\n\nexport type CostCalculatorFlowProps = {\n /**\n * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.\n */\n estimationOptions?: CostCalculatorEstimationOptions;\n /**\n * Default values for the form fields.\n */\n defaultValues?: Partial<{\n /**\n * Default value for the country field.\n */\n countryRegionSlug: string;\n /**\n * Default value for the currency field.\n */\n currencySlug: string;\n /**\n * Default value for the salary field.\n */\n salary: string;\n }>;\n options?: {\n jsfModify?: JSFModify;\n };\n render: (\n costCalculatorBag: ReturnType<typeof useCostCalculator>,\n ) => React.ReactNode;\n};\n\nexport const CostCalculatorFlow = ({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n currencySlug: '',\n salary: '',\n },\n options,\n render,\n}: CostCalculatorFlowProps) => {\n const formId = useId();\n const costCalculatorBag = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n estimationOptions,\n options,\n });\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n costCalculatorBag.handleValidation,\n );\n\n const form = useForm({\n resolver,\n defaultValues: {\n country: defaultValues?.countryRegionSlug,\n currency: defaultValues?.currencySlug,\n region: '',\n salary: defaultValues?.salary,\n },\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n return (\n <CostCalculatorContext.Provider\n value={{\n form,\n formId: formId,\n costCalculatorBag,\n }}\n >\n {render(costCalculatorBag)}\n </CostCalculatorContext.Provider>\n );\n};\n"],"mappings":"kKAUA,OAAgB,SAAAA,MAAa,QAC7B,OAAS,WAAAC,MAAe,kBAkEpB,cAAAC,MAAA,oBAlCG,IAAMC,EAAqBC,EAAA,CAAC,CACjC,kBAAAC,EAAoBC,EACpB,cAAAC,EAAgB,CACd,kBAAmB,GACnB,aAAc,GACd,OAAQ,EACV,EACA,QAAAC,EACA,OAAAC,CACF,IAA+B,CAC7B,IAAMC,EAASC,EAAM,EACfC,EAAoBC,EAAkB,CAC1C,cAAeN,EAAc,kBAC7B,kBAAAF,EACA,QAAAG,CACF,CAAC,EACKM,EAAWC,EAEfH,EAAkB,gBACpB,EAEMI,EAAOC,EAAQ,CACnB,SAAAH,EACA,cAAe,CACb,QAASP,GAAe,kBACxB,SAAUA,GAAe,aACzB,OAAQ,GACR,OAAQA,GAAe,MACzB,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAED,OACEL,EAACgB,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAF,EACA,OAAQN,EACR,kBAAAE,CACF,EAEC,SAAAH,EAAOG,CAAiB,EAC3B,CAEJ,EA5CkC","names":["useId","useForm","jsx","CostCalculatorFlow","__name","estimationOptions","defaultEstimationOptions","defaultValues","options","render","formId","useId","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","form","useForm","CostCalculatorContext"]}
@@ -1,2 +0,0 @@
1
- import{a as $e}from"./chunk-NEFNFYRS.js";import{a as Fe,b as B}from"./chunk-EMVYCKDC.js";import{b as x}from"./chunk-WRDKLT4N.js";import{a as Ee,b as C,c as P,d as S,e as k,f as R,g as D}from"./chunk-ONZPO4GN.js";import{a as c}from"./chunk-5ETXP2QF.js";import{a as o}from"./chunk-AYDF3IFZ.js";import{Fragment as Jo}from"react";import*as He from"react";import*as ee from"@radix-ui/react-checkbox";import{Check as It}from"lucide-react";import{jsx as ve}from"react/jsx-runtime";var oe=He.forwardRef(({className:e,...t},r)=>ve(ee.Root,{ref:r,className:c("peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary",e),...t,children:ve(ee.Indicator,{className:c("flex items-center justify-center text-current"),children:ve(It,{className:"h-4 w-4"})})}));oe.displayName=ee.Root.displayName;import{useFormContext as Lt}from"react-hook-form";import{Fragment as Wt,jsx as A,jsxs as re}from"react/jsx-runtime";function ae({name:e,defaultValue:t,description:r,label:a,onChange:i,multiple:d,options:p,component:f,...g}){let{components:n}=x(),{control:m}=Lt(),u=o((s,l,v)=>{let F=v.value?[...v.value]:[];l?F.includes(s)||v.onChange([...F,s]):v.onChange(F.filter(_=>_!==s))},"handleCheckboxChange");return A(C,{control:m,name:e,defaultValue:t,render:({field:s,fieldState:l})=>{let v=f||n?.checkbox;if(v){let F={name:e,description:r,label:a,defaultValue:t,multiple:d,options:p,...g};return A(v,{field:{...s,onChange:o(_=>{if(d){let{checked:w,value:b}=_.target;u(b,w,s),i?.(w);return}s.onChange(_),i?.(_)},"onChange")},fieldState:l,fieldData:F})}return re(P,{"data-field":e,className:c(`RemoteFlows__CheckBoxField__Item__${e}`),children:[A(k,{children:re(Wt,{children:[p&&d?A(S,{children:a}):null,p&&d?p.map(F=>re("div",{className:"flex space-x-2",children:[A(oe,{id:F.value,onCheckedChange:_=>{u(F.value,_===!0,s),i?.(_,F.value)},checked:s.value?.includes(F.value),className:"RemoteFlows__CheckBox__Input"}),A(S,{htmlFor:F.value,className:"mb-0 RemoteFlows__CheckBox__Label",children:F.label})]},F.value)):re("div",{className:"flex space-x-2",children:[A(oe,{id:e,onCheckedChange:F=>{s.onChange(F),i?.(F)},checked:s.value,className:"RemoteFlows__CheckBox__Input"}),A(S,{htmlFor:e,className:"mb-0 RemoteFlows__CheckBox__Label",children:a})]})]})}),r&&A(R,{children:r}),l.error&&A(D,{})]})}})}o(ae,"CheckBoxField");import{CalendarIcon as Ht}from"lucide-react";import{useFormContext as Bt}from"react-hook-form";import{ChevronLeft as Mt,ChevronRight as Et}from"lucide-react";import{DayPicker as $t}from"react-day-picker";import{jsx as he}from"react/jsx-runtime";function Be({className:e,classNames:t,showOutsideDays:r=!0,...a}){return he($t,{showOutsideDays:r,className:c("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:c(Fe({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:c("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",a.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:c(Fe({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:o(({className:i,...d})=>he(Mt,{className:c("size-4",i),...d}),"IconLeft"),IconRight:o(({className:i,...d})=>he(Et,{className:c("size-4",i),...d}),"IconRight")},...a})}o(Be,"Calendar");import*as O from"@radix-ui/react-popover";import{jsx as ne}from"react/jsx-runtime";function ie({...e}){return ne(O.Root,{"data-slot":"popover",...e})}o(ie,"Popover");function se({...e}){return ne(O.Trigger,{"data-slot":"popover-trigger",...e})}o(se,"PopoverTrigger");function le({className:e,align:t="center",sideOffset:r=4,...a}){return ne(O.Portal,{children:ne(O.Content,{"data-slot":"popover-content",align:t,sideOffset:r,className:c("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),...a})})}o(le,"PopoverContent");import{PopoverClose as At}from"@radix-ui/react-popover";import{format as Ae}from"date-fns";import{Fragment as zt,jsx as L,jsxs as ye}from"react/jsx-runtime";function ze({description:e,label:t,name:r,minDate:a,onChange:i,component:d,...p}){let{components:f}=x(),{control:g}=Bt();return L(C,{control:g,name:r,render:({field:n,fieldState:m})=>{let u=d||f?.date;if(u){let s={description:e,label:t,name:r,minDate:a,onChange:i,...p};return L(u,{field:{...n,onChange:o(l=>{n.onChange(l),i?.(l)},"onChange")},fieldState:m,fieldData:s})}return ye(P,{"data-field":r,className:`flex flex-col RemoteFlows__DatePickerField__Item__${r}`,children:[L(S,{className:"RemoteFlows__DatePickerField__Label",children:t}),ye(ie,{children:[L(se,{asChild:!0,children:L(k,{children:L("div",{children:ye(B,{type:"button",variant:"outline",className:c("w-full pl-3 text-left font-normal",!n.value&&"text-muted-foreground"),"data-testid":`date-picker-button-${r}`,children:[n.value&&L(zt,{children:Ae(n.value,"yyyy-MM-dd")}),L(Ht,{className:"ml-auto h-4 w-4 opacity-50"})]})})})}),L(le,{className:"w-auto p-0 RemoteFlows__DatepickerField__PopoverContent",align:"start",children:L(Be,{mode:"single",className:"RemoteFlows__DatepickerField__Calendar",selected:n.value?new Date(n.value):void 0,onSelect:s=>{n.onChange(s?Ae(s,"yyyy-MM-dd"):null),i?.(s)},defaultMonth:a?new Date(a):void 0,components:{DayContent:o(s=>L(At,{children:s.date.getDate()}),"DayContent")},...a&&{disabled:o(s=>s<new Date(a),"disabled")}})})]}),e?L(R,{children:e}):null,m.error&&L(D,{className:"RemoteFlows__DatePickerField__Error"})]})}})}o(ze,"DatePickerField");import{cva as Ot}from"class-variance-authority";import{jsx as _e}from"react/jsx-runtime";var Gt=Ot("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",warning:"bg-card bg-warning border-warning-border [&>svg]:text-current"}},defaultVariants:{variant:"default"}});function Oe({className:e,variant:t,...r}){return _e("div",{"data-slot":"alert",role:"alert",className:c(Gt({variant:t}),e),...r})}o(Oe,"Alert");function Ge({className:e,...t}){return _e("div",{"data-slot":"alert-title",className:c("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",e),...t})}o(Ge,"AlertTitle");function Ve({className:e,...t}){return _e("div",{"data-slot":"alert-description",className:c("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}o(Ve,"AlertDescription");import{AlertCircle as Vt}from"lucide-react";import{jsx as me,jsxs as Ut}from"react/jsx-runtime";function ce({title:e,description:t,severity:r}){let{components:a}=x();if(a?.statement){let i=a?.statement;return me(i,{data:{title:e,description:t,severity:r}})}return Ut(Oe,{variant:"warning",children:[me(Vt,{className:"h-4 w-4"}),e&&me(Ge,{children:e}),me(Ve,{children:t})]})}o(ce,"Statement");import{jsx as xe,jsxs as Ue}from"react/jsx-runtime";import{createElement as Jt}from"react";function Je({label:e,name:t,fields:r,description:a,components:i,statement:d}){return Ue("fieldset",{className:c("border-1 border-input p-4 rounded-xl",`RemoteFlows__FieldSetField__${t}`),children:[xe("legend",{className:"text-sm font-semibold px-2",children:e}),a?xe("div",{className:"mb-5 RemoteFlows__FieldSetField__Description",dangerouslySetInnerHTML:{__html:a}}):null,Ue("div",{className:"grid gap-4",children:[r.map(p=>{let f=de[p.type];return p.isVisible===!1||p.deprecated?null:Jt(f,{...p,key:p.name,name:`${t}.${p.name}`,component:i?.[p.type]})}),d?xe(ce,{...d}):null]})]})}o(Je,"FieldSetField");import{useFormContext as Qt}from"react-hook-form";import{useState as qt,useRef as Kt}from"react";import{Upload as Yt,X as Xt}from"lucide-react";import{jsx as V,jsxs as Ce}from"react/jsx-runtime";function qe({onChange:e,className:t,multiple:r}){let[a,i]=qt([]),d=Kt(null),p=o(n=>{n.preventDefault(),d.current?.click()},"handleClick"),f=o(n=>{if(n.target.files&&n.target.files.length>0){let m=Array.from(n.target.files);i(m),e(n)}},"handleChange"),g=o(n=>{i(m=>m.filter(u=>u!==n))},"onRemoveFile");return Ce("div",{className:c("flex flex-col items-start gap-4",t),children:[V("input",{type:"file",ref:d,onChange:f,className:"hidden","aria-label":"File upload",multiple:r}),Ce(B,{type:"button",onClick:p,className:"gap-2",children:[V(Yt,{className:"h-4 w-4"}),"Choose File"]}),a.length===0&&V("div",{className:"text-sm",children:r?V("span",{className:"font-medium",children:"No files selected. You can select multiple files"}):V("span",{className:"font-medium",children:"No file selected."})}),a.length>0&&a.map((n,m)=>Ce("div",{className:"text-sm flex items-center gap-2",children:["Selected file: ",V("span",{className:"font-medium",children:n.name})," (",Math.round(n.size/1024)," KB)",V(B,{variant:"ghost",onClick:()=>g(n),children:V(Xt,{})})]},m))]})}o(qe,"FileUploader");import{jsx as U,jsxs as jt}from"react/jsx-runtime";var Zt=o(e=>new Promise((t,r)=>{let a=new FileReader;a.readAsDataURL(e),a.onload=()=>t(a.result),a.onerror=i=>r(i)}),"toBase64"),Ke=o(async e=>{let t=e.target.files?Array.from(e.target.files):[];return await Promise.all(t.map(async a=>{let i=await Zt(a);return{name:a.name,content:i.split(",")[1]}}))},"convertFilesToBase64");function Ye({name:e,description:t,label:r,multiple:a,onChange:i,component:d,...p}){let{components:f}=x(),{control:g}=Qt();return U(C,{control:g,name:e,render:({field:n,fieldState:m})=>{let u=d||f?.file;if(u){let s={name:e,description:t,label:r,multiple:a,...p};return U(u,{field:{...n,value:null,onChange:o(async l=>{let v=await Ke(l);n.onChange(v),i?.(v)},"onChange")},fieldState:m,fieldData:s})}return jt(P,{"data-field":e,className:`RemoteFlows__FileUpload__Item__${e}`,children:[U(S,{className:"RemoteFlows__FileUpload__Label",children:r}),U(k,{children:U(qe,{onChange:async s=>{let l=await Ke(s);n.onChange(l),i?.(l)},multiple:a,className:c("RemoteFlows__FileUpload__Input")})}),t&&U("div",{className:"flex items-center justify-between",children:U(R,{className:"RemoteFlows__FileUpload__Description",children:t})}),m.error&&U(D,{className:"RemoteFlows__FileUpload__Error"})]})}})}o(Ye,"FileUploadField");import{useFormContext as ro}from"react-hook-form";import{useFormContext as to}from"react-hook-form";import{jsx as eo}from"react/jsx-runtime";function Xe({className:e,type:t,...r}){return eo("input",{type:t,"data-slot":"input",className:c("shadow-xs border-input file:text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-xl border bg-transparent px-4 py-7 text-sm transition-[color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-focused","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}o(Xe,"Input");import{jsx as J,jsxs as oo}from"react/jsx-runtime";function z({name:e,description:t,label:r,type:a,onChange:i,component:d,includeErrorMessage:p=!0,...f}){let{components:g}=x(),{control:n}=to();return J(C,{control:n,name:e,render:({field:m,fieldState:u})=>{let s=d||g?.text;if(s){let l={name:e,description:t,label:r,type:a,onChange:i,...f};return J(s,{field:{...m,onChange:o(v=>{m.onChange(v),i?.(v)},"onChange")},fieldState:u,fieldData:l})}return oo(P,{"data-field":e,className:`RemoteFlows__TextField__Item__${e}`,children:[r&&J(S,{className:"RemoteFlows__TextField__Label",children:r}),J(k,{children:J(Xe,{...m,value:m.value??"",onChange:l=>{m.onChange(l),i?.(l)},className:"RemoteFlows__TextField__Input",placeholder:r})}),t&&J(R,{className:"RemoteFlows__TextField__Description",children:t}),p&&u.error&&J(D,{className:"RemoteFlows__TextField__Error"})]})}})}o(z,"TextField");import{jsx as be}from"react/jsx-runtime";function Se(e){let{components:t}=x(),{control:r}=ro(),a=e.component||t?.number;return a?be(C,{control:r,name:e.name,render:({field:i,fieldState:d})=>be(a,{field:{...i,onChange:o(p=>{i.onChange(p),e.onChange?.(p)},"onChange")},fieldState:d,fieldData:e})}):be(z,{...e,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$"})}o(Se,"NumberField");import*as Y from"@radix-ui/react-radio-group";import{CircleIcon as ao}from"lucide-react";import{jsx as pe}from"react/jsx-runtime";function Qe({className:e,...t}){return pe(Y.Root,{"data-slot":"radio-group",className:c("grid gap-3",e),...t})}o(Qe,"RadioGroup");function Ze({className:e,...t}){return pe(Y.Item,{"data-slot":"radio-group-item",className:c("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:pe(Y.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:pe(ao,{className:"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}o(Ze,"RadioGroupItem");import{useFormContext as no}from"react-hook-form";import{Fragment as io,jsx as E,jsxs as Pe}from"react/jsx-runtime";function je({name:e,defaultValue:t,description:r,label:a,options:i,onChange:d,component:p,...f}){let{components:g}=x(),{control:n}=no();return E(C,{control:n,name:e,defaultValue:t,render:({field:m,fieldState:u})=>{let s=p||g?.radio;if(s){let l={name:e,defaultValue:t,description:r,label:a,options:i,...f};return E(s,{field:{...m,onChange:o(v=>{m.onChange(v),d?.(v)},"onChange")},fieldState:u,fieldData:l})}return Pe(P,{className:c("space-y-3",`RemoteFlows__RadioGroupField__Item__${e}`),"data-field":e,children:[E(S,{children:a}),E(k,{children:E(Qe,{"aria-label":a||e,onValueChange:l=>{m.onChange(l),d?.(l)},value:m.value,className:"flex flex-col space-y-3",children:i?.map(l=>E(io,{children:Pe(P,{"data-field":e,className:"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item",children:[E(k,{children:E(Ze,{value:l.value,className:"RemoteFlows__RadioField__Input"})}),Pe("div",{children:[E(S,{className:"font-normal mb-0 RemoteFlows__RadioField__Label",children:l.label}),l.description&&E(R,{className:"mt-2",children:l.description})]})]},l.value)}))})}),r&&E(R,{children:r}),u.error&&E(D,{})]})}})}o(je,"RadioGroupField");import*as y from"@radix-ui/react-select";import{CheckIcon as so,ChevronDownIcon as et,ChevronUpIcon as lo}from"lucide-react";import{jsx as N,jsxs as ke}from"react/jsx-runtime";function tt({...e}){return N(y.Root,{"data-slot":"select",...e})}o(tt,"Select");function ot({...e}){return N(y.Group,{"data-slot":"select-group",...e})}o(ot,"SelectGroup");function rt({...e}){return N(y.Value,{"data-slot":"select-value",...e})}o(rt,"SelectValue");function at({className:e,children:t,...r}){return ke(y.Trigger,{"data-slot":"select-trigger",className:c("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","focus-visible:border-focused",e),...r,children:[t,N(y.Icon,{asChild:!0,className:"absolute right-4",children:N(et,{className:"size-4"})})]})}o(at,"SelectTrigger");function nt({className:e,children:t,position:r="popper",...a}){return N(y.Portal,{children:ke(y.Content,{"data-slot":"select-content",className:c("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 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...a,children:[N(mo,{}),N(y.Viewport,{className:c(r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),N(co,{})]})})}o(nt,"SelectContent");function it({className:e,children:t,...r}){return ke(y.Item,{"data-slot":"select-item",className:c("focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[N(y.ItemText,{children:t}),N("span",{className:"flex size-3.5 items-center justify-center",children:N(y.ItemIndicator,{children:N(so,{className:"size-4"})})})]})}o(it,"SelectItem");function mo({className:e,...t}){return N(y.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:c("flex cursor-default items-center justify-center py-1",e),...t,children:N(lo,{className:"size-4"})})}o(mo,"SelectScrollUpButton");function co({className:e,...t}){return N(y.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:c("flex cursor-default items-center justify-center py-1",e),...t,children:N(et,{className:"size-4"})})}o(co,"SelectScrollDownButton");import{useFormContext as po}from"react-hook-form";import{jsx as W,jsxs as st}from"react/jsx-runtime";function lt({label:e,name:t,options:r,defaultValue:a,description:i,onChange:d,component:p,...f}){let{control:g}=po(),{components:n}=x();return W(C,{defaultValue:a,control:g,name:t,render:({field:m,fieldState:u})=>{let s=p||n?.select;if(s){let l={label:e,name:t,options:r,defaultValue:a,description:i,onChange:d,...f};return W(s,{field:{...m,onChange:o(v=>{m.onChange(v),d?.(v)},"onChange")},fieldState:u,fieldData:l})}return st(P,{"data-field":t,className:`RemoteFlows__SelectField__Item__${t}`,children:[W(S,{className:"RemoteFlows__SelectField__Label",children:e}),W(k,{children:W("div",{className:"relative",children:st(tt,{value:m.value||"",onValueChange:l=>{m.onChange(l),d?.(l)},children:[W(at,{className:"RemoteFlows__SelectField__Trigger","aria-invalid":!!u.error,"aria-label":e,children:W("span",{className:"absolute",children:W(rt,{placeholder:e})})}),W(nt,{className:"RemoteFlows__SelectField__Content",children:W(ot,{className:"RemoteFlows__SelectField__Group",children:r.map(l=>W(it,{value:l.value,className:"RemoteFlows__SelectField__SelectItem",children:l.label},l.value))})})]})})}),i&&W(R,{children:i}),u.error&&W(D,{})]})}})}o(lt,"SelectField");import{useState as xo}from"react";import{useFormContext as Co}from"react-hook-form";import{Fragment as Fo,useState as vo}from"react";import{Check as ho,ChevronDownIcon as yo,X as _o}from"lucide-react";import{Command as X}from"cmdk";import{SearchIcon as un}from"lucide-react";import*as T from"@radix-ui/react-dialog";import{XIcon as uo}from"lucide-react";import{jsx as G,jsxs as Re}from"react/jsx-runtime";function Ne({...e}){return G(T.Root,{"data-slot":"dialog",...e})}o(Ne,"Dialog");function mt({...e}){return G(T.Trigger,{"data-slot":"dialog-trigger",...e})}o(mt,"DialogTrigger");function fo({...e}){return G(T.Portal,{"data-slot":"dialog-portal",...e})}o(fo,"DialogPortal");function go({className:e,...t}){return G(T.Overlay,{"data-slot":"dialog-overlay",className:c("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}o(go,"DialogOverlay");function we({className:e,children:t,...r}){return Re(fo,{"data-slot":"dialog-portal",children:[G(go,{}),Re(T.Content,{"data-slot":"dialog-content",className:c("bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...r,children:[t,Re(T.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 RemoteFlows__Dialog__Close",children:[G(uo,{}),G("span",{className:"sr-only",children:"Close"})]})]})]})}o(we,"DialogContent");function De({className:e,...t}){return G("div",{"data-slot":"dialog-header",className:c("flex flex-col gap-2 text-center sm:text-left",e),...t})}o(De,"DialogHeader");function Te({className:e,...t}){return G(T.Title,{"data-slot":"dialog-title",className:c("text-lg leading-none font-semibold",e),...t})}o(Te,"DialogTitle");import{jsx as Q,jsxs as vn}from"react/jsx-runtime";function ct({className:e,...t}){return Q(X,{"data-slot":"command",className:c("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",e),...t})}o(ct,"Command");function dt({className:e,...t}){return Q(X.List,{"data-slot":"command-list",className:c("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",e),...t})}o(dt,"CommandList");function pt({...e}){return Q(X.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...e})}o(pt,"CommandEmpty");function ut({className:e,...t}){return Q(X.Group,{"data-slot":"command-group",className:c("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})}o(ut,"CommandGroup");function ft({className:e,...t}){return Q(X.Separator,{"data-slot":"command-separator",className:c("bg-border -mx-1 h-px",e),...t})}o(ft,"CommandSeparator");function gt({className:e,...t}){return Q(X.Item,{"data-slot":"command-item",className:c("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})}o(gt,"CommandItem");import{jsx as $,jsxs as Z}from"react/jsx-runtime";function Ft({options:e,selected:t,onChange:r,placeholder:a,...i}){let[d,p]=vo(!1),f=o(n=>{r(t.filter(m=>m.value!==n.value))},"handleUnselect"),g=e.reduce((n,m)=>{let u=m.category||"Uncategorized";return n[u]||(n[u]=[]),n[u].push(m),n},{});return Z(ie,{open:d,onOpenChange:p,...i,children:[$(se,{children:Z(B,{variant:"outline",role:"combobox","aria-expanded":d,className:"w-full justify-between font-normal",type:"button",children:[$("div",{className:"flex gap-1 flex-wrap overflow-x-auto max-h-[2.5rem] items-center",children:t.length>0?t.map(n=>Z($e,{variant:"secondary",className:"mr-1 mb-1",children:[n.label,$("div",{role:"button",tabIndex:0,"aria-label":`remove ${n.label}`,className:"ml-1 ring-offset-background rounded-full outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 cursor-pointer",onKeyDown:m=>{m.key==="Enter"&&f(n)},onMouseDown:m=>{m.preventDefault(),m.stopPropagation()},onClick:()=>f(n),children:$(_o,{className:"h-3 w-3 text-muted-foreground hover:text-foreground"})})]},n.label)):$("span",{className:"text-foreground",children:a})}),$(yo,{className:"size-4"})]})}),$(le,{align:"start",className:"w-full p-0",children:$(ct,{children:Z(dt,{children:[$(pt,{children:"No item found."}),Object.entries(g).map(([n,m],u)=>Z(Fo,{children:[u>0&&$(ft,{}),$(ut,{heading:n,children:m.map(s=>{let l=t.some(v=>v.value===s.value);return Z(gt,{onSelect:()=>{r(l?t.filter(v=>v.value!==s.value):[...t,s])},children:[$(ho,{className:c("mr-2 h-4 w-4",l?"opacity-100":"opacity-0")}),s.label]},s.label)})})]},n))]})})})]})}o(Ft,"MultiSelect");import{jsx as q,jsxs as bo}from"react/jsx-runtime";function vt({label:e,name:t,options:r,defaultValue:a,description:i,onChange:d,$meta:p,component:f,...g}){let{control:n}=Co(),{components:m}=x(),[u,s]=xo([]);return q(C,{defaultValue:a,control:n,name:t,render:({field:l,fieldState:v})=>{let F=f||m?.countries;if(F){let b={label:e,name:t,options:r,defaultValue:a,description:i,onChange:d,$meta:p,...g};return q(F,{field:{...l,onChange:o(M=>{l.onChange(M),d?.(M)},"onChange")},fieldState:v,fieldData:b})}let _=[...Object.entries(p?.regions||{}).map(([b,M])=>({value:M,label:b,category:"Regions"})),...Object.entries(p?.subregions||{}).map(([b,M])=>({value:M,label:b,category:"Subregions"})),...r.map(b=>({...b,value:b.value,label:b.label,category:"Countries"}))],w=o(b=>{let M=b.map(({value:Tt})=>Tt);l.onChange(M),d?.(M),s(b)},"handleChange");return bo(P,{"data-field":t,className:`RemoteFlows__CountryField__Item__${t}`,children:[q(S,{className:"RemoteFlows__CountryField__Label",children:e}),q(k,{children:q(Ft,{options:_,selected:u,onChange:w,...g})}),i&&q(R,{children:i}),v.error&&q(D,{})]})}})}o(vt,"CountryField");import{useFormContext as Po}from"react-hook-form";import*as ht from"react";import{jsx as So}from"react/jsx-runtime";var Ie=ht.forwardRef(({className:e,...t},r)=>So("textarea",{className:c("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:r,...t}));Ie.displayName="Textarea";import{jsx as K,jsxs as Le}from"react/jsx-runtime";function yt({name:e,description:t,label:r,onChange:a,maxLength:i,component:d,...p}){let{components:f}=x(),{control:g}=Po();return K(C,{control:g,name:e,render:({field:n,fieldState:m})=>{let u=d||f?.textarea;if(u){let l={name:e,description:t,label:r,maxLength:i,...p};return K(u,{field:{...n,onChange:o(v=>{n.onChange(v),a?.(v)},"onChange")},fieldState:m,fieldData:l})}let s=n.value?.length??0;return Le(P,{"data-field":e,className:`RemoteFlows__TextArea__Item__${e}`,children:[K(S,{className:"RemoteFlows__TextArea__Label",children:r}),K(k,{children:K(Ie,{...n,value:n.value??"",onChange:l=>{n.onChange(l),a?.(l)},className:c(m.error&&"border-red-500 focus-visible:ring-red-500","RemoteFlows__TextArea__Input"),placeholder:r})}),(t||i)&&Le("div",{className:"flex items-center justify-between",children:[t&&K(R,{className:"RemoteFlows__TextArea__Description",children:t}),i&&Le("span",{className:"text-sm ml-auto RemoteFlows__TextArea__MaxLength",children:[s,"/",i]})]}),m.error&&K(D,{className:"RemoteFlows__TextArea__Error"})]})}})}o(yt,"TextAreaField");import{useFormContext as ko}from"react-hook-form";import{jsx as We}from"react/jsx-runtime";function _t(e){let{components:t}=x(),{control:r}=ko(),a=e.component||t?.email;return a?We(C,{control:r,name:e.name,render:({field:i,fieldState:d})=>We(a,{field:{...i,onChange:o(p=>{i.onChange(p),e.onChange?.(p)},"onChange")},fieldState:d,fieldData:e})}):We(z,{...e,type:"email"})}o(_t,"EmailField");import{useFormContext as Ro}from"react-hook-form";import{jsx as xt}from"react/jsx-runtime";function Ct(e){let{control:t}=Ro();return xt(C,{control:t,name:e.name,render:({field:r})=>xt("input",{...r,type:"hidden"})})}o(Ct,"HiddenField");import Lo,{useEffect as Wo,useState as Rt}from"react";import{yupResolver as Mo}from"@hookform/resolvers/yup";import{useForm as Eo,useFormContext as $o,useFieldArray as Ho}from"react-hook-form";import*as I from"yup";import bt from"lodash.groupby";import j from"lodash.capitalize";var St=60,ue=["monday","tuesday","wednesday","thursday","friday","saturday","sunday"];function No(e){if(e<60)return`${e}m`;let t=Math.floor(e/St),r=e%St;return r>0?`${t}h${r}m`:`${t}h`}o(No,"convertBreakDurationToHours");function Pt(e){let t=e.reduce((r,a)=>a.hours+r,0);return Number(t.toFixed(2))}o(Pt,"calculateTotalWorkHours");function wo(e,t){let r=t.map(({day:d})=>d.toLowerCase()),a=r.indexOf(e),i=null;for(;a<r.length&&!i;){let d=r[a],p=r[a+1],f=ue.indexOf(d)+1;ue[f]===p||(i=d),a+=1}return i}o(wo,"findLastConsecutiveDay");function Do(e){return e.start_time&&e.end_time&&(typeof e.hours=="number"?e.hours:Number.parseInt(e.hours))>0}o(Do,"shouldSummarizeSchedule");function To(e){return Number.parseInt(e.break_duration_minutes)>0}o(To,"shouldSummarizeBreaks");function kt(e){let t=e.filter(Do),r=bt(t,f=>`${f.start_time}|${f.end_time}`),a=e.filter(To),i=bt(a,"break_duration_minutes"),d=Object.keys(r).map(f=>{let g=r[f],n=g[0].day,[m,u]=f.split("|"),s=`from <span>${m.replace(":","h")}</span> to <span>${u.replace(":","h")}</span>`,l=wo(n,g),F=(l?g.findIndex(_=>_.day===l):-1)===g.length-1;return g.length===1?`${j(n)}, ${s}`:!F||!l?g.reduce((_,w,b)=>{let M=j(w.day);return b===g.length-1?`${_}and ${M}, ${s}`:`${_}<span>${M}</span>, `},""):`<span>${j(n)}</span> to <span>${j(l)}</span>, ${s}`}),p=Object.keys(i).reverse().map((f,g)=>{let n=g===0,m=i[f],u=No(parseInt(f,10));if(Object.keys(i).length===1)return`With ${u} daily breaks`;if(m.length===1){let s=`${u} break on ${j(m[0].day)}.`;return n?`With ${s}`:s}return m.reduce((s,l,v)=>{let F=j(l.day);return v===0?`${s} ${F}`:v===m.length-1?`${s}, and ${F}.`:`${s}, ${F}`},n?`With ${u} break on`:`${u} break on`)});return{workHoursSummary:d,breakSummary:p}}o(kt,"buildWorkScheduleSummary");function Me(e){let{checked:t,start_time:r,end_time:a,break_duration_minutes:i}=e;if(!t)return 0;let[d,p]=r.split(":").map(Number),[f,g]=a.split(":").map(Number),n=d*60+p,s=(f*60+g-n-Number.parseInt(i||"0"))/60;return s===Math.floor(s)?s:Number(s.toFixed(2))}o(Me,"calculateHours");var Io={monday:"Mon",tuesday:"Tue",wednesday:"Wed",thursday:"Thu",friday:"Fri",saturday:"Sat",sunday:"Sun"};function fe(e){return Io[e]}o(fe,"getShortWeekday");import{jsx as h,jsxs as H}from"react/jsx-runtime";var Bo=I.object({day:I.string().required(),checked:I.boolean().required(),start_time:I.string().matches(/^([01]\d|2[0-3]):([0-5]\d)$/,"Invalid time format (HH:mm)").when("checked",{is:!0,then:o(e=>e.required("Required"),"then"),otherwise:o(e=>e.optional().nullable(),"otherwise")}),end_time:I.string().matches(/^([01]\d|2[0-3]):([0-5]\d)$/,"Invalid time format (HH:mm)").when("checked",{is:!0,then:o(e=>e.required("Required"),"then"),otherwise:o(e=>e.optional().nullable(),"otherwise")}),hours:I.number().default(0),break_duration_minutes:I.string().default("0")}),Ao=I.object({schedule:I.array(Bo)});function zo({defaultSchedule:e,onSubmit:t}){let[r,a]=Rt(!1),i=ue.map(F=>{let _=e.find(w=>w.day.toLowerCase()===fe(F).toLowerCase()||w.day.toLowerCase()===F.toLowerCase());return _?{..._,day:fe(F),checked:!0}:{...e[0],checked:!1,day:fe(F)}}),d=Eo({defaultValues:{schedule:i},resolver:Mo(Ao)}),{handleSubmit:p,watch:f,reset:g,control:n,formState:m}=d,{fields:u}=Ho({name:"schedule",control:n}),s=f("schedule");function l(F){let _=F.schedule.filter(({checked:w})=>w).map(w=>({...w,hours:Me(w)}));t(_),a(!1)}o(l,"handleSubmitWorkingHours");function v(){g(),a(!1)}return o(v,"handleCancel"),h("div",{className:"flex items-center justify-between",children:H(Ne,{open:r,onOpenChange:a,children:[h(mt,{asChild:!0,children:h(B,{variant:"link",className:"flex items-center p-0 RemoteFlows__WorkScheduleSelectionForm__Trigger",children:"Edit Schedule"})}),H(we,{className:"max-w-5xl max-h-[90vh] overflow-y-auto px-8 py-4 RemoteFlows__WorkScheduleSelectionForm__Content",children:[h(De,{children:h(Te,{className:"RemoteFlows__WorkScheduleSelectionForm__Title",children:"Edit employee working hours"})}),h(Ee,{...d,children:H("form",{className:"space-y-4 RemoteFlows__WorkScheduleSelectionForm__Form",children:[H("div",{className:"rounded-lg",children:[h("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."}),H("div",{className:"grid grid-cols-12 gap-4 text-sm font-medium text-gray-500 uppercase tracking-wide RemoteFlows__WorkScheduleSelectionForm__Header",children:[h("div",{className:"col-span-2"}),h("div",{className:"col-span-3 text-center",children:"START"}),h("div",{className:"col-span-1 text-center"}),h("div",{className:"col-span-3 text-center",children:"END"}),h("div",{className:"col-span-2 text-center",children:"HOURS"})]}),h("div",{className:"RemoteFlows__WorkScheduleSelectionForm__Rows",children:u.map((F,_)=>{let w=s[_],b=Me(w);return H(Lo.Fragment,{children:[H("div",{className:"grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Hours",children:[h("div",{className:"col-span-2 flex items-center gap-3",children:h(ae,{label:F.day,name:`schedule.${_}.checked`})}),h("div",{className:"col-span-3",children:h(z,{name:`schedule.${_}.start_time`,includeErrorMessage:!1})}),h("div",{className:"col-span-1 text-center text-gray-500",children:"to"}),h("div",{className:"col-span-3",children:h(z,{name:`schedule.${_}.end_time`,includeErrorMessage:!1})}),h("div",{className:"col-span-2 text-center text-gray-600",children:isNaN(b)?"-":`${b} hours`})]}),H("div",{className:"grid grid-cols-12 gap-4 items-center py-2 RemoteFlows__WorkScheduleSelectionForm__Row-Break",children:[h("div",{className:"col-span-2 text-gray-500",children:"Break"}),h("div",{className:"col-span-2",children:h(z,{name:`schedule.${_}.break_duration_minutes`,includeErrorMessage:!1})}),h("div",{className:"col-span-2 text-gray-500",children:"minutes"}),h("div",{className:"col-span-4"})]})]},F.id)})})]}),Object.keys(m.errors).length>0&&h("p",{className:"text-destructive text-sm mb-0",children:"Invalid time format (HH:mm)"}),H("div",{className:"flex gap-4 pt-4",children:[h(B,{type:"button",className:"reset-button",variant:"outline",onClick:v,children:"Cancel"}),h(B,{type:"button",className:"submit-button",onClick:p(l),children:"Save Schedule"})]})]})})]})]})})}o(zo,"WorkScheduleSelectionForm");function Nt(e){let{components:t}=x(),{setValue:r,control:a,watch:i}=$o(),d=i(e.name),[p,f]=Rt(d),{workHoursSummary:g,breakSummary:n}=kt(p),m=Pt(p);Wo(()=>{r(e.name,p)},[p,e.name,r]);function u(l){f(l)}o(u,"onSubmit");let s=e.component||t?.["work-schedule"];return s?h(C,{control:a,name:e.name,render:({field:l,fieldState:v})=>h(s,{field:{...l,onChange:o(F=>{l.onChange(F),e.onChange?.(F)},"onChange")},fieldState:v,fieldData:{...e,defaultFormattedValue:{workHoursSummary:g,breakSummary:n,totalWorkHours:m}}})}):H("div",{className:"flex flex-col gap-3 RemoteFlows__WorkScheduleField",children:[h("p",{className:"text-sm RemoteFlows__WorkScheduleField__Title",children:"Work hours"}),H("div",{className:"flex flex-col gap-1 RemoteFlows__WorkScheduleField__Summary",children:[h("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__WorkHours",dangerouslySetInnerHTML:{__html:g.join(", ")}}),h("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Break",children:n.join()}),H("p",{className:"text-sm text-gray-500 RemoteFlows__WorkScheduleField__Summary__Total",children:["Total of ",h("span",{children:m})," hours per week"]}),h(zo,{defaultSchedule:p,onSubmit:u})]})]})}o(Nt,"WorkScheduleField");var de={checkbox:ae,text:z,email:_t,money:Se,select:lt,radio:je,number:Se,file:Ye,fieldset:Je,date:ze,textarea:yt,countries:vt,hidden:Ct,"work-schedule":Nt};import{useEffect as Oo}from"react";import{useFormContext as Go}from"react-hook-form";import{Fragment as Vo,jsx as ge,jsxs as Uo}from"react/jsx-runtime";function wt({name:e,value:t,description:r,statement:a}){let{setValue:i}=Go();return Oo(()=>{i(e,t)},[]),ge("div",{children:a?Uo(Vo,{children:[ge("p",{className:`text-sm RemoteFlows__ForcedValue__Title__${e}`,dangerouslySetInnerHTML:{__html:a?.title}}),ge("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,dangerouslySetInnerHTML:{__html:a?.description}})]}):ge("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,dangerouslySetInnerHTML:{__html:r}})})}o(wt,"ForcedValueField");import{Fragment as Ko,jsx as te,jsxs as Dt}from"react/jsx-runtime";function qo(e){return e.const!==void 0&&e.const===e.default&&e.inputType!=="checkbox"&&e.inputType!=="hidden"}o(qo,"checkFieldHasForcedValue");var Xi=o(({fields:e,components:t})=>!e||e.length===0?null:te(Ko,{children:e.map(r=>{if(r.isVisible===!1||r.deprecated)return null;if(qo(r))return te(wt,{name:r.name,description:r.description,value:r.const,statement:r.statement},r.name);let a=de[r.inputType];return r.inputType==="fieldset"?te(a,{...r,components:t}):a?Dt(Jo,{children:[te(a,{...r,component:t&&t[r.inputType]}),r.statement?te(ce,{...r.statement}):null]},r.name):Dt("p",{className:"error",children:["Field type ",r.inputType," not supported"]})})}),"JSONSchemaFormFields");export{Xi as a};
2
- //# sourceMappingURL=chunk-EGDD73PU.js.map