@remoteoss/remote-flows 0.4.0-alpha.0 → 0.4.0-alpha.10

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 (336) hide show
  1. package/README.md +63 -1
  2. package/dist/chunk-2Y22JKVE.js +2 -0
  3. package/dist/{chunk-NFEY2YL6.js → chunk-3PH5E6CZ.js} +2 -2
  4. package/dist/chunk-4A6ZQNMB.js +2 -0
  5. package/dist/chunk-4A6ZQNMB.js.map +1 -0
  6. package/dist/chunk-4YNOSVYQ.js +2 -0
  7. package/dist/chunk-4YNOSVYQ.js.map +1 -0
  8. package/dist/chunk-55SA3TEF.js +2 -0
  9. package/dist/chunk-55SA3TEF.js.map +1 -0
  10. package/dist/chunk-6I6RMJXC.js +2 -0
  11. package/dist/chunk-6I6RMJXC.js.map +1 -0
  12. package/dist/chunk-6T3A6GWH.js +2 -0
  13. package/dist/chunk-6T3A6GWH.js.map +1 -0
  14. package/dist/chunk-7KUKFRKC.js +2 -0
  15. package/dist/chunk-7KUKFRKC.js.map +1 -0
  16. package/dist/chunk-B4SVITZI.js +2 -0
  17. package/dist/chunk-B4SVITZI.js.map +1 -0
  18. package/dist/chunk-DBIPVIBO.js +2 -0
  19. package/dist/{chunk-M5VZBMLC.js.map → chunk-DBIPVIBO.js.map} +1 -1
  20. package/dist/chunk-DP4SIYAC.js +2 -0
  21. package/dist/chunk-DP4SIYAC.js.map +1 -0
  22. package/dist/chunk-EGDD73PU.js +2 -0
  23. package/dist/chunk-EGDD73PU.js.map +1 -0
  24. package/dist/chunk-EMVYCKDC.js +2 -0
  25. package/dist/{chunk-56BNVYTD.js.map → chunk-EMVYCKDC.js.map} +1 -1
  26. package/dist/chunk-FB4QOGWE.js +2 -0
  27. package/dist/chunk-FB4QOGWE.js.map +1 -0
  28. package/dist/chunk-G7BISHWK.js +2 -0
  29. package/dist/chunk-G7BISHWK.js.map +1 -0
  30. package/dist/chunk-GFWQG4ZT.js +2 -0
  31. package/dist/chunk-GFWQG4ZT.js.map +1 -0
  32. package/dist/chunk-GMU3QGAR.js +2 -0
  33. package/dist/chunk-GMU3QGAR.js.map +1 -0
  34. package/dist/chunk-HBH2PSYQ.js +2 -0
  35. package/dist/chunk-HBH2PSYQ.js.map +1 -0
  36. package/dist/chunk-HJBXUPHM.js +2 -0
  37. package/dist/chunk-HJBXUPHM.js.map +1 -0
  38. package/dist/chunk-HSY5OO7D.js +2 -0
  39. package/dist/chunk-HSY5OO7D.js.map +1 -0
  40. package/dist/chunk-IAHI4OUM.js +2 -0
  41. package/dist/chunk-IAHI4OUM.js.map +1 -0
  42. package/dist/chunk-IKQ25VV5.js +2 -0
  43. package/dist/chunk-IKQ25VV5.js.map +1 -0
  44. package/dist/chunk-INAXCFVC.js +2 -0
  45. package/dist/chunk-INAXCFVC.js.map +1 -0
  46. package/dist/chunk-JJPI2YDM.js +2 -0
  47. package/dist/chunk-JJPI2YDM.js.map +1 -0
  48. package/dist/chunk-L5OIK2ZJ.js +2 -0
  49. package/dist/chunk-L5OIK2ZJ.js.map +1 -0
  50. package/dist/chunk-LJRUD43L.js +2 -0
  51. package/dist/chunk-LJRUD43L.js.map +1 -0
  52. package/dist/chunk-LTDDSH45.js +2 -0
  53. package/dist/chunk-LTDDSH45.js.map +1 -0
  54. package/dist/chunk-MGUDZTTV.js +2 -0
  55. package/dist/chunk-MGUDZTTV.js.map +1 -0
  56. package/dist/chunk-NEFNFYRS.js +2 -0
  57. package/dist/{chunk-GFBF55NR.js.map → chunk-NEFNFYRS.js.map} +1 -1
  58. package/dist/chunk-NF5IMQEW.js +2 -0
  59. package/dist/chunk-NF5IMQEW.js.map +1 -0
  60. package/dist/{chunk-D3XENMEM.js → chunk-O3QLBSMV.js} +2 -2
  61. package/dist/chunk-O3QLBSMV.js.map +1 -0
  62. package/dist/chunk-O562EWKG.js +2 -0
  63. package/dist/chunk-O562EWKG.js.map +1 -0
  64. package/dist/chunk-OIXUBXFU.js +2 -0
  65. package/dist/{chunk-GMGKIQLI.js.map → chunk-OIXUBXFU.js.map} +1 -1
  66. package/dist/chunk-OKAOH4ER.js +2 -0
  67. package/dist/chunk-OKAOH4ER.js.map +1 -0
  68. package/dist/chunk-ONZPO4GN.js +2 -0
  69. package/dist/{chunk-IDSJI7KQ.js.map → chunk-ONZPO4GN.js.map} +1 -1
  70. package/dist/chunk-P5VTRXW3.js +2 -0
  71. package/dist/chunk-P5VTRXW3.js.map +1 -0
  72. package/dist/chunk-PH5CQN7X.js +2 -0
  73. package/dist/{chunk-MESREYTZ.js.map → chunk-PH5CQN7X.js.map} +1 -1
  74. package/dist/chunk-PJMKZ3HR.js +2 -0
  75. package/dist/chunk-PJMKZ3HR.js.map +1 -0
  76. package/dist/chunk-PMLMQNSO.js +2 -0
  77. package/dist/chunk-PMLMQNSO.js.map +1 -0
  78. package/dist/chunk-QHN4PPHD.js +2 -0
  79. package/dist/{chunk-3FVI5JIC.js.map → chunk-QHN4PPHD.js.map} +1 -1
  80. package/dist/chunk-RYEOLQIL.js +2 -0
  81. package/dist/chunk-RYEOLQIL.js.map +1 -0
  82. package/dist/{chunk-FZ2HS6G7.js → chunk-S4XU4SE7.js} +1 -1
  83. package/dist/chunk-S4XU4SE7.js.map +1 -0
  84. package/dist/chunk-SIJ5SUY6.js +2 -0
  85. package/dist/chunk-SIJ5SUY6.js.map +1 -0
  86. package/dist/chunk-SJPBIRXM.js +2 -0
  87. package/dist/chunk-SJPBIRXM.js.map +1 -0
  88. package/dist/chunk-T5NPHXFC.js +2 -0
  89. package/dist/chunk-T5NPHXFC.js.map +1 -0
  90. package/dist/chunk-TPRGCMIZ.js +2 -0
  91. package/dist/chunk-TPRGCMIZ.js.map +1 -0
  92. package/dist/chunk-TZFGLE7X.js +2 -0
  93. package/dist/chunk-TZFGLE7X.js.map +1 -0
  94. package/dist/chunk-U4M5QBBG.js +2 -0
  95. package/dist/chunk-U4M5QBBG.js.map +1 -0
  96. package/dist/chunk-UEKXODGJ.js +2 -0
  97. package/dist/chunk-UEKXODGJ.js.map +1 -0
  98. package/dist/chunk-V2NCE4LO.js +2 -0
  99. package/dist/chunk-V2NCE4LO.js.map +1 -0
  100. package/dist/chunk-VI7WS34A.js +2 -0
  101. package/dist/chunk-VI7WS34A.js.map +1 -0
  102. package/dist/chunk-W5DS5Q4J.js +2 -0
  103. package/dist/chunk-W5DS5Q4J.js.map +1 -0
  104. package/dist/{chunk-2KK5HDYP.js → chunk-WEIRXEXU.js} +2 -2
  105. package/dist/chunk-WU77JQYU.js +2 -0
  106. package/dist/chunk-WU77JQYU.js.map +1 -0
  107. package/dist/chunk-WVJDCDGZ.js +2 -0
  108. package/dist/chunk-WVJDCDGZ.js.map +1 -0
  109. package/dist/{chunk-OLJ2S6A6.js → chunk-YG5FFTC4.js} +1 -1
  110. package/dist/chunk-YG5FFTC4.js.map +1 -0
  111. package/dist/{chunk-SSIHUUZY.js → chunk-YSIEXMDD.js} +2 -2
  112. package/dist/chunk-YSIEXMDD.js.map +1 -0
  113. package/dist/chunk-YXVLPPO2.js +2 -0
  114. package/dist/{chunk-XQ6WWP6K.js.map → chunk-YXVLPPO2.js.map} +1 -1
  115. package/dist/flows/ContractAmendment/ContractAmendmentBack.d.ts +3 -2
  116. package/dist/flows/ContractAmendment/ContractAmendmentBack.js +1 -1
  117. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +5 -5
  118. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  119. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +5 -4
  120. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  121. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +5 -5
  122. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  123. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.d.ts +3 -2
  124. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.js +1 -1
  125. package/dist/flows/ContractAmendment/context.d.ts +5 -5
  126. package/dist/flows/ContractAmendment/hooks.d.ts +4 -4
  127. package/dist/flows/ContractAmendment/hooks.js +1 -1
  128. package/dist/flows/ContractAmendment/index.d.ts +3 -2
  129. package/dist/flows/ContractAmendment/index.js +1 -1
  130. package/dist/flows/ContractAmendment/types.d.ts +1 -1
  131. package/dist/flows/ContractAmendment/utils.d.ts +2 -2
  132. package/dist/flows/ContractAmendment/utils.js +1 -1
  133. package/dist/flows/CostCalculator/CostCalculatorDisclaimer.d.ts +2 -2
  134. package/dist/flows/CostCalculator/CostCalculatorDisclaimer.js +1 -1
  135. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +5 -4
  136. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  137. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +9 -5
  138. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  139. package/dist/flows/CostCalculator/CostCalculatorResetButton.d.ts +3 -2
  140. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  141. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.d.ts +3 -2
  142. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  143. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.d.ts +2 -2
  144. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js +1 -1
  145. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.d.ts +2 -2
  146. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js +1 -1
  147. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.d.ts +2 -2
  148. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js +1 -1
  149. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +3 -3
  150. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +1 -1
  151. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.d.ts +2 -2
  152. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js +1 -1
  153. package/dist/flows/CostCalculator/Results/CostCalculatorResultsChart.js.map +1 -1
  154. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.d.ts +2 -2
  155. package/dist/flows/CostCalculator/Results/CostCalculatorTotalCost.js +1 -1
  156. package/dist/flows/CostCalculator/context.d.ts +9 -6
  157. package/dist/flows/CostCalculator/context.js +1 -1
  158. package/dist/flows/CostCalculator/hooks.d.ts +4 -3
  159. package/dist/flows/CostCalculator/hooks.js +1 -1
  160. package/dist/flows/CostCalculator/index.d.ts +5 -1
  161. package/dist/flows/CostCalculator/index.js +1 -1
  162. package/dist/flows/CostCalculator/types.d.ts +12 -2
  163. package/dist/flows/CostCalculator/utils.d.ts +8 -4
  164. package/dist/flows/CostCalculator/utils.js +1 -1
  165. package/dist/flows/Onboarding/BasicInformationStep.d.ts +5 -5
  166. package/dist/flows/Onboarding/BasicInformationStep.js +1 -1
  167. package/dist/flows/Onboarding/BenefitsStep.d.ts +14 -9
  168. package/dist/flows/Onboarding/BenefitsStep.js +1 -1
  169. package/dist/flows/Onboarding/ContractDetailsStep.d.ts +9 -6
  170. package/dist/flows/Onboarding/ContractDetailsStep.js +1 -1
  171. package/dist/flows/Onboarding/OnboardingBack.d.ts +4 -2
  172. package/dist/flows/Onboarding/OnboardingBack.js +1 -1
  173. package/dist/flows/Onboarding/OnboardingFlow.d.ts +17 -6
  174. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  175. package/dist/flows/Onboarding/OnboardingForm.d.ts +8 -6
  176. package/dist/flows/Onboarding/OnboardingForm.js +1 -1
  177. package/dist/flows/Onboarding/OnboardingInvite.d.ts +15 -8
  178. package/dist/flows/Onboarding/OnboardingInvite.js +1 -1
  179. package/dist/flows/Onboarding/OnboardingSubmit.d.ts +3 -2
  180. package/dist/flows/Onboarding/OnboardingSubmit.js +1 -1
  181. package/dist/flows/Onboarding/ReviewStep.d.ts +38 -0
  182. package/dist/flows/Onboarding/ReviewStep.js +2 -0
  183. package/dist/flows/Onboarding/ReviewStep.js.map +1 -0
  184. package/dist/flows/Onboarding/SelectCountryStep.d.ts +15 -0
  185. package/dist/flows/Onboarding/SelectCountryStep.js +2 -0
  186. package/dist/flows/Onboarding/SelectCountryStep.js.map +1 -0
  187. package/dist/flows/Onboarding/api.d.ts +113 -0
  188. package/dist/flows/Onboarding/api.js +2 -0
  189. package/dist/flows/Onboarding/api.js.map +1 -0
  190. package/dist/flows/Onboarding/context.d.ts +48 -15
  191. package/dist/flows/Onboarding/context.js +1 -1
  192. package/dist/flows/Onboarding/hooks.d.ts +62 -31
  193. package/dist/flows/Onboarding/hooks.js +1 -1
  194. package/dist/flows/Onboarding/index.d.ts +10 -5
  195. package/dist/flows/Onboarding/index.js +1 -1
  196. package/dist/flows/Onboarding/json-schemas/selectCountryStep.d.ts +24 -0
  197. package/dist/flows/Onboarding/json-schemas/selectCountryStep.js +2 -0
  198. package/dist/flows/Onboarding/json-schemas/selectCountryStep.js.map +1 -0
  199. package/dist/flows/Onboarding/types.d.ts +23 -3
  200. package/dist/flows/Onboarding/utils.d.ts +23 -3
  201. package/dist/flows/Onboarding/utils.js +1 -1
  202. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
  203. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  204. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +3 -3
  205. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  206. package/dist/flows/Termination/PaidTimeOffForm.d.ts +3 -3
  207. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  208. package/dist/flows/Termination/TerminationBack.d.ts +3 -2
  209. package/dist/flows/Termination/TerminationBack.js +1 -1
  210. package/dist/flows/Termination/TerminationDetailsForm.d.ts +3 -3
  211. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  212. package/dist/flows/Termination/TerminationFlow.d.ts +6 -4
  213. package/dist/flows/Termination/TerminationFlow.js +1 -1
  214. package/dist/flows/Termination/TerminationForm.d.ts +3 -3
  215. package/dist/flows/Termination/TerminationForm.js +1 -1
  216. package/dist/flows/Termination/TerminationSubmit.d.ts +3 -2
  217. package/dist/flows/Termination/TerminationSubmit.js +1 -1
  218. package/dist/flows/Termination/TimeOff.d.ts +4 -4
  219. package/dist/flows/Termination/TimeOff.js +1 -1
  220. package/dist/flows/Termination/context.d.ts +5 -4
  221. package/dist/flows/Termination/hooks.d.ts +3 -2
  222. package/dist/flows/Termination/hooks.js +1 -1
  223. package/dist/flows/Termination/index.d.ts +3 -1
  224. package/dist/flows/Termination/index.js +1 -1
  225. package/dist/flows/Termination/json-schemas/schema.js +1 -1
  226. package/dist/flows/Termination/types.d.ts +1 -1
  227. package/dist/flows/Termination/utils.d.ts +1 -1
  228. package/dist/flows/Termination/utils.js +1 -1
  229. package/dist/flows/types.d.ts +1 -1
  230. package/dist/flows/useStepState.d.ts +19 -6
  231. package/dist/flows/useStepState.js +1 -1
  232. package/dist/flows/utils.d.ts +3 -11
  233. package/dist/flows/utils.js +1 -1
  234. package/dist/index.css +1 -1
  235. package/dist/index.css.map +1 -1
  236. package/dist/index.d.ts +16 -8
  237. package/dist/index.js +1 -1
  238. package/dist/index.js.map +1 -1
  239. package/dist/{remoteFlows-CswYencu.d.ts → remoteFlows-D0i6pVe5.d.ts} +49 -25
  240. package/dist/types-CxSFjQw5.d.ts +3 -0
  241. package/dist/{types.gen-HC04kr7n.d.ts → types.gen-Ctv2nomK.d.ts} +268 -2
  242. package/package.json +18 -3
  243. package/dist/chunk-2PXGLWCY.js +0 -2
  244. package/dist/chunk-2PXGLWCY.js.map +0 -1
  245. package/dist/chunk-344TN4EG.js +0 -2
  246. package/dist/chunk-344TN4EG.js.map +0 -1
  247. package/dist/chunk-36UPHOJS.js +0 -2
  248. package/dist/chunk-36UPHOJS.js.map +0 -1
  249. package/dist/chunk-3FVI5JIC.js +0 -2
  250. package/dist/chunk-4HAR3Z2C.js +0 -2
  251. package/dist/chunk-4HAR3Z2C.js.map +0 -1
  252. package/dist/chunk-56BNVYTD.js +0 -2
  253. package/dist/chunk-6A3F6JG6.js +0 -2
  254. package/dist/chunk-6A3F6JG6.js.map +0 -1
  255. package/dist/chunk-6CT35VQR.js +0 -2
  256. package/dist/chunk-6CT35VQR.js.map +0 -1
  257. package/dist/chunk-7CYG2RHP.js +0 -2
  258. package/dist/chunk-7CYG2RHP.js.map +0 -1
  259. package/dist/chunk-BKBIALOU.js +0 -2
  260. package/dist/chunk-BKBIALOU.js.map +0 -1
  261. package/dist/chunk-BKROCZRD.js +0 -2
  262. package/dist/chunk-BKROCZRD.js.map +0 -1
  263. package/dist/chunk-BL2HRBUQ.js +0 -2
  264. package/dist/chunk-BL2HRBUQ.js.map +0 -1
  265. package/dist/chunk-D3XENMEM.js.map +0 -1
  266. package/dist/chunk-DGPRFQYK.js +0 -2
  267. package/dist/chunk-DGPRFQYK.js.map +0 -1
  268. package/dist/chunk-DPKJX4NS.js +0 -2
  269. package/dist/chunk-DPKJX4NS.js.map +0 -1
  270. package/dist/chunk-EAAIAMTY.js +0 -2
  271. package/dist/chunk-EAAIAMTY.js.map +0 -1
  272. package/dist/chunk-FMT2OTOL.js +0 -2
  273. package/dist/chunk-FMT2OTOL.js.map +0 -1
  274. package/dist/chunk-FNMWKUNJ.js +0 -2
  275. package/dist/chunk-FNMWKUNJ.js.map +0 -1
  276. package/dist/chunk-FZ2HS6G7.js.map +0 -1
  277. package/dist/chunk-GFBF55NR.js +0 -2
  278. package/dist/chunk-GMGKIQLI.js +0 -2
  279. package/dist/chunk-GPICG72A.js +0 -2
  280. package/dist/chunk-GPICG72A.js.map +0 -1
  281. package/dist/chunk-GYSK6CY5.js +0 -2
  282. package/dist/chunk-GYSK6CY5.js.map +0 -1
  283. package/dist/chunk-HSW5HMHH.js +0 -2
  284. package/dist/chunk-IDSJI7KQ.js +0 -2
  285. package/dist/chunk-J55S4SEH.js +0 -2
  286. package/dist/chunk-J55S4SEH.js.map +0 -1
  287. package/dist/chunk-J6LUE5K7.js +0 -2
  288. package/dist/chunk-J6LUE5K7.js.map +0 -1
  289. package/dist/chunk-JIBRNWD2.js +0 -2
  290. package/dist/chunk-JIBRNWD2.js.map +0 -1
  291. package/dist/chunk-JWIYUQ5X.js +0 -2
  292. package/dist/chunk-JWIYUQ5X.js.map +0 -1
  293. package/dist/chunk-KH6QS5OU.js +0 -2
  294. package/dist/chunk-KH6QS5OU.js.map +0 -1
  295. package/dist/chunk-KSGPQCSG.js +0 -2
  296. package/dist/chunk-KSGPQCSG.js.map +0 -1
  297. package/dist/chunk-M5VZBMLC.js +0 -2
  298. package/dist/chunk-M7WCW7WD.js +0 -2
  299. package/dist/chunk-M7WCW7WD.js.map +0 -1
  300. package/dist/chunk-MESREYTZ.js +0 -2
  301. package/dist/chunk-MHKNAQLP.js +0 -2
  302. package/dist/chunk-MHKNAQLP.js.map +0 -1
  303. package/dist/chunk-OLJ2S6A6.js.map +0 -1
  304. package/dist/chunk-QEMICBEY.js +0 -2
  305. package/dist/chunk-QEMICBEY.js.map +0 -1
  306. package/dist/chunk-RIAYBN32.js +0 -2
  307. package/dist/chunk-RIAYBN32.js.map +0 -1
  308. package/dist/chunk-RLS4PMWA.js +0 -2
  309. package/dist/chunk-RLS4PMWA.js.map +0 -1
  310. package/dist/chunk-RRFSGYAC.js +0 -2
  311. package/dist/chunk-RRFSGYAC.js.map +0 -1
  312. package/dist/chunk-S4FKLPBB.js +0 -2
  313. package/dist/chunk-S4FKLPBB.js.map +0 -1
  314. package/dist/chunk-S56EWAS4.js +0 -2
  315. package/dist/chunk-S56EWAS4.js.map +0 -1
  316. package/dist/chunk-SSIHUUZY.js.map +0 -1
  317. package/dist/chunk-WQHKB5T7.js +0 -2
  318. package/dist/chunk-WQHKB5T7.js.map +0 -1
  319. package/dist/chunk-WS3C3WIJ.js +0 -2
  320. package/dist/chunk-WS3C3WIJ.js.map +0 -1
  321. package/dist/chunk-XJMVWJZ4.js +0 -2
  322. package/dist/chunk-XJMVWJZ4.js.map +0 -1
  323. package/dist/chunk-XLFHHYVS.js +0 -2
  324. package/dist/chunk-XLFHHYVS.js.map +0 -1
  325. package/dist/chunk-XQ6WWP6K.js +0 -2
  326. package/dist/chunk-XVOJ4RMC.js +0 -2
  327. package/dist/chunk-XVOJ4RMC.js.map +0 -1
  328. package/dist/chunk-YDUUQU4R.js +0 -2
  329. package/dist/chunk-YDUUQU4R.js.map +0 -1
  330. package/dist/chunk-YH5F6MGK.js +0 -2
  331. package/dist/chunk-YH5F6MGK.js.map +0 -1
  332. package/dist/chunk-YOC3VDC7.js +0 -2
  333. package/dist/chunk-YOC3VDC7.js.map +0 -1
  334. /package/dist/{chunk-HSW5HMHH.js.map → chunk-2Y22JKVE.js.map} +0 -0
  335. /package/dist/{chunk-NFEY2YL6.js.map → chunk-3PH5E6CZ.js.map} +0 -0
  336. /package/dist/{chunk-2KK5HDYP.js.map → chunk-WEIRXEXU.js.map} +0 -0
