@remoteoss/remote-flows 0.11.0 → 0.12.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 (141) hide show
  1. package/dist/{chunk-RUVKAPO5.js → chunk-2AUKMWRF.js} +2 -2
  2. package/dist/{chunk-RMVG6YBI.js → chunk-2JWANM25.js} +2 -2
  3. package/dist/{chunk-YRLBMLSA.js → chunk-3F7QLHMP.js} +2 -2
  4. package/dist/chunk-52NPLMW3.js +2 -0
  5. package/dist/chunk-52NPLMW3.js.map +1 -0
  6. package/dist/chunk-5CUF63YR.js +2 -0
  7. package/dist/chunk-5CUF63YR.js.map +1 -0
  8. package/dist/{chunk-5GUK7MEN.js → chunk-AXU5ZCUE.js} +2 -2
  9. package/dist/{chunk-H2SFR2GL.js → chunk-CS3U6LJU.js} +2 -2
  10. package/dist/{chunk-NC3VBBHC.js → chunk-CSLZUVU4.js} +2 -2
  11. package/dist/{chunk-AJVD3O4D.js → chunk-DOILOCWU.js} +2 -2
  12. package/dist/{chunk-SZOOX2KY.js → chunk-DVQO5MHI.js} +2 -2
  13. package/dist/{chunk-FBYLX5NA.js → chunk-EOJJ4IWJ.js} +2 -2
  14. package/dist/{chunk-3CUVTXRN.js → chunk-J2SFMADD.js} +2 -2
  15. package/dist/chunk-JKYTL5QY.js +2 -0
  16. package/dist/chunk-JKYTL5QY.js.map +1 -0
  17. package/dist/{chunk-S7ZMHO5I.js → chunk-JUM2HAIK.js} +2 -2
  18. package/dist/{chunk-TJK6MTGG.js → chunk-LLY7VPXS.js} +2 -2
  19. package/dist/chunk-MCPVKP6Q.js +2 -0
  20. package/dist/chunk-MCPVKP6Q.js.map +1 -0
  21. package/dist/chunk-NPZ5QJSG.js +2 -0
  22. package/dist/chunk-NPZ5QJSG.js.map +1 -0
  23. package/dist/chunk-P4C2MI7X.js +2 -0
  24. package/dist/{chunk-AIB34WOA.js.map → chunk-P4C2MI7X.js.map} +1 -1
  25. package/dist/chunk-SEAC3H45.js +2 -0
  26. package/dist/chunk-SEAC3H45.js.map +1 -0
  27. package/dist/{chunk-KHVEYIMF.js → chunk-SFZSHBWM.js} +2 -2
  28. package/dist/{chunk-QVN32YBL.js → chunk-SJHGFMVF.js} +2 -2
  29. package/dist/{chunk-AVA4MEFP.js → chunk-SUQURI2J.js} +2 -2
  30. package/dist/chunk-SUQURI2J.js.map +1 -0
  31. package/dist/{chunk-3Z5ZZUO4.js → chunk-VUQOVQ5L.js} +2 -2
  32. package/dist/{chunk-KG72IMCX.js → chunk-Y22Q3UYU.js} +2 -2
  33. package/dist/{chunk-TPSZDGQJ.js → chunk-ZMENI53L.js} +2 -2
  34. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  35. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +1 -1
  36. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  37. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  38. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  39. package/dist/flows/ContractAmendment/context.d.ts +1 -1
  40. package/dist/flows/ContractAmendment/hooks.d.ts +1 -1
  41. package/dist/flows/ContractAmendment/index.d.ts +1 -1
  42. package/dist/flows/ContractAmendment/index.js +1 -1
  43. package/dist/flows/ContractAmendment/utils.d.ts +1 -1
  44. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +1 -1
  45. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  46. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +1 -1
  47. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  48. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +1 -1
  49. package/dist/flows/CostCalculator/EstimationResults/EstimationResults.js +1 -1
  50. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
  51. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +10 -2
  52. package/dist/flows/CostCalculator/SummaryResults/SummaryResults.js +1 -1
  53. package/dist/flows/CostCalculator/api.d.ts +1 -1
  54. package/dist/flows/CostCalculator/components/SalaryField.d.ts +3 -1
  55. package/dist/flows/CostCalculator/components/SalaryField.js +1 -1
  56. package/dist/flows/CostCalculator/context.d.ts +1 -1
  57. package/dist/flows/CostCalculator/hooks.d.ts +6 -2
  58. package/dist/flows/CostCalculator/hooks.js +1 -1
  59. package/dist/flows/CostCalculator/index.d.ts +1 -1
  60. package/dist/flows/CostCalculator/index.js +1 -1
  61. package/dist/flows/CostCalculator/jsonSchema.d.ts +9 -2
  62. package/dist/flows/CostCalculator/jsonSchema.js +1 -1
  63. package/dist/flows/CostCalculator/types.d.ts +7 -3
  64. package/dist/flows/CostCalculator/utils.d.ts +1 -1
  65. package/dist/flows/CostCalculator/utils.js +1 -1
  66. package/dist/flows/Onboarding/OnboardingFlow.d.ts +1 -1
  67. package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
  68. package/dist/flows/Onboarding/api.d.ts +1 -1
  69. package/dist/flows/Onboarding/components/AnnualGrossSalary.js +1 -1
  70. package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +1 -1
  71. package/dist/flows/Onboarding/components/BasicInformationStep.js +1 -1
  72. package/dist/flows/Onboarding/components/BenefitsStep.d.ts +1 -1
  73. package/dist/flows/Onboarding/components/BenefitsStep.js +1 -1
  74. package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +1 -1
  75. package/dist/flows/Onboarding/components/ContractDetailsStep.js +1 -1
  76. package/dist/flows/Onboarding/components/OnboardingForm.d.ts +1 -1
  77. package/dist/flows/Onboarding/components/OnboardingForm.js +1 -1
  78. package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +1 -1
  79. package/dist/flows/Onboarding/components/ReviewStep.d.ts +1 -1
  80. package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +1 -1
  81. package/dist/flows/Onboarding/components/SelectCountryStep.js +1 -1
  82. package/dist/flows/Onboarding/context.d.ts +1 -1
  83. package/dist/flows/Onboarding/hooks.d.ts +1 -1
  84. package/dist/flows/Onboarding/hooks.js +1 -1
  85. package/dist/flows/Onboarding/index.d.ts +1 -1
  86. package/dist/flows/Onboarding/index.js +1 -1
  87. package/dist/flows/Onboarding/types.d.ts +1 -1
  88. package/dist/flows/Onboarding/utils.d.ts +1 -1
  89. package/dist/flows/Termination/AdditionalDetailsForm.d.ts +1 -1
  90. package/dist/flows/Termination/AdditionalDetailsForm.js +1 -1
  91. package/dist/flows/Termination/EmployeeComunicationForm.d.ts +1 -1
  92. package/dist/flows/Termination/EmployeeComunicationForm.js +1 -1
  93. package/dist/flows/Termination/PaidTimeOffForm.d.ts +1 -1
  94. package/dist/flows/Termination/PaidTimeOffForm.js +1 -1
  95. package/dist/flows/Termination/TerminationDetailsForm.d.ts +1 -1
  96. package/dist/flows/Termination/TerminationDetailsForm.js +1 -1
  97. package/dist/flows/Termination/TerminationFlow.d.ts +1 -1
  98. package/dist/flows/Termination/TerminationFlow.js +1 -1
  99. package/dist/flows/Termination/TerminationForm.d.ts +1 -1
  100. package/dist/flows/Termination/TerminationForm.js +1 -1
  101. package/dist/flows/Termination/TimeOff.d.ts +1 -1
  102. package/dist/flows/Termination/context.d.ts +1 -1
  103. package/dist/flows/Termination/hooks.d.ts +1 -1
  104. package/dist/flows/Termination/index.d.ts +1 -1
  105. package/dist/flows/Termination/index.js +1 -1
  106. package/dist/flows/Termination/types.d.ts +1 -1
  107. package/dist/index.d.ts +2 -2
  108. package/dist/index.js +1 -1
  109. package/dist/{types.gen-CVPKMCVh.d.ts → types.gen-_c0f1E7h.d.ts} +8 -0
  110. package/package.json +1 -1
  111. package/dist/chunk-5KKDB7Q7.js +0 -2
  112. package/dist/chunk-5KKDB7Q7.js.map +0 -1
  113. package/dist/chunk-AIB34WOA.js +0 -2
  114. package/dist/chunk-ANCX2TZH.js +0 -2
  115. package/dist/chunk-ANCX2TZH.js.map +0 -1
  116. package/dist/chunk-AVA4MEFP.js.map +0 -1
  117. package/dist/chunk-D25W2VVQ.js +0 -2
  118. package/dist/chunk-D25W2VVQ.js.map +0 -1
  119. package/dist/chunk-DY5CSCPI.js +0 -2
  120. package/dist/chunk-DY5CSCPI.js.map +0 -1
  121. package/dist/chunk-F6U6WDMP.js +0 -2
  122. package/dist/chunk-F6U6WDMP.js.map +0 -1
  123. package/dist/chunk-GMA7VTFX.js +0 -2
  124. package/dist/chunk-GMA7VTFX.js.map +0 -1
  125. /package/dist/{chunk-RUVKAPO5.js.map → chunk-2AUKMWRF.js.map} +0 -0
  126. /package/dist/{chunk-RMVG6YBI.js.map → chunk-2JWANM25.js.map} +0 -0
  127. /package/dist/{chunk-YRLBMLSA.js.map → chunk-3F7QLHMP.js.map} +0 -0
  128. /package/dist/{chunk-5GUK7MEN.js.map → chunk-AXU5ZCUE.js.map} +0 -0
  129. /package/dist/{chunk-H2SFR2GL.js.map → chunk-CS3U6LJU.js.map} +0 -0
  130. /package/dist/{chunk-NC3VBBHC.js.map → chunk-CSLZUVU4.js.map} +0 -0
  131. /package/dist/{chunk-AJVD3O4D.js.map → chunk-DOILOCWU.js.map} +0 -0
  132. /package/dist/{chunk-SZOOX2KY.js.map → chunk-DVQO5MHI.js.map} +0 -0
  133. /package/dist/{chunk-FBYLX5NA.js.map → chunk-EOJJ4IWJ.js.map} +0 -0
  134. /package/dist/{chunk-3CUVTXRN.js.map → chunk-J2SFMADD.js.map} +0 -0
  135. /package/dist/{chunk-S7ZMHO5I.js.map → chunk-JUM2HAIK.js.map} +0 -0
  136. /package/dist/{chunk-TJK6MTGG.js.map → chunk-LLY7VPXS.js.map} +0 -0
  137. /package/dist/{chunk-KHVEYIMF.js.map → chunk-SFZSHBWM.js.map} +0 -0
  138. /package/dist/{chunk-QVN32YBL.js.map → chunk-SJHGFMVF.js.map} +0 -0
  139. /package/dist/{chunk-3Z5ZZUO4.js.map → chunk-VUQOVQ5L.js.map} +0 -0
  140. /package/dist/{chunk-KG72IMCX.js.map → chunk-Y22Q3UYU.js.map} +0 -0
  141. /package/dist/{chunk-TPSZDGQJ.js.map → chunk-ZMENI53L.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as n}from"./chunk-AJVD3O4D.js";import{b as m}from"./chunk-MRYRNB7Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as r}from"react/jsx-runtime";function p({onSubmit:e}){let{terminationBag:i}=m();return r(n,{onSubmit:o(async t=>{await e?.(i?.parseFormValues(t)),i?.next()},"handleSubmit")})}o(p,"EmployeeCommunicationForm");export{p as a};
