@gusto/embedded-react-sdk 0.35.0-rc.4 → 0.37.0-rc.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 (344) hide show
  1. package/CHANGELOG.md +42 -11
  2. package/dist/UNSTABLE_Hooks.d.ts +1 -1
  3. package/dist/UNSTABLE_Hooks.js +6 -6
  4. package/dist/components/Base/Base.d.ts +8 -10
  5. package/dist/components/Base/Base.js +121 -100
  6. package/dist/components/Base/Base.js.map +1 -1
  7. package/dist/components/Base/index.d.ts +1 -1
  8. package/dist/components/Base/useBase.d.ts +3 -7
  9. package/dist/components/Base/useBase.js.map +1 -1
  10. package/dist/components/Base/useBaseSubmit.d.ts +3 -5
  11. package/dist/components/Base/useBaseSubmit.js +27 -50
  12. package/dist/components/Base/useBaseSubmit.js.map +1 -1
  13. package/dist/components/Common/SignatureForm/SignatureFormActions.js +1 -1
  14. package/dist/components/Common/SignatureForm/SignatureFormFields.js +1 -1
  15. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
  16. package/dist/components/Common/UI/DescriptionList/DescriptionList.module.scss.js +2 -2
  17. package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
  18. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  19. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +6 -5
  20. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  21. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +6 -8
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  23. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +5 -4
  24. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  25. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +6 -8
  26. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  27. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +8 -10
  28. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  29. package/dist/components/Company/BankAccount/BankAccountForm/context.js +6 -8
  30. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  31. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +6 -8
  32. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  33. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +6 -8
  34. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  35. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +11 -13
  36. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  37. package/dist/components/Company/Industry/Context.js +9 -11
  38. package/dist/components/Company/Industry/Context.js.map +1 -1
  39. package/dist/components/Company/Locations/LocationForm/Form.js +5 -4
  40. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  41. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +6 -8
  42. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  43. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +6 -8
  44. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  45. package/dist/components/Company/OnboardingOverview/context.js +6 -8
  46. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  47. package/dist/components/Company/PaySchedule/PaySchedule.js +60 -60
  48. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  49. package/dist/components/Company/PaySchedule/_parts/Edit.js +10 -9
  50. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  51. package/dist/components/Company/PaySchedule/usePaySchedule.js +8 -10
  52. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  53. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +6 -8
  54. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  55. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +6 -8
  56. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  57. package/dist/components/Contractor/Address/Form.js +7 -6
  58. package/dist/components/Contractor/Address/Form.js.map +1 -1
  59. package/dist/components/Contractor/Address/useAddress.js +8 -10
  60. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  61. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js +3 -2
  62. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js.map +1 -1
  63. package/dist/components/Contractor/Profile/ContractorProfileForm.js +15 -15
  64. package/dist/components/Contractor/Profile/useContractorProfile.js +26 -28
  65. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  66. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +13 -15
  67. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
  68. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +5 -7
  69. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
  70. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js +5 -7
  71. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js.map +1 -1
  72. package/dist/components/Employee/Deductions/IncludeDeductions/IncludeDeductions.js +3 -2
  73. package/dist/components/Employee/Deductions/IncludeDeductions/IncludeDeductions.js.map +1 -1
  74. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +6 -8
  75. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  76. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +6 -8
  77. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  78. package/dist/components/Employee/EmployeeList/useEmployeeList.js +6 -8
  79. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  80. package/dist/components/Employee/FederalTaxes/FederalTaxes.js +42 -42
  81. package/dist/components/Employee/FederalTaxes/FederalTaxes.js.map +1 -1
  82. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +6 -8
  83. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  84. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +8 -10
  85. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  86. package/dist/components/Employee/Profile/HomeAddress.js +9 -8
  87. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  88. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +15 -14
  89. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  90. package/dist/components/Employee/Profile/Profile.js +30 -29
  91. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  92. package/dist/components/Employee/Profile/useProfile.js +6 -8
  93. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  94. package/dist/components/Employee/StateTaxes/StateTaxes.js +50 -50
  95. package/dist/components/Employee/StateTaxes/StateTaxes.js.map +1 -1
  96. package/dist/components/Employee/StateTaxes/useStateTaxes.js +6 -8
  97. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  98. package/dist/components/Employee/Taxes/Taxes.js +53 -53
  99. package/dist/components/Employee/Taxes/Taxes.js.map +1 -1
  100. package/dist/components/Employee/Taxes/useTaxes.js +6 -8
  101. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  102. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.d.ts +11 -0
  103. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +123 -0
  104. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -0
  105. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +11 -0
  106. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +92 -0
  107. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -0
  108. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlow.d.ts +2 -0
  109. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlow.js +30 -0
  110. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlow.js.map +1 -0
  111. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.d.ts +23 -0
  112. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js +72 -0
  113. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js.map +1 -0
  114. package/dist/components/Employee/Terminations/TerminationFlow/index.d.ts +3 -0
  115. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.d.ts +7 -0
  116. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.js +165 -0
  117. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.js.map +1 -0
  118. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.test.d.ts +1 -0
  119. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.d.ts +9 -0
  120. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +86 -0
  121. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -0
  122. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +20 -0
  123. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +103 -0
  124. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -0
  125. package/dist/components/Employee/Terminations/TerminationsData.d.ts +6 -0
  126. package/dist/components/Employee/Terminations/index.d.ts +8 -0
  127. package/dist/components/Employee/Terminations/types.d.ts +1 -0
  128. package/dist/components/Employee/index.d.ts +7 -0
  129. package/dist/components/Employee/index.js +34 -28
  130. package/dist/components/Employee/index.js.map +1 -1
  131. package/dist/components/InformationRequests/InformationRequests.js +31 -31
  132. package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
  133. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +41 -41
  134. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
  135. package/dist/components/Payroll/Dismissal/DismissalFlow.d.ts +2 -0
  136. package/dist/components/Payroll/Dismissal/DismissalFlow.js +32 -0
  137. package/dist/components/Payroll/Dismissal/DismissalFlow.js.map +1 -0
  138. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.d.ts +16 -0
  139. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +52 -0
  140. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -0
  141. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.d.ts +6 -0
  142. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +69 -0
  143. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -0
  144. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.d.ts +9 -0
  145. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +53 -0
  146. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -0
  147. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/index.d.ts +3 -0
  148. package/dist/components/Payroll/Dismissal/dismissalStateMachine.d.ts +6 -0
  149. package/dist/components/Payroll/Dismissal/dismissalStateMachine.js +51 -0
  150. package/dist/components/Payroll/Dismissal/dismissalStateMachine.js.map +1 -0
  151. package/dist/components/Payroll/Dismissal/dismissalStateMachine.test.d.ts +1 -0
  152. package/dist/components/Payroll/Dismissal/index.d.ts +3 -0
  153. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +3 -3
  154. package/dist/components/Payroll/OffCycle/OffCycleFlow.d.ts +1 -1
  155. package/dist/components/Payroll/OffCycle/OffCycleFlow.js +19 -18
  156. package/dist/components/Payroll/OffCycle/OffCycleFlow.js.map +1 -1
  157. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +3 -0
  158. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +32 -24
  159. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  160. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +45 -45
  161. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  162. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  163. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +75 -66
  164. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  165. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.module.scss.js +8 -0
  166. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.module.scss.js.map +1 -0
  167. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +0 -1
  168. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.module.scss.js +4 -4
  169. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes.js +2 -2
  170. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes.js.map +1 -1
  171. package/dist/components/Payroll/OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation.d.ts +1 -0
  172. package/dist/components/Payroll/OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation.js +1 -0
  173. package/dist/components/Payroll/OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation.js.map +1 -1
  174. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +186 -159
  175. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  176. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -3
  177. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +71 -70
  178. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  179. package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.d.ts +3 -2
  180. package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.js +8 -8
  181. package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.js.map +1 -1
  182. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +5 -3
  183. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +76 -70
  184. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  185. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +47 -42
  186. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  187. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +4 -2
  188. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +225 -194
  189. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  190. package/dist/components/Payroll/PayrollFlow/OffCycleFlowContextual.d.ts +1 -0
  191. package/dist/components/Payroll/PayrollFlow/OffCycleFlowContextual.js +12 -0
  192. package/dist/components/Payroll/PayrollFlow/OffCycleFlowContextual.js.map +1 -0
  193. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +3 -0
  194. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  195. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +1 -0
  196. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +21 -0
  197. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +1 -0
  198. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +2 -0
  199. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +95 -64
  200. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  201. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +53 -47
  202. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  203. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +8 -8
  204. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  205. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +25 -23
  206. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  207. package/dist/components/Payroll/PayrollList/PayrollList.js +40 -32
  208. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  209. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -1
  210. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +110 -93
  211. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  212. package/dist/components/Payroll/PayrollList/PayrollListPresentation.module.scss.js +12 -8
  213. package/dist/components/Payroll/PayrollList/PayrollListPresentation.module.scss.js.map +1 -1
  214. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +3 -2
  215. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  216. package/dist/components/Payroll/Transition/TransitionFlow.d.ts +2 -0
  217. package/dist/components/Payroll/Transition/TransitionFlow.js +38 -0
  218. package/dist/components/Payroll/Transition/TransitionFlow.js.map +1 -0
  219. package/dist/components/Payroll/Transition/TransitionFlowComponents.d.ts +19 -0
  220. package/dist/components/Payroll/Transition/TransitionFlowComponents.js +54 -0
  221. package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -0
  222. package/dist/components/Payroll/Transition/index.d.ts +3 -0
  223. package/dist/components/Payroll/Transition/transitionStateMachine.d.ts +6 -0
  224. package/dist/components/Payroll/Transition/transitionStateMachine.js +58 -0
  225. package/dist/components/Payroll/Transition/transitionStateMachine.js.map +1 -0
  226. package/dist/components/Payroll/Transition/transitionStateMachine.test.d.ts +1 -0
  227. package/dist/components/Payroll/TransitionCreation/TransitionCreation.d.ts +2 -0
  228. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +92 -0
  229. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -0
  230. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +2 -0
  231. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +111 -0
  232. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +1 -0
  233. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js +8 -0
  234. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js.map +1 -0
  235. package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +28 -0
  236. package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js +21 -0
  237. package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +1 -0
  238. package/dist/components/Payroll/TransitionCreation/index.d.ts +3 -0
  239. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +8 -0
  240. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +83 -0
  241. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -0
  242. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +16 -0
  243. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +100 -0
  244. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -0
  245. package/dist/components/Payroll/TransitionPayrollAlert/index.d.ts +2 -0
  246. package/dist/components/Payroll/helpers.d.ts +2 -1
  247. package/dist/components/Payroll/helpers.js +98 -87
  248. package/dist/components/Payroll/helpers.js.map +1 -1
  249. package/dist/components/Payroll/index.d.ts +6 -0
  250. package/dist/components/Payroll/index.js +32 -26
  251. package/dist/components/Payroll/index.js.map +1 -1
  252. package/dist/components/Payroll/payrollTypes.d.ts +21 -0
  253. package/dist/components/Payroll/payrollTypes.js +27 -0
  254. package/dist/components/Payroll/payrollTypes.js.map +1 -0
  255. package/dist/components/Payroll/usePreparedPayrollData.js +5 -7
  256. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  257. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.d.ts +8 -0
  258. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.js +13 -0
  259. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.js.map +1 -0
  260. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.d.ts +10 -0
  261. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.d.ts +18 -0
  262. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.d.ts +3 -0
  263. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.test.d.ts +1 -0
  264. package/dist/components/UNSTABLE_Hooks/form/index.d.ts +9 -0
  265. package/dist/components/UNSTABLE_Hooks/form/types.d.ts +15 -0
  266. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.d.ts +1 -0
  267. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.js +15 -0
  268. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.js.map +1 -0
  269. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.d.ts +4 -0
  270. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.js +9 -0
  271. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.js.map +1 -0
  272. package/dist/components/UNSTABLE_Hooks/form/withOptions.d.ts +5 -0
  273. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/index.d.ts +3 -0
  274. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.d.ts +16 -0
  275. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js +7 -0
  276. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js.map +1 -0
  277. package/dist/components/UNSTABLE_Hooks/index.d.ts +5 -0
  278. package/dist/components/UNSTABLE_Hooks/types.d.ts +46 -0
  279. package/dist/contexts/ApiProvider/ApiProvider.js +11 -11
  280. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  281. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +43 -47
  282. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  283. package/dist/contexts/ObservabilityProvider/index.d.ts +1 -1
  284. package/dist/contexts/ObservabilityProvider/sanitization.d.ts +0 -14
  285. package/dist/contexts/ObservabilityProvider/sanitization.js +51 -51
  286. package/dist/contexts/ObservabilityProvider/sanitization.js.map +1 -1
  287. package/dist/contexts/ObservabilityProvider/useSanitizedObservability.d.ts +0 -3
  288. package/dist/contexts/ObservabilityProvider/useSanitizedObservability.js.map +1 -1
  289. package/dist/i18n/I18n.js +11 -11
  290. package/dist/i18n/I18n.js.map +1 -1
  291. package/dist/i18n/en/Employee.Terminations.TerminateEmployee.json.js +18 -0
  292. package/dist/i18n/en/Employee.Terminations.TerminateEmployee.json.js.map +1 -0
  293. package/dist/i18n/en/Employee.Terminations.TerminationFlow.json.js +12 -0
  294. package/dist/i18n/en/Employee.Terminations.TerminationFlow.json.js.map +1 -0
  295. package/dist/i18n/en/Employee.Terminations.TerminationSummary.json.js +20 -0
  296. package/dist/i18n/en/Employee.Terminations.TerminationSummary.json.js.map +1 -0
  297. package/dist/i18n/en/Payroll.Dismissal.json.js +22 -0
  298. package/dist/i18n/en/Payroll.Dismissal.json.js.map +1 -0
  299. package/dist/i18n/en/Payroll.OffCycleCreation.json.js +15 -11
  300. package/dist/i18n/en/Payroll.OffCycleCreation.json.js.map +1 -1
  301. package/dist/i18n/en/Payroll.OffCyclePayPeriodDateForm.json.js +1 -1
  302. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +20 -18
  303. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  304. package/dist/i18n/en/Payroll.PayrollList.json.js +20 -18
  305. package/dist/i18n/en/Payroll.PayrollList.json.js.map +1 -1
  306. package/dist/i18n/en/Payroll.Transition.json.js +8 -0
  307. package/dist/i18n/en/Payroll.Transition.json.js.map +1 -0
  308. package/dist/i18n/en/Payroll.TransitionCreation.json.js +26 -0
  309. package/dist/i18n/en/Payroll.TransitionCreation.json.js.map +1 -0
  310. package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +18 -0
  311. package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js.map +1 -0
  312. package/dist/i18n/en/common.json.d.ts +2 -1
  313. package/dist/i18n/en/common.json.js +9 -9
  314. package/dist/index.d.ts +3 -2
  315. package/dist/index.js +14 -13
  316. package/dist/shared/constants.d.ts +32 -0
  317. package/dist/shared/constants.js +83 -65
  318. package/dist/shared/constants.js.map +1 -1
  319. package/dist/style.css +1 -1
  320. package/dist/types/i18next.d.ts +163 -1
  321. package/dist/types/observability.d.ts +31 -65
  322. package/dist/types/sdkError.d.ts +91 -0
  323. package/dist/types/sdkError.js +95 -0
  324. package/dist/types/sdkError.js.map +1 -0
  325. package/dist/types/sdkError.test.d.ts +1 -0
  326. package/docs/reference/endpoint-inventory.json +120 -14
  327. package/package.json +13 -13
  328. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfiguration.d.ts +0 -6
  329. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfiguration.js +0 -70
  330. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfiguration.js.map +0 -1
  331. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationContext.d.ts +0 -7
  332. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationContext.js +0 -6
  333. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationContext.js.map +0 -1
  334. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationProvider.d.ts +0 -9
  335. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationProvider.js +0 -40
  336. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationProvider.js.map +0 -1
  337. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/index.d.ts +0 -5
  338. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/usePayrollConfiguration.d.ts +0 -2
  339. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/usePayrollConfiguration.js +0 -12
  340. package/dist/components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/usePayrollConfiguration.js.map +0 -1
  341. package/dist/components/Payroll/UNSTABLE_PayrollHooks/index.d.ts +0 -2
  342. package/dist/contexts/ObservabilityProvider/observabilityUtils.d.ts +0 -5
  343. package/dist/contexts/ObservabilityProvider/observabilityUtils.js +0 -45
  344. package/dist/contexts/ObservabilityProvider/observabilityUtils.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,11 +1,34 @@