package/README.md CHANGED
@@ -26,6 +26,37 @@ Welcome to the `@remoteoss/remote-flows` package, a React library that provides
26
26
  npm install @remoteoss/remote-flows
27
27
  ```
28
28
 
29
+ ## Development
30
+
31
+ To run the SDK locally for development:
32
+
33
+ 1. Clone the repository and install dependencies:
34
+
35
+ ```sh
36
+ git clone https://github.com/remoteoss/remote-flows.git
37
+ cd remote-flows
38
+ npm install
39
+ ```
40
+
41
+ 2. Create a `.env` file in the example directory with your Remote credentials:
42
+
43
+ ```env
44
+ CLIENT_ID=your_client_id
45
+ CLIENT_SECRET=your_client_secret
46
+ REFRESH_TOKEN=your_refresh_token
47
+ REMOTE_GATEWAY=https://gateway.partners.remote-sandbox.com # for sandbox
48
+ # REMOTE_GATEWAY=https://gateway.remote.com # for production
49
+ ```
50
+
51
+ 3. Start the development server:
52
+
53
+ ```sh
54
+ cd example
55
+ npm run dev
56
+ ```
57
+
58
+ The example app will be available at `http://localhost:3001`. The server handles authentication and proxies API requests to Remote's gateway.
59
+
29
60
  ## Components API
