@remoteoss/remote-flows 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +2 -0
  2. package/dist/{chunk-2DWTIFOU.js → chunk-2EKC7DK3.js} +2 -2
  3. package/dist/chunk-4GRFE43K.js +2 -0
  4. package/dist/chunk-4GRFE43K.js.map +1 -0
  5. package/dist/{chunk-G2GI6FEO.js → chunk-55VACCVZ.js} +2 -2
  6. package/dist/{chunk-G2GI6FEO.js.map → chunk-55VACCVZ.js.map} +1 -1
  7. package/dist/{chunk-5YDR5BIG.js → chunk-6LTJBLSD.js} +2 -2
  8. package/dist/chunk-AYFHWLQZ.js +2 -0
  9. package/dist/chunk-AYFHWLQZ.js.map +1 -0
  10. package/dist/chunk-CTG3DYJR.js +2 -0
  11. package/dist/chunk-CTG3DYJR.js.map +1 -0
  12. package/dist/chunk-EQBNHLR4.js +2 -0
  13. package/dist/chunk-EQBNHLR4.js.map +1 -0
  14. package/dist/{chunk-QWZVBZED.js → chunk-F5QJZKDL.js} +2 -2
  15. package/dist/chunk-FZ2HS6G7.js +2 -0
  16. package/dist/chunk-FZ2HS6G7.js.map +1 -0
  17. package/dist/chunk-GI72ZKVM.js +2 -0
  18. package/dist/chunk-GI72ZKVM.js.map +1 -0
  19. package/dist/chunk-GW7GG5ZW.js +2 -0
  20. package/dist/chunk-GW7GG5ZW.js.map +1 -0
  21. package/dist/{chunk-ZCG5JUUR.js → chunk-IJPE22L7.js} +2 -2
  22. package/dist/chunk-IPZEZMLD.js +2 -0
  23. package/dist/chunk-IPZEZMLD.js.map +1 -0
  24. package/dist/chunk-JLUDKN4H.js +2 -0
  25. package/dist/chunk-JLUDKN4H.js.map +1 -0
  26. package/dist/chunk-JODJFARP.js +2 -0
  27. package/dist/chunk-JODJFARP.js.map +1 -0
  28. package/dist/chunk-KPSFJ6BN.js +2 -0
  29. package/dist/chunk-KPSFJ6BN.js.map +1 -0
  30. package/dist/chunk-N5AQSLAU.js +2 -0
  31. package/dist/chunk-N5AQSLAU.js.map +1 -0
  32. package/dist/{chunk-WTGUGPHV.js → chunk-NBD4VOG3.js} +2 -2
  33. package/dist/{chunk-TPKAREI4.js → chunk-RCX4JUI3.js} +2 -2
  34. package/dist/chunk-S56EWAS4.js +2 -0
  35. package/dist/chunk-S56EWAS4.js.map +1 -0
  36. package/dist/chunk-SEUQNAF6.js +2 -0
  37. package/dist/chunk-SEUQNAF6.js.map +1 -0
  38. package/dist/chunk-VHL76MEG.js +2 -0
  39. package/dist/chunk-VHL76MEG.js.map +1 -0
  40. package/dist/chunk-VX2UC3HG.js +2 -0
  41. package/dist/chunk-VX2UC3HG.js.map +1 -0
  42. package/dist/chunk-W5DG5WWJ.js +2 -0
  43. package/dist/chunk-W5DG5WWJ.js.map +1 -0
  44. package/dist/chunk-XFD3ULUF.js +2 -0
  45. package/dist/chunk-XFD3ULUF.js.map +1 -0
  46. package/dist/{chunk-ROPNMSSM.js → chunk-XULIEA44.js} +2 -2
  47. package/dist/{chunk-5O2L2L25.js → chunk-YAHWFLDH.js} +2 -2
  48. package/dist/{chunk-6DMCAUPE.js → chunk-YBACB5A6.js} +2 -2
  49. package/dist/chunk-YBACB5A6.js.map +1 -0
  50. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
  51. package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.js +1 -1
  52. package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +1 -1
  53. package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
  54. package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
  55. package/dist/flows/ContractAmendment/ContractAmendmentForm.js +1 -1
  56. package/dist/flows/ContractAmendment/context.d.ts +1 -1
  57. package/dist/flows/ContractAmendment/hooks.d.ts +1 -1
  58. package/dist/flows/ContractAmendment/hooks.js +1 -1
  59. package/dist/flows/ContractAmendment/index.d.ts +1 -1
  60. package/dist/flows/ContractAmendment/index.js +1 -1
  61. package/dist/flows/ContractAmendment/utils.d.ts +1 -1
  62. package/dist/flows/ContractAmendment/utils.js +1 -1
  63. package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +1 -1
  64. package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
  65. package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +1 -1
  66. package/dist/flows/CostCalculator/CostCalculatorForm.js +1 -1
  67. package/dist/flows/CostCalculator/Results/CostCalculatorResults.d.ts +1 -1
  68. package/dist/flows/CostCalculator/Results/CostCalculatorResults.js +1 -1
  69. package/dist/flows/CostCalculator/context.d.ts +1 -1
  70. package/dist/flows/CostCalculator/hooks.d.ts +1 -1
  71. package/dist/flows/CostCalculator/hooks.js +1 -1
  72. package/dist/flows/CostCalculator/index.d.ts +1 -1
  73. package/dist/flows/CostCalculator/index.js +1 -1
  74. package/dist/flows/CostCalculator/types.d.ts +1 -1
  75. package/dist/flows/CostCalculator/utils.d.ts +1 -1
  76. package/dist/flows/CostCalculator/utils.js +1 -1
  77. package/dist/flows/Termination/TerminationBack.d.ts +5 -0
  78. package/dist/flows/Termination/TerminationBack.js +2 -0
  79. package/dist/flows/Termination/TerminationFlow.d.ts +31 -5
  80. package/dist/flows/Termination/TerminationFlow.js +1 -1
  81. package/dist/flows/Termination/TerminationForm.d.ts +2 -2
  82. package/dist/flows/Termination/TerminationForm.js +1 -1
  83. package/dist/flows/Termination/TimeOff.d.ts +11 -0
  84. package/dist/flows/Termination/TimeOff.js +2 -0
  85. package/dist/flows/Termination/TimeOff.js.map +1 -0
  86. package/dist/flows/Termination/context.d.ts +14 -5
  87. package/dist/flows/Termination/hooks.d.ts +51 -5
  88. package/dist/flows/Termination/hooks.js +1 -1
  89. package/dist/flows/Termination/index.d.ts +5 -1
  90. package/dist/flows/Termination/index.js +1 -1
  91. package/dist/flows/Termination/json-schemas/additionalInformation.d.ts +25 -0
  92. package/dist/flows/Termination/json-schemas/additionalInformation.js +2 -0
  93. package/dist/flows/Termination/json-schemas/additionalInformation.js.map +1 -0
  94. package/dist/flows/Termination/json-schemas/defaultSchema.d.ts +15 -0
  95. package/dist/flows/Termination/json-schemas/defaultSchema.js +2 -0
  96. package/dist/flows/Termination/json-schemas/defaultSchema.js.map +1 -0
  97. package/dist/flows/Termination/json-schemas/employeeComunication.d.ts +133 -0
  98. package/dist/flows/Termination/json-schemas/employeeComunication.js +2 -0
  99. package/dist/flows/Termination/json-schemas/employeeComunication.js.map +1 -0
  100. package/dist/flows/Termination/{jsonSchema.d.ts → json-schemas/jsonSchema.d.ts} +42 -0
  101. package/dist/flows/Termination/json-schemas/jsonSchema.js +2 -0
  102. package/dist/flows/Termination/json-schemas/jsonSchema.js.map +1 -0
  103. package/dist/flows/Termination/json-schemas/paidTimeOff.d.ts +71 -0
  104. package/dist/flows/Termination/json-schemas/paidTimeOff.js +2 -0
  105. package/dist/flows/Termination/json-schemas/paidTimeOff.js.map +1 -0
  106. package/dist/flows/Termination/json-schemas/schema.d.ts +8 -0
  107. package/dist/flows/Termination/json-schemas/schema.js +2 -0
  108. package/dist/flows/Termination/json-schemas/schema.js.map +1 -0
  109. package/dist/flows/Termination/json-schemas/terminationDetails.d.ts +126 -0
  110. package/dist/flows/Termination/json-schemas/terminationDetails.js +2 -0
  111. package/dist/flows/Termination/json-schemas/terminationDetails.js.map +1 -0
  112. package/dist/flows/Termination/types.d.ts +6 -6
  113. package/dist/flows/Termination/utils.d.ts +8 -0
  114. package/dist/flows/Termination/utils.js +2 -0
  115. package/dist/flows/Termination/utils.js.map +1 -0
  116. package/dist/flows/useStepState.d.ts +6 -6
  117. package/dist/flows/useStepState.js +1 -1
  118. package/dist/index.css +1 -1
  119. package/dist/index.css.map +1 -1
  120. package/dist/index.d.ts +30 -4
  121. package/dist/index.js +1 -1
  122. package/dist/index.js.map +1 -1
  123. package/dist/{types.gen-BhkGMC9-.d.ts → types.gen-BgLeTAqP.d.ts} +1 -1
  124. package/package.json +2 -1
  125. package/dist/chunk-5PXYSIYN.js +0 -2
  126. package/dist/chunk-5PXYSIYN.js.map +0 -1
  127. package/dist/chunk-6DMCAUPE.js.map +0 -1
  128. package/dist/chunk-HELGRHUB.js +0 -2
  129. package/dist/chunk-HELGRHUB.js.map +0 -1
  130. package/dist/chunk-JWMY3OVH.js +0 -2
  131. package/dist/chunk-JWMY3OVH.js.map +0 -1
  132. package/dist/chunk-LUCFM5TE.js +0 -2
  133. package/dist/chunk-LUCFM5TE.js.map +0 -1
  134. package/dist/chunk-RL2KU7BM.js +0 -2
  135. package/dist/chunk-RL2KU7BM.js.map +0 -1
  136. package/dist/chunk-TIXDBKBM.js +0 -2
  137. package/dist/chunk-TIXDBKBM.js.map +0 -1
  138. package/dist/chunk-XFE56PM4.js +0 -2
  139. package/dist/chunk-XFE56PM4.js.map +0 -1
  140. package/dist/chunk-Y5UG6SJJ.js +0 -2
  141. package/dist/chunk-Y5UG6SJJ.js.map +0 -1
  142. package/dist/flows/Termination/jsonSchema.js +0 -2
  143. /package/dist/{chunk-2DWTIFOU.js.map → chunk-2EKC7DK3.js.map} +0 -0
  144. /package/dist/{chunk-5YDR5BIG.js.map → chunk-6LTJBLSD.js.map} +0 -0
  145. /package/dist/{chunk-QWZVBZED.js.map → chunk-F5QJZKDL.js.map} +0 -0
  146. /package/dist/{chunk-ZCG5JUUR.js.map → chunk-IJPE22L7.js.map} +0 -0
  147. /package/dist/{chunk-WTGUGPHV.js.map → chunk-NBD4VOG3.js.map} +0 -0
  148. /package/dist/{chunk-TPKAREI4.js.map → chunk-RCX4JUI3.js.map} +0 -0
  149. /package/dist/{chunk-ROPNMSSM.js.map → chunk-XULIEA44.js.map} +0 -0
  150. /package/dist/{chunk-5O2L2L25.js.map → chunk-YAHWFLDH.js.map} +0 -0
  151. /package/dist/flows/Termination/{jsonSchema.js.map → TerminationBack.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as l}from"./chunk-LUCFM5TE.js";import{b as c}from"./chunk-A4RX3KRZ.js";import{a as d}from"./chunk-TIXDBKBM.js";import{b as u}from"./chunk-6HGUGIYJ.js";import{a as r}from"./chunk-AYDF3IFZ.js";import m,{useEffect as v}from"react";import{useForm as V}from"react-hook-form";var P=["effective_date","reason_for_change","reason_for_change_description","additional_comments","additional_comments_toggle"];function x({onSubmit:f,onError:s,onSuccess:F}){let{formId:p,contractAmendment:{checkFieldUpdates:_,fields:b,onSubmit:A,stepState:C,initialValues:a,handleValidation:h}}=u(),S=c(h),e=V({resolver:S,defaultValues:C.values?.form||a,shouldUnregister:!0,mode:"onBlur"});v(()=>{let t=e?.watch(o=>{(Object.keys(e.formState.dirtyFields).length>0||e.formState.isDirty)&&_(o)});return()=>t?.unsubscribe()},[]);let g=r(async t=>{let o=!1;for(let[i,y]of Object.entries(t))if(!P.includes(i)&&a[i]!==y){o=!0;break}if(!o)return s?.({message:"no_changes_detected_contract_details"});await f?.(t);let n=await A(t);n.error?s?.(n.error):F?.(n.data)},"handleSubmit");return m.createElement(d,{...e},m.createElement("form",{id:p,"data-testid":"contract-amendment-form",onSubmit:e.handleSubmit(g),className:"space-y-4 RemoteFlows__ContractAmendmentForm"},m.createElement(l,{fields:b})))}r(x,"ContractAmendmentForm");export{x as a};