2
- //# sourceMappingURL=chunk-RUVKAPO5.js.map
1
+ import{a as n}from"./chunk-DOILOCWU.js";import{b as m}from"./chunk-MRYRNB7Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as r}from"react/jsx-runtime";function p({onSubmit:e}){let{terminationBag:i}=m();return r(n,{onSubmit:o(async t=>{await e?.(i?.parseFormValues(t)),i?.next()},"handleSubmit")})}o(p,"EmployeeCommunicationForm");export{p as a};
2
+ //# sourceMappingURL=chunk-2AUKMWRF.js.map
@@ -1,2 +1,2 @@
1
- import{a as m}from"./chunk-ZSBWDLBS.js";import{a as n}from"./chunk-QQ7KPOLK.js";import{a as e}from"./chunk-R2SDR47E.js";import{a as T}from"./chunk-S7ZMHO5I.js";import{a}from"./chunk-RUVKAPO5.js";import{a as f}from"./chunk-KHVEYIMF.js";import{a as r}from"./chunk-4OEBYZLZ.js";import{a as p}from"./chunk-TJK6MTGG.js";import{a as t}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{useId as c}from"react";import{jsx as u}from"react/jsx-runtime";var A=i(({employmentId:d,render:s,options:l})=>{let y=c(),o=e({employmentId:d,options:l});return u(t.Provider,{value:{formId:y,terminationBag:o},children:s({terminationBag:o,components:{SubmitButton:m,TimeOff:n,Back:r,EmployeeComunicationStep:a,TerminationDetailsStep:p,PaidTimeOffStep:f,AdditionalDetailsStep:T}})})},"TerminationFlow");export{A as a};
2
- //# sourceMappingURL=chunk-RMVG6YBI.js.map
1
+ import{a as m}from"./chunk-ZSBWDLBS.js";import{a as n}from"./chunk-QQ7KPOLK.js";import{a as e}from"./chunk-R2SDR47E.js";import{a as T}from"./chunk-JUM2HAIK.js";import{a}from"./chunk-2AUKMWRF.js";import{a as f}from"./chunk-SFZSHBWM.js";import{a as r}from"./chunk-4OEBYZLZ.js";import{a as p}from"./chunk-LLY7VPXS.js";import{a as t}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{useId as c}from"react";import{jsx as u}from"react/jsx-runtime";var A=i(({employmentId:d,render:s,options:l})=>{let y=c(),o=e({employmentId:d,options:l});return u(t.Provider,{value:{formId:y,terminationBag:o},children:s({terminationBag:o,components:{SubmitButton:m,TimeOff:n,Back:r,EmployeeComunicationStep:a,TerminationDetailsStep:p,PaidTimeOffStep:f,AdditionalDetailsStep:T}})})},"TerminationFlow");export{A as a};
2
+ //# sourceMappingURL=chunk-2JWANM25.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-SZOOX2KY.js";import{b as i}from"./chunk-PGWKJ6FK.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as d}from"react/jsx-runtime";function y({onSubmit:s,onSuccess:c,onError:t}){let{onboardingBag:o}=i(),u=e(async n=>{try{await s?.({countryCode:n.country});let r=await o.onSubmit(n);if(r?.data){await c?.(r?.data),o?.next();return}r?.error&&t?.({error:r.error,rawError:r.rawError,fieldErrors:[]})}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),l=o.stepState.values?.select_country||o.initialValues.select_country;return d(a,{defaultValues:l,onSubmit:u})}e(y,"SelectCountryStep");export{y as a};
2
- //# sourceMappingURL=chunk-YRLBMLSA.js.map
1
+ import{a}from"./chunk-DVQO5MHI.js";import{b as i}from"./chunk-PGWKJ6FK.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as d}from"react/jsx-runtime";function y({onSubmit:s,onSuccess:c,onError:t}){let{onboardingBag:o}=i(),u=e(async n=>{try{await s?.({countryCode:n.country});let r=await o.onSubmit(n);if(r?.data){await c?.(r?.data),o?.next();return}r?.error&&t?.({error:r.error,rawError:r.rawError,fieldErrors:[]})}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),l=o.stepState.values?.select_country||o.initialValues.select_country;return d(a,{defaultValues:l,onSubmit:u})}e(y,"SelectCountryStep");export{y as a};
2
+ //# sourceMappingURL=chunk-3F7QLHMP.js.map
@@ -0,0 +1,2 @@
1
+ import{a as d,b as p,c as g,d as x}from"./chunk-T3L72MV6.js";import{a as N}from"./chunk-5I6VWJSC.js";import{a as i,b as y}from"./chunk-3LOVCTCN.js";import{a as c}from"./chunk-P37U34EQ.js";import{ChevronDown as b,Globe as _}from"lucide-react";import{useState as A}from"react";import{Fragment as C,jsx as e,jsxs as r}from"react/jsx-runtime";var w=c(s=>{if(s.length<2)return{currency:null,costsPerCountry:[],employeesCost:null};let t=s[0]?.employer_currency_costs.currency,m=s.reduce((o,a)=>{let l=a.country.name;return o[l]={country:a.country,monthlyTotal:(o[l]?.monthlyTotal||0)+a.employer_currency_costs.monthly_total,annualTotal:(o[l]?.annualTotal||0)+a.employer_currency_costs.annual_total},o},{}),n=Object.values(m).map(({country:o,monthlyTotal:a,annualTotal:l})=>({country:o,monthlyCost:y(a,t.symbol),annualCost:y(l,t.symbol)})),u={monthlyTotal:y(s.reduce((o,a)=>o+a.employer_currency_costs.monthly_total,0),t.symbol),annualTotal:y(s.reduce((o,a)=>o+a.employer_currency_costs.annual_total,0),t.symbol)};return{currency:t,costsPerCountry:n,employeesCost:u}},"useSummaryResults"),T=c(({currency:s,title:t})=>e("div",{className:"flex items-center justify-between w-full",children:r("div",{className:"flex flex-row items-center gap-6",children:[e("div",{className:"flex h-12 w-12 items-center justify-center rounded-lg bg-[#F4F4F5]",children:e(_,{className:"h-6 w-6 text-[#000000]"})}),r("div",{className:"space-y-1",children:[e("h2",{className:"text-lg font-medium leading-none text-[#181818]",children:t}),r("p",{className:"text-xs text-[#71717A]",children:["Employer billing currency: ",s.code]})]})]})}),"SummaryHeader"),h=c(({label:s,columns:t,rows:m,defaultValue:n="accordion",className:u})=>{let o=t.length===1?"grid-cols-2":"grid-cols-3";return e(d,{type:"single",collapsible:!0,defaultValue:n,className:i("w-full",u),children:r(p,{value:n,className:"border-none",children:[e(g,{className:"hover:no-underline px-0 py-3 [&>svg]:hidden group",children:r("div",{className:i("grid items-center w-full",o),children:[r("div",{className:"flex items-center gap-2",children:[s,e(b,{className:"h-4 w-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180"})]}),t.length===1?e("span",{className:"text-xs text-[#27272A] text-right",children:t[0]}):t.map((a,l)=>e("span",{className:"text-xs text-[#27272A] text-right",children:a},l))]})}),e(x,{className:"px-0 pb-4",children:e("div",{className:"space-y-3",children:m.map((a,l)=>r("div",{className:i("grid items-center",o),children:[e("div",{className:"flex items-center gap-2",children:a.label}),t.length===1?e("span",{className:"text-sm text-[#09090B] text-right",children:a.values[0]}):a.values.map((v,f)=>e("span",{className:"text-sm text-[#09090B] text-right",children:v},f))]},l))})})]})})},"MultiColumnAccordion"),R=c(({employeesCost:s})=>e(h,{label:e("span",{className:"text-sm font-medium text-[#0F172A]",children:"Cost for all employees"}),columns:["Total cost"],rows:[{label:r(C,{children:[e("span",{className:"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0"}),e("span",{className:"text-sm text-[#09090B]",children:"Monthly cost"})]}),values:[s.monthlyTotal]},{label:r(C,{children:[e("span",{className:"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0"}),e("span",{className:"text-sm text-[#09090B]",children:"Annual cost"})]}),values:[s.annualTotal]}],defaultValue:"cost-breakdown"}),"CostForAllEmployees"),S=c(({costsPerCountry:s})=>e(h,{label:e("span",{className:"text-sm font-medium text-[#0F172A]",children:"Cost per country"}),columns:["Monthly cost","Annual cost"],rows:s.map(t=>({label:r(C,{children:[e("span",{className:"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0"}),e("span",{className:"text-sm text-[#09090B]",children:t.country.name})]}),values:[t.monthlyCost,t.annualCost]})),defaultValue:"country-breakdown"}),"CostsPerCountry"),E=c(({estimations:s})=>{let{currency:t,costsPerCountry:m,employeesCost:n}=w(s),[u,o]=A("summary");return!t||m.length===0||Object.keys(n).length===0?null:e(N,{className:"RemoteFlows__SummaryResults__Card p-10",children:e(d,{type:"single",collapsible:!0,defaultValue:u,onValueChange:o,className:"RemoteFlows__SummaryResults__Accordion w-full",children:r(p,{value:"summary",className:"border-border",children:[e("div",{className:i({RemoteFlows__Separator:u==="summary"}),children:e(g,{iconClassName:"size-6",className:"hover:no-underline px-0 py-4",children:e(T,{currency:t,title:"Summary Overview"})})}),r(x,{className:"px-0 pb-4 mt-6",children:[e("div",{className:"RemoteFlows__Separator",children:e(R,{employeesCost:n})}),e("div",{className:"mt-6",children:e(S,{costsPerCountry:m})})]})]})})})},"SummaryResults");export{E as a};
2
+ //# sourceMappingURL=chunk-52NPLMW3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/SummaryResults/SummaryResults.tsx"],"sourcesContent":["import { CostCalculatorEmployment, Currency } from '@/src/client';\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from '@/src/components/ui/accordion';\nimport { Card } from '@/src/components/ui/card';\nimport { cn, formatCurrency } from '@/src/lib/utils';\nimport { ChevronDown, Globe } from 'lucide-react';\nimport { useState } from 'react';\n\nconst useSummaryResults = (estimations: CostCalculatorEmployment[]) => {\n if (estimations.length < 2) {\n return {\n currency: null,\n costsPerCountry: [],\n employeesCost: null,\n };\n }\n const currency = estimations[0]?.employer_currency_costs.currency;\n const costsPerCountry = estimations.reduce(\n (acc, estimation) => {\n const countryName = estimation.country.name;\n\n acc[countryName] = {\n country: estimation.country,\n monthlyTotal:\n (acc[countryName]?.monthlyTotal || 0) +\n estimation.employer_currency_costs.monthly_total,\n annualTotal:\n (acc[countryName]?.annualTotal || 0) +\n estimation.employer_currency_costs.annual_total,\n };\n\n return acc;\n },\n {} as Record<\n string,\n {\n country: (typeof estimations)[0]['country'];\n monthlyTotal: number;\n annualTotal: number;\n }\n >,\n );\n\n const groupedCostsPerCountry = Object.values(costsPerCountry).map(\n ({ country, monthlyTotal, annualTotal }) => ({\n country,\n monthlyCost: formatCurrency(monthlyTotal, currency.symbol),\n annualCost: formatCurrency(annualTotal, currency.symbol),\n }),\n );\n\n const employeesCost = {\n monthlyTotal: formatCurrency(\n estimations.reduce((acc, estimation) => {\n return acc + estimation.employer_currency_costs.monthly_total;\n }, 0),\n currency.symbol,\n ),\n annualTotal: formatCurrency(\n estimations.reduce((acc, estimation) => {\n return acc + estimation.employer_currency_costs.annual_total;\n }, 0),\n currency.symbol,\n ),\n };\n return { currency, costsPerCountry: groupedCostsPerCountry, employeesCost };\n};\n\nconst SummaryHeader = ({\n currency,\n title,\n}: {\n currency: Currency;\n title: string;\n}) => {\n return (\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex flex-row items-center gap-6\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-lg bg-[#F4F4F5]\">\n <Globe className=\"h-6 w-6 text-[#000000]\" />\n </div>\n <div className=\"space-y-1\">\n <h2 className=\"text-lg font-medium leading-none text-[#181818]\">\n {title}\n </h2>\n <p className=\"text-xs text-[#71717A]\">\n Employer billing currency: {currency.code}\n </p>\n </div>\n </div>\n </div>\n );\n};\n\nconst MultiColumnAccordion = ({\n label,\n columns,\n rows,\n defaultValue = 'accordion',\n className,\n}: {\n label: React.ReactNode;\n columns: string[];\n rows: Array<{\n label: React.ReactNode;\n values: string[];\n }>;\n defaultValue?: string;\n className?: string;\n}) => {\n const gridCols = columns.length === 1 ? 'grid-cols-2' : 'grid-cols-3';\n\n return (\n <Accordion\n type=\"single\"\n collapsible\n defaultValue={defaultValue}\n className={cn('w-full', className)}\n >\n <AccordionItem value={defaultValue} className=\"border-none\">\n <AccordionTrigger className=\"hover:no-underline px-0 py-3 [&>svg]:hidden group\">\n <div className={cn('grid items-center w-full', gridCols)}>\n <div className=\"flex items-center gap-2\">\n {label}\n <ChevronDown className=\"h-4 w-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </div>\n {columns.length === 1 ? (\n <span className=\"text-xs text-[#27272A] text-right\">\n {columns[0]}\n </span>\n ) : (\n columns.map((column, index) => (\n <span key={index} className=\"text-xs text-[#27272A] text-right\">\n {column}\n </span>\n ))\n )}\n </div>\n </AccordionTrigger>\n\n <AccordionContent className=\"px-0 pb-4\">\n <div className=\"space-y-3\">\n {rows.map((row, index) => (\n <div key={index} className={cn('grid items-center', gridCols)}>\n <div className=\"flex items-center gap-2\">{row.label}</div>\n {columns.length === 1 ? (\n <span className=\"text-sm text-[#09090B] text-right\">\n {row.values[0]}\n </span>\n ) : (\n row.values.map((value, valueIndex) => (\n <span\n key={valueIndex}\n className=\"text-sm text-[#09090B] text-right\"\n >\n {value}\n </span>\n ))\n )}\n </div>\n ))}\n </div>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n );\n};\n\nconst CostForAllEmployees = ({\n employeesCost,\n}: {\n employeesCost: { monthlyTotal: string; annualTotal: string };\n}) => {\n return (\n <MultiColumnAccordion\n label={\n <span className=\"text-sm font-medium text-[#0F172A]\">\n Cost for all employees\n </span>\n }\n columns={['Total cost']}\n rows={[\n {\n label: (\n <>\n <span className=\"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0\" />\n <span className=\"text-sm text-[#09090B]\">Monthly cost</span>\n </>\n ),\n values: [employeesCost.monthlyTotal],\n },\n {\n label: (\n <>\n <span className=\"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0\" />\n <span className=\"text-sm text-[#09090B]\">Annual cost</span>\n </>\n ),\n values: [employeesCost.annualTotal],\n },\n ]}\n defaultValue=\"cost-breakdown\"\n />\n );\n};\n\nconst CostsPerCountry = ({\n costsPerCountry,\n}: {\n costsPerCountry: Array<{\n country: { name: string };\n monthlyCost: string;\n annualCost: string;\n }>;\n}) => {\n return (\n <MultiColumnAccordion\n label={\n <span className=\"text-sm font-medium text-[#0F172A]\">\n Cost per country\n </span>\n }\n columns={['Monthly cost', 'Annual cost']}\n rows={costsPerCountry.map((cost) => ({\n label: (\n <>\n <span className=\"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0\" />\n <span className=\"text-sm text-[#09090B]\">{cost.country.name}</span>\n </>\n ),\n values: [cost.monthlyCost, cost.annualCost],\n }))}\n defaultValue=\"country-breakdown\"\n />\n );\n};\n\ntype SummaryResultsProps = {\n /**\n * Array of employments to compare costs for.\n * 2 estimations required for the component to render\n */\n estimations: CostCalculatorEmployment[];\n};\n\n/**\n * Displays a summary comparison of costs across multiple estimations.\n * The component will return null if you pass less than 2 estimations.\n */\nexport const SummaryResults = ({ estimations }: SummaryResultsProps) => {\n const { currency, costsPerCountry, employeesCost } =\n useSummaryResults(estimations);\n\n const [accordionValue, setAccordionValue] = useState('summary');\n\n if (\n !currency ||\n costsPerCountry.length === 0 ||\n Object.keys(employeesCost).length === 0\n ) {\n return null;\n }\n\n return (\n <Card className=\"RemoteFlows__SummaryResults__Card p-10\">\n <Accordion\n type=\"single\"\n collapsible\n defaultValue={accordionValue}\n onValueChange={setAccordionValue}\n className=\"RemoteFlows__SummaryResults__Accordion w-full\"\n >\n <AccordionItem value=\"summary\" className=\"border-border\">\n <div\n className={cn({\n RemoteFlows__Separator: accordionValue === 'summary',\n })}\n >\n <AccordionTrigger\n iconClassName=\"size-6\"\n className=\"hover:no-underline px-0 py-4\"\n >\n <SummaryHeader currency={currency} title=\"Summary Overview\" />\n </AccordionTrigger>\n </div>\n <AccordionContent className=\"px-0 pb-4 mt-6\">\n <div className=\"RemoteFlows__Separator\">\n <CostForAllEmployees employeesCost={employeesCost} />\n </div>\n <div className=\"mt-6\">\n <CostsPerCountry costsPerCountry={costsPerCountry} />\n </div>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n </Card>\n );\n};\n"],"mappings":"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","names":["ChevronDown","Globe","useState","Fragment","jsx","jsxs","useSummaryResults","__name","estimations","currency","costsPerCountry","acc","estimation","countryName","groupedCostsPerCountry","country","monthlyTotal","annualTotal","formatCurrency","employeesCost","SummaryHeader","title","Globe","MultiColumnAccordion","label","columns","rows","defaultValue","className","gridCols","Accordion","cn","AccordionItem","AccordionTrigger","ChevronDown","column","index","AccordionContent","row","value","valueIndex","CostForAllEmployees","CostsPerCountry","cost","SummaryResults","accordionValue","setAccordionValue","useState","Card"]}
@@ -0,0 +1,2 @@
1
+ import{a as H}from"./chunk-JKYTL5QY.js";import{a as T}from"./chunk-NPZ5QJSG.js";import{a as U,b as G,c as $,e as z}from"./chunk-5E44DBDD.js";import{a as q}from"./chunk-CFIJKJXD.js";import{c as F}from"./chunk-MXFDOIUA.js";import{a as n}from"./chunk-P37U34EQ.js";import{object as ye}from"yup";import{createHeadlessForm as le,modify as ce}from"@remoteoss/json-schema-form";import{useCallback as ue,useEffect as I,useMemo as me,useState as v}from"react";import{string as N,ValidationError as D}from"yup";import{jsx as fe}from"react/jsx-runtime";var A={title:"Estimation",includeBenefits:!1,includeCostBreakdowns:!1,includePremiumBenefits:!1,enableCurrencyConversion:!1,includeManagementFee:!1},de=n(t=>{let{schema:s}=ce(T.data.schema,t?.jsfModify||{});return le(s)},"useStaticSchema"),je=n(({defaultRegion:t,defaultCurrency:s,defaultSalary:a,estimationOptions:o,options:i,version:g}={estimationOptions:A})=>{let[w,E]=v(t),[j,R]=v(),[u,J]=v(),{data:d,isLoading:W}=U({includePremiumBenefits:o.includePremiumBenefits}),{data:f,isLoading:X}=G(),Y=w||j?.value,{data:P,isLoading:Z}=z(Y,{includePremiumBenefits:o.includePremiumBenefits,options:i}),L=$(),m=j?.currency,y=i?.jsfModify?.fields?.salary,S=y&&typeof y=="object"&&"presentation"in y?y.presentation:void 0,ee=ue(()=>{let e=m&&u?m!==u:!1;return m!==u?{from:u,to:m,shouldSwapOrder:e}:{from:m,to:u,shouldSwapOrder:e}},[m,u]),re=me(()=>{let{from:e,to:r,shouldSwapOrder:l}=ee();return{fields:{salary:{...y,presentation:{salary_conversion_properties:{label:S?.salary_conversion_properties?.label,description:S?.salary_conversion_properties?.description},currencies:{from:e,to:r},Component:n(c=>fe(H,{...c,shouldSwapOrder:l,conversionType:g==="marketing"?"no_spread":"spread",defaultValue:a}),"Component")}}}}},[m,u,y,S?.salary_conversion_properties?.description,S?.salary_conversion_properties?.label]),p=de({jsfModify:{fields:{...i?.jsfModify?.fields,...re?.fields}}});I(()=>{if(t&&d){let e=d.find(({value:r})=>r===t);e&&R(e)}},[t,d]),I(()=>{if(s&&f){let e=f.find(({value:r})=>r===s);e&&J(e.label)}},[s,f]);async function te(e){try{await O.validate(e,{abortEarly:!1})}catch(r){return{data:null,error:r}}return new Promise((r,l)=>{L.mutate(Q(e,o,g),{onSuccess:n(c=>{c.data?r({data:c.data,error:null}):r({data:null,error:new Error("Something went wrong. Please try again later.")})},"onSuccess"),onError:n(c=>{l({data:null,error:c})},"onError")})})}n(te,"onSubmit");function ne(e){let r=d?.find(({value:l})=>l===e);r&&r.childRegions.length===0&&r.hasAdditionalFields?E(r.regionSlug):E(void 0),R(r)}n(ne,"onCountryChange");function oe(e){E(e)}n(oe,"onRegionChange");function se(e){let r=f?.find(l=>l.value===e)?.label;J(r)}n(se,"onChangeCurrency");let C=p.fields.find(e=>e.name==="region");if(C){let e=j?.childRegions.map(r=>({value:r.slug,label:r.name}))??[];C.options=e,C.isVisible=e.length>0,C.required=e.length>0,C.onChange=oe,C.schema=e.length>0?N().transform(r=>typeof r=="string"?r:"").required("Region is required"):N()}if(f){let e=p.fields.find(r=>r.name==="currency");e&&(e.options=f,e.onChange=se)}if(d){let e=p.fields.find(r=>r.name==="country");e&&(e.options=d,e.onChange=ne)}let ie=n(()=>{R(void 0),E(t)},"resetForm"),k=[...p.fields,...P?.fields||[]],O=K(p.fields);async function ae(e){let r=null,l=F(e,k);try{await O.validate(l,{abortEarly:!1}),r={formErrors:{},yupError:new D([],e)}}catch(_){let V=q(_);r={formErrors:Object.entries(V).reduce((x,[M,B])=>({...x,[M]:B.message}),{}),yupError:_}}let c=P?.handleValidation(l),b=[...r?.yupError.inner||[],...c?.yupError?.inner||[]],h={...r?.yupError?.value||{},...c?.yupError?.value||{}};return{formErrors:{...r?.formErrors||{},...c?.formErrors||{}},yupError:new D(b,h)}}return n(ae,"handleValidation"),{stepState:{current:0,total:1,isLastStep:!0},fields:k,validationSchema:O,parseFormValues:n(e=>{let{country:r,region:l,currency:c,salary_converted:b,salary_conversion:h,..._}=e,V=e.salary;b==="salary_conversion"&&(V=h);let M=F({country:r,region:l,salary:V,salary_converted:b,salary_conversion:h,currency:c},p.fields),B=F(_,P?.fields||[]);return{...M,...B}},"parseFormValues"),handleValidation:ae,isSubmitting:L.isPending,isLoading:W&&X&&Z,onSubmit:te,resetForm:ie}},"useCostCalculator");function K(t){let s=t.reduce((a,o)=>{return o.name==="salary"||o.name==="salary_conversion"?a[o.name]=o.schema.when("salary_converted",{is:n(i=>i===o.name,"is"),then:n(i=>i.required("Salary is required"),"then"),otherwise:n(i=>i.optional(),"otherwise")}):a[o.name]=o.schema,a;return a},{});return ye(s)}n(K,"buildValidationSchema");function pe(t){let s="benefit-";return Object.keys(t).reduce((a,o)=>{let i=t[o];if(i==="none")return a;let w={benefit_group_slug:o.replace(s,""),benefit_tier_slug:i};return[...a,w]},[])}n(pe,"formatBenefits");function Ce(t,s,a){return{region_slug:t.region||t.country,employment_term:t.contract_duration_type??"fixed",title:s.title,age:t.age??void 0,...t.benefits&&{benefits:pe(t.benefits)},...(a=="marketing"||t.salary_converted==="salary_conversion")&&{annual_gross_salary_in_employer_currency:t.salary},...a==="standard"&&t.salary_converted==="salary"&&{annual_gross_salary:t.salary}}}n(Ce,"mapValueToEmployment");function Q(t,s=A,a="standard"){let o=Array.isArray(t)?t:[t];if(o.length===0)throw new Error("At least one employment value is required");return o.length>1&&new Set(o.map(g=>g.currency)).size>1&&console.warn("Multiple currencies detected in array. Using currency from first employment."),{employer_currency_slug:o[0].currency,include_benefits:s.includeBenefits,include_cost_breakdowns:s.includeCostBreakdowns,include_premium_benefits:s.includePremiumBenefits,include_management_fee:s.includeManagementFee,employments:o.map(i=>Ce(i,s,a))}}n(Q,"buildPayload");export{K as a,Q as b,A as c,je as d};
2
+ //# sourceMappingURL=chunk-5CUF63YR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/utils.ts","../src/flows/CostCalculator/hooks.tsx"],"sourcesContent":["import type { CostCalculatorEstimateParams } from '@/src/client';\n\nimport { $TSFixMe } from '@/src/types/remoteFlows';\nimport { AnyObjectSchema, object } from 'yup';\nimport { CostCalculatorVersion, defaultEstimationOptions } from './hooks';\nimport type {\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n} from './types';\n\n/**\n * Build the validation schema for the form.\n * @returns\n */\nexport function buildValidationSchema(fields: $TSFixMe[]) {\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('Salary is required'),\n otherwise: (schema) => schema.optional(),\n },\n );\n } else {\n fieldsSchemaAcc[field.name] = field.schema as AnyObjectSchema;\n }\n return fieldsSchemaAcc;\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) {\n return {\n region_slug: value.region || value.country,\n employment_term: value.contract_duration_type ?? 'fixed',\n title: estimationOptions.title,\n age: value.age ?? undefined,\n ...(value.benefits && { benefits: formatBenefits(value.benefits) }),\n ...((version == 'marketing' ||\n value.salary_converted === 'salary_conversion') && {\n annual_gross_salary_in_employer_currency: value.salary,\n }),\n ...(version === 'standard' &&\n value.salary_converted === 'salary' && {\n annual_gross_salary: value.salary,\n }),\n };\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 {\n CostCalculatorEstimateResponse,\n MinimalRegion,\n PostCreateEstimationError,\n} from '@/src/client';\nimport { jsonSchema } from '@/src/flows/CostCalculator/jsonSchema';\nimport type {\n CostCalculatorEstimationFormValues,\n CostCalculatorEstimationOptions,\n CostCalculatorEstimationSubmitValues,\n EstimationError,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport type { JSFModify, Result } 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, 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 { JSFField } from '@/src/types/remoteFlows';\nimport { SalaryField } from '@/src/flows/CostCalculator/components/SalaryField';\n\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 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\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 [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 { 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 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 customFields = useMemo(() => {\n const { from, to, shouldSwapOrder } = getCurrencies();\n\n return {\n fields: {\n salary: {\n ...salaryField,\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 },\n };\n }, [\n employeeBillingCurrency,\n employerBillingCurrency,\n salaryField,\n salaryFieldPresentation?.salary_conversion_properties?.description,\n salaryFieldPresentation?.salary_conversion_properties?.label,\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(\n values: CostCalculatorEstimationSubmitValues,\n ): Promise<Result<CostCalculatorEstimateResponse, EstimationError>> {\n try {\n await validationSchema.validate(values, { abortEarly: false });\n } catch (err) {\n return {\n data: null,\n error: err as ValidationError,\n };\n }\n\n return new Promise((resolve, reject) => {\n costCalculatorEstimationMutation.mutate(\n buildPayload(values, estimationOptions, version),\n {\n onSuccess: (response) => {\n if (response.data) {\n resolve({\n data: response.data,\n error: null,\n });\n } else {\n resolve({\n data: null,\n error: new Error(\n 'Something went wrong. Please try again later.',\n ),\n });\n }\n },\n onError: (error) => {\n reject({\n data: null,\n error: error as PostCreateEstimationError,\n });\n },\n },\n );\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 onChangeCurrency(currency: string) {\n const selectedCurrency = currencies?.find(\n (c) => c.value === currency,\n )?.label;\n setEmployerBillingCurrency(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 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,\n ...(jsonSchemaRegionFields?.fields || []),\n ];\n\n const validationSchema = buildValidationSchema(fieldsJSONSchema.fields);\n\n async function handleValidation(values: CostCalculatorEstimationFormValues) {\n let errors: JSFValidationError | null = null;\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 stepState: {\n current: 0,\n total: 1,\n isLastStep: true,\n },\n fields: allFields,\n validationSchema,\n parseFormValues: (\n values: CostCalculatorEstimationFormValues,\n ): CostCalculatorEstimationSubmitValues => {\n const {\n country,\n region,\n currency,\n salary_converted,\n salary_conversion,\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 currency,\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 return {\n ...parsedStaticFields,\n ...parsedRegionFields,\n } as CostCalculatorEstimationSubmitValues;\n },\n handleValidation,\n isSubmitting: costCalculatorEstimationMutation.isPending,\n isLoading:\n isLoadingCountries && isLoadingCurrencies && isLoadingRegionFields,\n onSubmit,\n resetForm,\n };\n};\n"],"mappings":"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","names":["object","createHeadlessForm","modify","useCallback","useEffect","useMemo","useState","string","ValidationError","jsx","defaultEstimationOptions","useStaticSchema","__name","options","jsonSchemaModified","modify","jsonSchema","createHeadlessForm","useCostCalculator","defaultRegion","defaultCurrency","defaultSalary","estimationOptions","version","selectedRegion","setSelectedRegion","useState","selectedCountry","setSelectedCountry","employerBillingCurrency","setEmployerBillingCurrency","countries","isLoadingCountries","useCostCalculatorCountries","currencies","isLoadingCurrencies","useCompanyCurrencies","jsonSchemaRegionSlug","jsonSchemaRegionFields","isLoadingRegionFields","useRegionFields","costCalculatorEstimationMutation","useCostCalculatorEstimation","employeeBillingCurrency","salaryField","salaryFieldPresentation","getCurrencies","useCallback","shouldSwapOrder","customFields","useMemo","from","to","props","SalaryField","fieldsJSONSchema","useEffect","defaultCountry","value","defaultCurrencyObj","onSubmit","values","validationSchema","err","resolve","reject","buildPayload","response","error","onCountryChange","country","currentCountry","onRegionChange","region","onChangeCurrency","currency","selectedCurrency","c","regionField","field","regions","string","currencyField","countryField","resetForm","allFields","buildValidationSchema","handleValidation","errors","parsedValues","parseJSFToValidate","ValidationError","iterateResult","iterateErrors","acc","key","handleValidationResult","combinedInnerErrors","combinedValues","salary_converted","salary_conversion","rest","salary","parsedStaticFields","parsedRegionFields","buildValidationSchema","fields","fieldsSchema","fieldsSchemaAcc","field","__name","val","schema","object","formatBenefits","benefits","needle","acc","key","benefitTierSlug","benefitEntry","mapValueToEmployment","value","estimationOptions","version","buildPayload","values","defaultEstimationOptions","employments","v"]}
@@ -1,2 +1,2 @@
1
- import{a as r}from"./chunk-NC3VBBHC.js";import{a}from"./chunk-R7L6CI5J.js";import{a as c}from"./chunk-DHT7HDHC.js";import{a as e}from"./chunk-GBD3OCAW.js";import{a as m}from"./chunk-N7PSO5ZD.js";import{a as o}from"./chunk-TVZAFTPT.js";import{a as n}from"./chunk-P37U34EQ.js";import{useId as f}from"react";import{jsx as s}from"react/jsx-runtime";function k({employmentId:d,countryCode:C,options:p,render:A}){let t=c({employmentId:d,countryCode:C,options:p}),i=f();return s(o.Provider,{value:{formId:i,contractAmendmentBag:t},children:A({contractAmendmentBag:t,components:{Form:r,SubmitButton:a,ConfirmationForm:m,BackButton:e}})})}n(k,"ContractAmendmentFlow");export{k as a};
2
- //# sourceMappingURL=chunk-5GUK7MEN.js.map
1
+ import{a as r}from"./chunk-CSLZUVU4.js";import{a}from"./chunk-R7L6CI5J.js";import{a as c}from"./chunk-DHT7HDHC.js";import{a as e}from"./chunk-GBD3OCAW.js";import{a as m}from"./chunk-N7PSO5ZD.js";import{a as o}from"./chunk-TVZAFTPT.js";import{a as n}from"./chunk-P37U34EQ.js";import{useId as f}from"react";import{jsx as s}from"react/jsx-runtime";function k({employmentId:d,countryCode:C,options:p,render:A}){let t=c({employmentId:d,countryCode:C,options:p}),i=f();return s(o.Provider,{value:{formId:i,contractAmendmentBag:t},children:A({contractAmendmentBag:t,components:{Form:r,SubmitButton:a,ConfirmationForm:m,BackButton:e}})})}n(k,"ContractAmendmentFlow");export{k as a};
2
+ //# sourceMappingURL=chunk-AXU5ZCUE.js.map
@@ -1,2 +1,2 @@
1
- import{a as s}from"./chunk-SZOOX2KY.js";import{b as t}from"./chunk-PGWKJ6FK.js";import{b as e}from"./chunk-QW4JPW6J.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as c}from"react/jsx-runtime";function S({onSubmit:m,onSuccess:d,onError:a}){let{onboardingBag:o}=t(),l=i(async n=>{try{await m?.(o.parseFormValues(n));let r=await o.onSubmit(n);if(r?.data){await d?.(r?.data),o?.next();return}if(r?.error){let p=e(r?.fieldErrors||[],o.meta?.fields?.basic_information);a?.({error:r?.error,rawError:r?.rawError,fieldErrors:p})}}catch(r){a?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),f=o.stepState.values?.basic_information||o.initialValues.basic_information;return c(s,{defaultValues:f,onSubmit:l})}i(S,"BasicInformationStep");export{S as a};
2
- //# sourceMappingURL=chunk-H2SFR2GL.js.map
1
+ import{a as s}from"./chunk-DVQO5MHI.js";import{b as t}from"./chunk-PGWKJ6FK.js";import{b as e}from"./chunk-QW4JPW6J.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as c}from"react/jsx-runtime";function S({onSubmit:m,onSuccess:d,onError:a}){let{onboardingBag:o}=t(),l=i(async n=>{try{await m?.(o.parseFormValues(n));let r=await o.onSubmit(n);if(r?.data){await d?.(r?.data),o?.next();return}if(r?.error){let p=e(r?.fieldErrors||[],o.meta?.fields?.basic_information);a?.({error:r?.error,rawError:r?.rawError,fieldErrors:p})}}catch(r){a?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit"),f=o.stepState.values?.basic_information||o.initialValues.basic_information;return c(s,{defaultValues:f,onSubmit:l})}i(S,"BasicInformationStep");export{S as a};
2
+ //# sourceMappingURL=chunk-CS3U6LJU.js.map
@@ -1,2 +1,2 @@
1
- import{a as F}from"./chunk-AVA4MEFP.js";import{b as l}from"./chunk-CFIJKJXD.js";import{f,g as p}from"./chunk-GAOBYAJE.js";import{c as u}from"./chunk-MXFDOIUA.js";import{b as _}from"./chunk-TVZAFTPT.js";import{a as r}from"./chunk-P37U34EQ.js";import{useEffect as R}from"react";import{jsx as a}from"react/jsx-runtime";var w=["effective_date","reason_for_change","reason_for_change_description","additional_comments","additional_comments_toggle"];function x({onSubmit:b,onError:m,onSuccess:A}){let{formId:C,contractAmendment:{checkFieldUpdates:h,fields:s,onSubmit:S,stepState:g,initialValues:i,handleValidation:y}}=_(),V=l(y),e=f({resolver:V,defaultValues:g.values?.form||i,shouldUnregister:!0,mode:"onBlur"});R(()=>{let t=e?.watch(o=>{(Object.keys(e.formState.dirtyFields).length>0||e.formState.isDirty)&&h(o)});return()=>t?.unsubscribe()},[]);let v=r(async t=>{let o=!1;for(let[c,P]of Object.entries(t))if(!w.includes(c)&&i[c]!==P){o=!0;break}if(!o)return m?.({message:"no_changes_detected_contract_details"});let d=u(t,s,{isPartialValidation:!1});await b?.(d);let n=await S(t);n.error?m?.(n.error):await A?.(n.data)},"handleSubmit");return a(p,{...e,children:a("form",{id:C,"data-testid":"contract-amendment-form",onSubmit:e.handleSubmit(v),className:"space-y-4 RemoteFlows__ContractAmendmentForm",children:a(F,{fields:s})})})}r(x,"ContractAmendmentForm");export{x as a};
2
- //# sourceMappingURL=chunk-NC3VBBHC.js.map
1
+ import{a as F}from"./chunk-SUQURI2J.js";import{b as l}from"./chunk-CFIJKJXD.js";import{f,g as p}from"./chunk-GAOBYAJE.js";import{c as u}from"./chunk-MXFDOIUA.js";import{b as _}from"./chunk-TVZAFTPT.js";import{a as r}from"./chunk-P37U34EQ.js";import{useEffect as R}from"react";import{jsx as a}from"react/jsx-runtime";var w=["effective_date","reason_for_change","reason_for_change_description","additional_comments","additional_comments_toggle"];function x({onSubmit:b,onError:m,onSuccess:A}){let{formId:C,contractAmendment:{checkFieldUpdates:h,fields:s,onSubmit:S,stepState:g,initialValues:i,handleValidation:y}}=_(),V=l(y),e=f({resolver:V,defaultValues:g.values?.form||i,shouldUnregister:!0,mode:"onBlur"});R(()=>{let t=e?.watch(o=>{(Object.keys(e.formState.dirtyFields).length>0||e.formState.isDirty)&&h(o)});return()=>t?.unsubscribe()},[]);let v=r(async t=>{let o=!1;for(let[c,P]of Object.entries(t))if(!w.includes(c)&&i[c]!==P){o=!0;break}if(!o)return m?.({message:"no_changes_detected_contract_details"});let d=u(t,s,{isPartialValidation:!1});await b?.(d);let n=await S(t);n.error?m?.(n.error):await A?.(n.data)},"handleSubmit");return a(p,{...e,children:a("form",{id:C,"data-testid":"contract-amendment-form",onSubmit:e.handleSubmit(v),className:"space-y-4 RemoteFlows__ContractAmendmentForm",children:a(F,{fields:s})})})}r(x,"ContractAmendmentForm");export{x as a};
2
+ //# sourceMappingURL=chunk-CSLZUVU4.js.map
@@ -1,2 +1,2 @@
1
- import{b as d}from"./chunk-MRYRNB7Y.js";import{a as f}from"./chunk-AVA4MEFP.js";import{b as s}from"./chunk-CFIJKJXD.js";import{f as a,g as l}from"./chunk-GAOBYAJE.js";import{a as n}from"./chunk-P37U34EQ.js";import{useEffect as T}from"react";import{jsx as e}from"react/jsx-runtime";function A({fields:m,onSubmit:F}){let{formId:u,terminationBag:o}=d(),c=s(o.handleValidation),i=a({resolver:c,defaultValues:o?.initialValues,shouldUnregister:!1,mode:"onBlur"});T(()=>{let y=i?.watch(r=>{Object.keys(r).some(t=>r[t]!==o?.initialValues?.[t])&&o?.checkFieldUpdates(r)});return()=>y?.unsubscribe()},[]);let p=m||(o?.fields??[]);return e(l,{...i,children:e("form",{id:u,onSubmit:i.handleSubmit(F),className:"space-y-4 RemoteFlows__TerminationForm",children:e(f,{fields:p})})})}n(A,"TerminationForm");export{A as a};
2
- //# sourceMappingURL=chunk-AJVD3O4D.js.map
1
+ import{b as d}from"./chunk-MRYRNB7Y.js";import{a as f}from"./chunk-SUQURI2J.js";import{b as s}from"./chunk-CFIJKJXD.js";import{f as a,g as l}from"./chunk-GAOBYAJE.js";import{a as n}from"./chunk-P37U34EQ.js";import{useEffect as T}from"react";import{jsx as e}from"react/jsx-runtime";function A({fields:m,onSubmit:F}){let{formId:u,terminationBag:o}=d(),c=s(o.handleValidation),i=a({resolver:c,defaultValues:o?.initialValues,shouldUnregister:!1,mode:"onBlur"});T(()=>{let y=i?.watch(r=>{Object.keys(r).some(t=>r[t]!==o?.initialValues?.[t])&&o?.checkFieldUpdates(r)});return()=>y?.unsubscribe()},[]);let p=m||(o?.fields??[]);return e(l,{...i,children:e("form",{id:u,onSubmit:i.handleSubmit(F),className:"space-y-4 RemoteFlows__TerminationForm",children:e(f,{fields:p})})})}n(A,"TerminationForm");export{A as a};
2
+ //# sourceMappingURL=chunk-DOILOCWU.js.map
@@ -1,2 +1,2 @@
1
- import{b}from"./chunk-PGWKJ6FK.js";import{a as u}from"./chunk-AVA4MEFP.js";import{b as f}from"./chunk-CFIJKJXD.js";import{b as y}from"./chunk-QW4JPW6J.js";import{f as p,g as F}from"./chunk-GAOBYAJE.js";import{a as m}from"./chunk-P37U34EQ.js";import{useEffect as S}from"react";import{jsx as d}from"react/jsx-runtime";function N({defaultValues:l,onSubmit:g,components:E}){let{formId:w,onboardingBag:o}=b(),h=f(o.handleValidation),r=p({resolver:h,defaultValues:l,shouldUnregister:!1,mode:"onBlur"});S(()=>{o.employmentId&&o?.checkFieldUpdates(r.getValues())},[]),S(()=>{let t=r?.watch(e=>{Object.keys(e).some(i=>e[i]!==l[i])&&o?.checkFieldUpdates(e)});return()=>t?.unsubscribe()},[]);let k=m(async(t,e)=>{let s=e?.nativeEvent;if(s?.isDraftSubmission){let{onSuccess:i,onError:c}=s.draftCallbacks;try{if(!await r.trigger())return;let n=await o.onSubmit(t);if(n?.data)i?.();else if(n?.error){let B=o.stepState.currentStep.name,P=o.meta?.fields?.[B],O=y(n?.fieldErrors||[],P);c?.({error:n.error,rawError:n.rawError,fieldErrors:O})}}catch(a){c?.({error:a,rawError:a,fieldErrors:[]})}}else g(t)},"handleSubmit");return d(F,{...r,children:d("form",{id:w,onSubmit:r.handleSubmit(k),className:"space-y-4 RemoteFlows__OnboardingForm",children:d(u,{components:E,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})})})}m(N,"OnboardingForm");export{N as a};
2
- //# sourceMappingURL=chunk-SZOOX2KY.js.map
1
+ import{b}from"./chunk-PGWKJ6FK.js";import{a as u}from"./chunk-SUQURI2J.js";import{b as f}from"./chunk-CFIJKJXD.js";import{b as y}from"./chunk-QW4JPW6J.js";import{f as p,g as F}from"./chunk-GAOBYAJE.js";import{a as m}from"./chunk-P37U34EQ.js";import{useEffect as S}from"react";import{jsx as d}from"react/jsx-runtime";function N({defaultValues:l,onSubmit:g,components:E}){let{formId:w,onboardingBag:o}=b(),h=f(o.handleValidation),r=p({resolver:h,defaultValues:l,shouldUnregister:!1,mode:"onBlur"});S(()=>{o.employmentId&&o?.checkFieldUpdates(r.getValues())},[]),S(()=>{let t=r?.watch(e=>{Object.keys(e).some(i=>e[i]!==l[i])&&o?.checkFieldUpdates(e)});return()=>t?.unsubscribe()},[]);let k=m(async(t,e)=>{let s=e?.nativeEvent;if(s?.isDraftSubmission){let{onSuccess:i,onError:c}=s.draftCallbacks;try{if(!await r.trigger())return;let n=await o.onSubmit(t);if(n?.data)i?.();else if(n?.error){let B=o.stepState.currentStep.name,P=o.meta?.fields?.[B],O=y(n?.fieldErrors||[],P);c?.({error:n.error,rawError:n.rawError,fieldErrors:O})}}catch(a){c?.({error:a,rawError:a,fieldErrors:[]})}}else g(t)},"handleSubmit");return d(F,{...r,children:d("form",{id:w,onSubmit:r.handleSubmit(k),className:"space-y-4 RemoteFlows__OnboardingForm",children:d(u,{components:E,fields:o.fields,fieldsets:o.meta.fieldsets,fieldValues:o.fieldValues})})})}m(N,"OnboardingForm");export{N as a};
2
+ //# sourceMappingURL=chunk-DVQO5MHI.js.map
@@ -1,2 +1,2 @@
1
- import{a as s}from"./chunk-SZOOX2KY.js";import{b as n}from"./chunk-PGWKJ6FK.js";import{b as i}from"./chunk-QW4JPW6J.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as p}from"react/jsx-runtime";function F({onSubmit:l,onError:t,onSuccess:d}){let{onboardingBag:o}=n(),m=e(async a=>{try{await l?.(o.parseFormValues(a));let r=await o.onSubmit(a);if(r?.data){await d?.(r.data),o?.next();return}if(r?.error){let c=i(r?.fieldErrors||[],o.meta?.fields?.contract_details);t?.({error:r.error,rawError:r.rawError,fieldErrors:c})}}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit");return p(s,{defaultValues:o.stepState.values?.contract_details||o.initialValues.contract_details,onSubmit:m})}e(F,"ContractDetailsStep");export{F as a};
2
- //# sourceMappingURL=chunk-FBYLX5NA.js.map
1
+ import{a as s}from"./chunk-DVQO5MHI.js";import{b as n}from"./chunk-PGWKJ6FK.js";import{b as i}from"./chunk-QW4JPW6J.js";import{a as e}from"./chunk-P37U34EQ.js";import{jsx as p}from"react/jsx-runtime";function F({onSubmit:l,onError:t,onSuccess:d}){let{onboardingBag:o}=n(),m=e(async a=>{try{await l?.(o.parseFormValues(a));let r=await o.onSubmit(a);if(r?.data){await d?.(r.data),o?.next();return}if(r?.error){let c=i(r?.fieldErrors||[],o.meta?.fields?.contract_details);t?.({error:r.error,rawError:r.rawError,fieldErrors:c})}}catch(r){t?.({error:r,rawError:r,fieldErrors:[]})}},"handleSubmit");return p(s,{defaultValues:o.stepState.values?.contract_details||o.initialValues.contract_details,onSubmit:m})}e(F,"ContractDetailsStep");export{F as a};
2
+ //# sourceMappingURL=chunk-EOJJ4IWJ.js.map
@@ -1,2 +1,2 @@
1
- import{a as Te}from"./chunk-2A5R3YN2.js";import{a as Me}from"./chunk-3Z5ZZUO4.js";import{a as Ce,b as Oe,c as O,d as Ve,e as Pe}from"./chunk-F66G33YT.js";import{a as fe,b as ue,c as ye,f as pe,g as _e,h as Se,i as be,j as ge,l as Fe,n as Ee}from"./chunk-47VYBPE2.js";import{a as j}from"./chunk-QW4JPW6J.js";import{a as he}from"./chunk-PJBAQZ6G.js";import{c as C,d as L,f as H}from"./chunk-MXFDOIUA.js";import{a as l}from"./chunk-P37U34EQ.js";import{useEffect as nt,useMemo as d,useRef as ot,useState as Le}from"react";import it from"lodash.mergewith";import{jsx as ke}from"react/jsx-runtime";var at={employment_basic_information:"basic_information",contract_details:"contract_details"},st={select_country:null,basic_information:"employment_basic_information",contract_details:"contract_details",benefits:null,review:null},rt=l(({isLoadingBasicInformationForm:y,isLoadingContractDetailsForm:I,isLoadingEmployment:J,isLoadingBenefitsOffersSchema:N,isLoadingBenefitOffers:a,isLoadingCompany:D,isLoadingCountries:V,employmentStatus:s,employmentId:_,currentStepName:r,basicInformationFields:A,contractDetailsFields:c})=>{let P=y||I||J||N||a||D||V,o=s&&Ve.includes(s),k=s&&!Pe.includes(s),B=!!(_&&o&&r!=="review"),q=P||B,w=!!(B&&!P&&A.length>0&&c.length>0);return{isLoading:q,isNavigatingToReview:w,isEmploymentReadOnly:o,canInvite:k}},"getLoadingStates"),bt=l(({employmentId:y,companyId:I,countryCode:J,type:N,options:a,skipSteps:D,externalId:V,initialValues:s})=>{let _=ot({select_country:{},basic_information:{},contract_details:{},benefits:{}}),[r,A]=Le(y),[c,P]=Le(J||null),{data:o,isLoading:k,refetch:B}=fe(r);o?.country?.code&&c!==o.country.code&&P(o.country.code);let{data:q,isLoading:w}=ye(r),{data:v,isLoading:W,refetch:Be}=ue(I),qe=D?.includes("select_country")?Oe:Ce,{fieldValues:S,stepState:n,setFieldValues:we,previousStep:ve,nextStep:Re,goToStep:x,setStepValues:z}=he(qe),{selectCountryForm:R,isLoading:G}=Fe({jsfModify:a?.jsfModify?.select_country,jsonSchemaVersion:a?.jsonSchemaVersion,queryOptions:{enabled:n.currentStep.name==="select_country"}}),$=Se(a),K=be(a),Y=ge(a),je=Ee(),{mutateAsync:Ie}=j($),{mutateAsync:Q}=j(K),{mutateAsync:Je}=j(Y),Ne=st[n.currentStep.name]||"employment_basic_information",De=at[Ne],Ae=o?.[De]||{},X=l(({form:e,options:i={},query:m={}})=>{let h=Object.keys(S).length>0?{...s,...n.values?.[n.currentStep.name],...S}:{...s,...Ae};return pe({countryCode:c,form:e,fieldValues:h,query:m,options:{...i,queryOptions:{enabled:i.queryOptions?.enabled??!0}}})},"useJSONSchema"),xe=!!(c&&(n.currentStep.name==="basic_information"||y)),Ue=!!(c&&(n.currentStep.name==="contract_details"||y)),{data:f,isLoading:Z}=X({form:"employment_basic_information",options:{jsfModify:a?.jsfModify?.basic_information,queryOptions:{enabled:xe}}}),b=a?.jsfModify?.contract_details?.fields?.annual_gross_salary,U=b&&typeof b=="object"&&"presentation"in b?b.presentation:void 0,ee=a?.jsfModify?.contract_details?.fields?.equity_compensation,He=d(()=>({fields:{annual_gross_salary:{...b,presentation:{annual_gross_salary_conversion_properties:{label:U?.annual_gross_salary_conversion_properties?.label,description:U?.annual_gross_salary_conversion_properties?.description},desiredCurrency:v?.desired_currency,Component:l(e=>ke(Me,{desiredCurrency:v?.desired_currency||"",...e}),"Component")}},equity_compensation:{...ee,presentation:{calculateDynamicProperties:l((e,i)=>{let m=e.equity_compensation?.offer_equity_compensation,h=i?.meta?.cost;return{extra:ke(Te,{offerEquity:m,equityCost:h})}},"calculateDynamicProperties")}}}}),[b,U,v?.desired_currency,ee]),{data:u,isLoading:te}=X({form:"contract_details",query:{employment_id:r},options:{jsfModify:{...a?.jsfModify?.contract_details,fields:{...a?.jsfModify?.contract_details?.fields,...He.fields}},queryOptions:{enabled:Ue}}}),{data:M,isLoading:ne}=_e(r,S,a),oe=d(()=>{if(n.currentStep.name==="benefits"){let e={...n.values?.[n.currentStep.name],...S};return it({},q,e)}return{}},[n.currentStep.name,q,n.values,S]),t=d(()=>({select_country:R?.fields||[],basic_information:f?.fields||[],contract_details:u?.fields||[],benefits:M?.fields||[],review:[]}),[R?.fields,f?.fields,u?.fields,M?.fields]),We={select_country:null,basic_information:f?.meta["x-jsf-fieldsets"],contract_details:u?.meta["x-jsf-fieldsets"],benefits:null,review:null},{country:{code:ie}={},basic_information:ae={},contract_details:se={},status:re}=o||{},ce=n.currentStep.name,g=d(()=>L(t.select_country,{country:c||ie||""}),[t.select_country,c,ie]),F=d(()=>{let e={...s,...ae};return L(t.basic_information,e)},[t.basic_information,ae,s]),p=d(()=>{let e={...s,...se};return L(t.contract_details,e)},[t.contract_details,se,s]),E=d(()=>{let e={...s,...oe};return L(t.benefits,e)},[t.benefits,oe,s]),ze=d(()=>o?{select_country:g,basic_information:H(t.basic_information,F),contract_details:o?.contract_details!==null?H(t.contract_details,p):p,benefits:E}:{select_country:g,basic_information:F,contract_details:p,benefits:E},[g,F,p,E,o,t]),{isLoading:Ge,isNavigatingToReview:le,isEmploymentReadOnly:$e,canInvite:Ke}=d(()=>rt({isLoadingBasicInformationForm:Z,isLoadingContractDetailsForm:te,isLoadingEmployment:k,isLoadingBenefitsOffersSchema:ne,isLoadingBenefitOffers:w,isLoadingCompany:W,isLoadingCountries:G,employmentId:y,employmentStatus:re,basicInformationFields:t.basic_information,contractDetailsFields:t.contract_details,currentStepName:ce}),[Z,te,k,ne,w,W,G,y,re,t.basic_information,t.contract_details,ce]);nt(()=>{le&&(_.current={select_country:O(g,t.select_country),basic_information:O(F,t.basic_information),contract_details:O(p,t.contract_details),benefits:O(E,t.benefits)},z({select_country:g,basic_information:F,contract_details:p,benefits:E,review:{}}),x("review"))},[F,E,p,x,le,g,z,t.basic_information,t.benefits,t.contract_details,t.select_country]);let me=l(e=>R&&n.currentStep.name==="select_country"?e:f&&n.currentStep.name==="basic_information"?C(e,f?.fields,{isPartialValidation:!1}):u&&n.currentStep.name==="contract_details"?C(e,u?.fields,{isPartialValidation:!1}):{},"parseFormValues");async function Ye(e){let i=n.currentStep.name;i in _.current&&(_.current[i]=O(e,t[i]));let m=me(e);switch(Be(),n.currentStep.name){case"select_country":return P(m.country),Promise.resolve({data:{countryCode:m.country}});case"basic_information":{let h=!r&&c,et=r&&c&&o?.country&&o?.country.code!==c;if(h||et){let tt={basic_information:m,type:N,country_code:c,external_id:V};try{let T=await Ie(tt),de=T.data?.data?.employment?.id;return A(de),await je.mutateAsync({employmentId:de,eligible_to_work_in_residing_country:"citizen",employer_or_work_restrictions:!1}),T}catch(T){throw console.error("Error creating onboarding:",T),T}}else if(r)return Q({employmentId:r,basic_information:m,pricing_plan_details:{frequency:"monthly"},external_id:V});return}case"contract_details":return Q({employmentId:r,external_id:V,...{contract_details:m,pricing_plan_details:{frequency:"monthly"}}});case"benefits":return Je({employmentId:r,...e})}}l(Ye,"onSubmit");function Qe(){ve()}l(Qe,"back");function Xe(){Re()}l(Xe,"next");function Ze(e){x(e)}return l(Ze,"goTo"),{employmentId:r,creditRiskStatus:v?.default_legal_entity_credit_risk_status,fieldValues:S,stepState:n,fields:t[n.currentStep.name],isLoading:Ge,isSubmitting:$.isPending||K.isPending||Y.isPending,initialValues:ze,handleValidation:l(e=>{if(n.currentStep.name==="select_country")return R.handleValidation(e);if(n.currentStep.name==="benefits"&&M){let i=C(e,M?.fields,{isPartialValidation:!1});return M?.handleValidation(i)}if(f&&n.currentStep.name==="basic_information"){let i=C(e,f?.fields,{isPartialValidation:!1});return f?.handleValidation(i)}if(u&&n.currentStep.name==="contract_details"){let i=C(e,u?.fields,{isPartialValidation:!1});return u?.handleValidation(i)}return null},"handleValidation"),checkFieldUpdates:we,parseFormValues:me,onSubmit:Ye,back:Qe,next:Xe,goTo:Ze,meta:{fields:_.current,fieldsets:We[n.currentStep.name]},refetchEmployment:B,employment:o,isEmploymentReadOnly:$e,canInvite:Ke}},"useOnboarding");export{bt as a};
2
- //# sourceMappingURL=chunk-3CUVTXRN.js.map
1
+ import{a as Te}from"./chunk-2A5R3YN2.js";import{a as Me}from"./chunk-VUQOVQ5L.js";import{a as Ce,b as Oe,c as O,d as Ve,e as Pe}from"./chunk-F66G33YT.js";import{a as fe,b as ue,c as ye,f as pe,g as _e,h as Se,i as be,j as ge,l as Fe,n as Ee}from"./chunk-47VYBPE2.js";import{a as j}from"./chunk-QW4JPW6J.js";import{a as he}from"./chunk-PJBAQZ6G.js";import{c as C,d as L,f as H}from"./chunk-MXFDOIUA.js";import{a as l}from"./chunk-P37U34EQ.js";import{useEffect as nt,useMemo as d,useRef as ot,useState as Le}from"react";import it from"lodash.mergewith";import{jsx as ke}from"react/jsx-runtime";var at={employment_basic_information:"basic_information",contract_details:"contract_details"},st={select_country:null,basic_information:"employment_basic_information",contract_details:"contract_details",benefits:null,review:null},rt=l(({isLoadingBasicInformationForm:y,isLoadingContractDetailsForm:I,isLoadingEmployment:J,isLoadingBenefitsOffersSchema:N,isLoadingBenefitOffers:a,isLoadingCompany:D,isLoadingCountries:V,employmentStatus:s,employmentId:_,currentStepName:r,basicInformationFields:A,contractDetailsFields:c})=>{let P=y||I||J||N||a||D||V,o=s&&Ve.includes(s),k=s&&!Pe.includes(s),B=!!(_&&o&&r!=="review"),q=P||B,w=!!(B&&!P&&A.length>0&&c.length>0);return{isLoading:q,isNavigatingToReview:w,isEmploymentReadOnly:o,canInvite:k}},"getLoadingStates"),bt=l(({employmentId:y,companyId:I,countryCode:J,type:N,options:a,skipSteps:D,externalId:V,initialValues:s})=>{let _=ot({select_country:{},basic_information:{},contract_details:{},benefits:{}}),[r,A]=Le(y),[c,P]=Le(J||null),{data:o,isLoading:k,refetch:B}=fe(r);o?.country?.code&&c!==o.country.code&&P(o.country.code);let{data:q,isLoading:w}=ye(r),{data:v,isLoading:W,refetch:Be}=ue(I),qe=D?.includes("select_country")?Oe:Ce,{fieldValues:S,stepState:n,setFieldValues:we,previousStep:ve,nextStep:Re,goToStep:x,setStepValues:z}=he(qe),{selectCountryForm:R,isLoading:G}=Fe({jsfModify:a?.jsfModify?.select_country,jsonSchemaVersion:a?.jsonSchemaVersion,queryOptions:{enabled:n.currentStep.name==="select_country"}}),$=Se(a),K=be(a),Y=ge(a),je=Ee(),{mutateAsync:Ie}=j($),{mutateAsync:Q}=j(K),{mutateAsync:Je}=j(Y),Ne=st[n.currentStep.name]||"employment_basic_information",De=at[Ne],Ae=o?.[De]||{},X=l(({form:e,options:i={},query:m={}})=>{let h=Object.keys(S).length>0?{...s,...n.values?.[n.currentStep.name],...S}:{...s,...Ae};return pe({countryCode:c,form:e,fieldValues:h,query:m,options:{...i,queryOptions:{enabled:i.queryOptions?.enabled??!0}}})},"useJSONSchema"),xe=!!(c&&(n.currentStep.name==="basic_information"||y)),Ue=!!(c&&(n.currentStep.name==="contract_details"||y)),{data:f,isLoading:Z}=X({form:"employment_basic_information",options:{jsfModify:a?.jsfModify?.basic_information,queryOptions:{enabled:xe}}}),b=a?.jsfModify?.contract_details?.fields?.annual_gross_salary,U=b&&typeof b=="object"&&"presentation"in b?b.presentation:void 0,ee=a?.jsfModify?.contract_details?.fields?.equity_compensation,He=d(()=>({fields:{annual_gross_salary:{...b,presentation:{annual_gross_salary_conversion_properties:{label:U?.annual_gross_salary_conversion_properties?.label,description:U?.annual_gross_salary_conversion_properties?.description},desiredCurrency:v?.desired_currency,Component:l(e=>ke(Me,{desiredCurrency:v?.desired_currency||"",...e}),"Component")}},equity_compensation:{...ee,presentation:{calculateDynamicProperties:l((e,i)=>{let m=e.equity_compensation?.offer_equity_compensation,h=i?.meta?.cost;return{extra:ke(Te,{offerEquity:m,equityCost:h})}},"calculateDynamicProperties")}}}}),[b,U,v?.desired_currency,ee]),{data:u,isLoading:te}=X({form:"contract_details",query:{employment_id:r},options:{jsfModify:{...a?.jsfModify?.contract_details,fields:{...a?.jsfModify?.contract_details?.fields,...He.fields}},queryOptions:{enabled:Ue}}}),{data:M,isLoading:ne}=_e(r,S,a),oe=d(()=>{if(n.currentStep.name==="benefits"){let e={...n.values?.[n.currentStep.name],...S};return it({},q,e)}return{}},[n.currentStep.name,q,n.values,S]),t=d(()=>({select_country:R?.fields||[],basic_information:f?.fields||[],contract_details:u?.fields||[],benefits:M?.fields||[],review:[]}),[R?.fields,f?.fields,u?.fields,M?.fields]),We={select_country:null,basic_information:f?.meta["x-jsf-fieldsets"],contract_details:u?.meta["x-jsf-fieldsets"],benefits:null,review:null},{country:{code:ie}={},basic_information:ae={},contract_details:se={},status:re}=o||{},ce=n.currentStep.name,g=d(()=>L(t.select_country,{country:c||ie||""}),[t.select_country,c,ie]),F=d(()=>{let e={...s,...ae};return L(t.basic_information,e)},[t.basic_information,ae,s]),p=d(()=>{let e={...s,...se};return L(t.contract_details,e)},[t.contract_details,se,s]),E=d(()=>{let e={...s,...oe};return L(t.benefits,e)},[t.benefits,oe,s]),ze=d(()=>o?{select_country:g,basic_information:H(t.basic_information,F),contract_details:o?.contract_details!==null?H(t.contract_details,p):p,benefits:E}:{select_country:g,basic_information:F,contract_details:p,benefits:E},[g,F,p,E,o,t]),{isLoading:Ge,isNavigatingToReview:le,isEmploymentReadOnly:$e,canInvite:Ke}=d(()=>rt({isLoadingBasicInformationForm:Z,isLoadingContractDetailsForm:te,isLoadingEmployment:k,isLoadingBenefitsOffersSchema:ne,isLoadingBenefitOffers:w,isLoadingCompany:W,isLoadingCountries:G,employmentId:y,employmentStatus:re,basicInformationFields:t.basic_information,contractDetailsFields:t.contract_details,currentStepName:ce}),[Z,te,k,ne,w,W,G,y,re,t.basic_information,t.contract_details,ce]);nt(()=>{le&&(_.current={select_country:O(g,t.select_country),basic_information:O(F,t.basic_information),contract_details:O(p,t.contract_details),benefits:O(E,t.benefits)},z({select_country:g,basic_information:F,contract_details:p,benefits:E,review:{}}),x("review"))},[F,E,p,x,le,g,z,t.basic_information,t.benefits,t.contract_details,t.select_country]);let me=l(e=>R&&n.currentStep.name==="select_country"?e:f&&n.currentStep.name==="basic_information"?C(e,f?.fields,{isPartialValidation:!1}):u&&n.currentStep.name==="contract_details"?C(e,u?.fields,{isPartialValidation:!1}):{},"parseFormValues");async function Ye(e){let i=n.currentStep.name;i in _.current&&(_.current[i]=O(e,t[i]));let m=me(e);switch(Be(),n.currentStep.name){case"select_country":return P(m.country),Promise.resolve({data:{countryCode:m.country}});case"basic_information":{let h=!r&&c,et=r&&c&&o?.country&&o?.country.code!==c;if(h||et){let tt={basic_information:m,type:N,country_code:c,external_id:V};try{let T=await Ie(tt),de=T.data?.data?.employment?.id;return A(de),await je.mutateAsync({employmentId:de,eligible_to_work_in_residing_country:"citizen",employer_or_work_restrictions:!1}),T}catch(T){throw console.error("Error creating onboarding:",T),T}}else if(r)return Q({employmentId:r,basic_information:m,pricing_plan_details:{frequency:"monthly"},external_id:V});return}case"contract_details":return Q({employmentId:r,external_id:V,...{contract_details:m,pricing_plan_details:{frequency:"monthly"}}});case"benefits":return Je({employmentId:r,...e})}}l(Ye,"onSubmit");function Qe(){ve()}l(Qe,"back");function Xe(){Re()}l(Xe,"next");function Ze(e){x(e)}return l(Ze,"goTo"),{employmentId:r,creditRiskStatus:v?.default_legal_entity_credit_risk_status,fieldValues:S,stepState:n,fields:t[n.currentStep.name],isLoading:Ge,isSubmitting:$.isPending||K.isPending||Y.isPending,initialValues:ze,handleValidation:l(e=>{if(n.currentStep.name==="select_country")return R.handleValidation(e);if(n.currentStep.name==="benefits"&&M){let i=C(e,M?.fields,{isPartialValidation:!1});return M?.handleValidation(i)}if(f&&n.currentStep.name==="basic_information"){let i=C(e,f?.fields,{isPartialValidation:!1});return f?.handleValidation(i)}if(u&&n.currentStep.name==="contract_details"){let i=C(e,u?.fields,{isPartialValidation:!1});return u?.handleValidation(i)}return null},"handleValidation"),checkFieldUpdates:we,parseFormValues:me,onSubmit:Ye,back:Qe,next:Xe,goTo:Ze,meta:{fields:_.current,fieldsets:We[n.currentStep.name]},refetchEmployment:B,employment:o,isEmploymentReadOnly:$e,canInvite:Ke}},"useOnboarding");export{bt as a};
2
+ //# sourceMappingURL=chunk-J2SFMADD.js.map
@@ -0,0 +1,2 @@
1
+ import{a as l}from"./chunk-NBCZF2FO.js";import{a}from"./chunk-SEAC3H45.js";import{a as c}from"./chunk-Y4VNFI7K.js";import{c as t}from"./chunk-GAOBYAJE.js";import{a as i}from"./chunk-P37U34EQ.js";import{useEffect as u}from"react";import{Fragment as _,jsx as m,jsxs as N}from"react/jsx-runtime";var k=i(({currencies:{from:d,to:y},shouldSwapOrder:e,salary_conversion_properties:s,conversionType:F="no_spread",defaultValue:r,...o})=>{let{setValue:n,getValues:p}=t(),v={label:s?.label||"Salary conversion",description:s?.description||N(_,{children:["The conversion is based on the Remote FX rate."," ",m(c,{className:"text-sm",zendeskId:l.remoteFxRate,children:"Learn more \u2197"})]})},g=e?"salary_conversion":o.name,f=e?o.name:"salary_conversion";return u(()=>{e&&r&&(n("salary_conversion",r),n("salary_converted","salary_conversion"))},[e,r,n,p]),m(a,{...o,sourceCurrency:d,targetCurrency:y,mainFieldName:g,conversionFieldName:f,conversionProperties:v,classNamePrefix:"RemoteFlows-Salary",conversionType:F})},"SalaryField");export{k as a};
2
+ //# sourceMappingURL=chunk-JKYTL5QY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/components/SalaryField.tsx"],"sourcesContent":["import { CurrencyConversionField } from '@/src/components/form/fields/CurrencyConversionField';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\ntype SalaryFieldProps = JSFField & {\n currencies: {\n from: string;\n to: string;\n };\n salary_conversion_properties?: {\n label?: string;\n description?: string;\n };\n conversionType?: 'spread' | 'no_spread';\n shouldSwapOrder: boolean;\n defaultValue?: string;\n};\n\nexport const SalaryField = ({\n currencies: { from, to },\n shouldSwapOrder,\n salary_conversion_properties,\n conversionType = 'no_spread',\n defaultValue,\n ...props\n}: SalaryFieldProps) => {\n const { setValue, getValues } = useFormContext();\n\n const conversionProperties = {\n label: salary_conversion_properties?.label || 'Salary conversion',\n description: salary_conversion_properties?.description || (\n <>\n The conversion is based on the Remote FX rate.{' '}\n <ZendeskTriggerButton\n className=\"text-sm\"\n zendeskId={zendeskArticles.remoteFxRate}\n >\n Learn more ↗\n </ZendeskTriggerButton>\n </>\n ),\n };\n\n const mainFieldName = shouldSwapOrder ? 'salary_conversion' : props.name;\n const conversionFieldName = shouldSwapOrder\n ? props.name\n : 'salary_conversion';\n\n useEffect(() => {\n if (shouldSwapOrder && defaultValue) {\n setValue('salary_conversion', defaultValue);\n setValue('salary_converted', 'salary_conversion');\n }\n }, [shouldSwapOrder, defaultValue, setValue, getValues]);\n\n return (\n <CurrencyConversionField\n {...props}\n sourceCurrency={from}\n targetCurrency={to}\n mainFieldName={mainFieldName}\n conversionFieldName={conversionFieldName}\n conversionProperties={conversionProperties}\n classNamePrefix=\"RemoteFlows-Salary\"\n conversionType={conversionType}\n />\n );\n};\n"],"mappings":"mMAIA,OAAS,aAAAA,MAAiB,QA8BpB,mBAAAC,EAEE,OAAAC,EAFF,QAAAC,MAAA,oBAbC,IAAMC,EAAcC,EAAA,CAAC,CAC1B,WAAY,CAAE,KAAAC,EAAM,GAAAC,CAAG,EACvB,gBAAAC,EACA,6BAAAC,EACA,eAAAC,EAAiB,YACjB,aAAAC,EACA,GAAGC,CACL,IAAwB,CACtB,GAAM,CAAE,SAAAC,EAAU,UAAAC,CAAU,EAAIC,EAAe,EAEzCC,EAAuB,CAC3B,MAAOP,GAA8B,OAAS,oBAC9C,YAAaA,GAA8B,aACzCN,EAAAF,EAAA,CAAE,2DAC+C,IAC/CC,EAACe,EAAA,CACC,UAAU,UACV,UAAWC,EAAgB,aAC5B,6BAED,GACF,CAEJ,EAEMC,EAAgBX,EAAkB,oBAAsBI,EAAM,KAC9DQ,EAAsBZ,EACxBI,EAAM,KACN,oBAEJ,OAAAS,EAAU,IAAM,CACVb,GAAmBG,IACrBE,EAAS,oBAAqBF,CAAY,EAC1CE,EAAS,mBAAoB,mBAAmB,EAEpD,EAAG,CAACL,EAAiBG,EAAcE,EAAUC,CAAS,CAAC,EAGrDZ,EAACoB,EAAA,CACE,GAAGV,EACJ,eAAgBN,EAChB,eAAgBC,EAChB,cAAeY,EACf,oBAAqBC,EACrB,qBAAsBJ,EACtB,gBAAgB,qBAChB,eAAgBN,EAClB,CAEJ,EAjD2B","names":["useEffect","Fragment","jsx","jsxs","SalaryField","__name","from","to","shouldSwapOrder","salary_conversion_properties","conversionType","defaultValue","props","setValue","getValues","useFormContext","conversionProperties","ZendeskTriggerButton","zendeskArticles","mainFieldName","conversionFieldName","useEffect","CurrencyConversionField"]}
@@ -1,2 +1,2 @@
1
- import{a as t}from"./chunk-AJVD3O4D.js";import{b as a}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as p}from"react/jsx-runtime";function F({requesterName:n,onSubmit:s,onSuccess:m,onError:d}){let{terminationBag:e}=a(),l=i(async o=>{await s?.(e?.parseFormValues(o));let r=await e?.onSubmit(o);r?.error?d?.(r.error):r?.data&&await m?.(r.data)},"handleSubmit"),u=e?.fields.map(o=>o.name==="acknowledge_termination_procedure"?{...o,label:o.label.replace("{{requesterName}}",n)}:o);return p(t,{fields:u,onSubmit:l})}i(F,"AdditionalDetailsForm");export{F as a};
2
- //# sourceMappingURL=chunk-S7ZMHO5I.js.map
1
+ import{a as t}from"./chunk-DOILOCWU.js";import{b as a}from"./chunk-MRYRNB7Y.js";import{a as i}from"./chunk-P37U34EQ.js";import{jsx as p}from"react/jsx-runtime";function F({requesterName:n,onSubmit:s,onSuccess:m,onError:d}){let{terminationBag:e}=a(),l=i(async o=>{await s?.(e?.parseFormValues(o));let r=await e?.onSubmit(o);r?.error?d?.(r.error):r?.data&&await m?.(r.data)},"handleSubmit"),u=e?.fields.map(o=>o.name==="acknowledge_termination_procedure"?{...o,label:o.label.replace("{{requesterName}}",n)}:o);return p(t,{fields:u,onSubmit:l})}i(F,"AdditionalDetailsForm");export{F as a};
2
+ //# sourceMappingURL=chunk-JUM2HAIK.js.map
@@ -1,2 +1,2 @@
1
- import{a as r}from"./chunk-AJVD3O4D.js";import{b as n}from"./chunk-MRYRNB7Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as a}from"react/jsx-runtime";function u({onSubmit:m}){let{terminationBag:i}=n();return a(r,{onSubmit:o(async t=>{await m?.(i?.parseFormValues(t)),i?.next()},"handleSubmit")})}o(u,"TerminationDetailsForm");export{u as a};
2
- //# sourceMappingURL=chunk-TJK6MTGG.js.map
1
+ import{a as r}from"./chunk-DOILOCWU.js";import{b as n}from"./chunk-MRYRNB7Y.js";import{a as o}from"./chunk-P37U34EQ.js";import{jsx as a}from"react/jsx-runtime";function u({onSubmit:m}){let{terminationBag:i}=n();return a(r,{onSubmit:o(async t=>{await m?.(i?.parseFormValues(t)),i?.next()},"handleSubmit")})}o(u,"TerminationDetailsForm");export{u as a};
2
+ //# sourceMappingURL=chunk-LLY7VPXS.js.map
@@ -0,0 +1,2 @@
1
+ import{a as N,b as v,c as A,d as w}from"./chunk-T3L72MV6.js";import{a as T}from"./chunk-ILMVHOL2.js";import{a as h}from"./chunk-NBCZF2FO.js";import{a as E}from"./chunk-5I6VWJSC.js";import{a as x}from"./chunk-Y4VNFI7K.js";import{b as C}from"./chunk-CSK44J23.js";import{a as c,b as r}from"./chunk-3LOVCTCN.js";import{a as d}from"./chunk-P37U34EQ.js";import{MoreHorizontal as M}from"lucide-react";import{useState as H}from"react";import{Fragment as S,jsx as _,jsxs as I}from"react/jsx-runtime";function B({actions:e=[],className:s}){let[a,l]=H(!1);return I("div",{className:c("relative",s),children:[_(C,{variant:"ghost",className:"h-8 w-8 p-0",onClick:()=>l(!a),children:_(M,{className:"h-4 w-4"})}),a&&I(S,{children:[_("div",{className:"fixed inset-0 z-40",onClick:()=>l(!1)}),_("div",{className:"absolute right-0 top-1/2 mt-1 bg-white border border-gray-200 rounded-md shadow-lg z-50 min-w-[120px]",children:e.map((i,u)=>_("button",{className:c("w-full text-left px-2 py-1.5 text-sm hover:bg-gray-100",i.disabled&&"opacity-50 cursor-not-allowed"),onClick:()=>{i.onClick(),l(!1)},disabled:i.disabled,children:i.label},u))})]})]})}d(B,"ActionsDropdown");import{ChevronDown as z,Info as L}from"lucide-react";import P from"react-flagpack";import{useState as D}from"react";import{Fragment as p,jsx as n,jsxs as t}from"react/jsx-runtime";var U=d(({title:e,country:s,region:a,onDelete:l,onExportPdf:i})=>{let u=[{label:"Edit",onClick:d(()=>{},"onClick"),disabled:!0},{label:"Export",onClick:i},{label:"Delete",onClick:l}];return t("div",{className:"RemoteFlows__EstimationResults__Header flex justify-between",children:[t("div",{className:"flex flex-row items-center gap-6",children:[n("div",{className:"flex h-12 w-12 items-center justify-center rounded-lg bg-[#F4F4F5]",children:n(P,{code:s.alpha_2_code})}),t("div",{className:"space-y-1",children:[n("h2",{className:"text-lg font-medium leading-none text-[#181818]",children:e}),t("p",{className:"text-xs text-[#71717A]",children:[s.name," ",a?` (${a.name})`:""]})]})]}),n(B,{className:"RemoteFlows__EstimationResults__ActionsDropdown",actions:u})]})},"EstimationResultsHeader"),j=d(()=>({steps:[{id:"add-employment-details",title:"Add employment details",description:"You add employee employments details."},{id:"invite-employee",title:"Invite employee",description:"Hire receives an email invitation from Remote to start the self-enrollment process."},{id:"verify-information",title:"Verify information",description:"Remote prepares the Employment Agreement and verifies all the information."},{id:"sign-contract",title:"Sign contract",description:"All parties sign the Employment Agreement and are ready to start. \u{1F389}"}],helpText:"For customers who accept our Terms of Service (ToS), the employee onboarding timeline starts once the employee has been invited to the platform and completed self enrolment.",zendeskArticleId:h.employeeOnboardingTimeline}),"getOnboardingTimelineData");function G({minimumOnboardingDays:e,data:s,className:a}){return n(N,{type:"single",collapsible:!0,className:c("RemoteFlows__EstimationResults__OnboardingTimeline w-full",a),children:t(v,{value:"timeline",className:"border-border",children:[n(A,{className:"hover:no-underline px-0 py-4",children:t("div",{className:"flex items-center justify-between w-full",children:[n("span",{className:"text-base font-medium text-[#0F172A]",children:"Onboarding timeline"}),t("span",{className:"text-base text-muted-foreground mr-4",children:[e," days"]})]})}),t(w,{className:"px-0 pb-4",children:[n("ul",{className:"list-disc list-inside space-y-2",children:s.steps.map(l=>t("li",{children:[n("strong",{className:"font-medium text-[#09090B]",children:l.title})," ","- ",l.description]},l.id))}),t("p",{className:"text-xs text-muted-foreground mt-4",children:[s.helpText,s.zendeskArticleId&&n(x,{zendeskId:s.zendeskArticleId,children:"Learn more"})]})]})]})})}d(G,"OnboardingTimeline");function Z({className:e,countryBenefitsUrl:s,countryGuideUrl:a,country:l}){return n(N,{type:"single",collapsible:!0,className:c("RemoteFlows__EstimationResults__HiringSection w-full",e),children:t(v,{value:"timeline",className:"border-border",children:[n(A,{className:"hover:no-underline px-0 py-4",children:n("div",{className:"flex items-center justify-between w-full",children:t("span",{className:"text-base font-medium text-[#0F172A]",children:["Hiring in ",l.name]})})}),n(w,{children:t("div",{className:"flex flex-col gap-1",children:[n("a",{href:a,target:"_blank",className:"RemoteFlows__Link",children:"Explore our complete guide \u2197"}),n("a",{href:s,target:"_blank",className:"RemoteFlows__Link",children:"Explore our available benefits \u2197"})]})})]})})}d(Z,"HiringSection");function $({isMultipleCurrency:e,className:s}){return t("div",{className:c("RemoteFlows__EstimationResults__Headers grid grid-cols-3 items-center",s),children:[n("span",{"aria-hidden":!0}),e?t(p,{children:[n("span",{className:"RemoteFlows__EstimationResults__Headers__Label",children:"Employee currency"}),n("span",{className:"RemoteFlows__EstimationResults__Headers__Label",children:"Employer currency"})]}):t(p,{children:[n("span",{}),n("span",{className:"RemoteFlows__EstimationResults__Headers__Label",children:"Amount"})]})]})}d($,"EstimationHeaders");function F({label:e,amounts:s,className:a,isHeader:l=!1,isCollapsible:i=!1,children:u}){let[m,b]=D(!0);return t("div",{className:c("RemoteFlows__EstimationResults__Row",a),children:[t("div",{className:"grid grid-cols-3 items-center",children:[t("div",{className:"flex items-center gap-2",children:[n("span",{className:c("min-w-[140px]",l?"font-medium text-[#09090B]":""),children:e}),i&&n("button",{onClick:()=>b(!m),className:"p-1 hover:bg-gray-100 rounded",children:n(z,{className:`h-4 w-4 text-muted-foreground transition-transform ${m?"rotate-180":""}`})})]}),Array.isArray(s)?s.map((g,f)=>n("span",{className:c("text-right",l?"font-medium text-[#09090B]":""),children:g},f)):t(p,{children:[n("span",{}),n("span",{className:c("text-right",l?"font-medium text-[#09090B]":""),children:s})]})]}),i&&m&&u&&n("div",{className:"mt-4",children:u})]})}d(F,"EstimationRow");function V({item:e,isMultipleCurrency:s,level:a=0}){let[l,i]=D(!1),u=e.children&&e.children.length>0,m=a>0;return t("li",{className:c("pb-3",m&&"pb-1"),children:[t("div",{className:c(s?"grid grid-cols-3 items-center justify-between":"grid grid-cols-2 items-center justify-between"),children:[t("div",{className:c("flex items-center gap-2",m&&"pl-3"),children:[!m&&n("span",{className:"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0","aria-hidden":"true"}),n("span",{className:c(m?"text-xs text-[#71717A]":"text-sm text-[#09090B]"),children:e.label}),e.tooltip&&n(T,{content:t(p,{children:[n("span",{children:e.tooltip})," ",e.zendeskId&&n(x,{zendeskId:Number(e.zendeskId),children:"Learn more"})]}),children:n("button",{className:"p-1 hover:bg-gray-100 rounded",children:n(L,{className:c("text-muted-foreground",m?"h-3 w-3":"h-4 w-4")})})}),(e.isCollapsible||u)&&n("button",{onClick:()=>i(!l),className:"p-1 hover:bg-gray-100 rounded",children:n(z,{className:`h-3 w-3 text-muted-foreground transition-transform ${l?"rotate-180":""}`})})]}),s?t(p,{children:[n("span",{className:c("text-sm text-right",m?"text-[#71717A]":"text-[#09090B]"),children:e.regionalAmount||"\u2014"}),n("span",{className:c("text-sm text-right",m?"text-[#71717A]":"text-[#09090B]"),children:e.employerAmount||"\u2014"})]}):n("span",{className:c("text-sm text-right",m?"text-[#71717A]":"text-[#09090B]"),children:e.regionalAmount||"\u2014"})]}),u&&l&&n("div",{className:"mt-1",children:n(k,{items:e.children,isMultipleCurrency:s,level:a+1})})]})}d(V,"BreakdownListItem");function k({items:e,isMultipleCurrency:s,className:a,level:l}){return n("ul",{className:c("list-none",a),children:e.map((i,u)=>n(V,{item:i,isMultipleCurrency:s,level:l},u))})}d(k,"BreakdownList");var me=d(({estimation:e,title:s,components:a,onDelete:l,onExportPdf:i})=>{let u=a?.HiringSection||Z,m=a?.OnboardingTimeline||G,b=a?.Header||U,g=a?.Footer,f=j(),y=e.employer_currency_costs.currency.code!==e.regional_currency_costs.currency.code,R=e.employer_currency_costs.monthly_management_fee,O=e.region.code!==e.country.code;return t(E,{className:"RemoteFlows__EstimationResults__Card p-10",children:[n("div",{className:"RemoteFlows__Separator",children:n(b,{title:s,region:O?e.region:void 0,country:e.country,onDelete:l,onExportPdf:i})}),t("div",{className:"RemoteFlows__Separator",children:[n($,{isMultipleCurrency:y,className:"mb-3"}),n(F,{label:"Monthly total cost",amounts:y?[r(e.regional_currency_costs.monthly_total,e.regional_currency_costs.currency.symbol),r(e.employer_currency_costs.monthly_total,e.employer_currency_costs.currency.symbol)]:r(e.regional_currency_costs.monthly_total,e.regional_currency_costs.currency.symbol),isHeader:!0,isCollapsible:!0,children:n(k,{items:[{label:"Gross monthly salary",regionalAmount:r(e.regional_currency_costs.monthly_gross_salary,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.monthly_gross_salary,e.employer_currency_costs.currency.symbol),zendeskId:h.extraPayments.toString(),tooltip:"This country respects extra payments on top of the gross salary."},{label:"Mandatory employer costs",regionalAmount:r(e.regional_currency_costs.monthly_contributions_total,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.monthly_contributions_total,e.employer_currency_costs.currency.symbol),children:e.employer_currency_costs.monthly_contributions_breakdown?.map(o=>({label:o.name,regionalAmount:r(o.amount,e.regional_currency_costs.currency.symbol),employerAmount:r(o.amount,e.employer_currency_costs.currency.symbol),zendeskId:o.zendesk_article_id||void 0,tooltip:o.description||void 0}))||[]},{label:"Core benefits",regionalAmount:r(e.regional_currency_costs.monthly_benefits_total,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.monthly_benefits_total,e.employer_currency_costs.currency.symbol),children:e.employer_currency_costs.monthly_benefits_breakdown?.map(o=>({label:o.name,regionalAmount:r(o.amount,e.regional_currency_costs.currency.symbol),employerAmount:r(o.amount,e.employer_currency_costs.currency.symbol),zendeskId:o.zendesk_article_id||void 0,tooltip:o.description||void 0}))||[]},...R?[{label:"Management fee",regionalAmount:r(e.regional_currency_costs.monthly_management_fee,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.monthly_management_fee,e.employer_currency_costs.currency.symbol),tooltip:"Discounts may be available based on your commitment and team size. Speak to your account or customer success manager to learn more."}]:[]],isMultipleCurrency:y})})]}),n("div",{className:"RemoteFlows__Separator",children:n(F,{label:"Annual total cost",amounts:y?[r(e.regional_currency_costs.annual_total,e.regional_currency_costs.currency.symbol),r(e.employer_currency_costs.annual_total,e.employer_currency_costs.currency.symbol)]:r(e.regional_currency_costs.annual_total,e.regional_currency_costs.currency.symbol),isHeader:!0,isCollapsible:!0,children:n(k,{items:[{label:"Annual gross salary",regionalAmount:r(e.regional_currency_costs.annual_gross_salary,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.annual_gross_salary,e.employer_currency_costs.currency.symbol)},{label:"Mandatory employer costs",regionalAmount:r(e.regional_currency_costs.annual_contributions_total,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.annual_contributions_total,e.employer_currency_costs.currency.symbol),children:e.employer_currency_costs.annual_contributions_breakdown?.map(o=>({label:o.name,regionalAmount:r(o.amount,e.regional_currency_costs.currency.symbol),employerAmount:r(o.amount,e.employer_currency_costs.currency.symbol),zendeskId:o.zendesk_article_id||void 0,tooltip:o.description||void 0}))||[]},{label:"Core benefits",regionalAmount:r(e.regional_currency_costs.annual_benefits_total,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.annual_benefits_total,e.employer_currency_costs.currency.symbol),children:e.employer_currency_costs.annual_benefits_breakdown?.map(o=>({label:o.name,regionalAmount:r(o.amount,e.regional_currency_costs.currency.symbol),employerAmount:r(o.amount,e.employer_currency_costs.currency.symbol),zendeskId:o.zendesk_article_id||void 0,tooltip:o.description||void 0}))||[]},{label:"Extra statutory payments",regionalAmount:r(e.regional_currency_costs.extra_statutory_payments_total,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.extra_statutory_payments_total,e.employer_currency_costs.currency.symbol),children:e.employer_currency_costs.extra_statutory_payments_breakdown?.map(o=>({label:o.name,regionalAmount:r(o.amount,e.regional_currency_costs.currency.symbol),employerAmount:r(o.amount,e.employer_currency_costs.currency.symbol),zendeskId:o.zendesk_article_id||void 0,tooltip:o.description||void 0}))||[]},...R?[{label:"Management fee",regionalAmount:r(e.regional_currency_costs.annual_management_fee,e.regional_currency_costs.currency.symbol),employerAmount:r(e.employer_currency_costs.annual_management_fee,e.employer_currency_costs.currency.symbol),tooltip:"Discounts may be available based on your commitment and team size. Speak to your account or customer success manager to learn more."}]:[]],isMultipleCurrency:y})})}),n("div",{className:"RemoteFlows__Separator",children:n(m,{minimumOnboardingDays:e.minimum_onboarding_time,data:f})}),n(u,{countryBenefitsUrl:e.country_benefits_details_url,countryGuideUrl:e.country_guide_url,country:e.country}),g&&n(g,{})]})},"EstimationResults");export{me as a};
2
+ //# sourceMappingURL=chunk-MCPVKP6Q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/shared/actions-dropdown/ActionsDropdown.tsx","../src/flows/CostCalculator/EstimationResults/EstimationResults.tsx"],"sourcesContent":["import { Button } from '@/src/components/ui/button';\nimport { cn } from '@/src/lib/utils';\nimport { MoreHorizontal } from 'lucide-react';\nimport { useState, type ReactNode } from 'react';\n\nexport interface DropdownAction {\n label: string;\n icon?: ReactNode;\n onClick: () => void;\n separator?: boolean;\n disabled?: boolean;\n}\n\ninterface ActionsDropdownProps {\n actions?: DropdownAction[];\n className?: string;\n}\n\nexport function ActionsDropdown({\n actions = [],\n className,\n}: ActionsDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <div className={cn('relative', className)}>\n <Button\n variant=\"ghost\"\n className=\"h-8 w-8 p-0\"\n onClick={() => setIsOpen(!isOpen)}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n\n {isOpen && (\n <>\n <div\n className=\"fixed inset-0 z-40\"\n onClick={() => setIsOpen(false)}\n />\n <div className=\"absolute right-0 top-1/2 mt-1 bg-white border border-gray-200 rounded-md shadow-lg z-50 min-w-[120px]\">\n {actions.map((action, index) => (\n <button\n key={index}\n className={cn(\n 'w-full text-left px-2 py-1.5 text-sm hover:bg-gray-100',\n action.disabled && 'opacity-50 cursor-not-allowed',\n )}\n onClick={() => {\n action.onClick();\n setIsOpen(false);\n }}\n disabled={action.disabled}\n >\n {action.label}\n </button>\n ))}\n </div>\n </>\n )}\n </div>\n );\n}\n","import {\n CostCalculatorEmployment,\n MinimalCountry,\n MinimalRegion,\n} from '@/src/client';\nimport { ActionsDropdown } from '@/src/components/shared/actions-dropdown/ActionsDropdown';\nimport { Card } from '@/src/components/ui/card';\nimport { ChevronDown, Info } from 'lucide-react';\nimport Flag from 'react-flagpack';\nimport { useState } from 'react';\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from '@/src/components/ui/accordion';\nimport { cn, formatCurrency } from '@/src/lib/utils';\nimport { ZendeskTriggerButton } from '@/src/components/shared/zendesk-drawer/ZendeskTriggerButton';\nimport { zendeskArticles } from '@/src/components/shared/zendesk-drawer/utils';\nimport { BasicTooltip } from '@/src/components/ui/basic-tooltip';\n\nconst EstimationResultsHeader = ({\n title,\n country,\n region,\n onDelete,\n onExportPdf,\n}: {\n title: string;\n country: MinimalCountry;\n region?: MinimalRegion;\n onDelete: () => void;\n onExportPdf: () => void;\n}) => {\n const actions = [\n {\n label: 'Edit',\n onClick: () => {},\n disabled: true,\n },\n {\n label: 'Export',\n onClick: onExportPdf,\n },\n {\n label: 'Delete',\n onClick: onDelete,\n },\n ];\n return (\n <div className=\"RemoteFlows__EstimationResults__Header flex justify-between\">\n <div className=\"flex flex-row items-center gap-6\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-lg bg-[#F4F4F5]\">\n <Flag code={country.alpha_2_code} />\n </div>\n <div className=\"space-y-1\">\n <h2 className=\"text-lg font-medium leading-none text-[#181818]\">\n {title}\n </h2>\n <p className=\"text-xs text-[#71717A]\">\n {country.name} {region ? ` (${region.name})` : ''}\n </p>\n </div>\n </div>\n <ActionsDropdown\n className=\"RemoteFlows__EstimationResults__ActionsDropdown\"\n actions={actions}\n />\n </div>\n );\n};\n\ninterface OnboardingTimelineStep {\n title: string;\n description: string;\n id: string;\n}\n\ninterface OnboardingTimelineData {\n steps: OnboardingTimelineStep[];\n helpText: string;\n zendeskArticleId?: number;\n}\n\nconst getOnboardingTimelineData = (): OnboardingTimelineData => {\n return {\n steps: [\n {\n id: 'add-employment-details',\n title: 'Add employment details',\n description: 'You add employee employments details.',\n },\n {\n id: 'invite-employee',\n title: 'Invite employee',\n description:\n 'Hire receives an email invitation from Remote to start the self-enrollment process.',\n },\n {\n id: 'verify-information',\n title: 'Verify information',\n description:\n 'Remote prepares the Employment Agreement and verifies all the information.',\n },\n {\n id: 'sign-contract',\n title: 'Sign contract',\n description:\n 'All parties sign the Employment Agreement and are ready to start. 🎉',\n },\n ],\n helpText:\n 'For customers who accept our Terms of Service (ToS), the employee onboarding timeline starts once the employee has been invited to the platform and completed self enrolment.',\n zendeskArticleId: zendeskArticles.employeeOnboardingTimeline,\n };\n};\n\nfunction OnboardingTimeline({\n minimumOnboardingDays,\n data,\n className,\n}: {\n minimumOnboardingDays: number | null;\n data: OnboardingTimelineData;\n className?: string;\n}) {\n return (\n <Accordion\n type=\"single\"\n collapsible\n className={cn(\n 'RemoteFlows__EstimationResults__OnboardingTimeline w-full',\n className,\n )}\n >\n <AccordionItem value=\"timeline\" className=\"border-border\">\n <AccordionTrigger className=\"hover:no-underline px-0 py-4\">\n <div className=\"flex items-center justify-between w-full\">\n <span className=\"text-base font-medium text-[#0F172A]\">\n Onboarding timeline\n </span>\n <span className=\"text-base text-muted-foreground mr-4\">\n {minimumOnboardingDays} days\n </span>\n </div>\n </AccordionTrigger>\n <AccordionContent className=\"px-0 pb-4\">\n <ul className=\"list-disc list-inside space-y-2\">\n {data.steps.map((step) => (\n <li key={step.id}>\n <strong className=\"font-medium text-[#09090B]\">\n {step.title}\n </strong>{' '}\n - {step.description}\n </li>\n ))}\n </ul>\n <p className=\"text-xs text-muted-foreground mt-4\">\n {data.helpText}\n {data.zendeskArticleId && (\n <ZendeskTriggerButton zendeskId={data.zendeskArticleId}>\n Learn more\n </ZendeskTriggerButton>\n )}\n </p>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n );\n}\n\nfunction HiringSection({\n className,\n countryBenefitsUrl,\n countryGuideUrl,\n country,\n}: {\n className?: string;\n countryBenefitsUrl: string;\n countryGuideUrl: string;\n country: MinimalCountry;\n}) {\n return (\n <Accordion\n type=\"single\"\n collapsible\n className={cn(\n 'RemoteFlows__EstimationResults__HiringSection w-full',\n className,\n )}\n >\n <AccordionItem value=\"timeline\" className=\"border-border\">\n <AccordionTrigger className=\"hover:no-underline px-0 py-4\">\n <div className=\"flex items-center justify-between w-full\">\n <span className=\"text-base font-medium text-[#0F172A]\">\n Hiring in {country.name}\n </span>\n </div>\n </AccordionTrigger>\n <AccordionContent>\n <div className=\"flex flex-col gap-1\">\n <a\n href={countryGuideUrl}\n target=\"_blank\"\n className=\"RemoteFlows__Link\"\n >\n Explore our complete guide ↗\n </a>\n <a\n href={countryBenefitsUrl}\n target=\"_blank\"\n className=\"RemoteFlows__Link\"\n >\n Explore our available benefits ↗\n </a>\n </div>\n </AccordionContent>\n </AccordionItem>\n </Accordion>\n );\n}\n\nfunction EstimationHeaders({\n isMultipleCurrency,\n className,\n}: {\n isMultipleCurrency: boolean;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'RemoteFlows__EstimationResults__Headers grid grid-cols-3 items-center',\n className,\n )}\n >\n <span aria-hidden />\n {isMultipleCurrency ? (\n <>\n <span className=\"RemoteFlows__EstimationResults__Headers__Label\">\n Employee currency\n </span>\n <span className=\"RemoteFlows__EstimationResults__Headers__Label\">\n Employer currency\n </span>\n </>\n ) : (\n <>\n <span></span>\n <span className=\"RemoteFlows__EstimationResults__Headers__Label\">\n Amount\n </span>\n </>\n )}\n </div>\n );\n}\n\nfunction EstimationRow({\n label,\n amounts,\n className,\n isHeader = false,\n isCollapsible = false,\n children,\n}: {\n label: string | React.ReactNode;\n amounts: string | string[];\n className?: string;\n isHeader?: boolean;\n isCollapsible?: boolean;\n children?: React.ReactNode;\n}) {\n const [isOpen, setIsOpen] = useState(true);\n\n return (\n <div className={cn('RemoteFlows__EstimationResults__Row', className)}>\n <div className=\"grid grid-cols-3 items-center\">\n <div className=\"flex items-center gap-2\">\n <span\n className={cn(\n 'min-w-[140px]',\n isHeader ? 'font-medium text-[#09090B]' : '',\n )}\n >\n {label}\n </span>\n {isCollapsible && (\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronDown\n className={`h-4 w-4 text-muted-foreground transition-transform ${\n isOpen ? 'rotate-180' : ''\n }`}\n />\n </button>\n )}\n </div>\n\n {Array.isArray(amounts) ? (\n amounts.map((amount, index) => (\n <span\n key={index}\n className={cn(\n 'text-right',\n isHeader ? 'font-medium text-[#09090B]' : '',\n )}\n >\n {amount}\n </span>\n ))\n ) : (\n <>\n <span></span>\n <span\n className={cn(\n 'text-right',\n isHeader ? 'font-medium text-[#09090B]' : '',\n )}\n >\n {amounts}\n </span>\n </>\n )}\n </div>\n\n {/* Collapsible content */}\n {isCollapsible && isOpen && children && (\n <div className=\"mt-4\">{children}</div>\n )}\n </div>\n );\n}\n\ninterface BreakdownItem {\n label: string;\n tooltip?: string;\n regionalAmount?: string;\n employerAmount?: string;\n description?: string;\n zendeskId?: string;\n isCollapsible?: boolean;\n children?: BreakdownItem[];\n}\n\nfunction BreakdownListItem({\n item,\n isMultipleCurrency,\n level = 0,\n}: {\n item: BreakdownItem;\n isMultipleCurrency: boolean;\n level?: number;\n}) {\n const [isOpen, setIsOpen] = useState(false);\n const hasChildren = item.children && item.children.length > 0;\n const isNested = level > 0;\n\n return (\n <li className={cn('pb-3', isNested && 'pb-1')}>\n <div\n className={cn(\n isMultipleCurrency\n ? 'grid grid-cols-3 items-center justify-between'\n : 'grid grid-cols-2 items-center justify-between',\n )}\n >\n <div className={cn('flex items-center gap-2', isNested && 'pl-3')}>\n {!isNested && (\n <span\n className=\"w-1 h-1 bg-[#09090B] rounded-full flex-shrink-0\"\n aria-hidden=\"true\"\n />\n )}\n\n <span\n className={cn(\n isNested ? 'text-xs text-[#71717A]' : 'text-sm text-[#09090B]', // Different colors\n )}\n >\n {item.label}\n </span>\n\n {item.tooltip && (\n <BasicTooltip\n content={\n <>\n <span>{item.tooltip}</span>{' '}\n {item.zendeskId && (\n <ZendeskTriggerButton zendeskId={Number(item.zendeskId)}>\n Learn more\n </ZendeskTriggerButton>\n )}\n </>\n }\n >\n <button className=\"p-1 hover:bg-gray-100 rounded\">\n <Info\n className={cn(\n 'text-muted-foreground',\n isNested ? 'h-3 w-3' : 'h-4 w-4',\n )}\n />\n </button>\n </BasicTooltip>\n )}\n\n {(item.isCollapsible || hasChildren) && (\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n <ChevronDown\n className={`h-3 w-3 text-muted-foreground transition-transform ${\n isOpen ? 'rotate-180' : ''\n }`}\n />\n </button>\n )}\n </div>\n\n {isMultipleCurrency ? (\n <>\n <span\n className={cn(\n 'text-sm text-right',\n isNested ? 'text-[#71717A]' : 'text-[#09090B]',\n )}\n >\n {item.regionalAmount || '—'}\n </span>\n <span\n className={cn(\n 'text-sm text-right',\n isNested ? 'text-[#71717A]' : 'text-[#09090B]',\n )}\n >\n {item.employerAmount || '—'}\n </span>\n </>\n ) : (\n <span\n className={cn(\n 'text-sm text-right',\n isNested ? 'text-[#71717A]' : 'text-[#09090B]',\n )}\n >\n {item.regionalAmount || '—'}\n </span>\n )}\n </div>\n\n {hasChildren && isOpen && (\n <div className=\"mt-1\">\n <BreakdownList\n items={item.children!}\n isMultipleCurrency={isMultipleCurrency}\n level={level + 1}\n />\n </div>\n )}\n </li>\n );\n}\n\ninterface BreakdownListProps {\n items: BreakdownItem[];\n isMultipleCurrency: boolean;\n className?: string;\n level?: number;\n}\n\nfunction BreakdownList({\n items,\n isMultipleCurrency,\n className,\n level,\n}: BreakdownListProps) {\n return (\n <ul className={cn('list-none', className)}>\n {items.map((item, index) => (\n <BreakdownListItem\n key={index}\n item={item}\n isMultipleCurrency={isMultipleCurrency}\n level={level}\n />\n ))}\n </ul>\n );\n}\n\ntype EstimationResultsComponents = {\n HiringSection?: React.ComponentType<{\n country: MinimalCountry;\n countryBenefitsUrl: string;\n countryGuideUrl: string;\n }>;\n OnboardingTimeline?: React.ComponentType<{\n minimumOnboardingDays: number | null;\n data: OnboardingTimelineData;\n }>;\n Header?: React.ComponentType<{\n title: string;\n region?: MinimalRegion;\n country: MinimalCountry;\n onDelete: () => void;\n onExportPdf: () => void;\n }>;\n Footer?: React.ComponentType;\n};\n\ntype EstimationResultsProps = {\n estimation: CostCalculatorEmployment;\n title: string;\n components?: EstimationResultsComponents;\n onDelete: () => void;\n onExportPdf: () => void;\n};\n\nexport const EstimationResults = ({\n estimation,\n title,\n components,\n onDelete,\n onExportPdf,\n}: EstimationResultsProps) => {\n const CustomHiringSection = components?.HiringSection || HiringSection;\n const CustomOnboardingTimeline =\n components?.OnboardingTimeline || OnboardingTimeline;\n const CustomHeader = components?.Header || EstimationResultsHeader;\n const CustomFooter = components?.Footer;\n\n const onboardingTimelineData = getOnboardingTimelineData();\n\n const isMultipleCurrency =\n estimation.employer_currency_costs.currency.code !==\n estimation.regional_currency_costs.currency.code;\n\n const hasManagementFee =\n estimation.employer_currency_costs.monthly_management_fee;\n\n const hasRegion = estimation.region.code !== estimation.country.code;\n\n return (\n <Card className=\"RemoteFlows__EstimationResults__Card p-10\">\n <div className=\"RemoteFlows__Separator\">\n <CustomHeader\n title={title}\n region={hasRegion ? estimation.region : undefined}\n country={estimation.country}\n onDelete={onDelete}\n onExportPdf={onExportPdf}\n />\n </div>\n <div className=\"RemoteFlows__Separator\">\n <EstimationHeaders\n isMultipleCurrency={isMultipleCurrency}\n className=\"mb-3\"\n />\n <EstimationRow\n label=\"Monthly total cost\"\n amounts={\n isMultipleCurrency\n ? [\n formatCurrency(\n estimation.regional_currency_costs.monthly_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n formatCurrency(\n estimation.employer_currency_costs.monthly_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n ]\n : formatCurrency(\n estimation.regional_currency_costs.monthly_total,\n estimation.regional_currency_costs.currency.symbol,\n )\n }\n isHeader\n isCollapsible\n >\n <BreakdownList\n items={[\n {\n label: 'Gross monthly salary',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs.monthly_gross_salary,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs.monthly_gross_salary,\n estimation.employer_currency_costs.currency.symbol,\n ),\n zendeskId: zendeskArticles.extraPayments.toString(),\n tooltip:\n 'This country respects extra payments on top of the gross salary.',\n },\n {\n label: 'Mandatory employer costs',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs\n .monthly_contributions_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs\n .monthly_contributions_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n children:\n estimation.employer_currency_costs.monthly_contributions_breakdown?.map(\n (item) => ({\n label: item.name,\n regionalAmount: formatCurrency(\n item.amount,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n item.amount,\n estimation.employer_currency_costs.currency.symbol,\n ),\n zendeskId: item.zendesk_article_id || undefined,\n tooltip: item.description || undefined,\n }),\n ) || [],\n },\n {\n label: 'Core benefits',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs.monthly_benefits_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs.monthly_benefits_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n children:\n estimation.employer_currency_costs.monthly_benefits_breakdown?.map(\n (item) => ({\n label: item.name,\n regionalAmount: formatCurrency(\n item.amount,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n item.amount,\n estimation.employer_currency_costs.currency.symbol,\n ),\n zendeskId: item.zendesk_article_id || undefined,\n tooltip: item.description || undefined,\n }),\n ) || [],\n },\n ...(hasManagementFee\n ? [\n {\n label: 'Management fee',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs\n .monthly_management_fee,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs\n .monthly_management_fee,\n estimation.employer_currency_costs.currency.symbol,\n ),\n tooltip:\n 'Discounts may be available based on your commitment and team size. Speak to your account or customer success manager to learn more.',\n },\n ]\n : []),\n ]}\n isMultipleCurrency={isMultipleCurrency}\n />\n </EstimationRow>\n </div>\n <div className=\"RemoteFlows__Separator\">\n <EstimationRow\n label=\"Annual total cost\"\n amounts={\n isMultipleCurrency\n ? [\n formatCurrency(\n estimation.regional_currency_costs.annual_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n formatCurrency(\n estimation.employer_currency_costs.annual_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n ]\n : formatCurrency(\n estimation.regional_currency_costs.annual_total,\n estimation.regional_currency_costs.currency.symbol,\n )\n }\n isHeader\n isCollapsible\n >\n <BreakdownList\n items={[\n {\n label: 'Annual gross salary',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs.annual_gross_salary,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs.annual_gross_salary,\n estimation.employer_currency_costs.currency.symbol,\n ),\n },\n {\n label: 'Mandatory employer costs',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs.annual_contributions_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs.annual_contributions_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n children:\n estimation.employer_currency_costs.annual_contributions_breakdown?.map(\n (item) => ({\n label: item.name,\n regionalAmount: formatCurrency(\n item.amount,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n item.amount,\n estimation.employer_currency_costs.currency.symbol,\n ),\n zendeskId: item.zendesk_article_id || undefined,\n tooltip: item.description || undefined,\n }),\n ) || [],\n },\n {\n label: 'Core benefits',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs.annual_benefits_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs.annual_benefits_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n children:\n estimation.employer_currency_costs.annual_benefits_breakdown?.map(\n (item) => ({\n label: item.name,\n regionalAmount: formatCurrency(\n item.amount,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n item.amount,\n estimation.employer_currency_costs.currency.symbol,\n ),\n zendeskId: item.zendesk_article_id || undefined,\n tooltip: item.description || undefined,\n }),\n ) || [],\n },\n {\n label: 'Extra statutory payments',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs\n .extra_statutory_payments_total,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs\n .extra_statutory_payments_total,\n estimation.employer_currency_costs.currency.symbol,\n ),\n children:\n estimation.employer_currency_costs.extra_statutory_payments_breakdown?.map(\n (item) => ({\n label: item.name,\n regionalAmount: formatCurrency(\n item.amount,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n item.amount,\n estimation.employer_currency_costs.currency.symbol,\n ),\n zendeskId: item.zendesk_article_id || undefined,\n tooltip: item.description || undefined,\n }),\n ) || [],\n },\n ...(hasManagementFee\n ? [\n {\n label: 'Management fee',\n regionalAmount: formatCurrency(\n estimation.regional_currency_costs\n .annual_management_fee,\n estimation.regional_currency_costs.currency.symbol,\n ),\n employerAmount: formatCurrency(\n estimation.employer_currency_costs\n .annual_management_fee,\n estimation.employer_currency_costs.currency.symbol,\n ),\n tooltip:\n 'Discounts may be available based on your commitment and team size. Speak to your account or customer success manager to learn more.',\n },\n ]\n : []),\n ]}\n isMultipleCurrency={isMultipleCurrency}\n />\n </EstimationRow>\n </div>\n <div className=\"RemoteFlows__Separator\">\n <CustomOnboardingTimeline\n minimumOnboardingDays={estimation.minimum_onboarding_time}\n data={onboardingTimelineData}\n />\n </div>\n\n <CustomHiringSection\n countryBenefitsUrl={estimation.country_benefits_details_url as string}\n countryGuideUrl={estimation.country_guide_url as string}\n country={estimation.country}\n />\n\n {CustomFooter && <CustomFooter />}\n </Card>\n );\n};\n"],"mappings":"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","names":["MoreHorizontal","useState","Fragment","jsx","jsxs","ActionsDropdown","actions","className","isOpen","setIsOpen","useState","cn","Button","MoreHorizontal","action","index","__name","ChevronDown","Info","Flag","useState","Fragment","jsx","jsxs","EstimationResultsHeader","__name","title","country","region","onDelete","onExportPdf","actions","Flag","ActionsDropdown","getOnboardingTimelineData","zendeskArticles","OnboardingTimeline","minimumOnboardingDays","data","className","Accordion","cn","AccordionItem","AccordionTrigger","AccordionContent","step","ZendeskTriggerButton","HiringSection","countryBenefitsUrl","countryGuideUrl","EstimationHeaders","isMultipleCurrency","EstimationRow","label","amounts","isHeader","isCollapsible","children","isOpen","setIsOpen","useState","ChevronDown","amount","index","BreakdownListItem","item","level","hasChildren","isNested","BasicTooltip","Info","BreakdownList","items","EstimationResults","estimation","components","CustomHiringSection","CustomOnboardingTimeline","CustomHeader","CustomFooter","onboardingTimelineData","hasManagementFee","hasRegion","Card","formatCurrency"]}
@@ -0,0 +1,2 @@
1
+ var e={data:{version:7,schema:{additionalProperties:!1,properties:{country:{title:"Country",description:"",type:"string",oneOf:[],"x-jsf-presentation":{inputType:"select"}},region:{title:"Region",description:"",type:"string",oneOf:[],"x-jsf-presentation":{inputType:"select"}},currency:{title:"Currency",description:"",type:"string",oneOf:[],"x-jsf-presentation":{inputType:"select"}},salary:{description:"",title:"Salary",type:"integer","x-jsf-presentation":{inputType:"money"}},salary_conversion:{description:"",title:"Salary",type:"integer","x-jsf-presentation":{inputType:"money",hidden:!0}},salary_converted:{description:"Whether the salary is expressed in regional or employer currency",title:"Salary in employer currency",type:"string","x-jsf-presentation":{inputType:"hidden",hidden:!0}}},required:["country","currency","salary","salary_conversion","salary_converted"],type:"object","x-jsf-order":["country","region","currency","salary"]}}};export{e as a};
2
+ //# sourceMappingURL=chunk-NPZ5QJSG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/CostCalculator/jsonSchema.ts"],"sourcesContent":["export const jsonSchema = {\n data: {\n version: 7,\n schema: {\n additionalProperties: false,\n properties: {\n country: {\n title: 'Country',\n description: '',\n type: 'string',\n oneOf: [],\n 'x-jsf-presentation': {\n inputType: 'select',\n },\n },\n region: {\n title: 'Region',\n description: '',\n type: 'string',\n oneOf: [],\n 'x-jsf-presentation': {\n inputType: 'select',\n },\n },\n currency: {\n title: 'Currency',\n description: '',\n type: 'string',\n oneOf: [],\n 'x-jsf-presentation': {\n inputType: 'select',\n },\n },\n salary: {\n description: '',\n title: 'Salary',\n type: 'integer',\n 'x-jsf-presentation': {\n inputType: 'money',\n },\n },\n salary_conversion: {\n description: '',\n title: 'Salary',\n type: 'integer',\n 'x-jsf-presentation': {\n inputType: 'money',\n hidden: true,\n },\n },\n salary_converted: {\n description:\n 'Whether the salary is expressed in regional or employer currency',\n title: 'Salary in employer currency',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'hidden',\n hidden: true,\n },\n },\n },\n required: [\n 'country',\n 'currency',\n 'salary',\n 'salary_conversion',\n 'salary_converted',\n ],\n type: 'object',\n 'x-jsf-order': ['country', 'region', 'currency', 'salary'],\n },\n },\n};\n"],"mappings":"AAAO,IAAMA,EAAa,CACxB,KAAM,CACJ,QAAS,EACT,OAAQ,CACN,qBAAsB,GACtB,WAAY,CACV,QAAS,CACP,MAAO,UACP,YAAa,GACb,KAAM,SACN,MAAO,CAAC,EACR,qBAAsB,CACpB,UAAW,QACb,CACF,EACA,OAAQ,CACN,MAAO,SACP,YAAa,GACb,KAAM,SACN,MAAO,CAAC,EACR,qBAAsB,CACpB,UAAW,QACb,CACF,EACA,SAAU,CACR,MAAO,WACP,YAAa,GACb,KAAM,SACN,MAAO,CAAC,EACR,qBAAsB,CACpB,UAAW,QACb,CACF,EACA,OAAQ,CACN,YAAa,GACb,MAAO,SACP,KAAM,UACN,qBAAsB,CACpB,UAAW,OACb,CACF,EACA,kBAAmB,CACjB,YAAa,GACb,MAAO,SACP,KAAM,UACN,qBAAsB,CACpB,UAAW,QACX,OAAQ,EACV,CACF,EACA,iBAAkB,CAChB,YACE,mEACF,MAAO,8BACP,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,OAAQ,EACV,CACF,CACF,EACA,SAAU,CACR,UACA,WACA,SACA,oBACA,kBACF,EACA,KAAM,SACN,cAAe,CAAC,UAAW,SAAU,WAAY,QAAQ,CAC3D,CACF,CACF","names":["jsonSchema"]}
@@ -0,0 +1,2 @@
1
+ import{a as s}from"./chunk-KSHK3ZPX.js";import{c as n,d as e}from"./chunk-5CUF63YR.js";import{b as a}from"./chunk-CFIJKJXD.js";import{f as l}from"./chunk-GAOBYAJE.js";import{a as t}from"./chunk-P37U34EQ.js";import{useId as p}from"react";import{jsx as d}from"react/jsx-runtime";var h=t(({estimationOptions:c=n,defaultValues:o={countryRegionSlug:"",currencySlug:"",salary:""},options:i,render:u,version:C="standard"})=>{let m=p(),r=e({defaultRegion:o.countryRegionSlug,defaultCurrency:o.currencySlug,defaultSalary:o.salary,estimationOptions:c,version:C,options:i}),y=a(r.handleValidation),g=l({resolver:y,defaultValues:{country:o?.countryRegionSlug,currency:o?.currencySlug,region:"",salary:o?.salary,salary_conversion:"",salary_converted:""},shouldUnregister:!1,mode:"onBlur"});return d(s.Provider,{value:{form:g,formId:m,costCalculatorBag:r},children:u(r)})},"CostCalculatorFlow");export{h as a};
2
+ //# sourceMappingURL=chunk-P4C2MI7X.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/flows/CostCalculator/CostCalculatorFlow.tsx"],"sourcesContent":["import { useJsonSchemasValidationFormResolver } from '@/src/components/form/yupValidationResolver';\nimport { CostCalculatorContext } from '@/src/flows/CostCalculator/context';\nimport {\n CostCalculatorVersion,\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\nimport {\n CostCalculatorEstimationOptions,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport React, { useId } from 'react';\nimport { useForm } from 'react-hook-form';\n\nexport type CostCalculatorFlowProps = {\n /**\n * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.\n */\n estimationOptions?: CostCalculatorEstimationOptions;\n /**\n * Default values for the form fields.\n */\n defaultValues?: Partial<{\n /**\n * Default value for the country field.\n */\n countryRegionSlug: string;\n /**\n * Default value for the currency field.\n */\n currencySlug: string;\n /**\n * Default value for the salary field.\n */\n salary: string;\n }>;\n options?: 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\nexport const CostCalculatorFlow = ({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n currencySlug: '',\n salary: '',\n },\n options,\n render,\n version = 'standard',\n}: CostCalculatorFlowProps) => {\n const formId = useId();\n const costCalculatorBag = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n defaultCurrency: defaultValues.currencySlug,\n estimationOptions,\n version,\n options,\n });\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n costCalculatorBag.handleValidation,\n );\n\n const form = useForm({\n resolver,\n defaultValues: {\n country: defaultValues?.countryRegionSlug,\n currency: defaultValues?.currencySlug,\n region: '',\n salary: defaultValues?.salary,\n salary_converted: false,\n },\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n return (\n <CostCalculatorContext.Provider\n value={{\n form,\n formId: formId,\n costCalculatorBag,\n }}\n >\n {render(costCalculatorBag)}\n </CostCalculatorContext.Provider>\n );\n};\n"],"mappings":"+MAWA,OAAgB,SAAAA,MAAa,QAyEzB,cAAAC,MAAA,oBAtCG,IAAMC,EAAqBC,EAAA,CAAC,CACjC,kBAAAC,EAAoBC,EACpB,cAAAC,EAAgB,CACd,kBAAmB,GACnB,aAAc,GACd,OAAQ,EACV,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EAAU,UACZ,IAA+B,CAC7B,IAAMC,EAASC,EAAM,EACfC,EAAoBC,EAAkB,CAC1C,cAAeP,EAAc,kBAC7B,gBAAiBA,EAAc,aAC/B,kBAAAF,EACA,QAAAK,EACA,QAAAF,CACF,CAAC,EACKO,EAAWC,EAEfH,EAAkB,gBACpB,EAEMI,EAAOC,EAAQ,CACnB,SAAAH,EACA,cAAe,CACb,QAASR,GAAe,kBACxB,SAAUA,GAAe,aACzB,OAAQ,GACR,OAAQA,GAAe,OACvB,iBAAkB,EACpB,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAED,OACEL,EAACiB,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAF,EACA,OAAQN,EACR,kBAAAE,CACF,EAEC,SAAAJ,EAAOI,CAAiB,EAC3B,CAEJ,EAhDkC","names":["useId","jsx","CostCalculatorFlow","__name","estimationOptions","defaultEstimationOptions","defaultValues","options","render","version","formId","useId","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","form","useForm","CostCalculatorContext"]}
1
+ {"version":3,"sources":["../src/flows/CostCalculator/CostCalculatorFlow.tsx"],"sourcesContent":["import { useJsonSchemasValidationFormResolver } from '@/src/components/form/yupValidationResolver';\nimport { CostCalculatorContext } from '@/src/flows/CostCalculator/context';\nimport {\n CostCalculatorVersion,\n defaultEstimationOptions,\n useCostCalculator,\n} from '@/src/flows/CostCalculator/hooks';\nimport {\n CostCalculatorEstimationOptions,\n UseCostCalculatorOptions,\n} from '@/src/flows/CostCalculator/types';\nimport React, { useId } from 'react';\nimport { useForm } from 'react-hook-form';\n\nexport type CostCalculatorFlowProps = {\n /**\n * Estimation params allows you to customize the parameters sent to the /cost-calculator/estimation endpoint.\n */\n estimationOptions?: CostCalculatorEstimationOptions;\n /**\n * Default values for the form fields.\n */\n defaultValues?: Partial<{\n /**\n * Default value for the country field.\n */\n countryRegionSlug: string;\n /**\n * Default value for the currency field.\n */\n currencySlug: string;\n /**\n * Default value for the salary field.\n */\n salary: string;\n }>;\n options?: 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\nexport const CostCalculatorFlow = ({\n estimationOptions = defaultEstimationOptions,\n defaultValues = {\n countryRegionSlug: '',\n currencySlug: '',\n salary: '',\n },\n options,\n render,\n version = 'standard',\n}: CostCalculatorFlowProps) => {\n const formId = useId();\n const costCalculatorBag = useCostCalculator({\n defaultRegion: defaultValues.countryRegionSlug,\n defaultCurrency: defaultValues.currencySlug,\n defaultSalary: defaultValues.salary,\n estimationOptions,\n version,\n options,\n });\n const resolver = useJsonSchemasValidationFormResolver(\n // @ts-expect-error no matching type\n costCalculatorBag.handleValidation,\n );\n\n const form = useForm({\n resolver,\n defaultValues: {\n country: defaultValues?.countryRegionSlug,\n currency: defaultValues?.currencySlug,\n region: '',\n salary: defaultValues?.salary,\n salary_conversion: '',\n salary_converted: '',\n },\n shouldUnregister: false,\n mode: 'onBlur',\n });\n\n return (\n <CostCalculatorContext.Provider\n value={{\n form,\n formId: formId,\n costCalculatorBag,\n }}\n >\n {render(costCalculatorBag)}\n </CostCalculatorContext.Provider>\n );\n};\n"],"mappings":"+MAWA,OAAgB,SAAAA,MAAa,QA2EzB,cAAAC,MAAA,oBAxCG,IAAMC,EAAqBC,EAAA,CAAC,CACjC,kBAAAC,EAAoBC,EACpB,cAAAC,EAAgB,CACd,kBAAmB,GACnB,aAAc,GACd,OAAQ,EACV,EACA,QAAAC,EACA,OAAAC,EACA,QAAAC,EAAU,UACZ,IAA+B,CAC7B,IAAMC,EAASC,EAAM,EACfC,EAAoBC,EAAkB,CAC1C,cAAeP,EAAc,kBAC7B,gBAAiBA,EAAc,aAC/B,cAAeA,EAAc,OAC7B,kBAAAF,EACA,QAAAK,EACA,QAAAF,CACF,CAAC,EACKO,EAAWC,EAEfH,EAAkB,gBACpB,EAEMI,EAAOC,EAAQ,CACnB,SAAAH,EACA,cAAe,CACb,QAASR,GAAe,kBACxB,SAAUA,GAAe,aACzB,OAAQ,GACR,OAAQA,GAAe,OACvB,kBAAmB,GACnB,iBAAkB,EACpB,EACA,iBAAkB,GAClB,KAAM,QACR,CAAC,EAED,OACEL,EAACiB,EAAsB,SAAtB,CACC,MAAO,CACL,KAAAF,EACA,OAAQN,EACR,kBAAAE,CACF,EAEC,SAAAJ,EAAOI,CAAiB,EAC3B,CAEJ,EAlDkC","names":["useId","jsx","CostCalculatorFlow","__name","estimationOptions","defaultEstimationOptions","defaultValues","options","render","version","formId","useId","costCalculatorBag","useCostCalculator","resolver","useJsonSchemasValidationFormResolver","form","useForm","CostCalculatorContext"]}
@@ -0,0 +1,2 @@
1
+ import{m as K}from"./chunk-47VYBPE2.js";import{a as w}from"./chunk-NVJYAX22.js";import{b as G}from"./chunk-3ZWDIEEM.js";import{c as J}from"./chunk-GAOBYAJE.js";import{a as t,b as d,c as Me}from"./chunk-P37U34EQ.js";var L=d((Et,U)=>{"use strict";function Pe(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}t(Pe,"isObject");U.exports=Pe});var X=d(($t,V)=>{"use strict";var _e=typeof global=="object"&&global&&global.Object===Object&&global;V.exports=_e});var F=d((qt,z)=>{"use strict";var ke=X(),we=typeof self=="object"&&self&&self.Object===Object&&self,Le=ke||we||Function("return this")();z.exports=Le});var Y=d((It,Q)=>{"use strict";var Fe=F(),Ae=t(function(){return Fe.Date.now()},"now");Q.exports=Ae});var ee=d((Pt,Z)=>{"use strict";var We=/\s/;function De(e){for(var n=e.length;n--&&We.test(e.charAt(n)););return n}t(De,"trimmedEndIndex");Z.exports=De});var ne=d((kt,te)=>{"use strict";var Be=ee(),Ne=/^\s+/;function He(e){return e&&e.slice(0,Be(e)+1).replace(Ne,"")}t(He,"baseTrim");te.exports=He});var A=d((Lt,re)=>{"use strict";var Ge=F(),Je=Ge.Symbol;re.exports=Je});var ae=d((Ft,se)=>{"use strict";var oe=A(),ie=Object.prototype,Ke=ie.hasOwnProperty,Ue=ie.toString,O=oe?oe.toStringTag:void 0;function Ve(e){var n=Ke.call(e,O),r=e[O];try{e[O]=void 0;var o=!0}catch{}var s=Ue.call(e);return o&&(n?e[O]=r:delete e[O]),s}t(Ve,"getRawTag");se.exports=Ve});var ue=d((Wt,ce)=>{"use strict";var Xe=Object.prototype,ze=Xe.toString;function Qe(e){return ze.call(e)}t(Qe,"objectToString");ce.exports=Qe});var me=d((Bt,le)=>{"use strict";var fe=A(),Ye=ae(),Ze=ue(),et="[object Null]",tt="[object Undefined]",de=fe?fe.toStringTag:void 0;function nt(e){return e==null?e===void 0?tt:et:de&&de in Object(e)?Ye(e):Ze(e)}t(nt,"baseGetTag");le.exports=nt});var pe=d((Ht,ge)=>{"use strict";function rt(e){return e!=null&&typeof e=="object"}t(rt,"isObjectLike");ge.exports=rt});var ve=d((Jt,be)=>{"use strict";var ot=me(),it=pe(),st="[object Symbol]";function at(e){return typeof e=="symbol"||it(e)&&ot(e)==st}t(at,"isSymbol");be.exports=at});var Te=d((Ut,xe)=>{"use strict";var ct=ne(),ye=L(),ut=ve(),he=NaN,ft=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,lt=/^0o[0-7]+$/i,mt=parseInt;function gt(e){if(typeof e=="number")return e;if(ut(e))return he;if(ye(e)){var n=typeof e.valueOf=="function"?e.valueOf():e;e=ye(n)?n+"":n}if(typeof e!="string")return e===0?e:+e;e=ct(e);var r=dt.test(e);return r||lt.test(e)?mt(e.slice(2),r?2:8):ft.test(e)?he:+e}t(gt,"toNumber");xe.exports=gt});var je=d((Xt,Se)=>{"use strict";var pt=L(),W=Y(),Ce=Te(),bt="Expected a function",vt=Math.max,yt=Math.min;function ht(e,n,r){var o,s,p,l,a,c,m=0,E=!1,u=!1,h=!0;if(typeof e!="function")throw new TypeError(bt);n=Ce(n)||0,pt(r)&&(E=!!r.leading,u="maxWait"in r,p=u?vt(Ce(r.maxWait)||0,n):p,h="trailing"in r?!!r.trailing:h);function x(i){var g=o,y=s;return o=s=void 0,m=i,l=e.apply(y,g),l}t(x,"invokeFunc");function R(i){return m=i,a=setTimeout(v,n),E?x(i):l}t(R,"leadingEdge");function C(i){var g=i-c,y=i-m,M=n-g;return u?yt(M,p-y):M}t(C,"remainingWait");function $(i){var g=i-c,y=i-m;return c===void 0||g>=n||g<0||u&&y>=p}t($,"shouldInvoke");function v(){var i=W();if($(i))return b(i);a=setTimeout(v,C(i))}t(v,"timerExpired");function b(i){return a=void 0,h&&o?x(i):(o=s=void 0,l)}t(b,"trailingEdge");function q(){a!==void 0&&clearTimeout(a),m=0,o=c=s=a=void 0}t(q,"cancel");function I(){return a===void 0?l:b(W())}t(I,"flush");function S(){var i=W(),g=$(i);if(o=arguments,s=this,c=i,g){if(a===void 0)return R(c);if(u)return clearTimeout(a),a=setTimeout(v,n),x(c)}return a===void 0&&(a=setTimeout(v,n)),l}return t(S,"debounced"),S.cancel=q,S.flush=I,S}t(ht,"debounce");Se.exports=ht});import{useState as Ct,useCallback as St,useEffect as Re,useRef as $e}from"react";var Ee=Me(je(),1);import{useCallback as xt,useEffect as Tt,useRef as Oe}from"react";function D(e,n){let r=Oe(e);Tt(()=>{r.current=e},[e]);let o=Oe((0,Ee.default)(s=>{r.current(s)},n)).current;return xt(s=>{o(s)},[o])}t(D,"useDebounce");import{Fragment as Ot,jsx as T,jsxs as qe}from"react/jsx-runtime";var jt=t(({description:e,showConversion:n,targetCurrency:r,className:o,onClick:s})=>{let{components:p}=G(),l=n?`Hide ${r} conversion`:`Show ${r} conversion`,a=p?.button;return qe("span",{className:o,children:[e," ",a?T(a,{className:`${o.replace("-description","-button")}`,"data-type":"inline",onClick:s,children:l}):T("button",{className:`${o.replace("-description","-button")}`,onClick:s,children:l})]})},"DescriptionWithConversion"),cn=t(({sourceCurrency:e,targetCurrency:n,mainFieldName:r,conversionFieldName:o,conversionProperties:s,classNamePrefix:p,description:l,conversionType:a="spread",...c})=>{let[m,E]=Ct(!1),{setValue:u,watch:h}=J(),x=h(r||c.name),R=$e(!0),C=$e(new Map),$=e&&n&&e!==n,{mutateAsync:v}=K({type:a}),b=`${c.name}_converted`;Re(()=>{u(b,r||c.name)},[u,r,c.name,b]),Re(()=>{if(R.current){R.current=!1;return}u(o,"")},[e,o,u]);let q=St(async(f,j,k,B)=>{if(!f)return;let N=`${j}_${k}_${f}`,H=C.current.get(N);if(H){u(B,H.targetAmount);return}try{let P=await v({source_currency:j,target_currency:k,amount:Number(f)});if(P.data?.data?.conversion_data?.target_amount){let _=P.data.data.conversion_data.target_amount;if(_){u(B,_?.toString()),C.current.set(N,{targetAmount:_.toString()});let Ie=`${k}_${j}_${_}`;C.current.set(Ie,{targetAmount:f.toString()})}}}catch(P){console.error("Error converting currency:",P)}},[v,u]),I=D(f=>q(f,e,n,o),500),S=D(f=>q(f,n,e,r||c.name),500),i=t(f=>{u(b,r||c.name),m&&I(f.target.value)},"handleMainFieldChange"),g=t(f=>{u(b,o),S(f.target.value)},"handleConversionFieldChange"),y=t(f=>{f.preventDefault(),E(j=>!j),!m&&x&&I(x)},"toggleConversion"),M=$?T(jt,{targetCurrency:n,description:l,showConversion:m,className:`${p}-description`,onClick:y}):l;return qe(Ot,{children:[T(w,{...c,name:r||c.name,additionalProps:{currency:e},description:M,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$",maxLength:15,onChange:i}),m&&T(w,{additionalProps:{currency:n},name:o,label:s?.label||"Conversion",description:s?.description,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$",maxLength:15,onChange:g}),T("input",{type:"hidden",name:b,value:h(b)||r||c.name})]})},"CurrencyConversionField");export{cn as a};
2
+ //# sourceMappingURL=chunk-SEAC3H45.js.map