30
61
 
31
62
  ### RemoteFlows
@@ -50,15 +81,40 @@ The `components` prop allows you to override the default form field components w
50
81
 
51
82
  > **Important**: All custom components are wrapped with React Hook Form's `Controller` component. You must bind the `field` props to your HTML elements to ensure proper form state management and validation.
52
83
 
84
+ For TypeScript users, we export component prop types to make it easier to create properly typed custom components:
85
+
86
+ ```tsx
87
+ import {
88
+ FieldComponentProps,
89
+ ButtonComponentProps,
90
+ } from '@remoteoss/remote-flows';
91
+
92
+ const CustomInput = ({ field, fieldData, fieldState }: FieldComponentProps) => {
93
+ return (
94
+ <div>
95
+ <label htmlFor={field.name}>{fieldData.label}</label>
96
+ <input {...field} />
97
+ {fieldState.error && <p>{fieldState.error.message}</p>}
98
+ </div>
99
+ );
100
+ };
101
+
102
+ const CustomButton = ({ children, ...props }: ButtonComponentProps) => {
103
+ return <button {...props}>{children}</button>;
104
+ };
105
+ ```
106
+
53
107
  Here's an example of custom field components implementation:
54
108
 
55
109
  ```tsx
56
110
  <RemoteFlows
57
111
  components={{
112
+ text: CustomInput,
113
+ button: CustomButton,
58
114
  number: ({ field, fieldState, fieldData }) => (
59
115
  <div>
60
116
  <label>{fieldData.label}</label>
61
- <input {...field} />
117
+ <input {...field} type="number" />
62
118
  {fieldState.error && (
63
119
  <span className="text-red-500">{fieldState.error.message}</span>
64
120
  )}
@@ -85,6 +141,12 @@ Here's an example of custom field components implementation:
85
141
  </RemoteFlows>
86
142
  ```
87
143
 
144
+ ### Available Component Prop Types
145
+
146
+ - `FieldComponentProps`: For all form field components (text, number, select, etc.)
147
+ - `ButtonComponentProps`: For custom button components
148
+ - `StatementComponentProps`: For custom statement components
149
+
88
150
  Supported field types:
89
151
 
90
152
  - `text`: Text input fields