1
1
  # Changelog
2
2
 
3
- ## 0.35.0
3
+ ## 0.37.0
4
+
5
+ ### Features & Enhancements
6
+
7
+ - Add termination, dismissal, and transition payroll flows
8
+ - Add UNSTABLE_Hooks with form hook infrastructure
9
+ - Introduce unified SDKError type and ObservabilityError extension
10
+ - Add section dividers and headings to off-cycle and transition creation
11
+
12
+ ### Fixes
13
+
14
+ - Fix off-cycle, dismissal, and transition payroll bugs
15
+ - Fix PayrollConfiguration calculate/polling flow
16
+ - Fix hourly inputs visibility and payroll cache invalidation
17
+ - Include off-cycle and external payrolls in list and history views
18
+
19
+ ### Chores & Maintenance
20
+
21
+ - Add E2E tests for dismissal and transition payroll flows
22
+ - Fix minimatch ReDoS vulnerability (CVE-2026-27903)
23
+ - Dependency bumps (storybook 10.3.1, i18next, react-i18next, msw, and more)
24
+
25
+ ## 0.36.0
4
26
 
5
27
  ### Features & Enhancements
6
28
 
7
29
  - Integrate tax withholding config into off-cycle payroll creation
8
30
  - Add gross up modal to PayrollConfiguration kebab menu
