@gusto/embedded-react-sdk 0.51.0 → 0.51.2

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 (530) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/components/Base/useBaseSubmit.js +4 -4
  3. package/dist/components/Base/useBaseSubmit.js.map +1 -1
  4. package/dist/components/Common/DocumentList/DocumentList.d.ts +8 -1
  5. package/dist/components/Common/DocumentList/DocumentList.js +24 -21
  6. package/dist/components/Common/DocumentList/DocumentList.js.map +1 -1
  7. package/dist/components/Common/OnboardingStatusBadge/index.d.ts +2 -2
  8. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  9. package/dist/components/Common/TaxInputs/TaxInputs.d.ts +2 -2
  10. package/dist/components/Common/TaxInputs/TaxInputs.js.map +1 -1
  11. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +5 -5
  12. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  13. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.d.ts +1 -1
  14. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +9 -8
  15. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  16. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +3 -3
  17. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  18. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.d.ts +1 -1
  19. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +9 -8
  20. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  21. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +11 -10
  22. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  23. package/dist/components/Company/BankAccount/BankAccount.js +1 -1
  24. package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
  25. package/dist/components/Company/BankAccount/BankAccountComponents.d.ts +1 -1
  26. package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
  27. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +1 -1
  28. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
  29. package/dist/components/Company/BankAccount/BankAccountForm/context.js +9 -8
  30. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  31. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +1 -1
  32. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js.map +1 -1
  33. package/dist/components/Company/BankAccount/BankAccountList/context.d.ts +1 -1
  34. package/dist/components/Company/BankAccount/BankAccountList/context.js.map +1 -1
  35. package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js +1 -1
  36. package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js.map +1 -1
  37. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +2 -2
  38. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  39. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.d.ts +2 -2
  40. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +9 -8
  41. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  42. package/dist/components/Company/DocumentSigner/DocumentSigner.js +1 -1
  43. package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
  44. package/dist/components/Company/DocumentSigner/documentSignerStateMachine.d.ts +2 -2
  45. package/dist/components/Company/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  46. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.d.ts +1 -1
  47. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js +3 -3
  48. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js.map +1 -1
  49. package/dist/components/Company/FederalTaxes/FederalTaxes.js +2 -2
  50. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  51. package/dist/components/Company/FederalTaxes/Form.js +1 -1
  52. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  53. package/dist/components/Company/FederalTaxes/useFederalTaxes.d.ts +1 -1
  54. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -11
  55. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  56. package/dist/components/Company/Industry/Context.js +12 -11
  57. package/dist/components/Company/Industry/Context.js.map +1 -1
  58. package/dist/components/Company/Industry/Industry.js +2 -2
  59. package/dist/components/Company/Industry/Industry.js.map +1 -1
  60. package/dist/components/Company/Locations/LocationForm/Actions.js +7 -7
  61. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  62. package/dist/components/Company/Locations/LocationForm/LocationForm.js +46 -45
  63. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  64. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +9 -8
  65. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  66. package/dist/components/Company/Locations/LocationsList/LocationsList.js +1 -1
  67. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  68. package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -1
  69. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +9 -8
  70. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  71. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +1 -1
  72. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  73. package/dist/components/Company/OnboardingOverview/context.d.ts +1 -1
  74. package/dist/components/Company/OnboardingOverview/context.js +9 -8
  75. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  76. package/dist/components/Company/PaySchedule/PaySchedule.js +1 -1
  77. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  78. package/dist/components/Company/PaySchedule/PayScheduleList.js +1 -1
  79. package/dist/components/Company/PaySchedule/PayScheduleList.js.map +1 -1
  80. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +2 -2
  81. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +6 -6
  82. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  83. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +3 -3
  84. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  85. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +2 -2
  86. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  87. package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.d.ts +1 -1
  88. package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.js.map +1 -1
  89. package/dist/components/Company/StateTaxes/StateTaxesForm/context.d.ts +1 -1
  90. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +9 -8
  91. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  92. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +1 -1
  93. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  94. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +1 -1
  95. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
  96. package/dist/components/Company/StateTaxes/StateTaxesList/context.d.ts +1 -1
  97. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +9 -8
  98. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  99. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +2 -2
  100. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +3 -3
  101. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
  102. package/dist/components/Contractor/ContractorList/index.js +1 -1
  103. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  104. package/dist/components/Contractor/ContractorList/useContractorList.d.ts +1 -1
  105. package/dist/components/Contractor/ContractorList/useContractorList.js +1 -1
  106. package/dist/components/Contractor/ContractorList/useContractorList.js.map +1 -1
  107. package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
  108. package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  109. package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.d.ts +3 -1
  110. package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js +64 -51
  111. package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js.map +1 -1
  112. package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.d.ts +1 -1
  113. package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js +1 -1
  114. package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js.map +1 -1
  115. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +201 -161
  116. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
  117. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +2 -2
  118. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js +3 -3
  119. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js.map +1 -1
  120. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +1 -1
  121. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js +55 -54
  122. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js.map +1 -1
  123. package/dist/components/Contractor/Landing/Landing.js +2 -2
  124. package/dist/components/Contractor/Landing/Landing.js.map +1 -1
  125. package/dist/components/Contractor/NewHireReport/NewHireReport.js +2 -2
  126. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  127. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.d.ts +1 -1
  128. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js +2 -2
  129. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js.map +1 -1
  130. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +1 -1
  131. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js +2 -2
  132. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js.map +1 -1
  133. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +5 -5
  134. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  135. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +2 -2
  136. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
  137. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.d.ts +2 -2
  138. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
  139. package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.d.ts +1 -1
  140. package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.js.map +1 -1
  141. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +4 -4
  142. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
  143. package/dist/components/Contractor/Payments/CreatePayment/helpers.d.ts +1 -1
  144. package/dist/components/Contractor/Payments/CreatePayment/helpers.js.map +1 -1
  145. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
  146. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +3 -3
  147. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  148. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +2 -2
  149. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
  150. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +4 -4
  151. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  152. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -3
  153. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  154. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
  155. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  156. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.d.ts +3 -3
  157. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.js.map +1 -1
  158. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +3 -3
  159. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  160. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +1 -1
  161. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  162. package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js +1 -1
  163. package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js.map +1 -1
  164. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +1 -1
  165. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
  166. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +1 -1
  167. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +3 -3
  168. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  169. package/dist/components/Contractor/Submit/Submit.js +3 -3
  170. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  171. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +1 -1
  172. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  173. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +1 -1
  174. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
  175. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js +1 -1
  176. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js.map +1 -1
  177. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -1
  178. package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +2 -2
  179. package/dist/components/Employee/Compensation/onboarding/Compensation.js +1 -1
  180. package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
  181. package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.d.ts +2 -2
  182. package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.js.map +1 -1
  183. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js +2 -2
  184. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js.map +1 -1
  185. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.d.ts +1 -1
  186. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js.map +1 -1
  187. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -1
  188. package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.d.ts +1 -1
  189. package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.js.map +1 -1
  190. package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.d.ts +2 -2
  191. package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.js.map +1 -1
  192. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +3 -3
  193. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
  194. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.d.ts +4 -4
  195. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +7 -7
  196. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  197. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.d.ts +1 -1
  198. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +4 -4
  199. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  200. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +3 -3
  201. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +7 -7
  202. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  203. package/dist/components/Employee/Dashboard/Dashboard.js +1 -1
  204. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  205. package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
  206. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
  207. package/dist/components/Employee/Deductions/management/deductionsStateMachine.js.map +1 -1
  208. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.d.ts +1 -1
  209. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js.map +1 -1
  210. package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.d.ts +1 -1
  211. package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.js.map +1 -1
  212. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.d.ts +1 -1
  213. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js.map +1 -1
  214. package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.d.ts +1 -1
  215. package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.js.map +1 -1
  216. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.d.ts +1 -1
  217. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js.map +1 -1
  218. package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.d.ts +1 -1
  219. package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.js.map +1 -1
  220. package/dist/components/Employee/Deductions/shared/formatDeductionAmount.d.ts +1 -1
  221. package/dist/components/Employee/Deductions/shared/formatDeductionAmount.js.map +1 -1
  222. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +1 -1
  223. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js +1 -1
  224. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js.map +1 -1
  225. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.d.ts +1 -1
  226. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js.map +1 -1
  227. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +2 -2
  228. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js +5 -5
  229. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js.map +1 -1
  230. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js +1 -1
  231. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js.map +1 -1
  232. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.d.ts +1 -1
  233. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js.map +1 -1
  234. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.d.ts +1 -1
  235. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js +3 -3
  236. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js.map +1 -1
  237. package/dist/components/Employee/Deductions/shared/useDeductionsList.d.ts +1 -1
  238. package/dist/components/Employee/Deductions/shared/useDeductionsList.js +2 -2
  239. package/dist/components/Employee/Deductions/shared/useDeductionsList.js.map +1 -1
  240. package/dist/components/Employee/Deductions/shared/useDeleteDeduction.d.ts +1 -1
  241. package/dist/components/Employee/Deductions/shared/useDeleteDeduction.js.map +1 -1
  242. package/dist/components/Employee/Documents/management/DocumentManager.js +2 -2
  243. package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
  244. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  245. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +1 -1
  246. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  247. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.d.ts +1 -1
  248. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +9 -8
  249. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  250. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +2 -2
  251. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  252. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +3 -3
  253. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
  254. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +1 -1
  255. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
  256. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js +1 -1
  257. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
  258. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +1 -1
  259. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
  260. package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
  261. package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  262. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +2 -2
  263. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  264. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.d.ts +1 -1
  265. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js +1 -1
  266. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js.map +1 -1
  267. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.d.ts +1 -1
  268. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js +3 -3
  269. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js.map +1 -1
  270. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
  271. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +1 -1
  272. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
  273. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +3 -3
  274. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +3 -3
  275. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  276. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js +1 -1
  277. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js.map +1 -1
  278. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +1 -1
  279. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js +2 -2
  280. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js.map +1 -1
  281. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.d.ts +1 -1
  282. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js +1 -1
  283. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js.map +1 -1
  284. package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
  285. package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +1 -1
  286. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
  287. package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.d.ts +1 -1
  288. package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.js.map +1 -1
  289. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.d.ts +1 -1
  290. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +3 -3
  291. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  292. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.d.ts +1 -1
  293. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js +1 -1
  294. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js.map +1 -1
  295. package/dist/components/Employee/Landing/Landing.js +2 -2
  296. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  297. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.d.ts +1 -1
  298. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.js.map +1 -1
  299. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +2 -2
  300. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  301. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +1 -1
  302. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  303. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.d.ts +1 -1
  304. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js.map +1 -1
  305. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.d.ts +1 -1
  306. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js +1 -1
  307. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js.map +1 -1
  308. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.d.ts +1 -1
  309. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js +2 -2
  310. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js.map +1 -1
  311. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.d.ts +2 -2
  312. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js +4 -4
  313. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js.map +1 -1
  314. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.d.ts +2 -2
  315. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js +3 -3
  316. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js.map +1 -1
  317. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.d.ts +1 -1
  318. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js +3 -3
  319. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js.map +1 -1
  320. package/dist/components/Employee/Profile/onboarding/AdminProfile.js.map +1 -1
  321. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
  322. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js.map +1 -1
  323. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +1 -1
  324. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +5 -5
  325. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  326. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.d.ts +1 -1
  327. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
  328. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  329. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js +1 -1
  330. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map +1 -1
  331. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +1 -1
  332. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js +4 -4
  333. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map +1 -1
  334. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.d.ts +1 -1
  335. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js.map +1 -1
  336. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js +1 -1
  337. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map +1 -1
  338. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.d.ts +2 -2
  339. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js +5 -5
  340. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map +1 -1
  341. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +1 -1
  342. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  343. package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js.map +1 -1
  344. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/stateTaxesFixtures.d.ts +1 -1
  345. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/toWireFormat.d.ts +1 -1
  346. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.d.ts +1 -1
  347. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.js.map +1 -1
  348. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.d.ts +1 -1
  349. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.js.map +1 -1
  350. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +1 -1
  351. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
  352. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.d.ts +1 -1
  353. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js +2 -2
  354. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
  355. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.d.ts +1 -1
  356. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js +1 -1
  357. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js.map +1 -1
  358. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +9 -9
  359. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  360. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +1 -1
  361. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
  362. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +4 -4
  363. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  364. package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
  365. package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +1 -1
  366. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
  367. package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.d.ts +2 -2
  368. package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.js.map +1 -1
  369. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.d.ts +1 -1
  370. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +3 -3
  371. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  372. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.d.ts +1 -1
  373. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js +1 -1
  374. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js.map +1 -1
  375. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +4 -4
  376. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
  377. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +2 -2
  378. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
  379. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +1 -1
  380. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
  381. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -2
  382. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
  383. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +3 -3
  384. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
  385. package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js +2 -2
  386. package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js.map +1 -1
  387. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +1 -1
  388. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
  389. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +4 -4
  390. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
  391. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +8 -7
  392. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  393. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +1 -1
  394. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  395. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +4 -4
  396. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  397. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +1 -1
  398. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  399. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +1 -1
  400. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js +1 -1
  401. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
  402. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +4 -4
  403. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  404. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +2 -2
  405. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
  406. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +7 -7
  407. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  408. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +5 -5
  409. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  410. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +4 -4
  411. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +5 -5
  412. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  413. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +3 -3
  414. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  415. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +4 -4
  416. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +1 -1
  417. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  418. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +2 -2
  419. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  420. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +1 -1
  421. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  422. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  423. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +1 -1
  424. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
  425. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +1 -1
  426. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  427. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +2 -2
  428. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +1 -1
  429. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  430. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +4 -4
  431. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  432. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +2 -2
  433. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  434. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +2 -2
  435. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  436. package/dist/components/Payroll/PayrollList/PayrollList.js +8 -8
  437. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  438. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -3
  439. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +1 -1
  440. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  441. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +7 -7
  442. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  443. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +4 -4
  444. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  445. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.d.ts +2 -2
  446. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
  447. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.d.ts +1 -1
  448. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.js.map +1 -1
  449. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +1 -1
  450. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  451. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +1 -1
  452. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  453. package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.d.ts +1 -1
  454. package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js +2 -2
  455. package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js.map +1 -1
  456. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +1 -1
  457. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
  458. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +2 -2
  459. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
  460. package/dist/components/Payroll/Transition/TransitionFlowComponents.js +1 -1
  461. package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -1
  462. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +4 -4
  463. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
  464. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +3 -3
  465. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  466. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +1 -1
  467. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  468. package/dist/components/Payroll/helpers.d.ts +6 -6
  469. package/dist/components/Payroll/helpers.js +1 -1
  470. package/dist/components/Payroll/helpers.js.map +1 -1
  471. package/dist/components/Payroll/payrollTypes.js +1 -1
  472. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  473. package/dist/components/Payroll/usePreparedPayrollData.d.ts +2 -2
  474. package/dist/components/Payroll/usePreparedPayrollData.js +16 -15
  475. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  476. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.d.ts +1 -1
  477. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +3 -3
  478. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
  479. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +3 -3
  480. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
  481. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +3 -3
  482. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
  483. package/dist/components/TimeOff/PolicyList/PolicyList.js +6 -6
  484. package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
  485. package/dist/components/TimeOff/PolicySettings/PolicySettings.js +30 -29
  486. package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
  487. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +1 -1
  488. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
  489. package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.d.ts +1 -1
  490. package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.js.map +1 -1
  491. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +27 -26
  492. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
  493. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +2 -2
  494. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
  495. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +1 -1
  496. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +69 -68
  497. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
  498. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +3 -3
  499. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
  500. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +67 -66
  501. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
  502. package/dist/contexts/ApiProvider/ApiProvider.js +3 -3
  503. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  504. package/dist/contexts/ApiProvider/apiVersion.d.ts +23 -0
  505. package/dist/contexts/ApiProvider/apiVersion.js +6 -0
  506. package/dist/contexts/ApiProvider/apiVersion.js.map +1 -0
  507. package/dist/contexts/ApiProvider/apiVersionHook.js +3 -2
  508. package/dist/contexts/ApiProvider/apiVersionHook.js.map +1 -1
  509. package/dist/contexts/ApiProvider/createSdkQueryClient.d.ts +1 -1
  510. package/dist/contexts/ApiProvider/createSdkQueryClient.js +7 -6
  511. package/dist/contexts/ApiProvider/createSdkQueryClient.js.map +1 -1
  512. package/dist/helpers/apiErrorToList.d.ts +1 -1
  513. package/dist/helpers/apiErrorToList.js.map +1 -1
  514. package/dist/helpers/formattedStrings.d.ts +2 -2
  515. package/dist/helpers/formattedStrings.js.map +1 -1
  516. package/dist/hooks/useCompanyPaymentSpeed.d.ts +1 -1
  517. package/dist/hooks/useCompanyPaymentSpeed.js +1 -1
  518. package/dist/hooks/useCompanyPaymentSpeed.js.map +1 -1
  519. package/dist/i18n/en/Contractor.DocumentsList.json.js +20 -16
  520. package/dist/i18n/en/Contractor.DocumentsList.json.js.map +1 -1
  521. package/dist/i18n/types.d.ts +4 -0
  522. package/dist/models/external.d.ts +204 -204
  523. package/dist/shared/constants.d.ts +1 -1
  524. package/dist/shared/constants.js +2 -2
  525. package/dist/shared/constants.js.map +1 -1
  526. package/dist/types/hooks.d.ts +1 -1
  527. package/dist/types/sdkError.js +3 -3
  528. package/dist/types/sdkError.js.map +1 -1
  529. package/docs/guides/endpoint-inventory.json +1201 -297
  530. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"SplitPaymentsFormBody.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.tsx"],"sourcesContent":["import { Trans, useTranslation } from 'react-i18next'\nimport DOMPurify from 'dompurify'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod'\nimport {\n useSplitPaymentsForm,\n type SplitByValue,\n type SplitFieldEntry,\n type UseSplitPaymentsFormProps,\n type UseSplitPaymentsFormReady,\n} from '../useSplitPaymentsForm'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { ReorderableList } from '@/components/Common/ReorderableList'\nimport { BaseLayout } from '@/components/Base/Base'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { SPLIT_BY } from '@/shared/constants'\nimport type { ResourceDictionary } from '@/types/Helpers'\n\n/** @internal */\nexport type SplitPaymentsFormBodyDictionary = ResourceDictionary<'Employee.SplitPaymentsFormBody'>\n\n/** @internal */\nexport interface SplitPaymentsFormBodyProps extends UseSplitPaymentsFormProps {\n /**\n * Translation overrides for the form's strings. Each consuming surface passes\n * the dictionary it resolved from its own namespace so partner overrides on\n * that namespace flow into the shared form text.\n */\n dictionary?: SplitPaymentsFormBodyDictionary\n /** Called with the updated payment method after a successful submit. */\n onSaved: (paymentMethod: EmployeePaymentMethod) => void\n onCancel: () => void\n}\n\n/**\n * Shared split-paycheck form body. Owns the `useSplitPaymentsForm` composition,\n * the reorderable-list/percentage field JSX, and the submit/cancel actions.\n * Reads its copy from the internal `Employee.SplitPaymentsFormBody` namespace;\n * consuming surfaces inject their own copy via the `dictionary` prop and map the\n * `onSaved`/`onCancel` callbacks onto their surface-specific events.\n *\n * @internal\n */\nexport function SplitPaymentsFormBody({\n dictionary,\n onSaved,\n onCancel,\n ...hookProps\n}: SplitPaymentsFormBodyProps) {\n useI18n('Employee.SplitPaymentsFormBody')\n useComponentDictionary('Employee.SplitPaymentsFormBody', dictionary)\n const splitForm = useSplitPaymentsForm(hookProps)\n\n if (splitForm.isLoading) {\n return <BaseLayout isLoading error={splitForm.errorHandling.errors} />\n }\n\n return <SplitPaymentsFormBodyReady onSaved={onSaved} onCancel={onCancel} splitForm={splitForm} />\n}\n\ninterface SplitPaymentsFormBodyReadyProps {\n onSaved: (paymentMethod: EmployeePaymentMethod) => void\n onCancel: () => void\n splitForm: UseSplitPaymentsFormReady\n}\n\nfunction SplitPaymentsFormBodyReady({\n onSaved,\n onCancel,\n splitForm,\n}: SplitPaymentsFormBodyReadyProps) {\n const { t } = useTranslation('Employee.SplitPaymentsFormBody')\n const Components = useComponentContext()\n const { Fields } = splitForm.form\n const { remainderId, bankAccounts } = splitForm.data\n const { splitBy, percentageTotal, hasPercentageImbalance } = splitForm.status\n\n const handleSubmit = async () => {\n const result = await splitForm.actions.onSubmit()\n if (result) {\n onSaved(result.data)\n }\n }\n\n if (bankAccounts.length < 2) return null\n\n const labelForSplit = (split: SplitFieldEntry) =>\n t('splitAmountLabel', {\n name: DOMPurify.sanitize(split.name ?? ''),\n account_number: DOMPurify.sanitize(split.hiddenAccountNumber ?? ''),\n interpolation: { escapeValue: false },\n })\n\n const handleReorder = (indices: number[]) => {\n const orderedUuids = indices\n .map(index => Fields.splits[index]?.uuid)\n .filter((uuid): uuid is string => Boolean(uuid))\n splitForm.actions.reorderSplits(orderedUuids)\n }\n\n return (\n <BaseLayout error={splitForm.errorHandling.errors}>\n <SDKFormProvider formHookResult={splitForm}>\n <Form onSubmit={handleSubmit}>\n {hasPercentageImbalance && (\n <Components.Alert\n status=\"error\"\n label={t('validations.percentageErrorWithTotal', { total: percentageTotal })}\n disableScrollIntoView\n />\n )}\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Trans t={t} i18nKey=\"splitDescription\" components={{ p: <Components.Text /> }} />\n <Fields.SplitBy\n label={t('splitByLabel')}\n getOptionLabel={(value: SplitByValue) =>\n value === SPLIT_BY.percentage ? t('percentageLabel') : t('amountLabel')\n }\n />\n {splitBy === SPLIT_BY.amount ? (\n <ReorderableList\n key={`reorderable-amount-list-${splitBy}`}\n label={t('draggableListLabel')}\n items={Fields.splits.map(split => ({\n label: split.name ?? '',\n content: (\n <split.Field\n key={`amount-${split.uuid}`}\n label={labelForSplit(split)}\n min={0}\n validationMessages={{\n REQUIRED: t('validations.amountError'),\n INVALID_AMOUNT: t('validations.amountError'),\n INVALID_PERCENTAGE: t('validations.amountError'),\n }}\n placeholder={remainderId === split.uuid ? t('remainderLabel') : ''}\n />\n ),\n }))}\n onReorder={handleReorder}\n />\n ) : (\n Fields.splits.map(split => (\n <split.Field\n key={`percentage-${split.uuid}`}\n label={labelForSplit(split)}\n min={0}\n validationMessages={{\n REQUIRED: t('validations.percentageAmountError'),\n INVALID_AMOUNT: t('validations.percentageAmountError'),\n INVALID_PERCENTAGE: t('validations.percentageAmountError'),\n }}\n />\n ))\n )}\n <ActionsLayout>\n <Components.Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n {t('cancelCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isLoading={splitForm.status.isPending}>\n {t('saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n"],"names":["SplitPaymentsFormBody","dictionary","onSaved","onCancel","hookProps","useI18n","useComponentDictionary","splitForm","useSplitPaymentsForm","BaseLayout","jsx","SplitPaymentsFormBodyReady","t","useTranslation","Components","useComponentContext","Fields","remainderId","bankAccounts","splitBy","percentageTotal","hasPercentageImbalance","handleSubmit","result","labelForSplit","split","DOMPurify","handleReorder","indices","orderedUuids","index","uuid","SDKFormProvider","jsxs","Form","Trans","value","SPLIT_BY","ReorderableList","ActionsLayout"],"mappings":"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"}