@@ -0,0 +1,2 @@
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,2 +1,2 @@
1
- import{l as o,r as i}from"./chunk-FNMWKUNJ.js";import{d as n}from"./chunk-WRDKLT4N.js";import{a as e}from"./chunk-AYDF3IFZ.js";import{useQuery as s}from"@tanstack/react-query";var p=e(({employmentId:t})=>{let{client:r}=n();return s({queryKey:["employment",t],retry:!1,queryFn:e(()=>o({client:r,headers:{Authorization:""},path:{employment_id:t}}),"queryFn"),select:e(({data:m})=>m,"select")})},"useEmploymentQuery"),c=e(({employmentId:t,status:r})=>{let{client:m}=n();return s({queryKey:["timeoff",t,r],retry:!1,queryFn:e(()=>i({client:m,headers:{Authorization:""},query:{employment_id:t,status:r}}),"queryFn"),select:e(({data:u})=>u,"select")})},"useTimeOffQuery");export{p as a,c as b};
2
- //# sourceMappingURL=chunk-NFEY2YL6.js.map
1
+ import{p as o,w as i}from"./chunk-GMU3QGAR.js";import{d as n}from"./chunk-WRDKLT4N.js";import{a as e}from"./chunk-AYDF3IFZ.js";import{useQuery as s}from"@tanstack/react-query";var p=e(({employmentId:t})=>{let{client:r}=n();return s({queryKey:["employment",t],retry:!1,queryFn:e(()=>o({client:r,headers:{Authorization:""},path:{employment_id:t}}),"queryFn"),select:e(({data:m})=>m,"select")})},"useEmploymentQuery"),c=e(({employmentId:t,status:r})=>{let{client:m}=n();return s({queryKey:["timeoff",t,r],retry:!1,queryFn:e(()=>i({client:m,headers:{Authorization:""},query:{employment_id:t,status:r}}),"queryFn"),select:e(({data:u})=>u,"select")})},"useTimeOffQuery");export{p as a,c as b};
2
+ //# sourceMappingURL=chunk-3PH5E6CZ.js.map
@@ -0,0 +1,2 @@
1
+ import{d as g,e as S}from"./chunk-VI7WS34A.js";import{b as R}from"./chunk-O562EWKG.js";import{a as m}from"./chunk-JRQSZHUU.js";import{b as f}from"./chunk-EMVYCKDC.js";import{b as y}from"./chunk-WRDKLT4N.js";import{a}from"./chunk-AYDF3IFZ.js";import{jsx as w}from"react/jsx-runtime";function O({onSubmit:I,onSuccess:d,onError:o,render:u,...n}){let{components:b}=y(),{onboardingBag:t,setCreditScore:c}=R(),i=g(),s=S(),{mutateAsync:_}=m(i),{mutateAsync:C}=m(s),l=a(async()=>{try{if(await I?.(),t.creditRiskStatus==="deposit_required"&&t.employmentId&&t.employment?.status&&!t.isEmploymentReadOnly){let e=await C({employment_slug:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"created_awaiting_reserve"}),c?.(r=>({...r,showReserveInvoice:!0})),t.refetchEmployment();return}e.error&&o?.(e.error)}else if(t.employmentId){let e=await _({employment_id:t.employmentId});if(e.data){await d?.({data:e.data,employmentStatus:"invited"}),c?.(r=>({...r,showInviteSuccessful:!0})),t.refetchEmployment();return}e.error&&o?.(e.error)}}catch(e){o?.(e)}},"handleSubmit"),p=t.creditRiskStatus==="deposit_required"&&t.employment?.status&&!t.isEmploymentReadOnly,v=b?.button;return v?w(v,{...n,disabled:i.isPending||s.isPending||n.disabled,onClick:e=>{l(),n.onClick?.(e)},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})}):w(f,{...n,disabled:i.isPending||s.isPending||n.disabled,onClick:()=>{l()},children:u({employmentStatus:p?"created_awaiting_reserve":"invited"})})}a(O,"OnboardingInvite");export{O as a};
2
+ //# sourceMappingURL=chunk-4A6ZQNMB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Onboarding/OnboardingInvite.tsx"],"sourcesContent":["import { ButtonHTMLAttributes, ReactNode } from 'react';\nimport { useEmploymentInvite } from './api';\nimport { Button } from '@/src/components/ui/button';\nimport { useCreateReserveInvoice } from '@/src/flows/Onboarding/api';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { SuccessResponse } from '@/src/client';\nimport { useOnboardingContext } from './context';\nimport { useFormFields } from '@/src/context';\n\nexport type OnboardingInviteProps = ButtonHTMLAttributes<HTMLButtonElement> & {\n onSuccess?: ({\n data,\n employmentStatus,\n }: {\n data: SuccessResponse;\n employmentStatus: 'invited' | 'created_awaiting_reserve';\n }) => void | Promise<void>;\n onError?: (error: unknown) => void;\n onSubmit?: () => void | Promise<void>;\n render: (props: {\n employmentStatus: 'invited' | 'created_awaiting_reserve';\n }) => ReactNode;\n} & Record<string, unknown>;\n\nexport function OnboardingInvite({\n onSubmit,\n onSuccess,\n onError,\n render,\n ...props\n}: OnboardingInviteProps) {\n const { components } = useFormFields();\n const { onboardingBag, setCreditScore } = useOnboardingContext();\n const employmentInviteMutation = useEmploymentInvite();\n const useCreateReserveInvoiceMutation = useCreateReserveInvoice();\n\n const { mutateAsync: employmentInviteMutationAsync } = mutationToPromise(\n employmentInviteMutation,\n );\n\n const { mutateAsync: createReserveInvoiceMutationAsync } = mutationToPromise(\n useCreateReserveInvoiceMutation,\n );\n\n const handleSubmit = async () => {\n try {\n await onSubmit?.();\n if (\n onboardingBag.creditRiskStatus === 'deposit_required' &&\n onboardingBag.employmentId &&\n onboardingBag.employment?.status &&\n !onboardingBag.isEmploymentReadOnly\n ) {\n const response = await createReserveInvoiceMutationAsync({\n employment_slug: onboardingBag.employmentId,\n });\n if (response.data) {\n await onSuccess?.({\n data: response.data as SuccessResponse,\n employmentStatus: 'created_awaiting_reserve',\n });\n setCreditScore?.((prev) => ({\n ...prev,\n showReserveInvoice: true,\n }));\n onboardingBag.refetchEmployment();\n return;\n }\n\n if (response.error) {\n onError?.(response.error);\n }\n } else if (onboardingBag.employmentId) {\n const response = await employmentInviteMutationAsync({\n employment_id: onboardingBag.employmentId,\n });\n if (response.data) {\n await onSuccess?.({\n data: response.data as SuccessResponse,\n employmentStatus: 'invited',\n });\n setCreditScore?.((prev) => ({\n ...prev,\n showInviteSuccessful: true,\n }));\n onboardingBag.refetchEmployment();\n return;\n }\n if (response.error) {\n onError?.(response.error);\n }\n }\n } catch (error) {\n onError?.(error);\n }\n };\n\n const isReserveFlow =\n onboardingBag.creditRiskStatus === 'deposit_required' &&\n onboardingBag.employment?.status &&\n !onboardingBag.isEmploymentReadOnly;\n\n const CustomButton = components?.button;\n if (CustomButton) {\n return (\n <CustomButton\n {...props}\n disabled={\n employmentInviteMutation.isPending ||\n useCreateReserveInvoiceMutation.isPending ||\n props.disabled\n }\n onClick={(evt) => {\n handleSubmit();\n props.onClick?.(evt);\n }}\n >\n {render({\n employmentStatus: isReserveFlow\n ? 'created_awaiting_reserve'\n : 'invited',\n })}\n </CustomButton>\n );\n }\n\n return (\n <Button\n {...props}\n disabled={\n employmentInviteMutation.isPending ||\n useCreateReserveInvoiceMutation.isPending ||\n props.disabled\n }\n onClick={() => {\n handleSubmit();\n }}\n >\n {render({\n employmentStatus: isReserveFlow\n ? 'created_awaiting_reserve'\n : 'invited',\n })}\n </Button>\n );\n}\n"],"mappings":"kPAyGM,cAAAA,MAAA,oBAjFC,SAASC,EAAiB,CAC/B,SAAAC,EACA,UAAAC,EACA,QAAAC,EACA,OAAAC,EACA,GAAGC,CACL,EAA0B,CACxB,GAAM,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAC/B,CAAE,cAAAC,EAAe,eAAAC,CAAe,EAAIC,EAAqB,EACzDC,EAA2BC,EAAoB,EAC/CC,EAAkCC,EAAwB,EAE1D,CAAE,YAAaC,CAA8B,EAAIC,EACrDL,CACF,EAEM,CAAE,YAAaM,CAAkC,EAAID,EACzDH,CACF,EAEMK,EAAeC,EAAA,SAAY,CAC/B,GAAI,CAEF,GADA,MAAMlB,IAAW,EAEfO,EAAc,mBAAqB,oBACnCA,EAAc,cACdA,EAAc,YAAY,QAC1B,CAACA,EAAc,qBACf,CACA,IAAMY,EAAW,MAAMH,EAAkC,CACvD,gBAAiBT,EAAc,YACjC,CAAC,EACD,GAAIY,EAAS,KAAM,CACjB,MAAMlB,IAAY,CAChB,KAAMkB,EAAS,KACf,iBAAkB,0BACpB,CAAC,EACDX,IAAkBY,IAAU,CAC1B,GAAGA,EACH,mBAAoB,EACtB,EAAE,EACFb,EAAc,kBAAkB,EAChC,MACF,CAEIY,EAAS,OACXjB,IAAUiB,EAAS,KAAK,CAE5B,SAAWZ,EAAc,aAAc,CACrC,IAAMY,EAAW,MAAML,EAA8B,CACnD,cAAeP,EAAc,YAC/B,CAAC,EACD,GAAIY,EAAS,KAAM,CACjB,MAAMlB,IAAY,CAChB,KAAMkB,EAAS,KACf,iBAAkB,SACpB,CAAC,EACDX,IAAkBY,IAAU,CAC1B,GAAGA,EACH,qBAAsB,EACxB,EAAE,EACFb,EAAc,kBAAkB,EAChC,MACF,CACIY,EAAS,OACXjB,IAAUiB,EAAS,KAAK,CAE5B,CACF,OAASE,EAAO,CACdnB,IAAUmB,CAAK,CACjB,CACF,EAnDqB,gBAqDfC,EACJf,EAAc,mBAAqB,oBACnCA,EAAc,YAAY,QAC1B,CAACA,EAAc,qBAEXgB,EAAelB,GAAY,OACjC,OAAIkB,EAEAzB,EAACyB,EAAA,CACE,GAAGnB,EACJ,SACEM,EAAyB,WACzBE,EAAgC,WAChCR,EAAM,SAER,QAAUoB,GAAQ,CAChBP,EAAa,EACbb,EAAM,UAAUoB,CAAG,CACrB,EAEC,SAAArB,EAAO,CACN,iBAAkBmB,EACd,2BACA,SACN,CAAC,EACH,EAKFxB,EAAC2B,EAAA,CACE,GAAGrB,EACJ,SACEM,EAAyB,WACzBE,EAAgC,WAChCR,EAAM,SAER,QAAS,IAAM,CACba,EAAa,CACf,EAEC,SAAAd,EAAO,CACN,iBAAkBmB,EACd,2BACA,SACN,CAAC,EACH,CAEJ,CAzHgBJ,EAAAnB,EAAA","names":["jsx","OnboardingInvite","onSubmit","onSuccess","onError","render","props","components","useFormFields","onboardingBag","setCreditScore","useOnboardingContext","employmentInviteMutation","useEmploymentInvite","useCreateReserveInvoiceMutation","useCreateReserveInvoice","employmentInviteMutationAsync","mutationToPromise","createReserveInvoiceMutationAsync","handleSubmit","__name","response","prev","error","isReserveFlow","CustomButton","evt","Button"]}
@@ -0,0 +1,2 @@
1
+ import{a as m,b as p,c as d,d as u}from"./chunk-QHN4PPHD.js";import{a as l}from"./chunk-PH5CQN7X.js";import{b as i}from"./chunk-EMVYCKDC.js";import{b as r}from"./chunk-5ETXP2QF.js";import{a as n}from"./chunk-AYDF3IFZ.js";import{Info as g}from"lucide-react";import{Fragment as v,jsx as e,jsxs as t}from"react/jsx-runtime";function y({contributionsTotal:c,currency:a,contributionsBreakdown:s}){return t("div",{children:[t("div",{className:"flex justify-between items-center mb-2",children:[e("h3",{className:"font-medium text-primary-foreground",children:"Employer Contributions"}),e("span",{className:"font-semibold text-lg",children:r(c,a)})]}),s?t(v,{children:[e(l,{className:"mb-3"}),e("div",{className:"space-y-3 pl-2",children:s.map((o,f)=>t("div",{className:"flex justify-between items-start text-sm",children:[t("div",{className:"flex items-start gap-2",children:[e("span",{children:o.name}),e(m,{children:t(p,{children:[e(d,{asChild:!0,children:t(i,{variant:"ghost",size:"icon",className:"h-4 w-4 p-0",children:[e(g,{className:"h-3 w-3 text-gray-400"}),e("span",{className:"sr-only",children:"Info"})]})}),t(u,{children:[e("p",{className:"max-w-xs",children:o.description}),o.zendesk_article_url&&e("a",{href:o.zendesk_article_url,target:"_blank",rel:"noopener noreferrer",className:"text-blue-500 hover:underline block mt-1 text-xs",children:"Learn more"})]})]})})]}),e("span",{children:r(o.amount,a)})]},f))})]}):null]})}n(y,"CostCalculatorContributionsBreakdown");export{y as a};
2
+ //# sourceMappingURL=chunk-4YNOSVYQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.tsx"],"sourcesContent":["import { Info } from 'lucide-react';\n\nimport {\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n Tooltip as UITooltip,\n} from '@/src/components/ui/tooltip';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Separator } from '@/src/components/ui/separator';\nimport { formatCurrency } from '@/src/lib/utils';\n\ntype CostCalculatorContributionsBreakdownProps = {\n contributionsTotal: number;\n currency: string;\n contributionsBreakdown:\n | {\n name: string;\n description: string | null;\n amount: number;\n zendesk_article_url: string | null;\n }[]\n | undefined;\n};\n\nexport function CostCalculatorContributionsBreakdown({\n contributionsTotal,\n currency,\n contributionsBreakdown,\n}: CostCalculatorContributionsBreakdownProps) {\n return (\n <div>\n <div className=\"flex justify-between items-center mb-2\">\n <h3 className=\"font-medium text-primary-foreground\">\n Employer Contributions\n </h3>\n <span className=\"font-semibold text-lg\">\n {formatCurrency(contributionsTotal, currency)}\n </span>\n </div>\n {contributionsBreakdown ? (\n <>\n <Separator className=\"mb-3\" />\n <div className=\"space-y-3 pl-2\">\n {contributionsBreakdown.map((contribution, index) => (\n <div\n key={index}\n className=\"flex justify-between items-start text-sm\"\n >\n <div className=\"flex items-start gap-2\">\n <span>{contribution.name}</span>\n <TooltipProvider>\n <UITooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-4 w-4 p-0\"\n >\n <Info className=\"h-3 w-3 text-gray-400\" />\n <span className=\"sr-only\">Info</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p className=\"max-w-xs\">{contribution.description}</p>\n {contribution.zendesk_article_url && (\n <a\n href={contribution.zendesk_article_url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-500 hover:underline block mt-1 text-xs\"\n >\n Learn more\n </a>\n )}\n </TooltipContent>\n </UITooltip>\n </TooltipProvider>\n </div>\n <span>{formatCurrency(contribution.amount, currency)}</span>\n </div>\n ))}\n </div>\n </>\n ) : null}\n </div>\n );\n}\n"],"mappings":"6NAAA,OAAS,QAAAA,MAAY,eAiCf,OASE,YAAAC,EARA,OAAAC,EADF,QAAAC,MAAA,oBAPC,SAASC,EAAqC,CACnD,mBAAAC,EACA,SAAAC,EACA,uBAAAC,CACF,EAA8C,CAC5C,OACEJ,EAAC,OACC,UAAAA,EAAC,OAAI,UAAU,yCACb,UAAAD,EAAC,MAAG,UAAU,sCAAsC,kCAEpD,EACAA,EAAC,QAAK,UAAU,wBACb,SAAAM,EAAeH,EAAoBC,CAAQ,EAC9C,GACF,EACCC,EACCJ,EAAAF,EAAA,CACE,UAAAC,EAACO,EAAA,CAAU,UAAU,OAAO,EAC5BP,EAAC,OAAI,UAAU,iBACZ,SAAAK,EAAuB,IAAI,CAACG,EAAcC,IACzCR,EAAC,OAEC,UAAU,2CAEV,UAAAA,EAAC,OAAI,UAAU,yBACb,UAAAD,EAAC,QAAM,SAAAQ,EAAa,KAAK,EACzBR,EAACU,EAAA,CACC,SAAAT,EAACU,EAAA,CACC,UAAAX,EAACY,EAAA,CAAe,QAAO,GACrB,SAAAX,EAACY,EAAA,CACC,QAAQ,QACR,KAAK,OACL,UAAU,cAEV,UAAAb,EAACc,EAAA,CAAK,UAAU,wBAAwB,EACxCd,EAAC,QAAK,UAAU,UAAU,gBAAI,GAChC,EACF,EACAC,EAACc,EAAA,CACC,UAAAf,EAAC,KAAE,UAAU,WAAY,SAAAQ,EAAa,YAAY,EACjDA,EAAa,qBACZR,EAAC,KACC,KAAMQ,EAAa,oBACnB,OAAO,SACP,IAAI,sBACJ,UAAU,mDACX,sBAED,GAEJ,GACF,EACF,GACF,EACAR,EAAC,QAAM,SAAAM,EAAeE,EAAa,OAAQJ,CAAQ,EAAE,IAjChDK,CAkCP,CACD,EACH,GACF,EACE,MACN,CAEJ,CA9DgBO,EAAAd,EAAA","names":["Info","Fragment","jsx","jsxs","CostCalculatorContributionsBreakdown","contributionsTotal","currency","contributionsBreakdown","formatCurrency","Separator","contribution","index","TooltipProvider","Tooltip","TooltipTrigger","Button","Info","TooltipContent","__name"]}
@@ -0,0 +1,2 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/TerminationSubmit.tsx"],"sourcesContent":["import { Button } from '@/src/components/ui/button';\nimport { ButtonHTMLAttributes, PropsWithChildren } from 'react';\nimport { useTerminationContext } from './context';\nimport { useFormFields } from '@/src/context';\n\nexport function TerminationSubmit({\n children,\n ...props\n}: PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>> &\n Record<string, unknown>) {\n const { formId } = useTerminationContext();\n const { components } = useFormFields();\n\n const CustomButton = components?.button;\n if (CustomButton) {\n return (\n <CustomButton {...props} form={formId}>\n {children}\n </CustomButton>\n );\n }\n\n return (\n <Button {...props} form={formId}>\n {children}\n </Button>\n );\n}\n"],"mappings":"gKAgBM,cAAAA,MAAA,oBAXC,SAASC,EAAkB,CAChC,SAAAC,EACA,GAAGC,CACL,EAC2B,CACzB,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAsB,EACnC,CAAE,WAAAC,CAAW,EAAIC,EAAc,EAE/BC,EAAeF,GAAY,OACjC,OAAIE,EAEAR,EAACQ,EAAA,CAAc,GAAGL,EAAO,KAAMC,EAC5B,SAAAF,EACH,EAKFF,EAACS,EAAA,CAAQ,GAAGN,EAAO,KAAMC,EACtB,SAAAF,EACH,CAEJ,CAtBgBQ,EAAAT,EAAA","names":["jsx","TerminationSubmit","children","props","formId","useTerminationContext","components","useFormFields","CustomButton","Button","__name"]}
@@ -0,0 +1,2 @@
1
+ import{b as r}from"./chunk-O562EWKG.js";import{a as e}from"./chunk-AYDF3IFZ.js";var S=["invited","created_reserve_paid"],R=["deposit_required","referred"];function l({render:o}){let{onboardingBag:t,creditScore:s}=r(),d=t.creditRiskStatus==="deposit_required",i=t.employment?.status&&S.includes(t.employment.status),n=t.creditRiskStatus&&R.includes(t.creditRiskStatus),u=d&&t.employment?.status&&!i,c=t.creditRiskStatus&&!n||t.employment?.status&&i,a=e(()=>u?s.showReserveInvoice?"deposit_required_successful":"deposit_required":c?s.showInviteSuccessful?"invite_successful":"invite":null,"getCreditRiskState")();return o({creditRiskState:a,creditRiskStatus:t.creditRiskStatus})}e(l,"ReviewStep");export{l as a};
2
+ //# sourceMappingURL=chunk-6I6RMJXC.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,2 @@
1
+ import{a as m}from"./chunk-ONZPO4GN.js";import{c as n}from"./chunk-TPRGCMIZ.js";import{b as a}from"./chunk-6HGUGIYJ.js";import{a as o}from"./chunk-AYDF3IFZ.js";import{useForm as S}from"react-hook-form";import{jsx as i}from"react/jsx-runtime";function w({onSubmit:s,onError:d,onSuccess:c}){let{contractAmendment:{stepState:l,isSubmitting:u,onSubmit:f,fields:C},formId:p}=a(),e=S({defaultValues:l.values?.form}),A=o(async r=>{let F=n(r,C,{isPartialValidation:!1});await s?.(F);let t=await f(r);t.error?d?.(t.error):await c?.(t.data)},"handleSubmit");return u?null:i(m,{...e,children:i("form",{id:p,onSubmit:e.handleSubmit(A),className:"RemoteFlows__ContractAmendmentConfirmationForm"})})}o(w,"ContractAmendmentConfirmationForm");export{w as a};
2
+ //# sourceMappingURL=chunk-6T3A6GWH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/ContractAmendment/ContractAmendmentConfirmationForm.tsx"],"sourcesContent":["import {\n ContractAmendmentResponse,\n PostCreateContractAmendmentError,\n} from '@/src/client';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { Form } from '@/src/components/ui/form';\nimport { FieldValues, useForm } from 'react-hook-form';\nimport { useContractAmendmentContext } from './context';\n\ntype ContractAmendmentConfirmationFormProps = {\n /**\n * Callback function to be called when the contract amendment form is submitted.\n * This function is called before the contract amendment is submitted.\n * It can be used to perform any additional validation or processing before\n * the contract amendment is submitted.\n * @param values\n * @returns\n */\n onSubmit?: (values: FieldValues) => void | Promise<void>;\n /**\n * Callback function to be called when the contract amendment fails.\n * @param error\n * @returns\n */\n onError?: (error: PostCreateContractAmendmentError) => void;\n /**\n * Callback function to be called when the contract amendment is successfully submitted.\n * @param data\n * @returns\n */\n onSuccess?: (data: ContractAmendmentResponse) => void | Promise<void>;\n};\n\nexport function ContractAmendmentConfirmationForm({\n onSubmit,\n onError,\n onSuccess,\n}: ContractAmendmentConfirmationFormProps) {\n const {\n contractAmendment: {\n stepState,\n isSubmitting,\n onSubmit: submitContractAmendment,\n fields,\n },\n formId,\n } = useContractAmendmentContext();\n const form = useForm({\n defaultValues: stepState.values?.form,\n });\n\n const handleSubmit = async (values: FieldValues) => {\n const parsedValues = parseJSFToValidate(values, fields, {\n isPartialValidation: false,\n });\n await onSubmit?.(parsedValues);\n\n const contractAmendmentResult = await submitContractAmendment(values);\n\n if (contractAmendmentResult.error) {\n onError?.(\n contractAmendmentResult.error as PostCreateContractAmendmentError,\n );\n } else {\n await onSuccess?.(\n contractAmendmentResult.data as ContractAmendmentResponse,\n );\n }\n };\n\n // Ensure that step\n if (isSubmitting) {\n return null;\n }\n\n return (\n <Form {...form}>\n <form\n id={formId}\n onSubmit={form.handleSubmit(handleSubmit)}\n className=\"RemoteFlows__ContractAmendmentConfirmationForm\"\n ></form>\n </Form>\n );\n}\n"],"mappings":"gKAMA,OAAsB,WAAAA,MAAe,kBAuE/B,cAAAC,MAAA,oBA5CC,SAASC,EAAkC,CAChD,SAAAC,EACA,QAAAC,EACA,UAAAC,CACF,EAA2C,CACzC,GAAM,CACJ,kBAAmB,CACjB,UAAAC,EACA,aAAAC,EACA,SAAUC,EACV,OAAAC,CACF,EACA,OAAAC,CACF,EAAIC,EAA4B,EAC1BC,EAAOC,EAAQ,CACnB,cAAeP,EAAU,QAAQ,IACnC,CAAC,EAEKQ,EAAeC,EAAA,MAAOC,GAAwB,CAClD,IAAMC,EAAeC,EAAmBF,EAAQP,EAAQ,CACtD,oBAAqB,EACvB,CAAC,EACD,MAAMN,IAAWc,CAAY,EAE7B,IAAME,EAA0B,MAAMX,EAAwBQ,CAAM,EAEhEG,EAAwB,MAC1Bf,IACEe,EAAwB,KAC1B,EAEA,MAAMd,IACJc,EAAwB,IAC1B,CAEJ,EAjBqB,gBAoBrB,OAAIZ,EACK,KAIPN,EAACmB,EAAA,CAAM,GAAGR,EACR,SAAAX,EAAC,QACC,GAAIS,EACJ,SAAUE,EAAK,aAAaE,CAAY,EACxC,UAAU,iDACX,EACH,CAEJ,CAnDgBC,EAAAb,EAAA","names":["useForm","jsx","ContractAmendmentConfirmationForm","onSubmit","onError","onSuccess","stepState","isSubmitting","submitContractAmendment","fields","formId","useContractAmendmentContext","form","useForm","handleSubmit","__name","values","parsedValues","parseJSFToValidate","contractAmendmentResult","Form"]}
@@ -0,0 +1,2 @@
1
+ import{a as r}from"./chunk-T5NPHXFC.js";import{b as m}from"./chunk-DZYFSFZ7.js";import{a as o}from"./chunk-AYDF3IFZ.js";import{jsx as e}from"react/jsx-runtime";function f({onSubmit:n}){let{terminationBag:i}=m();return e(r,{onSubmit:o(async a=>{await n?.(i?.parseFormValues(a)),i?.next()},"handleSubmit")})}o(f,"PaidTimeOffForm");export{f as a};
2
+ //# sourceMappingURL=chunk-7KUKFRKC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/PaidTimeOffForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype PaidTimeOffFormProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: TerminationFormValues) => void | Promise<void>;\n};\n\nexport function PaidTimeOffForm({ onSubmit }: PaidTimeOffFormProps) {\n const { terminationBag } = useTerminationContext();\n const handleSubmit = async (values: TerminationFormValues) => {\n await onSubmit?.(\n terminationBag?.parseFormValues(values) as TerminationFormValues,\n );\n terminationBag?.next();\n };\n\n return <TerminationForm onSubmit={handleSubmit} />;\n}\n"],"mappings":"wHAoBS,cAAAA,MAAA,oBATF,SAASC,EAAgB,CAAE,SAAAC,CAAS,EAAyB,CAClE,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAQjD,OAAOJ,EAACK,EAAA,CAAgB,SAPHC,EAAA,MAAOC,GAAkC,CAC5D,MAAML,IACJC,GAAgB,gBAAgBI,CAAM,CACxC,EACAJ,GAAgB,KAAK,CACvB,EALqB,gBAO2B,CAClD,CAVgBG,EAAAL,EAAA","names":["jsx","PaidTimeOffForm","onSubmit","terminationBag","useTerminationContext","TerminationForm","__name","values"]}
@@ -0,0 +1,2 @@
1
+ import{a as r}from"./chunk-T5NPHXFC.js";import{b as n}from"./chunk-DZYFSFZ7.js";import{a as o}from"./chunk-AYDF3IFZ.js";import{jsx as a}from"react/jsx-runtime";function u({onSubmit:m}){let{terminationBag:i}=n();return a(r,{onSubmit:o(async t=>{await m?.(i?.parseFormValues(t)),i?.next()},"handleSubmit")})}o(u,"TerminationDetailsForm");export{u as a};
2
+ //# sourceMappingURL=chunk-B4SVITZI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/TerminationDetailsForm.tsx"],"sourcesContent":["import { useTerminationContext } from './context';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { TerminationForm } from '@/src/flows/Termination/TerminationForm';\n\ntype TerminationDetailsFormProps = {\n /*\n * The function is called when the form is submitted. It receives the form values as an argument.\n */\n onSubmit?: (payload: TerminationFormValues) => void | Promise<void>;\n};\n\nexport function TerminationDetailsForm({\n onSubmit,\n}: TerminationDetailsFormProps) {\n const { terminationBag } = useTerminationContext();\n const handleSubmit = async (values: TerminationFormValues) => {\n await onSubmit?.(\n terminationBag?.parseFormValues(values) as TerminationFormValues,\n );\n terminationBag?.next();\n };\n\n return <TerminationForm onSubmit={handleSubmit} />;\n}\n"],"mappings":"wHAsBS,cAAAA,MAAA,oBAXF,SAASC,EAAuB,CACrC,SAAAC,CACF,EAAgC,CAC9B,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAQjD,OAAOJ,EAACK,EAAA,CAAgB,SAPHC,EAAA,MAAOC,GAAkC,CAC5D,MAAML,IACJC,GAAgB,gBAAgBI,CAAM,CACxC,EACAJ,GAAgB,KAAK,CACvB,EALqB,gBAO2B,CAClD,CAZgBG,EAAAL,EAAA","names":["jsx","TerminationDetailsForm","onSubmit","terminationBag","useTerminationContext","TerminationForm","__name","values"]}
@@ -0,0 +1,2 @@
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 +1 @@
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: true,\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,OAAOA,GAAS,SAAAC,MAAa,QAC7B,OAAS,WAAAC,MAAe,kBAgCjB,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,OACEW,EAAA,cAACC,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAH,EACA,OAAQN,EACR,kBAAAE,CACF,GAECH,EAAOG,CAAiB,CAC3B,CAEJ,EA5CkC","names":["React","useId","useForm","CostCalculatorFlow","__name","estimationOptions","defaultEstimationOptions","defaultValues","options","render","formId","useId","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","form","useForm","React","CostCalculatorContext"]}
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"]}
@@ -0,0 +1,2 @@
1
+ import{a as S}from"./chunk-XFD3ULUF.js";import{a as P}from"./chunk-WWANHPT7.js";import{a as h}from"./chunk-2Y22JKVE.js";import{a as F}from"./chunk-S4XU4SE7.js";import{a as T}from"./chunk-G7BISHWK.js";import{a as y}from"./chunk-JRQSZHUU.js";import{b as p}from"./chunk-GMU3QGAR.js";import{a as V}from"./chunk-INAXCFVC.js";import{d as _}from"./chunk-WRDKLT4N.js";import{c as s}from"./chunk-TPRGCMIZ.js";import{a as e}from"./chunk-AYDF3IFZ.js";import{createHeadlessForm as g,modify as x}from"@remoteoss/json-schema-form";import{useMutation as A,useQuery as K}from"@tanstack/react-query";import L from"lodash.omitby";import q from"lodash.isnull";import z from"lodash.omit";function R(o){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...o}}e(R,"buildInitialValues");var B=e(()=>{let{client:o}=_();return A({mutationFn:e(n=>p({client:o,headers:{Authorization:""},body:n}),"mutationFn")})},"useCreateTermination"),I=e(({formValues:o,jsfModify:n,step:m})=>K({queryKey:["rmt-flows-termination-schema",m],queryFn:e(()=>h[m]??S,"queryFn"),select:e(({data:u})=>{let i=u?.schema||{};if(n){let{schema:d}=x(i,n);i=d}return g(i||{},{initialValues:o||{}})},"select")}),"useTerminationSchema"),ue=e(({employmentId:o,options:n})=>{let{fieldValues:m,setFieldValues:u,stepState:i,previousStep:f,nextStep:d}=V(F),k={...i.values?.[i.currentStep.name],...m},{data:r,isLoading:w}=I({formValues:k,jsfModify:n?.jsfModify,step:i.currentStep.name}),l=g(P.data.schema),c=B(),{mutateAsync:b}=y(c);async function C(a){if(!o)throw new Error("Employment id is missing");if(r){let t=s(a,l.fields,{isPartialValidation:!0}),{customer_informed_employee:j}=t,D=j==="yes"?{employee_awareness:{date:t.customer_informed_employee_date,note:t.customer_informed_employee_description}}:void 0,H=T(t,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),J=z(H,"customer_informed_employee_date","customer_informed_employee_description"),O=L({...J,...D},q);return b({employment_id:o,termination_details:O,type:"termination"})}}e(C,"onSubmit");function M(){f()}e(M,"back");function v(){d()}e(v,"next");let E=R({...i.values?.employee_communication,...i.values?.termination_details,...i.values?.paid_time_off,...i.values?.additional_information});return{employmentId:o,stepState:i,fields:r?.fields||[],isLoading:w,isSubmitting:c.isPending,initialValues:E,handleValidation:e(a=>{if(r){let t=s(a,r?.fields);return r?.handleValidation(t)}return null},"handleValidation"),checkFieldUpdates:e(a=>{if(l){let t=s(a,l?.fields,{isPartialValidation:!0});u(t)}},"checkFieldUpdates"),parseFormValues:e(a=>s(a,l.fields,{isPartialValidation:!0}),"parseFormValues"),onSubmit:C,back:M,next:v}},"useTermination");export{ue as a};
2
+ //# sourceMappingURL=chunk-DP4SIYAC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/hooks.ts"],"sourcesContent":["import {\n CreateOffboardingParams,\n postCreateOffboarding,\n TerminationDetailsParams,\n} from '@/src/client';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport omitBy from 'lodash.omitby';\nimport isNull from 'lodash.isnull';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { JSFModify } from '@/src/flows/CostCalculator/types';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { useClient } from '@/src/context';\nimport omit from 'lodash.omit';\nimport { parseFormRadioValues } from '@/src/flows/utils';\nimport { useStepState } from '@/src/flows/useStepState';\nimport { STEPS } from '@/src/flows/Termination/utils';\nimport { defaultSchema } from '@/src/flows/Termination/json-schemas/defaultSchema';\nimport { schema } from '@/src/flows/Termination/json-schemas/schema';\nimport { jsonSchema } from '@/src/flows/Termination/json-schemas/jsonSchema';\n\nfunction buildInitialValues(\n stepsInitialValues: Partial<TerminationFormValues>,\n): TerminationFormValues {\n const initialValues: TerminationFormValues = {\n confidential: '',\n customer_informed_employee: '',\n customer_informed_employee_date: '',\n customer_informed_employee_description: '',\n personal_email: '',\n termination_reason: undefined,\n reason_description: '',\n termination_reason_files: [],\n will_challenge_termination: '',\n will_challenge_termination_description: null,\n agrees_to_pto_amount: '',\n agrees_to_pto_amount_notes: null,\n acknowledge_termination_procedure: false,\n additional_comments: '',\n proposed_termination_date: '',\n risk_assessment_reasons: [],\n timesheet_file: undefined,\n ...stepsInitialValues,\n };\n\n return initialValues;\n}\n\nconst useCreateTermination = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateOffboardingParams) => {\n return postCreateOffboarding({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\nconst useTerminationSchema = ({\n formValues,\n jsfModify,\n step,\n}: {\n formValues?: TerminationFormValues;\n jsfModify?: JSFModify;\n step?: string;\n}) => {\n return useQuery({\n queryKey: ['rmt-flows-termination-schema', step],\n queryFn: () => {\n return schema[step as keyof typeof schema] ?? defaultSchema;\n },\n select: ({ data }) => {\n let jsfSchema = data?.schema || {};\n if (jsfModify) {\n const { schema } = modify(jsfSchema, jsfModify);\n jsfSchema = schema;\n }\n const form = createHeadlessForm(jsfSchema || {}, {\n initialValues: formValues || {},\n });\n return form;\n },\n });\n};\n\ntype TerminationHookProps = {\n employmentId: string;\n options?: {\n jsfModify?: JSFModify;\n };\n};\n\nexport const useTermination = ({\n employmentId,\n options,\n}: TerminationHookProps) => {\n const { fieldValues, setFieldValues, stepState, previousStep, nextStep } =\n useStepState<keyof typeof STEPS, TerminationFormValues>(STEPS);\n\n const formValues = {\n ...stepState.values?.[stepState.currentStep.name as keyof typeof STEPS], // Restore values for the current step\n ...fieldValues,\n };\n\n const { data: terminationHeadlessForm, isLoading: isLoadingTermination } =\n useTerminationSchema({\n formValues: formValues,\n jsfModify: options?.jsfModify,\n step: stepState.currentStep.name,\n });\n\n const entireTerminationSchema = createHeadlessForm(jsonSchema.data.schema);\n\n const createTermination = useCreateTermination();\n const { mutateAsync } = mutationToPromise(createTermination);\n\n async function onSubmit(values: TerminationFormValues) {\n if (!employmentId) {\n throw new Error('Employment id is missing');\n }\n\n if (terminationHeadlessForm) {\n // this is a hack because I need to validate all form values with the entire schema\n const parsedValues = parseJSFToValidate(\n values,\n entireTerminationSchema.fields,\n { isPartialValidation: true },\n );\n\n const { customer_informed_employee: customerInformedEmployee } =\n parsedValues;\n\n const employeeAwareness =\n customerInformedEmployee === 'yes'\n ? {\n employee_awareness: {\n date: parsedValues.customer_informed_employee_date,\n note: parsedValues.customer_informed_employee_description,\n },\n }\n : undefined;\n\n const radioFieldKeys = [\n 'agrees_to_pto_amount',\n 'confidential',\n 'customer_informed_employee',\n 'will_challenge_termination',\n ];\n\n const parsedRadioValues = parseFormRadioValues(\n parsedValues,\n radioFieldKeys,\n );\n\n const normalizedValues = omit(\n parsedRadioValues,\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n );\n\n const terminationDetails: TerminationDetailsParams = omitBy(\n {\n ...normalizedValues,\n ...employeeAwareness,\n },\n isNull,\n ) as unknown as TerminationDetailsParams;\n\n const terminationPayload: CreateOffboardingParams = {\n employment_id: employmentId,\n termination_details: terminationDetails,\n type: 'termination',\n };\n\n return mutateAsync(terminationPayload);\n }\n\n return;\n }\n\n function back() {\n previousStep();\n }\n\n function next() {\n nextStep();\n }\n\n const initialValues = buildInitialValues({\n ...stepState.values?.employee_communication,\n ...stepState.values?.termination_details,\n ...stepState.values?.paid_time_off,\n ...stepState.values?.additional_information,\n });\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\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 contract amendment schema\n */\n fields: terminationHeadlessForm?.fields || [],\n /**\n * Loading state indicating if the termination schema is being fetched\n */\n isLoading: isLoadingTermination,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting: createTermination.isPending,\n /**\n * Initial form values\n */\n initialValues: initialValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: TerminationFormValues) => {\n if (terminationHeadlessForm) {\n const parsedValues = parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n );\n return terminationHeadlessForm?.handleValidation(parsedValues);\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: (values: Partial<TerminationFormValues>) => {\n if (entireTerminationSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n entireTerminationSchema?.fields,\n { isPartialValidation: true },\n );\n setFieldValues(parsedValues as TerminationFormValues);\n }\n },\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues: (values: TerminationFormValues) => {\n return parseJSFToValidate(values, entireTerminationSchema.fields, {\n isPartialValidation: true,\n });\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"],"mappings":"wbAOA,OAAS,sBAAAA,EAAoB,UAAAC,MAAc,8BAC3C,OAAS,eAAAC,EAAa,YAAAC,MAAgB,wBACtC,OAAOC,MAAY,gBACnB,OAAOC,MAAY,gBAKnB,OAAOC,MAAU,cAQjB,SAASC,EACPC,EACuB,CAsBvB,MArB6C,CAC3C,aAAc,GACd,2BAA4B,GAC5B,gCAAiC,GACjC,uCAAwC,GACxC,eAAgB,GAChB,mBAAoB,OACpB,mBAAoB,GACpB,yBAA0B,CAAC,EAC3B,2BAA4B,GAC5B,uCAAwC,KACxC,qBAAsB,GACtB,2BAA4B,KAC5B,kCAAmC,GACnC,oBAAqB,GACrB,0BAA2B,GAC3B,wBAAyB,CAAC,EAC1B,eAAgB,OAChB,GAAGA,CACL,CAGF,CAzBSC,EAAAF,EAAA,sBA2BT,IAAMG,EAAuBD,EAAA,IAAM,CACjC,GAAM,CAAE,OAAAE,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAY,CACjB,WAAYJ,EAACK,GACJC,EAAsB,CAC3B,OAAQJ,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAMG,CACR,CAAC,EAPS,aASd,CAAC,CACH,EAb6B,wBAevBE,EAAuBP,EAAA,CAAC,CAC5B,WAAAQ,EACA,UAAAC,EACA,KAAAC,CACF,IAKSC,EAAS,CACd,SAAU,CAAC,+BAAgCD,CAAI,EAC/C,QAASV,EAAA,IACAY,EAAOF,CAA2B,GAAKG,EADvC,WAGT,OAAQb,EAAA,CAAC,CAAE,KAAAc,CAAK,IAAM,CACpB,IAAIC,EAAYD,GAAM,QAAU,CAAC,EACjC,GAAIL,EAAW,CACb,GAAM,CAAE,OAAAG,CAAO,EAAII,EAAOD,EAAWN,CAAS,EAC9CM,EAAYH,CACd,CAIA,OAHaK,EAAmBF,GAAa,CAAC,EAAG,CAC/C,cAAeP,GAAc,CAAC,CAChC,CAAC,CAEH,EAVQ,SAWV,CAAC,EAzB0B,wBAmChBU,GAAiBlB,EAAA,CAAC,CAC7B,aAAAmB,EACA,QAAAC,CACF,IAA4B,CAC1B,GAAM,CAAE,YAAAC,EAAa,eAAAC,EAAgB,UAAAC,EAAW,aAAAC,EAAc,SAAAC,CAAS,EACrEC,EAAwDC,CAAK,EAEzDnB,EAAa,CACjB,GAAGe,EAAU,SAASA,EAAU,YAAY,IAA0B,EACtE,GAAGF,CACL,EAEM,CAAE,KAAMO,EAAyB,UAAWC,CAAqB,EACrEtB,EAAqB,CACnB,WAAYC,EACZ,UAAWY,GAAS,UACpB,KAAMG,EAAU,YAAY,IAC9B,CAAC,EAEGO,EAA0Bb,EAAmBc,EAAW,KAAK,MAAM,EAEnEC,EAAoB/B,EAAqB,EACzC,CAAE,YAAAgC,CAAY,EAAIC,EAAkBF,CAAiB,EAE3D,eAAeG,EAASC,EAA+B,CACrD,GAAI,CAACjB,EACH,MAAM,IAAI,MAAM,0BAA0B,EAG5C,GAAIS,EAAyB,CAE3B,IAAMS,EAAeC,EACnBF,EACAN,EAAwB,OACxB,CAAE,oBAAqB,EAAK,CAC9B,EAEM,CAAE,2BAA4BS,CAAyB,EAC3DF,EAEIG,EACJD,IAA6B,MACzB,CACE,mBAAoB,CAClB,KAAMF,EAAa,gCACnB,KAAMA,EAAa,sCACrB,CACF,EACA,OASAI,EAAoBC,EACxBL,EARqB,CACrB,uBACA,eACA,6BACA,4BACF,CAKA,EAEMM,EAAmBC,EACvBH,EACA,kCACA,wCACF,EAEMI,EAA+CC,EACnD,CACE,GAAGH,EACH,GAAGH,CACL,EACAO,CACF,EAQA,OAAOd,EAN6C,CAClD,cAAed,EACf,oBAAqB0B,EACrB,KAAM,aACR,CAEqC,CACvC,CAGF,CA9De7C,EAAAmC,EAAA,YAgEf,SAASa,GAAO,CACdxB,EAAa,CACf,CAFSxB,EAAAgD,EAAA,QAIT,SAASC,GAAO,CACdxB,EAAS,CACX,CAFSzB,EAAAiD,EAAA,QAIT,IAAMC,EAAgBpD,EAAmB,CACvC,GAAGyB,EAAU,QAAQ,uBACrB,GAAGA,EAAU,QAAQ,oBACrB,GAAGA,EAAU,QAAQ,cACrB,GAAGA,EAAU,QAAQ,sBACvB,CAAC,EAED,MAAO,CAIL,aAAAJ,EAIA,UAAAI,EAIA,OAAQK,GAAyB,QAAU,CAAC,EAI5C,UAAWC,EAIX,aAAcG,EAAkB,UAIhC,cAAekB,EAMf,iBAAkBlD,EAACoC,GAAkC,CACnD,GAAIR,EAAyB,CAC3B,IAAMS,EAAeC,EACnBF,EACAR,GAAyB,MAC3B,EACA,OAAOA,GAAyB,iBAAiBS,CAAY,CAC/D,CACA,OAAO,IACT,EATkB,oBAclB,kBAAmBrC,EAACoC,GAA2C,CAC7D,GAAIN,EAAyB,CAC3B,IAAMO,EAAeC,EACnBF,EACAN,GAAyB,OACzB,CAAE,oBAAqB,EAAK,CAC9B,EACAR,EAAee,CAAqC,CACtD,CACF,EATmB,qBAenB,gBAAiBrC,EAACoC,GACTE,EAAmBF,EAAQN,EAAwB,OAAQ,CAChE,oBAAqB,EACvB,CAAC,EAHc,mBAUjB,SAAAK,EAMA,KAAAa,EAMA,KAAAC,CACF,CACF,EA1L8B","names":["createHeadlessForm","modify","useMutation","useQuery","omitBy","isNull","omit","buildInitialValues","stepsInitialValues","__name","useCreateTermination","client","useClient","useMutation","payload","postCreateOffboarding","useTerminationSchema","formValues","jsfModify","step","useQuery","schema","defaultSchema","data","jsfSchema","modify","createHeadlessForm","useTermination","employmentId","options","fieldValues","setFieldValues","stepState","previousStep","nextStep","useStepState","STEPS","terminationHeadlessForm","isLoadingTermination","entireTerminationSchema","jsonSchema","createTermination","mutateAsync","mutationToPromise","onSubmit","values","parsedValues","parseJSFToValidate","customerInformedEmployee","employeeAwareness","parsedRadioValues","parseFormRadioValues","normalizedValues","omit","terminationDetails","omitBy","isNull","back","next","initialValues"]}
@@ -0,0 +1,2 @@
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