2
- //# sourceMappingURL=chunk-5YDR5BIG.js.map
1
+ import{a as l}from"./chunk-AYFHWLQZ.js";import{b as c}from"./chunk-A4RX3KRZ.js";import{a as d}from"./chunk-N5AQSLAU.js";import{b as u}from"./chunk-6HGUGIYJ.js";import{a as r}from"./chunk-AYDF3IFZ.js";import m,{useEffect as v}from"react";import{useForm as V}from"react-hook-form";var P=["effective_date","reason_for_change","reason_for_change_description","additional_comments","additional_comments_toggle"];function x({onSubmit:f,onError:s,onSuccess:F}){let{formId:p,contractAmendment:{checkFieldUpdates:_,fields:b,onSubmit:A,stepState:C,initialValues:a,handleValidation:h}}=u(),S=c(h),e=V({resolver:S,defaultValues:C.values?.form||a,shouldUnregister:!0,mode:"onBlur"});v(()=>{let t=e?.watch(o=>{(Object.keys(e.formState.dirtyFields).length>0||e.formState.isDirty)&&_(o)});return()=>t?.unsubscribe()},[]);let g=r(async t=>{let o=!1;for(let[i,y]of Object.entries(t))if(!P.includes(i)&&a[i]!==y){o=!0;break}if(!o)return s?.({message:"no_changes_detected_contract_details"});await f?.(t);let n=await A(t);n.error?s?.(n.error):F?.(n.data)},"handleSubmit");return m.createElement(d,{...e},m.createElement("form",{id:p,"data-testid":"contract-amendment-form",onSubmit:e.handleSubmit(g),className:"space-y-4 RemoteFlows__ContractAmendmentForm"},m.createElement(l,{fields:b})))}r(x,"ContractAmendmentForm");export{x as a};
2
+ //# sourceMappingURL=chunk-6LTJBLSD.js.map
@@ -0,0 +1,2 @@
1
+ import{b as g}from"./chunk-WRDKLT4N.js";import{a as Y,b as U}from"./chunk-FI76EKUS.js";import{b as _,c as S,d as y,e as R,f as w,g as N}from"./chunk-N5AQSLAU.js";import{a as s}from"./chunk-SJ56GVNV.js";import{a as o}from"./chunk-AYDF3IFZ.js";import*as B from"react";import*as J from"@radix-ui/react-checkbox";import{Check as Be}from"lucide-react";var O=B.forwardRef(({className:e,...t},r)=>B.createElement(J.Root,{ref:r,className:s("peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary",e),...t},B.createElement(J.Indicator,{className:s("flex items-center justify-center text-current")},B.createElement(Be,{className:"h-4 w-4"}))));O.displayName=J.Root.displayName;import*as b from"react";import{useFormContext as Ge}from"react-hook-form";function ae({name:e,defaultValue:t,description:r,label:a,onChange:i,multiple:d,options:u,...C}){let{components:l}=g(),{control:c}=Ge(),m=o((n,x,p)=>{let A=p.value?[...p.value]:[];x?A.includes(n)||p.onChange([...A,n]):p.onChange(A.filter(z=>z!==n))},"handleCheckboxChange");return b.createElement(_,{control:c,name:e,defaultValue:t,render:({field:n,fieldState:x})=>{if(l?.checkbox){let p=l?.checkbox,A={name:e,description:r,label:a,defaultValue:t,multiple:d,options:u,...C};return b.createElement(p,{field:{...n,onChange:o(z=>{if(d){let{checked:re,value:Me}=z.target;m(Me,re,n),i?.(re);return}n.onChange(z),i?.(z)},"onChange")},fieldState:x,fieldData:A})}return b.createElement(S,{"data-field":e,className:s(`RemoteFlows__CheckBoxField__Item__${e}`)},b.createElement(R,null,b.createElement(b.Fragment,null,u&&d?b.createElement(y,null,a):null,u&&d?u.map(p=>b.createElement("div",{key:p.value,className:"flex space-x-2"},b.createElement(O,{id:p.value,onCheckedChange:A=>{m(p.value,A===!0,n),i?.(A,p.value)},checked:n.value?.includes(p.value),className:"RemoteFlows__CheckBox__Input"}),b.createElement(y,{htmlFor:p.value,className:"mb-0 RemoteFlows__CheckBox__Label"},p.label))):b.createElement("div",{className:"flex space-x-2"},b.createElement(O,{id:e,onCheckedChange:p=>{n.onChange(p),i?.(p)},checked:n.value,className:"RemoteFlows__CheckBox__Input"}),b.createElement(y,{htmlFor:e,className:"mb-0 RemoteFlows__CheckBox__Label"},a)))),r&&b.createElement(w,null,r),x.error&&b.createElement(N,null))}})}o(ae,"CheckBoxField");import{CalendarIcon as Ue}from"lucide-react";import*as v from"react";import{useFormContext as Je}from"react-hook-form";import*as W from"react";import{ChevronLeft as Ve,ChevronRight as Ee}from"lucide-react";import{DayPicker as ze}from"react-day-picker";function ie({className:e,classNames:t,showOutsideDays:r=!0,...a}){return W.createElement(ze,{showOutsideDays:r,className:s("p-3",e),classNames:{months:"flex flex-col sm:flex-row gap-2",month:"flex flex-col gap-4",caption:"flex justify-center pt-1 relative items-center w-full",caption_label:"text-sm font-medium",nav:"flex items-center gap-1",nav_button:s(Y({variant:"outline"}),"size-7 bg-transparent p-0 opacity-50 hover:opacity-100"),nav_button_previous:"absolute left-1",nav_button_next:"absolute right-1",table:"w-full border-collapse space-x-1",head_row:"flex",head_cell:"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]",row:"flex w-full mt-2",cell:s("relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md",a.mode==="range"?"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md":"[&:has([aria-selected])]:rounded-md"),day:s(Y({variant:"ghost"}),"size-8 p-0 font-normal aria-selected:opacity-100"),day_range_start:"day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground",day_range_end:"day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground",day_selected:"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",day_today:"bg-accent text-accent-foreground",day_outside:"day-outside text-muted-foreground aria-selected:text-muted-foreground",day_disabled:"text-muted-foreground opacity-50",day_range_middle:"aria-selected:bg-accent aria-selected:text-accent-foreground",day_hidden:"invisible",...t},components:{IconLeft:o(({className:i,...d})=>W.createElement(Ve,{className:s("size-4",i),...d}),"IconLeft"),IconRight:o(({className:i,...d})=>W.createElement(Ee,{className:s("size-4",i),...d}),"IconRight")},...a})}o(ie,"Calendar");import*as H from"react";import*as D from"@radix-ui/react-popover";function ne({...e}){return H.createElement(D.Root,{"data-slot":"popover",...e})}o(ne,"Popover");function se({...e}){return H.createElement(D.Trigger,{"data-slot":"popover-trigger",...e})}o(se,"PopoverTrigger");function le({className:e,align:t="center",sideOffset:r=4,...a}){return H.createElement(D.Portal,null,H.createElement(D.Content,{"data-slot":"popover-content",align:t,sideOffset:r,className:s("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",e),...a}))}o(le,"PopoverContent");import{PopoverClose as He}from"@radix-ui/react-popover";import{format as me}from"date-fns";function ce({description:e,label:t,name:r,minDate:a,onChange:i,...d}){let{components:u}=g(),{control:C}=Je();return v.createElement(_,{control:C,name:r,render:({field:l,fieldState:c})=>{if(u?.date){let m=u?.date,n={description:e,label:t,name:r,minDate:a,onChange:i,...d};return v.createElement(m,{field:{...l,onChange:o(x=>{l.onChange(x),i?.(x)},"onChange")},fieldState:c,fieldData:n})}return v.createElement(S,{"data-field":r,className:`flex flex-col RemoteFlows__DatePickerField__Item__${r}`},v.createElement(y,{className:"RemoteFlows__DatePickerField__Label"},t),v.createElement(ne,null,v.createElement(se,{asChild:!0},v.createElement(R,null,v.createElement("div",null,v.createElement(U,{type:"button",variant:"outline",className:s("w-full pl-3 text-left font-normal",!l.value&&"text-muted-foreground"),"data-testid":"date-picker-button"},l.value&&v.createElement(v.Fragment,null,me(l.value,"yyyy-MM-dd")),v.createElement(Ue,{className:"ml-auto h-4 w-4 opacity-50"}))))),v.createElement(le,{className:"w-auto p-0 RemoteFlows__DatepickerField__PopoverContent",align:"start"},v.createElement(ie,{mode:"single",className:"RemoteFlows__DatepickerField__Calendar",selected:l.value?new Date(l.value):void 0,onSelect:m=>{l.onChange(m?me(m,"yyyy-MM-dd"):null),i?.(m)},defaultMonth:a?new Date(a):void 0,components:{DayContent:o(m=>v.createElement(He,null,m.date.getDate()),"DayContent")},...a&&{disabled:o(m=>m<new Date(a),"disabled")}}))),e?v.createElement(w,null,e):null,c.error&&v.createElement(N,{className:"RemoteFlows__DatePickerField__Error"}))}})}o(ce,"DatePickerField");import*as G from"react";function de({label:e,name:t,fields:r,description:a}){return G.createElement("fieldset",{className:s("border-1 border-input p-4 rounded-xl",`RemoteFlows__FieldSetField__${t}`)},G.createElement("legend",{className:"text-sm font-semibold px-2"},e),a?G.createElement("div",{className:"mb-5 RemoteFlows__FieldSetField__Description",dangerouslySetInnerHTML:{__html:a}}):null,G.createElement("div",{className:"grid gap-4"},r.map(i=>{let d=q[i.type];return G.createElement(d,{...i,key:i.name,name:`${t}.${i.name}`})})))}o(de,"FieldSetField");import*as I from"react";import{useFormContext as qe}from"react-hook-form";import T,{useState as $e,useRef as je}from"react";import{Upload as Oe,X as We}from"lucide-react";function pe({onChange:e,className:t,multiple:r}){let[a,i]=$e([]),d=je(null),u=o(()=>{d.current?.click()},"handleClick"),C=o(c=>{if(c.target.files&&c.target.files.length>0){let m=Array.from(c.target.files);i(m),e(c)}},"handleChange"),l=o(c=>{i(m=>m.filter(n=>n!==c))},"onRemoveFile");return T.createElement("div",{className:s("flex flex-col items-start gap-4",t)},T.createElement("input",{type:"file",ref:d,onChange:C,className:"hidden","aria-label":"File upload",multiple:r}),T.createElement(U,{onClick:u,className:"gap-2"},T.createElement(Oe,{className:"h-4 w-4"}),"Choose File"),a.length===0&&T.createElement("div",{className:"text-sm"},r?T.createElement("span",{className:"font-medium"},"No files selected. You can select multiple files"):T.createElement("span",{className:"font-medium"},"No file selected.")),a.length>0&&a.map((c,m)=>T.createElement("div",{key:m,className:"text-sm flex items-center gap-2"},"Selected file: ",T.createElement("span",{className:"font-medium"},c.name)," (",Math.round(c.size/1024)," KB)",T.createElement(U,{variant:"ghost",onClick:()=>l(c)},T.createElement(We,null)))))}o(pe,"FileUploader");var Ke=o(e=>new Promise((t,r)=>{let a=new FileReader;a.readAsDataURL(e),a.onload=()=>t(a.result),a.onerror=i=>r(i)}),"toBase64"),ue=o(async e=>{let t=e.target.files?Array.from(e.target.files):[];return await Promise.all(t.map(async a=>{let i=await Ke(a);return{name:a.name,content:i.split(",")[1]}}))},"convertFilesToBase64");function fe({name:e,description:t,label:r,multiple:a,onChange:i,...d}){let{components:u}=g(),{control:C}=qe();return I.createElement(_,{control:C,name:e,render:({field:l,fieldState:c})=>{if(u?.file){let m=u?.file,n={name:e,description:t,label:r,multiple:a,...d};return I.createElement(m,{field:{...l,value:null,onChange:o(async x=>{let p=await ue(x);a?(l.onChange(p),i?.(p)):(l.onChange([p[0]]),i?.([p[0]]))},"onChange")},fieldState:c,fieldData:n})}return I.createElement(S,{"data-field":e,className:`RemoteFlows__FileUpload__Item__${e}`},I.createElement(y,{className:"RemoteFlows__FileUpload__Label"},r),I.createElement(R,null,I.createElement(pe,{onChange:async m=>{let n=await ue(m);a?(l.onChange(n),i?.(n)):(l.onChange([n[0]]),i?.([n[0]]))},multiple:a,className:s("RemoteFlows__FileUpload__Input")})),t&&I.createElement("div",{className:"flex items-center justify-between"},I.createElement(w,{className:"RemoteFlows__FileUpload__Description"},t)),c.error&&I.createElement(N,{className:"RemoteFlows__FileUpload__Error"}))}})}o(fe,"FileUploadField");import Q from"react";import{useFormContext as Ye}from"react-hook-form";import*as L from"react";import{useFormContext as Xe}from"react-hook-form";import*as Fe from"react";function ge({className:e,type:t,...r}){return Fe.createElement("input",{type:t,"data-slot":"input",className:s("shadow-xs border-input file:text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-xl border bg-transparent px-4 py-7 text-sm transition-[color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-focused","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e),...r})}o(ge,"Input");function V({name:e,description:t,label:r,type:a,onChange:i,...d}){let{components:u}=g(),{control:C}=Xe();return L.createElement(_,{control:C,name:e,render:({field:l,fieldState:c})=>{if(u?.text){let m=u?.text,n={name:e,description:t,label:r,type:a,onChange:i,...d};return L.createElement(m,{field:{...l,onChange:o(x=>{l.onChange(x),i?.(x)},"onChange")},fieldState:c,fieldData:n})}return L.createElement(S,{"data-field":e,className:`RemoteFlows__TextField__Item__${e}`},L.createElement(y,{className:"RemoteFlows__TextField__Label"},r),L.createElement(R,null,L.createElement(ge,{...l,value:l.value??"",onChange:m=>{l.onChange(m),i?.(m)},className:"RemoteFlows__TextField__Input",placeholder:r})),t&&L.createElement(w,{className:"RemoteFlows__TextField__Description"},t),c.error&&L.createElement(N,{className:"RemoteFlows__TextField__Error"}))}})}o(V,"TextField");function Z(e){let{components:t}=g(),{control:r}=Ye();return t?.number?Q.createElement(_,{control:r,name:e.name,render:({field:a,fieldState:i})=>{let d=t.number;return Q.createElement(d,{field:{...a,onChange:o(u=>{a.onChange(u),e.onChange?.(u)},"onChange")},fieldState:i,fieldData:e})}}):Q.createElement(V,{...e,type:"text",inputMode:"decimal",pattern:"^[0-9.]*$"})}o(Z,"NumberField");import*as E from"@radix-ui/react-radio-group";import{CircleIcon as Qe}from"lucide-react";import*as $ from"react";function ve({className:e,...t}){return $.createElement(E.Root,{"data-slot":"radio-group",className:s("grid gap-3",e),...t})}o(ve,"RadioGroup");function xe({className:e,...t}){return $.createElement(E.Item,{"data-slot":"radio-group-item",className:s("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t},$.createElement(E.Indicator,{"data-slot":"radio-group-indicator",className:"relative flex items-center justify-center"},$.createElement(Qe,{className:"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2"})))}o(xe,"RadioGroupItem");import*as h from"react";import{useFormContext as Ze}from"react-hook-form";function _e({name:e,defaultValue:t,description:r,label:a,options:i,onChange:d,...u}){let{components:C}=g(),{control:l}=Ze();return h.createElement(_,{control:l,name:e,defaultValue:t,render:({field:c,fieldState:m})=>{if(C?.radio){let n=C?.radio,x={name:e,defaultValue:t,description:r,label:a,options:i,...u};return h.createElement(n,{field:{...c,onChange:o(p=>{c.onChange(p),d?.(p)},"onChange")},fieldState:m,fieldData:x})}return h.createElement(S,{className:s("space-y-3",`RemoteFlows__RadioGroupField__Item__${e}`),"data-field":e},h.createElement(y,null,a),h.createElement(R,null,h.createElement(ve,{"aria-label":a,onValueChange:n=>{c.onChange(n),d?.(n)},value:c.value,className:"flex flex-col space-y-3"},i?.map(n=>h.createElement(h.Fragment,null,h.createElement(S,{key:n.value,"data-field":e,className:"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item"},h.createElement(R,null,h.createElement(xe,{value:n.value,className:"RemoteFlows__RadioField__Input"})),h.createElement("div",null,h.createElement(y,{className:"font-normal mb-0 RemoteFlows__RadioField__Label"},n.label),n.description&&h.createElement(w,{className:"mt-2"},n.description))))))),r&&h.createElement(w,null,r),m.error&&h.createElement(N,null))}})}o(_e,"RadioGroupField");import*as P from"react";import*as F from"react";import*as f from"@radix-ui/react-select";import{CheckIcon as et,ChevronDownIcon as he,ChevronUpIcon as tt}from"lucide-react";function ye({...e}){return F.createElement(f.Root,{"data-slot":"select",...e})}o(ye,"Select");function be({...e}){return F.createElement(f.Group,{"data-slot":"select-group",...e})}o(be,"SelectGroup");function Ce({...e}){return F.createElement(f.Value,{"data-slot":"select-value",...e})}o(Ce,"SelectValue");function Pe({className:e,children:t,...r}){return F.createElement(f.Trigger,{"data-slot":"select-trigger",className:s("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","focus-visible:border-focused",e),...r},t,F.createElement(f.Icon,{asChild:!0,className:"absolute right-4"},F.createElement(he,{className:"size-4"})))}o(Pe,"SelectTrigger");function Se({className:e,children:t,position:r="popper",...a}){return F.createElement(f.Portal,null,F.createElement(f.Content,{"data-slot":"select-content",className:s("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border",r==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...a},F.createElement(ot,null),F.createElement(f.Viewport,{className:s(r==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1")},t),F.createElement(rt,null)))}o(Se,"SelectContent");function Re({className:e,children:t,...r}){return F.createElement(f.Item,{"data-slot":"select-item",className:s("focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r},F.createElement(f.ItemText,null,t),F.createElement("span",{className:"flex size-3.5 items-center justify-center"},F.createElement(f.ItemIndicator,null,F.createElement(et,{className:"size-4"}))))}o(Re,"SelectItem");function ot({className:e,...t}){return F.createElement(f.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:s("flex cursor-default items-center justify-center py-1",e),...t},F.createElement(tt,{className:"size-4"}))}o(ot,"SelectScrollUpButton");function rt({className:e,...t}){return F.createElement(f.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:s("flex cursor-default items-center justify-center py-1",e),...t},F.createElement(he,{className:"size-4"}))}o(rt,"SelectScrollDownButton");import{useFormContext as at}from"react-hook-form";function we({label:e,name:t,options:r,defaultValue:a,description:i,onChange:d,...u}){let{control:C}=at(),{components:l}=g();return P.createElement(_,{defaultValue:a,control:C,name:t,render:({field:c,fieldState:m})=>{if(l?.select){let n=l?.select,x={label:e,name:t,options:r,defaultValue:a,description:i,onChange:d,...u};return P.createElement(n,{field:{...c,onChange:o(p=>{c.onChange(p),d?.(p)},"onChange")},fieldState:m,fieldData:x})}return P.createElement(S,{"data-field":t,className:`RemoteFlows__SelectField__Item__${t}`},P.createElement(y,{className:"RemoteFlows__SelectField__Label"},e),P.createElement(R,null,P.createElement("div",{className:"relative"},P.createElement(ye,{value:c.value||"",onValueChange:n=>{c.onChange(n),d?.(n)}},P.createElement(Pe,{className:"RemoteFlows__SelectField__Trigger","aria-invalid":!!m.error,"aria-label":e},P.createElement("span",{className:"absolute"},P.createElement(Ce,{placeholder:e}))),P.createElement(Se,{className:"RemoteFlows__SelectField__Content"},P.createElement(be,{className:"RemoteFlows__SelectField__Group"},r.map(n=>P.createElement(Re,{key:n.value,value:n.value,className:"RemoteFlows__SelectField__SelectItem"},n.label))))))),i&&P.createElement(w,null,i),m.error&&P.createElement(N,null))}})}o(we,"SelectField");import*as k from"react";import{useFormContext as it}from"react-hook-form";import*as K from"react";var ee=K.forwardRef(({className:e,...t},r)=>K.createElement("textarea",{className:s("flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...t}));ee.displayName="Textarea";function Ne({name:e,description:t,label:r,onChange:a,maxLength:i,...d}){let{components:u}=g(),{control:C}=it();return k.createElement(_,{control:C,name:e,render:({field:l,fieldState:c})=>{if(u?.textarea){let n=u?.textarea,x={name:e,description:t,label:r,maxLength:i,...d};return k.createElement(n,{field:{...l,onChange:o(p=>{l.onChange(p),a?.(p)},"onChange")},fieldState:c,fieldData:x})}let m=l.value?.length??0;return k.createElement(S,{"data-field":e,className:`RemoteFlows__TextArea__Item__${e}`},k.createElement(y,{className:"RemoteFlows__TextArea__Label"},r),k.createElement(R,null,k.createElement(ee,{...l,value:l.value??"",onChange:n=>{l.onChange(n),a?.(n)},className:s(c.error&&"border-red-500 focus-visible:ring-red-500","RemoteFlows__TextArea__Input"),placeholder:r})),(t||i)&&k.createElement("div",{className:"flex items-center justify-between"},t&&k.createElement(w,{className:"RemoteFlows__TextArea__Description"},t),i&&k.createElement("span",{className:"text-sm ml-auto RemoteFlows__TextArea__MaxLength"},m,"/",i)),c.error&&k.createElement(N,{className:"RemoteFlows__TextArea__Error"}))}})}o(Ne,"TextAreaField");import te from"react";import{useFormContext as nt}from"react-hook-form";function Te(e){let{components:t}=g(),{control:r}=nt();return t?.email?te.createElement(_,{control:r,name:e.name,render:({field:a,fieldState:i})=>{let d=t.email;return te.createElement(d,{field:{...a,onChange:o(u=>{a.onChange(u),e.onChange?.(u)},"onChange")},fieldState:i,fieldData:e})}}):te.createElement(V,{...e,type:"email"})}o(Te,"EmailField");var q={checkbox:ae,text:V,email:Te,money:Z,select:we,radio:_e,number:Z,file:fe,fieldset:de,date:ce,textarea:Ne};import M,{Fragment as pt}from"react";import{cva as st}from"class-variance-authority";import*as X from"react";var lt=st("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",warning:"bg-card bg-warning border-warning-border [&>svg]:text-current"}},defaultVariants:{variant:"default"}});function ke({className:e,variant:t,...r}){return X.createElement("div",{"data-slot":"alert",role:"alert",className:s(lt({variant:t}),e),...r})}o(ke,"Alert");function Ie({className:e,...t}){return X.createElement("div",{"data-slot":"alert-title",className:s("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",e),...t})}o(Ie,"AlertTitle");function De({className:e,...t}){return X.createElement("div",{"data-slot":"alert-description",className:s("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}o(De,"AlertDescription");import{AlertCircle as mt}from"lucide-react";import j from"react";function Le({title:e,description:t,severity:r}){let{components:a}=g();if(a?.statement){let i=a?.statement;return j.createElement(i,{data:{title:e,description:t,severity:r}})}return j.createElement(ke,{variant:"warning"},j.createElement(mt,{className:"h-4 w-4"}),j.createElement(Ie,null,e),j.createElement(De,null,t))}o(Le,"Statement");import oe,{useEffect as ct}from"react";import{useFormContext as dt}from"react-hook-form";function Ae({name:e,value:t,description:r,statement:a}){let{setValue:i}=dt();return ct(()=>{i(e,t)},[]),oe.createElement("div",null,oe.createElement("p",{className:`text-sm RemoteFlows__ForcedValue__Title__${e}`,dangerouslySetInnerHTML:{__html:a.title}}),oe.createElement("p",{className:`text-xs RemoteFlows__ForcedValue__Description__${e}`,dangerouslySetInnerHTML:{__html:a.description||r}}))}o(Ae,"ForcedValueField");function ut(e){return e.const!==void 0&&e.const===e.default&&e.inputType!=="checkbox"&&e.inputType!=="hidden"}o(ut,"checkFieldHasForcedValue");var Jr=o(({fields:e})=>!e||e.length===0?null:M.createElement(M.Fragment,null,e.map(t=>{if(t.isVisible===!1||t.deprecated)return null;if(ut(t))return M.createElement(Ae,{key:t.name,name:t.name,description:t.description,value:t.const,statement:t.statement});let r=q[t.inputType];return r?M.createElement(pt,{key:t.name},M.createElement(r,{...t}),t.statement?M.createElement(Le,{...t.statement}):null):M.createElement("p",{className:"error"},"Field type ",t.inputType," not supported")})),"JSONSchemaFormFields");export{Jr as a};
2
+ //# sourceMappingURL=chunk-AYFHWLQZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ui/checkbox.tsx","../src/components/form/fields/CheckBoxField.tsx","../src/components/form/fields/DatePickerField.tsx","../src/components/ui/calendar.tsx","../src/components/ui/popover.tsx","../src/components/form/fields/FieldSetField.tsx","../src/components/form/fields/FileUploadField.tsx","../src/components/ui/file-uploader.tsx","../src/components/form/fields/NumberField.tsx","../src/components/form/fields/TextField.tsx","../src/components/ui/input.tsx","../src/components/ui/radio-group.tsx","../src/components/form/fields/RadioGroupField.tsx","../src/components/form/fields/SelectField.tsx","../src/components/ui/select.tsx","../src/components/form/fields/TextAreaField.tsx","../src/components/ui/textarea.tsx","../src/components/form/fields/EmailField.tsx","../src/components/form/fields/fieldsMapping.tsx","../src/components/form/JSONSchemaForm.tsx","../src/components/ui/alert.tsx","../src/components/form/Statement.tsx","../src/components/form/fields/ForcedValueField.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-input ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-checkbox data-[state=checked]:text-primary',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn('flex items-center justify-center text-current')}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Checkbox } from '@/src/components/ui/checkbox';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { CheckedState } from '@radix-ui/react-checkbox';\nimport * as React from 'react';\nimport {\n ControllerRenderProps,\n FieldValues,\n useFormContext,\n} from 'react-hook-form';\n\nexport type CheckBoxFieldProps = JSFField & {\n onChange?: (checked: any, optionId?: string) => void;\n};\n\nexport function CheckBoxField({\n name,\n defaultValue,\n description,\n label,\n onChange,\n multiple,\n options,\n ...rest\n}: CheckBoxFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n const handleCheckboxChange = (\n optionId: string,\n checked: boolean,\n field: ControllerRenderProps<FieldValues, string>,\n ) => {\n const currentValues = field.value ? [...field.value] : [];\n\n if (checked) {\n // Add the value if it's not already in the array\n if (!currentValues.includes(optionId)) {\n field.onChange([...currentValues, optionId]);\n }\n } else {\n // Remove the value from the array\n field.onChange(currentValues.filter((value) => value !== optionId));\n }\n };\n\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n if (components?.checkbox) {\n const CustomCheckboxField = components?.checkbox;\n const customCheckboxFieldProps = {\n name,\n description,\n label,\n defaultValue,\n multiple,\n options,\n ...rest,\n };\n return (\n <CustomCheckboxField\n field={{\n ...field,\n onChange: (evt: any) => {\n if (multiple) {\n const { checked, value } = evt.target;\n handleCheckboxChange(value, checked, field);\n onChange?.(checked);\n return;\n }\n field.onChange(evt);\n onChange?.(evt);\n },\n }}\n fieldState={fieldState}\n fieldData={customCheckboxFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={cn(`RemoteFlows__CheckBoxField__Item__${name}`)}\n >\n <FormControl>\n <>\n {options && multiple ? <FormLabel>{label}</FormLabel> : null}\n\n {options && multiple ? (\n options.map((option) => (\n <div key={option.value} className=\"flex space-x-2\">\n <Checkbox\n id={option.value}\n onCheckedChange={(checked: CheckedState) => {\n handleCheckboxChange(\n option.value,\n checked === true,\n field,\n );\n onChange?.(checked, option.value);\n }}\n checked={field.value?.includes(option.value)}\n className=\"RemoteFlows__CheckBox__Input\"\n />\n <FormLabel\n htmlFor={option.value}\n className=\"mb-0 RemoteFlows__CheckBox__Label\"\n >\n {option.label}\n </FormLabel>\n </div>\n ))\n ) : (\n <div className=\"flex space-x-2\">\n <Checkbox\n id={name}\n onCheckedChange={(event: CheckedState) => {\n field.onChange(event);\n onChange?.(event);\n }}\n checked={field.value}\n className=\"RemoteFlows__CheckBox__Input\"\n />\n <FormLabel\n htmlFor={name}\n className=\"mb-0 RemoteFlows__CheckBox__Label\"\n >\n {label}\n </FormLabel>\n </div>\n )}\n </>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useFormContext } from 'react-hook-form';\n\nimport { Button } from '@/src/components/ui/button';\nimport { Calendar } from '@/src/components/ui/calendar';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/src/components/ui/popover';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { PopoverClose } from '@radix-ui/react-popover';\nimport { format } from 'date-fns';\n\nexport type DatePickerFieldProps = JSFField & {\n onChange?: (value: any) => void;\n};\n\nexport function DatePickerField({\n description,\n label,\n name,\n minDate,\n onChange,\n ...rest\n}: DatePickerFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n if (components?.date) {\n const CustomDatePickerField = components?.date;\n const customDatePickerFieldProps = {\n description,\n label,\n name,\n minDate,\n onChange,\n ...rest,\n };\n return (\n <CustomDatePickerField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customDatePickerFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={`flex flex-col RemoteFlows__DatePickerField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__DatePickerField__Label\">\n {label}\n </FormLabel>\n <Popover>\n <PopoverTrigger asChild>\n <FormControl>\n <div>\n <Button\n type=\"button\"\n variant={'outline'}\n className={cn(\n 'w-full pl-3 text-left font-normal',\n !field.value && 'text-muted-foreground',\n )}\n data-testid=\"date-picker-button\"\n >\n {field.value && <>{format(field.value, 'yyyy-MM-dd')}</>}\n <CalendarIcon className=\"ml-auto h-4 w-4 opacity-50\" />\n </Button>\n </div>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent\n className={`w-auto p-0 RemoteFlows__DatepickerField__PopoverContent`}\n align=\"start\"\n >\n <Calendar\n mode=\"single\"\n className=\"RemoteFlows__DatepickerField__Calendar\"\n selected={field.value ? new Date(field.value) : undefined}\n onSelect={(date) => {\n field.onChange(date ? format(date, 'yyyy-MM-dd') : null);\n onChange?.(date);\n }}\n defaultMonth={minDate ? new Date(minDate) : undefined}\n components={{\n DayContent: (props) => {\n return (\n <PopoverClose>{props.date.getDate()}</PopoverClose>\n );\n },\n }}\n {...(minDate && {\n disabled: (date: Date) => date < new Date(minDate),\n })}\n />\n </PopoverContent>\n </Popover>\n {description ? (\n <FormDescription>{description}</FormDescription>\n ) : null}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__DatePickerField__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport { ChevronLeft, ChevronRight } from 'lucide-react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '@/src/lib/utils';\nimport { buttonVariants } from '@/src/components/ui/button';\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: React.ComponentProps<typeof DayPicker>) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col sm:flex-row gap-2',\n month: 'flex flex-col gap-4',\n caption: 'flex justify-center pt-1 relative items-center w-full',\n caption_label: 'text-sm font-medium',\n nav: 'flex items-center gap-1',\n nav_button: cn(\n buttonVariants({ variant: 'outline' }),\n 'size-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n ),\n nav_button_previous: 'absolute left-1',\n nav_button_next: 'absolute right-1',\n table: 'w-full border-collapse space-x-1',\n head_row: 'flex',\n head_cell:\n 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',\n row: 'flex w-full mt-2',\n cell: cn(\n 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n ),\n day: cn(\n buttonVariants({ variant: 'ghost' }),\n 'size-8 p-0 font-normal aria-selected:opacity-100',\n ),\n day_range_start:\n 'day-range-start aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_range_end:\n 'day-range-end aria-selected:bg-primary aria-selected:text-primary-foreground',\n day_selected:\n 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n day_today: 'bg-accent text-accent-foreground',\n day_outside:\n 'day-outside text-muted-foreground aria-selected:text-muted-foreground',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle:\n 'aria-selected:bg-accent aria-selected:text-accent-foreground',\n day_hidden: 'invisible',\n ...classNames,\n }}\n components={{\n IconLeft: ({ className, ...props }) => (\n <ChevronLeft className={cn('size-4', className)} {...props} />\n ),\n IconRight: ({ className, ...props }) => (\n <ChevronRight className={cn('size-4', className)} {...props} />\n ),\n }}\n {...props}\n />\n );\n}\n\nexport { Calendar };\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = 'center',\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };\n","import { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { cn } from '@/src/lib/utils';\nimport * as React from 'react';\nimport { SupportedTypes } from './types';\n\ntype FieldBase = {\n label: string;\n name: string;\n description: string;\n};\n\ntype FieldWithOptions = FieldBase & {\n type: 'select' | 'radio';\n options: Array<{ value: string; label: string }>;\n};\n\ntype FieldWithoutOptions = FieldBase & {\n type: Exclude<SupportedTypes, 'select' | 'radio'>;\n options?: never;\n};\n\ntype Field = FieldWithOptions | FieldWithoutOptions;\n\ntype FieldSetProps = {\n label: string;\n name: string;\n description: string;\n fields: Field[];\n};\n\nexport function FieldSetField({\n label,\n name,\n fields,\n description,\n}: FieldSetProps) {\n return (\n <fieldset\n className={cn(\n 'border-1 border-input p-4 rounded-xl',\n `RemoteFlows__FieldSetField__${name}`,\n )}\n >\n <legend className=\"text-sm font-semibold px-2\">{label}</legend>\n {description ? (\n <div\n className=\"mb-5 RemoteFlows__FieldSetField__Description\"\n dangerouslySetInnerHTML={{ __html: description }}\n />\n ) : null}\n <div className=\"grid gap-4\">\n {fields.map((field) => {\n const FieldComponent = fieldsMap[field.type];\n return (\n <FieldComponent\n {...field}\n key={field.name}\n name={`${name}.${field.name}`}\n />\n );\n })}\n </div>\n </fieldset>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport { FileUploader } from '../../ui/file-uploader';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\nconst toBase64 = (file: File): Promise<string> => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n};\n\nconst convertFilesToBase64 = async (\n event: React.ChangeEvent<HTMLInputElement>,\n) => {\n const files = event.target.files ? Array.from(event.target.files) : [];\n\n const base64Files = await Promise.all(\n files.map(async (file) => {\n const base64 = await toBase64(file);\n return {\n name: file.name,\n content: base64.split(',')[1],\n };\n }),\n );\n return base64Files;\n};\n\nexport type FileUploadFieldProps = JSFField & {\n onChange?: (value: any) => void;\n multiple?: boolean;\n};\n\nexport function FileUploadField({\n name,\n description,\n label,\n multiple,\n onChange,\n ...rest\n}: FileUploadFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n if (components?.file) {\n const CustomFileUploadField = components?.file;\n const customFileUploadFieldProps = {\n name,\n description,\n label,\n multiple,\n ...rest,\n };\n return (\n <CustomFileUploadField\n field={{\n ...field,\n value: null,\n onChange: async (value: any) => {\n const files = await convertFilesToBase64(value);\n if (multiple) {\n field.onChange(files);\n onChange?.(files);\n } else {\n field.onChange([files[0]]);\n onChange?.([files[0]]);\n }\n },\n }}\n fieldState={fieldState}\n fieldData={customFileUploadFieldProps}\n />\n );\n }\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__FileUpload__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__FileUpload__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <FileUploader\n onChange={async (\n event: React.ChangeEvent<HTMLInputElement>,\n ) => {\n const files = await convertFilesToBase64(event);\n if (multiple) {\n field.onChange(files);\n onChange?.(files);\n } else {\n field.onChange([files[0]]);\n onChange?.([files[0]]);\n }\n }}\n multiple={multiple}\n className={cn('RemoteFlows__FileUpload__Input')}\n />\n </FormControl>\n {description && (\n <div className=\"flex items-center justify-between\">\n <FormDescription className=\"RemoteFlows__FileUpload__Description\">\n {description}\n </FormDescription>\n </div>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__FileUpload__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import React, { useState, useRef } from 'react';\nimport { Button } from '@/src/components/ui/button';\nimport { Upload, X } from 'lucide-react';\nimport { cn } from '@/src/lib/utils';\n\ntype FileUploaderProps = {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n className?: string;\n multiple?: boolean;\n};\n\nexport function FileUploader({\n onChange,\n className,\n multiple,\n}: FileUploaderProps) {\n const [files, setFiles] = useState<File[]>([]);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const newFiles = Array.from(e.target.files);\n\n setFiles(newFiles);\n onChange(e);\n }\n };\n\n const onRemoveFile = (file: File) => {\n setFiles((prevFiles) => prevFiles.filter((f) => f !== file));\n };\n\n return (\n <div className={cn('flex flex-col items-start gap-4', className)}>\n <input\n type=\"file\"\n ref={inputRef}\n onChange={handleChange}\n className=\"hidden\"\n aria-label=\"File upload\"\n multiple={multiple}\n />\n <Button onClick={handleClick} className=\"gap-2\">\n <Upload className=\"h-4 w-4\" />\n Choose File\n </Button>\n {files.length === 0 && (\n <div className=\"text-sm\">\n {!multiple ? (\n <span className=\"font-medium\">No file selected.</span>\n ) : (\n <span className=\"font-medium\">\n No files selected. You can select multiple files\n </span>\n )}\n </div>\n )}\n {files.length > 0 &&\n files.map((file, index) => (\n <div key={index} className=\"text-sm flex items-center gap-2\">\n Selected file: <span className=\"font-medium\">{file.name}</span> (\n {Math.round(file.size / 1024)} KB)\n <Button variant=\"ghost\" onClick={() => onRemoveFile(file)}>\n <X />\n </Button>\n </div>\n ))}\n </div>\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextField, TextFieldProps } from './TextField';\n\nexport function NumberField(props: TextFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n if (components?.number) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const CustomNumberField =\n components.number as React.ComponentType<any>;\n return (\n <CustomNumberField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={props}\n />\n );\n }}\n />\n );\n }\n\n return (\n <TextField {...props} type=\"text\" inputMode=\"decimal\" pattern=\"^[0-9.]*$\" />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { Input } from '../../ui/input';\n\nexport type TextFieldProps = React.ComponentProps<'input'> &\n JSFField & {\n onChange?: (value: any) => void;\n };\n\nexport function TextField({\n name,\n description,\n label,\n type,\n onChange,\n ...rest\n}: TextFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n if (components?.text) {\n const CustomTextField = components?.text;\n const customTextFieldProps = {\n name,\n description,\n label,\n type,\n onChange,\n ...rest,\n };\n return (\n <CustomTextField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__TextField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__TextField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <Input\n {...field}\n value={field.value ?? ''}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) => {\n field.onChange(event);\n onChange?.(event);\n }}\n className=\"RemoteFlows__TextField__Input\"\n placeholder={label}\n />\n </FormControl>\n {description && (\n <FormDescription className=\"RemoteFlows__TextField__Description\">\n {description}\n </FormDescription>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__TextField__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Input({ className, type, ...props }: React.ComponentProps<'input'>) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n 'shadow-xs border-input file:text-foreground placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-xl border bg-transparent px-4 py-7 text-sm transition-[color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-focused',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { CircleIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn('grid gap-3', className)}\n {...props}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"fill-radio absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '@/src/components/ui/form';\nimport { RadioGroup, RadioGroupItem } from '@/src/components/ui/radio-group';\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport * as React from 'react';\nimport { useFormContext } from 'react-hook-form';\n\ntype RadioGroupFieldProps = JSFField & {\n onChange?: (value: any) => void;\n};\n\nexport function RadioGroupField({\n name,\n defaultValue,\n description,\n label,\n options,\n onChange,\n ...rest\n}: RadioGroupFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n defaultValue={defaultValue}\n render={({ field, fieldState }) => {\n if (components?.radio) {\n const CustomRadioGroupField = components?.radio;\n const customRadioGroupFieldProps = {\n name,\n defaultValue,\n description,\n label,\n options,\n ...rest,\n };\n return (\n <CustomRadioGroupField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customRadioGroupFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n className={cn(\n 'space-y-3',\n `RemoteFlows__RadioGroupField__Item__${name}`,\n )}\n data-field={name}\n >\n <FormLabel>{label}</FormLabel>\n <FormControl>\n <RadioGroup\n aria-label={label}\n onValueChange={(value: string) => {\n field.onChange(value);\n onChange?.(value);\n }}\n value={field.value}\n className=\"flex flex-col space-y-3\"\n >\n {options?.map((option) => (\n <>\n <FormItem\n key={option.value}\n data-field={name}\n className=\"flex items-start space-x-3 space-y-0 gap-0 RemoteFlows__RadioField__Item\"\n >\n <FormControl>\n <RadioGroupItem\n value={option.value}\n className=\"RemoteFlows__RadioField__Input\"\n />\n </FormControl>\n <div>\n <FormLabel className=\"font-normal mb-0 RemoteFlows__RadioField__Label\">\n {option.label}\n </FormLabel>\n {option.description && (\n <FormDescription className=\"mt-2\">\n {option.description}\n </FormDescription>\n )}\n </div>\n </FormItem>\n </>\n ))}\n </RadioGroup>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/src/components/ui/select';\nimport { useFormFields } from '@/src/context';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\n\ntype SelectFieldProps = JSFField & {\n placeholder?: string;\n options: Array<{ value: string; label: string }>;\n className?: string;\n onChange?: (value: any) => void;\n};\n\nexport function SelectField({\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n ...rest\n}: SelectFieldProps) {\n const { control } = useFormContext();\n const { components } = useFormFields();\n\n return (\n <FormField\n defaultValue={defaultValue}\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n if (components?.select) {\n const CustomSelectField = components?.select;\n const customSelectFieldProps = {\n label,\n name,\n options,\n defaultValue,\n description,\n onChange,\n ...rest,\n };\n return (\n <CustomSelectField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customSelectFieldProps}\n />\n );\n }\n\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__SelectField__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__SelectField__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <div className=\"relative\">\n <Select\n value={field.value || ''}\n onValueChange={(value: string) => {\n field.onChange(value);\n onChange?.(value);\n }}\n >\n <SelectTrigger\n className=\"RemoteFlows__SelectField__Trigger\"\n aria-invalid={Boolean(fieldState.error)}\n aria-label={label}\n >\n <span className=\"absolute\">\n <SelectValue placeholder={label} />\n </span>\n </SelectTrigger>\n <SelectContent className=\"RemoteFlows__SelectField__Content\">\n <SelectGroup className=\"RemoteFlows__SelectField__Group\">\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className=\"RemoteFlows__SelectField__SelectItem\"\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n </FormControl>\n {description && <FormDescription>{description}</FormDescription>}\n {fieldState.error && <FormMessage />}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\n\nimport { cn } from '@/src/lib/utils';\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-full items-center justify-between rounded-xl border bg-transparent px-4 py-7 text-sm whitespace-nowrap transition-[color] outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n 'focus-visible:border-focused',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild className=\"absolute right-4\">\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = 'popper',\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn('px-2 py-1.5 text-sm font-medium', className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground min-h-11 justify-between [&_svg:not([class*='text-'])]:text-muted-foreground flex w-full cursor-default items-center gap-2 py-2 px-4 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <span className=\"flex size-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn('bg-border pointer-events-none -mx-1 my-1 h-px', className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className,\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport { useFormFields } from '@/src/context';\nimport { cn } from '@/src/lib/utils';\nimport { JSFField } from '@/src/types/remoteFlows';\nimport { useFormContext } from 'react-hook-form';\nimport {\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from '../../ui/form';\nimport { Textarea } from '../../ui/textarea';\n\nexport type TextAreaFieldProps = JSFField & {\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n maxLength?: number;\n};\n\nexport function TextAreaField({\n name,\n description,\n label,\n onChange,\n maxLength,\n ...rest\n}: TextAreaFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n return (\n <FormField\n control={control}\n name={name}\n render={({ field, fieldState }) => {\n if (components?.textarea) {\n const CustomTextAreaField = components?.textarea;\n const customTextAreaFieldProps = {\n name,\n description,\n label,\n maxLength,\n ...rest,\n };\n return (\n <CustomTextAreaField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={customTextAreaFieldProps}\n />\n );\n }\n\n const valueLength = field.value?.length ?? 0;\n return (\n <FormItem\n data-field={name}\n className={`RemoteFlows__TextArea__Item__${name}`}\n >\n <FormLabel className=\"RemoteFlows__TextArea__Label\">\n {label}\n </FormLabel>\n <FormControl>\n <Textarea\n {...field}\n value={field.value ?? ''}\n onChange={(event: React.ChangeEvent<HTMLTextAreaElement>) => {\n field.onChange(event);\n onChange?.(event);\n }}\n className={cn(\n fieldState.error &&\n 'border-red-500 focus-visible:ring-red-500',\n 'RemoteFlows__TextArea__Input',\n )}\n placeholder={label}\n />\n </FormControl>\n {(description || maxLength) && (\n <div className=\"flex items-center justify-between\">\n {description && (\n <FormDescription className=\"RemoteFlows__TextArea__Description\">\n {description}\n </FormDescription>\n )}\n {maxLength && (\n <span className=\"text-sm ml-auto RemoteFlows__TextArea__MaxLength\">\n {valueLength}/{maxLength}\n </span>\n )}\n </div>\n )}\n {fieldState.error && (\n <FormMessage className=\"RemoteFlows__TextArea__Error\" />\n )}\n </FormItem>\n );\n }}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<'textarea'>\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useFormFields } from '@/src/context';\nimport React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport { FormField } from '../../ui/form';\nimport { TextField, TextFieldProps } from './TextField';\n\nexport function EmailField(props: TextFieldProps) {\n const { components } = useFormFields();\n const { control } = useFormContext();\n\n if (components?.email) {\n return (\n <FormField\n control={control}\n name={props.name}\n render={({ field, fieldState }) => {\n const CustomEmailField = components.email as React.ComponentType<any>;\n return (\n <CustomEmailField\n field={{\n ...field,\n onChange: (value: any) => {\n field.onChange(value);\n props.onChange?.(value);\n },\n }}\n fieldState={fieldState}\n fieldData={props}\n />\n );\n }}\n />\n );\n }\n\n return <TextField {...props} type=\"email\" />;\n}\n","import { CheckBoxField } from '@/src/components/form/fields/CheckBoxField';\nimport { DatePickerField } from '@/src/components/form/fields/DatePickerField';\nimport { FieldSetField } from '@/src/components/form/fields/FieldSetField';\nimport { FileUploadField } from '@/src/components/form/fields/FileUploadField';\nimport { NumberField } from '@/src/components/form/fields/NumberField';\nimport { RadioGroupField } from '@/src/components/form/fields/RadioGroupField';\nimport { SelectField } from '@/src/components/form/fields/SelectField';\nimport { TextAreaField } from '@/src/components/form/fields/TextAreaField';\nimport { TextField } from '@/src/components/form/fields/TextField';\nimport { EmailField } from '@/src/components/form/fields/EmailField';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport React from 'react';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const fieldsMap: Record<SupportedTypes, React.ComponentType<any>> = {\n checkbox: CheckBoxField,\n text: TextField,\n email: EmailField,\n money: NumberField,\n select: SelectField,\n radio: RadioGroupField,\n number: NumberField,\n file: FileUploadField,\n fieldset: FieldSetField,\n date: DatePickerField,\n textarea: TextAreaField,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { fieldsMap } from '@/src/components/form/fields/fieldsMapping';\nimport { SupportedTypes } from '@/src/components/form/fields/types';\nimport { Fields } from '@remoteoss/json-schema-form';\nimport React, { Fragment } from 'react';\nimport { Statement, StatementProps } from './Statement';\nimport { ForcedValueField } from './fields/ForcedValueField';\n\ntype JSONSchemaFormFieldsProps = {\n fields: Fields;\n};\n\nfunction checkFieldHasForcedValue(field: any) {\n // A field to be considered \"forced value\" must:\n return (\n field.const !== undefined && // Only accepts a specific value\n field.const === field.default && // It can be prefilled, meaning it's not critical\n field.inputType !== 'checkbox' && // Because checkbox must always be visible\n field.inputType !== 'hidden' // Because hidden inputs shouldn't be visible\n );\n}\n\nexport const JSONSchemaFormFields = ({ fields }: JSONSchemaFormFieldsProps) => {\n if (!fields || fields.length === 0) return null;\n\n return (\n <>\n {fields.map((field) => {\n if (field.isVisible === false || field.deprecated) {\n return null; // Skip hidden or deprecated fields\n }\n\n if (checkFieldHasForcedValue(field)) {\n return (\n <ForcedValueField\n key={field.name as string}\n name={field.name as string}\n description={field.description as string}\n value={field.const as string}\n statement={field.statement as any}\n />\n );\n }\n\n const FieldComponent = fieldsMap[field.inputType as SupportedTypes];\n return FieldComponent ? (\n <Fragment key={field.name as string}>\n <FieldComponent {...field} />\n {field.statement ? (\n <Statement {...(field.statement as StatementProps)} />\n ) : null}\n </Fragment>\n ) : (\n <p className=\"error\">\n Field type {field.inputType as string} not supported\n </p>\n );\n })}\n </>\n );\n};\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/src/lib/utils';\n\nconst alertVariants = cva(\n 'relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n destructive:\n 'text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90',\n warning:\n 'bg-card bg-warning border-warning-border [&>svg]:text-current',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n 'text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { Alert, AlertDescription, AlertTitle } from '@/src/components/ui/alert';\nimport { useFormFields } from '@/src/context';\nimport { AlertCircle } from 'lucide-react';\nimport React from 'react';\n\nexport type StatementProps = {\n title: string;\n description: string;\n severity: 'warning' | 'error' | 'success' | 'info' | 'neutral' | 'time';\n};\n\nexport function Statement({ title, description, severity }: StatementProps) {\n const { components } = useFormFields();\n\n if (components?.statement) {\n const CustomStatement = components?.statement;\n return (\n <CustomStatement\n data={{\n title,\n description,\n severity,\n }}\n />\n );\n }\n\n return (\n <Alert variant=\"warning\">\n <AlertCircle className=\"h-4 w-4\" />\n <AlertTitle>{title}</AlertTitle>\n <AlertDescription>{description}</AlertDescription>\n </Alert>\n );\n}\n","import React, { useEffect } from 'react';\nimport { useFormContext } from 'react-hook-form';\n\ntype ForcedValueFieldProps = {\n name: string;\n value: string;\n description: string;\n statement: {\n title: string;\n description: string;\n };\n};\n\nexport function ForcedValueField({\n name,\n value,\n description,\n statement,\n}: ForcedValueFieldProps) {\n const { setValue } = useFormContext();\n\n useEffect(() => {\n setValue(name, value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div>\n <p\n className={`text-sm RemoteFlows__ForcedValue__Title__${name}`}\n dangerouslySetInnerHTML={{ __html: statement.title }}\n />\n <p\n className={`text-xs RemoteFlows__ForcedValue__Description__${name}`}\n dangerouslySetInnerHTML={{\n __html: statement.description || description,\n }}\n />\n </div>\n );\n}\n"],"mappings":"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","names":["React","CheckboxPrimitive","Check","Checkbox","className","props","ref","cn","Check","React","useFormContext","CheckBoxField","name","defaultValue","description","label","onChange","multiple","options","rest","components","useFormFields","control","useFormContext","handleCheckboxChange","__name","optionId","checked","field","currentValues","value","FormField","fieldState","CustomCheckboxField","customCheckboxFieldProps","evt","FormItem","cn","FormControl","FormLabel","option","Checkbox","event","FormDescription","FormMessage","CalendarIcon","React","useFormContext","React","ChevronLeft","ChevronRight","DayPicker","Calendar","className","classNames","showOutsideDays","props","DayPicker","cn","buttonVariants","__name","ChevronLeft","ChevronRight","React","PopoverPrimitive","Popover","props","__name","PopoverTrigger","PopoverContent","className","align","sideOffset","cn","PopoverClose","format","DatePickerField","description","label","name","minDate","onChange","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomDatePickerField","customDatePickerFieldProps","__name","value","FormItem","FormLabel","Popover","PopoverTrigger","FormControl","Button","cn","format","CalendarIcon","PopoverContent","Calendar","date","props","PopoverClose","FormDescription","FormMessage","React","FieldSetField","label","name","fields","description","cn","field","FieldComponent","fieldsMap","__name","React","useFormContext","React","useState","useRef","Upload","X","FileUploader","onChange","className","multiple","files","setFiles","useState","inputRef","useRef","handleClick","__name","handleChange","e","newFiles","onRemoveFile","file","prevFiles","f","React","cn","Button","Upload","index","X","toBase64","__name","file","resolve","reject","reader","error","convertFilesToBase64","event","files","base64","FileUploadField","name","description","label","multiple","onChange","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomFileUploadField","customFileUploadFieldProps","value","FormItem","FormLabel","FormControl","FileUploader","cn","FormDescription","FormMessage","React","useFormContext","React","useFormContext","React","Input","className","type","props","cn","__name","TextField","name","description","label","type","onChange","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomTextField","customTextFieldProps","__name","value","FormItem","FormLabel","FormControl","Input","event","FormDescription","FormMessage","NumberField","props","components","useFormFields","control","useFormContext","React","FormField","field","fieldState","CustomNumberField","__name","value","TextField","RadioGroupPrimitive","CircleIcon","React","RadioGroup","className","props","cn","__name","RadioGroupItem","CircleIcon","React","useFormContext","RadioGroupField","name","defaultValue","description","label","options","onChange","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomRadioGroupField","customRadioGroupFieldProps","__name","value","FormItem","cn","FormLabel","FormControl","RadioGroup","option","RadioGroupItem","FormDescription","FormMessage","React","React","SelectPrimitive","CheckIcon","ChevronDownIcon","ChevronUpIcon","Select","props","__name","SelectGroup","SelectValue","SelectTrigger","className","children","cn","ChevronDownIcon","SelectContent","position","SelectScrollUpButton","SelectScrollDownButton","SelectItem","className","children","props","cn","CheckIcon","__name","SelectScrollUpButton","className","props","cn","ChevronUpIcon","__name","SelectScrollDownButton","ChevronDownIcon","useFormContext","SelectField","label","name","options","defaultValue","description","onChange","rest","control","useFormContext","components","useFormFields","FormField","field","fieldState","CustomSelectField","customSelectFieldProps","__name","value","FormItem","FormLabel","FormControl","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","option","SelectItem","FormDescription","FormMessage","React","useFormContext","React","Textarea","className","props","ref","cn","TextAreaField","name","description","label","onChange","maxLength","rest","components","useFormFields","control","useFormContext","FormField","field","fieldState","CustomTextAreaField","customTextAreaFieldProps","__name","value","valueLength","FormItem","FormLabel","FormControl","Textarea","event","cn","FormDescription","FormMessage","React","useFormContext","EmailField","props","components","useFormFields","control","useFormContext","React","FormField","field","fieldState","CustomEmailField","__name","value","TextField","fieldsMap","CheckBoxField","TextField","EmailField","NumberField","SelectField","RadioGroupField","FileUploadField","FieldSetField","DatePickerField","TextAreaField","React","Fragment","cva","React","alertVariants","cva","Alert","className","variant","props","cn","__name","AlertTitle","AlertDescription","AlertCircle","React","Statement","title","description","severity","components","useFormFields","CustomStatement","React","Alert","AlertCircle","AlertTitle","AlertDescription","__name","React","useEffect","useFormContext","ForcedValueField","name","value","description","statement","setValue","useFormContext","useEffect","React","__name","checkFieldHasForcedValue","field","__name","JSONSchemaFormFields","fields","React","ForcedValueField","FieldComponent","fieldsMap","Fragment","Statement"]}
@@ -0,0 +1,2 @@
1
+ var e={data:{version:7,schema:{additionalProperties:!1,allOf:[{if:{properties:{personal_email:{pattern:"^[a-zA-Z0-9 .]+$"}}},then:{properties:{personal_email:{"x-jsf-presentation":{statement:{title:"Please make sure to add the employee personal email so we can get in contact with the employee after the termination process takes effect.",inputType:"statement",severity:"warning"}}}}}},{if:{properties:{customer_informed_employee:{const:"yes"}},required:["customer_informed_employee"]},then:{properties:{customer_informed_employee_date:{type:"string"},customer_informed_employee_description:{type:"string"}},required:["customer_informed_employee_date","customer_informed_employee_description"]},else:{properties:{customer_informed_employee_date:!1,customer_informed_employee_description:!1}}},{if:{properties:{will_challenge_termination:{const:"yes"}},required:["will_challenge_termination"]},then:{properties:{will_challenge_termination_description:{type:"string"}},required:["will_challenge_termination_description"]},else:{properties:{will_challenge_termination_description:!1}}},{if:{properties:{agrees_to_pto_amount:{const:"no"}},required:["agrees_to_pto_amount"]},then:{properties:{agrees_to_pto_amount_notes:{type:"string"}},required:["agrees_to_pto_amount_notes"]},else:{properties:{agrees_to_pto_amount_notes:!1,timesheet_file:!1}}}],properties:{confidential:{description:"Confidential requests are visible only to you. Non-confidential requests are visible to all admins in your company.",oneOf:[{const:"yes",description:"",title:"Yes"},{const:"no",description:"",title:"No"}],title:"Is this request confidential?",type:"string","x-jsf-presentation":{direction:"column",inputType:"radio",statement:{title:"Please do not inform the employee of their termination until we review your request for legal risks. When we approve your request, you can inform the employee and we'll take it from there.",inputType:"statement",severity:"warning"}}},customer_informed_employee:{description:"",oneOf:[{const:"yes",description:"",title:"Yes"},{const:"no",description:"",title:"No"}],title:"Have you informed the employee of the termination?",type:"string","x-jsf-presentation":{direction:"column",inputType:"radio"}},customer_informed_employee_date:{description:"",format:"date",maxLength:255,title:"When the employee was told about the termination",type:["string","null"],"x-jsf-presentation":{inputType:"date"}},customer_informed_employee_description:{description:"",maxLength:1e3,title:"How did you share this information?",type:["string","null"],"x-jsf-presentation":{inputType:"textarea"}},personal_email:{description:"",maxLength:255,title:"Employee's personal email",format:"email",type:"string","x-jsf-presentation":{inputType:"email"}},termination_reason:{title:"Termination reason",description:"Make sure you choose an accurate termination reason to avoid unfair or unlawful dismissal claims.",type:"string",oneOf:[{const:"gross_misconduct",title:"Gross misconduct"},{const:"performance",title:"Performance"},{const:"workforce_reduction",title:"Workforce Reduction"},{const:"values",title:"Values"},{const:"compliance_issue",title:"Compliance issue"},{const:"incapacity_to_perform_inherent_duties",title:"Incapacity To perform inherent duties"},{const:"mutual_agreement",title:"Mutual agreement"},{const:"cancellation_before_start_date",title:"Decision to cancel hiring before the employee starts"},{const:"job_abandonment",title:"Job abandonment"},{const:"dissatisfaction_with_remote_service",title:"Dissatisfaction with EOR service"},{const:"end_of_fixed_term_contract_compliance_issue",title:"End of fixed-term contract"},{const:"other",title:"Other"}],"x-jsf-presentation":{inputType:"select"}},reason_description:{description:"",maxLength:1e3,title:"Termination reason details",type:"string","x-jsf-presentation":{inputType:"textarea"}},additional_comments:{description:"",maxLength:1e3,title:"Additional details regarding this termination process.",type:"string","x-jsf-presentation":{inputType:"textarea"}},termination_reason_files:{description:"Please upload any supporting documents regarding the termination reason.",title:"Termination reason files",type:"string","x-jsf-presentation":{inputType:"file",accept:".pdf",multiple:!0}},risk_assessment_reasons:{description:"",title:"This employee is...",type:"array",items:{anyOf:[{const:"sick_leave",title:"Currently on or recently returned from sick leave"},{const:"family_leave",title:"Currently on or recently returned from maternity, paternity, or other family leave"},{const:"pregnant_or_breastfeeding",title:"Pregnant or breastfeeding"},{const:"requested_medical_or_family_leave",title:"Requested medical or family leave"},{const:"disabled_or_health_condition",title:"Disabled or has a health condition"},{const:"member_of_union_or_works_council",title:"A member of a union or works council"},{const:"caring_responsibilities",title:"Caring responsibilities"},{const:"reported_concerns_with_workplace",title:"Reported any wrongdoing; raised any allegations of discrimination, harassment, retaliation, etc.; or asserted their employment rights or raised complaints about their working conditions"},{const:"none_of_these",title:"To the best of my knowledge, I am not aware of any of these"}]},"x-jsf-presentation":{inputType:"checkbox",direction:"column"}},will_challenge_termination:{description:"",oneOf:[{const:"yes",description:"",title:"Yes"},{const:"no",description:"",title:"No"}],title:"Do you consider it is likely that the employee will challenge their termination?",type:"string","x-jsf-presentation":{direction:"column",inputType:"radio"}},will_challenge_termination_description:{description:"",maxLength:1e3,title:"Please explain how the employee will challenge their termination",type:["string","null"],"x-jsf-presentation":{inputType:"textarea"}},proposed_termination_date:{description:"",format:"date",maxLength:255,title:"Proposed termination date",type:"string","x-jsf-presentation":{inputType:"date"}},agrees_to_pto_amount:{description:"",oneOf:[{const:"yes",description:"",title:"Yes"},{const:"no",description:"",title:"No"}],title:"Are these paid time off records correct?",type:"string","x-jsf-presentation":{direction:"column",inputType:"radio"}},agrees_to_pto_amount_notes:{description:"Please provide details regarding any additional days taken, including specific dates, or any other inaccuracy in the time off data.",maxLength:1e3,title:"Provide time off details",type:["string","null"],"x-jsf-presentation":{inputType:"textarea"}},timesheet_file:{description:"Upload a timesheet exported from your HR software. This way we can compare and confirm the total number of Paid time off.",title:"Timesheet document",type:["string","null"],"x-jsf-presentation":{inputType:"file",accept:".pdf"}},acknowledge_termination_procedure:{description:"",title:"I, {{username}} have read and agree to the procedures as defined in the termination form.",type:"boolean","x-jsf-presentation":{direction:"column",inputType:"checkbox"}}},required:["confidential","customer_informed_employee","personal_email","termination_reason","reason_description","risk_assessment_reasons","will_challenge_termination","proposed_termination_date","agrees_to_pto_amount","acknowledge_termination_procedure"],type:"object","x-jsf-order":["is_confidential","customer_informed_employee","customer_informed_employee_date","customer_informed_employee_description","personal_email","termination_reason","reason_description","additional_comments","termination_reason_files","risk_assessment_reasons","will_challenge_termination","will_challenge_termination_description","proposed_termination_date","agrees_to_pto_amount","agrees_to_pto_amount_notes","timesheet_file","acknowledge_termination_procedure"]}}};export{e as a};
2
+ //# sourceMappingURL=chunk-CTG3DYJR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/json-schemas/jsonSchema.ts"],"sourcesContent":["export const jsonSchema = {\n data: {\n version: 7,\n schema: {\n additionalProperties: false,\n allOf: [\n {\n if: {\n properties: {\n personal_email: {\n pattern: '^[a-zA-Z0-9 .]+$',\n },\n },\n },\n then: {\n properties: {\n personal_email: {\n 'x-jsf-presentation': {\n statement: {\n title:\n 'Please make sure to add the employee personal email so we can get in contact with the employee after the termination process takes effect.',\n inputType: 'statement',\n severity: 'warning',\n },\n },\n },\n },\n },\n },\n {\n if: {\n properties: {\n customer_informed_employee: {\n const: 'yes',\n },\n },\n required: ['customer_informed_employee'],\n },\n then: {\n properties: {\n customer_informed_employee_date: {\n type: 'string',\n },\n customer_informed_employee_description: {\n type: 'string',\n },\n },\n required: [\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n ],\n },\n else: {\n properties: {\n customer_informed_employee_date: false,\n customer_informed_employee_description: false,\n },\n },\n },\n {\n if: {\n properties: {\n will_challenge_termination: {\n const: 'yes',\n },\n },\n required: ['will_challenge_termination'],\n },\n then: {\n properties: {\n will_challenge_termination_description: {\n type: 'string',\n },\n },\n required: ['will_challenge_termination_description'],\n },\n else: {\n properties: {\n will_challenge_termination_description: false,\n },\n },\n },\n {\n if: {\n properties: {\n agrees_to_pto_amount: {\n const: 'no',\n },\n },\n required: ['agrees_to_pto_amount'],\n },\n then: {\n properties: {\n agrees_to_pto_amount_notes: {\n type: 'string',\n },\n },\n required: ['agrees_to_pto_amount_notes'],\n },\n else: {\n properties: {\n agrees_to_pto_amount_notes: false,\n timesheet_file: false,\n },\n },\n },\n ],\n properties: {\n confidential: {\n description:\n 'Confidential requests are visible only to you. Non-confidential requests are visible to all admins in your company.',\n oneOf: [\n {\n const: 'yes',\n description: '',\n title: 'Yes',\n },\n {\n const: 'no',\n description: '',\n title: 'No',\n },\n ],\n title: 'Is this request confidential?',\n type: 'string',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'radio',\n statement: {\n title:\n \"Please do not inform the employee of their termination until we review your request for legal risks. When we approve your request, you can inform the employee and we'll take it from there.\",\n inputType: 'statement',\n severity: 'warning',\n },\n },\n },\n customer_informed_employee: {\n description: '',\n oneOf: [\n {\n const: 'yes',\n description: '',\n title: 'Yes',\n },\n {\n const: 'no',\n description: '',\n title: 'No',\n },\n ],\n title: 'Have you informed the employee of the termination?',\n type: 'string',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'radio',\n },\n },\n customer_informed_employee_date: {\n description: '',\n format: 'date',\n maxLength: 255,\n title: 'When the employee was told about the termination',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'date',\n },\n },\n customer_informed_employee_description: {\n description: '',\n maxLength: 1000,\n title: 'How did you share this information?',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'textarea',\n },\n },\n personal_email: {\n description: '',\n maxLength: 255,\n title: \"Employee's personal email\",\n format: 'email',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'email',\n },\n },\n termination_reason: {\n title: 'Termination reason',\n description:\n 'Make sure you choose an accurate termination reason to avoid unfair or unlawful dismissal claims.',\n type: 'string',\n oneOf: [\n {\n const: 'gross_misconduct',\n title: 'Gross misconduct',\n },\n {\n const: 'performance',\n title: 'Performance',\n },\n {\n const: 'workforce_reduction',\n title: 'Workforce Reduction',\n },\n {\n const: 'values',\n title: 'Values',\n },\n {\n const: 'compliance_issue',\n title: 'Compliance issue',\n },\n {\n const: 'incapacity_to_perform_inherent_duties',\n title: 'Incapacity To perform inherent duties',\n },\n {\n const: 'mutual_agreement',\n title: 'Mutual agreement',\n },\n {\n const: 'cancellation_before_start_date',\n title: 'Decision to cancel hiring before the employee starts',\n },\n {\n const: 'job_abandonment',\n title: 'Job abandonment',\n },\n {\n const: 'dissatisfaction_with_remote_service',\n title: 'Dissatisfaction with EOR service',\n },\n {\n const: 'end_of_fixed_term_contract_compliance_issue',\n title: 'End of fixed-term contract',\n },\n {\n const: 'other',\n title: 'Other',\n },\n ],\n 'x-jsf-presentation': {\n inputType: 'select',\n },\n },\n reason_description: {\n description: '',\n maxLength: 1000,\n title: 'Termination reason details',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'textarea',\n },\n },\n additional_comments: {\n description: '',\n maxLength: 1000,\n title: 'Additional details regarding this termination process.',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'textarea',\n },\n },\n termination_reason_files: {\n description:\n 'Please upload any supporting documents regarding the termination reason.',\n title: 'Termination reason files',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'file',\n accept: '.pdf',\n multiple: true,\n },\n },\n risk_assessment_reasons: {\n description: '',\n title: 'This employee is...',\n type: 'array',\n items: {\n anyOf: [\n {\n const: 'sick_leave',\n title: 'Currently on or recently returned from sick leave',\n },\n {\n const: 'family_leave',\n title:\n 'Currently on or recently returned from maternity, paternity, or other family leave',\n },\n {\n const: 'pregnant_or_breastfeeding',\n title: 'Pregnant or breastfeeding',\n },\n {\n const: 'requested_medical_or_family_leave',\n title: 'Requested medical or family leave',\n },\n {\n const: 'disabled_or_health_condition',\n title: 'Disabled or has a health condition',\n },\n {\n const: 'member_of_union_or_works_council',\n title: 'A member of a union or works council',\n },\n {\n const: 'caring_responsibilities',\n title: 'Caring responsibilities',\n },\n {\n const: 'reported_concerns_with_workplace',\n title:\n 'Reported any wrongdoing; raised any allegations of discrimination, harassment, retaliation, etc.; or asserted their employment rights or raised complaints about their working conditions',\n },\n {\n const: 'none_of_these',\n title:\n 'To the best of my knowledge, I am not aware of any of these',\n },\n ],\n },\n 'x-jsf-presentation': {\n inputType: 'checkbox',\n direction: 'column',\n },\n },\n will_challenge_termination: {\n description: '',\n oneOf: [\n {\n const: 'yes',\n description: '',\n title: 'Yes',\n },\n {\n const: 'no',\n description: '',\n title: 'No',\n },\n ],\n title:\n 'Do you consider it is likely that the employee will challenge their termination?',\n type: 'string',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'radio',\n },\n },\n will_challenge_termination_description: {\n description: '',\n maxLength: 1000,\n title:\n 'Please explain how the employee will challenge their termination',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'textarea',\n },\n },\n proposed_termination_date: {\n description: '',\n format: 'date',\n maxLength: 255,\n title: 'Proposed termination date',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'date',\n },\n },\n agrees_to_pto_amount: {\n description: '',\n oneOf: [\n {\n const: 'yes',\n description: '',\n title: 'Yes',\n },\n {\n const: 'no',\n description: '',\n title: 'No',\n },\n ],\n title: 'Are these paid time off records correct?',\n type: 'string',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'radio',\n },\n },\n agrees_to_pto_amount_notes: {\n description:\n 'Please provide details regarding any additional days taken, including specific dates, or any other inaccuracy in the time off data.',\n maxLength: 1000,\n title: 'Provide time off details',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'textarea',\n },\n },\n timesheet_file: {\n description:\n 'Upload a timesheet exported from your HR software. This way we can compare and confirm the total number of Paid time off.',\n title: 'Timesheet document',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'file',\n accept: '.pdf',\n },\n },\n acknowledge_termination_procedure: {\n description: '',\n title:\n 'I, {{username}} have read and agree to the procedures as defined in the termination form.',\n type: 'boolean',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'checkbox',\n },\n },\n },\n required: [\n 'confidential',\n 'customer_informed_employee',\n 'personal_email',\n 'termination_reason',\n 'reason_description',\n 'risk_assessment_reasons',\n 'will_challenge_termination',\n 'proposed_termination_date',\n 'agrees_to_pto_amount',\n 'acknowledge_termination_procedure',\n ],\n type: 'object',\n 'x-jsf-order': [\n 'is_confidential',\n 'customer_informed_employee',\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n 'personal_email',\n 'termination_reason',\n 'reason_description',\n 'additional_comments',\n 'termination_reason_files',\n 'risk_assessment_reasons',\n 'will_challenge_termination',\n 'will_challenge_termination_description',\n 'proposed_termination_date',\n 'agrees_to_pto_amount',\n 'agrees_to_pto_amount_notes',\n 'timesheet_file',\n 'acknowledge_termination_procedure',\n ],\n },\n },\n};\n"],"mappings":"AAAO,IAAMA,EAAa,CACxB,KAAM,CACJ,QAAS,EACT,OAAQ,CACN,qBAAsB,GACtB,MAAO,CACL,CACE,GAAI,CACF,WAAY,CACV,eAAgB,CACd,QAAS,kBACX,CACF,CACF,EACA,KAAM,CACJ,WAAY,CACV,eAAgB,CACd,qBAAsB,CACpB,UAAW,CACT,MACE,6IACF,UAAW,YACX,SAAU,SACZ,CACF,CACF,CACF,CACF,CACF,EACA,CACE,GAAI,CACF,WAAY,CACV,2BAA4B,CAC1B,MAAO,KACT,CACF,EACA,SAAU,CAAC,4BAA4B,CACzC,EACA,KAAM,CACJ,WAAY,CACV,gCAAiC,CAC/B,KAAM,QACR,EACA,uCAAwC,CACtC,KAAM,QACR,CACF,EACA,SAAU,CACR,kCACA,wCACF,CACF,EACA,KAAM,CACJ,WAAY,CACV,gCAAiC,GACjC,uCAAwC,EAC1C,CACF,CACF,EACA,CACE,GAAI,CACF,WAAY,CACV,2BAA4B,CAC1B,MAAO,KACT,CACF,EACA,SAAU,CAAC,4BAA4B,CACzC,EACA,KAAM,CACJ,WAAY,CACV,uCAAwC,CACtC,KAAM,QACR,CACF,EACA,SAAU,CAAC,wCAAwC,CACrD,EACA,KAAM,CACJ,WAAY,CACV,uCAAwC,EAC1C,CACF,CACF,EACA,CACE,GAAI,CACF,WAAY,CACV,qBAAsB,CACpB,MAAO,IACT,CACF,EACA,SAAU,CAAC,sBAAsB,CACnC,EACA,KAAM,CACJ,WAAY,CACV,2BAA4B,CAC1B,KAAM,QACR,CACF,EACA,SAAU,CAAC,4BAA4B,CACzC,EACA,KAAM,CACJ,WAAY,CACV,2BAA4B,GAC5B,eAAgB,EAClB,CACF,CACF,CACF,EACA,WAAY,CACV,aAAc,CACZ,YACE,sHACF,MAAO,CACL,CACE,MAAO,MACP,YAAa,GACb,MAAO,KACT,EACA,CACE,MAAO,KACP,YAAa,GACb,MAAO,IACT,CACF,EACA,MAAO,gCACP,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,UAAW,QACX,UAAW,CACT,MACE,+LACF,UAAW,YACX,SAAU,SACZ,CACF,CACF,EACA,2BAA4B,CAC1B,YAAa,GACb,MAAO,CACL,CACE,MAAO,MACP,YAAa,GACb,MAAO,KACT,EACA,CACE,MAAO,KACP,YAAa,GACb,MAAO,IACT,CACF,EACA,MAAO,qDACP,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,UAAW,OACb,CACF,EACA,gCAAiC,CAC/B,YAAa,GACb,OAAQ,OACR,UAAW,IACX,MAAO,mDACP,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,MACb,CACF,EACA,uCAAwC,CACtC,YAAa,GACb,UAAW,IACX,MAAO,sCACP,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,UACb,CACF,EACA,eAAgB,CACd,YAAa,GACb,UAAW,IACX,MAAO,4BACP,OAAQ,QACR,KAAM,SACN,qBAAsB,CACpB,UAAW,OACb,CACF,EACA,mBAAoB,CAClB,MAAO,qBACP,YACE,oGACF,KAAM,SACN,MAAO,CACL,CACE,MAAO,mBACP,MAAO,kBACT,EACA,CACE,MAAO,cACP,MAAO,aACT,EACA,CACE,MAAO,sBACP,MAAO,qBACT,EACA,CACE,MAAO,SACP,MAAO,QACT,EACA,CACE,MAAO,mBACP,MAAO,kBACT,EACA,CACE,MAAO,wCACP,MAAO,uCACT,EACA,CACE,MAAO,mBACP,MAAO,kBACT,EACA,CACE,MAAO,iCACP,MAAO,sDACT,EACA,CACE,MAAO,kBACP,MAAO,iBACT,EACA,CACE,MAAO,sCACP,MAAO,kCACT,EACA,CACE,MAAO,8CACP,MAAO,4BACT,EACA,CACE,MAAO,QACP,MAAO,OACT,CACF,EACA,qBAAsB,CACpB,UAAW,QACb,CACF,EACA,mBAAoB,CAClB,YAAa,GACb,UAAW,IACX,MAAO,6BACP,KAAM,SACN,qBAAsB,CACpB,UAAW,UACb,CACF,EACA,oBAAqB,CACnB,YAAa,GACb,UAAW,IACX,MAAO,yDACP,KAAM,SACN,qBAAsB,CACpB,UAAW,UACb,CACF,EACA,yBAA0B,CACxB,YACE,2EACF,MAAO,2BACP,KAAM,SACN,qBAAsB,CACpB,UAAW,OACX,OAAQ,OACR,SAAU,EACZ,CACF,EACA,wBAAyB,CACvB,YAAa,GACb,MAAO,sBACP,KAAM,QACN,MAAO,CACL,MAAO,CACL,CACE,MAAO,aACP,MAAO,mDACT,EACA,CACE,MAAO,eACP,MACE,oFACJ,EACA,CACE,MAAO,4BACP,MAAO,2BACT,EACA,CACE,MAAO,oCACP,MAAO,mCACT,EACA,CACE,MAAO,+BACP,MAAO,oCACT,EACA,CACE,MAAO,mCACP,MAAO,sCACT,EACA,CACE,MAAO,0BACP,MAAO,yBACT,EACA,CACE,MAAO,mCACP,MACE,2LACJ,EACA,CACE,MAAO,gBACP,MACE,6DACJ,CACF,CACF,EACA,qBAAsB,CACpB,UAAW,WACX,UAAW,QACb,CACF,EACA,2BAA4B,CAC1B,YAAa,GACb,MAAO,CACL,CACE,MAAO,MACP,YAAa,GACb,MAAO,KACT,EACA,CACE,MAAO,KACP,YAAa,GACb,MAAO,IACT,CACF,EACA,MACE,mFACF,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,UAAW,OACb,CACF,EACA,uCAAwC,CACtC,YAAa,GACb,UAAW,IACX,MACE,mEACF,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,UACb,CACF,EACA,0BAA2B,CACzB,YAAa,GACb,OAAQ,OACR,UAAW,IACX,MAAO,4BACP,KAAM,SACN,qBAAsB,CACpB,UAAW,MACb,CACF,EACA,qBAAsB,CACpB,YAAa,GACb,MAAO,CACL,CACE,MAAO,MACP,YAAa,GACb,MAAO,KACT,EACA,CACE,MAAO,KACP,YAAa,GACb,MAAO,IACT,CACF,EACA,MAAO,2CACP,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,UAAW,OACb,CACF,EACA,2BAA4B,CAC1B,YACE,sIACF,UAAW,IACX,MAAO,2BACP,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,UACb,CACF,EACA,eAAgB,CACd,YACE,4HACF,MAAO,qBACP,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,OACX,OAAQ,MACV,CACF,EACA,kCAAmC,CACjC,YAAa,GACb,MACE,4FACF,KAAM,UACN,qBAAsB,CACpB,UAAW,SACX,UAAW,UACb,CACF,CACF,EACA,SAAU,CACR,eACA,6BACA,iBACA,qBACA,qBACA,0BACA,6BACA,4BACA,uBACA,mCACF,EACA,KAAM,SACN,cAAe,CACb,kBACA,6BACA,kCACA,yCACA,iBACA,qBACA,qBACA,sBACA,2BACA,0BACA,6BACA,yCACA,4BACA,uBACA,6BACA,iBACA,mCACF,CACF,CACF,CACF","names":["jsonSchema"]}
@@ -0,0 +1,2 @@
1
+ import{b as n}from"./chunk-DZYFSFZ7.js";import{a as t,b as m}from"./chunk-JLUDKN4H.js";import{a as o}from"./chunk-AYDF3IFZ.js";var a=o(({render:p})=>{let{terminationBag:e}=n(),{data:s}=t({employmentId:e.employmentId}),{data:f}=m({employmentId:e.employmentId,status:"taken"});return p({employment:s,timeoff:f})},"TimeOff");export{a};
2
+ //# sourceMappingURL=chunk-EQBNHLR4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/TimeOff.tsx"],"sourcesContent":["import { EmploymentShowResponse, ListTimeoffResponse } from '@/src/client';\nimport { useEmploymentQuery, useTimeOffQuery } from '@/src/common/hooks';\nimport { useTerminationContext } from '@/src/flows/Termination/context';\nimport React from 'react';\n\nexport const TimeOff = ({\n render,\n}: {\n render: (props: {\n employment: EmploymentShowResponse | undefined;\n timeoff: ListTimeoffResponse | undefined;\n }) => React.ReactNode;\n}) => {\n const { terminationBag } = useTerminationContext();\n const { data: employment } = useEmploymentQuery({\n employmentId: terminationBag.employmentId,\n });\n\n const { data: timeoff } = useTimeOffQuery({\n employmentId: terminationBag.employmentId,\n status: 'taken',\n });\n\n return render({ employment, timeoff });\n};\n"],"mappings":"+HAKO,IAAMA,EAAUC,EAAA,CAAC,CACtB,OAAAC,CACF,IAKM,CACJ,GAAM,CAAE,eAAAC,CAAe,EAAIC,EAAsB,EAC3C,CAAE,KAAMC,CAAW,EAAIC,EAAmB,CAC9C,aAAcH,EAAe,YAC/B,CAAC,EAEK,CAAE,KAAMI,CAAQ,EAAIC,EAAgB,CACxC,aAAcL,EAAe,aAC7B,OAAQ,OACV,CAAC,EAED,OAAOD,EAAO,CAAE,WAAAG,EAAY,QAAAE,CAAQ,CAAC,CACvC,EAnBuB","names":["TimeOff","__name","render","terminationBag","useTerminationContext","employment","useEmploymentQuery","timeoff","useTimeOffQuery"]}
@@ -1,2 +1,2 @@
1
- import{a as n}from"./chunk-OLJ2S6A6.js";import{d as u,e as i}from"./chunk-WTGUGPHV.js";import{b as s}from"./chunk-A4RX3KRZ.js";import{a as l}from"./chunk-AYDF3IFZ.js";import c,{useId as g}from"react";import{useForm as y}from"react-hook-form";function d({costCalculatorBag:r,defaultValues:o,render:t}){let e=g(),a=s(r.handleValidation),C=y({resolver:a,defaultValues:{country:o?.countryRegionSlug,currency:o?.currencySlug,region:"",salary:o?.salary},shouldUnregister:!0,mode:"onBlur"});return c.createElement(n.Provider,{value:{form:C,formId:e,costCalculatorBag:r}},t(r))}l(d,"CostCalculatorFlowProvider");var F=l(({estimationOptions:r=u,defaultValues:o={countryRegionSlug:"",currencySlug:"",salary:""},options:t,render:e})=>{let a=i({defaultRegion:o.countryRegionSlug,estimationOptions:r,options:t});return c.createElement(d,{costCalculatorBag:a,defaultValues:o,render:e})},"CostCalculatorFlow");export{F as a};
2
- //# sourceMappingURL=chunk-QWZVBZED.js.map
1
+ import{a as n}from"./chunk-OLJ2S6A6.js";import{d as u,e as i}from"./chunk-NBD4VOG3.js";import{b as s}from"./chunk-A4RX3KRZ.js";import{a as l}from"./chunk-AYDF3IFZ.js";import c,{useId as g}from"react";import{useForm as y}from"react-hook-form";function d({costCalculatorBag:r,defaultValues:o,render:t}){let e=g(),a=s(r.handleValidation),C=y({resolver:a,defaultValues:{country:o?.countryRegionSlug,currency:o?.currencySlug,region:"",salary:o?.salary},shouldUnregister:!0,mode:"onBlur"});return c.createElement(n.Provider,{value:{form:C,formId:e,costCalculatorBag:r}},t(r))}l(d,"CostCalculatorFlowProvider");var F=l(({estimationOptions:r=u,defaultValues:o={countryRegionSlug:"",currencySlug:"",salary:""},options:t,render:e})=>{let a=i({defaultRegion:o.countryRegionSlug,estimationOptions:r,options:t});return c.createElement(d,{costCalculatorBag:a,defaultValues:o,render:e})},"CostCalculatorFlow");export{F as a};
2
+ //# sourceMappingURL=chunk-F5QJZKDL.js.map
@@ -0,0 +1,2 @@
1
+ var i={employee_communication:{index:0,name:"employee_communication"},termination_details:{index:1,name:"termination_details"},paid_time_off:{index:2,name:"paid_time_off"},additional_information:{index:3,name:"additional_information"}};export{i as a};
2
+ //# sourceMappingURL=chunk-FZ2HS6G7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/utils.ts"],"sourcesContent":["import { Step } from '@/src/flows/useStepState';\n\nexport type StepTerminationKeys =\n | 'employee_communication'\n | 'termination_details'\n | 'paid_time_off'\n | 'additional_information';\n\nexport const STEPS: Record<StepTerminationKeys, Step> = {\n employee_communication: { index: 0, name: 'employee_communication' },\n termination_details: { index: 1, name: 'termination_details' },\n paid_time_off: { index: 2, name: 'paid_time_off' },\n additional_information: { index: 3, name: 'additional_information' },\n} as const;\n"],"mappings":"AAQO,IAAMA,EAA2C,CACtD,uBAAwB,CAAE,MAAO,EAAG,KAAM,wBAAyB,EACnE,oBAAqB,CAAE,MAAO,EAAG,KAAM,qBAAsB,EAC7D,cAAe,CAAE,MAAO,EAAG,KAAM,eAAgB,EACjD,uBAAwB,CAAE,MAAO,EAAG,KAAM,wBAAyB,CACrE","names":["STEPS"]}
@@ -0,0 +1,2 @@
1
+ import{a as T}from"./chunk-XFD3ULUF.js";import{a as h}from"./chunk-CTG3DYJR.js";import{a as F}from"./chunk-SEUQNAF6.js";import{a as S}from"./chunk-FZ2HS6G7.js";import{b as V}from"./chunk-36UPHOJS.js";import{a as _}from"./chunk-JRQSZHUU.js";import{b as c}from"./chunk-55VACCVZ.js";import{c as m}from"./chunk-YBACB5A6.js";import{a as y}from"./chunk-S56EWAS4.js";import{d as p}from"./chunk-WRDKLT4N.js";import{a as o}from"./chunk-AYDF3IFZ.js";import{createHeadlessForm as P,modify as O}from"@remoteoss/json-schema-form";import{useMutation as x,useQuery as A}from"@tanstack/react-query";import K from"lodash/omitBy";import L from"lodash/isNull";import q from"lodash/omit";function z(i){return{confidential:"",customer_informed_employee:"",customer_informed_employee_date:"",customer_informed_employee_description:"",personal_email:"",termination_reason:void 0,reason_description:"",termination_reason_files:[],will_challenge_termination:"",will_challenge_termination_description:null,agrees_to_pto_amount:"",agrees_to_pto_amount_notes:null,acknowledge_termination_procedure:!1,additional_comments:"",proposed_termination_date:"",risk_assessment_reasons:[],timesheet_file:void 0,...i}}o(z,"buildInitialValues");var R=o(()=>{let{client:i}=p();return x({mutationFn:o(n=>c({client:i,headers:{Authorization:""},body:n}),"mutationFn")})},"useCreateTermination"),B=o(({formValues:i,jsfModify:n,step:s})=>A({queryKey:["rmt-flows-termination-schema",s],queryFn:o(()=>F[s]??T,"queryFn"),select:o(({data:l})=>{let{schema:e}=O(l.schema,n||{});return P(e||{},{initialValues:i||{}})},"select")}),"useTerminationSchema"),le=o(({employmentId:i,options:n})=>{let{fieldValues:s,setFieldValues:l,stepState:e,previousStep:d,nextStep:g}=y(S),k=e.values&&e.values[e.currentStep.name]!==void 0?e.values[e.currentStep.name]:s,{data:a,isLoading:w}=B({formValues:k,jsfModify:n?.jsfModify,step:e.currentStep.name}),u=P(h.data.schema),f=R(),{mutateAsync:b}=_(f);async function v(r){if(!i)throw new Error("Employment id is missing");if(e.currentStep.index<e.totalSteps-1){g();return}if(a){let t=m(r,u.fields,{isPartialValidation:!0}),{customer_informed_employee:E}=t,j=E==="yes"?{employee_awareness:{date:t.customer_informed_employee_date,note:t.customer_informed_employee_description}}:void 0,D=V(t,["agrees_to_pto_amount","confidential","customer_informed_employee","will_challenge_termination"]),H=q(D,"customer_informed_employee_date","customer_informed_employee_description"),J=K({...H,...j},L);return b({employment_id:i,termination_details:J,type:"termination"})}}o(v,"onSubmit");function C(){d()}o(C,"back");let M=z({...e.values?.employee_communication,...e.values?.termination_details,...e.values?.paid_time_off,...e.values?.additional_information});return{employmentId:i,stepState:e,fields:a?.fields||[],isLoading:w,isSubmitting:f.isPending,initialValues:M,handleValidation:o(r=>{if(a){let t=m(r,a?.fields);return a?.handleValidation(t)}return null},"handleValidation"),checkFieldUpdates:o(r=>{if(u){let t=m(r,u?.fields,{isPartialValidation:!0});l(t)}},"checkFieldUpdates"),onSubmit:v,back:C}},"useTermination");export{le as a};
2
+ //# sourceMappingURL=chunk-GI72ZKVM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/hooks.ts"],"sourcesContent":["import {\n CreateOffboardingParams,\n postCreateOffboarding,\n TerminationDetailsParams,\n} from '@/src/client';\nimport { mutationToPromise } from '@/src/lib/mutations';\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport omitBy from 'lodash/omitBy';\nimport isNull from 'lodash/isNull';\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { JSFModify } from '@/src/flows/CostCalculator/types';\nimport { TerminationFormValues } from '@/src/flows/Termination/types';\nimport { useClient } from '@/src/context';\nimport omit from 'lodash/omit';\nimport { parseFormRadioValues } from '@/src/flows/utils';\nimport { useStepState } from '@/src/flows/useStepState';\nimport { STEPS } from '@/src/flows/Termination/utils';\nimport { defaultSchema } from '@/src/flows/Termination/json-schemas/defaultSchema';\nimport { schema } from '@/src/flows/Termination/json-schemas/schema';\nimport { jsonSchema } from '@/src/flows/Termination/json-schemas/jsonSchema';\n\nfunction buildInitialValues(\n stepsInitialValues: Partial<TerminationFormValues>,\n): TerminationFormValues {\n const initialValues: TerminationFormValues = {\n confidential: '',\n customer_informed_employee: '',\n customer_informed_employee_date: '',\n customer_informed_employee_description: '',\n personal_email: '',\n termination_reason: undefined,\n reason_description: '',\n termination_reason_files: [],\n will_challenge_termination: '',\n will_challenge_termination_description: null,\n agrees_to_pto_amount: '',\n agrees_to_pto_amount_notes: null,\n acknowledge_termination_procedure: false,\n additional_comments: '',\n proposed_termination_date: '',\n risk_assessment_reasons: [],\n timesheet_file: undefined,\n ...stepsInitialValues,\n };\n\n return initialValues;\n}\n\nconst useCreateTermination = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateOffboardingParams) => {\n return postCreateOffboarding({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\nconst useTerminationSchema = ({\n formValues,\n jsfModify,\n step,\n}: {\n formValues?: TerminationFormValues;\n jsfModify?: JSFModify;\n step?: string;\n}) => {\n return useQuery({\n queryKey: ['rmt-flows-termination-schema', step],\n queryFn: () => {\n return schema[step as keyof typeof schema] ?? defaultSchema;\n },\n select: ({ data }) => {\n const { schema } = modify(data.schema, jsfModify || {});\n const form = createHeadlessForm(schema || {}, {\n initialValues: formValues || {},\n });\n return form;\n },\n });\n};\n\ntype TerminationHookProps = {\n employmentId: string;\n options?: {\n jsfModify?: JSFModify;\n };\n};\n\nexport const useTermination = ({\n employmentId,\n options,\n}: TerminationHookProps) => {\n const { fieldValues, setFieldValues, stepState, previousStep, nextStep } =\n useStepState<keyof typeof STEPS, TerminationFormValues>(STEPS);\n\n const formValues =\n stepState.values &&\n stepState.values[stepState.currentStep.name as keyof typeof STEPS] !==\n undefined\n ? stepState.values[stepState.currentStep.name as keyof typeof STEPS]\n : fieldValues;\n\n const { data: terminationHeadlessForm, isLoading: isLoadingTermination } =\n useTerminationSchema({\n formValues: formValues,\n jsfModify: options?.jsfModify,\n step: stepState.currentStep.name,\n });\n\n const entireTerminationSchema = createHeadlessForm(jsonSchema.data.schema);\n\n const createTermination = useCreateTermination();\n const { mutateAsync } = mutationToPromise(createTermination);\n\n async function onSubmit(values: TerminationFormValues) {\n if (!employmentId) {\n throw new Error('Employment id is missing');\n }\n\n if (stepState.currentStep.index < stepState.totalSteps - 1) {\n nextStep();\n return;\n }\n\n if (terminationHeadlessForm) {\n // this is a hack because I need to validate all form values with the entire schema\n const parsedValues = parseJSFToValidate(\n values,\n entireTerminationSchema.fields,\n { isPartialValidation: true },\n );\n\n const { customer_informed_employee: customerInformedEmployee } =\n parsedValues;\n\n const employeeAwareness =\n customerInformedEmployee === 'yes'\n ? {\n employee_awareness: {\n date: parsedValues.customer_informed_employee_date,\n note: parsedValues.customer_informed_employee_description,\n },\n }\n : undefined;\n\n const radioFieldKeys = [\n 'agrees_to_pto_amount',\n 'confidential',\n 'customer_informed_employee',\n 'will_challenge_termination',\n ];\n\n const parsedRadioValues = parseFormRadioValues(\n parsedValues,\n radioFieldKeys,\n );\n\n const normalizedValues = omit(\n parsedRadioValues,\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n );\n\n const terminationDetails: TerminationDetailsParams = omitBy(\n {\n ...normalizedValues,\n ...employeeAwareness,\n },\n isNull,\n ) as unknown as TerminationDetailsParams;\n\n const terminationPayload: CreateOffboardingParams = {\n employment_id: employmentId,\n termination_details: terminationDetails,\n type: 'termination',\n };\n\n return mutateAsync(terminationPayload);\n }\n\n return;\n }\n\n function back() {\n previousStep();\n }\n\n const initialValues = buildInitialValues({\n ...stepState.values?.employee_communication,\n ...stepState.values?.termination_details,\n ...stepState.values?.paid_time_off,\n ...stepState.values?.additional_information,\n });\n\n return {\n /**\n * Employment id passed useful to be used between components\n */\n employmentId,\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the contract amendment schema\n */\n fields: terminationHeadlessForm?.fields || [],\n /**\n * Loading state indicating if the termination schema is being fetched\n */\n isLoading: isLoadingTermination,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting: createTermination.isPending,\n /**\n * Initial form values\n */\n initialValues: initialValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation: (values: TerminationFormValues) => {\n if (terminationHeadlessForm) {\n const parsedValues = parseJSFToValidate(\n values,\n terminationHeadlessForm?.fields,\n );\n return terminationHeadlessForm?.handleValidation(parsedValues);\n }\n return null;\n },\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: (values: Partial<TerminationFormValues>) => {\n if (entireTerminationSchema) {\n const parsedValues = parseJSFToValidate(\n values,\n entireTerminationSchema?.fields,\n { isPartialValidation: true },\n );\n setFieldValues(parsedValues as TerminationFormValues);\n }\n },\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n };\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","omitBy","isNull","omit","buildInitialValues","stepsInitialValues","__name","useCreateTermination","client","useClient","useMutation","payload","postCreateOffboarding","useTerminationSchema","formValues","jsfModify","step","useQuery","schema","defaultSchema","data","modify","createHeadlessForm","useTermination","employmentId","options","fieldValues","setFieldValues","stepState","previousStep","nextStep","useStepState","STEPS","terminationHeadlessForm","isLoadingTermination","entireTerminationSchema","jsonSchema","createTermination","mutateAsync","mutationToPromise","onSubmit","values","parsedValues","parseJSFToValidate","customerInformedEmployee","employeeAwareness","parsedRadioValues","parseFormRadioValues","normalizedValues","omit","terminationDetails","omitBy","isNull","back","initialValues"]}
@@ -0,0 +1,2 @@
1
+ import{a as A}from"./chunk-JRQSZHUU.js";import{a as _}from"./chunk-JLUDKN4H.js";import{a as d,b as S}from"./chunk-RCX4JUI3.js";import{c as b,f as P,j as w}from"./chunk-55VACCVZ.js";import{c as h}from"./chunk-YBACB5A6.js";import{a as k}from"./chunk-S56EWAS4.js";import{d as c}from"./chunk-WRDKLT4N.js";import{a as t}from"./chunk-AYDF3IFZ.js";import{createHeadlessForm as H,modify as I}from"@remoteoss/json-schema-form";import{useMutation as v,useQuery as R}from"@tanstack/react-query";var J=t(({countryCode:a,employment:n,fieldValues:l,options:o})=>{let{client:u}=c();return R({queryKey:["contract-amendment-schema"],retry:!1,queryFn:t(async()=>{let e=await b({client:u,headers:{Authorization:""},query:{employment_id:n?.data?.employment?.id,country_code:a}});if(e.error||!e.data)throw new Error("Failed to fetch contract amendment schema");return e},"queryFn"),enabled:!!n,select:t(({data:e})=>{let s=e?.data||{};if(o&&o.jsfModify){let{schema:f}=I(s,o.jsfModify);s=f}let i={...l},r=Object.keys(i).length>0;return H(s,{initialValues:r?i:S(n)})},"select")})},"useContractAmendmentSchemaQuery"),K=t(()=>{let{client:a}=c();return v({mutationFn:t(n=>P({client:a,headers:{Authorization:""},body:n}),"mutationFn")})},"useCreateContractAmendmentMutation"),N=t(()=>{let{client:a}=c();return v({mutationFn:t(n=>w({client:a,headers:{Authorization:""},body:n}),"mutationFn")})},"useAutomatableContractAmendmentMutation"),at=t(({employmentId:a,countryCode:n,options:l})=>{let{fieldValues:o,setFieldValues:u,stepState:e,nextStep:s,previousStep:i}=k(d),{data:r,isLoading:V,isError:f,error:M}=_({employmentId:a}),j=Object.keys(o).length===0&&Object.keys(e.values?.form||{}).length>0,{data:m,isLoading:L,isError:T,error:q}=J({employment:r,countryCode:n,fieldValues:j?e.values?.form:o,options:l}),z=S(r,m?.fields),g=K(),F=N();async function O(p){let y=h(p,m?.fields||[],{isPartialValidation:!1}),E={employment_id:r?.data.employment?.id,amendment_contract_id:r?.data.employment?.active_contract_id,contract_amendment:{...y}};switch(e.currentStep.name){case d.form.name:{let{mutateAsync:C}=A(F),B=await C(E);return s(),B}case d.confirmation_form.name:{let{mutateAsync:C}=A(g);return C(E)}default:throw new Error("Invalid step state")}}t(O,"onSubmit");function Q(p){if(m){let y=h(p,m?.fields);return m?.handleValidation(y)}return null}t(Q,"handleValidation");function x(){i()}return t(x,"back"),{stepState:e,fields:m?.fields||[],isLoading:V||L,isError:f||T,error:M||q,isSubmitting:F.isPending||g.isPending,initialValues:z,values:o,handleValidation:Q,checkFieldUpdates:u,onSubmit:O,back:x}},"useContractAmendment");export{at as a};
2
+ //# sourceMappingURL=chunk-GW7GG5ZW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/ContractAmendment/hooks.ts"],"sourcesContent":["import {\n CreateContractAmendmentParams,\n EmploymentShowResponse,\n getShowContractAmendmentSchema,\n postAutomatableContractAmendment,\n postCreateContractAmendment,\n} from '@/src/client';\n\nimport { parseJSFToValidate } from '@/src/components/form/utils';\nimport { mutationToPromise } from '@/src/lib/mutations';\n\nimport { Client } from '@hey-api/client-fetch';\nimport { createHeadlessForm, modify } from '@remoteoss/json-schema-form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { ContractAmendmentParams } from './types';\n\nimport { useEmploymentQuery } from '@/src/common/hooks';\nimport { useClient } from '@/src/context';\nimport { FieldValues } from 'react-hook-form';\nimport { useStepState } from '../useStepState';\nimport { buildInitialValues, STEPS } from './utils';\n\ntype ContractAmendmentSchemaParams = {\n countryCode: string;\n employment: EmploymentShowResponse | undefined;\n fieldValues: FieldValues | undefined;\n options?: ContractAmendmentParams['options'];\n};\n\nconst useContractAmendmentSchemaQuery = ({\n countryCode,\n employment,\n fieldValues,\n options,\n}: ContractAmendmentSchemaParams) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['contract-amendment-schema'],\n retry: false,\n queryFn: async () => {\n const response = await getShowContractAmendmentSchema({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n query: {\n employment_id: employment?.data?.employment?.id as string,\n country_code: countryCode,\n },\n });\n\n // If response status is 404 or other error, throw an error to trigger isError\n if (response.error || !response.data) {\n throw new Error('Failed to fetch contract amendment schema');\n }\n\n return response;\n },\n enabled: Boolean(employment),\n select: ({ data }) => {\n let jsfSchema = data?.data || {};\n\n if (options && options.jsfModify) {\n const { schema } = modify(jsfSchema, options.jsfModify);\n jsfSchema = schema;\n }\n const copyFieldValues = { ...fieldValues };\n const hasFieldValues = Object.keys(copyFieldValues).length > 0;\n\n const result = createHeadlessForm(jsfSchema, {\n initialValues: hasFieldValues\n ? copyFieldValues\n : buildInitialValues(employment),\n });\n return result;\n },\n });\n};\n\nconst useCreateContractAmendmentMutation = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateContractAmendmentParams) => {\n return postCreateContractAmendment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\nconst useAutomatableContractAmendmentMutation = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (payload: CreateContractAmendmentParams) => {\n return postAutomatableContractAmendment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: payload,\n });\n },\n });\n};\n\nexport const useContractAmendment = ({\n employmentId,\n countryCode,\n options,\n}: ContractAmendmentParams) => {\n const { fieldValues, setFieldValues, stepState, nextStep, previousStep } =\n useStepState<keyof typeof STEPS>(STEPS);\n\n const {\n data: employment,\n isLoading: isLoadingEmployment,\n isError: isErrorEmployment,\n error: errorEmployment,\n } = useEmploymentQuery({\n employmentId,\n });\n\n const isNavigatingBackToForm =\n Object.keys(fieldValues).length === 0 &&\n Object.keys(stepState.values?.form || {}).length > 0;\n const {\n data: contractAmendmentHeadlessForm,\n isLoading: isLoadingContractAmendments,\n isError: isErrorContractAmendmentSchema,\n error: errorContractAmendmentSchema,\n } = useContractAmendmentSchemaQuery({\n employment,\n countryCode,\n // In case the user is navigating back to the form step, we need to\n // pass the previous field values, so that the schema can be\n // generated with the correct values.\n fieldValues: isNavigatingBackToForm ? stepState.values?.form : fieldValues,\n options,\n });\n\n const initialValues = buildInitialValues(\n employment,\n contractAmendmentHeadlessForm?.fields,\n );\n\n const createContractAmendmentMutation = useCreateContractAmendmentMutation();\n const automatableContractAmendmentMutation =\n useAutomatableContractAmendmentMutation();\n\n async function onSubmit(values: FieldValues) {\n const parsedValues = parseJSFToValidate(\n values,\n contractAmendmentHeadlessForm?.fields || [],\n {\n isPartialValidation: false,\n },\n );\n\n const payload = {\n employment_id: employment?.data.employment?.id as string,\n amendment_contract_id: employment?.data.employment\n ?.active_contract_id as string,\n contract_amendment: {\n ...parsedValues,\n },\n };\n\n switch (stepState.currentStep.name) {\n case STEPS.form.name: {\n const { mutateAsync } = mutationToPromise(\n automatableContractAmendmentMutation,\n );\n\n const automatableContractAmendment = await mutateAsync(payload);\n\n nextStep();\n\n return automatableContractAmendment;\n }\n case STEPS.confirmation_form.name: {\n const { mutateAsync } = mutationToPromise(\n createContractAmendmentMutation,\n );\n\n return mutateAsync(payload);\n }\n\n default:\n throw new Error('Invalid step state');\n }\n }\n\n function handleValidation(values: FieldValues) {\n if (contractAmendmentHeadlessForm) {\n const parsedValues = parseJSFToValidate(\n values,\n contractAmendmentHeadlessForm?.fields,\n );\n return contractAmendmentHeadlessForm?.handleValidation(parsedValues);\n }\n return null;\n }\n\n function back() {\n previousStep();\n }\n\n return {\n /**\n * Current step state containing the current step and total number of steps\n */\n stepState,\n /**\n * Array of form fields from the contract amendment schema\n */\n fields: contractAmendmentHeadlessForm?.fields || [],\n /**\n * Loading state indicating if either employment or contract amendment data is being fetched\n */\n isLoading: isLoadingEmployment || isLoadingContractAmendments,\n /**\n * Error state indicating if there was an error fetching either employment or contract amendment data\n */\n isError: isErrorEmployment || isErrorContractAmendmentSchema,\n /**\n * Error object containing details about any errors that occurred during data fetching\n */\n error: errorEmployment || errorContractAmendmentSchema,\n /**\n * Loading state indicating if a contract amendment mutation is in progress\n */\n isSubmitting:\n automatableContractAmendmentMutation.isPending ||\n createContractAmendmentMutation.isPending,\n /**\n * Initial form values built from employment data and contract amendment fields\n */\n initialValues,\n /**\n * Current form field values\n */\n values: fieldValues,\n /**\n * Function to validate form values against the contract amendment schema\n * @param values - Form values to validate\n * @returns Validation result or null if no schema is available\n */\n handleValidation,\n /**\n * Function to update the current form field values\n * @param values - New form values to set\n */\n checkFieldUpdates: setFieldValues,\n /**\n * Function to handle form submission\n * @param values - Form values to submit\n * @returns Promise resolving to the mutation result\n */\n onSubmit,\n /**\n * Function to handle going back to the previous step\n * @returns {void}\n */\n back,\n };\n};\n"],"mappings":"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","names":["createHeadlessForm","modify","useMutation","useQuery","useContractAmendmentSchemaQuery","__name","countryCode","employment","fieldValues","options","client","useClient","useQuery","response","getShowContractAmendmentSchema","data","jsfSchema","schema","modify","copyFieldValues","hasFieldValues","createHeadlessForm","buildInitialValues","useCreateContractAmendmentMutation","useMutation","payload","postCreateContractAmendment","useAutomatableContractAmendmentMutation","postAutomatableContractAmendment","useContractAmendment","employmentId","setFieldValues","stepState","nextStep","previousStep","useStepState","STEPS","isLoadingEmployment","isErrorEmployment","errorEmployment","useEmploymentQuery","isNavigatingBackToForm","contractAmendmentHeadlessForm","isLoadingContractAmendments","isErrorContractAmendmentSchema","errorContractAmendmentSchema","initialValues","createContractAmendmentMutation","automatableContractAmendmentMutation","onSubmit","values","parsedValues","parseJSFToValidate","mutateAsync","mutationToPromise","automatableContractAmendment","handleValidation","back"]}
@@ -1,2 +1,2 @@
1
- import{a as e}from"./chunk-TIXDBKBM.js";import{b as m}from"./chunk-6HGUGIYJ.js";import{a as o}from"./chunk-AYDF3IFZ.js";import a from"react";import{useForm as A}from"react-hook-form";function v({onSubmit:i,onError:s,onSuccess:d}){let{contractAmendment:{values:c,isSubmitting:u,onSubmit:C},formId:f}=m(),n=A({defaultValues:c}),l=o(async r=>{await i?.(r);let t=await C(r);t.error?s?.(t.error):d?.(t.data)},"handleSubmit");return u?null:a.createElement(e,{...n},a.createElement("form",{id:f,onSubmit:n.handleSubmit(l),className:"RemoteFlows__ContractAmendmentConfirmationForm"}))}o(v,"ContractAmendmentConfirmationForm");export{v as a};
2
- //# sourceMappingURL=chunk-ZCG5JUUR.js.map
1
+ import{a as e}from"./chunk-N5AQSLAU.js";import{b as m}from"./chunk-6HGUGIYJ.js";import{a as o}from"./chunk-AYDF3IFZ.js";import a from"react";import{useForm as A}from"react-hook-form";function v({onSubmit:i,onError:s,onSuccess:d}){let{contractAmendment:{values:c,isSubmitting:u,onSubmit:C},formId:f}=m(),n=A({defaultValues:c}),l=o(async r=>{await i?.(r);let t=await C(r);t.error?s?.(t.error):d?.(t.data)},"handleSubmit");return u?null:a.createElement(e,{...n},a.createElement("form",{id:f,onSubmit:n.handleSubmit(l),className:"RemoteFlows__ContractAmendmentConfirmationForm"}))}o(v,"ContractAmendmentConfirmationForm");export{v as a};
2
+ //# sourceMappingURL=chunk-IJPE22L7.js.map
@@ -0,0 +1,2 @@
1
+ var e={data:{version:7,schema:{additionalProperties:!1,allOf:[],properties:{acknowledge_termination_procedure:{description:"",title:"I, {{username}} have read and agree to the procedures as defined in the termination form.",type:"boolean","x-jsf-presentation":{direction:"column",inputType:"checkbox"}}},required:["acknowledge_termination_procedure"],type:"object","x-jsf-order":["acknowledge_termination_procedure"]}}};export{e as a};
2
+ //# sourceMappingURL=chunk-IPZEZMLD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/json-schemas/additionalInformation.ts"],"sourcesContent":["export const additionalInformationSchema = {\n data: {\n version: 7,\n schema: {\n additionalProperties: false,\n allOf: [],\n properties: {\n acknowledge_termination_procedure: {\n description: '',\n title:\n 'I, {{username}} have read and agree to the procedures as defined in the termination form.',\n type: 'boolean',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'checkbox',\n },\n },\n },\n required: ['acknowledge_termination_procedure'],\n type: 'object',\n 'x-jsf-order': ['acknowledge_termination_procedure'],\n },\n },\n};\n"],"mappings":"AAAO,IAAMA,EAA8B,CACzC,KAAM,CACJ,QAAS,EACT,OAAQ,CACN,qBAAsB,GACtB,MAAO,CAAC,EACR,WAAY,CACV,kCAAmC,CACjC,YAAa,GACb,MACE,4FACF,KAAM,UACN,qBAAsB,CACpB,UAAW,SACX,UAAW,UACb,CACF,CACF,EACA,SAAU,CAAC,mCAAmC,EAC9C,KAAM,SACN,cAAe,CAAC,mCAAmC,CACrD,CACF,CACF","names":["additionalInformationSchema"]}
@@ -0,0 +1,2 @@
1
+ import{h as o,l as i}from"./chunk-55VACCVZ.js";import{d as n}from"./chunk-WRDKLT4N.js";import{a as e}from"./chunk-AYDF3IFZ.js";import{useQuery as s}from"@tanstack/react-query";var p=e(({employmentId:t})=>{let{client:r}=n();return s({queryKey:["employment",t],retry:!1,queryFn:e(()=>o({client:r,headers:{Authorization:""},path:{employment_id:t}}),"queryFn"),select:e(({data:m})=>m,"select")})},"useEmploymentQuery"),c=e(({employmentId:t,status:r})=>{let{client:m}=n();return s({queryKey:["timeoff",t,r],retry:!1,queryFn:e(()=>i({client:m,headers:{Authorization:""},query:{employment_id:t,status:r}}),"queryFn"),select:e(({data:u})=>u,"select")})},"useTimeOffQuery");export{p as a,c as b};
2
+ //# sourceMappingURL=chunk-JLUDKN4H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/hooks.ts"],"sourcesContent":["import {\n getIndexTimeoff,\n getShowEmployment,\n TimeoffStatus,\n} from '@/src/client';\nimport { useClient } from '@/src/context';\nimport { ContractAmendmentParams } from '@/src/flows/ContractAmendment/types';\nimport { Client } from '@hey-api/client-fetch';\nimport { useQuery } from '@tanstack/react-query';\n\ntype UseEmployment = Pick<ContractAmendmentParams, 'employmentId'>;\n\n/**\n * Hook to retrieve employment details for a specific employment ID.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} params.employmentId - The ID of the employment to fetch details for.\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the employment details.\n */\nexport const useEmploymentQuery = ({ employmentId }: UseEmployment) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['employment', employmentId],\n retry: false,\n queryFn: () => {\n return getShowEmployment({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n path: { employment_id: employmentId },\n });\n },\n select: ({ data }) => data,\n });\n};\n\n/**\n * Hook to retrieve time off data for a specific employment.\n *\n * @param {Object} params - The parameters for the query.\n * @param {string} [params.employmentId] - The ID of the employment to fetch time off data for.\n * @param {TimeoffStatus} [params.status] - The status of the time off requests to filter by (e.g., 'approved', 'pending').\n * @returns {UseQueryResult<any, unknown>} - The result of the query, including the time off data.\n *\n */\nexport const useTimeOffQuery = ({\n employmentId,\n status,\n}: {\n employmentId?: string;\n status?: TimeoffStatus;\n}) => {\n const { client } = useClient();\n return useQuery({\n queryKey: ['timeoff', employmentId, status],\n retry: false,\n queryFn: () => {\n return getIndexTimeoff({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n query: {\n employment_id: employmentId,\n status: status,\n },\n });\n },\n select: ({ data }) => data,\n });\n};\n"],"mappings":"+HAQA,OAAS,YAAAA,MAAgB,wBAWlB,IAAMC,EAAqBC,EAAA,CAAC,CAAE,aAAAC,CAAa,IAAqB,CACrE,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,aAAcH,CAAY,EACrC,MAAO,GACP,QAASD,EAAA,IACAK,EAAkB,CACvB,OAAQH,EACR,QAAS,CACP,cAAe,EACjB,EACA,KAAM,CAAE,cAAeD,CAAa,CACtC,CAAC,EAPM,WAST,OAAQD,EAAA,CAAC,CAAE,KAAAM,CAAK,IAAMA,EAAd,SACV,CAAC,CACH,EAhBkC,sBA2BrBC,EAAkBP,EAAA,CAAC,CAC9B,aAAAC,EACA,OAAAO,CACF,IAGM,CACJ,GAAM,CAAE,OAAAN,CAAO,EAAIC,EAAU,EAC7B,OAAOC,EAAS,CACd,SAAU,CAAC,UAAWH,EAAcO,CAAM,EAC1C,MAAO,GACP,QAASR,EAAA,IACAS,EAAgB,CACrB,OAAQP,EACR,QAAS,CACP,cAAe,EACjB,EACA,MAAO,CACL,cAAeD,EACf,OAAQO,CACV,CACF,CAAC,EAVM,WAYT,OAAQR,EAAA,CAAC,CAAE,KAAAM,CAAK,IAAMA,EAAd,SACV,CAAC,CACH,EAzB+B","names":["useQuery","useEmploymentQuery","__name","employmentId","client","useClient","useQuery","getShowEmployment","data","useTimeOffQuery","status","getIndexTimeoff"]}
@@ -0,0 +1,2 @@
1
+ var e={data:{version:7,schema:{additionalProperties:!1,allOf:[{if:{properties:{personal_email:{pattern:"^[a-zA-Z0-9 .]+$"}}},then:{properties:{personal_email:{"x-jsf-presentation":{statement:{title:"Please make sure to add the employee personal email so we can get in contact with the employee after the termination process takes effect.",inputType:"statement",severity:"warning"}}}}}},{if:{properties:{customer_informed_employee:{const:"yes"}},required:["customer_informed_employee"]},then:{properties:{customer_informed_employee_date:{type:"string"},customer_informed_employee_description:{type:"string"}},required:["customer_informed_employee_date","customer_informed_employee_description"]},else:{properties:{customer_informed_employee_date:!1,customer_informed_employee_description:!1}}}],properties:{confidential:{description:"Confidential requests are visible only to you. Non-confidential requests are visible to all admins in your company.",oneOf:[{const:"yes",description:"",title:"Yes"},{const:"no",description:"",title:"No"}],title:"Is this request confidential?",type:"string","x-jsf-presentation":{direction:"column",inputType:"radio",statement:{title:"Please do not inform the employee of their termination until we review your request for legal risks. When we approve your request, you can inform the employee and we'll take it from there.",inputType:"statement",severity:"warning"}}},customer_informed_employee:{description:"",oneOf:[{const:"yes",description:"",title:"Yes"},{const:"no",description:"",title:"No"}],title:"Have you informed the employee of the termination?",type:"string","x-jsf-presentation":{direction:"column",inputType:"radio"}},customer_informed_employee_date:{description:"",format:"date",maxLength:255,title:"When the employee was told about the termination",type:["string","null"],"x-jsf-presentation":{inputType:"date"}},customer_informed_employee_description:{description:"",maxLength:1e3,title:"How did you share this information?",type:["string","null"],"x-jsf-presentation":{inputType:"textarea"}},personal_email:{description:"",maxLength:255,title:"Employee's personal email",format:"email",type:"string","x-jsf-presentation":{inputType:"email"}}},required:["confidential","customer_informed_employee","personal_email"],type:"object","x-jsf-order":["is_confidential","customer_informed_employee","customer_informed_employee_date","customer_informed_employee_description","personal_email"]}}};export{e as a};
2
+ //# sourceMappingURL=chunk-JODJFARP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/json-schemas/employeeComunication.ts"],"sourcesContent":["export const employeeComunicationSchema = {\n data: {\n version: 7,\n schema: {\n additionalProperties: false,\n allOf: [\n {\n if: {\n properties: {\n personal_email: {\n pattern: '^[a-zA-Z0-9 .]+$',\n },\n },\n },\n then: {\n properties: {\n personal_email: {\n 'x-jsf-presentation': {\n statement: {\n title:\n 'Please make sure to add the employee personal email so we can get in contact with the employee after the termination process takes effect.',\n inputType: 'statement',\n severity: 'warning',\n },\n },\n },\n },\n },\n },\n {\n if: {\n properties: {\n customer_informed_employee: {\n const: 'yes',\n },\n },\n required: ['customer_informed_employee'],\n },\n then: {\n properties: {\n customer_informed_employee_date: {\n type: 'string',\n },\n customer_informed_employee_description: {\n type: 'string',\n },\n },\n required: [\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n ],\n },\n else: {\n properties: {\n customer_informed_employee_date: false,\n customer_informed_employee_description: false,\n },\n },\n },\n ],\n properties: {\n confidential: {\n description:\n 'Confidential requests are visible only to you. Non-confidential requests are visible to all admins in your company.',\n oneOf: [\n {\n const: 'yes',\n description: '',\n title: 'Yes',\n },\n {\n const: 'no',\n description: '',\n title: 'No',\n },\n ],\n title: 'Is this request confidential?',\n type: 'string',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'radio',\n statement: {\n title:\n \"Please do not inform the employee of their termination until we review your request for legal risks. When we approve your request, you can inform the employee and we'll take it from there.\",\n inputType: 'statement',\n severity: 'warning',\n },\n },\n },\n customer_informed_employee: {\n description: '',\n oneOf: [\n {\n const: 'yes',\n description: '',\n title: 'Yes',\n },\n {\n const: 'no',\n description: '',\n title: 'No',\n },\n ],\n title: 'Have you informed the employee of the termination?',\n type: 'string',\n 'x-jsf-presentation': {\n direction: 'column',\n inputType: 'radio',\n },\n },\n customer_informed_employee_date: {\n description: '',\n format: 'date',\n maxLength: 255,\n title: 'When the employee was told about the termination',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'date',\n },\n },\n customer_informed_employee_description: {\n description: '',\n maxLength: 1000,\n title: 'How did you share this information?',\n type: ['string', 'null'],\n 'x-jsf-presentation': {\n inputType: 'textarea',\n },\n },\n personal_email: {\n description: '',\n maxLength: 255,\n title: \"Employee's personal email\",\n format: 'email',\n type: 'string',\n 'x-jsf-presentation': {\n inputType: 'email',\n },\n },\n },\n required: [\n 'confidential',\n 'customer_informed_employee',\n 'personal_email',\n ],\n type: 'object',\n 'x-jsf-order': [\n 'is_confidential',\n 'customer_informed_employee',\n 'customer_informed_employee_date',\n 'customer_informed_employee_description',\n 'personal_email',\n ],\n },\n },\n};\n"],"mappings":"AAAO,IAAMA,EAA6B,CACxC,KAAM,CACJ,QAAS,EACT,OAAQ,CACN,qBAAsB,GACtB,MAAO,CACL,CACE,GAAI,CACF,WAAY,CACV,eAAgB,CACd,QAAS,kBACX,CACF,CACF,EACA,KAAM,CACJ,WAAY,CACV,eAAgB,CACd,qBAAsB,CACpB,UAAW,CACT,MACE,6IACF,UAAW,YACX,SAAU,SACZ,CACF,CACF,CACF,CACF,CACF,EACA,CACE,GAAI,CACF,WAAY,CACV,2BAA4B,CAC1B,MAAO,KACT,CACF,EACA,SAAU,CAAC,4BAA4B,CACzC,EACA,KAAM,CACJ,WAAY,CACV,gCAAiC,CAC/B,KAAM,QACR,EACA,uCAAwC,CACtC,KAAM,QACR,CACF,EACA,SAAU,CACR,kCACA,wCACF,CACF,EACA,KAAM,CACJ,WAAY,CACV,gCAAiC,GACjC,uCAAwC,EAC1C,CACF,CACF,CACF,EACA,WAAY,CACV,aAAc,CACZ,YACE,sHACF,MAAO,CACL,CACE,MAAO,MACP,YAAa,GACb,MAAO,KACT,EACA,CACE,MAAO,KACP,YAAa,GACb,MAAO,IACT,CACF,EACA,MAAO,gCACP,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,UAAW,QACX,UAAW,CACT,MACE,+LACF,UAAW,YACX,SAAU,SACZ,CACF,CACF,EACA,2BAA4B,CAC1B,YAAa,GACb,MAAO,CACL,CACE,MAAO,MACP,YAAa,GACb,MAAO,KACT,EACA,CACE,MAAO,KACP,YAAa,GACb,MAAO,IACT,CACF,EACA,MAAO,qDACP,KAAM,SACN,qBAAsB,CACpB,UAAW,SACX,UAAW,OACb,CACF,EACA,gCAAiC,CAC/B,YAAa,GACb,OAAQ,OACR,UAAW,IACX,MAAO,mDACP,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,MACb,CACF,EACA,uCAAwC,CACtC,YAAa,GACb,UAAW,IACX,MAAO,sCACP,KAAM,CAAC,SAAU,MAAM,EACvB,qBAAsB,CACpB,UAAW,UACb,CACF,EACA,eAAgB,CACd,YAAa,GACb,UAAW,IACX,MAAO,4BACP,OAAQ,QACR,KAAM,SACN,qBAAsB,CACpB,UAAW,OACb,CACF,CACF,EACA,SAAU,CACR,eACA,6BACA,gBACF,EACA,KAAM,SACN,cAAe,CACb,kBACA,6BACA,kCACA,yCACA,gBACF,CACF,CACF,CACF","names":["employeeComunicationSchema"]}
@@ -0,0 +1,2 @@
1
+ import{b as n}from"./chunk-DZYFSFZ7.js";import{b as o}from"./chunk-FI76EKUS.js";import{a as t}from"./chunk-AYDF3IFZ.js";import m from"react";function c({children:r,...i}){let{terminationBag:{back:e}}=n();return m.createElement(o,{...i,onClick:()=>{e()}},r)}t(c,"TerminationBack");export{c as a};
2
+ //# sourceMappingURL=chunk-KPSFJ6BN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flows/Termination/TerminationBack.tsx"],"sourcesContent":["import { Button } from '@/src/components/ui/button';\nimport React, { ButtonHTMLAttributes, PropsWithChildren } from 'react';\nimport { useTerminationContext } from '@/src/flows/Termination/context';\n\nexport function TerminationBack({\n children,\n ...props\n}: PropsWithChildren<ButtonHTMLAttributes<HTMLButtonElement>>) {\n const {\n terminationBag: { back },\n } = useTerminationContext();\n\n return (\n <Button\n {...props}\n onClick={() => {\n back();\n }}\n >\n {children}\n </Button>\n );\n}\n"],"mappings":"wHACA,OAAOA,MAAwD,QAGxD,SAASC,EAAgB,CAC9B,SAAAC,EACA,GAAGC,CACL,EAA+D,CAC7D,GAAM,CACJ,eAAgB,CAAE,KAAAC,CAAK,CACzB,EAAIC,EAAsB,EAE1B,OACEC,EAAA,cAACC,EAAA,CACE,GAAGJ,EACJ,QAAS,IAAM,CACbC,EAAK,CACP,GAECF,CACH,CAEJ,CAlBgBM,EAAAP,EAAA","names":["React","TerminationBack","children","props","back","useTerminationContext","React","Button","__name"]}
@@ -0,0 +1,2 @@
1
+ import{a as s}from"./chunk-SJ56GVNV.js";import{a}from"./chunk-AYDF3IFZ.js";import{Slot as x}from"@radix-ui/react-slot";import*as o from"react";import d from"dompurify";import{Controller as C,FormProvider as g,useFormContext as R,useFormState as b}from"react-hook-form";import*as c from"react";import*as u from"@radix-ui/react-label";function f({className:e,...t}){return c.createElement(u.Root,{"data-slot":"label",className:s("flex items-center gap-2 text-sm leading-none select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50",e),...t})}a(f,"Label");var M=g,p=o.createContext({}),$=a(({...e})=>o.createElement(p.Provider,{value:{name:e.name}},o.createElement(C,{...e})),"FormField"),l=a(()=>{let e=o.useContext(p),t=o.useContext(F),{getFieldState:r}=R(),n=b({name:e.name}),i=r(e.name,n);if(!e)throw new Error("useFormField should be used within <FormField>");let{id:m}=t;return{id:m,name:e.name,formItemId:`${m}-form-item`,formDescriptionId:`${m}-form-item-description`,formMessageId:`${m}-form-item-message`,...i}},"useFormField"),F=o.createContext({});function _({className:e,...t}){let r=o.useId();return o.createElement(F.Provider,{value:{id:r}},o.createElement("div",{"data-slot":"form-item",...t,className:s("grid gap-2",e)}))}a(_,"FormItem");function H({className:e,...t}){let{error:r,formItemId:n}=l();return o.createElement(f,{"data-slot":"form-label","data-error":!!r,className:s("text-base-color mb-1 data-[error=true]:text-destructive",e),htmlFor:n,...t})}a(H,"FormLabel");var P=o.forwardRef(({...e},t)=>{let{error:r,formItemId:n,formDescriptionId:i,formMessageId:m}=l();return o.createElement(x,{"data-slot":"form-control",ref:t,id:n,"aria-describedby":r?`${i} ${m}`:`${i}`,"aria-invalid":!!r,...e})});P.displayName="FormControl";var I=a(e=>{let t=new Set(e?e.toLowerCase().split(" "):[]);return t.add("noopener"),t.add("noreferrer"),Array.from(t).join(" ")},"appendSecureRelValue");d.isSupported&&d.addHook("afterSanitizeAttributes",e=>{let t=e.getAttribute("target");if(e.tagName==="A"&&(!t||t!=="_self")){e.setAttribute("target","_blank");let r=e.getAttribute("rel");e.setAttribute("rel",I(r))}});function k({className:e,children:t,...r}){let{formDescriptionId:n}=l();return o.createElement("p",{"data-slot":"form-description",id:n,className:s("text-base-color text-xs",e),...typeof t=="string"?{dangerouslySetInnerHTML:{__html:d.sanitize(t,{ADD_ATTR:["target"]})}}:{},...r},typeof t=="function"?t():null)}a(k,"FormDescription");function z({className:e,...t}){let{error:r,formMessageId:n}=l(),i=r?String(r?.message??""):t.children;return i?o.createElement("p",{"data-slot":"form-message",id:n,className:s("text-destructive text-sm",e),...t},i):null}a(z,"FormMessage");export{M as a,$ as b,_ as c,H as d,P as e,k as f,z as g};
2
+ //# sourceMappingURL=chunk-N5AQSLAU.js.map