@remoteoss/remote-flows 0.30.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/README.md +46 -8
  2. package/dist/{chunk-7TX2YY4K.js → chunk-2W2XD7ZY.js} +2 -2
  3. package/dist/chunk-2W2XD7ZY.js.map +1 -0
  4. package/dist/chunk-3ZWDIEEM.js +2 -0
  5. package/dist/chunk-3ZWDIEEM.js.map +1 -0
  6. package/dist/{chunk-WMICWLC3.js → chunk-5AG4K2EA.js} +2 -2
  7. package/dist/{chunk-DXTLNOCG.js → chunk-5CVD5WZZ.js} +2 -2
  8. package/dist/chunk-5CVD5WZZ.js.map +1 -0
  9. package/dist/{chunk-DYXTJBSK.js → chunk-5KHLOGTR.js} +2 -2
  10. package/dist/{chunk-7RFJWDXS.js → chunk-5KZXFQLZ.js} +2 -2
  11. package/dist/{chunk-LWGVLLBH.js → chunk-5OZPBBXS.js} +2 -2
  12. package/dist/chunk-5P7INAU2.js +2 -0
  13. package/dist/chunk-5P7INAU2.js.map +1 -0
  14. package/dist/{chunk-K2L2NSOM.js → chunk-5ZR7EFPY.js} +2 -2
  15. package/dist/{chunk-KVAGMBSU.js → chunk-6FWFRVQE.js} +2 -2
  16. package/dist/{chunk-LLM6MDNY.js → chunk-6VRUYYUV.js} +2 -2
  17. package/dist/{chunk-ZF4BLPXL.js → chunk-76DHIEN7.js} +2 -2
  18. package/dist/{chunk-D7WCSZGW.js → chunk-7CJX7I3M.js} +2 -2
  19. package/dist/{chunk-7OL54VKA.js → chunk-7YQAVDVX.js} +2 -2
  20. package/dist/chunk-7YQAVDVX.js.map +1 -0
  21. package/dist/chunk-A477TZFC.js +2 -0
  22. package/dist/chunk-A477TZFC.js.map +1 -0
  23. package/dist/chunk-AA7QB3QQ.js +2 -0
  24. package/dist/{chunk-2CDCTUVY.js.map → chunk-AA7QB3QQ.js.map} +1 -1
  25. package/dist/{chunk-QAOGIYQL.js → chunk-AM2IRFHQ.js} +2 -2
  26. package/dist/{chunk-HYOJP6J5.js → chunk-ANGJCT4I.js} +2 -2
  27. package/dist/{chunk-SOYN4LOZ.js → chunk-B6IVJUEH.js} +2 -2
  28. package/dist/{chunk-RYXRWMF4.js → chunk-BV3PGYSH.js} +2 -2
  29. package/dist/{chunk-KFJJXMAH.js → chunk-COBQ4WSJ.js} +2 -2
  30. package/dist/{chunk-TW7Z6G37.js → chunk-CW3MAP5L.js} +2 -2
  31. package/dist/chunk-DFJNVGK4.js +2 -0
  32. package/dist/chunk-DFJNVGK4.js.map +1 -0
  33. package/dist/{chunk-4CIYPTKM.js → chunk-DPWL4KNA.js} +2 -2
  34. package/dist/{chunk-OHAAAVNB.js → chunk-DPY77ASH.js} +2 -2
  35. package/dist/{chunk-PFKNQGOD.js → chunk-DXFA52BU.js} +2 -2
  36. package/dist/{chunk-YBB6BOW7.js → chunk-DXIO72S4.js} +2 -2
  37. package/dist/{chunk-EL5QIDYZ.js → chunk-DZ2R72O5.js} +2 -2
  38. package/dist/{chunk-67V3DFV4.js → chunk-E4CABUTS.js} +2 -2
  39. package/dist/{chunk-5NARH23N.js → chunk-EKKRQI6B.js} +2 -2
  40. package/dist/{chunk-PEHALKVU.js → chunk-EM5UYWUQ.js} +2 -2
  41. package/dist/{chunk-6GUXV7XA.js → chunk-ENW4DCDU.js} +2 -2
  42. package/dist/{chunk-JTOLQCOG.js → chunk-FRTJ4KWA.js} +2 -2
  43. package/dist/{chunk-YP7Q47E2.js → chunk-GCJCNDJ3.js} +2 -2
  44. package/dist/chunk-GKD2WI2W.js +2 -0
  45. package/dist/chunk-GKD2WI2W.js.map +1 -0
  46. package/dist/chunk-GOGPCCBS.js +2 -0
  47. package/dist/chunk-GOGPCCBS.js.map +1 -0
  48. package/dist/{chunk-7JUP5JEY.js → chunk-HBHVB56P.js} +2 -2
  49. package/dist/{chunk-FDBUFHR3.js → chunk-HO2TIG7R.js} +2 -2
  50. package/dist/{chunk-XLAKJHGV.js → chunk-HZDCZFR5.js} +2 -2
  51. package/dist/chunk-HZDCZFR5.js.map +1 -0
  52. package/dist/{chunk-HMUIT2NU.js → chunk-ID3ZF7QT.js} +2 -2
  53. package/dist/{chunk-U24UNO6X.js → chunk-IHNYOUXP.js} +2 -2
  54. package/dist/chunk-IHNYOUXP.js.map +1 -0
  55. package/dist/chunk-IUEXOXFA.js +2 -0
  56. package/dist/chunk-IUEXOXFA.js.map +1 -0
  57. package/dist/{chunk-RCWBOOZF.js → chunk-K2BWF2HC.js} +2 -2
  58. package/dist/{chunk-5ORIDYIK.js → chunk-L3D2AK3X.js} +2 -2
  59. package/dist/{chunk-ZF6MZYBK.js → chunk-LQAHRGU4.js} +2 -2
  60. package/dist/{chunk-6GQZCUUR.js → chunk-LV5R6H3D.js} +2 -2
  61. package/dist/{chunk-PEOWIEYM.js → chunk-M2CI2UDK.js} +2 -2
  62. package/dist/{chunk-UOOM7V2D.js → chunk-MZB24YJP.js} +2 -2
  63. package/dist/{chunk-GTWY3JK3.js → chunk-OIN3HGOQ.js} +2 -2
  64. package/dist/{chunk-Z47JQN3R.js → chunk-OW5QGJD4.js} +2 -2
  65. package/dist/{chunk-HBRO74FQ.js → chunk-P5WUODPR.js} +2 -2
  66. package/dist/{chunk-JK5K2S7N.js → chunk-P7JZC65P.js} +2 -2
  67. package/dist/chunk-Q2N5SOKO.js +2 -0
  68. package/dist/chunk-Q2N5SOKO.js.map +1 -0
  69. package/dist/{chunk-JBUNDNKJ.js → chunk-QWJFYQK3.js} +1 -1
  70. package/dist/{chunk-BKWNJMNJ.js → chunk-SHP4ULHS.js} +2 -2
  71. package/dist/chunk-SHP4ULHS.js.map +1 -0
  72. package/dist/{chunk-ZZWX3C6V.js → chunk-SO3YQ4WT.js} +2 -2
  73. package/dist/{chunk-WNGPZXEX.js → chunk-SPQO42TA.js} +2 -2
  74. package/dist/{chunk-RGGU6BNB.js → chunk-SRRY72CZ.js} +2 -2
  75. package/dist/chunk-THMWKOHC.js +2 -0
  76. package/dist/chunk-THMWKOHC.js.map +1 -0
  77. package/dist/{chunk-664GOQG3.js → chunk-TWVFLXVF.js} +2 -2
  78. package/dist/chunk-U4JVXNOG.js +2 -0
  79. package/dist/chunk-U4JVXNOG.js.map +1 -0
  80. package/dist/{chunk-DTZ23AE6.js → chunk-UJKTTTGB.js} +2 -2
  81. package/dist/{chunk-2N5A6EGD.js → chunk-UPXJJBXZ.js} +2 -2
  82. package/dist/{chunk-YP2JBYAK.js → chunk-WBRWVTZK.js} +2 -2
  83. package/dist/chunk-WJ6YJFD4.js +2 -0
  84. package/dist/chunk-WJ6YJFD4.js.map +1 -0
  85. package/dist/{chunk-OIIALEVF.js → chunk-WMPKW7HC.js} +2 -2
  86. package/dist/chunk-WW5UCMQZ.js +2 -0
  87. package/dist/chunk-WW5UCMQZ.js.map +1 -0
  88. package/dist/chunk-WXUIXZ7P.js +2 -0
  89. package/dist/chunk-WXUIXZ7P.js.map +1 -0
  90. package/dist/{chunk-HTJZUAVS.js → chunk-X6CD3FMG.js} +2 -2
  91. package/dist/chunk-XNOLBKZC.js +2 -0
  92. package/dist/chunk-XNOLBKZC.js.map +1 -0
  93. package/dist/{chunk-HX34JCPL.js → chunk-XPL5XOQ4.js} +2 -2
  94. package/dist/{chunk-CHDWFMD3.js → chunk-XPOLXRYT.js} +2 -2
  95. package/dist/{chunk-QRD43QJA.js → chunk-YDJVQRND.js} +2 -2
  96. package/dist/{chunk-EVSDVI2G.js → chunk-ZQ6MG635.js} +2 -2
  97. package/dist/flows/ContractAmendment/ContractAmendmentBack.js +1 -1
  98. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  99. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  100. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +4 -3
  101. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  102. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  103. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  104. package/dist/flows/ContractAmendment/ContractAmendmentSubmit.js +1 -1
  105. package/dist/flows/ContractAmendment/context.d.ts +4 -3
  106. package/dist/flows/ContractAmendment/hooks.d.ts +4 -3
  107. package/dist/flows/ContractAmendment/hooks.js +1 -1
  108. package/dist/flows/ContractAmendment/index.d.ts +4 -3
  109. package/dist/flows/ContractAmendment/index.js +1 -1
  110. package/dist/flows/ContractAmendment/types.d.ts +1 -0
  111. package/dist/flows/ContractAmendment/utils.d.ts +1 -1
  112. package/dist/flows/ContractAmendment/utils.js +1 -1
  113. package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +6 -5
  114. package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
  115. package/dist/flows/ContractorOnboarding/api.d.ts +3 -2
  116. package/dist/flows/ContractorOnboarding/api.js +1 -1
  117. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +5 -4
  118. package/dist/flows/ContractorOnboarding/components/BasicInformationStep.js +1 -1
  119. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +6 -5
  120. package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
  121. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +6 -5
  122. package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.js +1 -1
  123. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +6 -5
  124. package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.js +1 -1
  125. package/dist/flows/ContractorOnboarding/components/OnboardingBack.js +1 -1
  126. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
  127. package/dist/flows/ContractorOnboarding/components/OnboardingInvite.js +1 -1
  128. package/dist/flows/ContractorOnboarding/components/OnboardingSubmit.js +1 -1
  129. package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +6 -5
  130. package/dist/flows/ContractorOnboarding/components/PricingPlan.js +1 -1
  131. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +5 -4
  132. package/dist/flows/ContractorOnboarding/components/SelectCountryStep.js +1 -1
  133. package/dist/flows/ContractorOnboarding/context.d.ts +6 -5
  134. package/dist/flows/ContractorOnboarding/hooks.d.ts +6 -5
  135. package/dist/flows/ContractorOnboarding/hooks.js +1 -1
  136. package/dist/flows/ContractorOnboarding/index.d.ts +6 -5
  137. package/dist/flows/ContractorOnboarding/index.js +1 -1
  138. package/dist/flows/ContractorOnboarding/types.d.ts +6 -5
  139. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +4 -3
  140. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  141. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +4 -3
  142. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  143. package/dist/flows/CostCalculator/CostCalculatorResetButton.js +1 -1
  144. package/dist/flows/CostCalculator/CostCalculatorSubmitButton.js +1 -1
  145. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -1
  146. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  147. package/dist/flows/CostCalculator/Results/CostCalculatorBenefitsBreakdown.js +1 -1
  148. package/dist/flows/CostCalculator/Results/CostCalculatorContributionsBreakdown.js +1 -1
  149. package/dist/flows/CostCalculator/Results/CostCalculatorExtraStatutoryPaymentsBreakdown.js +1 -1
  150. package/dist/flows/CostCalculator/Results/CostCalculatorGrossSalary.js +1 -1
  151. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
  152. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +1 -1
  153. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -1
  154. package/dist/flows/CostCalculator/api.d.ts +2 -1
  155. package/dist/flows/CostCalculator/api.js +1 -1
  156. package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
  157. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  158. package/dist/flows/CostCalculator/context.d.ts +4 -3
  159. package/dist/flows/CostCalculator/hooks.d.ts +4 -3
  160. package/dist/flows/CostCalculator/hooks.js +1 -1
  161. package/dist/flows/CostCalculator/index.d.ts +4 -3
  162. package/dist/flows/CostCalculator/index.js +1 -1
  163. package/dist/flows/CostCalculator/types.d.ts +2 -1
  164. package/dist/flows/CostCalculator/utils.d.ts +4 -3
  165. package/dist/flows/CostCalculator/utils.js +1 -1
  166. package/dist/flows/Onboarding/OnboardingFlow.d.ts +5 -4
  167. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  168. package/dist/flows/Onboarding/api.d.ts +5 -4
  169. package/dist/flows/Onboarding/api.js +1 -1
  170. package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
  171. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  172. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +5 -4
  173. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  174. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +5 -4
  175. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  176. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +5 -4
  177. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  178. package/dist/flows/Onboarding/components/OnboardingBack.js +1 -1
  179. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +5 -4
  180. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  181. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
  182. package/dist/flows/Onboarding/components/OnboardingInvite.js +1 -1
  183. package/dist/flows/Onboarding/components/OnboardingSubmit.js +1 -1
  184. package/dist/flows/Onboarding/components/ReviewStep.d.ts +5 -4
  185. package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
  186. package/dist/flows/Onboarding/components/SaveDraftButton.js +1 -1
  187. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +5 -4
  188. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  189. package/dist/flows/Onboarding/context.d.ts +5 -4
  190. package/dist/flows/Onboarding/hooks.d.ts +5 -4
  191. package/dist/flows/Onboarding/hooks.js +1 -1
  192. package/dist/flows/Onboarding/index.d.ts +5 -4
  193. package/dist/flows/Onboarding/index.js +1 -1
  194. package/dist/flows/Onboarding/types.d.ts +5 -4
  195. package/dist/flows/Onboarding/utils.d.ts +5 -4
  196. package/dist/flows/Onboarding/utils.js +1 -1
  197. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +5 -5
  198. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  199. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +5 -5
  200. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  201. package/dist/flows/Termination/PaidTimeOffForm.d.ts +5 -5
  202. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  203. package/dist/flows/Termination/TerminationBack.js +1 -1
  204. package/dist/flows/Termination/TerminationDetailsForm.d.ts +5 -5
  205. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  206. package/dist/flows/Termination/TerminationFlow.d.ts +5 -5
  207. package/dist/flows/Termination/TerminationFlow.js +1 -1
  208. package/dist/flows/Termination/TerminationForm.d.ts +5 -5
  209. package/dist/flows/Termination/TerminationForm.js +1 -1
  210. package/dist/flows/Termination/TerminationSubmit.js +1 -1
  211. package/dist/flows/Termination/api.d.ts +106 -0
  212. package/dist/flows/Termination/api.js +2 -0
  213. package/dist/flows/Termination/components/AcknowledgeInformation/AcknowledgeInformationFees.js +1 -1
  214. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +10 -5
  215. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.js +1 -1
  216. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +10 -5
  217. package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
  218. package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +10 -5
  219. package/dist/flows/Termination/components/TerminationDialogInfoContent/TerminationDialogInfoContent.js +1 -1
  220. package/dist/flows/Termination/context.d.ts +25 -5
  221. package/dist/flows/Termination/hooks.d.ts +5 -5
  222. package/dist/flows/Termination/hooks.js +1 -1
  223. package/dist/flows/Termination/index.d.ts +8 -7
  224. package/dist/flows/Termination/index.js +1 -1
  225. package/dist/flows/Termination/json-schemas/schema.d.ts +14 -3
  226. package/dist/flows/Termination/types.d.ts +5 -5
  227. package/dist/flows/Termination/utils.d.ts +13 -6
  228. package/dist/flows/Termination/utils.js +1 -1
  229. package/dist/flows/types.d.ts +3 -1
  230. package/dist/index.d.ts +12 -17
  231. package/dist/index.js +1 -1
  232. package/dist/index.js.map +1 -1
  233. package/dist/internals.d.ts +10 -1
  234. package/dist/internals.js +1 -1
  235. package/dist/{mutations-BdkQ8BEQ.d.ts → mutations-Cdk0PM78.d.ts} +1 -1
  236. package/dist/{remoteFlows-nNmmcD-T.d.ts → remoteFlows-DUivEPPh.d.ts} +41 -7
  237. package/dist/{types-BOXcQDia.d.ts → types-BZBdCzER.d.ts} +4 -4
  238. package/dist/{types-5wwUT05a.d.ts → types-C-X7siUr.d.ts} +46 -5
  239. package/dist/{types-CNHUaKN_.d.ts → types-OcTc56P-.d.ts} +3 -74
  240. package/dist/{types-omiJJgNz.d.ts → types-pohqJTkr.d.ts} +4 -4
  241. package/dist/{types.gen-BS9UfhS-.d.ts → types.gen-D0ZCnKWv.d.ts} +18 -1
  242. package/package.json +2 -1
  243. package/dist/chunk-2CDCTUVY.js +0 -2
  244. package/dist/chunk-56LJAMZC.js +0 -2
  245. package/dist/chunk-56LJAMZC.js.map +0 -1
  246. package/dist/chunk-7OL54VKA.js.map +0 -1
  247. package/dist/chunk-7TX2YY4K.js.map +0 -1
  248. package/dist/chunk-A6GJNXUZ.js +0 -2
  249. package/dist/chunk-A6GJNXUZ.js.map +0 -1
  250. package/dist/chunk-BB3WWKGA.js +0 -2
  251. package/dist/chunk-BB3WWKGA.js.map +0 -1
  252. package/dist/chunk-BKWNJMNJ.js.map +0 -1
  253. package/dist/chunk-CFIJKJXD.js +0 -2
  254. package/dist/chunk-CFIJKJXD.js.map +0 -1
  255. package/dist/chunk-D64MAPTD.js +0 -2
  256. package/dist/chunk-D64MAPTD.js.map +0 -1
  257. package/dist/chunk-D6X2WCEG.js +0 -2
  258. package/dist/chunk-D6X2WCEG.js.map +0 -1
  259. package/dist/chunk-DXTLNOCG.js.map +0 -1
  260. package/dist/chunk-EHS4ERDW.js +0 -2
  261. package/dist/chunk-EHS4ERDW.js.map +0 -1
  262. package/dist/chunk-HJYHCWGX.js +0 -2
  263. package/dist/chunk-HJYHCWGX.js.map +0 -1
  264. package/dist/chunk-LJYCBMDS.js +0 -2
  265. package/dist/chunk-LJYCBMDS.js.map +0 -1
  266. package/dist/chunk-PAQW5BFW.js +0 -2
  267. package/dist/chunk-PAQW5BFW.js.map +0 -1
  268. package/dist/chunk-QGWCUGLN.js +0 -2
  269. package/dist/chunk-QGWCUGLN.js.map +0 -1
  270. package/dist/chunk-S4XU4SE7.js +0 -2
  271. package/dist/chunk-S4XU4SE7.js.map +0 -1
  272. package/dist/chunk-U24UNO6X.js.map +0 -1
  273. package/dist/chunk-XFJPUKYR.js +0 -2
  274. package/dist/chunk-XFJPUKYR.js.map +0 -1
  275. package/dist/chunk-XLAKJHGV.js.map +0 -1
  276. package/dist/chunk-ZX5OIIJX.js +0 -1
  277. package/dist/chunk-ZX5OIIJX.js.map +0 -1
  278. package/dist/flows/api.d.ts +0 -34
  279. package/dist/flows/api.js +0 -2
  280. /package/dist/{chunk-WMICWLC3.js.map → chunk-5AG4K2EA.js.map} +0 -0
  281. /package/dist/{chunk-DYXTJBSK.js.map → chunk-5KHLOGTR.js.map} +0 -0
  282. /package/dist/{chunk-7RFJWDXS.js.map → chunk-5KZXFQLZ.js.map} +0 -0
  283. /package/dist/{chunk-LWGVLLBH.js.map → chunk-5OZPBBXS.js.map} +0 -0
  284. /package/dist/{chunk-K2L2NSOM.js.map → chunk-5ZR7EFPY.js.map} +0 -0
  285. /package/dist/{chunk-KVAGMBSU.js.map → chunk-6FWFRVQE.js.map} +0 -0
  286. /package/dist/{chunk-LLM6MDNY.js.map → chunk-6VRUYYUV.js.map} +0 -0
  287. /package/dist/{chunk-ZF4BLPXL.js.map → chunk-76DHIEN7.js.map} +0 -0
  288. /package/dist/{chunk-D7WCSZGW.js.map → chunk-7CJX7I3M.js.map} +0 -0
  289. /package/dist/{chunk-QAOGIYQL.js.map → chunk-AM2IRFHQ.js.map} +0 -0
  290. /package/dist/{chunk-HYOJP6J5.js.map → chunk-ANGJCT4I.js.map} +0 -0
  291. /package/dist/{chunk-SOYN4LOZ.js.map → chunk-B6IVJUEH.js.map} +0 -0
  292. /package/dist/{chunk-RYXRWMF4.js.map → chunk-BV3PGYSH.js.map} +0 -0
  293. /package/dist/{chunk-KFJJXMAH.js.map → chunk-COBQ4WSJ.js.map} +0 -0
  294. /package/dist/{chunk-TW7Z6G37.js.map → chunk-CW3MAP5L.js.map} +0 -0
  295. /package/dist/{chunk-4CIYPTKM.js.map → chunk-DPWL4KNA.js.map} +0 -0
  296. /package/dist/{chunk-OHAAAVNB.js.map → chunk-DPY77ASH.js.map} +0 -0
  297. /package/dist/{chunk-PFKNQGOD.js.map → chunk-DXFA52BU.js.map} +0 -0
  298. /package/dist/{chunk-YBB6BOW7.js.map → chunk-DXIO72S4.js.map} +0 -0
  299. /package/dist/{chunk-EL5QIDYZ.js.map → chunk-DZ2R72O5.js.map} +0 -0
  300. /package/dist/{chunk-67V3DFV4.js.map → chunk-E4CABUTS.js.map} +0 -0
  301. /package/dist/{chunk-5NARH23N.js.map → chunk-EKKRQI6B.js.map} +0 -0
  302. /package/dist/{chunk-PEHALKVU.js.map → chunk-EM5UYWUQ.js.map} +0 -0
  303. /package/dist/{chunk-6GUXV7XA.js.map → chunk-ENW4DCDU.js.map} +0 -0
  304. /package/dist/{chunk-JTOLQCOG.js.map → chunk-FRTJ4KWA.js.map} +0 -0
  305. /package/dist/{chunk-YP7Q47E2.js.map → chunk-GCJCNDJ3.js.map} +0 -0
  306. /package/dist/{chunk-7JUP5JEY.js.map → chunk-HBHVB56P.js.map} +0 -0
  307. /package/dist/{chunk-FDBUFHR3.js.map → chunk-HO2TIG7R.js.map} +0 -0
  308. /package/dist/{chunk-HMUIT2NU.js.map → chunk-ID3ZF7QT.js.map} +0 -0
  309. /package/dist/{chunk-RCWBOOZF.js.map → chunk-K2BWF2HC.js.map} +0 -0
  310. /package/dist/{chunk-5ORIDYIK.js.map → chunk-L3D2AK3X.js.map} +0 -0
  311. /package/dist/{chunk-ZF6MZYBK.js.map → chunk-LQAHRGU4.js.map} +0 -0
  312. /package/dist/{chunk-6GQZCUUR.js.map → chunk-LV5R6H3D.js.map} +0 -0
  313. /package/dist/{chunk-PEOWIEYM.js.map → chunk-M2CI2UDK.js.map} +0 -0
  314. /package/dist/{chunk-UOOM7V2D.js.map → chunk-MZB24YJP.js.map} +0 -0
  315. /package/dist/{chunk-GTWY3JK3.js.map → chunk-OIN3HGOQ.js.map} +0 -0
  316. /package/dist/{chunk-Z47JQN3R.js.map → chunk-OW5QGJD4.js.map} +0 -0
  317. /package/dist/{chunk-HBRO74FQ.js.map → chunk-P5WUODPR.js.map} +0 -0
  318. /package/dist/{chunk-JK5K2S7N.js.map → chunk-P7JZC65P.js.map} +0 -0
  319. /package/dist/{chunk-JBUNDNKJ.js.map → chunk-QWJFYQK3.js.map} +0 -0
  320. /package/dist/{chunk-ZZWX3C6V.js.map → chunk-SO3YQ4WT.js.map} +0 -0
  321. /package/dist/{chunk-WNGPZXEX.js.map → chunk-SPQO42TA.js.map} +0 -0
  322. /package/dist/{chunk-RGGU6BNB.js.map → chunk-SRRY72CZ.js.map} +0 -0
  323. /package/dist/{chunk-664GOQG3.js.map → chunk-TWVFLXVF.js.map} +0 -0
  324. /package/dist/{chunk-DTZ23AE6.js.map → chunk-UJKTTTGB.js.map} +0 -0
  325. /package/dist/{chunk-2N5A6EGD.js.map → chunk-UPXJJBXZ.js.map} +0 -0
  326. /package/dist/{chunk-YP2JBYAK.js.map → chunk-WBRWVTZK.js.map} +0 -0
  327. /package/dist/{chunk-OIIALEVF.js.map → chunk-WMPKW7HC.js.map} +0 -0
  328. /package/dist/{chunk-HTJZUAVS.js.map → chunk-X6CD3FMG.js.map} +0 -0
  329. /package/dist/{chunk-HX34JCPL.js.map → chunk-XPL5XOQ4.js.map} +0 -0
  330. /package/dist/{chunk-CHDWFMD3.js.map → chunk-XPOLXRYT.js.map} +0 -0
  331. /package/dist/{chunk-QRD43QJA.js.map → chunk-YDJVQRND.js.map} +0 -0
  332. /package/dist/{chunk-EVSDVI2G.js.map → chunk-ZQ6MG635.js.map} +0 -0
  333. /package/dist/flows/{api.js.map → Termination/api.js.map} +0 -0