1
+ {"version":3,"file":"SplitPaymentsFormBody.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.tsx"],"sourcesContent":["import { Trans, useTranslation } from 'react-i18next'\nimport DOMPurify from 'dompurify'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod'\nimport {\n useSplitPaymentsForm,\n type SplitByValue,\n type SplitFieldEntry,\n type UseSplitPaymentsFormProps,\n type UseSplitPaymentsFormReady,\n} from '../useSplitPaymentsForm'\nimport { ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { ReorderableList } from '@/components/Common/ReorderableList'\nimport { BaseLayout } from '@/components/Base/Base'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { SPLIT_BY } from '@/shared/constants'\nimport type { ResourceDictionary } from '@/types/Helpers'\n\n/** @internal */\nexport type SplitPaymentsFormBodyDictionary = ResourceDictionary<'Employee.SplitPaymentsFormBody'>\n\n/** @internal */\nexport interface SplitPaymentsFormBodyProps extends UseSplitPaymentsFormProps {\n /**\n * Translation overrides for the form's strings. Each consuming surface passes\n * the dictionary it resolved from its own namespace so partner overrides on\n * that namespace flow into the shared form text.\n */\n dictionary?: SplitPaymentsFormBodyDictionary\n /** Called with the updated payment method after a successful submit. */\n onSaved: (paymentMethod: EmployeePaymentMethod) => void\n onCancel: () => void\n}\n\n/**\n * Shared split-paycheck form body. Owns the `useSplitPaymentsForm` composition,\n * the reorderable-list/percentage field JSX, and the submit/cancel actions.\n * Reads its copy from the internal `Employee.SplitPaymentsFormBody` namespace;\n * consuming surfaces inject their own copy via the `dictionary` prop and map the\n * `onSaved`/`onCancel` callbacks onto their surface-specific events.\n *\n * @internal\n */\nexport function SplitPaymentsFormBody({\n dictionary,\n onSaved,\n onCancel,\n ...hookProps\n}: SplitPaymentsFormBodyProps) {\n useI18n('Employee.SplitPaymentsFormBody')\n useComponentDictionary('Employee.SplitPaymentsFormBody', dictionary)\n const splitForm = useSplitPaymentsForm(hookProps)\n\n if (splitForm.isLoading) {\n return <BaseLayout isLoading error={splitForm.errorHandling.errors} />\n }\n\n return <SplitPaymentsFormBodyReady onSaved={onSaved} onCancel={onCancel} splitForm={splitForm} />\n}\n\ninterface SplitPaymentsFormBodyReadyProps {\n onSaved: (paymentMethod: EmployeePaymentMethod) => void\n onCancel: () => void\n splitForm: UseSplitPaymentsFormReady\n}\n\nfunction SplitPaymentsFormBodyReady({\n onSaved,\n onCancel,\n splitForm,\n}: SplitPaymentsFormBodyReadyProps) {\n const { t } = useTranslation('Employee.SplitPaymentsFormBody')\n const Components = useComponentContext()\n const { Fields } = splitForm.form\n const { remainderId, bankAccounts } = splitForm.data\n const { splitBy, percentageTotal, hasPercentageImbalance } = splitForm.status\n\n const handleSubmit = async () => {\n const result = await splitForm.actions.onSubmit()\n if (result) {\n onSaved(result.data)\n }\n }\n\n if (bankAccounts.length < 2) return null\n\n const labelForSplit = (split: SplitFieldEntry) =>\n t('splitAmountLabel', {\n name: DOMPurify.sanitize(split.name ?? ''),\n account_number: DOMPurify.sanitize(split.hiddenAccountNumber ?? ''),\n interpolation: { escapeValue: false },\n })\n\n const handleReorder = (indices: number[]) => {\n const orderedUuids = indices\n .map(index => Fields.splits[index]?.uuid)\n .filter((uuid): uuid is string => Boolean(uuid))\n splitForm.actions.reorderSplits(orderedUuids)\n }\n\n return (\n <BaseLayout error={splitForm.errorHandling.errors}>\n <SDKFormProvider formHookResult={splitForm}>\n <Form onSubmit={handleSubmit}>\n {hasPercentageImbalance && (\n <Components.Alert\n status=\"error\"\n label={t('validations.percentageErrorWithTotal', { total: percentageTotal })}\n disableScrollIntoView\n />\n )}\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Trans t={t} i18nKey=\"splitDescription\" components={{ p: <Components.Text /> }} />\n <Fields.SplitBy\n label={t('splitByLabel')}\n getOptionLabel={(value: SplitByValue) =>\n value === SPLIT_BY.percentage ? t('percentageLabel') : t('amountLabel')\n }\n />\n {splitBy === SPLIT_BY.amount ? (\n <ReorderableList\n key={`reorderable-amount-list-${splitBy}`}\n label={t('draggableListLabel')}\n items={Fields.splits.map(split => ({\n label: split.name ?? '',\n content: (\n <split.Field\n key={`amount-${split.uuid}`}\n label={labelForSplit(split)}\n min={0}\n validationMessages={{\n REQUIRED: t('validations.amountError'),\n INVALID_AMOUNT: t('validations.amountError'),\n INVALID_PERCENTAGE: t('validations.amountError'),\n }}\n placeholder={remainderId === split.uuid ? t('remainderLabel') : ''}\n />\n ),\n }))}\n onReorder={handleReorder}\n />\n ) : (\n Fields.splits.map(split => (\n <split.Field\n key={`percentage-${split.uuid}`}\n label={labelForSplit(split)}\n min={0}\n validationMessages={{\n REQUIRED: t('validations.percentageAmountError'),\n INVALID_AMOUNT: t('validations.percentageAmountError'),\n INVALID_PERCENTAGE: t('validations.percentageAmountError'),\n }}\n />\n ))\n )}\n <ActionsLayout>\n <Components.Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n {t('cancelCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isLoading={splitForm.status.isPending}>\n {t('saveCta')}\n </Components.Button>\n </ActionsLayout>\n </Form>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n"],"names":["SplitPaymentsFormBody","dictionary","onSaved","onCancel","hookProps","useI18n","useComponentDictionary","splitForm","useSplitPaymentsForm","BaseLayout","jsx","SplitPaymentsFormBodyReady","t","useTranslation","Components","useComponentContext","Fields","remainderId","bankAccounts","splitBy","percentageTotal","hasPercentageImbalance","handleSubmit","result","labelForSplit","split","DOMPurify","handleReorder","indices","orderedUuids","index","uuid","SDKFormProvider","jsxs","Form","Trans","value","SPLIT_BY","ReorderableList","ActionsLayout"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { UseFormProps } from 'react-hook-form';
3
- import { EmployeeBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/employeebankaccount';
3
+ import { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount';
4
4
  import { BankFormData, BankFormOptionalFieldsToRequire } from './useBankFormSchema';
5
5
  import { AccountNumberFieldProps, AccountTypeFieldProps, NameFieldProps, RoutingNumberFieldProps } from './fields';
6
6
  import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
@@ -1,7 +1,7 @@
1
1
  import { useMemo as l } from "react";
2
2
  import { useForm as I } from "react-hook-form";
3
3
  import { zodResolver as v } from "@hookform/resolvers/zod";
4
- import { useEmployeePaymentMethodCreateMutation as P } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodCreate";
4
+ import { useEmployeePaymentMethodCreateMutation as P } from "@gusto/embedded-api/react-query/employeePaymentMethodCreate";
5
5
  import { createBankFormSchema as C, ACCOUNT_TYPES as b } from "./useBankFormSchema.js";
6
6
  import { AccountTypeField as V, AccountNumberField as H, RoutingNumberField as O, NameField as R } from "./fields.js";
7
7
  import { useDeriveFieldsMetadata as q } from "../../../../../partner-hook-utils/form/useDeriveFieldsMetadata.js";
@@ -1 +1 @@
1
- {"version":3,"file":"useBankForm.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/employeebankaccount'\nimport { useEmployeePaymentMethodCreateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodCreate'\nimport {\n ACCOUNT_TYPES,\n type AccountType,\n createBankFormSchema,\n type BankFormData,\n type BankFormOptionalFieldsToRequire,\n type BankFormOutputs,\n} from './useBankFormSchema'\nimport type {\n AccountNumberFieldProps,\n AccountTypeFieldProps,\n NameFieldProps,\n RoutingNumberFieldProps,\n} from './fields'\nimport { AccountNumberField, AccountTypeField, NameField, RoutingNumberField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\n/**\n * Optional submit-time overrides for {@link useBankForm}'s `onSubmit`.\n *\n * @public\n */\nexport interface BankFormSubmitOptions {\n /** Override the `employeeId` configured at hook construction. Useful when the employee is created in the same submit chain. */\n employeeId?: string\n}\n\n/**\n * Props for {@link useBankForm}.\n *\n * @public\n */\nexport interface UseBankFormProps {\n /** Employee for whom to create the bank account. May be supplied later via `BankFormSubmitOptions.employeeId`. */\n employeeId?: string\n /** Override optional fields to be required. Reserved for future schema expansion — every field is required by default. */\n optionalFieldsToRequire?: BankFormOptionalFieldsToRequire\n /** Pre-fill form values. `accountType` defaults to `'Checking'` when not supplied. */\n defaultValues?: Partial<BankFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useBankForm} on `form.Fields`.\n *\n * @public\n */\nexport interface BankFormFields {\n /** Bound to `name`. */\n Name: ComponentType<NameFieldProps>\n /** Bound to `routingNumber`. */\n RoutingNumber: ComponentType<RoutingNumberFieldProps>\n /** Bound to `accountNumber`. */\n AccountNumber: ComponentType<AccountNumberFieldProps>\n /** Bound to `accountType`. */\n AccountType: ComponentType<AccountTypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useBankForm}.\n *\n * @public\n */\nexport interface UseBankFormReady extends BaseFormHookReady<\n BankFormFieldsMetadata,\n BankFormData,\n BankFormFields\n> {\n /** No server-fetched data — the create form derives everything from user input. */\n data: Record<string, never>\n /** `isPending` reflects the in-flight create mutation; `mode` is always `'create'`. */\n status: { isPending: boolean; mode: 'create' }\n /** Submit the form. Optional {@link BankFormSubmitOptions} can override the `employeeId` supplied to the hook. */\n actions: {\n onSubmit: (\n options?: BankFormSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeBankAccount> | undefined>\n }\n}\n\n/** @internal */\nfunction buildBankFieldsMetadata(base: Record<keyof BankFormData, FieldMetadata>) {\n return {\n name: base.name,\n routingNumber: base.routingNumber,\n accountNumber: base.accountNumber,\n accountType: withOptions<AccountType>(\n base.accountType,\n ACCOUNT_TYPES.map(value => ({ value, label: value })),\n [...ACCOUNT_TYPES],\n ),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for creating an employee bank account.\n *\n * @remarks\n * Captures the account nickname, routing number, account number, and account\n * type. Creating a bank account also updates the employee's payment method on\n * the Gusto API. Returns the standard `HookLoadingResult | UseBankFormReady`\n * discriminated union; in practice the hook transitions to the ready state\n * immediately because it does not fetch any server data.\n *\n * @param props - See {@link UseBankFormProps}.\n * @returns A loading-state result while the hook is initializing, or a {@link UseBankFormReady} ready to render.\n * @public\n *\n * @example\n * ```tsx\n * import { useBankForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function AddBankAccount({ employeeId }: { employeeId: string }) {\n * const bankForm = useBankForm({ employeeId })\n *\n * if (bankForm.isLoading) return null\n * const { Fields } = bankForm.form\n *\n * return (\n * <SDKFormProvider formHookResult={bankForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void bankForm.actions.onSubmit()\n * }}\n * >\n * <Fields.Name label=\"Account nickname\" />\n * <Fields.RoutingNumber label=\"Routing number\" />\n * <Fields.AccountNumber label=\"Account number\" />\n * <Fields.AccountType label=\"Account type\" />\n * <button type=\"submit\" disabled={bankForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useBankForm({\n employeeId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseBankFormProps): HookLoadingResult | UseBankFormReady {\n const [schema, metadataConfig] = useMemo(\n () => createBankFormSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: BankFormData = useMemo(\n () => ({\n name: partnerDefaults?.name ?? '',\n routingNumber: partnerDefaults?.routingNumber ?? '',\n accountNumber: partnerDefaults?.accountNumber ?? '',\n accountType: (partnerDefaults?.accountType ?? 'Checking') as AccountType,\n }),\n [partnerDefaults],\n )\n\n const formMethods = useForm<BankFormData, unknown, BankFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createMutation = useEmployeePaymentMethodCreateMutation()\n const isPending = createMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('BankForm')\n\n const errorHandling = composeErrorHandler([], { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildBankFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n options?: BankFormSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeBankAccount> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeBankAccount> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: BankFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n if (!resolvedEmployeeId) {\n throw new SDKInternalError(\n 'employeeId is required to submit a bank account. Pass it to useBankForm or via BankFormSubmitOptions.',\n )\n }\n\n const response = await createMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n employeeBankAccountRequest: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n if (!response.employeeBankAccount) {\n throw new SDKInternalError('Bank account creation failed')\n }\n\n submitResult = { mode: 'create' as const, data: response.employeeBankAccount }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n return {\n isLoading: false as const,\n data: {} as Record<string, never>,\n status: { isPending, mode: 'create' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Name: NameField,\n RoutingNumber: RoutingNumberField,\n AccountNumber: AccountNumberField,\n AccountType: AccountTypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useBankForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseBankFormResult = HookLoadingResult | UseBankFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useBankForm}.\n *\n * @public\n */\nexport type BankFormFieldsMetadata = ReturnType<typeof buildBankFieldsMetadata>\n"],"names":["buildBankFieldsMetadata","base","withOptions","ACCOUNT_TYPES","value","useBankForm","employeeId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","schema","metadataConfig","useMemo","createBankFormSchema","resolvedDefaults","formMethods","useForm","zodResolver","createMutation","useEmployeePaymentMethodCreateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","options","submitResult","resolve","data","payload","resolvedEmployeeId","SDKInternalError","response","hookFormInternals","useHookFormInternals","NameField","RoutingNumberField","AccountNumberField","AccountTypeField","createGetFormSubmissionValues"],"mappings":"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"}
1
+ {"version":3,"file":"useBankForm.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport { useEmployeePaymentMethodCreateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodCreate'\nimport {\n ACCOUNT_TYPES,\n type AccountType,\n createBankFormSchema,\n type BankFormData,\n type BankFormOptionalFieldsToRequire,\n type BankFormOutputs,\n} from './useBankFormSchema'\nimport type {\n AccountNumberFieldProps,\n AccountTypeFieldProps,\n NameFieldProps,\n RoutingNumberFieldProps,\n} from './fields'\nimport { AccountNumberField, AccountTypeField, NameField, RoutingNumberField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\n/**\n * Optional submit-time overrides for {@link useBankForm}'s `onSubmit`.\n *\n * @public\n */\nexport interface BankFormSubmitOptions {\n /** Override the `employeeId` configured at hook construction. Useful when the employee is created in the same submit chain. */\n employeeId?: string\n}\n\n/**\n * Props for {@link useBankForm}.\n *\n * @public\n */\nexport interface UseBankFormProps {\n /** Employee for whom to create the bank account. May be supplied later via `BankFormSubmitOptions.employeeId`. */\n employeeId?: string\n /** Override optional fields to be required. Reserved for future schema expansion — every field is required by default. */\n optionalFieldsToRequire?: BankFormOptionalFieldsToRequire\n /** Pre-fill form values. `accountType` defaults to `'Checking'` when not supplied. */\n defaultValues?: Partial<BankFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useBankForm} on `form.Fields`.\n *\n * @public\n */\nexport interface BankFormFields {\n /** Bound to `name`. */\n Name: ComponentType<NameFieldProps>\n /** Bound to `routingNumber`. */\n RoutingNumber: ComponentType<RoutingNumberFieldProps>\n /** Bound to `accountNumber`. */\n AccountNumber: ComponentType<AccountNumberFieldProps>\n /** Bound to `accountType`. */\n AccountType: ComponentType<AccountTypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useBankForm}.\n *\n * @public\n */\nexport interface UseBankFormReady extends BaseFormHookReady<\n BankFormFieldsMetadata,\n BankFormData,\n BankFormFields\n> {\n /** No server-fetched data — the create form derives everything from user input. */\n data: Record<string, never>\n /** `isPending` reflects the in-flight create mutation; `mode` is always `'create'`. */\n status: { isPending: boolean; mode: 'create' }\n /** Submit the form. Optional {@link BankFormSubmitOptions} can override the `employeeId` supplied to the hook. */\n actions: {\n onSubmit: (\n options?: BankFormSubmitOptions,\n ) => Promise<HookSubmitResult<EmployeeBankAccount> | undefined>\n }\n}\n\n/** @internal */\nfunction buildBankFieldsMetadata(base: Record<keyof BankFormData, FieldMetadata>) {\n return {\n name: base.name,\n routingNumber: base.routingNumber,\n accountNumber: base.accountNumber,\n accountType: withOptions<AccountType>(\n base.accountType,\n ACCOUNT_TYPES.map(value => ({ value, label: value })),\n [...ACCOUNT_TYPES],\n ),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for creating an employee bank account.\n *\n * @remarks\n * Captures the account nickname, routing number, account number, and account\n * type. Creating a bank account also updates the employee's payment method on\n * the Gusto API. Returns the standard `HookLoadingResult | UseBankFormReady`\n * discriminated union; in practice the hook transitions to the ready state\n * immediately because it does not fetch any server data.\n *\n * @param props - See {@link UseBankFormProps}.\n * @returns A loading-state result while the hook is initializing, or a {@link UseBankFormReady} ready to render.\n * @public\n *\n * @example\n * ```tsx\n * import { useBankForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function AddBankAccount({ employeeId }: { employeeId: string }) {\n * const bankForm = useBankForm({ employeeId })\n *\n * if (bankForm.isLoading) return null\n * const { Fields } = bankForm.form\n *\n * return (\n * <SDKFormProvider formHookResult={bankForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void bankForm.actions.onSubmit()\n * }}\n * >\n * <Fields.Name label=\"Account nickname\" />\n * <Fields.RoutingNumber label=\"Routing number\" />\n * <Fields.AccountNumber label=\"Account number\" />\n * <Fields.AccountType label=\"Account type\" />\n * <button type=\"submit\" disabled={bankForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useBankForm({\n employeeId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseBankFormProps): HookLoadingResult | UseBankFormReady {\n const [schema, metadataConfig] = useMemo(\n () => createBankFormSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: BankFormData = useMemo(\n () => ({\n name: partnerDefaults?.name ?? '',\n routingNumber: partnerDefaults?.routingNumber ?? '',\n accountNumber: partnerDefaults?.accountNumber ?? '',\n accountType: (partnerDefaults?.accountType ?? 'Checking') as AccountType,\n }),\n [partnerDefaults],\n )\n\n const formMethods = useForm<BankFormData, unknown, BankFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const createMutation = useEmployeePaymentMethodCreateMutation()\n const isPending = createMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('BankForm')\n\n const errorHandling = composeErrorHandler([], { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildBankFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n options?: BankFormSubmitOptions,\n ): Promise<HookSubmitResult<EmployeeBankAccount> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeBankAccount> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: BankFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedEmployeeId = options?.employeeId ?? employeeId\n if (!resolvedEmployeeId) {\n throw new SDKInternalError(\n 'employeeId is required to submit a bank account. Pass it to useBankForm or via BankFormSubmitOptions.',\n )\n }\n\n const response = await createMutation.mutateAsync({\n request: {\n employeeId: resolvedEmployeeId,\n employeeBankAccountRequest: {\n name: payload.name,\n routingNumber: payload.routingNumber,\n accountNumber: payload.accountNumber,\n accountType: payload.accountType,\n },\n },\n })\n\n if (!response.employeeBankAccount) {\n throw new SDKInternalError('Bank account creation failed')\n }\n\n submitResult = { mode: 'create' as const, data: response.employeeBankAccount }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n return {\n isLoading: false as const,\n data: {} as Record<string, never>,\n status: { isPending, mode: 'create' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Name: NameField,\n RoutingNumber: RoutingNumberField,\n AccountNumber: AccountNumberField,\n AccountType: AccountTypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useBankForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseBankFormResult = HookLoadingResult | UseBankFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useBankForm}.\n *\n * @public\n */\nexport type BankFormFieldsMetadata = ReturnType<typeof buildBankFieldsMetadata>\n"],"names":["buildBankFieldsMetadata","base","withOptions","ACCOUNT_TYPES","value","useBankForm","employeeId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","schema","metadataConfig","useMemo","createBankFormSchema","resolvedDefaults","formMethods","useForm","zodResolver","createMutation","useEmployeePaymentMethodCreateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","options","submitResult","resolve","data","payload","resolvedEmployeeId","SDKInternalError","response","hookFormInternals","useHookFormInternals","NameField","RoutingNumberField","AccountNumberField","AccountTypeField","createGetFormSubmissionValues"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { UseFormProps } from 'react-hook-form';
3
- import { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod';
3
+ import { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod';
4
4
  import { PaymentMethodFormData, PaymentMethodFormOptionalFieldsToRequire } from './usePaymentMethodFormSchema';
5
5
  import { TypeFieldProps } from './fields';
6
6
  import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
@@ -1,8 +1,8 @@
1
1
  import { useMemo as M } from "react";
2
2
  import { useForm as O } from "react-hook-form";
3
3
  import { zodResolver as Y } from "@hookform/resolvers/zod";
4
- import { useEmployeePaymentMethodGet as _ } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodGet";
5
- import { useEmployeePaymentMethodUpdateMutation as A } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodUpdate";
4
+ import { useEmployeePaymentMethodGet as _ } from "@gusto/embedded-api/react-query/employeePaymentMethodGet";
5
+ import { useEmployeePaymentMethodUpdateMutation as A } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdate";
6
6
  import { createPaymentMethodFormSchema as I, PAYMENT_METHOD_TYPES as h } from "./usePaymentMethodFormSchema.js";
7
7
  import { TypeField as C } from "./fields.js";
8
8
  import { useDeriveFieldsMetadata as G } from "../../../../../partner-hook-utils/form/useDeriveFieldsMetadata.js";
@@ -1 +1 @@
1
- {"version":3,"file":"usePaymentMethodForm.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodUpdate'\nimport {\n PAYMENT_METHOD_TYPES,\n type PaymentMethodFormData,\n type PaymentMethodFormOptionalFieldsToRequire,\n type PaymentMethodFormOutputs,\n type PaymentMethodType,\n createPaymentMethodFormSchema,\n} from './usePaymentMethodFormSchema'\nimport type { TypeFieldProps } from './fields'\nimport { TypeField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\n\n/**\n * Props for {@link usePaymentMethodForm}.\n *\n * @public\n */\nexport interface UsePaymentMethodFormProps {\n /** Employee whose payment method is being edited. */\n employeeId: string\n /** Override optional fields to be required. Reserved for future schema expansion — `type` is always required and always has a default. */\n optionalFieldsToRequire?: PaymentMethodFormOptionalFieldsToRequire\n /** Pre-fill form values. Server data (the current payment method) is used when no override is supplied. */\n defaultValues?: Partial<PaymentMethodFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link usePaymentMethodForm} on `form.Fields`.\n *\n * @public\n */\nexport interface PaymentMethodFormFields {\n /** Bound to `type`. */\n Type: ComponentType<TypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link usePaymentMethodForm}.\n *\n * @public\n */\nexport interface UsePaymentMethodFormReady extends BaseFormHookReady<\n PaymentMethodFormFieldsMetadata,\n PaymentMethodFormData,\n PaymentMethodFormFields\n> {\n /** The employee's current payment method, loaded from the API. */\n data: {\n paymentMethod: EmployeePaymentMethod\n }\n /** `isPending` reflects the in-flight update mutation; `mode` is always `'update'`. */\n status: { isPending: boolean; mode: 'update' }\n /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<EmployeePaymentMethod> | undefined>\n }\n}\n\n/** @internal */\nfunction buildPaymentMethodFieldsMetadata(\n base: Record<keyof PaymentMethodFormData, FieldMetadata>,\n) {\n return {\n type: withOptions<PaymentMethodType>(\n base.type,\n PAYMENT_METHOD_TYPES.map(value => ({ value, label: value })),\n [...PAYMENT_METHOD_TYPES],\n ),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for updating an employee's payment method.\n *\n * @remarks\n * Switches between Direct Deposit and Check. Always operates in update mode —\n * every employee has a payment method, defaulting to Check. Switching to Check\n * sends a minimal request body; switching to or staying on Direct Deposit\n * preserves the existing splits and version so split allocations are not lost\n * when only the type changes.\n *\n * @param props - See {@link UsePaymentMethodFormProps}.\n * @returns A loading-state result while the current payment method is loading, or a {@link UsePaymentMethodFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * usePaymentMethodForm,\n * SDKFormProvider,\n * PAYMENT_METHODS,\n * type PaymentMethodType,\n * } from '@gusto/embedded-react-sdk'\n *\n * function PaymentMethodScreen({ employeeId }: { employeeId: string }) {\n * const paymentMethodForm = usePaymentMethodForm({ employeeId })\n *\n * if (paymentMethodForm.isLoading) return null\n * const { Fields } = paymentMethodForm.form\n *\n * return (\n * <SDKFormProvider formHookResult={paymentMethodForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void paymentMethodForm.actions.onSubmit()\n * }}\n * >\n * <Fields.Type\n * label=\"Select payment method\"\n * getOptionLabel={(value: PaymentMethodType) =>\n * value === PAYMENT_METHODS.directDeposit ? 'Direct Deposit' : 'Check'\n * }\n * />\n * <button type=\"submit\" disabled={paymentMethodForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function usePaymentMethodForm({\n employeeId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UsePaymentMethodFormProps): HookLoadingResult | UsePaymentMethodFormReady {\n const paymentMethodQuery = useEmployeePaymentMethodGet({ employeeId })\n const paymentMethod = paymentMethodQuery.data?.employeePaymentMethod\n\n const [schema, metadataConfig] = useMemo(\n () => createPaymentMethodFormSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: PaymentMethodFormData = useMemo(\n () => ({\n type: (partnerDefaults?.type ??\n paymentMethod?.type ??\n PAYMENT_METHODS.directDeposit) as PaymentMethodType,\n }),\n [partnerDefaults, paymentMethod],\n )\n\n const formMethods = useForm<PaymentMethodFormData, unknown, PaymentMethodFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const updateMutation = useEmployeePaymentMethodUpdateMutation()\n const isPending = updateMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PaymentMethodForm')\n\n const errorHandling = composeErrorHandler([paymentMethodQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildPaymentMethodFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<EmployeePaymentMethod> | undefined> => {\n if (!paymentMethod) {\n throw new SDKInternalError('Cannot submit payment method form before data is loaded')\n }\n const currentPaymentMethod = paymentMethod\n let submitResult: HookSubmitResult<EmployeePaymentMethod> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: PaymentMethodFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const version = currentPaymentMethod.version as string\n const body =\n payload.type === PAYMENT_METHODS.check\n ? { version }\n : {\n ...currentPaymentMethod,\n version,\n splitBy: currentPaymentMethod.splitBy ?? SPLIT_BY.percentage,\n splits: currentPaymentMethod.splits ?? [],\n }\n\n const response = await updateMutation.mutateAsync({\n request: { employeeId, requestBody: { ...body, type: payload.type } },\n })\n\n if (!response.employeePaymentMethod) {\n throw new SDKInternalError('Payment method update failed')\n }\n\n submitResult = { mode: 'update' as const, data: response.employeePaymentMethod }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (paymentMethodQuery.isLoading || !paymentMethod) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { paymentMethod },\n status: { isPending, mode: 'update' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Type: TypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link usePaymentMethodForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UsePaymentMethodFormResult = HookLoadingResult | UsePaymentMethodFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link usePaymentMethodForm}.\n *\n * @public\n */\nexport type PaymentMethodFormFieldsMetadata = ReturnType<typeof buildPaymentMethodFieldsMetadata>\n"],"names":["buildPaymentMethodFieldsMetadata","base","withOptions","PAYMENT_METHOD_TYPES","value","usePaymentMethodForm","employeeId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","paymentMethodQuery","useEmployeePaymentMethodGet","paymentMethod","schema","metadataConfig","useMemo","createPaymentMethodFormSchema","resolvedDefaults","PAYMENT_METHODS","formMethods","useForm","zodResolver","updateMutation","useEmployeePaymentMethodUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","SDKInternalError","currentPaymentMethod","submitResult","resolve","data","payload","version","body","SPLIT_BY","response","hookFormInternals","useHookFormInternals","TypeField","createGetFormSubmissionValues"],"mappings":"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"}
1
+ {"version":3,"file":"usePaymentMethodForm.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport {\n PAYMENT_METHOD_TYPES,\n type PaymentMethodFormData,\n type PaymentMethodFormOptionalFieldsToRequire,\n type PaymentMethodFormOutputs,\n type PaymentMethodType,\n createPaymentMethodFormSchema,\n} from './usePaymentMethodFormSchema'\nimport type { TypeFieldProps } from './fields'\nimport { TypeField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\n\n/**\n * Props for {@link usePaymentMethodForm}.\n *\n * @public\n */\nexport interface UsePaymentMethodFormProps {\n /** Employee whose payment method is being edited. */\n employeeId: string\n /** Override optional fields to be required. Reserved for future schema expansion — `type` is always required and always has a default. */\n optionalFieldsToRequire?: PaymentMethodFormOptionalFieldsToRequire\n /** Pre-fill form values. Server data (the current payment method) is used when no override is supplied. */\n defaultValues?: Partial<PaymentMethodFormData>\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link usePaymentMethodForm} on `form.Fields`.\n *\n * @public\n */\nexport interface PaymentMethodFormFields {\n /** Bound to `type`. */\n Type: ComponentType<TypeFieldProps>\n}\n\n/**\n * Ready-state return value of {@link usePaymentMethodForm}.\n *\n * @public\n */\nexport interface UsePaymentMethodFormReady extends BaseFormHookReady<\n PaymentMethodFormFieldsMetadata,\n PaymentMethodFormData,\n PaymentMethodFormFields\n> {\n /** The employee's current payment method, loaded from the API. */\n data: {\n paymentMethod: EmployeePaymentMethod\n }\n /** `isPending` reflects the in-flight update mutation; `mode` is always `'update'`. */\n status: { isPending: boolean; mode: 'update' }\n /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<EmployeePaymentMethod> | undefined>\n }\n}\n\n/** @internal */\nfunction buildPaymentMethodFieldsMetadata(\n base: Record<keyof PaymentMethodFormData, FieldMetadata>,\n) {\n return {\n type: withOptions<PaymentMethodType>(\n base.type,\n PAYMENT_METHOD_TYPES.map(value => ({ value, label: value })),\n [...PAYMENT_METHOD_TYPES],\n ),\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for updating an employee's payment method.\n *\n * @remarks\n * Switches between Direct Deposit and Check. Always operates in update mode —\n * every employee has a payment method, defaulting to Check. Switching to Check\n * sends a minimal request body; switching to or staying on Direct Deposit\n * preserves the existing splits and version so split allocations are not lost\n * when only the type changes.\n *\n * @param props - See {@link UsePaymentMethodFormProps}.\n * @returns A loading-state result while the current payment method is loading, or a {@link UsePaymentMethodFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * usePaymentMethodForm,\n * SDKFormProvider,\n * PAYMENT_METHODS,\n * type PaymentMethodType,\n * } from '@gusto/embedded-react-sdk'\n *\n * function PaymentMethodScreen({ employeeId }: { employeeId: string }) {\n * const paymentMethodForm = usePaymentMethodForm({ employeeId })\n *\n * if (paymentMethodForm.isLoading) return null\n * const { Fields } = paymentMethodForm.form\n *\n * return (\n * <SDKFormProvider formHookResult={paymentMethodForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void paymentMethodForm.actions.onSubmit()\n * }}\n * >\n * <Fields.Type\n * label=\"Select payment method\"\n * getOptionLabel={(value: PaymentMethodType) =>\n * value === PAYMENT_METHODS.directDeposit ? 'Direct Deposit' : 'Check'\n * }\n * />\n * <button type=\"submit\" disabled={paymentMethodForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function usePaymentMethodForm({\n employeeId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UsePaymentMethodFormProps): HookLoadingResult | UsePaymentMethodFormReady {\n const paymentMethodQuery = useEmployeePaymentMethodGet({ employeeId })\n const paymentMethod = paymentMethodQuery.data?.employeePaymentMethod\n\n const [schema, metadataConfig] = useMemo(\n () => createPaymentMethodFormSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: PaymentMethodFormData = useMemo(\n () => ({\n type: (partnerDefaults?.type ??\n paymentMethod?.type ??\n PAYMENT_METHODS.directDeposit) as PaymentMethodType,\n }),\n [partnerDefaults, paymentMethod],\n )\n\n const formMethods = useForm<PaymentMethodFormData, unknown, PaymentMethodFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const updateMutation = useEmployeePaymentMethodUpdateMutation()\n const isPending = updateMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PaymentMethodForm')\n\n const errorHandling = composeErrorHandler([paymentMethodQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildPaymentMethodFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<EmployeePaymentMethod> | undefined> => {\n if (!paymentMethod) {\n throw new SDKInternalError('Cannot submit payment method form before data is loaded')\n }\n const currentPaymentMethod = paymentMethod\n let submitResult: HookSubmitResult<EmployeePaymentMethod> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: PaymentMethodFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const version = currentPaymentMethod.version as string\n const body =\n payload.type === PAYMENT_METHODS.check\n ? { version }\n : {\n ...currentPaymentMethod,\n version,\n splitBy: currentPaymentMethod.splitBy ?? SPLIT_BY.percentage,\n splits: currentPaymentMethod.splits ?? [],\n }\n\n const response = await updateMutation.mutateAsync({\n request: { employeeId, requestBody: { ...body, type: payload.type } },\n })\n\n if (!response.employeePaymentMethod) {\n throw new SDKInternalError('Payment method update failed')\n }\n\n submitResult = { mode: 'update' as const, data: response.employeePaymentMethod }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (paymentMethodQuery.isLoading || !paymentMethod) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { paymentMethod },\n status: { isPending, mode: 'update' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Type: TypeField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link usePaymentMethodForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UsePaymentMethodFormResult = HookLoadingResult | UsePaymentMethodFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link usePaymentMethodForm}.\n *\n * @public\n */\nexport type PaymentMethodFormFieldsMetadata = ReturnType<typeof buildPaymentMethodFieldsMetadata>\n"],"names":["buildPaymentMethodFieldsMetadata","base","withOptions","PAYMENT_METHOD_TYPES","value","usePaymentMethodForm","employeeId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","paymentMethodQuery","useEmployeePaymentMethodGet","paymentMethod","schema","metadataConfig","useMemo","createPaymentMethodFormSchema","resolvedDefaults","PAYMENT_METHODS","formMethods","useForm","zodResolver","updateMutation","useEmployeePaymentMethodUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","SDKInternalError","currentPaymentMethod","submitResult","resolve","data","payload","version","body","SPLIT_BY","response","hookFormInternals","useHookFormInternals","TypeField","createGetFormSubmissionValues"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { EmployeeBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/employeebankaccount';
2
- import { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod';
1
+ import { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount';
2
+ import { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod';
3
3
  import { BaseHookReady, HookLoadingResult, HookSubmitResult } from '../../../../partner-hook-utils/types';
4
4
  /** @internal */
5
5
  export interface UsePaymentMethodListParams {
@@ -1,7 +1,7 @@
1
- import { useEmployeePaymentMethodDeleteBankAccountMutation as A } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodDeleteBankAccount";
2
- import { useEmployeePaymentMethodsGetBankAccounts as M } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodsGetBankAccounts";
3
- import { useEmployeePaymentMethodGet as P } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodGet";
4
- import { useEmployeePaymentMethodUpdateMutation as b } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodUpdate";
1
+ import { useEmployeePaymentMethodDeleteBankAccountMutation as A } from "@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount";
2
+ import { useEmployeePaymentMethodsGetBankAccounts as M } from "@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts";
3
+ import { useEmployeePaymentMethodGet as P } from "@gusto/embedded-api/react-query/employeePaymentMethodGet";
4
+ import { useEmployeePaymentMethodUpdateMutation as b } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdate";
5
5
  import { useRef as B, useEffect as k } from "react";
6
6
  import { composeErrorHandler as E } from "../../../../partner-hook-utils/composeErrorHandler.js";
7
7
  import { useBaseSubmit as L } from "../../../Base/useBaseSubmit.js";
@@ -1 +1 @@
1
- {"version":3,"file":"usePaymentMethodList.js","sources":["../../../../../src/components/Employee/PaymentMethod/shared/usePaymentMethodList.ts"],"sourcesContent":["import type { EmployeeBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodDeleteBankAccountMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodDeleteBankAccount'\nimport { useEmployeePaymentMethodsGetBankAccounts } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodUpdate'\nimport { useEffect, useRef } from 'react'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport type { BaseHookReady, HookLoadingResult, HookSubmitResult } from '@/partner-hook-utils/types'\nimport { SPLIT_BY } from '@/shared/constants'\n\n/** @internal */\nexport interface UsePaymentMethodListParams {\n /** Employee whose payment method and bank accounts to load. */\n employeeId: string\n}\n\n/** @internal */\nexport interface UsePaymentMethodListReady extends BaseHookReady<\n { paymentMethod: EmployeePaymentMethod; bankAccounts: EmployeeBankAccount[] },\n { isFetching: boolean; isPending: boolean; deletePendingBankAccountUuid?: string }\n> {\n /** Delete a bank account by UUID. Returns the delete response on success or `undefined` on failure. */\n actions: {\n onDelete: (bankAccountUuid: string) => Promise<HookSubmitResult<unknown> | undefined>\n }\n}\n\n/** @internal */\nexport type UsePaymentMethodListResult = HookLoadingResult | UsePaymentMethodListReady\n\n/** @internal */\nexport function usePaymentMethodList({\n employeeId,\n}: UsePaymentMethodListParams): UsePaymentMethodListResult {\n const paymentMethodQuery = useEmployeePaymentMethodGet({ employeeId })\n const bankAccountsQuery = useEmployeePaymentMethodsGetBankAccounts({ employeeId })\n\n const paymentMethod = paymentMethodQuery.data?.employeePaymentMethod\n const bankAccounts = bankAccountsQuery.data?.employeeBankAccounts\n\n const deleteBankAccountMutation = useEmployeePaymentMethodDeleteBankAccountMutation()\n const { mutateAsync: mutatePaymentMethod } = useEmployeePaymentMethodUpdateMutation()\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PaymentMethodList')\n\n const normalizingRef = useRef(false)\n // Normalise single-account direct deposit to 100% on mount, skipping if already normalized\n // or if a normalization mutation is already in-flight (prevents version-conflict 409s).\n useEffect(() => {\n if (!paymentMethod) return\n const firstSplit = paymentMethod.splits?.[0]\n const alreadyNormalized =\n firstSplit?.splitAmount === 100 && paymentMethod.splitBy === SPLIT_BY.percentage\n if (\n paymentMethod.splits?.length === 1 &&\n paymentMethod.type === 'Direct Deposit' &&\n !alreadyNormalized &&\n !normalizingRef.current\n ) {\n normalizingRef.current = true\n void (async () => {\n try {\n await mutatePaymentMethod({\n request: {\n employeeId,\n requestBody: {\n splitBy: SPLIT_BY.percentage,\n splits: paymentMethod.splits!.map(split => ({\n ...split,\n splitAmount: 100,\n priority: 1,\n })),\n version: paymentMethod.version as string,\n type: 'Direct Deposit',\n },\n },\n })\n } finally {\n normalizingRef.current = false\n }\n })()\n }\n }, [employeeId, paymentMethod, mutatePaymentMethod])\n\n const errorHandling = composeErrorHandler([paymentMethodQuery, bankAccountsQuery], {\n submitError,\n setSubmitError,\n })\n\n const onDelete = async (\n bankAccountUuid: string,\n ): Promise<HookSubmitResult<unknown> | undefined> => {\n let submitResult: HookSubmitResult<unknown> | undefined\n await baseSubmitHandler(bankAccountUuid, async uuid => {\n const data = await deleteBankAccountMutation.mutateAsync({\n request: { employeeId, bankAccountUuid: uuid },\n })\n submitResult = { mode: 'update', data }\n })\n return submitResult\n }\n\n const deletePendingBankAccountUuid = deleteBankAccountMutation.isPending\n ? deleteBankAccountMutation.variables.request.bankAccountUuid\n : undefined\n\n if (\n paymentMethodQuery.isLoading ||\n bankAccountsQuery.isLoading ||\n !paymentMethod ||\n !bankAccounts\n ) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { paymentMethod, bankAccounts },\n status: {\n isFetching: paymentMethodQuery.isFetching || bankAccountsQuery.isFetching,\n isPending: deleteBankAccountMutation.isPending,\n deletePendingBankAccountUuid,\n },\n actions: { onDelete },\n errorHandling,\n }\n}\n"],"names":["usePaymentMethodList","employeeId","paymentMethodQuery","useEmployeePaymentMethodGet","bankAccountsQuery","useEmployeePaymentMethodsGetBankAccounts","paymentMethod","bankAccounts","deleteBankAccountMutation","useEmployeePaymentMethodDeleteBankAccountMutation","mutatePaymentMethod","useEmployeePaymentMethodUpdateMutation","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","normalizingRef","useRef","useEffect","alreadyNormalized","SPLIT_BY","split","errorHandling","composeErrorHandler","onDelete","bankAccountUuid","submitResult","uuid","deletePendingBankAccountUuid"],"mappings":";;;;;;;;AAiCO,SAASA,EAAqB;AAAA,EACnC,YAAAC;AACF,GAA2D;AACzD,QAAMC,IAAqBC,EAA4B,EAAE,YAAAF,GAAY,GAC/DG,IAAoBC,EAAyC,EAAE,YAAAJ,GAAY,GAE3EK,IAAgBJ,EAAmB,MAAM,uBACzCK,IAAeH,EAAkB,MAAM,sBAEvCI,IAA4BC,EAAA,GAC5B,EAAE,aAAaC,EAAA,IAAwBC,EAAA,GAEvC;AAAA,IACJ,mBAAAC;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,mBAAmB,GAE/BC,IAAiBC,EAAO,EAAK;AAGnC,EAAAC,EAAU,MAAM;AACd,QAAI,CAACZ,EAAe;AAEpB,UAAMa,IADab,EAAc,SAAS,CAAC,GAE7B,gBAAgB,OAAOA,EAAc,YAAYc,EAAS;AACxE,IACEd,EAAc,QAAQ,WAAW,KACjCA,EAAc,SAAS,oBACvB,CAACa,KACD,CAACH,EAAe,YAEhBA,EAAe,UAAU,KACnB,YAAY;AAChB,UAAI;AACF,cAAMN,EAAoB;AAAA,UACxB,SAAS;AAAA,YACP,YAAAT;AAAA,YACA,aAAa;AAAA,cACX,SAASmB,EAAS;AAAA,cAClB,QAAQd,EAAc,OAAQ,IAAI,CAAAe,OAAU;AAAA,gBAC1C,GAAGA;AAAA,gBACH,aAAa;AAAA,gBACb,UAAU;AAAA,cAAA,EACV;AAAA,cACF,SAASf,EAAc;AAAA,cACvB,MAAM;AAAA,YAAA;AAAA,UACR;AAAA,QACF,CACD;AAAA,MACH,UAAA;AACE,QAAAU,EAAe,UAAU;AAAA,MAC3B;AAAA,IACF,GAAA;AAAA,EAEJ,GAAG,CAACf,GAAYK,GAAeI,CAAmB,CAAC;AAEnD,QAAMY,IAAgBC,EAAoB,CAACrB,GAAoBE,CAAiB,GAAG;AAAA,IACjF,aAAAS;AAAA,IACA,gBAAAC;AAAA,EAAA,CACD,GAEKU,IAAW,OACfC,MACmD;AACnD,QAAIC;AACJ,iBAAMd,EAAkBa,GAAiB,OAAME,MAAQ;AAIrD,MAAAD,IAAe,EAAE,MAAM,UAAU,MAHpB,MAAMlB,EAA0B,YAAY;AAAA,QACvD,SAAS,EAAE,YAAAP,GAAY,iBAAiB0B,EAAA;AAAA,MAAK,CAC9C,EACgC;AAAA,IACnC,CAAC,GACMD;AAAA,EACT,GAEME,IAA+BpB,EAA0B,YAC3DA,EAA0B,UAAU,QAAQ,kBAC5C;AAEJ,SACEN,EAAmB,aACnBE,EAAkB,aAClB,CAACE,KACD,CAACC,IAEM,EAAE,WAAW,IAAM,eAAAe,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,eAAAhB,GAAe,cAAAC,EAAA;AAAA,IACvB,QAAQ;AAAA,MACN,YAAYL,EAAmB,cAAcE,EAAkB;AAAA,MAC/D,WAAWI,EAA0B;AAAA,MACrC,8BAAAoB;AAAA,IAAA;AAAA,IAEF,SAAS,EAAE,UAAAJ,EAAA;AAAA,IACX,eAAAF;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"usePaymentMethodList.js","sources":["../../../../../src/components/Employee/PaymentMethod/shared/usePaymentMethodList.ts"],"sourcesContent":["import type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodDeleteBankAccountMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodDeleteBankAccount'\nimport { useEmployeePaymentMethodsGetBankAccounts } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport { useEffect, useRef } from 'react'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport type { BaseHookReady, HookLoadingResult, HookSubmitResult } from '@/partner-hook-utils/types'\nimport { SPLIT_BY } from '@/shared/constants'\n\n/** @internal */\nexport interface UsePaymentMethodListParams {\n /** Employee whose payment method and bank accounts to load. */\n employeeId: string\n}\n\n/** @internal */\nexport interface UsePaymentMethodListReady extends BaseHookReady<\n { paymentMethod: EmployeePaymentMethod; bankAccounts: EmployeeBankAccount[] },\n { isFetching: boolean; isPending: boolean; deletePendingBankAccountUuid?: string }\n> {\n /** Delete a bank account by UUID. Returns the delete response on success or `undefined` on failure. */\n actions: {\n onDelete: (bankAccountUuid: string) => Promise<HookSubmitResult<unknown> | undefined>\n }\n}\n\n/** @internal */\nexport type UsePaymentMethodListResult = HookLoadingResult | UsePaymentMethodListReady\n\n/** @internal */\nexport function usePaymentMethodList({\n employeeId,\n}: UsePaymentMethodListParams): UsePaymentMethodListResult {\n const paymentMethodQuery = useEmployeePaymentMethodGet({ employeeId })\n const bankAccountsQuery = useEmployeePaymentMethodsGetBankAccounts({ employeeId })\n\n const paymentMethod = paymentMethodQuery.data?.employeePaymentMethod\n const bankAccounts = bankAccountsQuery.data?.employeeBankAccounts\n\n const deleteBankAccountMutation = useEmployeePaymentMethodDeleteBankAccountMutation()\n const { mutateAsync: mutatePaymentMethod } = useEmployeePaymentMethodUpdateMutation()\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PaymentMethodList')\n\n const normalizingRef = useRef(false)\n // Normalise single-account direct deposit to 100% on mount, skipping if already normalized\n // or if a normalization mutation is already in-flight (prevents version-conflict 409s).\n useEffect(() => {\n if (!paymentMethod) return\n const firstSplit = paymentMethod.splits?.[0]\n const alreadyNormalized =\n firstSplit?.splitAmount === 100 && paymentMethod.splitBy === SPLIT_BY.percentage\n if (\n paymentMethod.splits?.length === 1 &&\n paymentMethod.type === 'Direct Deposit' &&\n !alreadyNormalized &&\n !normalizingRef.current\n ) {\n normalizingRef.current = true\n void (async () => {\n try {\n await mutatePaymentMethod({\n request: {\n employeeId,\n requestBody: {\n splitBy: SPLIT_BY.percentage,\n splits: paymentMethod.splits!.map(split => ({\n ...split,\n splitAmount: 100,\n priority: 1,\n })),\n version: paymentMethod.version as string,\n type: 'Direct Deposit',\n },\n },\n })\n } finally {\n normalizingRef.current = false\n }\n })()\n }\n }, [employeeId, paymentMethod, mutatePaymentMethod])\n\n const errorHandling = composeErrorHandler([paymentMethodQuery, bankAccountsQuery], {\n submitError,\n setSubmitError,\n })\n\n const onDelete = async (\n bankAccountUuid: string,\n ): Promise<HookSubmitResult<unknown> | undefined> => {\n let submitResult: HookSubmitResult<unknown> | undefined\n await baseSubmitHandler(bankAccountUuid, async uuid => {\n const data = await deleteBankAccountMutation.mutateAsync({\n request: { employeeId, bankAccountUuid: uuid },\n })\n submitResult = { mode: 'update', data }\n })\n return submitResult\n }\n\n const deletePendingBankAccountUuid = deleteBankAccountMutation.isPending\n ? deleteBankAccountMutation.variables.request.bankAccountUuid\n : undefined\n\n if (\n paymentMethodQuery.isLoading ||\n bankAccountsQuery.isLoading ||\n !paymentMethod ||\n !bankAccounts\n ) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { paymentMethod, bankAccounts },\n status: {\n isFetching: paymentMethodQuery.isFetching || bankAccountsQuery.isFetching,\n isPending: deleteBankAccountMutation.isPending,\n deletePendingBankAccountUuid,\n },\n actions: { onDelete },\n errorHandling,\n }\n}\n"],"names":["usePaymentMethodList","employeeId","paymentMethodQuery","useEmployeePaymentMethodGet","bankAccountsQuery","useEmployeePaymentMethodsGetBankAccounts","paymentMethod","bankAccounts","deleteBankAccountMutation","useEmployeePaymentMethodDeleteBankAccountMutation","mutatePaymentMethod","useEmployeePaymentMethodUpdateMutation","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","normalizingRef","useRef","useEffect","alreadyNormalized","SPLIT_BY","split","errorHandling","composeErrorHandler","onDelete","bankAccountUuid","submitResult","uuid","deletePendingBankAccountUuid"],"mappings":";;;;;;;;AAiCO,SAASA,EAAqB;AAAA,EACnC,YAAAC;AACF,GAA2D;AACzD,QAAMC,IAAqBC,EAA4B,EAAE,YAAAF,GAAY,GAC/DG,IAAoBC,EAAyC,EAAE,YAAAJ,GAAY,GAE3EK,IAAgBJ,EAAmB,MAAM,uBACzCK,IAAeH,EAAkB,MAAM,sBAEvCI,IAA4BC,EAAA,GAC5B,EAAE,aAAaC,EAAA,IAAwBC,EAAA,GAEvC;AAAA,IACJ,mBAAAC;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,mBAAmB,GAE/BC,IAAiBC,EAAO,EAAK;AAGnC,EAAAC,EAAU,MAAM;AACd,QAAI,CAACZ,EAAe;AAEpB,UAAMa,IADab,EAAc,SAAS,CAAC,GAE7B,gBAAgB,OAAOA,EAAc,YAAYc,EAAS;AACxE,IACEd,EAAc,QAAQ,WAAW,KACjCA,EAAc,SAAS,oBACvB,CAACa,KACD,CAACH,EAAe,YAEhBA,EAAe,UAAU,KACnB,YAAY;AAChB,UAAI;AACF,cAAMN,EAAoB;AAAA,UACxB,SAAS;AAAA,YACP,YAAAT;AAAA,YACA,aAAa;AAAA,cACX,SAASmB,EAAS;AAAA,cAClB,QAAQd,EAAc,OAAQ,IAAI,CAAAe,OAAU;AAAA,gBAC1C,GAAGA;AAAA,gBACH,aAAa;AAAA,gBACb,UAAU;AAAA,cAAA,EACV;AAAA,cACF,SAASf,EAAc;AAAA,cACvB,MAAM;AAAA,YAAA;AAAA,UACR;AAAA,QACF,CACD;AAAA,MACH,UAAA;AACE,QAAAU,EAAe,UAAU;AAAA,MAC3B;AAAA,IACF,GAAA;AAAA,EAEJ,GAAG,CAACf,GAAYK,GAAeI,CAAmB,CAAC;AAEnD,QAAMY,IAAgBC,EAAoB,CAACrB,GAAoBE,CAAiB,GAAG;AAAA,IACjF,aAAAS;AAAA,IACA,gBAAAC;AAAA,EAAA,CACD,GAEKU,IAAW,OACfC,MACmD;AACnD,QAAIC;AACJ,iBAAMd,EAAkBa,GAAiB,OAAME,MAAQ;AAIrD,MAAAD,IAAe,EAAE,MAAM,UAAU,MAHpB,MAAMlB,EAA0B,YAAY;AAAA,QACvD,SAAS,EAAE,YAAAP,GAAY,iBAAiB0B,EAAA;AAAA,MAAK,CAC9C,EACgC;AAAA,IACnC,CAAC,GACMD;AAAA,EACT,GAEME,IAA+BpB,EAA0B,YAC3DA,EAA0B,UAAU,QAAQ,kBAC5C;AAEJ,SACEN,EAAmB,aACnBE,EAAkB,aAClB,CAACE,KACD,CAACC,IAEM,EAAE,WAAW,IAAM,eAAAe,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,eAAAhB,GAAe,cAAAC,EAAA;AAAA,IACvB,QAAQ;AAAA,MACN,YAAYL,EAAmB,cAAcE,EAAkB;AAAA,MAC/D,WAAWI,EAA0B;AAAA,MACrC,8BAAAoB;AAAA,IAAA;AAAA,IAEF,SAAS,EAAE,UAAAJ,EAAA;AAAA,IACX,eAAAF;AAAA,EAAA;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { UseFormProps } from 'react-hook-form';
3
- import { EmployeeBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/employeebankaccount';
4
- import { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod';
3
+ import { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount';
4
+ import { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod';
5
5
  import { SplitByValue, SplitPaymentsFormData, SplitPaymentsFormOptionalFieldsToRequire } from './useSplitPaymentsFormSchema';
6
6
  import { SplitByFieldProps } from './fields';
7
7
  import { SplitFieldEntry } from './splitFieldFactory';
@@ -1,9 +1,9 @@
1
1
  import { useMemo as f, useEffect as $, useRef as R, useCallback as st } from "react";
2
2
  import { useForm as ut, useWatch as L, useFormState as mt } from "react-hook-form";
3
3
  import { zodResolver as at } from "@hookform/resolvers/zod";
4
- import { useEmployeePaymentMethodGet as ct } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodGet";
5
- import { useEmployeePaymentMethodsGetBankAccounts as lt } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodsGetBankAccounts";
6
- import { useEmployeePaymentMethodUpdateMutation as pt } from "@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodUpdate";
4
+ import { useEmployeePaymentMethodGet as ct } from "@gusto/embedded-api/react-query/employeePaymentMethodGet";
5
+ import { useEmployeePaymentMethodsGetBankAccounts as lt } from "@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts";
6
+ import { useEmployeePaymentMethodUpdateMutation as pt } from "@gusto/embedded-api/react-query/employeePaymentMethodUpdate";
7
7
  import { createSplitPaymentsFormSchema as dt, PERCENTAGE_TOTAL_PATH as j, SplitPaymentsFormErrorCodes as yt, SPLIT_BY_VALUES as Y } from "./useSplitPaymentsFormSchema.js";
8
8
  import { SplitByField as ft } from "./fields.js";
9
9
  import { buildSplitFieldEntries as At } from "./splitFieldFactory.js";
@@ -1 +1 @@
1
- {"version":3,"file":"useSplitPaymentsForm.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useForm, useFormState, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeBankAccount } from '@gusto/embedded-api-v-2026-02-01/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api-v-2026-02-01/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodsGetBankAccounts } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeePaymentMethodUpdate'\nimport {\n PERCENTAGE_TOTAL_PATH,\n SPLIT_BY_VALUES,\n SplitPaymentsFormErrorCodes,\n type SplitByValue,\n type SplitPaymentsFormData,\n type SplitPaymentsFormOptionalFieldsToRequire,\n type SplitPaymentsFormOutputs,\n createSplitPaymentsFormSchema,\n} from './useSplitPaymentsFormSchema'\nimport { SplitByField, type SplitByFieldProps } from './fields'\nimport { buildSplitFieldEntries, type SplitFieldEntry } from './splitFieldFactory'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldMetadataWithOptions,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { centsToDollars, dollarsToCents } from '@/helpers/currencyHelpers'\nimport { PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\n\n/**\n * A single split entry — pairs a bank account identifier with its current split allocation.\n *\n * @remarks\n * Surfaced on `data.splits` from {@link useSplitPaymentsForm}. Derived from\n * `paymentMethod.splits` when present, otherwise from the employee's bank\n * accounts (one entry per account, no allocated amount). Carries the raw\n * domain data — use it for label construction or lookups by uuid.\n *\n * @public\n */\nexport interface WorkingSplit {\n /** UUID of the underlying bank account. */\n uuid: string\n /** Account nickname, when available. */\n name: string | null\n /** Masked account number suffix, when available. */\n hiddenAccountNumber: string | null\n /** Allocation amount — `null` for the remainder split in Amount mode and for splits that haven't been allocated yet. */\n splitAmount: number | null\n /** Ordering value — splits are processed in ascending priority; the highest priority is the remainder. */\n priority: number\n}\n\n/**\n * Props for {@link useSplitPaymentsForm}.\n *\n * @public\n */\nexport interface UseSplitPaymentsFormProps {\n /** Employee whose payment splits are being edited. */\n employeeId: string\n /** Override optional fields to be required. Currently a no-op — `splitBy` and `priority` are always required, and per-split `splitAmount` required-ness is automatic. */\n optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useSplitPaymentsForm} on `form.Fields`.\n *\n * @public\n */\nexport interface SplitPaymentsFormFields {\n /** Radio group bound to `splitBy`; selects Percentage or Amount split mode. */\n SplitBy: ComponentType<SplitByFieldProps>\n /** One entry per bank account, each carrying a pre-bound `Field` component for the per-split amount. */\n splits: SplitFieldEntry[]\n}\n\n/**\n * Ready-state return value of {@link useSplitPaymentsForm}.\n *\n * @public\n */\nexport interface UseSplitPaymentsFormReady extends BaseFormHookReady<\n SplitPaymentsFormFieldsMetadata,\n SplitPaymentsFormData,\n SplitPaymentsFormFields\n> {\n /** Server-fetched data and derived working values. */\n data: {\n /** The employee's current payment method. */\n paymentMethod: EmployeePaymentMethod\n /** All bank accounts available to allocate splits across. */\n bankAccounts: EmployeeBankAccount[]\n /** The current working split entries, one per bank account. */\n splits: WorkingSplit[]\n /** UUID of the split that absorbs the remainder in Amount mode (always the last by priority). */\n remainderId: string\n }\n /** Submission state and reactive form-level flags. */\n status: {\n /** `true` while the update mutation is in flight. */\n isPending: boolean\n /** Always `'update'` — the hook always edits an existing payment method. */\n mode: 'update'\n /** Current `splitBy` value, reactively tracked. */\n splitBy: SplitByValue\n /** Live sum of `splitAmount` values; useful for displaying the current total in Percentage mode. */\n percentageTotal: number\n /**\n * `true` after a failed Percentage-mode Save when the splits don't sum to\n * 100; clears live as the user corrects the total. Follows the standard\n * react-hook-form validation lifecycle (controlled by `validationMode`).\n * Only surfaces in Percentage mode.\n */\n hasPercentageImbalance: boolean\n }\n /** Actions that mutate the form or submit it. */\n actions: {\n /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */\n onSubmit: () => Promise<HookSubmitResult<EmployeePaymentMethod> | undefined>\n /**\n * Reorder splits by uuid (Amount mode). Pass the ordered list of split\n * uuids; the last uuid becomes the remainder. The hook writes the new\n * priority map and re-anchors the remainder's `splitAmount` to `null`\n * (clearing the previous remainder to `0`).\n */\n reorderSplits: (orderedUuids: string[]) => void\n }\n}\n\nconst buildWorkingSplits = (\n paymentMethod: EmployeePaymentMethod,\n bankAccounts: EmployeeBankAccount[],\n): WorkingSplit[] => {\n if (paymentMethod.splits && paymentMethod.splits.length > 0) {\n return paymentMethod.splits.map(split => ({\n uuid: split.uuid,\n name: split.name ?? null,\n hiddenAccountNumber: split.hiddenAccountNumber ?? null,\n splitAmount: split.splitAmount ?? null,\n priority: split.priority ?? 0,\n }))\n }\n return bankAccounts.map((account, index) => ({\n uuid: account.uuid,\n name: account.name ?? null,\n hiddenAccountNumber: account.hiddenAccountNumber ?? null,\n splitAmount: null,\n priority: index + 1,\n }))\n}\n\n/**\n * Headless React Hook Form hook for splitting an employee's Direct Deposit across multiple bank accounts.\n *\n * @remarks\n * Supports two split modes: Percentage (whole-number shares that sum to 100)\n * and Amount (dollar amounts, with the last-priority split absorbing the\n * remainder). Always operates in update mode against the employee's existing\n * payment method.\n *\n * The Percentage sum-to-100 invariant is surfaced via\n * `status.hasPercentageImbalance` (not as a per-field error). With the default\n * `validationMode: 'onSubmit'`, the imbalance flag appears after the first\n * failed Save and clears live as the user corrects the total.\n *\n * @param props - See {@link UseSplitPaymentsFormProps}.\n * @returns A loading-state result while the payment method and bank accounts are loading, or a {@link UseSplitPaymentsFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useSplitPaymentsForm,\n * SDKFormProvider,\n * type SplitByValue,\n * type UseSplitPaymentsFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function SplitPaycheckScreen({ employeeId }: { employeeId: string }) {\n * const splitForm = useSplitPaymentsForm({ employeeId })\n *\n * if (splitForm.isLoading) return null\n * return <SplitPaycheckReady splitForm={splitForm} />\n * }\n *\n * function SplitPaycheckReady({ splitForm }: { splitForm: UseSplitPaymentsFormReady }) {\n * const { Fields } = splitForm.form\n * const { hasPercentageImbalance, percentageTotal } = splitForm.status\n *\n * return (\n * <SDKFormProvider formHookResult={splitForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void splitForm.actions.onSubmit()\n * }}\n * >\n * {hasPercentageImbalance && (\n * <div role=\"alert\">Splits must total 100%. Currently {percentageTotal}%.</div>\n * )}\n * <Fields.SplitBy label=\"Split by\" getOptionLabel={(value: SplitByValue) => value} />\n * {Fields.splits.map(split => (\n * <split.Field\n * key={split.uuid}\n * label={split.name ?? 'Account'}\n * min={0}\n * />\n * ))}\n * <button type=\"submit\" disabled={splitForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useSplitPaymentsForm({\n employeeId,\n optionalFieldsToRequire,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseSplitPaymentsFormProps): UseSplitPaymentsFormResult {\n const paymentMethodQuery = useEmployeePaymentMethodGet({ employeeId })\n const bankAccountsQuery = useEmployeePaymentMethodsGetBankAccounts({ employeeId })\n\n const paymentMethod = paymentMethodQuery.data?.employeePaymentMethod\n const bankAccounts = bankAccountsQuery.data?.employeeBankAccounts\n\n const splits = useMemo<WorkingSplit[]>(\n () => (paymentMethod && bankAccounts ? buildWorkingSplits(paymentMethod, bankAccounts) : []),\n [paymentMethod, bankAccounts],\n )\n\n const [schema, metadataConfig] = useMemo(\n () => createSplitPaymentsFormSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: SplitPaymentsFormData = useMemo(() => {\n const isAmountSplit = paymentMethod?.splitBy === SPLIT_BY.amount\n const splitAmount: Record<string, number | null> = {}\n const priority: Record<string, number> = {}\n splits.forEach(split => {\n splitAmount[split.uuid] = isAmountSplit\n ? centsToDollars(split.splitAmount)\n : split.splitAmount\n priority[split.uuid] = split.priority\n })\n return {\n splitBy: (paymentMethod?.splitBy ?? SPLIT_BY.percentage) as SplitByValue,\n splitAmount,\n priority,\n }\n }, [paymentMethod, splits])\n\n const formMethods = useForm<SplitPaymentsFormData, unknown, SplitPaymentsFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const updateMutation = useEmployeePaymentMethodUpdateMutation()\n const isPending = updateMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('SplitPaymentsForm')\n\n const errorHandling = composeErrorHandler([paymentMethodQuery, bankAccountsQuery], {\n submitError,\n setSubmitError,\n })\n\n const watchedSplitBy = useWatch({ control: formMethods.control, name: 'splitBy' })\n const watchedPriority = useWatch({ control: formMethods.control, name: 'priority' })\n const watchedSplitAmount = useWatch({ control: formMethods.control, name: 'splitAmount' })\n\n const percentageTotal = useMemo(() => {\n if (watchedSplitBy !== SPLIT_BY.percentage) return 0\n return Object.values(watchedSplitAmount).reduce<number>(\n (acc, v) => acc + (typeof v === 'number' && Number.isFinite(v) ? v : 0),\n 0,\n )\n }, [watchedSplitBy, watchedSplitAmount])\n\n // Subscribe to the schema-emitted imbalance error. The schema places it at\n // a synthetic path (`PERCENTAGE_TOTAL_PATH`) so it does not collide with\n // per-uuid `splitAmount.<uuid>` errors. Following the standard validation\n // lifecycle means `validationMode` (onSubmit / onChange / onBlur / ...)\n // controls when the alert can appear. We subscribe to the full errors map\n // because `name` only tracks registered field paths and our synthetic key\n // is not a registered field. The derivation is also gated on Percentage\n // mode so a stale error from a prior Percentage submit can't leak into\n // Amount mode after a toggle.\n const { errors: validationErrors, isSubmitted } = useFormState({\n control: formMethods.control,\n })\n const hasPercentageImbalance =\n watchedSplitBy === SPLIT_BY.percentage &&\n (validationErrors as Record<string, { message?: string } | undefined>)[PERCENTAGE_TOTAL_PATH]\n ?.message === SplitPaymentsFormErrorCodes.PERCENTAGE_TOTAL_MISMATCH\n\n // Re-sync the synthetic PERCENTAGE_TOTAL_PATH error whenever any\n // `splitAmount` value changes (in Percentage mode, after the first\n // submit attempt). RHF's per-field reValidate after a failed submit\n // scopes the resolver merge to the changed field's name, so an error\n // at our form-level synthetic path is otherwise left stuck once the\n // user has typed the total back to 100. Targeting the synthetic name\n // re-runs the resolver and lets RHF set/unset that single path through\n // its normal merge — preserving per-field error lifecycles unchanged.\n const { trigger } = formMethods\n useEffect(() => {\n if (!isSubmitted) return\n if (watchedSplitBy !== SPLIT_BY.percentage) return\n // `trigger`'s type is keyed to registered field paths, but the\n // synthetic `percentageTotal` resolves through RHF's get/set/unset\n // helpers at runtime — cast at the boundary to keep the contract\n // honest above.\n void trigger(PERCENTAGE_TOTAL_PATH as Parameters<typeof trigger>[0])\n }, [isSubmitted, watchedSplitBy, watchedSplitAmount, trigger])\n\n const remainderId = useMemo(() => {\n if (!Object.keys(watchedPriority).length) return ''\n return Object.entries(watchedPriority).reduce((maxId, [uuid, priority]) => {\n if (!maxId) return uuid\n const currentMax = watchedPriority[maxId] ?? 0\n return priority > currentMax ? uuid : maxId\n }, '')\n }, [watchedPriority])\n\n // Reset splitAmount values when the user toggles splitBy. Skip the first\n // post-load run so values loaded from `paymentMethod.splits` are preserved\n // on mount — only the user's explicit toggle should clear them.\n const splitsRef = useRef(splits)\n splitsRef.current = splits\n const remainderIdRef = useRef(remainderId)\n remainderIdRef.current = remainderId\n const previousSplitByRef = useRef<SplitByValue | null>(null)\n const { setValue, resetField } = formMethods\n\n useEffect(() => {\n if (!splitsRef.current.length) return\n if (previousSplitByRef.current === null) {\n previousSplitByRef.current = watchedSplitBy as SplitByValue\n return\n }\n if (previousSplitByRef.current === watchedSplitBy) return\n previousSplitByRef.current = watchedSplitBy as SplitByValue\n\n if (watchedSplitBy === SPLIT_BY.amount) {\n const newValues = splitsRef.current.reduce<Record<string, number | null>>((acc, curr) => {\n acc[curr.uuid] = curr.uuid === remainderIdRef.current ? null : 0\n return acc\n }, {})\n setValue('splitAmount', newValues)\n } else {\n const newValues = splitsRef.current.reduce<Record<string, number | null>>(\n (acc, curr, index) => {\n acc[curr.uuid] = index === 0 ? 100 : 0\n return acc\n },\n {},\n )\n setValue('splitAmount', newValues)\n }\n }, [watchedSplitBy, setValue])\n\n const reorderSplits = useCallback(\n (orderedUuids: string[]) => {\n const currentSplits = splitsRef.current\n const knownUuids = new Set(currentSplits.map(s => s.uuid))\n if (\n orderedUuids.length !== knownUuids.size ||\n !orderedUuids.every(uuid => knownUuids.has(uuid))\n ) {\n return\n }\n\n const newPriorities = orderedUuids.reduce<Record<string, number>>((acc, uuid, index) => {\n acc[uuid] = index + 1\n return acc\n }, {})\n const newRemainderId = orderedUuids[orderedUuids.length - 1]\n if (!newRemainderId) return\n\n setValue('priority', newPriorities)\n const previousRemainder = remainderIdRef.current\n if (previousRemainder && previousRemainder !== newRemainderId) {\n resetField(`splitAmount.${previousRemainder}`)\n setValue(`splitAmount.${previousRemainder}`, 0)\n }\n setValue(`splitAmount.${newRemainderId}`, null)\n },\n [setValue, resetField],\n )\n\n const splitByOptions = SPLIT_BY_VALUES.map(value => ({ value, label: value }))\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const dynamicSplitMetadata = useMemo<Record<`splitAmount.${string}`, FieldMetadata>>(() => {\n const entries: Record<`splitAmount.${string}`, FieldMetadata> = {}\n const isAmountSplit = watchedSplitBy === SPLIT_BY.amount\n for (const split of splits) {\n const path = `splitAmount.${split.uuid}` as const\n const isRemainder = isAmountSplit && split.uuid === remainderId\n // Every split — including the remainder — is \"required\" from the\n // user's perspective: the remainder always carries a value at submit\n // (the API absorbs leftover). The form-state `null` is a modeling\n // detail, not a UX choice, so we don't surface it as \"(optional)\" on\n // the label. `isDisabled` already conveys the non-interactivity.\n entries[path] = {\n name: path,\n isRequired: true,\n isDisabled: isRemainder,\n }\n }\n return entries\n }, [splits, watchedSplitBy, remainderId])\n const fieldsMetadata: SplitPaymentsFormFieldsMetadata = {\n splitBy: withOptions<SplitByValue>(baseMetadata.splitBy, splitByOptions, [...SPLIT_BY_VALUES]),\n splitAmount: baseMetadata.splitAmount,\n priority: baseMetadata.priority,\n ...dynamicSplitMetadata,\n }\n\n const splitFieldEntries = useMemo(\n () =>\n buildSplitFieldEntries(\n splits.map(s => ({\n uuid: s.uuid,\n name: s.name,\n hiddenAccountNumber: s.hiddenAccountNumber,\n })),\n ),\n [splits],\n )\n\n const onSubmit = async (): Promise<HookSubmitResult<EmployeePaymentMethod> | undefined> => {\n if (!paymentMethod) {\n throw new SDKInternalError('Cannot submit split payments form before data is loaded')\n }\n const currentPaymentMethod = paymentMethod\n const currentSplits = splits\n let submitResult: HookSubmitResult<EmployeePaymentMethod> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: SplitPaymentsFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const isAmountSplit = payload.splitBy === SPLIT_BY.amount\n const body = {\n ...currentPaymentMethod,\n version: currentPaymentMethod.version as string,\n splitBy: payload.splitBy,\n splits: currentSplits.map(split => {\n const splitAmountValue = payload.splitAmount[split.uuid] ?? null\n return {\n uuid: split.uuid,\n name: split.name ?? undefined,\n hiddenAccountNumber: split.hiddenAccountNumber ?? undefined,\n splitAmount: isAmountSplit ? dollarsToCents(splitAmountValue) : splitAmountValue,\n priority: payload.priority[split.uuid],\n }\n }),\n }\n\n const response = await updateMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: { ...body, type: PAYMENT_METHODS.directDeposit },\n },\n })\n\n if (!response.employeePaymentMethod) {\n throw new SDKInternalError('Payment method update failed')\n }\n\n submitResult = { mode: 'update' as const, data: response.employeePaymentMethod }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (\n paymentMethodQuery.isLoading ||\n bankAccountsQuery.isLoading ||\n !paymentMethod ||\n !bankAccounts\n ) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n paymentMethod,\n bankAccounts,\n splits,\n remainderId,\n },\n status: {\n isPending,\n mode: 'update' as const,\n splitBy: watchedSplitBy as SplitByValue,\n percentageTotal,\n hasPercentageImbalance,\n },\n actions: { onSubmit, reorderSplits },\n errorHandling,\n form: {\n Fields: { SplitBy: SplitByField, splits: splitFieldEntries },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useSplitPaymentsForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseSplitPaymentsFormResult = HookLoadingResult | UseSplitPaymentsFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useSplitPaymentsForm}.\n *\n * @remarks\n * The three named fields are always present. In addition, one dynamic entry is\n * keyed by full form path per split — `splitAmount.<bankAccountUuid>` — so the\n * number and identity of those keys depend on the employee's bank accounts at\n * runtime.\n *\n * @public\n * @interface\n */\nexport type SplitPaymentsFormFieldsMetadata = {\n /** Split mode selector (by percentage or by fixed amount). */\n splitBy: FieldMetadataWithOptions<SplitByValue>\n /** The `splitAmount` container field. Per-split values live at `splitAmount.<uuid>`. */\n splitAmount: FieldMetadata\n /** The `priority` container field. */\n priority: FieldMetadata\n} & Record<`splitAmount.${string}`, FieldMetadata>\n"],"names":["buildWorkingSplits","paymentMethod","bankAccounts","split","account","index","useSplitPaymentsForm","employeeId","optionalFieldsToRequire","validationMode","shouldFocusError","paymentMethodQuery","useEmployeePaymentMethodGet","bankAccountsQuery","useEmployeePaymentMethodsGetBankAccounts","splits","useMemo","schema","metadataConfig","createSplitPaymentsFormSchema","resolvedDefaults","isAmountSplit","SPLIT_BY","splitAmount","priority","centsToDollars","formMethods","useForm","zodResolver","updateMutation","useEmployeePaymentMethodUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","watchedSplitBy","useWatch","watchedPriority","watchedSplitAmount","percentageTotal","acc","v","validationErrors","isSubmitted","useFormState","hasPercentageImbalance","PERCENTAGE_TOTAL_PATH","SplitPaymentsFormErrorCodes","trigger","useEffect","remainderId","maxId","uuid","currentMax","splitsRef","useRef","remainderIdRef","previousSplitByRef","setValue","resetField","newValues","curr","reorderSplits","useCallback","orderedUuids","currentSplits","knownUuids","s","newPriorities","newRemainderId","previousRemainder","splitByOptions","SPLIT_BY_VALUES","value","baseMetadata","useDeriveFieldsMetadata","dynamicSplitMetadata","entries","path","isRemainder","fieldsMetadata","withOptions","splitFieldEntries","buildSplitFieldEntries","onSubmit","SDKInternalError","currentPaymentMethod","submitResult","resolve","data","payload","body","splitAmountValue","dollarsToCents","response","PAYMENT_METHODS","hookFormInternals","useHookFormInternals","SplitByField","createGetFormSubmissionValues"],"mappings":"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"}
1
+ {"version":3,"file":"useSplitPaymentsForm.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { useForm, useFormState, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodsGetBankAccounts } from '@gusto/embedded-api/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api/react-query/employeePaymentMethodUpdate'\nimport {\n PERCENTAGE_TOTAL_PATH,\n SPLIT_BY_VALUES,\n SplitPaymentsFormErrorCodes,\n type SplitByValue,\n type SplitPaymentsFormData,\n type SplitPaymentsFormOptionalFieldsToRequire,\n type SplitPaymentsFormOutputs,\n createSplitPaymentsFormSchema,\n} from './useSplitPaymentsFormSchema'\nimport { SplitByField, type SplitByFieldProps } from './fields'\nimport { buildSplitFieldEntries, type SplitFieldEntry } from './splitFieldFactory'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldMetadataWithOptions,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { centsToDollars, dollarsToCents } from '@/helpers/currencyHelpers'\nimport { PAYMENT_METHODS, SPLIT_BY } from '@/shared/constants'\n\n/**\n * A single split entry — pairs a bank account identifier with its current split allocation.\n *\n * @remarks\n * Surfaced on `data.splits` from {@link useSplitPaymentsForm}. Derived from\n * `paymentMethod.splits` when present, otherwise from the employee's bank\n * accounts (one entry per account, no allocated amount). Carries the raw\n * domain data — use it for label construction or lookups by uuid.\n *\n * @public\n */\nexport interface WorkingSplit {\n /** UUID of the underlying bank account. */\n uuid: string\n /** Account nickname, when available. */\n name: string | null\n /** Masked account number suffix, when available. */\n hiddenAccountNumber: string | null\n /** Allocation amount — `null` for the remainder split in Amount mode and for splits that haven't been allocated yet. */\n splitAmount: number | null\n /** Ordering value — splits are processed in ascending priority; the highest priority is the remainder. */\n priority: number\n}\n\n/**\n * Props for {@link useSplitPaymentsForm}.\n *\n * @public\n */\nexport interface UseSplitPaymentsFormProps {\n /** Employee whose payment splits are being edited. */\n employeeId: string\n /** Override optional fields to be required. Currently a no-op — `splitBy` and `priority` are always required, and per-split `splitAmount` required-ness is automatic. */\n optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useSplitPaymentsForm} on `form.Fields`.\n *\n * @public\n */\nexport interface SplitPaymentsFormFields {\n /** Radio group bound to `splitBy`; selects Percentage or Amount split mode. */\n SplitBy: ComponentType<SplitByFieldProps>\n /** One entry per bank account, each carrying a pre-bound `Field` component for the per-split amount. */\n splits: SplitFieldEntry[]\n}\n\n/**\n * Ready-state return value of {@link useSplitPaymentsForm}.\n *\n * @public\n */\nexport interface UseSplitPaymentsFormReady extends BaseFormHookReady<\n SplitPaymentsFormFieldsMetadata,\n SplitPaymentsFormData,\n SplitPaymentsFormFields\n> {\n /** Server-fetched data and derived working values. */\n data: {\n /** The employee's current payment method. */\n paymentMethod: EmployeePaymentMethod\n /** All bank accounts available to allocate splits across. */\n bankAccounts: EmployeeBankAccount[]\n /** The current working split entries, one per bank account. */\n splits: WorkingSplit[]\n /** UUID of the split that absorbs the remainder in Amount mode (always the last by priority). */\n remainderId: string\n }\n /** Submission state and reactive form-level flags. */\n status: {\n /** `true` while the update mutation is in flight. */\n isPending: boolean\n /** Always `'update'` — the hook always edits an existing payment method. */\n mode: 'update'\n /** Current `splitBy` value, reactively tracked. */\n splitBy: SplitByValue\n /** Live sum of `splitAmount` values; useful for displaying the current total in Percentage mode. */\n percentageTotal: number\n /**\n * `true` after a failed Percentage-mode Save when the splits don't sum to\n * 100; clears live as the user corrects the total. Follows the standard\n * react-hook-form validation lifecycle (controlled by `validationMode`).\n * Only surfaces in Percentage mode.\n */\n hasPercentageImbalance: boolean\n }\n /** Actions that mutate the form or submit it. */\n actions: {\n /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */\n onSubmit: () => Promise<HookSubmitResult<EmployeePaymentMethod> | undefined>\n /**\n * Reorder splits by uuid (Amount mode). Pass the ordered list of split\n * uuids; the last uuid becomes the remainder. The hook writes the new\n * priority map and re-anchors the remainder's `splitAmount` to `null`\n * (clearing the previous remainder to `0`).\n */\n reorderSplits: (orderedUuids: string[]) => void\n }\n}\n\nconst buildWorkingSplits = (\n paymentMethod: EmployeePaymentMethod,\n bankAccounts: EmployeeBankAccount[],\n): WorkingSplit[] => {\n if (paymentMethod.splits && paymentMethod.splits.length > 0) {\n return paymentMethod.splits.map(split => ({\n uuid: split.uuid,\n name: split.name ?? null,\n hiddenAccountNumber: split.hiddenAccountNumber ?? null,\n splitAmount: split.splitAmount ?? null,\n priority: split.priority ?? 0,\n }))\n }\n return bankAccounts.map((account, index) => ({\n uuid: account.uuid,\n name: account.name ?? null,\n hiddenAccountNumber: account.hiddenAccountNumber ?? null,\n splitAmount: null,\n priority: index + 1,\n }))\n}\n\n/**\n * Headless React Hook Form hook for splitting an employee's Direct Deposit across multiple bank accounts.\n *\n * @remarks\n * Supports two split modes: Percentage (whole-number shares that sum to 100)\n * and Amount (dollar amounts, with the last-priority split absorbing the\n * remainder). Always operates in update mode against the employee's existing\n * payment method.\n *\n * The Percentage sum-to-100 invariant is surfaced via\n * `status.hasPercentageImbalance` (not as a per-field error). With the default\n * `validationMode: 'onSubmit'`, the imbalance flag appears after the first\n * failed Save and clears live as the user corrects the total.\n *\n * @param props - See {@link UseSplitPaymentsFormProps}.\n * @returns A loading-state result while the payment method and bank accounts are loading, or a {@link UseSplitPaymentsFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useSplitPaymentsForm,\n * SDKFormProvider,\n * type SplitByValue,\n * type UseSplitPaymentsFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function SplitPaycheckScreen({ employeeId }: { employeeId: string }) {\n * const splitForm = useSplitPaymentsForm({ employeeId })\n *\n * if (splitForm.isLoading) return null\n * return <SplitPaycheckReady splitForm={splitForm} />\n * }\n *\n * function SplitPaycheckReady({ splitForm }: { splitForm: UseSplitPaymentsFormReady }) {\n * const { Fields } = splitForm.form\n * const { hasPercentageImbalance, percentageTotal } = splitForm.status\n *\n * return (\n * <SDKFormProvider formHookResult={splitForm}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void splitForm.actions.onSubmit()\n * }}\n * >\n * {hasPercentageImbalance && (\n * <div role=\"alert\">Splits must total 100%. Currently {percentageTotal}%.</div>\n * )}\n * <Fields.SplitBy label=\"Split by\" getOptionLabel={(value: SplitByValue) => value} />\n * {Fields.splits.map(split => (\n * <split.Field\n * key={split.uuid}\n * label={split.name ?? 'Account'}\n * min={0}\n * />\n * ))}\n * <button type=\"submit\" disabled={splitForm.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useSplitPaymentsForm({\n employeeId,\n optionalFieldsToRequire,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseSplitPaymentsFormProps): UseSplitPaymentsFormResult {\n const paymentMethodQuery = useEmployeePaymentMethodGet({ employeeId })\n const bankAccountsQuery = useEmployeePaymentMethodsGetBankAccounts({ employeeId })\n\n const paymentMethod = paymentMethodQuery.data?.employeePaymentMethod\n const bankAccounts = bankAccountsQuery.data?.employeeBankAccounts\n\n const splits = useMemo<WorkingSplit[]>(\n () => (paymentMethod && bankAccounts ? buildWorkingSplits(paymentMethod, bankAccounts) : []),\n [paymentMethod, bankAccounts],\n )\n\n const [schema, metadataConfig] = useMemo(\n () => createSplitPaymentsFormSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: SplitPaymentsFormData = useMemo(() => {\n const isAmountSplit = paymentMethod?.splitBy === SPLIT_BY.amount\n const splitAmount: Record<string, number | null> = {}\n const priority: Record<string, number> = {}\n splits.forEach(split => {\n splitAmount[split.uuid] = isAmountSplit\n ? centsToDollars(split.splitAmount)\n : split.splitAmount\n priority[split.uuid] = split.priority\n })\n return {\n splitBy: (paymentMethod?.splitBy ?? SPLIT_BY.percentage) as SplitByValue,\n splitAmount,\n priority,\n }\n }, [paymentMethod, splits])\n\n const formMethods = useForm<SplitPaymentsFormData, unknown, SplitPaymentsFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const updateMutation = useEmployeePaymentMethodUpdateMutation()\n const isPending = updateMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('SplitPaymentsForm')\n\n const errorHandling = composeErrorHandler([paymentMethodQuery, bankAccountsQuery], {\n submitError,\n setSubmitError,\n })\n\n const watchedSplitBy = useWatch({ control: formMethods.control, name: 'splitBy' })\n const watchedPriority = useWatch({ control: formMethods.control, name: 'priority' })\n const watchedSplitAmount = useWatch({ control: formMethods.control, name: 'splitAmount' })\n\n const percentageTotal = useMemo(() => {\n if (watchedSplitBy !== SPLIT_BY.percentage) return 0\n return Object.values(watchedSplitAmount).reduce<number>(\n (acc, v) => acc + (typeof v === 'number' && Number.isFinite(v) ? v : 0),\n 0,\n )\n }, [watchedSplitBy, watchedSplitAmount])\n\n // Subscribe to the schema-emitted imbalance error. The schema places it at\n // a synthetic path (`PERCENTAGE_TOTAL_PATH`) so it does not collide with\n // per-uuid `splitAmount.<uuid>` errors. Following the standard validation\n // lifecycle means `validationMode` (onSubmit / onChange / onBlur / ...)\n // controls when the alert can appear. We subscribe to the full errors map\n // because `name` only tracks registered field paths and our synthetic key\n // is not a registered field. The derivation is also gated on Percentage\n // mode so a stale error from a prior Percentage submit can't leak into\n // Amount mode after a toggle.\n const { errors: validationErrors, isSubmitted } = useFormState({\n control: formMethods.control,\n })\n const hasPercentageImbalance =\n watchedSplitBy === SPLIT_BY.percentage &&\n (validationErrors as Record<string, { message?: string } | undefined>)[PERCENTAGE_TOTAL_PATH]\n ?.message === SplitPaymentsFormErrorCodes.PERCENTAGE_TOTAL_MISMATCH\n\n // Re-sync the synthetic PERCENTAGE_TOTAL_PATH error whenever any\n // `splitAmount` value changes (in Percentage mode, after the first\n // submit attempt). RHF's per-field reValidate after a failed submit\n // scopes the resolver merge to the changed field's name, so an error\n // at our form-level synthetic path is otherwise left stuck once the\n // user has typed the total back to 100. Targeting the synthetic name\n // re-runs the resolver and lets RHF set/unset that single path through\n // its normal merge — preserving per-field error lifecycles unchanged.\n const { trigger } = formMethods\n useEffect(() => {\n if (!isSubmitted) return\n if (watchedSplitBy !== SPLIT_BY.percentage) return\n // `trigger`'s type is keyed to registered field paths, but the\n // synthetic `percentageTotal` resolves through RHF's get/set/unset\n // helpers at runtime — cast at the boundary to keep the contract\n // honest above.\n void trigger(PERCENTAGE_TOTAL_PATH as Parameters<typeof trigger>[0])\n }, [isSubmitted, watchedSplitBy, watchedSplitAmount, trigger])\n\n const remainderId = useMemo(() => {\n if (!Object.keys(watchedPriority).length) return ''\n return Object.entries(watchedPriority).reduce((maxId, [uuid, priority]) => {\n if (!maxId) return uuid\n const currentMax = watchedPriority[maxId] ?? 0\n return priority > currentMax ? uuid : maxId\n }, '')\n }, [watchedPriority])\n\n // Reset splitAmount values when the user toggles splitBy. Skip the first\n // post-load run so values loaded from `paymentMethod.splits` are preserved\n // on mount — only the user's explicit toggle should clear them.\n const splitsRef = useRef(splits)\n splitsRef.current = splits\n const remainderIdRef = useRef(remainderId)\n remainderIdRef.current = remainderId\n const previousSplitByRef = useRef<SplitByValue | null>(null)\n const { setValue, resetField } = formMethods\n\n useEffect(() => {\n if (!splitsRef.current.length) return\n if (previousSplitByRef.current === null) {\n previousSplitByRef.current = watchedSplitBy as SplitByValue\n return\n }\n if (previousSplitByRef.current === watchedSplitBy) return\n previousSplitByRef.current = watchedSplitBy as SplitByValue\n\n if (watchedSplitBy === SPLIT_BY.amount) {\n const newValues = splitsRef.current.reduce<Record<string, number | null>>((acc, curr) => {\n acc[curr.uuid] = curr.uuid === remainderIdRef.current ? null : 0\n return acc\n }, {})\n setValue('splitAmount', newValues)\n } else {\n const newValues = splitsRef.current.reduce<Record<string, number | null>>(\n (acc, curr, index) => {\n acc[curr.uuid] = index === 0 ? 100 : 0\n return acc\n },\n {},\n )\n setValue('splitAmount', newValues)\n }\n }, [watchedSplitBy, setValue])\n\n const reorderSplits = useCallback(\n (orderedUuids: string[]) => {\n const currentSplits = splitsRef.current\n const knownUuids = new Set(currentSplits.map(s => s.uuid))\n if (\n orderedUuids.length !== knownUuids.size ||\n !orderedUuids.every(uuid => knownUuids.has(uuid))\n ) {\n return\n }\n\n const newPriorities = orderedUuids.reduce<Record<string, number>>((acc, uuid, index) => {\n acc[uuid] = index + 1\n return acc\n }, {})\n const newRemainderId = orderedUuids[orderedUuids.length - 1]\n if (!newRemainderId) return\n\n setValue('priority', newPriorities)\n const previousRemainder = remainderIdRef.current\n if (previousRemainder && previousRemainder !== newRemainderId) {\n resetField(`splitAmount.${previousRemainder}`)\n setValue(`splitAmount.${previousRemainder}`, 0)\n }\n setValue(`splitAmount.${newRemainderId}`, null)\n },\n [setValue, resetField],\n )\n\n const splitByOptions = SPLIT_BY_VALUES.map(value => ({ value, label: value }))\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const dynamicSplitMetadata = useMemo<Record<`splitAmount.${string}`, FieldMetadata>>(() => {\n const entries: Record<`splitAmount.${string}`, FieldMetadata> = {}\n const isAmountSplit = watchedSplitBy === SPLIT_BY.amount\n for (const split of splits) {\n const path = `splitAmount.${split.uuid}` as const\n const isRemainder = isAmountSplit && split.uuid === remainderId\n // Every split — including the remainder — is \"required\" from the\n // user's perspective: the remainder always carries a value at submit\n // (the API absorbs leftover). The form-state `null` is a modeling\n // detail, not a UX choice, so we don't surface it as \"(optional)\" on\n // the label. `isDisabled` already conveys the non-interactivity.\n entries[path] = {\n name: path,\n isRequired: true,\n isDisabled: isRemainder,\n }\n }\n return entries\n }, [splits, watchedSplitBy, remainderId])\n const fieldsMetadata: SplitPaymentsFormFieldsMetadata = {\n splitBy: withOptions<SplitByValue>(baseMetadata.splitBy, splitByOptions, [...SPLIT_BY_VALUES]),\n splitAmount: baseMetadata.splitAmount,\n priority: baseMetadata.priority,\n ...dynamicSplitMetadata,\n }\n\n const splitFieldEntries = useMemo(\n () =>\n buildSplitFieldEntries(\n splits.map(s => ({\n uuid: s.uuid,\n name: s.name,\n hiddenAccountNumber: s.hiddenAccountNumber,\n })),\n ),\n [splits],\n )\n\n const onSubmit = async (): Promise<HookSubmitResult<EmployeePaymentMethod> | undefined> => {\n if (!paymentMethod) {\n throw new SDKInternalError('Cannot submit split payments form before data is loaded')\n }\n const currentPaymentMethod = paymentMethod\n const currentSplits = splits\n let submitResult: HookSubmitResult<EmployeePaymentMethod> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: SplitPaymentsFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const isAmountSplit = payload.splitBy === SPLIT_BY.amount\n const body = {\n ...currentPaymentMethod,\n version: currentPaymentMethod.version as string,\n splitBy: payload.splitBy,\n splits: currentSplits.map(split => {\n const splitAmountValue = payload.splitAmount[split.uuid] ?? null\n return {\n uuid: split.uuid,\n name: split.name ?? undefined,\n hiddenAccountNumber: split.hiddenAccountNumber ?? undefined,\n splitAmount: isAmountSplit ? dollarsToCents(splitAmountValue) : splitAmountValue,\n priority: payload.priority[split.uuid],\n }\n }),\n }\n\n const response = await updateMutation.mutateAsync({\n request: {\n employeeId,\n requestBody: { ...body, type: PAYMENT_METHODS.directDeposit },\n },\n })\n\n if (!response.employeePaymentMethod) {\n throw new SDKInternalError('Payment method update failed')\n }\n\n submitResult = { mode: 'update' as const, data: response.employeePaymentMethod }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (\n paymentMethodQuery.isLoading ||\n bankAccountsQuery.isLoading ||\n !paymentMethod ||\n !bankAccounts\n ) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n paymentMethod,\n bankAccounts,\n splits,\n remainderId,\n },\n status: {\n isPending,\n mode: 'update' as const,\n splitBy: watchedSplitBy as SplitByValue,\n percentageTotal,\n hasPercentageImbalance,\n },\n actions: { onSubmit, reorderSplits },\n errorHandling,\n form: {\n Fields: { SplitBy: SplitByField, splits: splitFieldEntries },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useSplitPaymentsForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseSplitPaymentsFormResult = HookLoadingResult | UseSplitPaymentsFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useSplitPaymentsForm}.\n *\n * @remarks\n * The three named fields are always present. In addition, one dynamic entry is\n * keyed by full form path per split — `splitAmount.<bankAccountUuid>` — so the\n * number and identity of those keys depend on the employee's bank accounts at\n * runtime.\n *\n * @public\n * @interface\n */\nexport type SplitPaymentsFormFieldsMetadata = {\n /** Split mode selector (by percentage or by fixed amount). */\n splitBy: FieldMetadataWithOptions<SplitByValue>\n /** The `splitAmount` container field. Per-split values live at `splitAmount.<uuid>`. */\n splitAmount: FieldMetadata\n /** The `priority` container field. */\n priority: FieldMetadata\n} & Record<`splitAmount.${string}`, FieldMetadata>\n"],"names":["buildWorkingSplits","paymentMethod","bankAccounts","split","account","index","useSplitPaymentsForm","employeeId","optionalFieldsToRequire","validationMode","shouldFocusError","paymentMethodQuery","useEmployeePaymentMethodGet","bankAccountsQuery","useEmployeePaymentMethodsGetBankAccounts","splits","useMemo","schema","metadataConfig","createSplitPaymentsFormSchema","resolvedDefaults","isAmountSplit","SPLIT_BY","splitAmount","priority","centsToDollars","formMethods","useForm","zodResolver","updateMutation","useEmployeePaymentMethodUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","watchedSplitBy","useWatch","watchedPriority","watchedSplitAmount","percentageTotal","acc","v","validationErrors","isSubmitted","useFormState","hasPercentageImbalance","PERCENTAGE_TOTAL_PATH","SplitPaymentsFormErrorCodes","trigger","useEffect","remainderId","maxId","uuid","currentMax","splitsRef","useRef","remainderIdRef","previousSplitByRef","setValue","resetField","newValues","curr","reorderSplits","useCallback","orderedUuids","currentSplits","knownUuids","s","newPriorities","newRemainderId","previousRemainder","splitByOptions","SPLIT_BY_VALUES","value","baseMetadata","useDeriveFieldsMetadata","dynamicSplitMetadata","entries","path","isRemainder","fieldsMetadata","withOptions","splitFieldEntries","buildSplitFieldEntries","onSubmit","SDKInternalError","currentPaymentMethod","submitResult","resolve","data","payload","body","splitAmountValue","dollarsToCents","response","PAYMENT_METHODS","hookFormInternals","useHookFormInternals","SplitByField","createGetFormSubmissionValues"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GetV1EmployeesEmployeeUuidPayStubsResponse } from '@gusto/embedded-api-v-2026-02-01/models/operations/getv1employeesemployeeuuidpaystubs';
1
+ import { GetV1EmployeesEmployeeUuidPayStubsResponse } from '@gusto/embedded-api/models/operations/getv1employeesemployeeuuidpaystubs';
2
2
  import { BaseHookReady, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
3
3
  import { PaginationControlProps, PaginationItemsPerPage } from '../../../../Common/PaginationControl/PaginationControlTypes';
4
4
  /**
@@ -1,6 +1,6 @@
1
- import { useGustoEmbeddedContext as P } from "@gusto/embedded-api-v-2026-02-01/react-query/_context";
2
- import { usePayrollsGetPayStubs as S } from "@gusto/embedded-api-v-2026-02-01/react-query/payrollsGetPayStubs";
3
- import { payrollsGetPayStub as h } from "@gusto/embedded-api-v-2026-02-01/funcs/payrollsGetPayStub";
1
+ import { useGustoEmbeddedContext as P } from "@gusto/embedded-api/react-query/_context";
2
+ import { usePayrollsGetPayStubs as S } from "@gusto/embedded-api/react-query/payrollsGetPayStubs";
3
+ import { payrollsGetPayStub as h } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
4
4
  import { useMemo as w, useCallback as E } from "react";
5
5
  import { useBaseSubmit as L } from "../../../../Base/useBaseSubmit.js";
6
6
  import { composeErrorHandler as F } from "../../../../../partner-hook-utils/composeErrorHandler.js";
@@ -1 +1 @@
1
- {"version":3,"file":"usePaystubsList.js","sources":["../../../../../../src/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.ts"],"sourcesContent":["import { useGustoEmbeddedContext } from '@gusto/embedded-api-v-2026-02-01/react-query/_context'\nimport { usePayrollsGetPayStubs } from '@gusto/embedded-api-v-2026-02-01/react-query/payrollsGetPayStubs'\nimport { payrollsGetPayStub } from '@gusto/embedded-api-v-2026-02-01/funcs/payrollsGetPayStub'\nimport { useCallback, useMemo } from 'react'\nimport type { GetV1EmployeesEmployeeUuidPayStubsResponse } from '@gusto/embedded-api-v-2026-02-01/models/operations/getv1employeesemployeeuuidpaystubs'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport type { BaseHookReady, HookLoadingResult, HookSubmitResult } from '@/partner-hook-utils/types'\nimport type {\n PaginationControlProps,\n PaginationItemsPerPage,\n} from '@/components/Common/PaginationControl/PaginationControlTypes'\n\n/**\n * A single paystub entry returned by {@link usePaystubsList}.\n *\n * @public\n */\nexport type EmployeePayStub = NonNullable<\n GetV1EmployeesEmployeeUuidPayStubsResponse['employeePayStubsList']\n>[number]\n\n/**\n * Parameters for {@link usePaystubsList}.\n *\n * @public\n */\nexport interface UsePaystubsListParams {\n /** The associated employee identifier. */\n employeeId: string\n /** Items per page for the paystubs list. Defaults to 10. */\n defaultItemsPerPage?: PaginationItemsPerPage\n}\n\n/**\n * Ready-state shape returned by {@link usePaystubsList} once data has loaded.\n *\n * @public\n */\nexport interface UsePaystubsListReady extends BaseHookReady<\n { payStubs: EmployeePayStub[] },\n { isFetching: boolean; isPending: boolean }\n> {\n /** Pagination controls for the paystubs list. */\n pagination: { payStubs?: PaginationControlProps }\n /** Actions exposed by the hook. */\n actions: {\n /** Fetch the paystub PDF for the given payroll. Returns a Blob on success\n * so the caller decides how to surface it (open in a new tab, save to\n * disk, embed, etc.). */\n downloadPayStub: (payrollId: string) => Promise<HookSubmitResult<Blob> | undefined>\n }\n}\n\n/**\n * Return type of {@link usePaystubsList}.\n *\n * @public\n */\nexport type UsePaystubsListResult = HookLoadingResult | UsePaystubsListReady\n\n/**\n * Data hook for the employee paystubs list. Returns the paginated list of\n * paystubs and an action to download an individual paystub PDF. Used by the\n * standalone `PaystubsCard` component and consumable directly by partners\n * building a fully custom paystubs UI.\n *\n * @public\n */\nexport function usePaystubsList({\n employeeId,\n defaultItemsPerPage = 10,\n}: UsePaystubsListParams): UsePaystubsListResult {\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage,\n })\n\n const gustoEmbedded = useGustoEmbeddedContext()\n const payStubsQuery = usePayrollsGetPayStubs(\n { employeeId, page: currentPage, per: itemsPerPage },\n { staleTime: Infinity },\n )\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PaystubsList')\n\n const payStubs = payStubsQuery.data?.employeePayStubsList ?? []\n\n const payStubsPagination = useMemo(() => {\n const headers = payStubsQuery.data?.httpMeta.response.headers\n if (!headers) return undefined\n return getPaginationProps(headers, payStubsQuery.isFetching)\n }, [payStubsQuery.data?.httpMeta.response.headers, payStubsQuery.isFetching, getPaginationProps])\n\n const errorHandling = composeErrorHandler([payStubsQuery], { submitError, setSubmitError })\n\n const downloadPayStub = useCallback(\n async (payrollId: string): Promise<HookSubmitResult<Blob> | undefined> => {\n let submitResult: HookSubmitResult<Blob> | undefined\n await baseSubmitHandler(payrollId, async id => {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId: id, employeeId })\n // `funcs/payrollsGetPayStub` returns a Result discriminated union;\n // surface API/validation errors so `baseSubmitHandler` can route them\n // through the standard SDK error pipeline instead of bubbling to the\n // error boundary as an unknown throw.\n if (!response.ok) {\n throw response.error\n }\n if (!response.value.responseStream) {\n throw new Error('Pay stub response missing PDF stream')\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n submitResult = { mode: 'update', data: pdfBlob }\n })\n return submitResult\n },\n [baseSubmitHandler, gustoEmbedded, employeeId],\n )\n\n if (payStubsQuery.isLoading) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { payStubs },\n status: {\n isFetching: payStubsQuery.isFetching,\n isPending: false,\n },\n pagination: { payStubs: payStubsPagination },\n actions: { downloadPayStub },\n errorHandling,\n }\n}\n"],"names":["usePaystubsList","employeeId","defaultItemsPerPage","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payStubsQuery","usePayrollsGetPayStubs","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","payStubs","payStubsPagination","useMemo","headers","errorHandling","composeErrorHandler","downloadPayStub","useCallback","payrollId","submitResult","id","response","payrollsGetPayStub","readableStreamToBlob"],"mappings":";;;;;;;;AAuEO,SAASA,EAAgB;AAAA,EAC9B,YAAAC;AAAA,EACA,qBAAAC,IAAsB;AACxB,GAAiD;AAC/C,QAAM,EAAE,aAAAC,GAAa,cAAAC,GAAc,oBAAAC,EAAA,IAAuBC,EAAc;AAAA,IACtE,qBAAAJ;AAAA,EAAA,CACD,GAEKK,IAAgBC,EAAA,GAChBC,IAAgBC;AAAA,IACpB,EAAE,YAAAT,GAAY,MAAME,GAAa,KAAKC,EAAA;AAAA,IACtC,EAAE,WAAW,MAAA;AAAA,EAAS,GAGlB;AAAA,IACJ,mBAAAO;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,cAAc,GAE1BC,IAAWN,EAAc,MAAM,wBAAwB,CAAA,GAEvDO,IAAqBC,EAAQ,MAAM;AACvC,UAAMC,IAAUT,EAAc,MAAM,SAAS,SAAS;AACtD,QAAKS;AACL,aAAOb,EAAmBa,GAAST,EAAc,UAAU;AAAA,EAC7D,GAAG,CAACA,EAAc,MAAM,SAAS,SAAS,SAASA,EAAc,YAAYJ,CAAkB,CAAC,GAE1Fc,IAAgBC,EAAoB,CAACX,CAAa,GAAG,EAAE,aAAAG,GAAa,gBAAAC,GAAgB,GAEpFQ,IAAkBC;AAAA,IACtB,OAAOC,MAAmE;AACxE,UAAIC;AACJ,mBAAMb,EAAkBY,GAAW,OAAME,MAAM;AAC7C,cAAMC,IAAW,MAAMC,EAAmBpB,GAAe,EAAE,WAAWkB,GAAI,YAAAxB,GAAY;AAKtF,YAAI,CAACyB,EAAS;AACZ,gBAAMA,EAAS;AAEjB,YAAI,CAACA,EAAS,MAAM;AAClB,gBAAM,IAAI,MAAM,sCAAsC;AAGxD,QAAAF,IAAe,EAAE,MAAM,UAAU,MADjB,MAAMI,EAAqBF,EAAS,MAAM,gBAAgB,iBAAiB,EACpD;AAAA,MACzC,CAAC,GACMF;AAAA,IACT;AAAA,IACA,CAACb,GAAmBJ,GAAeN,CAAU;AAAA,EAAA;AAG/C,SAAIQ,EAAc,YACT,EAAE,WAAW,IAAM,eAAAU,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,UAAAJ,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYN,EAAc;AAAA,MAC1B,WAAW;AAAA,IAAA;AAAA,IAEb,YAAY,EAAE,UAAUO,EAAA;AAAA,IACxB,SAAS,EAAE,iBAAAK,EAAA;AAAA,IACX,eAAAF;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"usePaystubsList.js","sources":["../../../../../../src/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.ts"],"sourcesContent":["import { useGustoEmbeddedContext } from '@gusto/embedded-api/react-query/_context'\nimport { usePayrollsGetPayStubs } from '@gusto/embedded-api/react-query/payrollsGetPayStubs'\nimport { payrollsGetPayStub } from '@gusto/embedded-api/funcs/payrollsGetPayStub'\nimport { useCallback, useMemo } from 'react'\nimport type { GetV1EmployeesEmployeeUuidPayStubsResponse } from '@gusto/embedded-api/models/operations/getv1employeesemployeeuuidpaystubs'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport { readableStreamToBlob } from '@/helpers/readableStreamToBlob'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport type { BaseHookReady, HookLoadingResult, HookSubmitResult } from '@/partner-hook-utils/types'\nimport type {\n PaginationControlProps,\n PaginationItemsPerPage,\n} from '@/components/Common/PaginationControl/PaginationControlTypes'\n\n/**\n * A single paystub entry returned by {@link usePaystubsList}.\n *\n * @public\n */\nexport type EmployeePayStub = NonNullable<\n GetV1EmployeesEmployeeUuidPayStubsResponse['employeePayStubsList']\n>[number]\n\n/**\n * Parameters for {@link usePaystubsList}.\n *\n * @public\n */\nexport interface UsePaystubsListParams {\n /** The associated employee identifier. */\n employeeId: string\n /** Items per page for the paystubs list. Defaults to 10. */\n defaultItemsPerPage?: PaginationItemsPerPage\n}\n\n/**\n * Ready-state shape returned by {@link usePaystubsList} once data has loaded.\n *\n * @public\n */\nexport interface UsePaystubsListReady extends BaseHookReady<\n { payStubs: EmployeePayStub[] },\n { isFetching: boolean; isPending: boolean }\n> {\n /** Pagination controls for the paystubs list. */\n pagination: { payStubs?: PaginationControlProps }\n /** Actions exposed by the hook. */\n actions: {\n /** Fetch the paystub PDF for the given payroll. Returns a Blob on success\n * so the caller decides how to surface it (open in a new tab, save to\n * disk, embed, etc.). */\n downloadPayStub: (payrollId: string) => Promise<HookSubmitResult<Blob> | undefined>\n }\n}\n\n/**\n * Return type of {@link usePaystubsList}.\n *\n * @public\n */\nexport type UsePaystubsListResult = HookLoadingResult | UsePaystubsListReady\n\n/**\n * Data hook for the employee paystubs list. Returns the paginated list of\n * paystubs and an action to download an individual paystub PDF. Used by the\n * standalone `PaystubsCard` component and consumable directly by partners\n * building a fully custom paystubs UI.\n *\n * @public\n */\nexport function usePaystubsList({\n employeeId,\n defaultItemsPerPage = 10,\n}: UsePaystubsListParams): UsePaystubsListResult {\n const { currentPage, itemsPerPage, getPaginationProps } = usePagination({\n defaultItemsPerPage,\n })\n\n const gustoEmbedded = useGustoEmbeddedContext()\n const payStubsQuery = usePayrollsGetPayStubs(\n { employeeId, page: currentPage, per: itemsPerPage },\n { staleTime: Infinity },\n )\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('PaystubsList')\n\n const payStubs = payStubsQuery.data?.employeePayStubsList ?? []\n\n const payStubsPagination = useMemo(() => {\n const headers = payStubsQuery.data?.httpMeta.response.headers\n if (!headers) return undefined\n return getPaginationProps(headers, payStubsQuery.isFetching)\n }, [payStubsQuery.data?.httpMeta.response.headers, payStubsQuery.isFetching, getPaginationProps])\n\n const errorHandling = composeErrorHandler([payStubsQuery], { submitError, setSubmitError })\n\n const downloadPayStub = useCallback(\n async (payrollId: string): Promise<HookSubmitResult<Blob> | undefined> => {\n let submitResult: HookSubmitResult<Blob> | undefined\n await baseSubmitHandler(payrollId, async id => {\n const response = await payrollsGetPayStub(gustoEmbedded, { payrollId: id, employeeId })\n // `funcs/payrollsGetPayStub` returns a Result discriminated union;\n // surface API/validation errors so `baseSubmitHandler` can route them\n // through the standard SDK error pipeline instead of bubbling to the\n // error boundary as an unknown throw.\n if (!response.ok) {\n throw response.error\n }\n if (!response.value.responseStream) {\n throw new Error('Pay stub response missing PDF stream')\n }\n const pdfBlob = await readableStreamToBlob(response.value.responseStream, 'application/pdf')\n submitResult = { mode: 'update', data: pdfBlob }\n })\n return submitResult\n },\n [baseSubmitHandler, gustoEmbedded, employeeId],\n )\n\n if (payStubsQuery.isLoading) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { payStubs },\n status: {\n isFetching: payStubsQuery.isFetching,\n isPending: false,\n },\n pagination: { payStubs: payStubsPagination },\n actions: { downloadPayStub },\n errorHandling,\n }\n}\n"],"names":["usePaystubsList","employeeId","defaultItemsPerPage","currentPage","itemsPerPage","getPaginationProps","usePagination","gustoEmbedded","useGustoEmbeddedContext","payStubsQuery","usePayrollsGetPayStubs","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","payStubs","payStubsPagination","useMemo","headers","errorHandling","composeErrorHandler","downloadPayStub","useCallback","payrollId","submitResult","id","response","payrollsGetPayStub","readableStreamToBlob"],"mappings":";;;;;;;;AAuEO,SAASA,EAAgB;AAAA,EAC9B,YAAAC;AAAA,EACA,qBAAAC,IAAsB;AACxB,GAAiD;AAC/C,QAAM,EAAE,aAAAC,GAAa,cAAAC,GAAc,oBAAAC,EAAA,IAAuBC,EAAc;AAAA,IACtE,qBAAAJ;AAAA,EAAA,CACD,GAEKK,IAAgBC,EAAA,GAChBC,IAAgBC;AAAA,IACpB,EAAE,YAAAT,GAAY,MAAME,GAAa,KAAKC,EAAA;AAAA,IACtC,EAAE,WAAW,MAAA;AAAA,EAAS,GAGlB;AAAA,IACJ,mBAAAO;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,cAAc,GAE1BC,IAAWN,EAAc,MAAM,wBAAwB,CAAA,GAEvDO,IAAqBC,EAAQ,MAAM;AACvC,UAAMC,IAAUT,EAAc,MAAM,SAAS,SAAS;AACtD,QAAKS;AACL,aAAOb,EAAmBa,GAAST,EAAc,UAAU;AAAA,EAC7D,GAAG,CAACA,EAAc,MAAM,SAAS,SAAS,SAASA,EAAc,YAAYJ,CAAkB,CAAC,GAE1Fc,IAAgBC,EAAoB,CAACX,CAAa,GAAG,EAAE,aAAAG,GAAa,gBAAAC,GAAgB,GAEpFQ,IAAkBC;AAAA,IACtB,OAAOC,MAAmE;AACxE,UAAIC;AACJ,mBAAMb,EAAkBY,GAAW,OAAME,MAAM;AAC7C,cAAMC,IAAW,MAAMC,EAAmBpB,GAAe,EAAE,WAAWkB,GAAI,YAAAxB,GAAY;AAKtF,YAAI,CAACyB,EAAS;AACZ,gBAAMA,EAAS;AAEjB,YAAI,CAACA,EAAS,MAAM;AAClB,gBAAM,IAAI,MAAM,sCAAsC;AAGxD,QAAAF,IAAe,EAAE,MAAM,UAAU,MADjB,MAAMI,EAAqBF,EAAS,MAAM,gBAAgB,iBAAiB,EACpD;AAAA,MACzC,CAAC,GACMF;AAAA,IACT;AAAA,IACA,CAACb,GAAmBJ,GAAeN,CAAU;AAAA,EAAA;AAG/C,SAAIQ,EAAc,YACT,EAAE,WAAW,IAAM,eAAAU,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,UAAAJ,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYN,EAAc;AAAA,MAC1B,WAAW;AAAA,IAAA;AAAA,IAEb,YAAY,EAAE,UAAUO,EAAA;AAAA,IACxB,SAAS,EAAE,iBAAAK,EAAA;AAAA,IACX,eAAAF;AAAA,EAAA;AAEJ;"}