31
+ - Add observability hooks with PII protection
9
32
 
10
33
  ### Fixes
11
34
 
@@ -14,9 +37,12 @@
14
37
  - Updated to use correct translation keys
15
38
  - Handle date field serialization in state taxes form
16
39
  - Preset payment date based on company payment speed
40
+ - Revert react-aria upgrade and block in dependabot
17
41
 
18
42
  ### Chores & Maintenance
19
43
 
44
+ - Update embedded api to 0.12.4
45
+ - Convert Cursor commands to Claude Code skills
20
46
  - Add comprehensive tests for rem conversion utilities
21
47
  - Improve Cursor configuration for team productivity
22
48
  - Upgrade vitest to v4, coverage-v8 to v4, and plugin-react-swc to v4
@@ -25,17 +51,22 @@
25
51
  - Bump dompurify from 3.3.2 to 3.3.3
26
52
  - Bump react-aria from 3.45.0 to 3.47.0
27
53
  - Bump sass-embedded from 1.97.3 to 1.98.0
28
- - Bump typescript-eslint from 8.56.1 to 8.57.0
29
- - Bump eslint-plugin-storybook from 10.2.15 to 10.2.17
30
- - Bump @storybook/react-vite from 10.2.15 to 10.2.17
31
- - Bump @storybook/addon-docs from 10.2.14 to 10.2.17
32
- - Bump @storybook/addon-a11y from 10.2.16 to 10.2.17
33
- - Bump @storybook/addon-onboarding from 10.2.15 to 10.2.17
34
- - Bump storybook from 10.2.16 to 10.2.17
35
- - Bump lint-staged from 16.3.2 to 16.3.3
54
+ - Bump typescript-eslint from 8.56.1 to 8.57.1
55
+ - Bump eslint-plugin-storybook from 10.2.15 to 10.2.19
56
+ - Bump @storybook/react-vite from 10.2.15 to 10.2.19
57
+ - Bump @storybook/addon-docs from 10.2.14 to 10.2.19
58
+ - Bump @storybook/addon-a11y from 10.2.16 to 10.2.19
59
+ - Bump @storybook/addon-onboarding from 10.2.15 to 10.2.19
60
+ - Bump storybook from 10.2.16 to 10.2.19
61
+ - Bump lint-staged from 16.3.2 to 16.4.0
62
+ - Bump msw from 2.12.10 to 2.12.12
36
63
  - Bump eslint from 9.39.3 to 9.39.4
37
- - Bump @commitlint/cli from 20.4.3 to 20.4.4
38
- - Bump @commitlint/config-conventional from 20.4.3 to 20.4.4
64
+ - Bump @commitlint/cli from 20.4.3 to 20.5.0
65
+ - Bump @commitlint/config-conventional from 20.4.3 to 20.5.0
66
+
67
+ ## 0.35.0 (unpublished)
68
+
69
+ > This version was unpublished from NPM due to a critical bug caused by a react-aria upgrade that required a rollback. All changes are included in 0.36.0.
39
70
 
40
71
  ## 0.34.0
41
72
 
@@ -1 +1 @@
1
- export { PayrollConfiguration, PayrollConfigurationProvider, usePayrollConfiguration, type PayrollConfigurationContextValue, } from './components/Payroll/UNSTABLE_PayrollHooks';
1
+ export { useCompensationForm, type UseCompensationFormProps, type UseCompensationFormResult, type UseCompensationFormReady, type HookLoadingResult, type HookErrors, type FieldMetadata, type FieldMetadataWithOptions, useFieldsMetadata, useFieldErrorMessage, } from './components/UNSTABLE_Hooks';
@@ -1,9 +1,9 @@
1
- import { PayrollConfiguration as i } from "./components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfiguration.js";
2
- import { PayrollConfigurationProvider as f } from "./components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/PayrollConfigurationProvider.js";
3
- import { usePayrollConfiguration as n } from "./components/Payroll/UNSTABLE_PayrollHooks/PayrollConfiguration/usePayrollConfiguration.js";
1
+ import { useCompensationForm as r } from "./components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js";
2
+ import { useFieldErrorMessage as t } from "./components/UNSTABLE_Hooks/form/useFieldErrorMessage.js";
3
+ import { useFieldsMetadata as m } from "./components/UNSTABLE_Hooks/form/useFieldsMetadata.js";
4
4
  export {
5
- i as PayrollConfiguration,
6
- f as PayrollConfigurationProvider,
7
- n as usePayrollConfiguration
5
+ r as useCompensationForm,
6
+ t as useFieldErrorMessage,
7
+ m as useFieldsMetadata
8
8
  };
9
9
  //# sourceMappingURL=UNSTABLE_Hooks.js.map
@@ -1,10 +1,10 @@
1
1
  import { ReactNode, JSX, ErrorInfo } from 'react';
2
2
  import { FallbackProps } from 'react-error-boundary';