@@ -1,13 +1,8 @@
1
- import { E as Employment, R as ListTimeoffResponse, T as TimeoffStatus, W as TimeoffType, X as ListLeavePoliciesSummaryResponse, Y as MagicLinkResponse, Z as UnprocessableEntityResponse, _ as MagicLinkParams } from './types.gen-BS9UfhS-.js';
1
+ import { E as Employment, Q as ListTimeoffResponse, R as TimeoffStatus, W as TimeoffType, X as ListLeavePoliciesSummaryResponse, Y as MagicLinkResponse, Z as UnprocessableEntityResponse, _ as MagicLinkParams } from './types.gen-D0ZCnKWv.js';
2
2
  import * as _tanstack_react_query from '@tanstack/react-query';
3
3
  import { UseQueryResult } from '@tanstack/react-query';
4
4
  import { ContractAmendmentParams } from './flows/ContractAmendment/types.js';
5
- import { E as Employment$1 } from './types-BOXcQDia.js';
6
-
7
- type DaysAndHours = {
8
- hours: number;
9
- days: number;
10
- };
5
+ import { BookedTimeoffBeforeDateResponse, SummaryTimeOffDataResponse } from './flows/Termination/api.js';
11
6
 
12
7
  type UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;
13
8
  /**
@@ -62,67 +57,6 @@ declare const usePaidTimeoffBreakdownQuery: ({ employmentId, options, }: {
62
57
  enabled?: boolean;
63
58
  };
64
59
  }) => _tanstack_react_query.UseQueryResult<PaidTimeoffBreakdownResponse, Error>;
65
- type BookedTimeoffBeforeDateResponse = {
66
- bookedDaysBeforeTermination: DaysAndHours;
67
- bookedDaysAfterTermination: DaysAndHours;
68
- };
69
- /**
70
- * Hook to retrieve booked time off data before and after a specific date for a specific employment.
71
- *
72
- * @param {Object} params - The parameters for the query.
73
- * @param {string} [params.employmentId] - The ID of the employment to fetch booked time off data for.
74
- * @param {string} [params.date] - The date to fetch booked time off data for.
75
- * @returns {BookedTimeoffBeforeDateResponse} - The booked time off data before and after the specific date.
76
- *
77
- * This hook accounts for partial days and multiple timeoff_days per request.
78
- */
79
- declare const useBookedTimeoffBeforeAndAfterTerminationQuery: ({ employmentId, date, options, }: {
80
- employmentId: string;
81
- date: string;
82
- options?: {
83
- enabled: boolean;
84
- };
85
- }) => _tanstack_react_query.UseQueryResult<BookedTimeoffBeforeDateResponse, Error>;
86
- type SummaryTimeOffDataResponse = {
87
- entitledDays: string;
88
- bookedDays: string;
89
- usedDays: string;
90
- currentEntitlementDays: string;
91
- approvedDaysBeforeTermination: string;
92
- approvedDaysAfterTermination: string;
93
- remainingDays: string;
94
- isUnlimitedPto: boolean;
95
- };
96
- /**
97
- * Hook to retrieve summary time off data for a specific employment.
98
- *
99
- * @param {Object} params - The parameters for the query.
100
- * @param {string} [params.employmentId] - The ID of the employment to fetch summary time off data for.
101
- * @param {string} [params.proposedTerminationDate] - The proposed termination date to fetch summary time off data for.
102
- * @returns {SummaryTimeOffDataResponse} - The summary time off data.
103
- *
104
- * This hook doesn't take into account unlimited time off or half days yet.
105
- *
106
- */
107
- declare const useSummaryTimeOffDataQuery: ({ employmentId, proposedTerminationDate, employment, }: {
108
- employmentId: string;
109
- proposedTerminationDate: string;
110
- employment?: Employment$1;
111
- }) => {
112
- data: {
113
- isUnlimitedPto: boolean;
114
- entitledDays: string;
115
- bookedDays: string;
116
- usedDays: string;
117
- currentEntitlementDays: string;
118
- approvedDaysBeforeTermination: string;
119
- approvedDaysAfterTermination: string;
120
- remainingDays: string;
121
- };
122
- isLoading: boolean;
123
- isError: boolean;
124
- error: Error | null;
125
- };
126
60
  /**
127
61
  * Hook to retrieve time off balance for a specific employment.
128
62
  *
@@ -134,11 +68,6 @@ declare const useSummaryTimeOffDataQuery: ({ employmentId, proposedTerminationDa
134
68
  declare const useTimeOffLeavePoliciesSummaryQuery: ({ employmentId, }: {
135
69
  employmentId?: string;
136
70
  }) => _tanstack_react_query.UseQueryResult<ListLeavePoliciesSummaryResponse | undefined, Error>;
137
- /**
138
- * Hook to generate a magic link for a specific employment.
139
- * @param {MagicLinkParams} params - The parameters for the magic link.
140
- * @returns {UseQueryResult<any, unknown>} - The result of the query, including the magic link.
141
- */
142
71
  declare const useMagicLink: () => _tanstack_react_query.UseMutationResult<({
143
72
  data: MagicLinkResponse;
144
73
  error: undefined;
@@ -210,4 +139,4 @@ type PaidTimeOffContainerProps = {
210
139
  render: (props: PaidTimeOffRenderProps) => React.ReactNode;
211
140
  };
212
141
 
213
- export { type BookedTimeoffBeforeDateResponse as B, type PaidTimeOffRenderProps as P, type SummaryTimeOffDataResponse as S, type PaidTimeOffContainerProps as a, useTimeOffQuery as b, type PaidTimeoffBreakdownResponse as c, usePaidTimeoffBreakdownQuery as d, useBookedTimeoffBeforeAndAfterTerminationQuery as e, useSummaryTimeOffDataQuery as f, useTimeOffLeavePoliciesSummaryQuery as g, useMagicLink as h, useEmploymentQuery as u };
142
+ export { type PaidTimeOffRenderProps as P, type PaidTimeOffContainerProps as a, useTimeOffQuery as b, type PaidTimeoffBreakdownResponse as c, usePaidTimeoffBreakdownQuery as d, useTimeOffLeavePoliciesSummaryQuery as e, useMagicLink as f, useEmploymentQuery as u };
@@ -1,18 +1,18 @@
1
- import { E as Employment, F as File, i as CreateContractDocumentResponse, f as SignContractDocument, S as SuccessResponse } from './types.gen-BS9UfhS-.js';
1
+ import { E as Employment, F as File, g as CreateContractDocumentResponse, d as SignContractDocument, S as SuccessResponse } from './types.gen-D0ZCnKWv.js';
2
2
  import { OnboardingBack } from './flows/ContractorOnboarding/components/OnboardingBack.js';
3
3
  import { OnboardingSubmit } from './flows/ContractorOnboarding/components/OnboardingSubmit.js';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
- import { N as NormalizedFieldError } from './mutations-BdkQ8BEQ.js';
5
+ import { N as NormalizedFieldError } from './mutations-Cdk0PM78.js';
6
6
  import * as _tanstack_query_core from '@tanstack/query-core';
7
7
  import * as _remoteoss_json_schema_form from '@remoteoss/json-schema-form';
8
8
  import { Fields } from '@remoteoss/json-schema-form';
9
9
  import * as React$1 from 'react';
10
10
  import { STEPS } from './flows/ContractorOnboarding/utils.js';
11
11
  import { Step } from './flows/useStepState.js';
12
- import { M as Meta, J as JSFFieldset, $ as $TSFixMe } from './remoteFlows-nNmmcD-T.js';
12
+ import { M as Meta, J as JSFFieldset, $ as $TSFixMe } from './remoteFlows-DUivEPPh.js';
13
13
  import { FieldValues } from 'react-hook-form';
14
14
  import { BasicInformationStep } from './flows/ContractorOnboarding/components/BasicInformationStep.js';
15
- import { g as SelectCountryStep } from './types-BOXcQDia.js';
15
+ import { g as SelectCountryStep } from './types-BZBdCzER.js';
16
16
  import { FlowOptions, JSFModify } from './flows/types.js';
17
17
  import { OnboardingInvite } from './flows/Onboarding/components/OnboardingInvite.js';
18
18
 
@@ -69,6 +69,10 @@ type ConvertCurrency = {
69
69
  target_currency: CurrencyDefinition;
70
70
  };
71
71
  type ResignationOrTerminationOffboarding = ResignationOffboarding | TerminationOffboarding;
72
+ /**
73
+ * The frequency at which the payroll calendar is run.
74
+ */
75
+ type CycleFrequency = 'monthly' | 'bi_monthly' | 'bi_weekly' | 'weekly';
72
76
  type MinimalCountry = {
73
77
  alpha_2_code: string;
74
78
  code: string;
@@ -504,6 +508,12 @@ type Currency = {
504
508
  slug: string;
505
509
  symbol: string;
506
510
  };
511
+ type PayrollCalendarEor = {
512
+ country: Country;
513
+ cycle_frequency: CycleFrequency;
514
+ cycles: Array<Cycle>;
515
+ id: string;
516
+ };
507
517
  /**
508
518
  * The date the employee first started working for your company. If you don’t include a seniority date,
509
519
  * the employee’s start date with Remote will be deemed as the start of the employee’s seniority.
@@ -1205,6 +1215,13 @@ type TerminationDetailsParams = {
1205
1215
  * UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
1206
1216
  */
1207
1217
  type _Date = string;
1218
+ type Cycle = {
1219
+ employee_inclusion_cutoff_date?: string;
1220
+ end_date?: string;
1221
+ input_cutoff_date?: string;
1222
+ payment_date?: string;
1223
+ start_date?: string;
1224
+ };
1208
1225
  type ParameterError = {
1209
1226
  /**
1210
1227
  * An error code that describes the nature of the error.
@@ -1622,4 +1639,4 @@ type PostManageContractorPlusSubscriptionSubscriptionErrors = {
1622
1639
  };
1623
1640
  type PostManageContractorPlusSubscriptionSubscriptionError = PostManageContractorPlusSubscriptionSubscriptionErrors[keyof PostManageContractorPlusSubscriptionSubscriptionErrors];
1624
1641
 
1625
- export type { Currency as $, PostCreateEmployment2Error as A, EmploymentCreateParams as B, CreateOffboardingParams as C, EmploymentResponse as D, Employment as E, File as F, PatchUpdateEmployment2Error as G, EmploymentFullParams as H, PutUpdateBenefitOfferError as I, ConvertCurrencyResponse as J, PostConvertRawCurrencyConverterError as K, ConvertCurrencyParams as L, ManageContractorPlusSubscriptionOperationsParams as M, PostCreateContractEligibilityError as N, OffboardingResponse as O, PostCreateOffboardingError as P, CreateContractEligibilityParams as Q, ListTimeoffResponse as R, SuccessResponse as S, TimeoffStatus as T, UnifiedEmploymentUpsertBenefitOffersRequest as U, ValidationError as V, TimeoffType as W, ListLeavePoliciesSummaryResponse as X, MagicLinkResponse as Y, UnprocessableEntityResponse as Z, MagicLinkParams as _, ContractAmendmentAutomatableResponse as a, HelpCenterArticle as a0, TerminationDetailsParams as a1, PostAutomatableContractAmendmentError as b, ContractAmendmentResponse as c, PostCreateContractAmendmentError as d, PostSignContractDocumentError as e, SignContractDocument as f, ContractorSubscriptionsSummary as g, PostManageContractorPlusSubscriptionSubscriptionError as h, CreateContractDocumentResponse as i, PostCreateContractDocumentError as j, CreateContractDocument as k, CostCalculatorEstimateResponse as l, PostCreateEstimationError as m, CostCalculatorEstimatePdfResponse as n, PostCreateEstimationPdfError as o, CostCalculatorEstimateParams as p, CostCalculatorEstimateCsvResponse as q, PostCreateEstimationCsvError as r, MinimalRegion as s, MinimalCountry as t, EmploymentTermType as u, CostCalculatorEmployment as v, EmploymentCreationResponse as w, Company as x, PostInviteEmploymentInvitationError as y, PostCreateRiskReserveError as z };
1642
+ export type { CreateOffboardingParams as $, EmploymentResponse as A, PatchUpdateEmployment2Error as B, ContractAmendmentAutomatableResponse as C, EmploymentFullParams as D, Employment as E, File as F, PutUpdateBenefitOfferError as G, ConvertCurrencyResponse as H, PostConvertRawCurrencyConverterError as I, ConvertCurrencyParams as J, PostCreateContractEligibilityError as K, CreateContractEligibilityParams as L, ManageContractorPlusSubscriptionOperationsParams as M, PostCreateOffboardingError as N, OffboardingResponse as O, PostAutomatableContractAmendmentError as P, ListTimeoffResponse as Q, TimeoffStatus as R, SuccessResponse as S, TerminationDetailsParams as T, UnifiedEmploymentUpsertBenefitOffersRequest as U, ValidationError as V, TimeoffType as W, ListLeavePoliciesSummaryResponse as X, MagicLinkResponse as Y, UnprocessableEntityResponse as Z, MagicLinkParams as _, ContractAmendmentResponse as a, Currency as a0, PayrollCalendarEor as a1, HelpCenterArticle as a2, PostCreateContractAmendmentError as b, PostSignContractDocumentError as c, SignContractDocument as d, ContractorSubscriptionsSummary as e, PostManageContractorPlusSubscriptionSubscriptionError as f, CreateContractDocumentResponse as g, PostCreateContractDocumentError as h, CreateContractDocument as i, CostCalculatorEstimateResponse as j, PostCreateEstimationError as k, CostCalculatorEstimatePdfResponse as l, PostCreateEstimationPdfError as m, CostCalculatorEstimateParams as n, CostCalculatorEstimateCsvResponse as o, PostCreateEstimationCsvError as p, MinimalRegion as q, MinimalCountry as r, EmploymentTermType as s, CostCalculatorEmployment as t, EmploymentCreationResponse as u, Company as v, PostInviteEmploymentInvitationError as w, PostCreateRiskReserveError as x, PostCreateEmployment2Error as y, EmploymentCreateParams as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remoteoss/remote-flows",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
4
4
  "scripts": {
5
5
  "build": "NODE_ENV=production tsup",
6
6
  "ci": "npm run build && npm run check-format && npm run check-exports && npm run lint && npm run type-check && npm run test",
@@ -76,6 +76,7 @@
76
76
  "@radix-ui/react-tabs": "^1.1.3",
77
77
  "@radix-ui/react-tooltip": "^1.1.8",
78
78
  "@remoteoss/json-schema-form": "0.11.10-beta.0",
79
+ "@remoteoss/json-schema-form-next": "npm:@remoteoss/json-schema-form@1.2.7",
79
80
  "@tailwindcss/cli": "^4.0.9",
80
81
  "@tailwindcss/postcss": "^4.0.9",
81
82
  "@tanstack/react-query": "^5.67.2",
@@ -1,2 +0,0 @@
1
- import{a as t}from"./chunk-P37U34EQ.js";import{formDataBodySerializer as i}from"@hey-api/client-fetch";import{createClient as o,createConfig as n}from"@hey-api/client-fetch";var r=o(n({baseUrl:"https://gateway.remote.com/"}));var l=t(e=>(e?.client??r).post({security:[{scheme:"bearer",type:"http"}],url:"/v1/offboardings",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateOffboarding");var h=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contract-amendments/schema",...e}),"getShowContractAmendmentSchema");var m=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/currency-converter/raw",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postConvertRawCurrencyConverter"),d=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/countries/{country_code}/contractor-contract-details",...e}),"getShowContractorContractDetailsCountry");var y=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"}],url:"/v1/employments",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateEmployment2"),u=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/help-center-articles/{id}",...e}),"getShowHelpCenterArticle");var E=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/cost-calculator/estimation",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateEstimation");var C=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}/benefit-offers",...e}),"getIndexBenefitOffer"),w=t(e=>(e.client??r).put({security:[{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}/benefit-offers",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"putUpdateBenefitOffer");var T=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contractors/employments/{employment_id}/contractor-subscriptions",...e}),"getIndexSubscription");var O=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contractors/employments/{employment_id}/contract-documents/{id}",...e}),"getShowContractDocument");var x=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"}],url:"/v1/magic-link",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postGenerateMagicLink");var b=t(e=>(e?.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/cost-calculator/estimation-pdf",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateEstimationPdf");var f=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/risk-reserve",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateRiskReserve");var P=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"}],url:"/v1/companies/{company_id}",...e}),"getShowCompany");var R=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contract-amendments",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateContractAmendment");var D=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/countries/{country_code}/{form}",...e}),"getShowFormCountry");var G=t(e=>(e?.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/cost-calculator/countries",...e}),"getIndexCountry");var v=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/leave-policies/summary/{employment_id}",...e}),"getIndexLeavePoliciesSummary");var g=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}/benefit-offers/schema",...e}),"getShowSchema");var I=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}",...e}),"getShowEmployment"),S=t(e=>(e.client??r).patch({security:[{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"patchUpdateEmployment2");var k=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"}],url:"/v1/cost-calculator/regions/{slug}/fields",...e}),"getShowRegionField");var U=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}/contract-eligibility",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateContractEligibility"),B=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"}],url:"/v1/countries",...e}),"getSupportedCountry");var q=t(e=>(e?.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/cost-calculator/estimation-csv",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateEstimationCsv"),A=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contractors/employments/{employment_id}/contract-documents",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postCreateContractDocument");var _=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/currency-converter/effective",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postConvertWithSpreadCurrencyConverter");var W=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contract-amendments/automatable",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postAutomatableContractAmendment");var F=t(e=>(e?.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/company-currencies",...e}),"getIndexCompanyCurrency");var j=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/employments/{employment_id}/invite",...e}),"postInviteEmploymentInvitation");var L=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contractors/employments/{employment_id}/contract-documents/{contract_document_id}/sign",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postSignContractDocument");var V=t(e=>(e.client??r).post({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/contractors/employments/{employment_id}/contractor-plus-subscription",...e,headers:{"Content-Type":"application/json",...e?.headers}}),"postManageContractorPlusSubscriptionSubscription"),M=t(e=>(e.client??r).get({security:[{scheme:"bearer",type:"http"},{scheme:"bearer",type:"http"}],url:"/v1/timeoff",...e}),"getIndexTimeoff");export{r as a,l as b,h as c,m as d,d as e,y as f,u as g,E as h,C as i,w as j,T as k,O as l,x as m,b as n,f as o,P as p,R as q,D as r,G as s,v as t,g as u,I as v,S as w,k as x,U as y,B as z,q as A,A as B,_ as C,W as D,F as E,j as F,L as G,V as H,M as I};
2
- //# sourceMappingURL=chunk-2CDCTUVY.js.map
@@ -1,2 +0,0 @@
1
- import{a as s}from"./chunk-OKM7DRCF.js";import{a as n}from"./chunk-XFD3ULUF.js";import{b as i}from"./chunk-2CDCTUVY.js";import{d as a}from"./chunk-XFJPUKYR.js";import{a as r}from"./chunk-P37U34EQ.js";import{modify as c}from"@remoteoss/json-schema-form";import{useMutation as l,useQuery as p}from"@tanstack/react-query";import{createHeadlessForm as y}from"@remoteoss/json-schema-form";var V=r(()=>{let{client:o}=a();return l({mutationFn:r(e=>i({client:o,body:e}),"mutationFn")})},"useCreateTermination"),M=r(({formValues:o,jsfModify:e,step:m})=>p({queryKey:["rmt-flows-termination-schema",m],queryFn:r(()=>s[m]??n,"queryFn"),select:r(({data:f})=>{let t=f?.schema||{};if(e){let{schema:u}=c(t,e);t=u}return y(t||{},{initialValues:o||{}})},"select")}),"useTerminationSchema");export{V as a,M as b};
2
- //# sourceMappingURL=chunk-56LJAMZC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/api.ts"],"sourcesContent":["import { postCreateOffboarding } from '@/src/client/sdk.gen';\nimport { CreateOffboardingParams } from '@/src/client/types.gen';\nimport { useClient } from '@/src/context';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { JSFModify } from '@/src/flows/types';\nimport { Client } from '@hey-api/client-fetch';\nimport { modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { createHeadlessForm } from '@remoteoss/json-schema-form';\nimport { defaultSchema } from '@/src/flows/Termination/json-schemas/defaultSchema';\nimport { schema } from '@/src/flows/Termination/json-schemas/schema';\n\nexport const useCreateTermination = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateOffboardingParams) => {\n return postCreateOffboarding({\n client: client as Client,\n body: payload,\n });\n },\n });\n};\n\nexport const 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"],"mappings":"wMAMA,OAAS,UAAAA,MAAc,8BACvB,OAAS,eAAAC,EAAa,YAAAC,MAAgB,wBACtC,OAAS,sBAAAC,MAA0B,8BAI5B,IAAMC,EAAuBC,EAAA,IAAM,CACxC,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAY,CACjB,WAAYH,EAACI,GACJC,EAAsB,CAC3B,OAAQJ,EACR,KAAMG,CACR,CAAC,EAJS,aAMd,CAAC,CACH,EAVoC,wBAYvBE,EAAuBN,EAAA,CAAC,CACnC,WAAAO,EACA,UAAAC,EACA,KAAAC,CACF,IAKSC,EAAS,CACd,SAAU,CAAC,+BAAgCD,CAAI,EAC/C,QAAST,EAAA,IACAW,EAAOF,CAA2B,GAAKG,EADvC,WAGT,OAAQZ,EAAA,CAAC,CAAE,KAAAa,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,EAzBiC","names":["modify","useMutation","useQuery","createHeadlessForm","useCreateTermination","__name","client","useClient","useMutation","payload","postCreateOffboarding","useTerminationSchema","formValues","jsfModify","step","useQuery","schema","defaultSchema","data","jsfSchema","modify","createHeadlessForm"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/CostCalculator/utils.ts","../src/flows/CostCalculator/hooks.tsx"],"sourcesContent":["import type {\n CostCalculatorEmploymentParam,\n CostCalculatorEstimateParams,\n} from '@/src/client';\n\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport { AnyObjectSchema, number, object } from 'yup';\nimport { CostCalculatorVersion, defaultEstimationOptions } from './hooks';\nimport type {\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n CurrencyKey,\n} from './types';\nimport { BASE_RATES } from '@/src/flows/CostCalculator/constants';\n\n/**\n * Build the validation schema for the form.\n * @returns\n */\nexport function buildValidationSchema(\n fields: $TSFixMe[],\n employerBillingCurrency: string,\n includeEstimationTitle?: boolean,\n) {\n const fieldsSchema = fields.reduce<Record<string, AnyObjectSchema>>(\n (fieldsSchemaAcc, field) => {\n // Special handling for salary fields\n if (field.name === 'salary' || field.name === 'salary_conversion') {\n fieldsSchemaAcc[field.name] = (field.schema as AnyObjectSchema).when(\n 'salary_converted',\n {\n is: (val: string | null) => val === field.name,\n then: (schema) => schema.required('Required field'),\n otherwise: (schema) => schema.optional(),\n },\n );\n } else if (field.name === 'management') {\n fieldsSchemaAcc[field.name] = object({\n management_fee: number()\n .transform((value) => {\n return isNaN(value) ? undefined : value;\n })\n .min(0, 'Management fee must be greater than or equal to 0')\n .max(\n employerBillingCurrency\n ? BASE_RATES[employerBillingCurrency as CurrencyKey]\n : BASE_RATES.USD,\n () => {\n const maxValue = employerBillingCurrency\n ? BASE_RATES[employerBillingCurrency as CurrencyKey]\n : BASE_RATES.USD;\n const displayValue = maxValue / 100;\n return `Management fee cannot exceed ${displayValue} ${employerBillingCurrency}`;\n },\n ),\n });\n } else if (field.name === 'estimation_title' && includeEstimationTitle) {\n // Make estimation_title required when includeEstimationTitle is true\n fieldsSchemaAcc[field.name] = (\n field.schema as AnyObjectSchema\n ).required('Required field');\n } else {\n fieldsSchemaAcc[field.name] = field.schema as AnyObjectSchema;\n }\n return fieldsSchemaAcc;\n },\n {},\n );\n return object(fieldsSchema) as AnyObjectSchema;\n}\n\n/**\n * Format the benefits to the expected format by the API.\n * @param benefits\n * @returns\n */\nfunction formatBenefits(benefits: Record<string, string>) {\n const needle = 'benefit-';\n return Object.keys(benefits).reduce<\n Array<{ benefit_group_slug: string; benefit_tier_slug: string }>\n >((acc, key) => {\n const benefitTierSlug = benefits[key];\n if (benefitTierSlug === 'none') {\n return acc;\n }\n const benefitGroupSlug = key.replace(needle, '');\n const benefitEntry = {\n benefit_group_slug: benefitGroupSlug,\n benefit_tier_slug: benefitTierSlug,\n };\n return [...acc, benefitEntry];\n }, []);\n}\n\nfunction mapValueToEmployment(\n value: CostCalculatorEstimationSubmitValues,\n estimationOptions: CostCalculatorEstimationOptions,\n version: CostCalculatorVersion,\n): CostCalculatorEmploymentParam {\n const managementFee = Number(value.management?.management_fee);\n const currencyCode = value.currency_code;\n\n const base: CostCalculatorEmploymentParam = {\n region_slug: value.region || value.country,\n employment_term: value.contract_duration_type ?? 'fixed',\n title: value.estimation_title || estimationOptions.title,\n age: value.age ?? undefined,\n ...(value.benefits && { benefits: formatBenefits(value.benefits) }),\n ...(estimationOptions.includeManagementFee &&\n managementFee && {\n discount: {\n quoted_amount: estimationOptions.showManagementFee\n ? managementFee\n : BASE_RATES[currencyCode as keyof typeof BASE_RATES] ||\n BASE_RATES.USD,\n text: '',\n },\n }),\n };\n\n return {\n ...base,\n ...getSalaryFields(value, version),\n };\n}\n\nfunction getSalaryFields(\n value: CostCalculatorEstimationSubmitValues,\n version: CostCalculatorVersion,\n): Partial<CostCalculatorEmploymentParam> {\n const isMarketing =\n version === 'marketing' || value.salary_converted === 'salary_conversion';\n const isStandard =\n version === 'standard' && value.salary_converted === 'salary';\n const useHiringBudget = value.hiring_budget === 'my_hiring_budget';\n\n if (isMarketing) {\n const useEmployerCurrency = value.salary_converted === 'salary_conversion';\n return useHiringBudget\n ? {\n annual_total_cost_in_employer_currency: value.salary,\n }\n : {\n [useEmployerCurrency\n ? 'annual_gross_salary_in_employer_currency'\n : 'annual_gross_salary']: value.salary,\n };\n }\n\n if (isStandard) {\n return useHiringBudget\n ? {\n annual_total_cost: value.salary,\n }\n : {\n annual_gross_salary: value.salary,\n };\n }\n\n return {};\n}\n\n/**\n * Build the payload for the cost calculator estimation.\n * @param values\n * @param estimationOptions\n * @returns\n */\nexport function buildPayload(\n values:\n | CostCalculatorEstimationSubmitValues\n | CostCalculatorEstimationSubmitValues[],\n estimationOptions: CostCalculatorEstimationOptions = defaultEstimationOptions,\n version: CostCalculatorVersion = 'standard',\n): CostCalculatorEstimateParams {\n const employments = Array.isArray(values) ? values : [values];\n\n if (employments.length === 0) {\n throw new Error('At least one employment value is required');\n }\n\n if (employments.length > 1) {\n const currencies = new Set(employments.map((v) => v.currency));\n if (currencies.size > 1) {\n console.warn(\n 'Multiple currencies detected in array. Using currency from first employment.',\n );\n }\n }\n\n return {\n employer_currency_slug: employments[0].currency,\n include_benefits: estimationOptions.includeBenefits,\n include_cost_breakdowns: estimationOptions.includeCostBreakdowns,\n include_premium_benefits: estimationOptions.includePremiumBenefits,\n include_management_fee: estimationOptions.includeManagementFee,\n employments: employments.map((value) =>\n mapValueToEmployment(value, estimationOptions, version),\n ),\n };\n}\n","import { MinimalRegion } from '@/src/client';\nimport { jsonSchema } from '@/src/flows/CostCalculator/jsonSchema';\nimport type {\n CostCalculatorEstimationFormValues,\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport type { JSFModify } from '@/src/flows/types';\n\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { iterateErrors } from '@/src/components/form/yupValidationResolver';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { string, ValidationError } from 'yup';\nimport { buildPayload, buildValidationSchema } from './utils';\nimport {\n useCompanyCurrencies,\n useCostCalculatorCountries,\n useCostCalculatorEstimation,\n useRegionFields,\n} from '@/src/flows/CostCalculator/api';\nimport { $TSFixMe, JSFField, Meta } from '@/src/types/remoteFlows';\nimport { SalaryField } from '@/src/flows/CostCalculator/components/SalaryField';\nimport {\n FieldSetField,\n FieldSetProps,\n} from '@/src/components/form/fields/FieldSetField';\nimport { mutationToPromise } from '@/src/lib/mutations';\nexport type CostCalculatorVersion = 'standard' | 'marketing';\n\ntype CostCalculatorCountry = {\n value: string;\n label: string;\n childRegions: MinimalRegion[];\n hasAdditionalFields: boolean | undefined;\n regionSlug: string;\n currency: string;\n};\n\ntype JSFValidationError = {\n formErrors: Record<\n string,\n {\n type: string;\n message: string;\n }\n >;\n yupError: ValidationError;\n};\n\nexport const defaultEstimationOptions: CostCalculatorEstimationOptions = {\n title: 'Estimation',\n includeBenefits: false,\n includeCostBreakdowns: false,\n includePremiumBenefits: false,\n enableCurrencyConversion: false,\n includeEstimationTitle: false,\n includeManagementFee: false,\n};\n\ntype UseCostCalculatorParams = {\n /**\n * The default region slug to preselect a country and a region.\n */\n defaultRegion?: string;\n /**\n * The default currency slug to preselect a currency.\n */\n defaultCurrency?: string;\n\n /**\n * The default salary to preselect a salary.\n */\n defaultSalary?: string;\n /**\n * The estimation options.\n */\n estimationOptions: CostCalculatorEstimationOptions;\n options?: UseCostCalculatorOptions;\n version?: CostCalculatorVersion;\n};\n\nconst useStaticSchema = (options?: { jsfModify?: JSFModify }) => {\n const { schema: jsonSchemaModified } = modify(\n jsonSchema.data.schema,\n options?.jsfModify || {},\n );\n\n return createHeadlessForm(jsonSchemaModified);\n};\n\ntype HiringBudget = 'my_hiring_budget' | 'employee_annual_salary';\n\nfunction getSalaryTitle(\n salaryField: unknown,\n hiringBudget?: HiringBudget,\n): string {\n if (\n typeof salaryField === 'object' &&\n salaryField !== null &&\n 'title' in salaryField\n ) {\n const title = (salaryField as { title?: string }).title;\n if (title) return title;\n }\n return hiringBudget === 'my_hiring_budget'\n ? 'Hiring budget'\n : \"Employee's annual salary\";\n}\n\n/**\n * Hook to use the cost calculator.\n */\nexport const useCostCalculator = (\n {\n defaultRegion,\n defaultCurrency,\n defaultSalary,\n estimationOptions,\n options,\n version,\n }: UseCostCalculatorParams = {\n estimationOptions: defaultEstimationOptions,\n },\n) => {\n const fieldsMetaRef = useRef<{\n fields: Meta;\n }>({\n fields: {},\n });\n const [selectedRegion, setSelectedRegion] = useState<string | undefined>(\n defaultRegion,\n );\n const [selectedCountry, setSelectedCountry] =\n useState<CostCalculatorCountry>();\n const [employerBillingCurrency, setEmployerBillingCurrency] = useState<\n string | undefined\n >();\n const [hiringBudget, setHiringBudget] = useState<HiringBudget>();\n const { data: countries, isLoading: isLoadingCountries } =\n useCostCalculatorCountries({\n includePremiumBenefits: estimationOptions.includePremiumBenefits,\n });\n const { data: currencies, isLoading: isLoadingCurrencies } =\n useCompanyCurrencies();\n\n const jsonSchemaRegionSlug = selectedRegion || selectedCountry?.value;\n\n const { data: jsonSchemaRegionFields, isLoading: isLoadingRegionFields } =\n useRegionFields(jsonSchemaRegionSlug, {\n includePremiumBenefits: estimationOptions.includePremiumBenefits,\n options,\n });\n const costCalculatorEstimationMutation = useCostCalculatorEstimation();\n const { mutateAsync: costCalculatorEstimationMutationAsync } =\n mutationToPromise(costCalculatorEstimationMutation);\n const employeeBillingCurrency = selectedCountry?.currency;\n\n const salaryField = options?.jsfModify?.fields?.salary;\n const salaryFieldPresentation =\n salaryField &&\n typeof salaryField === 'object' &&\n 'presentation' in salaryField\n ? (\n salaryField as {\n presentation?: {\n salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n };\n }\n ).presentation\n : undefined;\n\n const getCurrencies = useCallback(() => {\n const shouldSwapOrder =\n employeeBillingCurrency && employerBillingCurrency\n ? employeeBillingCurrency !== employerBillingCurrency\n : false;\n\n if (employeeBillingCurrency !== employerBillingCurrency) {\n return {\n from: employerBillingCurrency,\n to: employeeBillingCurrency,\n shouldSwapOrder,\n };\n }\n\n return {\n from: employeeBillingCurrency,\n to: employerBillingCurrency,\n shouldSwapOrder,\n };\n }, [employeeBillingCurrency, employerBillingCurrency]);\n\n const showManagementField = estimationOptions.showManagementFee;\n const showEstimationTitleField = estimationOptions.includeEstimationTitle;\n const customFields = useMemo(() => {\n const { from, to, shouldSwapOrder } = getCurrencies();\n const salaryTitle = getSalaryTitle(salaryField, hiringBudget);\n\n return {\n fields: {\n salary: {\n ...salaryField,\n title: salaryTitle,\n presentation: {\n salary_conversion_properties: {\n label:\n salaryFieldPresentation?.salary_conversion_properties?.label,\n description:\n salaryFieldPresentation?.salary_conversion_properties\n ?.description,\n },\n currencies: { from, to },\n Component: (\n props: JSFField & { currencies: { from: string; to: string } },\n ) => {\n return (\n <SalaryField\n {...props}\n shouldSwapOrder={shouldSwapOrder}\n conversionType={\n version === 'marketing' ? 'no_spread' : 'spread'\n }\n defaultValue={defaultSalary}\n />\n );\n },\n },\n },\n hiring_budget: {\n ...options?.jsfModify?.fields?.hiring_budget,\n presentation: {\n hidden: version == 'marketing',\n },\n },\n management: {\n ...options?.jsfModify?.fields?.management,\n properties: {\n ...(options?.jsfModify?.fields?.management as $TSFixMe)?.properties,\n management_fee: {\n ...(options?.jsfModify?.fields?.management as $TSFixMe)\n ?.properties?.management_fee,\n 'x-jsf-presentation': {\n inputType: 'money',\n additionalProps: {\n currency: employerBillingCurrency || 'USD',\n },\n },\n },\n },\n presentation: {\n ...(typeof options?.jsfModify?.fields?.management === 'object'\n ? (\n options?.jsfModify?.fields?.management as Record<\n string,\n $TSFixMe\n >\n )['x-jsf-presentation']\n : {}),\n hidden: !showManagementField,\n Component: (props: FieldSetProps) => {\n return (\n <FieldSetField\n {...props}\n variant='inset'\n features={{\n toggle: {\n enabled: true,\n stateField: 'management._expanded',\n labels: {\n expand: 'Define',\n collapse: 'Remove',\n },\n },\n }}\n />\n );\n },\n },\n },\n estimation_title: {\n ...options?.jsfModify?.fields?.estimation_title,\n 'x-jsf-presentation': {\n hidden: !showEstimationTitleField,\n },\n },\n },\n };\n }, [\n getCurrencies,\n salaryField,\n hiringBudget,\n salaryFieldPresentation?.salary_conversion_properties?.label,\n salaryFieldPresentation?.salary_conversion_properties?.description,\n options?.jsfModify?.fields?.hiring_budget,\n options?.jsfModify?.fields?.management,\n options?.jsfModify?.fields?.estimation_title,\n version,\n employerBillingCurrency,\n showManagementField,\n showEstimationTitleField,\n defaultSalary,\n ]);\n\n const fieldsJSONSchema = useStaticSchema({\n jsfModify: {\n fields: {\n ...options?.jsfModify?.fields,\n ...customFields?.fields,\n },\n },\n });\n\n useEffect(() => {\n // Initialize selectedCountry from defaultRegion\n if (defaultRegion && countries) {\n const defaultCountry = countries.find(\n ({ value }) => value === defaultRegion,\n );\n if (defaultCountry) {\n setSelectedCountry(defaultCountry);\n }\n }\n }, [defaultRegion, countries]);\n\n useEffect(() => {\n // Initialize selectedCurrency from defaultCurrency\n if (defaultCurrency && currencies) {\n const defaultCurrencyObj = currencies.find(\n ({ value }) => value === defaultCurrency,\n );\n if (defaultCurrencyObj) {\n setEmployerBillingCurrency(defaultCurrencyObj.label);\n }\n }\n }, [defaultCurrency, currencies]);\n\n /**\n * Submit the estimation form with the given values.\n * @param values\n */\n async function onSubmit(values: CostCalculatorEstimationSubmitValues) {\n return costCalculatorEstimationMutationAsync(\n buildPayload(values, estimationOptions, version),\n );\n }\n\n /**\n * If the selected country has no child regions and has additional fields,\n * set the current region to the country's region slug and fetch the region fields.\n * @param country\n */\n function onCountryChange(country: string) {\n const currentCountry = countries?.find(({ value }) => value === country);\n\n if (\n currentCountry &&\n currentCountry.childRegions.length === 0 &&\n currentCountry.hasAdditionalFields\n ) {\n setSelectedRegion(currentCountry.regionSlug);\n } else {\n setSelectedRegion(undefined);\n }\n setSelectedCountry(currentCountry);\n }\n\n /**\n * Update the selected region and fetch the region fields.\n * @param region\n */\n function onRegionChange(region: string) {\n setSelectedRegion(region);\n }\n\n function onHiringBudgetChange(event: React.ChangeEvent<HTMLInputElement>) {\n setHiringBudget(event.target.value as HiringBudget);\n }\n\n function onChangeCurrency(currency: string) {\n const selectedCurrency = currencies?.find(\n (c) => c.value === currency,\n )?.label;\n setEmployerBillingCurrency(selectedCurrency);\n options?.onCurrencyChange?.(selectedCurrency || '');\n }\n\n const regionField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'region',\n );\n\n if (regionField) {\n const regions =\n selectedCountry?.childRegions.map((region) => ({\n value: region.slug,\n label: region.name,\n })) ?? [];\n regionField.options = regions;\n regionField.isVisible = regions.length > 0;\n regionField.required = regions.length > 0;\n regionField.onChange = onRegionChange;\n regionField.schema =\n regions.length > 0\n ? string()\n .transform((value) => (typeof value === 'string' ? value : ''))\n .required('Region is required')\n : string();\n }\n\n if (currencies) {\n const currencyField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'currency',\n );\n if (currencyField) {\n currencyField.options = currencies;\n currencyField.onChange = onChangeCurrency;\n }\n }\n\n const hiringBudgetField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'hiring_budget',\n );\n if (hiringBudgetField) {\n hiringBudgetField.onChange = onHiringBudgetChange;\n }\n\n if (countries) {\n const countryField = fieldsJSONSchema.fields.find(\n (field) => field.name === 'country',\n );\n if (countryField) {\n countryField.options = countries;\n countryField.onChange = onCountryChange;\n }\n }\n\n const resetForm = () => {\n setSelectedCountry(undefined);\n setSelectedRegion(defaultRegion);\n };\n\n const allFields = [\n ...fieldsJSONSchema.fields.filter((field) => field.name !== 'management'),\n ...(jsonSchemaRegionFields?.fields || []),\n ...fieldsJSONSchema.fields.filter((field) => field.name === 'management'),\n ];\n\n const validationSchema = buildValidationSchema(\n fieldsJSONSchema.fields,\n employerBillingCurrency || 'USD',\n estimationOptions.includeEstimationTitle,\n );\n\n async function handleValidation(values: CostCalculatorEstimationFormValues) {\n let errors: JSFValidationError | null = null;\n\n options?.onValidation?.(values);\n const parsedValues = parseJSFToValidate(values, allFields);\n\n // 1. validate static fields first using Yup validate function\n try {\n await validationSchema.validate(parsedValues, {\n abortEarly: false,\n });\n errors = {\n formErrors: {},\n yupError: new ValidationError([], values),\n };\n } catch (error) {\n const iterateResult = iterateErrors(error as ValidationError);\n\n errors = {\n // convert the errors to a format that can be used in the form\n formErrors: Object.entries(iterateResult).reduce(\n (acc, [key, value]) => ({ ...acc, [key]: value.message }),\n {},\n ),\n yupError: error as ValidationError,\n };\n }\n\n // 2. validate json schema fields using the handleValidation (from json-schema-form)\n const handleValidationResult =\n jsonSchemaRegionFields?.handleValidation(parsedValues);\n\n // 3. combine the errors from both validations\n const combinedInnerErrors = [\n ...(errors?.yupError.inner || []),\n ...(handleValidationResult?.yupError?.inner || []),\n ];\n const combinedValues = {\n ...(errors?.yupError?.value || {}),\n ...(handleValidationResult?.yupError?.value || {}),\n };\n\n return {\n formErrors: {\n ...(errors?.formErrors || {}),\n ...(handleValidationResult?.formErrors || {}),\n },\n yupError: new ValidationError(combinedInnerErrors, combinedValues),\n };\n }\n\n return {\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState: {\n current: 0,\n total: 1,\n isLastStep: true,\n },\n /**\n * Array of form fields from the cost calculator schema + dynamic region fields like benefits, age, etc.\n */\n fields: allFields,\n /**\n * Validation schema for the cost calculator form\n */\n validationSchema,\n /**\n * Function to parse form values before submission\n * @param values - Form values to parse\n * @returns Parsed form values\n */\n parseFormValues: (\n values: CostCalculatorEstimationFormValues,\n ): CostCalculatorEstimationSubmitValues => {\n const {\n country,\n region,\n currency,\n salary_converted,\n hiring_budget,\n salary_conversion,\n management,\n estimation_title,\n ...rest\n } = values;\n\n // If the salary has been converted, we take the one the user has inputted\n let salary = values.salary;\n if (salary_converted === 'salary_conversion') {\n salary = salary_conversion;\n }\n\n const jsonSchemaStaticFieldValues = {\n country,\n region,\n salary,\n salary_converted,\n salary_conversion,\n hiring_budget,\n currency,\n management,\n estimation_title,\n };\n\n const parsedStaticFields = parseJSFToValidate(\n jsonSchemaStaticFieldValues,\n fieldsJSONSchema.fields,\n );\n\n const parsedRegionFields = parseJSFToValidate(\n rest,\n jsonSchemaRegionFields?.fields || [],\n );\n\n const additionalFields = {\n currency_code: currencies?.find((c) => c.value === currency)?.label,\n };\n\n return {\n ...parsedStaticFields,\n ...parsedRegionFields,\n ...additionalFields,\n } as CostCalculatorEstimationSubmitValues;\n },\n /**\n * Function to handle validation of the cost calculator form\n * @param values - Form values to validate\n * @returns Validation result\n */\n handleValidation,\n /**\n * Whether the cost calculator form is currently being submitted\n */\n isSubmitting: costCalculatorEstimationMutation.isPending,\n /**\n * Whether the cost calculator form is currently loading\n */\n isLoading:\n isLoadingCountries && isLoadingCurrencies && isLoadingRegionFields,\n /**\n * Function to submit the cost calculator form\n */\n onSubmit,\n /**\n * Function to reset the cost calculator form\n */\n resetForm,\n\n /**\n * Currencies data useful to get the currency if you have a currencySlug\n */\n currencies,\n\n /**\n * Fields metadata\n */\n meta: {\n fields: fieldsMetaRef.current?.fields,\n },\n };\n};\n"],"mappings":"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","names":["number","object","createHeadlessForm","modify","useCallback","useEffect","useMemo","useRef","useState","string","ValidationError","jsx","defaultEstimationOptions","useStaticSchema","__name","options","jsonSchemaModified","modify","jsonSchema","createHeadlessForm","getSalaryTitle","salaryField","hiringBudget","title","useCostCalculator","defaultRegion","defaultCurrency","defaultSalary","estimationOptions","version","fieldsMetaRef","useRef","selectedRegion","setSelectedRegion","useState","selectedCountry","setSelectedCountry","employerBillingCurrency","setEmployerBillingCurrency","setHiringBudget","countries","isLoadingCountries","useCostCalculatorCountries","currencies","isLoadingCurrencies","useCompanyCurrencies","jsonSchemaRegionSlug","jsonSchemaRegionFields","isLoadingRegionFields","useRegionFields","costCalculatorEstimationMutation","useCostCalculatorEstimation","costCalculatorEstimationMutationAsync","mutationToPromise","employeeBillingCurrency","salaryFieldPresentation","getCurrencies","useCallback","shouldSwapOrder","showManagementField","showEstimationTitleField","customFields","useMemo","from","to","salaryTitle","props","SalaryField","FieldSetField","fieldsJSONSchema","useEffect","defaultCountry","value","defaultCurrencyObj","onSubmit","values","buildPayload","onCountryChange","country","currentCountry","onRegionChange","region","onHiringBudgetChange","event","onChangeCurrency","currency","selectedCurrency","c","regionField","field","regions","string","currencyField","hiringBudgetField","countryField","resetForm","allFields","validationSchema","buildValidationSchema","handleValidation","errors","parsedValues","parseJSFToValidate","ValidationError","error","iterateResult","iterateErrors","acc","key","handleValidationResult","combinedInnerErrors","combinedValues","salary_converted","hiring_budget","salary_conversion","management","estimation_title","rest","salary","parsedStaticFields","parsedRegionFields","additionalFields","buildValidationSchema","fields","employerBillingCurrency","includeEstimationTitle","fieldsSchema","fieldsSchemaAcc","field","__name","val","schema","object","number","value","BASE_RATES","formatBenefits","benefits","needle","acc","key","benefitTierSlug","benefitEntry","mapValueToEmployment","estimationOptions","version","managementFee","currencyCode","getSalaryFields","isMarketing","isStandard","useHiringBudget","useEmployerCurrency","buildPayload","values","defaultEstimationOptions","employments","v"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/ContractorOnboarding/components/ContractorOnboardingForm.tsx"],"sourcesContent":["import { JSONSchemaFormFields } from '@/src/components/form/JSONSchemaForm';\nimport { Form } from '@/src/components/ui/form';\nimport { useForm } from 'react-hook-form';\nimport { useJsonSchemasValidationFormResolver } from '@/src/components/form/yupValidationResolver';\nimport { Fields } from '@remoteoss/json-schema-form';\nimport { BasicInformationFormPayload } from '@/src/flows/Onboarding/types';\nimport { Components } from '@/src/types/remoteFlows';\nimport { useContractorOnboardingContext } from '@/src/flows/ContractorOnboarding/context';\nimport { useEffect } from 'react';\nimport { PricingPlanFormPayload } from '@/src/flows/ContractorOnboarding/types';\nimport { ContractorOnboardingContractDetailsFormPayload } from '@/src/flows/ContractorOnboarding/types';\n\ntype ContractorOnboardingFormProps = {\n onSubmit: (\n payload:\n | BasicInformationFormPayload\n | PricingPlanFormPayload\n | ContractorOnboardingContractDetailsFormPayload,\n ) => void;\n components?: Components;\n fields?: Fields;\n defaultValues: Record<string, unknown>;\n};\n\nexport function ContractorOnboardingForm({\n defaultValues,\n onSubmit,\n components,\n}: ContractorOnboardingFormProps) {\n const { formId, contractorOnboardingBag } = useContractorOnboardingContext();\n\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n contractorOnboardingBag.handleValidation,\n );\n\n const form = useForm({\n resolver,\n defaultValues,\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n useEffect(() => {\n // When the employmentId is set,\n // we need to run the checkFieldUpdates to update fieldValues in useStepState\n if (contractorOnboardingBag.employmentId) {\n contractorOnboardingBag?.checkFieldUpdates(form.getValues());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const subscription = form?.watch((values) => {\n const isAnyFieldDirty = Object.keys(values).some(\n (key) =>\n values[key as keyof unknown] !== defaultValues[key as keyof unknown],\n );\n if (isAnyFieldDirty) {\n contractorOnboardingBag?.checkFieldUpdates(values);\n }\n });\n return () => subscription?.unsubscribe();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleSubmit = async (values: Record<string, unknown>) => {\n onSubmit(values);\n };\n\n return (\n <Form\n {...form}\n key={`form-${contractorOnboardingBag.stepState.currentStep.name}`}\n >\n <form\n id={formId}\n onSubmit={form.handleSubmit(handleSubmit)}\n className='space-y-4 RemoteFlows__OnboardingForm'\n >\n <JSONSchemaFormFields\n components={components}\n fields={contractorOnboardingBag.fields}\n fieldsets={contractorOnboardingBag.meta.fieldsets}\n fieldValues={contractorOnboardingBag.fieldValues}\n />\n </form>\n </Form>\n );\n}\n"],"mappings":"+MAQA,OAAS,aAAAA,MAAiB,QAwElB,cAAAC,MAAA,oBATJ,wBAAAC,MAAA,QA/CG,SAASC,EAAyB,CACvC,cAAAC,EACA,SAAAC,EACA,WAAAC,CACF,EAAkC,CAChC,GAAM,CAAE,OAAAC,EAAQ,wBAAAC,CAAwB,EAAIC,EAA+B,EAErEC,EAAWC,EAEfH,EAAwB,gBAC1B,EAEMI,EAAOC,EAAQ,CACnB,SAAAH,EACA,cAAAN,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAEDU,EAAU,IAAM,CAGVN,EAAwB,cAC1BA,GAAyB,kBAAkBI,EAAK,UAAU,CAAC,CAG/D,EAAG,CAAC,CAAC,EAELE,EAAU,IAAM,CACd,IAAMC,EAAeH,GAAM,MAAOI,GAAW,CACnB,OAAO,KAAKA,CAAM,EAAE,KACzCC,GACCD,EAAOC,CAAoB,IAAMb,EAAca,CAAoB,CACvE,GAEET,GAAyB,kBAAkBQ,CAAM,CAErD,CAAC,EACD,MAAO,IAAMD,GAAc,YAAY,CAEzC,EAAG,CAAC,CAAC,EAEL,IAAMG,EAAeC,EAAA,MAAOH,GAAoC,CAC9DX,EAASW,CAAM,CACjB,EAFqB,gBAIrB,OACEd,EAACkB,EAAA,CACE,GAAGR,EACJ,IAAK,QAAQJ,EAAwB,UAAU,YAAY,IAAI,IAE/DP,EAAC,QACC,GAAIM,EACJ,SAAUK,EAAK,aAAaM,CAAY,EACxC,UAAU,wCAEV,SAAAjB,EAACoB,EAAA,CACC,WAAYf,EACZ,OAAQE,EAAwB,OAChC,UAAWA,EAAwB,KAAK,UACxC,YAAaA,EAAwB,YACvC,EACF,CACF,CAEJ,CAjEgBW,EAAAhB,EAAA","names":["useEffect","jsx","createElement","ContractorOnboardingForm","defaultValues","onSubmit","components","formId","contractorOnboardingBag","useContractorOnboardingContext","resolver","useJsonSchemasValidationFormResolver","form","useForm","useEffect","subscription","values","key","handleSubmit","__name","Form","JSONSchemaFormFields"]}
@@ -1,2 +0,0 @@
1
- import{a as c}from"./chunk-SGE4DLC3.js";import{I as h,m as b,t as T,v as g}from"./chunk-2CDCTUVY.js";import{d as i}from"./chunk-XFJPUKYR.js";import{a as r}from"./chunk-P37U34EQ.js";var P="long",B=.01,m=8,C=3;function R(e){return Math.abs(e)<B&&e!==0}r(R,"shouldDisplayAsHours");function U({days:e,hours:t}){return e+t/m}r(U,"getDaysAndHoursAsDecimal");function A(e){let t=10**C,o=Math.round(Math.abs(e)*t)/t;return e<0?-o:o}r(A,"roundToDecimals");function M(e,t){let o=A(e);if(t==="short")return`${o}h`;let n=c({number:e,singular:"hour",plural:"hours",followCopyGuidelines:!1,showNumber:!1});return`${o} ${n}`}r(M,"formatAsHours");function u(e,t){return e*m+t}r(u,"convertToTotalHours");function d(e){return{days:Math.floor(e/m),hours:e%m}}r(d,"convertTotalHoursToDaysAndHours");function w(e,t){let o=A(e);if(t==="short")return`${o}d`;let n=c({number:e,singular:"day",plural:"days",followCopyGuidelines:!1,showNumber:!1});return`${o} ${n}`}r(w,"formatAsDays");function _(e,t=P){let o=U(e);return R(o)?M(u(e.days,e.hours),t):w(o,t)}r(_,"formatAsDecimal");import{useMutation as O,useQuery as p}from"@tanstack/react-query";var ae=r(({employmentId:e})=>{let{client:t}=i();return p({queryKey:["employment",e],retry:!1,queryFn:r(()=>g({client:t,headers:{Authorization:""},path:{employment_id:e}}),"queryFn"),enabled:!!e,select:r(({data:o})=>o?.data?.employment,"select")})},"useEmploymentQuery"),H=r(({employmentId:e,status:t,timeoffType:o,options:n})=>{let{client:a}=i();return p({queryKey:["timeoff",e,t],retry:!1,queryFn:r(()=>h({client:a,headers:{Authorization:""},query:{employment_id:e,status:t,timeoff_type:o}}),"queryFn"),select:r(({data:s})=>n?.select?.(s)??s,"select"),enabled:n?.enabled})},"useTimeOffQuery"),Q=r((e,t)=>{let o=new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}),n=new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});return`${o} \u2192 ${n}`},"formatDateRange"),se=r(({employmentId:e,options:t})=>H({employmentId:e,timeoffType:"paid_time_off",options:{enabled:t?.enabled,select:r(o=>({bookedDays:o?.data?.total_count||0,timeoffs:o?.data?.timeoffs?.map(n=>({status:n?.status,duration:n?.timeoff_days.length,startDate:n?.start_date,endDate:n?.end_date,formattedDate:Q(n?.start_date,n?.end_date)}))||[]}),"select")}}),"usePaidTimeoffBreakdownQuery");function $(e,t){let o=0,n=0;return e.forEach(a=>{a.timeoff_days?.forEach(s=>{new Date(s.day)<=t?o+=s.hours||0:n+=s.hours||0})}),{before:o,after:n}}r($,"getAllTimeoffHoursBeforeDate");var q=r(({employmentId:e,date:t,options:o})=>H({employmentId:e,timeoffType:"paid_time_off",status:"approved",options:{enabled:o?.enabled,select:r(n=>{let{before:a,after:s}=$(n?.data?.timeoffs||[],new Date(t));return{bookedDaysBeforeTermination:d(a),bookedDaysAfterTermination:d(s)}},"select")}}),"useBookedTimeoffBeforeAndAfterTerminationQuery");function I(e){return Object.entries(e).reduce((t,[o,n])=>({...t,[o]:_(n)}),{})}r(I,"formatTimeoffValues");function z(e){let t=e?.contract_details?.available_pto,o=e?.contract_details?.available_pto_type;return e?.country?.code==="USA"&&o==="unlimited"?{value:t===0?20:t}:o==="unlimited"&&t>0?{value:t}:{value:t}}r(z,"getMinimumStatutoryDays");var ie=r(({employmentId:e,proposedTerminationDate:t,employment:o})=>{let{value:n=0}=z(o),a=K({employmentId:e}),s=q({employmentId:e,date:t}),D=a.data?.data?.[0].annual_entitlement.type==="limited"?{days:a.data?.data?.[0].annual_entitlement.days,hours:a.data?.data?.[0].annual_entitlement.hours}:{days:n,hours:0},f={days:a.data?.data?.[0].booked.days||0,hours:a.data?.data?.[0].booked.hours||0},l=a.data?.data?.[0].current_entitlement.type==="limited"?{days:a.data?.data?.[0].current_entitlement.days||0,hours:a.data?.data?.[0].current_entitlement.hours||0}:{days:n,hours:0},y={days:a.data?.data?.[0].used.days||0,hours:a.data?.data?.[0].used.hours||0},S=s.data?.bookedDaysBeforeTermination||{days:0,hours:0},k=s.data?.bookedDaysAfterTermination||{days:0,hours:0},x=u(l.days,l.hours),E=u(y.days,y.hours),L=u(f.days,f.hours),v=x-E-L,F=d(v);return{data:{...I({entitledDays:D,bookedDays:f,usedDays:y,approvedDaysBeforeTermination:S,approvedDaysAfterTermination:k,remainingDays:F,currentEntitlementDays:l}),isUnlimitedPto:o?.contract_details?.available_pto_type==="unlimited"},isLoading:a.isLoading||s.isLoading,isError:a.isError||s.isError,error:a.error||s.error}},"useSummaryTimeOffDataQuery"),K=r(({employmentId:e})=>{let{client:t}=i();return p({queryKey:["timeoff-balance",e],retry:!1,queryFn:r(()=>T({client:t,headers:{Authorization:""},path:{employment_id:e}}),"queryFn"),select:r(({data:o})=>o,"select")})},"useTimeOffLeavePoliciesSummaryQuery"),ue=r(()=>{let{client:e}=i();return O({mutationFn:r(t=>b({client:e,headers:{Authorization:""},body:t}),"mutationFn")})},"useMagicLink");export{ae as a,H as b,se as c,q as d,ie as e,K as f,ue as g};
2
- //# sourceMappingURL=chunk-A6GJNXUZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/time.ts","../src/common/api.ts"],"sourcesContent":["import { getSingularPluralUnit } from '@/src/lib/i18n';\n\nexport type DaysAndHours = {\n hours: number;\n days: number;\n};\ntype FormatDaysAndHoursSuffixFormat = 'short' | 'long';\n\nconst DEFAULT_SUFFIX_FORMAT: FormatDaysAndHoursSuffixFormat = 'long';\n\n/**\n * Threshold below which decimal day values should be displayed in hours instead\n * of days. Very small day values are more meaningful when shown as hours.\n */\nconst DECIMAL_DAYS_DISPLAY_THRESHOLD = 0.01;\n\n/**\n * Default number of hours in a work day.\n */\nconst DEFAULT_WORK_HOURS = 8;\n\n/**\n * Default number of decimal places to round to.\n */\nconst DEFAULT_DECIMAL_PLACES = 3;\n\n/**\n * Determines whether a decimal day value should be displayed as hours for\n * better readability.\n */\nfunction shouldDisplayAsHours(decimal: number): boolean {\n return Math.abs(decimal) < DECIMAL_DAYS_DISPLAY_THRESHOLD && decimal !== 0;\n}\n\n/**\n * Converts days and hours into a decimal representation.\n * Designed to handle integer hours (-7 to 7) and future integer minutes (-59 to 59).\n *\n * @example\n * getDaysAndHoursAsDecimal({ days: 1, hours: 4 }) // 1.5\n * getDaysAndHoursAsDecimal({ days: 0, hours: 3 }) // 0.375\n */\nfunction getDaysAndHoursAsDecimal({ days, hours }: DaysAndHours): number {\n return days + hours / DEFAULT_WORK_HOURS;\n}\n\n/**\n * Rounds a number to 2 decimal places using symmetric rounding (away from zero).\n */\nfunction roundToDecimals(value: number): number {\n const multiplier = 10 ** DEFAULT_DECIMAL_PLACES;\n\n // Math.round() uses \"Round half toward positive infinity\", so we round using\n // absolute value to achieve symmetric rounding\n const rounded = Math.round(Math.abs(value) * multiplier) / multiplier;\n // preserve original sign\n return value < 0 ? -rounded : rounded;\n}\n\n/**\n * Formats a time duration as hours with the specified suffix format.\n */\nfunction formatAsHours(\n hours: number,\n suffixFormat: FormatDaysAndHoursSuffixFormat,\n): string {\n const roundedHours = roundToDecimals(hours);\n\n if (suffixFormat === 'short') return `${roundedHours}h`;\n\n const hoursText = getSingularPluralUnit({\n number: hours,\n singular: 'hour',\n plural: 'hours',\n followCopyGuidelines: false,\n showNumber: false,\n });\n return `${roundedHours} ${hoursText}`;\n}\n\n/**\n * Converts days and hours into total hours based on standard work day\n */\nexport function convertToTotalHours(days: number, hours: number): number {\n return days * DEFAULT_WORK_HOURS + hours;\n}\n\nexport function convertTotalHoursToDaysAndHours(\n totalHours: number,\n): DaysAndHours {\n return {\n days: Math.floor(totalHours / DEFAULT_WORK_HOURS),\n hours: totalHours % DEFAULT_WORK_HOURS,\n };\n}\n\n/**\n * Formats a time duration as decimal days with the specified suffix format.\n */\nfunction formatAsDays(\n decimal: number,\n suffixFormat: FormatDaysAndHoursSuffixFormat,\n): string {\n const roundedDecimal = roundToDecimals(decimal);\n\n if (suffixFormat === 'short') return `${roundedDecimal}d`;\n\n const daysText = getSingularPluralUnit({\n number: decimal,\n singular: 'day',\n plural: 'days',\n followCopyGuidelines: false,\n showNumber: false,\n });\n return `${roundedDecimal} ${daysText}`;\n}\n\n/**\n * Converts time off quantities into decimal format for display.\n *\n * Always returns a formatted decimal string with appropriate units.\n * Useful when you need a precise decimal representation of any time duration.\n *\n * @example\n * formatAsDecimal({ days: 1, hours: 4 }) // \"1.5 days\"\n * formatAsDecimal({ days: 2, hours: 0 }) // \"2 days\"\n * formatAsDecimal({ days: 0, hours: -3 }) // \"-0.38 days\"\n */\nexport function formatAsDecimal(\n daysAndHours: DaysAndHours,\n suffixFormat: FormatDaysAndHoursSuffixFormat = DEFAULT_SUFFIX_FORMAT,\n): string {\n const decimal = getDaysAndHoursAsDecimal(daysAndHours);\n\n if (shouldDisplayAsHours(decimal)) {\n return formatAsHours(\n convertToTotalHours(daysAndHours.days, daysAndHours.hours),\n suffixFormat,\n );\n }\n\n return formatAsDays(decimal, suffixFormat);\n}\n","import {\n getIndexLeavePoliciesSummary,\n getIndexTimeoff,\n getShowEmployment,\n ListTimeoffResponse,\n MagicLinkParams,\n postGenerateMagicLink,\n Timeoff,\n TimeoffStatus,\n TimeoffType,\n} from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { ContractAmendmentParams } from '@/src/flows/ContractAmendment/types';\nimport { Employment } from '@/src/flows/Onboarding/types';\nimport {\n convertTotalHoursToDaysAndHours,\n convertToTotalHours,\n DaysAndHours,\n formatAsDecimal,\n} from '@/src/lib/time';\nimport { Client } from '@hey-api/client-fetch';\nimport { useMutation, useQuery } from '@tanstack/react-query';\n\ntype UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;\n\n/**\n * Hook to retrieve employment details for a specific employment ID.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} params.employmentId - The ID of the employment to fetch details for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the employment details.\n */\nexport const useEmploymentQuery = ({ employmentId }: UseEmployment) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n queryFn: () => {\n return getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId },\n });\n },\n enabled: !!employmentId,\n select: ({ data }) => data?.data?.employment,\n });\n};\n\n/**\n * Hook to retrieve time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch time off data for.\n * @param {TimeoffStatus} [params.status] - The status of the time off requests to filter by (e.g., 'approved', 'pending').\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the time off data.\n *\n */\nexport const useTimeOffQuery = <TData = ListTimeoffResponse>({\n employmentId,\n status,\n timeoffType,\n options,\n}: {\n employmentId?: string;\n status?: TimeoffStatus;\n timeoffType?: TimeoffType;\n options?: {\n enabled?: boolean;\n select?: (data: ListTimeoffResponse | undefined) => TData;\n };\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['timeoff', employmentId, status],\n retry: false,\n queryFn: () => {\n return getIndexTimeoff({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n query: {\n employment_id: employmentId,\n status: status,\n timeoff_type: timeoffType,\n },\n });\n },\n select: ({ data }) => (options?.select?.(data) ?? data) as TData,\n enabled: options?.enabled,\n });\n};\n\nconst formatDateRange = (startDate: string, endDate: string) => {\n const start = new Date(startDate).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n const end = new Date(endDate).toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n });\n return `${start} → ${end}`;\n};\n\nexport type PaidTimeoffBreakdownResponse = {\n bookedDays: number;\n timeoffs: {\n status: string;\n duration: number;\n startDate: string;\n endDate: string;\n formattedDate: string;\n }[];\n};\n\n/**\n * Hook to retrieve paid time off breakdown for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch paid time off breakdown for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the paid time off breakdown.\n *\n */\nexport const usePaidTimeoffBreakdownQuery = ({\n employmentId,\n options,\n}: {\n employmentId?: string;\n options?: {\n enabled?: boolean;\n };\n}) => {\n return useTimeOffQuery<PaidTimeoffBreakdownResponse>({\n employmentId,\n timeoffType: 'paid_time_off',\n options: {\n enabled: options?.enabled,\n select: (data) => {\n return {\n bookedDays: data?.data?.total_count || 0,\n timeoffs:\n data?.data?.timeoffs?.map((timeoff) => {\n return {\n status: timeoff?.status,\n duration: timeoff?.timeoff_days.length,\n startDate: timeoff?.start_date,\n endDate: timeoff?.end_date,\n formattedDate: formatDateRange(\n timeoff?.start_date,\n timeoff?.end_date,\n ),\n };\n }) || [],\n };\n },\n },\n });\n};\n\nexport type BookedTimeoffBeforeDateResponse = {\n /*\n * The number of days booked before termination.\n */\n bookedDaysBeforeTermination: DaysAndHours;\n /*\n * The number of days booked after termination.\n */\n bookedDaysAfterTermination: DaysAndHours;\n};\n\nfunction getAllTimeoffHoursBeforeDate(\n timeoffs: Timeoff[],\n terminationDate: Date,\n): { before: number; after: number } {\n let before = 0;\n let after = 0;\n\n timeoffs.forEach((timeoff) => {\n timeoff.timeoff_days?.forEach((day) => {\n const dayDate = new Date(day.day);\n if (dayDate <= terminationDate) {\n // Day is on or before termination\n before += day.hours || 0;\n } else {\n // Day is after termination\n after += day.hours || 0;\n }\n });\n });\n\n return { before, after };\n}\n\n/**\n * Hook to retrieve booked time off data before and after a specific date for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch booked time off data for.\n * @param {string} [params.date] - The date to fetch booked time off data for.\n * @returns {BookedTimeoffBeforeDateResponse} - The booked time off data before and after the specific date.\n *\n * This hook accounts for partial days and multiple timeoff_days per request.\n */\nexport const useBookedTimeoffBeforeAndAfterTerminationQuery = ({\n employmentId,\n date,\n options,\n}: {\n employmentId: string;\n date: string;\n options?: { enabled: boolean };\n}) => {\n return useTimeOffQuery<BookedTimeoffBeforeDateResponse>({\n employmentId,\n timeoffType: 'paid_time_off',\n status: 'approved',\n options: {\n enabled: options?.enabled,\n select: (data) => {\n const { before, after } = getAllTimeoffHoursBeforeDate(\n data?.data?.timeoffs || [],\n new Date(date),\n );\n\n return {\n bookedDaysBeforeTermination: convertTotalHoursToDaysAndHours(before),\n bookedDaysAfterTermination: convertTotalHoursToDaysAndHours(after),\n };\n },\n },\n });\n};\n\nfunction formatTimeoffValues(\n values: Record<string, DaysAndHours>,\n): Record<string, string> {\n return Object.entries(values).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: formatAsDecimal(value),\n }),\n {},\n );\n}\n\nexport type SummaryTimeOffDataResponse = {\n /*\n * The number of days entitled to per year.\n */\n entitledDays: string;\n /*\n * The number of days booked.\n */\n bookedDays: string;\n /*\n * The number of days used.\n */\n usedDays: string;\n /*\n * The number of days current entitlement, better than entitledDays because it takes into account the accrued value.\n */\n currentEntitlementDays: string;\n /*\n * The number of days approved before termination.\n */\n approvedDaysBeforeTermination: string;\n /*\n * The number of days approved after termination.\n */\n approvedDaysAfterTermination: string;\n /*\n * The number of days remaining.\n */\n remainingDays: string;\n /*\n * Whether the PTO is unlimited or not.\n */\n isUnlimitedPto: boolean;\n};\n\nfunction getMinimumStatutoryDays(employment?: Employment) {\n const availablePto = employment?.contract_details?.available_pto as number;\n const ptoType = employment?.contract_details?.available_pto_type as\n | 'unlimited'\n | 'fixed';\n const countryCode = employment?.country?.code;\n\n // Special handling for countries without statutory minimums\n if (countryCode === 'USA' && ptoType === 'unlimited') {\n // USA has no minimum, but Remote recommends 20\n return {\n value: availablePto === 0 ? 20 : availablePto,\n };\n }\n\n // For most countries with unlimited PTO, available_pto IS the statutory minimum\n if (ptoType === 'unlimited' && availablePto > 0) {\n return {\n value: availablePto,\n };\n }\n\n // For fixed PTO, it's just the entitlement\n return {\n value: availablePto,\n };\n}\n\n/**\n * Hook to retrieve summary time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch summary time off data for.\n * @param {string} [params.proposedTerminationDate] - The proposed termination date to fetch summary time off data for.\n * @returns {SummaryTimeOffDataResponse} - The summary time off data.\n *\n * This hook doesn't take into account unlimited time off or half days yet.\n *\n */\nexport const useSummaryTimeOffDataQuery = ({\n employmentId,\n proposedTerminationDate,\n employment,\n}: {\n employmentId: string;\n proposedTerminationDate: string;\n employment?: Employment;\n}) => {\n const { value: minimumStatutoryDays = 0 } =\n getMinimumStatutoryDays(employment);\n const leavePoliciesSummaryQuery = useTimeOffLeavePoliciesSummaryQuery({\n employmentId,\n });\n const bookedTimeQuery = useBookedTimeoffBeforeAndAfterTerminationQuery({\n employmentId,\n date: proposedTerminationDate,\n });\n\n const entitledDays =\n leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.type ===\n 'limited'\n ? {\n days: leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement\n .days,\n hours:\n leavePoliciesSummaryQuery.data?.data?.[0].annual_entitlement.hours,\n }\n : { days: minimumStatutoryDays, hours: 0 };\n\n const bookedDays = {\n days: leavePoliciesSummaryQuery.data?.data?.[0].booked.days || 0,\n hours: leavePoliciesSummaryQuery.data?.data?.[0].booked.hours || 0,\n };\n\n const currentEntitlementDays =\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement.type ===\n 'limited'\n ? {\n days:\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement\n .days || 0,\n hours:\n leavePoliciesSummaryQuery.data?.data?.[0].current_entitlement\n .hours || 0,\n }\n : { days: minimumStatutoryDays, hours: 0 };\n\n const usedDays = {\n days: leavePoliciesSummaryQuery.data?.data?.[0].used.days || 0,\n hours: leavePoliciesSummaryQuery.data?.data?.[0].used.hours || 0,\n };\n\n const approvedDaysBeforeTermination = bookedTimeQuery.data\n ?.bookedDaysBeforeTermination || { days: 0, hours: 0 };\n\n const approvedDaysAfterTermination = bookedTimeQuery.data\n ?.bookedDaysAfterTermination || { days: 0, hours: 0 };\n\n const totalCurrentEntitlementHours = convertToTotalHours(\n currentEntitlementDays.days,\n currentEntitlementDays.hours,\n );\n const totalUsedHours = convertToTotalHours(usedDays.days, usedDays.hours);\n const totalBookedHours = convertToTotalHours(\n bookedDays.days,\n bookedDays.hours,\n );\n\n const remainingHours =\n totalCurrentEntitlementHours - totalUsedHours - totalBookedHours;\n\n const remainingDays = convertTotalHoursToDaysAndHours(remainingHours);\n\n const formattedValues = formatTimeoffValues({\n entitledDays,\n bookedDays,\n usedDays,\n approvedDaysBeforeTermination,\n approvedDaysAfterTermination,\n remainingDays,\n currentEntitlementDays,\n }) as Omit<SummaryTimeOffDataResponse, 'isUnlimitedPto'>;\n\n return {\n data: {\n ...formattedValues,\n isUnlimitedPto:\n employment?.contract_details?.available_pto_type === 'unlimited',\n },\n isLoading: leavePoliciesSummaryQuery.isLoading || bookedTimeQuery.isLoading,\n isError: leavePoliciesSummaryQuery.isError || bookedTimeQuery.isError,\n error: leavePoliciesSummaryQuery.error || bookedTimeQuery.error,\n };\n};\n\n/**\n * Hook to retrieve time off balance for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch time off balance for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the time off balance.\n *\n */\nexport const useTimeOffLeavePoliciesSummaryQuery = ({\n employmentId,\n}: {\n employmentId?: string;\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['timeoff-balance', employmentId],\n retry: false,\n queryFn: () => {\n return getIndexLeavePoliciesSummary({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId as string },\n });\n },\n select: ({ data }) => data,\n });\n};\n\n/**\n * Hook to generate a magic link for a specific employment.\n * @param {MagicLinkParams} params - The parameters for the magic link.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the magic link.\n */\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n"],"mappings":"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","names":["DEFAULT_SUFFIX_FORMAT","DECIMAL_DAYS_DISPLAY_THRESHOLD","DEFAULT_WORK_HOURS","DEFAULT_DECIMAL_PLACES","shouldDisplayAsHours","decimal","__name","getDaysAndHoursAsDecimal","days","hours","roundToDecimals","value","multiplier","rounded","formatAsHours","suffixFormat","roundedHours","hoursText","getSingularPluralUnit","convertToTotalHours","convertTotalHoursToDaysAndHours","totalHours","formatAsDays","roundedDecimal","daysText","formatAsDecimal","daysAndHours","useMutation","useQuery","useEmploymentQuery","__name","employmentId","client","useClient","useQuery","getShowEmployment","data","useTimeOffQuery","status","timeoffType","options","getIndexTimeoff","formatDateRange","startDate","endDate","start","end","usePaidTimeoffBreakdownQuery","timeoff","getAllTimeoffHoursBeforeDate","timeoffs","terminationDate","before","after","day","useBookedTimeoffBeforeAndAfterTerminationQuery","date","convertTotalHoursToDaysAndHours","formatTimeoffValues","values","acc","key","value","formatAsDecimal","getMinimumStatutoryDays","employment","availablePto","ptoType","useSummaryTimeOffDataQuery","proposedTerminationDate","minimumStatutoryDays","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","bookedTimeQuery","entitledDays","bookedDays","currentEntitlementDays","usedDays","approvedDaysBeforeTermination","approvedDaysAfterTermination","totalCurrentEntitlementHours","convertToTotalHours","totalUsedHours","totalBookedHours","remainingHours","remainingDays","getIndexLeavePoliciesSummary","useMagicLink","useMutation","params","postGenerateMagicLink"]}
@@ -1,2 +0,0 @@
1
- import{c as t,d as i,e as s,f as m}from"./chunk-A6GJNXUZ.js";import{a as o}from"./chunk-P37U34EQ.js";import{useState as T}from"react";var S=o(({proposedTerminationDate:e,employeeName:f,employmentId:a,employment:r,render:y})=>{let[n,d]=T(!1),u=m({employmentId:a}),l=new Date(e).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"}),c=t({employmentId:a,options:{enabled:n}}),p=i({employmentId:a,date:e}),D=s({employmentId:a,proposedTerminationDate:e,employment:r});return y({leavePoliciesSummaryQuery:u,timeoffQuery:c||{data:{bookedDays:0,timeoffs:[]}},bookedTimeBeforeAndAfterTerminationQuery:p,formattedProposedTerminationDate:l,employeeName:f,proposedTerminationDate:e,summaryData:D??{data:{entitledDays:"0 days",bookedDays:"0 days",usedDays:"0 days",approvedDaysBeforeTermination:"0 days",approvedDaysAfterTermination:"0 days",remainingDays:"0 days",isUnlimitedPto:!1},isLoading:!1,isError:!1,error:null},employment:r,open:n,onOpenChange:o(()=>{d(P=>!P)},"onOpenChange")})},"PaidTimeOffContainer");export{S as a};
2
- //# sourceMappingURL=chunk-BB3WWKGA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.tsx"],"sourcesContent":["import {\n useBookedTimeoffBeforeAndAfterTerminationQuery,\n usePaidTimeoffBreakdownQuery,\n useSummaryTimeOffDataQuery,\n useTimeOffLeavePoliciesSummaryQuery,\n} from '@/src/common/api';\nimport { PaidTimeOffContainerProps } from '@/src/flows/Termination/components/PaidTimeOff/types';\nimport { useState } from 'react';\n\n/**\n * PaidTimeOffContainer component\n *\n * This is a container component that manages paid time off (PTO) data retrieval and state\n * for the termination flow. It aggregates multiple time off-related queries and formats\n * the termination date for display.\n *\n */\nexport const PaidTimeOffContainer = ({\n proposedTerminationDate,\n employeeName,\n employmentId,\n employment,\n render,\n}: PaidTimeOffContainerProps) => {\n const [open, setOpen] = useState(false);\n\n const leavePoliciesSummaryQuery = useTimeOffLeavePoliciesSummaryQuery({\n employmentId: employmentId,\n });\n\n const formattedProposedTerminationDate = new Date(\n proposedTerminationDate,\n ).toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n\n const timeoffQuery = usePaidTimeoffBreakdownQuery({\n employmentId: employmentId,\n options: {\n enabled: open,\n },\n });\n\n const bookedTimeBeforeAndAfterTerminationQuery =\n useBookedTimeoffBeforeAndAfterTerminationQuery({\n employmentId: employmentId,\n date: proposedTerminationDate,\n });\n\n // computed summary data\n const summaryData = useSummaryTimeOffDataQuery({\n employmentId: employmentId,\n proposedTerminationDate,\n employment: employment,\n });\n\n const onOpenChange = () => {\n setOpen((open) => !open);\n };\n\n return render({\n leavePoliciesSummaryQuery,\n timeoffQuery: timeoffQuery || {\n data: {\n bookedDays: 0,\n timeoffs: [],\n },\n },\n bookedTimeBeforeAndAfterTerminationQuery,\n formattedProposedTerminationDate,\n employeeName,\n proposedTerminationDate,\n summaryData: summaryData ?? {\n data: {\n entitledDays: '0 days',\n bookedDays: '0 days',\n usedDays: '0 days',\n approvedDaysBeforeTermination: '0 days',\n approvedDaysAfterTermination: '0 days',\n remainingDays: '0 days',\n isUnlimitedPto: false,\n },\n isLoading: false,\n isError: false,\n error: null,\n },\n employment: employment,\n open,\n onOpenChange,\n });\n};\n"],"mappings":"qGAOA,OAAS,YAAAA,MAAgB,QAUlB,IAAMC,EAAuBC,EAAA,CAAC,CACnC,wBAAAC,EACA,aAAAC,EACA,aAAAC,EACA,WAAAC,EACA,OAAAC,CACF,IAAiC,CAC/B,GAAM,CAACC,EAAMC,CAAO,EAAIC,EAAS,EAAK,EAEhCC,EAA4BC,EAAoC,CACpE,aAAcP,CAChB,CAAC,EAEKQ,EAAmC,IAAI,KAC3CV,CACF,EAAE,mBAAmB,QAAS,CAC5B,MAAO,OACP,IAAK,UACL,KAAM,SACR,CAAC,EAEKW,EAAeC,EAA6B,CAChD,aAAcV,EACd,QAAS,CACP,QAASG,CACX,CACF,CAAC,EAEKQ,EACJC,EAA+C,CAC7C,aAAcZ,EACd,KAAMF,CACR,CAAC,EAGGe,EAAcC,EAA2B,CAC7C,aAAcd,EACd,wBAAAF,EACA,WAAYG,CACd,CAAC,EAMD,OAAOC,EAAO,CACZ,0BAAAI,EACA,aAAcG,GAAgB,CAC5B,KAAM,CACJ,WAAY,EACZ,SAAU,CAAC,CACb,CACF,EACA,yCAAAE,EACA,iCAAAH,EACA,aAAAT,EACA,wBAAAD,EACA,YAAae,GAAe,CAC1B,KAAM,CACJ,aAAc,SACd,WAAY,SACZ,SAAU,SACV,8BAA+B,SAC/B,6BAA8B,SAC9B,cAAe,SACf,eAAgB,EAClB,EACA,UAAW,GACX,QAAS,GACT,MAAO,IACT,EACA,WAAYZ,EACZ,KAAAE,EACA,aAhCmBN,EAAA,IAAM,CACzBO,EAASD,GAAS,CAACA,CAAI,CACzB,EAFqB,eAiCrB,CAAC,CACH,EA3EoC","names":["useState","PaidTimeOffContainer","__name","proposedTerminationDate","employeeName","employmentId","employment","render","open","setOpen","useState","leavePoliciesSummaryQuery","useTimeOffLeavePoliciesSummaryQuery","formattedProposedTerminationDate","timeoffQuery","usePaidTimeoffBreakdownQuery","bookedTimeBeforeAndAfterTerminationQuery","useBookedTimeoffBeforeAndAfterTerminationQuery","summaryData","useSummaryTimeOffDataQuery"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/flows/CostCalculator/CostCalculatorFlow.tsx"],"sourcesContent":["import React, { useEffect, useId, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useJsonSchemasValidationFormResolver } from '@/src/components/form/yupValidationResolver';\nimport { CostCalculatorContext } from '@/src/flows/CostCalculator/context';\nimport {\n CostCalculatorVersion,\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\nimport {\n CostCalculatorEstimationOptions,\n CurrencyKey,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport { BASE_RATES } from '@/src/flows/CostCalculator/constants';\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 /**\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 * Default value for the benefits field.\n */\n benefits: Record<string, string>;\n /**\n * Default value for the hiring budget field\n */\n hiringBudget: string;\n /**\n * Default value for the age field.\n */\n age: number;\n /**\n * Default value for the contract duration type field.\n */\n contractDurationType: 'fixed' | 'indefinite';\n /**\n * Default value for the management fee field.\n */\n management: {\n management_fee: string;\n };\n /**\n * Default value for the region field.\n */\n regionSlug: string;\n } & Record<string, unknown>\n >;\n options?: UseCostCalculatorOptions;\n render: (\n costCalculatorBag: ReturnType<typeof useCostCalculator>,\n ) => React.ReactNode;\n /**\n * Whether to include annual_gross_salary in the estimation payload\n */\n version?: CostCalculatorVersion;\n};\n\nconst getDefaultManagementFee = (\n baseRates: Record<CurrencyKey, number>,\n currency: CurrencyKey,\n managementFees?: Partial<Record<CurrencyKey, number>>,\n) => {\n if (managementFees && managementFees[currency]) {\n return managementFees[currency];\n }\n if (baseRates[currency]) {\n return baseRates[currency] / 100;\n }\n return 0;\n};\n\nconst getManagementFee = (\n currency: CurrencyKey,\n currencySlug?: string,\n management?: { management_fee: string },\n managementFees?: Partial<Record<CurrencyKey, number>>,\n) => {\n if (!currencySlug && !management?.management_fee && currency) {\n return getDefaultManagementFee(BASE_RATES, currency, managementFees);\n }\n if (currencySlug && !management?.management_fee) {\n return '';\n }\n\n return management?.management_fee;\n};\n\nexport const CostCalculatorFlow = ({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n regionSlug: '',\n currencySlug: '',\n salary: '',\n benefits: {},\n management: {\n management_fee: '',\n },\n },\n options,\n render,\n version = 'standard',\n}: CostCalculatorFlowProps) => {\n const formId = useId();\n const [currency, setCurrency] = useState<CurrencyKey>('USD');\n const onCurrencyChange = (currency: string) => {\n setCurrency(currency as CurrencyKey);\n const managementFee = getDefaultManagementFee(\n BASE_RATES,\n currency as CurrencyKey,\n estimationOptions.managementFees,\n );\n if (managementFee) {\n form.setValue('management.management_fee', managementFee);\n }\n };\n const costCalculatorBag = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n defaultCurrency: defaultValues.currencySlug,\n defaultSalary: defaultValues.salary,\n estimationOptions,\n version,\n options: {\n ...options,\n onCurrencyChange: onCurrencyChange,\n },\n });\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n costCalculatorBag.handleValidation,\n );\n\n const defaultManagementFee = getManagementFee(\n currency,\n defaultValues.currencySlug,\n defaultValues.management,\n estimationOptions.managementFees,\n );\n\n const {\n countryRegionSlug,\n currencySlug,\n salary,\n benefits,\n hiringBudget,\n age,\n contractDurationType,\n regionSlug,\n ...formDefaultValues\n } = defaultValues;\n\n const form = useForm({\n resolver,\n defaultValues: {\n country: countryRegionSlug,\n currency: currencySlug,\n region: regionSlug,\n salary: salary,\n salary_conversion: '',\n salary_converted: '',\n hiring_budget: hiringBudget || 'employee_annual_salary',\n age: age,\n contract_duration_type: contractDurationType,\n management: {\n management_fee: defaultManagementFee,\n },\n benefits: benefits,\n estimation_title: estimationOptions.title,\n ...formDefaultValues,\n },\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n useEffect(() => {\n if (\n defaultValues.currencySlug &&\n costCalculatorBag.currencies &&\n estimationOptions.includeManagementFee &&\n !defaultValues.management?.management_fee\n ) {\n const currencyData = costCalculatorBag.currencies.find(\n (currency) => currency.value === defaultValues.currencySlug,\n );\n const currencyCode = currencyData?.label;\n if (currencyCode) {\n setCurrency(currencyCode as CurrencyKey);\n const defaultManagementFee = getDefaultManagementFee(\n BASE_RATES,\n currencyCode as CurrencyKey,\n estimationOptions.managementFees,\n );\n form.setValue('management.management_fee', defaultManagementFee);\n }\n }\n }, [\n defaultValues.currencySlug,\n costCalculatorBag.currencies,\n estimationOptions.includeManagementFee,\n estimationOptions.managementFees,\n defaultValues.management?.management_fee,\n form,\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":"uPAAA,OAAgB,aAAAA,EAAW,SAAAC,EAAO,YAAAC,MAAgB,QAgO9C,cAAAC,MAAA,oBApJJ,IAAMC,EAA0BC,EAAA,CAC9BC,EACAC,EACAC,IAEIA,GAAkBA,EAAeD,CAAQ,EACpCC,EAAeD,CAAQ,EAE5BD,EAAUC,CAAQ,EACbD,EAAUC,CAAQ,EAAI,IAExB,EAXuB,2BAc1BE,EAAmBJ,EAAA,CACvBE,EACAG,EACAC,EACAH,IAEI,CAACE,GAAgB,CAACC,GAAY,gBAAkBJ,EAC3CH,EAAwBQ,EAAYL,EAAUC,CAAc,EAEjEE,GAAgB,CAACC,GAAY,eACxB,GAGFA,GAAY,eAbI,oBAgBZE,EAAqBR,EAAA,CAAC,CACjC,kBAAAS,EAAoBC,EACpB,cAAAC,EAAgB,CACd,kBAAmB,GACnB,WAAY,GACZ,aAAc,GACd,OAAQ,GACR,SAAU,CAAC,EACX,WAAY,CACV,eAAgB,EAClB,CACF,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EAAU,UACZ,IAA+B,CAC7B,IAAMC,EAASC,EAAM,EACf,CAACd,EAAUe,CAAW,EAAIC,EAAsB,KAAK,EACrDC,EAAmBnB,EAACE,GAAqB,CAC7Ce,EAAYf,CAAuB,EACnC,IAAMkB,EAAgBrB,EACpBQ,EACAL,EACAO,EAAkB,cACpB,EACIW,GACFC,EAAK,SAAS,4BAA6BD,CAAa,CAE5D,EAVyB,oBAWnBE,EAAoBC,EAAkB,CAC1C,cAAeZ,EAAc,kBAC7B,gBAAiBA,EAAc,aAC/B,cAAeA,EAAc,OAC7B,kBAAAF,EACA,QAAAK,EACA,QAAS,CACP,GAAGF,EACH,iBAAkBO,CACpB,CACF,CAAC,EACKK,EAAWC,EAEfH,EAAkB,gBACpB,EAEMI,EAAuBtB,EAC3BF,EACAS,EAAc,aACdA,EAAc,WACdF,EAAkB,cACpB,EAEM,CACJ,kBAAAkB,EACA,aAAAtB,EACA,OAAAuB,EACA,SAAAC,EACA,aAAAC,EACA,IAAAC,EACA,qBAAAC,EACA,WAAAC,EACA,GAAGC,CACL,EAAIvB,EAEEU,EAAOc,EAAQ,CACnB,SAAAX,EACA,cAAe,CACb,QAASG,EACT,SAAUtB,EACV,OAAQ4B,EACR,OAAQL,EACR,kBAAmB,GACnB,iBAAkB,GAClB,cAAeE,GAAgB,yBAC/B,IAAKC,EACL,uBAAwBC,EACxB,WAAY,CACV,eAAgBN,CAClB,EACA,SAAUG,EACV,iBAAkBpB,EAAkB,MACpC,GAAGyB,CACL,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAED,OAAAE,EAAU,IAAM,CACd,GACEzB,EAAc,cACdW,EAAkB,YAClBb,EAAkB,sBAClB,CAACE,EAAc,YAAY,eAC3B,CAIA,IAAM0B,EAHef,EAAkB,WAAW,KAC/CpB,GAAaA,EAAS,QAAUS,EAAc,YACjD,GACmC,MACnC,GAAI0B,EAAc,CAChBpB,EAAYoB,CAA2B,EACvC,IAAMX,EAAuB3B,EAC3BQ,EACA8B,EACA5B,EAAkB,cACpB,EACAY,EAAK,SAAS,4BAA6BK,CAAoB,CACjE,CACF,CACF,EAAG,CACDf,EAAc,aACdW,EAAkB,WAClBb,EAAkB,qBAClBA,EAAkB,eAClBE,EAAc,YAAY,eAC1BU,CACF,CAAC,EAGCvB,EAACwC,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAjB,EACA,OAAQN,EACR,kBAAAO,CACF,EAEC,SAAAT,EAAOS,CAAiB,EAC3B,CAEJ,EAhIkC","names":["useEffect","useId","useState","jsx","getDefaultManagementFee","__name","baseRates","currency","managementFees","getManagementFee","currencySlug","management","BASE_RATES","CostCalculatorFlow","estimationOptions","defaultEstimationOptions","defaultValues","options","render","version","formId","useId","setCurrency","useState","onCurrencyChange","managementFee","form","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","defaultManagementFee","countryRegionSlug","salary","benefits","hiringBudget","age","contractDurationType","regionSlug","formDefaultValues","useForm","useEffect","currencyCode","CostCalculatorContext"]}
@@ -1,2 +0,0 @@
1
- import{a as o}from"./chunk-P37U34EQ.js";function a(e){return e.inner.reduce((t,r)=>({...t,[r.path]:{type:r.type??"validation",message:r.message}}),{})}o(a,"iterateErrors");var i=o(e=>async s=>{let{yupError:t,formErrors:r}=await e(s);return Object.keys(r||{}).length>0?{values:{},errors:a(t)}:{values:s,errors:{}}},"useJsonSchemasValidationFormResolver");export{a,i as b};
2
- //# sourceMappingURL=chunk-CFIJKJXD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/yupValidationResolver.ts"],"sourcesContent":["import { FieldValues, Resolver } from 'react-hook-form';\nimport type { AnyObjectSchema, InferType, ValidationError } from 'yup';\n\nexport function iterateErrors(error: ValidationError) {\n const errors = (error as ValidationError).inner.reduce(\n (\n allErrors: Record<string, { type: string; message: string }>,\n currentError: ValidationError,\n ) => {\n return {\n ...allErrors,\n [currentError.path as string]: {\n type: currentError.type ?? 'validation',\n message: currentError.message,\n },\n };\n },\n {} as Record<string, { type: string; message: string }>,\n );\n\n return errors;\n}\n\nexport const useJsonSchemasValidationFormResolver = <T extends AnyObjectSchema>(\n handleValidation: (data: FieldValues) => {\n formErrors: Record<string, string>;\n yupError: ValidationError;\n },\n): Resolver<InferType<T>> => {\n return async (data: FieldValues) => {\n const { yupError, formErrors } = await handleValidation(data);\n\n if (Object.keys(formErrors || {}).length > 0) {\n return {\n values: {},\n errors: iterateErrors(yupError as ValidationError),\n };\n }\n return {\n values: data,\n errors: {},\n };\n };\n};\n"],"mappings":"wCAGO,SAASA,EAAcC,EAAwB,CAiBpD,OAhBgBA,EAA0B,MAAM,OAC9C,CACEC,EACAC,KAEO,CACL,GAAGD,EACH,CAACC,EAAa,IAAc,EAAG,CAC7B,KAAMA,EAAa,MAAQ,aAC3B,QAASA,EAAa,OACxB,CACF,GAEF,CAAC,CACH,CAGF,CAlBgBC,EAAAJ,EAAA,iBAoBT,IAAMK,EAAuCD,EAClDE,GAKO,MAAOC,GAAsB,CAClC,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAI,MAAMH,EAAiBC,CAAI,EAE5D,OAAI,OAAO,KAAKE,GAAc,CAAC,CAAC,EAAE,OAAS,EAClC,CACL,OAAQ,CAAC,EACT,OAAQT,EAAcQ,CAA2B,CACnD,EAEK,CACL,OAAQD,EACR,OAAQ,CAAC,CACX,CACF,EAnBkD","names":["iterateErrors","error","allErrors","currentError","__name","useJsonSchemasValidationFormResolver","handleValidation","data","yupError","formErrors"]}
@@ -1,2 +0,0 @@
1
- import{a as d,b as _,c}from"./chunk-QGWCUGLN.js";import{c as F}from"./chunk-CNDSIADP.js";import{e as y}from"./chunk-PAQW5BFW.js";import{e as m}from"./chunk-43WMZDDH.js";import{a as p}from"./chunk-P37U34EQ.js";import{Fragment as V}from"react";var u={...d,fieldset:c,"fieldset-flat":c};import{useEffect as h}from"react";import{Fragment as x,jsx as i,jsxs as C}from"react/jsx-runtime";function g({name:t,value:a,description:s,statement:r,label:l}){let{setValue:e}=F();return h(()=>{e(t,a)},[]),i("div",{children:r?C(x,{children:[i("p",{className:`text-sm RemoteFlows__ForcedValue__Title__${t}`,dangerouslySetInnerHTML:{__html:m(r?.title||l)}}),i("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${t}`,dangerouslySetInnerHTML:{__html:m(r?.description||s)}})]}):i("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${t}`,dangerouslySetInnerHTML:{__html:m(s)}})})}p(g,"ForcedValueField");import{Fragment as P,jsx as o,jsxs as S}from"react/jsx-runtime";function k(t){return t.const!==void 0&&t.const===t.default&&t.inputType!=="checkbox"&&t.inputType!=="hidden"}p(k,"checkFieldHasForcedValue");var q=p(({fields:t,fieldsets:a,fieldValues:s,components:r})=>{if(!t||t.length===0)return null;let l=a&&s?y({fields:t,fieldsets:a,values:s}):t;return o(P,{children:l.map(e=>{if(e.calculateDynamicProperties&&(e={...e,...e.calculateDynamicProperties(s,e)||{}}),e.isVisible===!1||e.deprecated||e.hidden)return null;if(k(e))return o(g,{name:e.name,description:e.description,value:e.const,statement:e.statement,label:e.label},e.name);if(e.Component){let{Component:T}=e;return o(T,{...e},e.name)}let n=u[e.type];return e.type==="select"&&e.multiple&&(n=u["multi-select"]),e.type==="fieldset"?o(n,{...e,components:r},e.name):e.type==="fieldset-flat"?o(n,{...e,components:r,isFlatFieldset:!0},e.name):n?S(V,{children:[o(n,{...e,component:r&&r[e.type]}),e.statement?o(_,{...e.statement}):null,e.extra?e.extra:null]},e.name):S("p",{className:"error",children:["Field type ",e.type," not supported"]})})})},"JSONSchemaFormFields");export{q as a};
2
- //# sourceMappingURL=chunk-D64MAPTD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/form/JSONSchemaForm.tsx","../src/components/form/fields/fieldsMapping.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Fields } from '@remoteoss/json-schema-form';\nimport React, { Fragment } from 'react';\n\nimport { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport { Statement, StatementProps } from '@/src/components/form/Statement';\nimport { ForcedValueField } from '@/src/components/form/fields/ForcedValueField';\nimport { Components, JSFFieldset } from '@/src/types/remoteFlows';\nimport { getFieldsWithFlatFieldsets } from './utils';\n\ntype JSONSchemaFormFieldsProps = {\n fields: Fields;\n components?: Components;\n fieldsets?: JSFFieldset | null | undefined;\n fieldValues?: Record<string, unknown>;\n};\n\nfunction checkFieldHasForcedValue(field: any) {\n // A field to be considered \"forced value\" must:\n return (\n field.const !== undefined && // Only accepts a specific value\n field.const === field.default && // It can be prefilled, meaning it's not critical\n field.inputType !== 'checkbox' && // Because checkbox must always be visible\n field.inputType !== 'hidden' // Because hidden inputs shouldn't be visible\n );\n}\n\nexport const JSONSchemaFormFields = ({\n fields,\n fieldsets,\n fieldValues,\n components,\n}: JSONSchemaFormFieldsProps) => {\n if (!fields || fields.length === 0) return null;\n\n const maybeFieldWithFlatFieldsets =\n fieldsets && fieldValues\n ? getFieldsWithFlatFieldsets({\n fields: fields,\n fieldsets: fieldsets,\n values: fieldValues,\n })\n : fields;\n\n return (\n <>\n {maybeFieldWithFlatFieldsets.map((field) => {\n if (field.calculateDynamicProperties) {\n field = {\n ...field,\n ...(field.calculateDynamicProperties(fieldValues, field) || {}),\n };\n }\n\n if (field.isVisible === false || field.deprecated || field.hidden) {\n return null; // Skip hidden or deprecated fields\n }\n\n if (checkFieldHasForcedValue(field)) {\n return (\n <ForcedValueField\n key={field.name as string}\n name={field.name as string}\n description={field.description as string}\n value={field.const as string}\n statement={field.statement as any}\n label={field.label as string}\n />\n );\n }\n\n if (field.Component) {\n const { Component } = field as {\n Component: React.ComponentType<any>;\n };\n return <Component key={field.name as string} {...field} />;\n }\n\n let FieldComponent = fieldsMap[field.type as SupportedTypes];\n\n if (field.type === 'select' && field.multiple) {\n FieldComponent = fieldsMap['multi-select'];\n }\n\n if (field.type === 'fieldset') {\n return (\n <FieldComponent\n key={field.name}\n {...field}\n components={components}\n />\n );\n }\n\n if (field.type === 'fieldset-flat') {\n return (\n <FieldComponent\n key={field.name}\n {...field}\n components={components}\n isFlatFieldset\n />\n );\n }\n\n return FieldComponent ? (\n <Fragment key={field.name as string}>\n <FieldComponent\n {...field}\n component={components && components[field.type as SupportedTypes]}\n />\n {field.statement ? (\n <Statement {...(field.statement as StatementProps)} />\n ) : null}\n {field.extra ? field.extra : null}\n </Fragment>\n ) : (\n <p className='error'>\n Field type {field.type as string} not supported\n </p>\n );\n })}\n </>\n );\n};\n","import { $TSFixMe } from '@/src/types/remoteFlows';\nimport { baseFields } from './baseFields';\nimport { FieldSetField } from './FieldSetField';\nimport { SupportedTypes } from './types';\n\nexport const fieldsMap: Record<\n SupportedTypes,\n React.ComponentType<$TSFixMe>\n> = {\n ...baseFields,\n fieldset: FieldSetField,\n 'fieldset-flat': FieldSetField,\n};\n","import { sanitizeHtml } from '@/src/lib/utils';\nimport { useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nexport type ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement?: {\n title?: string;\n description?: string;\n };\n label: string;\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n label,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n\n useEffect(() => {\n setValue(name, value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div>\n {statement ? (\n <>\n {/* if statement?.title is undefined which could be for example belgium contract details form, we need to use the label attribute */}\n <p\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{\n __html: sanitizeHtml(statement?.title || label),\n }}\n />\n <p\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n dangerouslySetInnerHTML={{\n __html: sanitizeHtml(statement?.description || description),\n }}\n />\n </>\n ) : (\n <p\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n dangerouslySetInnerHTML={{ __html: sanitizeHtml(description) }}\n />\n )}\n </div>\n );\n}\n"],"mappings":"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","names":["Fragment","fieldsMap","baseFields","FieldSetField","useEffect","Fragment","jsx","jsxs","ForcedValueField","name","value","description","statement","label","setValue","useFormContext","useEffect","sanitizeHtml","__name","Fragment","jsx","jsxs","checkFieldHasForcedValue","field","__name","JSONSchemaFormFields","fields","fieldsets","fieldValues","components","maybeFieldWithFlatFieldsets","getFieldsWithFlatFieldsets","ForcedValueField","Component","FieldComponent","fieldsMap","Statement"]}
@@ -1,2 +0,0 @@
1
- import{a}from"./chunk-43WMZDDH.js";import{a as i}from"./chunk-P37U34EQ.js";import*as v from"react";import*as d from"@radix-ui/react-checkbox";import{Check as b}from"lucide-react";import{jsx as p}from"react/jsx-runtime";var y=v.forwardRef(({className:e,...t},s)=>p(d.Root,{ref:s,className:a("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:p(d.Indicator,{className:a("flex items-center justify-center text-current"),children:p(b,{className:"h-4 w-4"})})}));y.displayName=d.Root.displayName;import*as c from"@radix-ui/react-radio-group";import{CircleIcon as R}from"lucide-react";import{jsx as m}from"react/jsx-runtime";function j({className:e,...t}){return m(c.Root,{"data-slot":"radio-group",className:a("grid gap-3",e),...t})}i(j,"RadioGroup");function A({className:e,...t}){return m(c.Item,{"data-slot":"radio-group-item",className:a("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:m(c.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center",children:m(R,{className:"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})})})}i(A,"RadioGroupItem");import*as o from"@radix-ui/react-select";import{CheckIcon as C,ChevronDownIcon as P,ChevronUpIcon as S}from"lucide-react";import{jsx as r,jsxs as u}from"react/jsx-runtime";function W({...e}){return r(o.Root,{"data-slot":"select",...e})}i(W,"Select");function X({...e}){return r(o.Group,{"data-slot":"select-group",...e})}i(X,"SelectGroup");function E({...e}){return r(o.Value,{"data-slot":"select-value",...e})}i(E,"SelectValue");function J({className:e,children:t,...s}){return u(o.Trigger,{"data-slot":"select-trigger",className:a("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),...s,children:[t,r(o.Icon,{asChild:!0,className:"absolute right-4",children:r(P,{className:"size-4"})})]})}i(J,"SelectTrigger");function K({className:e,children:t,position:s="popper",...x}){return r(o.Portal,{children:u(o.Content,{"data-slot":"select-content",className:a("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",s==="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:s,...x,children:[r(h,{}),r(o.Viewport,{className:a(s==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),r(D,{})]})})}i(K,"SelectContent");function M({className:e,children:t,...s}){return u(o.Item,{"data-slot":"select-item",className:a("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),...s,children:[r(o.ItemText,{children:t}),r("span",{className:"flex size-3.5 items-center justify-center",children:r(o.ItemIndicator,{children:r(C,{className:"size-4"})})})]})}i(M,"SelectItem");function h({className:e,...t}){return r(o.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:a("flex cursor-default items-center justify-center py-1",e),...t,children:r(S,{className:"size-4"})})}i(h,"SelectScrollUpButton");function D({className:e,...t}){return r(o.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:a("flex cursor-default items-center justify-center py-1",e),...t,children:r(P,{className:"size-4"})})}i(D,"SelectScrollDownButton");import*as n from"@radix-ui/react-dialog";import{XIcon as w}from"lucide-react";import{jsx as l,jsxs as f}from"react/jsx-runtime";function te({...e}){return l(n.Root,{"data-slot":"dialog",...e})}i(te,"Dialog");function oe({...e}){return l(n.Trigger,{"data-slot":"dialog-trigger",...e})}i(oe,"DialogTrigger");function N({...e}){return l(n.Portal,{"data-slot":"dialog-portal",...e})}i(N,"DialogPortal");function k({className:e,...t}){return l(n.Overlay,{"data-slot":"dialog-overlay",className:a("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})}i(k,"DialogOverlay");function ie({className:e,children:t,...s}){return f(N,{"data-slot":"dialog-portal",children:[l(k,{}),f(n.Content,{"data-slot":"dialog-content",className:a("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),...s,children:[t,f(n.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:[l(w,{}),l("span",{className:"sr-only",children:"Close"})]})]})]})}i(ie,"DialogContent");function ae({className:e,...t}){return l("div",{"data-slot":"dialog-header",className:a("flex flex-col gap-2 text-center sm:text-left",e),...t})}i(ae,"DialogHeader");function re({className:e,...t}){return l("div",{"data-slot":"dialog-footer",className:a("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}i(re,"DialogFooter");function ne({className:e,...t}){return l(n.Title,{"data-slot":"dialog-title",className:a("text-lg leading-none font-semibold",e),...t})}i(ne,"DialogTitle");function se({className:e,...t}){return l(n.Description,{"data-slot":"dialog-description",className:a("text-muted-foreground text-sm",e),...t})}i(se,"DialogDescription");import{cva as I}from"class-variance-authority";import{jsx as g}from"react/jsx-runtime";var z=I("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 ue({className:e,variant:t,...s}){return g("div",{"data-slot":"alert",role:"alert",className:a(z({variant:t}),e),...s})}i(ue,"Alert");function fe({className:e,...t}){return g("div",{"data-slot":"alert-title",className:a("col-start-2 min-h-4 font-medium tracking-tight",e),...t})}i(fe,"AlertTitle");function ge({className:e,...t}){return g("div",{"data-slot":"alert-description",className:a("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed inline-block",e),...t})}i(ge,"AlertDescription");export{y as a,j as b,A as c,W as d,X as e,E as f,J as g,K as h,M as i,te as j,oe as k,ie as l,ae as m,re as n,ne as o,se as p,ue as q,fe as r,ge as s};
2
- //# sourceMappingURL=chunk-D6X2WCEG.js.map