3
- import { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject';
4
- import { KnownErrors, OnEventType } from './useBase';
3
+ import { OnEventType } from './useBase';
5
4
  import { EventType } from '../../shared/constants';
6
5
  import { ResourceDictionary, Resources } from '../../types/Helpers';
7
6
  import { LoadingIndicatorContextProps } from '../../contexts/LoadingIndicatorProvider/useLoadingIndicator';
7
+ import { SDKError } from '../../types/sdkError';
8
8
  export interface CommonComponentInterface<TResourceKey extends keyof Resources = keyof Resources> {
9
9
  children?: ReactNode;
10
10
  className?: string;
@@ -13,25 +13,23 @@ export interface CommonComponentInterface<TResourceKey extends keyof Resources =
13
13
  }
14
14
  export interface BaseComponentInterface<TResourceKey extends keyof Resources = keyof Resources> extends CommonComponentInterface<TResourceKey> {
15
15
  FallbackComponent?: BaseBoundariesProps['FallbackComponent'];
16
- LoaderComponent?: BaseBoundariesProps['LoaderComponent'];
16
+ LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator'];
17
17
  onEvent: OnEventType<EventType, unknown>;
18
18
  }
19
19
  interface InternalBaseComponentProps {
20
20
  componentName?: string;
21
21
  }
22
22
  export declare const BaseComponent: <TResourceKey extends keyof Resources = keyof Resources>({ children, FallbackComponent, LoaderComponent: LoadingIndicatorFromProps, onEvent, componentName, }: BaseComponentInterface<TResourceKey> & InternalBaseComponentProps) => import("react/jsx-runtime").JSX.Element;
23
- interface BaseLayoutProps {
23
+ export interface BaseLayoutProps {
24
24
  children?: ReactNode;
25
- error: KnownErrors | null;
26
- fieldErrors: Array<EntityErrorObject> | null;
25
+ error?: SDKError | SDKError[] | null;
26
+ isLoading?: boolean;
27
27
  }
28
- export declare const BaseLayout: ({ children, error, fieldErrors }: BaseLayoutProps) => import("react/jsx-runtime").JSX.Element;
28
+ export declare const BaseLayout: ({ children, error, isLoading }: BaseLayoutProps) => import("react/jsx-runtime").JSX.Element;
29
29
  export interface BaseBoundariesProps {
30
30
  children?: ReactNode;
31
31
  FallbackComponent?: (props: FallbackProps) => JSX.Element;
32
- LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator'];
33
32
  onErrorBoundaryError?: (error: unknown, info: ErrorInfo) => void;
34
- componentName?: string;
35
33
  }
36
- export declare const BaseBoundaries: ({ children, FallbackComponent, LoaderComponent: LoadingIndicatorFromProps, onErrorBoundaryError, componentName, }: BaseBoundariesProps) => import("react/jsx-runtime").JSX.Element;
34
+ export declare const BaseBoundaries: ({ children, FallbackComponent, onErrorBoundaryError, }: BaseBoundariesProps) => import("react/jsx-runtime").JSX.Element;
37
35
  export {};
@@ -1,126 +1,147 @@
1
- import { jsx as s, jsxs as l } from "react/jsx-runtime";
2
- import { Suspense as x, useRef as u, useEffect as f } from "react";
1
+ import { jsx as n, jsxs as m } from "react/jsx-runtime";
2
+ import { Suspense as v, useRef as c, useEffect as p } from "react";
3
3
  import { ErrorBoundary as B } from "react-error-boundary";
4
- import { useTranslation as k } from "react-i18next";
5
- import { GustoEmbeddedError as v } from "@gusto/embedded-api/models/errors/gustoembeddederror";
6
- import { SDKValidationError as I } from "@gusto/embedded-api/models/errors/sdkvalidationerror";
7
- import { QueryErrorResetBoundary as R } from "@tanstack/react-query";
8
- import { FadeIn as S } from "../Common/FadeIn/FadeIn.js";
9
- import { BaseContext as w } from "./useBase.js";
10
- import { useBaseSubmit as D } from "./useBaseSubmit.js";
11
- import { componentEvents as F } from "../../shared/constants.js";
4
+ import { useTranslation as f } from "react-i18next";
5
+ import { QueryErrorResetBoundary as k } from "@tanstack/react-query";
6
+ import { FadeIn as R } from "../Common/FadeIn/FadeIn.js";
7
+ import { BaseContext as S } from "./useBase.js";
8
+ import { useBaseSubmit as x } from "./useBaseSubmit.js";
9
+ import { componentEvents as I } from "../../shared/constants.js";
12
10
  import "classnames";
13
- import { InternalError as E } from "../Common/InternalError/InternalError.js";
14
- import { useComponentContext as T } from "../../contexts/ComponentAdapter/useComponentContext.js";
15
- import { useLoadingIndicator as L } from "../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
16
- import { useObservability as g } from "../../contexts/ObservabilityProvider/useObservability.js";
17
- import { renderErrorList as j } from "../../helpers/apiErrorToList.js";
18
- const rr = ({
19
- children: i,
20
- FallbackComponent: r = E,
21
- LoaderComponent: n,
22
- onEvent: e,
23
- componentName: o
11
+ import { InternalError as g } from "../Common/InternalError/InternalError.js";
12
+ import { useComponentContext as E } from "../../contexts/ComponentAdapter/useComponentContext.js";
13
+ import { useLoadingIndicator as h } from "../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
14
+ import { useObservability as D } from "../../contexts/ObservabilityProvider/useObservability.js";
15
+ import { normalizeToSDKError as T } from "../../types/sdkError.js";
16
+ const $ = ({
17
+ children: r,
18
+ FallbackComponent: t = g,
19
+ LoaderComponent: s,
20
+ onEvent: o,
21
+ componentName: e
24
22
  }) => {
25
- const { error: t, fieldErrors: a, baseSubmitHandler: m, setError: d } = D(o), { observability: b } = g(), { LoadingIndicator: h } = L(), p = n ?? h, y = (c, C) => {
26
- e(F.ERROR, c), b?.onError?.({
27
- type: "boundary_error",
28
- message: c instanceof Error ? c.message : "Unknown error",
29
- stack: c instanceof Error ? c.stack : void 0,
30
- context: {
31
- componentName: o,
32
- componentStack: C.componentStack ?? void 0
33
- },
34
- originalError: c,
35
- timestamp: Date.now()
23
+ const { error: i, baseSubmitHandler: a, setError: y } = x(e), { observability: d } = D(), { LoadingIndicator: w } = h(), l = s ?? w, L = (u, C) => {
24
+ o(I.ERROR, u);
25
+ const b = T(u);
26
+ d?.onError?.({
27
+ ...b,
28
+ timestamp: Date.now(),
29
+ componentName: e,
30
+ componentStack: C.componentStack ?? void 0
36
31
  });
37
32
  };
38
- return /* @__PURE__ */ s(
39
- w.Provider,
33
+ return /* @__PURE__ */ n(
34
+ S.Provider,
40
35
  {
41
36
  value: {
42
- error: t,
43
- fieldErrors: a,
44
- setError: d,
45
- onEvent: e,
46
- baseSubmitHandler: m,
47
- LoadingIndicator: p,
48
- componentName: o
37
+ error: i,
38
+ setError: y,
39
+ onEvent: o,
40
+ baseSubmitHandler: a,
41
+ LoadingIndicator: l,
42
+ componentName: e
49
43
  },
50
- children: /* @__PURE__ */ s(
44
+ children: /* @__PURE__ */ n(
51
45
  U,
52
46
  {
53
- FallbackComponent: r,
54
- LoaderComponent: p,
55
- onErrorBoundaryError: y,
56
- componentName: o,
57
- children: /* @__PURE__ */ s(M, { error: t, fieldErrors: a, children: i })
47
+ FallbackComponent: t,
48
+ onErrorBoundaryError: L,
49
+ children: /* @__PURE__ */ n(
50
+ v,
51
+ {
52
+ fallback: /* @__PURE__ */ n(
53
+ M,
54
+ {
55
+ LoaderComponent: l,
56
+ observability: d,
57
+ componentName: e
58
+ }
59
+ ),
60
+ children: /* @__PURE__ */ n(j, { error: i, children: r })
61
+ }
62
+ )
58
63
  }
59
64
  )
60
65
  }
61
66
  );
62
- }, M = ({ children: i, error: r, fieldErrors: n }) => {
63
- const e = T(), { t: o } = k(), t = !!n?.length;
64
- return /* @__PURE__ */ l(S, { children: [
65
- (r || n) && /* @__PURE__ */ l(e.Alert, { label: o("status.errorEncountered"), status: "error", children: [
66
- t && /* @__PURE__ */ s(e.UnorderedList, { items: j(n) }),
67
- !t && r instanceof v && /* @__PURE__ */ s(e.Text, { children: o("errors.unknownError") }),
68
- !t && r instanceof I && /* @__PURE__ */ s(e.Text, { as: "pre", children: r.pretty() })
69
- ] }),
70
- i
67
+ };
68
+ function A({ error: r }) {
69
+ const t = E(), { t: s } = f(), o = r.fieldErrors.length > 0;
70
+ return /* @__PURE__ */ m(t.Alert, { label: s("status.errorEncountered"), status: "error", children: [
71
+ o && /* @__PURE__ */ n(
72
+ t.UnorderedList,
73
+ {
74
+ items: r.fieldErrors.filter((e) => e.message).map((e) => /* @__PURE__ */ n("span", { children: e.message }, e.field))
75
+ }
76
+ ),
77
+ !o && r.category === "validation_error" && /* @__PURE__ */ n(t.Text, { as: "pre", children: r.raw && typeof r.raw == "object" && "pretty" in r.raw && typeof r.raw.pretty == "function" ? r.raw.pretty() : r.message }),
78
+ !o && r.category !== "validation_error" && /* @__PURE__ */ n(t.Text, { children: r.message || s("errors.unknownError") })
79
+ ] });
80
+ }
81
+ function F({ errors: r }) {
82
+ const t = E(), { t: s } = f();
83
+ return /* @__PURE__ */ n(t.Alert, { label: s("status.multipleErrorsEncountered"), status: "error", children: /* @__PURE__ */ n(
84
+ t.UnorderedList,
85
+ {
86
+ items: r.filter((o) => o.message || o.fieldErrors.length > 0).map((o, e) => {
87
+ const i = o.fieldErrors.filter((a) => a.message);
88
+ return i.length === 0 ? /* @__PURE__ */ n("span", { children: o.message || s("errors.unknownError") }, e) : /* @__PURE__ */ m("span", { children: [
89
+ o.message || s("errors.unknownError"),
90
+ /* @__PURE__ */ n(
91
+ t.UnorderedList,
92
+ {
93
+ items: i.map((a) => /* @__PURE__ */ n("span", { children: a.message }, a.field))
94
+ }
95
+ )
96
+ ] }, e);
97
+ })
98
+ }
99
+ ) });
100
+ }
101
+ const j = ({ children: r, error: t, isLoading: s }) => {
102
+ const { LoadingIndicator: o } = h(), e = Array.isArray(t) ? t : t ? [t] : [], i = e.length > 0;
103
+ if (s && !i)
104
+ return /* @__PURE__ */ n(o, {});
105
+ const [a] = e;
106
+ return /* @__PURE__ */ m(R, { children: [
107
+ e.length > 1 && /* @__PURE__ */ n(F, { errors: e }),
108
+ e.length === 1 && a && /* @__PURE__ */ n(A, { error: a }),
109
+ r
71
110
  ] });
72
- }, O = ({
73
- LoaderComponent: i,
74
- observability: r,
75
- componentName: n
111
+ }, M = ({
112
+ LoaderComponent: r,
113
+ observability: t,
114
+ componentName: s
76
115
  }) => {
77
- const e = u(Date.now()), o = u(r), t = u(n);
78
- return f(() => {
79
- o.current = r, t.current = n;
80
- }, [r, n]), f(() => () => {
81
- const a = Date.now() - e.current;
82
- o.current?.onMetric?.({
116
+ const o = c(Date.now()), e = c(t), i = c(s);
117
+ return p(() => {
118
+ e.current = t, i.current = s;
119
+ }, [t, s]), p(() => () => {
120
+ const a = Date.now() - o.current;
121
+ e.current?.onMetric?.({
83
122
  name: "sdk.component.loading_duration",
84
123
  value: a,
85
124
  unit: "ms",
86
- tags: t.current ? { component: t.current } : void 0,
125
+ tags: i.current ? { component: i.current } : void 0,
87
126
  timestamp: Date.now()
88
127
  });
89
- }, []), /* @__PURE__ */ s(i, {});
128
+ }, []), /* @__PURE__ */ n(r, {});
90
129
  }, U = ({
91
- children: i,
92
- FallbackComponent: r = E,
93
- LoaderComponent: n,
94
- onErrorBoundaryError: e,
95
- componentName: o
96
- }) => {
97
- const { LoadingIndicator: t } = L(), a = n ?? t, { observability: m } = g();
98
- return /* @__PURE__ */ s(R, { children: ({ reset: d }) => /* @__PURE__ */ s(
99
- B,
100
- {
101
- FallbackComponent: r,
102
- onReset: d,
103
- onError: e,
104
- children: /* @__PURE__ */ s(
105
- x,
106
- {
107
- fallback: /* @__PURE__ */ s(
108
- O,
109
- {
110
- LoaderComponent: a,
111
- observability: m,
112
- componentName: o
113
- }
114
- ),
115
- children: i
116
- }
117
- )
118
- }
119
- ) });
120
- };
130
+ children: r,
131
+ FallbackComponent: t = g,
132
+ onErrorBoundaryError: s
133
+ }) => /* @__PURE__ */ n(k, { children: ({ reset: o }) => /* @__PURE__ */ n(
134
+ B,
135
+ {
136
+ FallbackComponent: t,
137
+ onReset: o,
138
+ onError: s,
139
+ children: r
140
+ }
141
+ ) });
121
142
  export {
122
143
  U as BaseBoundaries,
123
- rr as BaseComponent,
124
- M as BaseLayout
144
+ $ as BaseComponent,
145
+ j as BaseLayout
125
146
  };
126
147
  //# sourceMappingURL=Base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Base.js","sources":["../../../src/components/Base/Base.tsx"],"sourcesContent":["import type { ReactNode, JSX, ErrorInfo } from 'react'\nimport { Suspense, useEffect, useRef } from 'react'\nimport type { FallbackProps } from 'react-error-boundary'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { useTranslation } from 'react-i18next'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { QueryErrorResetBoundary } from '@tanstack/react-query'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { FadeIn } from '../Common/FadeIn/FadeIn'\nimport { BaseContext, type KnownErrors, type OnEventType } from './useBase'\nimport { useBaseSubmit } from './useBaseSubmit'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport { InternalError } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { ResourceDictionary, Resources } from '@/types/Helpers'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport { useObservability } from '@/contexts/ObservabilityProvider/useObservability'\nimport { renderErrorList } from '@/helpers/apiErrorToList'\n\nexport interface CommonComponentInterface<TResourceKey extends keyof Resources = keyof Resources> {\n children?: ReactNode\n className?: string\n defaultValues?: unknown\n dictionary?: ResourceDictionary<TResourceKey>\n}\n\n// Base component wrapper with error and suspense handling\nexport interface BaseComponentInterface<\n TResourceKey extends keyof Resources = keyof Resources,\n> extends CommonComponentInterface<TResourceKey> {\n FallbackComponent?: BaseBoundariesProps['FallbackComponent']\n LoaderComponent?: BaseBoundariesProps['LoaderComponent']\n onEvent: OnEventType<EventType, unknown>\n}\n\n// Internal prop for SDK components to set their component name\ninterface InternalBaseComponentProps {\n componentName?: string\n}\n\nexport const BaseComponent = <TResourceKey extends keyof Resources = keyof Resources>({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onEvent,\n componentName,\n}: BaseComponentInterface<TResourceKey> & InternalBaseComponentProps) => {\n const { error, fieldErrors, baseSubmitHandler, setError } = useBaseSubmit(componentName)\n const { observability } = useObservability()\n\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n\n const onErrorBoundaryError = (error: unknown, errorInfo: ErrorInfo) => {\n onEvent(componentEvents.ERROR, error)\n\n observability?.onError?.({\n type: 'boundary_error',\n message: error instanceof Error ? error.message : 'Unknown error',\n stack: error instanceof Error ? error.stack : undefined,\n context: {\n componentName,\n componentStack: errorInfo.componentStack ?? undefined,\n },\n originalError: error,\n timestamp: Date.now(),\n })\n }\n\n return (\n <BaseContext.Provider\n value={{\n error,\n fieldErrors,\n setError,\n onEvent,\n baseSubmitHandler,\n LoadingIndicator: LoaderComponent,\n componentName,\n }}\n >\n <BaseBoundaries\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n onErrorBoundaryError={onErrorBoundaryError}\n componentName={componentName}\n >\n <BaseLayout error={error} fieldErrors={fieldErrors}>\n {children}\n </BaseLayout>\n </BaseBoundaries>\n </BaseContext.Provider>\n )\n}\n\ninterface BaseLayoutProps {\n children?: ReactNode\n error: KnownErrors | null\n fieldErrors: Array<EntityErrorObject> | null\n}\n\nexport const BaseLayout = ({ children, error, fieldErrors }: BaseLayoutProps) => {\n const Components = useComponentContext()\n const { t } = useTranslation()\n const hasDisplayableFieldErrors = Boolean(fieldErrors?.length)\n\n return (\n <FadeIn>\n {(error || fieldErrors) && (\n <Components.Alert label={t('status.errorEncountered')} status=\"error\">\n {hasDisplayableFieldErrors && (\n <Components.UnorderedList items={renderErrorList(fieldErrors!)} />\n )}\n {!hasDisplayableFieldErrors && error instanceof GustoEmbeddedError && (\n <Components.Text>{t('errors.unknownError')}</Components.Text>\n )}\n {!hasDisplayableFieldErrors && error instanceof SDKValidationError && (\n <Components.Text as=\"pre\">{error.pretty()}</Components.Text>\n )}\n </Components.Alert>\n )}\n {children}\n </FadeIn>\n )\n}\n\ninterface LoaderWithMetricsProps {\n LoaderComponent: LoadingIndicatorContextProps['LoadingIndicator']\n observability: ReturnType<typeof useObservability>['observability']\n componentName?: string\n}\n\nconst LoaderWithMetrics = ({\n LoaderComponent,\n observability,\n componentName,\n}: LoaderWithMetricsProps) => {\n const loadingStartTime = useRef(Date.now())\n const observabilityRef = useRef(observability)\n const componentNameRef = useRef(componentName)\n\n useEffect(() => {\n observabilityRef.current = observability\n componentNameRef.current = componentName\n }, [observability, componentName])\n\n useEffect(() => {\n return () => {\n const duration = Date.now() - loadingStartTime.current\n observabilityRef.current?.onMetric?.({\n name: 'sdk.component.loading_duration',\n value: duration,\n unit: 'ms',\n tags: componentNameRef.current ? { component: componentNameRef.current } : undefined,\n timestamp: Date.now(),\n })\n }\n }, [])\n\n return <LoaderComponent />\n}\n\nexport interface BaseBoundariesProps {\n children?: ReactNode\n FallbackComponent?: (props: FallbackProps) => JSX.Element\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n onErrorBoundaryError?: (error: unknown, info: ErrorInfo) => void\n componentName?: string\n}\n\nexport const BaseBoundaries = ({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onErrorBoundaryError,\n componentName,\n}: BaseBoundariesProps) => {\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n const { observability } = useObservability()\n\n return (\n <QueryErrorResetBoundary>\n {({ reset: resetQueries }) => (\n <ErrorBoundary\n FallbackComponent={FallbackComponent}\n onReset={resetQueries}\n onError={onErrorBoundaryError}\n >\n <Suspense\n fallback={\n <LoaderWithMetrics\n LoaderComponent={LoaderComponent}\n observability={observability}\n componentName={componentName}\n />\n }\n >\n {children}\n </Suspense>\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n )\n}\n"],"names":["BaseComponent","children","FallbackComponent","InternalError","LoadingIndicatorFromProps","onEvent","componentName","error","fieldErrors","baseSubmitHandler","setError","useBaseSubmit","observability","useObservability","LoadingIndicatorFromContext","useLoadingIndicator","LoaderComponent","onErrorBoundaryError","errorInfo","componentEvents","jsx","BaseContext","BaseBoundaries","BaseLayout","Components","useComponentContext","t","useTranslation","hasDisplayableFieldErrors","FadeIn","jsxs","renderErrorList","GustoEmbeddedError","SDKValidationError","LoaderWithMetrics","loadingStartTime","useRef","observabilityRef","componentNameRef","useEffect","duration","QueryErrorResetBoundary","resetQueries","ErrorBoundary","Suspense"],"mappings":"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"}
1
+ {"version":3,"file":"Base.js","sources":["../../../src/components/Base/Base.tsx"],"sourcesContent":["import type { ReactNode, JSX, ErrorInfo } from 'react'\nimport { Suspense, useEffect, useRef } from 'react'\nimport type { FallbackProps } from 'react-error-boundary'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { useTranslation } from 'react-i18next'\nimport { QueryErrorResetBoundary } from '@tanstack/react-query'\nimport { FadeIn } from '../Common/FadeIn/FadeIn'\nimport { BaseContext, type OnEventType } from './useBase'\nimport { useBaseSubmit } from './useBaseSubmit'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport { InternalError } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { ResourceDictionary, Resources } from '@/types/Helpers'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport { useObservability } from '@/contexts/ObservabilityProvider/useObservability'\nimport { normalizeToSDKError, type SDKError } from '@/types/sdkError'\n\nexport interface CommonComponentInterface<TResourceKey extends keyof Resources = keyof Resources> {\n children?: ReactNode\n className?: string\n defaultValues?: unknown\n dictionary?: ResourceDictionary<TResourceKey>\n}\n\nexport interface BaseComponentInterface<\n TResourceKey extends keyof Resources = keyof Resources,\n> extends CommonComponentInterface<TResourceKey> {\n FallbackComponent?: BaseBoundariesProps['FallbackComponent']\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n onEvent: OnEventType<EventType, unknown>\n}\n\ninterface InternalBaseComponentProps {\n componentName?: string\n}\n\nexport const BaseComponent = <TResourceKey extends keyof Resources = keyof Resources>({\n children,\n FallbackComponent = InternalError,\n LoaderComponent: LoadingIndicatorFromProps,\n onEvent,\n componentName,\n}: BaseComponentInterface<TResourceKey> & InternalBaseComponentProps) => {\n const { error, baseSubmitHandler, setError } = useBaseSubmit(componentName)\n const { observability } = useObservability()\n\n const { LoadingIndicator: LoadingIndicatorFromContext } = useLoadingIndicator()\n const LoaderComponent = LoadingIndicatorFromProps ?? LoadingIndicatorFromContext\n\n const onErrorBoundaryError = (boundaryError: unknown, errorInfo: ErrorInfo) => {\n onEvent(componentEvents.ERROR, boundaryError)\n\n const sdkError = normalizeToSDKError(boundaryError)\n\n observability?.onError?.({\n ...sdkError,\n timestamp: Date.now(),\n componentName,\n componentStack: errorInfo.componentStack ?? undefined,\n })\n }\n\n return (\n <BaseContext.Provider\n value={{\n error,\n setError,\n onEvent,\n baseSubmitHandler,\n LoadingIndicator: LoaderComponent,\n componentName,\n }}\n >\n <BaseBoundaries\n FallbackComponent={FallbackComponent}\n onErrorBoundaryError={onErrorBoundaryError}\n >\n <Suspense\n fallback={\n <LoaderWithMetrics\n LoaderComponent={LoaderComponent}\n observability={observability}\n componentName={componentName}\n />\n }\n >\n <BaseLayout error={error}>{children}</BaseLayout>\n </Suspense>\n </BaseBoundaries>\n </BaseContext.Provider>\n )\n}\n\nexport interface BaseLayoutProps {\n children?: ReactNode\n error?: SDKError | SDKError[] | null\n isLoading?: boolean\n}\n\nfunction SingleErrorContent({ error }: { error: SDKError }) {\n const Components = useComponentContext()\n const { t } = useTranslation()\n const hasFieldErrors = error.fieldErrors.length > 0\n\n return (\n <Components.Alert label={t('status.errorEncountered')} status=\"error\">\n {hasFieldErrors && (\n <Components.UnorderedList\n items={error.fieldErrors\n .filter(fieldError => fieldError.message)\n .map(fieldError => (\n <span key={fieldError.field}>{fieldError.message}</span>\n ))}\n />\n )}\n {!hasFieldErrors && error.category === 'validation_error' && (\n <Components.Text as=\"pre\">\n {error.raw &&\n typeof error.raw === 'object' &&\n 'pretty' in error.raw &&\n typeof (error.raw as { pretty: unknown }).pretty === 'function'\n ? (error.raw as { pretty: () => string }).pretty()\n : error.message}\n </Components.Text>\n )}\n {!hasFieldErrors && error.category !== 'validation_error' && (\n <Components.Text>{error.message || t('errors.unknownError')}</Components.Text>\n )}\n </Components.Alert>\n )\n}\n\nfunction MultipleErrorsContent({ errors }: { errors: SDKError[] }) {\n const Components = useComponentContext()\n const { t } = useTranslation()\n\n return (\n <Components.Alert label={t('status.multipleErrorsEncountered')} status=\"error\">\n <Components.UnorderedList\n items={errors\n .filter(error => error.message || error.fieldErrors.length > 0)\n .map((error, index) => {\n const visibleFieldErrors = error.fieldErrors.filter(fieldError => fieldError.message)\n\n if (visibleFieldErrors.length === 0) {\n return <span key={index}>{error.message || t('errors.unknownError')}</span>\n }\n\n return (\n <span key={index}>\n {error.message || t('errors.unknownError')}\n <Components.UnorderedList\n items={visibleFieldErrors.map(fieldError => (\n <span key={fieldError.field}>{fieldError.message}</span>\n ))}\n />\n </span>\n )\n })}\n />\n </Components.Alert>\n )\n}\n\nexport const BaseLayout = ({ children, error, isLoading }: BaseLayoutProps) => {\n const { LoadingIndicator } = useLoadingIndicator()\n\n const errors = Array.isArray(error) ? error : error ? [error] : []\n const hasErrors = errors.length > 0\n\n if (isLoading && !hasErrors) {\n return <LoadingIndicator />\n }\n\n const [firstError] = errors\n\n return (\n <FadeIn>\n {errors.length > 1 && <MultipleErrorsContent errors={errors} />}\n {errors.length === 1 && firstError && <SingleErrorContent error={firstError} />}\n {children}\n </FadeIn>\n )\n}\n\ninterface LoaderWithMetricsProps {\n LoaderComponent: LoadingIndicatorContextProps['LoadingIndicator']\n observability: ReturnType<typeof useObservability>['observability']\n componentName?: string\n}\n\nconst LoaderWithMetrics = ({\n LoaderComponent,\n observability,\n componentName,\n}: LoaderWithMetricsProps) => {\n const loadingStartTime = useRef(Date.now())\n const observabilityRef = useRef(observability)\n const componentNameRef = useRef(componentName)\n\n useEffect(() => {\n observabilityRef.current = observability\n componentNameRef.current = componentName\n }, [observability, componentName])\n\n useEffect(() => {\n return () => {\n const duration = Date.now() - loadingStartTime.current\n observabilityRef.current?.onMetric?.({\n name: 'sdk.component.loading_duration',\n value: duration,\n unit: 'ms',\n tags: componentNameRef.current ? { component: componentNameRef.current } : undefined,\n timestamp: Date.now(),\n })\n }\n }, [])\n\n return <LoaderComponent />\n}\n\nexport interface BaseBoundariesProps {\n children?: ReactNode\n FallbackComponent?: (props: FallbackProps) => JSX.Element\n onErrorBoundaryError?: (error: unknown, info: ErrorInfo) => void\n}\n\nexport const BaseBoundaries = ({\n children,\n FallbackComponent = InternalError,\n onErrorBoundaryError,\n}: BaseBoundariesProps) => {\n return (\n <QueryErrorResetBoundary>\n {({ reset: resetQueries }) => (\n <ErrorBoundary\n FallbackComponent={FallbackComponent}\n onReset={resetQueries}\n onError={onErrorBoundaryError}\n >\n {children}\n </ErrorBoundary>\n )}\n </QueryErrorResetBoundary>\n )\n}\n"],"names":["BaseComponent","children","FallbackComponent","InternalError","LoadingIndicatorFromProps","onEvent","componentName","error","baseSubmitHandler","setError","useBaseSubmit","observability","useObservability","LoadingIndicatorFromContext","useLoadingIndicator","LoaderComponent","onErrorBoundaryError","boundaryError","errorInfo","componentEvents","sdkError","normalizeToSDKError","jsx","BaseContext","BaseBoundaries","Suspense","LoaderWithMetrics","BaseLayout","SingleErrorContent","Components","useComponentContext","t","useTranslation","hasFieldErrors","jsxs","fieldError","MultipleErrorsContent","errors","index","visibleFieldErrors","isLoading","LoadingIndicator","hasErrors","firstError","FadeIn","loadingStartTime","useRef","observabilityRef","componentNameRef","useEffect","duration","QueryErrorResetBoundary","resetQueries","ErrorBoundary"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import "./types/i18next.d.ts"
2
- export { BaseComponent, BaseBoundaries, type BaseComponentInterface, type CommonComponentInterface, } from './Base';
2
+ export { BaseComponent, BaseBoundaries, BaseLayout, type BaseComponentInterface, type BaseLayoutProps, type BaseBoundariesProps, type CommonComponentInterface, } from './Base';
3
3
  export { createCompoundContext } from './createCompoundContext';
4
4
  export { useBase } from './useBase';
@@ -1,14 +1,10 @@
1
- import { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror';
2
- import { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror';
3
- import { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject';
4
1
  import { EventType } from '../../shared/constants';
5
2
  import { LoadingIndicatorContextProps } from '../../contexts/LoadingIndicatorProvider/useLoadingIndicator';
3
+ import { SDKError } from '../../types/sdkError';
6
4
  export type OnEventType<K, T> = (type: K, data?: T) => void;
7
- export type KnownErrors = GustoEmbeddedError | SDKValidationError;
8
5
  interface BaseContextProps {
9
- error: KnownErrors | null;
10
- fieldErrors: Array<EntityErrorObject> | null;
11
- setError: (err: KnownErrors | null) => void;
6
+ error: SDKError | null;
7
+ setError: (err: SDKError | null) => void;
12
8
  onEvent: OnEventType<EventType, unknown>;
13
9
  baseSubmitHandler: <T>(formData: T, componentHandler: (payload: T) => Promise<void>) => Promise<void>;
14
10
  LoadingIndicator: LoadingIndicatorContextProps['LoadingIndicator'];
@@ -1 +1 @@
1
- {"version":3,"file":"useBase.js","sources":["../../../src/components/Base/useBase.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport type { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { type EventType } from '@/shared/constants'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\n\nexport type OnEventType<K, T> = (type: K, data?: T) => void\n\nexport type KnownErrors = GustoEmbeddedError | SDKValidationError\n\ninterface BaseContextProps {\n error: KnownErrors | null\n fieldErrors: Array<EntityErrorObject> | null\n setError: (err: KnownErrors | null) => void\n onEvent: OnEventType<EventType, unknown>\n baseSubmitHandler: <T>(\n formData: T,\n componentHandler: (payload: T) => Promise<void>,\n ) => Promise<void>\n LoadingIndicator: LoadingIndicatorContextProps['LoadingIndicator']\n componentName?: string\n}\n\nexport const BaseContext = createContext<BaseContextProps | undefined>(undefined)\n\nexport const useBase = () => {\n const context = useContext(BaseContext)\n if (!context) {\n throw new Error('useBase must be used within a BaseProvider')\n }\n return context\n}\n"],"names":["BaseContext","createContext","useBase","context","useContext"],"mappings":";AAwBO,MAAMA,IAAcC,EAA4C,MAAS,GAEnEC,IAAU,MAAM;AAC3B,QAAMC,IAAUC,EAAWJ,CAAW;AACtC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,4CAA4C;AAE9D,SAAOA;AACT;"}
1
+ {"version":3,"file":"useBase.js","sources":["../../../src/components/Base/useBase.tsx"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport { type EventType } from '@/shared/constants'\nimport type { LoadingIndicatorContextProps } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport type { SDKError } from '@/types/sdkError'\n\nexport type OnEventType<K, T> = (type: K, data?: T) => void\n\ninterface BaseContextProps {\n error: SDKError | null\n setError: (err: SDKError | null) => void\n onEvent: OnEventType<EventType, unknown>\n baseSubmitHandler: <T>(\n formData: T,\n componentHandler: (payload: T) => Promise<void>,\n ) => Promise<void>\n LoadingIndicator: LoadingIndicatorContextProps['LoadingIndicator']\n componentName?: string\n}\n\nexport const BaseContext = createContext<BaseContextProps | undefined>(undefined)\n\nexport const useBase = () => {\n const context = useContext(BaseContext)\n if (!context) {\n throw new Error('useBase must be used within a BaseProvider')\n }\n return context\n}\n"],"names":["BaseContext","createContext","useBase","context","useContext"],"mappings":";AAmBO,MAAMA,IAAcC,EAA4C,MAAS,GAEnEC,IAAU,MAAM;AAC3B,QAAMC,IAAUC,EAAWJ,CAAW;AACtC,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,4CAA4C;AAE9D,SAAOA;AACT;"}
@@ -1,10 +1,8 @@
1
- import { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject';
2
- import { KnownErrors } from './useBase';
1
+ import { SDKError } from '../../types/sdkError';
3
2
  type SubmitHandler<T> = (data: T) => Promise<void>;
4
3
  export declare const useBaseSubmit: (componentName?: string) => {
5
4
  baseSubmitHandler: <T>(data: T, componentHandler: SubmitHandler<T>) => Promise<void>;
6
- error: KnownErrors | null;
7
- fieldErrors: EntityErrorObject[] | null;
8
- setError: (error: KnownErrors | null) => void;
5
+ error: SDKError | null;
6
+ setError: import('react').Dispatch<import('react').SetStateAction<SDKError | null>>;
9
7
  };
10
8
  export {};
@@ -1,73 +1,50 @@
1
- import { useState as u, useCallback as c } from "react";
2
- import { APIError as p } from "@gusto/embedded-api/models/errors/apierror";
3
- import { GustoEmbeddedError as g } from "@gusto/embedded-api/models/errors/gustoembeddederror";
4
- import { SDKValidationError as h } from "@gusto/embedded-api/models/errors/sdkvalidationerror";
5
- import { UnprocessableEntityErrorObject as b } from "@gusto/embedded-api/models/errors/unprocessableentityerrorobject";
6
- import { useAsyncError as v } from "../../hooks/useAsyncError.js";
7
- import { useObservability as w } from "../../contexts/ObservabilityProvider/useObservability.js";
8
- import { createObservabilityError as S } from "../../contexts/ObservabilityProvider/observabilityUtils.js";
9
- import { getFieldErrors as A } from "../../helpers/apiErrorToList.js";
10
- const B = (o) => {
11
- const [E, i] = u(null), [y, a] = u(null), f = v(), { observability: n } = w(), d = c((t) => {
12
- i(t), t || a(null);
13
- }, []), m = c(
14
- (t) => {
15
- i(t);
16
- const e = S(t);
17
- if (e && n?.onError?.({
18
- ...e,
19
- context: {
20
- ...e.context,
21
- componentName: o
22
- }
23
- }), t instanceof b && Array.isArray(t.errors)) {
24
- const l = t.errors.flatMap((s) => A(s));
25
- if (l.length > 0)
26
- a(l);
27
- else {
28
- const s = t.errors.filter((r) => r.message).map((r) => ({
29
- errorKey: r.errorKey,
30
- message: r.message ?? "",
31
- category: r.category
32
- }));
33
- s.length > 0 && a(s);
34
- }
35
- }
1
+ import { useState as f, useCallback as m } from "react";
2
+ import { APIError as b } from "@gusto/embedded-api/models/errors/apierror";
3
+ import { GustoEmbeddedError as E } from "@gusto/embedded-api/models/errors/gustoembeddederror";
4
+ import { SDKValidationError as d } from "@gusto/embedded-api/models/errors/sdkvalidationerror";
5
+ import { UnprocessableEntityErrorObject as p } from "@gusto/embedded-api/models/errors/unprocessableentityerrorobject";
6
+ import { useAsyncError as y } from "../../hooks/useAsyncError.js";
7
+ import { useObservability as D } from "../../contexts/ObservabilityProvider/useObservability.js";
8
+ import { normalizeToSDKError as S, SDKInternalError as w } from "../../types/sdkError.js";
9
+ const g = (t) => {
10
+ const [u, o] = f(null), a = y(), { observability: s } = D(), i = m(
11
+ (n) => {
12
+ const e = S(n);
13
+ o(e), s?.onError?.({ ...e, timestamp: Date.now(), componentName: t });
36
14
  },
37
- [n, o]
15
+ [s, t]
38
16
  );
39
17
  return {
40
- baseSubmitHandler: c(
41
- async (t, e) => {
18
+ baseSubmitHandler: m(
19
+ async (n, e) => {
42
20
  const l = Date.now();
43
- i(null), a(null);
44
- let s = !1;
21
+ o(null);
22
+ let c = !1;
45
23
  try {
46
- await e(t), s = !0;
24
+ await e(n), c = !0;
47
25
  } catch (r) {
48
- r instanceof p || r instanceof h || r instanceof b || r instanceof g ? m(r) : f(r);
26
+ r instanceof b || r instanceof d || r instanceof p || r instanceof E || r instanceof w ? i(r) : a(r);
49
27
  } finally {
50
28
  const r = Date.now() - l;
51
- n?.onMetric?.({
29
+ s?.onMetric?.({
52
30
  name: "sdk.form.submit_duration",
53
31
  value: r,
54
32
  unit: "ms",
55
33
  tags: {
56
- status: s ? "success" : "error",
57
- ...o && { component: o }
34
+ status: c ? "success" : "error",
35
+ ...t && { component: t }
58
36
  },
59
37
  timestamp: Date.now()
60
38
  });
61
39
  }
62
40
  },
63
- [i, f, n, o, m]
41
+ [o, a, s, t, i]
64
42
  ),
65
- error: E,
66
- fieldErrors: y,
67
- setError: d
43
+ error: u,
44
+ setError: o
68
45
  };
69
46
  };
70
47
  export {
71
- B as useBaseSubmit
48
+ g as useBaseSubmit
72
49
  };
73
50
  //# sourceMappingURL=useBaseSubmit.js.map