@gusto/embedded-react-sdk 0.47.1 → 0.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (848) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/dist/components/Common/EmptyData/EmptyData.d.ts +1 -1
  3. package/dist/components/Common/EmptyData/EmptyData.js +10 -12
  4. package/dist/components/Common/EmptyData/EmptyData.js.map +1 -1
  5. package/dist/components/Common/EmptyData/EmptyData.module.scss.js +6 -10
  6. package/dist/components/Common/EmptyData/EmptyData.module.scss.js.map +1 -1
  7. package/dist/components/Common/Form/Form.d.ts +1 -1
  8. package/dist/components/Common/Form/Form.js +8 -7
  9. package/dist/components/Common/Form/Form.js.map +1 -1
  10. package/dist/components/Common/UI/Card/Card.js +8 -8
  11. package/dist/components/Common/UI/Card/Card.js.map +1 -1
  12. package/dist/components/Common/UI/Card/Card.module.scss.js +5 -3
  13. package/dist/components/Common/UI/Card/Card.module.scss.js.map +1 -1
  14. package/dist/components/Company/AssignSignatory/AssignSignatory.js +10 -7
  15. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  16. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +8 -6
  17. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  18. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +9 -8
  19. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  20. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +9 -6
  21. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +14 -13
  23. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  24. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -17
  25. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  26. package/dist/components/Company/AssignSignatory/Head.js +9 -8
  27. package/dist/components/Company/AssignSignatory/Head.js.map +1 -1
  28. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +7 -6
  29. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  30. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +8 -5
  31. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  32. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +21 -20
  33. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  34. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -17
  35. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  36. package/dist/components/Company/AssignSignatory/TitleSelect.js +4 -2
  37. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  38. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -19
  39. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  40. package/dist/components/Company/BankAccount/BankAccount.js +6 -7
  41. package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
  42. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +3 -2
  43. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  44. package/dist/components/Company/BankAccount/BankAccountForm/Form.js +11 -9
  45. package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
  46. package/dist/components/Company/BankAccount/BankAccountForm/Head.js +3 -2
  47. package/dist/components/Company/BankAccount/BankAccountForm/Head.js.map +1 -1
  48. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -17
  49. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  50. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +7 -6
  51. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  52. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +8 -7
  53. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  54. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +6 -4
  55. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
  56. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +6 -5
  57. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  58. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +14 -11
  59. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  60. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -17
  61. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  62. package/dist/components/Company/DocumentSigner/DocumentSigner.js +2 -3
  63. package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
  64. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +8 -7
  65. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  66. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/fields.js +4 -4
  67. package/dist/components/Company/FederalTaxes/Actions.js +7 -6
  68. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  69. package/dist/components/Company/FederalTaxes/FederalTaxes.js +10 -7
  70. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  71. package/dist/components/Company/FederalTaxes/Form.js +4 -4
  72. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -26
  73. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  74. package/dist/components/Company/Industry/Actions.js +6 -5
  75. package/dist/components/Company/Industry/Actions.js.map +1 -1
  76. package/dist/components/Company/Industry/Context.js +6 -20
  77. package/dist/components/Company/Industry/Context.js.map +1 -1
  78. package/dist/components/Company/Industry/Edit.js +12 -10
  79. package/dist/components/Company/Industry/Edit.js.map +1 -1
  80. package/dist/components/Company/Industry/IndustrySelect.js +14 -14
  81. package/dist/components/Company/Industry/IndustrySelect.js.map +1 -1
  82. package/dist/components/Company/Locations/LocationForm/Actions.js +3 -2
  83. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  84. package/dist/components/Company/Locations/LocationForm/Form.js +6 -4
  85. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  86. package/dist/components/Company/Locations/LocationForm/LocationForm.js +17 -14
  87. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  88. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -17
  89. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  90. package/dist/components/Company/Locations/LocationsList/Actions.js +3 -2
  91. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  92. package/dist/components/Company/Locations/LocationsList/List.js +9 -9
  93. package/dist/components/Company/Locations/LocationsList/LocationsList.js +12 -9
  94. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  95. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -17
  96. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  97. package/dist/components/Company/OnboardingOverview/Completed.js +6 -5
  98. package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
  99. package/dist/components/Company/OnboardingOverview/MissingRequirements.js +9 -8
  100. package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
  101. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +5 -2
  102. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  103. package/dist/components/Company/OnboardingOverview/context.js +4 -18
  104. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  105. package/dist/components/Company/PaySchedule/PayScheduleForm.js +5 -4
  106. package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
  107. package/dist/components/Company/PaySchedule/PayScheduleList.js +8 -8
  108. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +5 -5
  109. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +6 -5
  110. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  111. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -17
  112. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  113. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +7 -6
  114. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  115. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +3 -2
  116. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  117. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -17
  118. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  119. package/dist/components/Contractor/Address/Address.js +5 -2
  120. package/dist/components/Contractor/Address/Address.js.map +1 -1
  121. package/dist/components/Contractor/Address/Form.js +4 -2
  122. package/dist/components/Contractor/Address/Form.js.map +1 -1
  123. package/dist/components/Contractor/Address/Head.js +5 -4
  124. package/dist/components/Contractor/Address/Head.js.map +1 -1
  125. package/dist/components/Contractor/Address/useAddress.js +5 -19
  126. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  127. package/dist/components/Contractor/ContractorList/index.js +4 -4
  128. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +4 -2
  129. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  130. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +4 -2
  131. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js.map +1 -1
  132. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +10 -10
  133. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentFormSchema.d.ts +2 -2
  134. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js +3 -2
  135. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
  136. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +15 -15
  137. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +2 -3
  138. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  139. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +2 -3
  140. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  141. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +4 -3
  142. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  143. package/dist/components/Contractor/Profile/ContractorProfileForm.js +13 -13
  144. package/dist/components/Contractor/Profile/useContractorProfile.d.ts +6 -6
  145. package/dist/components/Contractor/Profile/useContractorProfile.js +39 -48
  146. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  147. package/dist/components/Contractor/Submit/Submit.js +3 -2
  148. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  149. package/dist/components/Contractor/exports/contractorManagement.d.ts +6 -0
  150. package/dist/components/Contractor/exports/contractorManagement.js +15 -0
  151. package/dist/components/Contractor/exports/contractorManagement.js.map +1 -0
  152. package/dist/components/Employee/Compensation/management/Compensation.d.ts +35 -0
  153. package/dist/components/Employee/Compensation/management/Compensation.js +2 -3
  154. package/dist/components/Employee/Compensation/management/Compensation.js.map +1 -1
  155. package/dist/components/Employee/Compensation/management/CompensationAddAnotherJobForm/CompensationAddAnotherJobForm.d.ts +23 -3
  156. package/dist/components/Employee/Compensation/management/CompensationAddAnotherJobForm/CompensationAddAnotherJobForm.js +8 -9
  157. package/dist/components/Employee/Compensation/management/CompensationAddAnotherJobForm/CompensationAddAnotherJobForm.js.map +1 -1
  158. package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.d.ts +21 -10
  159. package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js +2 -3
  160. package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js.map +1 -1
  161. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.d.ts +24 -7
  162. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +18 -18
  163. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  164. package/dist/components/Employee/Compensation/management/CompensationCard/index.d.ts +0 -1
  165. package/dist/components/Employee/Compensation/management/CompensationComponents.d.ts +7 -1
  166. package/dist/components/Employee/Compensation/management/CompensationComponents.js.map +1 -1
  167. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.d.ts +27 -15
  168. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +2 -3
  169. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
  170. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.d.ts +12 -0
  171. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js +2 -3
  172. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js.map +1 -1
  173. package/dist/components/Employee/Compensation/management/CompensationEditPendingJobForm/CompensationEditPendingJobForm.d.ts +12 -0
  174. package/dist/components/Employee/Compensation/management/CompensationEditPendingJobForm/CompensationEditPendingJobForm.js +2 -3
  175. package/dist/components/Employee/Compensation/management/CompensationEditPendingJobForm/CompensationEditPendingJobForm.js.map +1 -1
  176. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.d.ts +3 -0
  177. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js +3 -2
  178. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -1
  179. package/dist/components/Employee/Compensation/management/compensationStateMachine.d.ts +1 -0
  180. package/dist/components/Employee/Compensation/management/compensationStateMachine.js.map +1 -1
  181. package/dist/components/Employee/Compensation/management/useManagementCompensationDictionary.d.ts +2 -0
  182. package/dist/components/Employee/Compensation/management/useManagementCompensationDictionary.js.map +1 -1
  183. package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +61 -0
  184. package/dist/components/Employee/Compensation/onboarding/Compensation.js +2 -3
  185. package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
  186. package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.d.ts +5 -0
  187. package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.js.map +1 -1
  188. package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.d.ts +32 -9
  189. package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js +2 -3
  190. package/dist/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.js.map +1 -1
  191. package/dist/components/Employee/Compensation/onboarding/EditCompensation/index.d.ts +1 -2
  192. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.d.ts +3 -0
  193. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js.map +1 -1
  194. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.d.ts +9 -0
  195. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js +7 -7
  196. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js.map +1 -1
  197. package/dist/components/Employee/Compensation/onboarding/JobsList/index.d.ts +1 -4
  198. package/dist/components/Employee/Compensation/onboarding/compensationStateMachine.d.ts +1 -0
  199. package/dist/components/Employee/Compensation/onboarding/compensationStateMachine.js.map +1 -1
  200. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.d.ts +5 -0
  201. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js +3 -2
  202. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -1
  203. package/dist/components/Employee/Compensation/shared/PendingChangesReviewModal.d.ts +2 -0
  204. package/dist/components/Employee/Compensation/shared/PendingChangesReviewModal.js.map +1 -1
  205. package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.d.ts +2 -0
  206. package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.js.map +1 -1
  207. package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.d.ts +4 -0
  208. package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.js.map +1 -1
  209. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +98 -0
  210. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.js.map +1 -1
  211. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +168 -0
  212. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js +4 -4
  213. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
  214. package/dist/components/Employee/Compensation/shared/useCompensationForm/index.d.ts +1 -0
  215. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.d.ts +153 -6
  216. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  217. package/dist/components/Employee/Compensation/shared/useCompensationManagement/index.d.ts +1 -1
  218. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.d.ts +19 -0
  219. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  220. package/dist/components/Employee/Compensation/shared/useJobForm/fields.d.ts +101 -0
  221. package/dist/components/Employee/Compensation/shared/useJobForm/fields.js +6 -6
  222. package/dist/components/Employee/Compensation/shared/useJobForm/fields.js.map +1 -1
  223. package/dist/components/Employee/Compensation/shared/useJobForm/index.d.ts +1 -0
  224. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +75 -0
  225. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.js.map +1 -1
  226. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +137 -8
  227. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  228. package/dist/components/Employee/Compensation/shared/usePendingChangeDetailRenderer.d.ts +2 -0
  229. package/dist/components/Employee/Compensation/shared/usePendingChangeDetailRenderer.js.map +1 -1
  230. package/dist/components/Employee/Dashboard/BasicDetailsView.d.ts +18 -4
  231. package/dist/components/Employee/Dashboard/BasicDetailsView.js.map +1 -1
  232. package/dist/components/Employee/Dashboard/Dashboard.d.ts +3 -0
  233. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  234. package/dist/components/Employee/Dashboard/DashboardComponents.d.ts +21 -1
  235. package/dist/components/Employee/Dashboard/DashboardComponents.js.map +1 -1
  236. package/dist/components/Employee/Dashboard/DashboardFlow.d.ts +116 -0
  237. package/dist/components/Employee/Dashboard/DashboardFlow.js.map +1 -1
  238. package/dist/components/Employee/Dashboard/JobAndPayView.d.ts +20 -0
  239. package/dist/components/Employee/Dashboard/JobAndPayView.js.map +1 -1
  240. package/dist/components/Employee/Dashboard/TaxesView.d.ts +36 -3
  241. package/dist/components/Employee/Dashboard/TaxesView.js.map +1 -1
  242. package/dist/components/Employee/Dashboard/dashboardStateMachine.d.ts +1 -0
  243. package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
  244. package/dist/components/Employee/Dashboard/index.d.ts +0 -6
  245. package/dist/components/Employee/Deductions/management/Deductions.d.ts +30 -0
  246. package/dist/components/Employee/Deductions/management/Deductions.js +2 -3
  247. package/dist/components/Employee/Deductions/management/Deductions.js.map +1 -1
  248. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.d.ts +21 -8
  249. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js +15 -15
  250. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
  251. package/dist/components/Employee/Deductions/management/DeductionsComponents.d.ts +5 -1
  252. package/dist/components/Employee/Deductions/management/DeductionsComponents.js.map +1 -1
  253. package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.d.ts +21 -7
  254. package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js +2 -3
  255. package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js.map +1 -1
  256. package/dist/components/Employee/Deductions/management/DeductionsEditForm/useFormDictionary.d.ts +2 -0
  257. package/dist/components/Employee/Deductions/management/DeductionsEditForm/useFormDictionary.js.map +1 -1
  258. package/dist/components/Employee/Deductions/management/deductionsStateMachine.d.ts +1 -0
  259. package/dist/components/Employee/Deductions/management/deductionsStateMachine.js.map +1 -1
  260. package/dist/components/Employee/Deductions/onboarding/Deductions.d.ts +45 -0
  261. package/dist/components/Employee/Deductions/onboarding/Deductions.js.map +1 -1
  262. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.d.ts +2 -0
  263. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js +12 -12
  264. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js.map +1 -1
  265. package/dist/components/Employee/Deductions/onboarding/IncludeDeductions/IncludeDeductions.d.ts +2 -0
  266. package/dist/components/Employee/Deductions/onboarding/IncludeDeductions/IncludeDeductions.js +6 -5
  267. package/dist/components/Employee/Deductions/onboarding/IncludeDeductions/IncludeDeductions.js.map +1 -1
  268. package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.d.ts +5 -0
  269. package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.js.map +1 -1
  270. package/dist/components/Employee/Deductions/onboarding/stateMachine.d.ts +1 -0
  271. package/dist/components/Employee/Deductions/onboarding/stateMachine.js.map +1 -1
  272. package/dist/components/Employee/Deductions/onboarding/useFormDictionary.d.ts +2 -0
  273. package/dist/components/Employee/Deductions/onboarding/useFormDictionary.js.map +1 -1
  274. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.d.ts +1 -0
  275. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js +7 -6
  276. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js.map +1 -1
  277. package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.d.ts +7 -0
  278. package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.js.map +1 -1
  279. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.d.ts +1 -0
  280. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js +15 -14
  281. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js.map +1 -1
  282. package/dist/components/Employee/Deductions/shared/DeductionsForm/index.d.ts +1 -1
  283. package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.d.ts +2 -0
  284. package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.js.map +1 -1
  285. package/dist/components/Employee/Deductions/shared/formatDeductionAmount.d.ts +2 -0
  286. package/dist/components/Employee/Deductions/shared/formatDeductionAmount.js.map +1 -1
  287. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +38 -5
  288. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js.map +1 -1
  289. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.d.ts +207 -0
  290. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js +8 -8
  291. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js.map +1 -1
  292. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/index.d.ts +3 -2
  293. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +129 -3
  294. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js.map +1 -1
  295. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +29 -1
  296. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js.map +1 -1
  297. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.d.ts +158 -0
  298. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js +4 -4
  299. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js.map +1 -1
  300. package/dist/components/Employee/Deductions/shared/useDeductionForm/index.d.ts +3 -2
  301. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.d.ts +131 -4
  302. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js.map +1 -1
  303. package/dist/components/Employee/Deductions/shared/useDeductionsList.d.ts +6 -1
  304. package/dist/components/Employee/Deductions/shared/useDeductionsList.js.map +1 -1
  305. package/dist/components/Employee/Deductions/shared/useDeleteDeduction.d.ts +2 -0
  306. package/dist/components/Employee/Deductions/shared/useDeleteDeduction.js.map +1 -1
  307. package/dist/components/Employee/Documents/management/DocumentManager.d.ts +3 -0
  308. package/dist/components/Employee/Documents/management/DocumentManager.js +7 -6
  309. package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
  310. package/dist/components/Employee/Documents/management/Documents.d.ts +24 -0
  311. package/dist/components/Employee/Documents/management/Documents.js +2 -3
  312. package/dist/components/Employee/Documents/management/Documents.js.map +1 -1
  313. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.d.ts +17 -7
  314. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +7 -6
  315. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  316. package/dist/components/Employee/Documents/management/DocumentsComponents.d.ts +3 -0
  317. package/dist/components/Employee/Documents/management/DocumentsComponents.js.map +1 -1
  318. package/dist/components/Employee/Documents/management/documentsStateMachine.d.ts +1 -0
  319. package/dist/components/Employee/Documents/management/documentsStateMachine.js.map +1 -1
  320. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.d.ts +1 -0
  321. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +5 -4
  322. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
  323. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.d.ts +1 -0
  324. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +13 -10
  325. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  326. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Head.d.ts +1 -0
  327. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Head.js.map +1 -1
  328. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.d.ts +1 -0
  329. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js +4 -2
  330. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js.map +1 -1
  331. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -17
  332. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  333. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.d.ts +29 -0
  334. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +11 -12
  335. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  336. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.d.ts +23 -0
  337. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
  338. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.d.ts +1 -0
  339. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +16 -16
  340. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
  341. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.d.ts +3 -0
  342. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
  343. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/countries.d.ts +1 -0
  344. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/countries.js.map +1 -1
  345. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.d.ts +1 -0
  346. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +7 -4
  347. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
  348. package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +6 -0
  349. package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  350. package/dist/components/Employee/Documents/onboarding/DocumentSigner/stateMachine.d.ts +1 -0
  351. package/dist/components/Employee/Documents/onboarding/DocumentSigner/stateMachine.js.map +1 -1
  352. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.d.ts +27 -2
  353. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  354. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.d.ts +3 -0
  355. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js +7 -6
  356. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
  357. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/index.d.ts +1 -1
  358. package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.d.ts +1 -0
  359. package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.js +13 -10
  360. package/dist/components/Employee/Documents/shared/SignatureForm/SignatureForm.js.map +1 -1
  361. package/dist/components/Employee/Documents/shared/useDocumentsList/index.d.ts +0 -1
  362. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.d.ts +23 -6
  363. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js.map +1 -1
  364. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/fields.d.ts +326 -0
  365. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/fields.js +1 -1
  366. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/fields.js.map +1 -1
  367. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/index.d.ts +2 -1
  368. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +62 -0
  369. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
  370. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.d.ts +130 -0
  371. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js.map +1 -1
  372. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.d.ts +30 -3
  373. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +17 -21
  374. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
  375. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +2 -0
  376. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +12 -12
  377. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
  378. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.d.ts +23 -2
  379. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js +38 -35
  380. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
  381. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +2 -0
  382. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +10 -10
  383. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
  384. package/dist/components/Employee/EmployeeList/shared/index.d.ts +1 -1
  385. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +86 -11
  386. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +50 -62
  387. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  388. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +34 -0
  389. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -1
  390. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +11 -0
  391. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js.map +1 -1
  392. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.d.ts +1 -0
  393. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
  394. package/dist/components/Employee/FederalTaxes/index.d.ts +2 -5
  395. package/dist/components/Employee/FederalTaxes/management/FederalTaxes.d.ts +27 -0
  396. package/dist/components/Employee/FederalTaxes/management/FederalTaxes.js +9 -10
  397. package/dist/components/Employee/FederalTaxes/management/FederalTaxes.js.map +1 -1
  398. package/dist/components/Employee/FederalTaxes/management/FederalTaxesCard/FederalTaxesCard.d.ts +9 -0
  399. package/dist/components/Employee/FederalTaxes/management/FederalTaxesCard/FederalTaxesCard.js +16 -15
  400. package/dist/components/Employee/FederalTaxes/management/FederalTaxesCard/FederalTaxesCard.js.map +1 -1
  401. package/dist/components/Employee/FederalTaxes/management/FederalTaxesComponents.d.ts +5 -1
  402. package/dist/components/Employee/FederalTaxes/management/FederalTaxesComponents.js.map +1 -1
  403. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.d.ts +24 -0
  404. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +5 -5
  405. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js.map +1 -1
  406. package/dist/components/Employee/FederalTaxes/management/federalTaxesStateMachine.d.ts +1 -0
  407. package/dist/components/Employee/FederalTaxes/management/federalTaxesStateMachine.js.map +1 -1
  408. package/dist/components/Employee/FederalTaxes/management/useViewDictionary.d.ts +2 -0
  409. package/dist/components/Employee/FederalTaxes/management/useViewDictionary.js.map +1 -1
  410. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.d.ts +24 -0
  411. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +5 -5
  412. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js.map +1 -1
  413. package/dist/components/Employee/FederalTaxes/onboarding/useViewDictionary.d.ts +2 -0
  414. package/dist/components/Employee/FederalTaxes/onboarding/useViewDictionary.js.map +1 -1
  415. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.d.ts +4 -0
  416. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +13 -14
  417. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js.map +1 -1
  418. package/dist/components/Employee/FederalTaxes/shared/index.d.ts +1 -2
  419. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +46 -0
  420. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js.map +1 -1
  421. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.d.ts +112 -0
  422. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.js +4 -4
  423. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.js.map +1 -1
  424. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/index.d.ts +1 -0
  425. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +112 -0
  426. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js.map +1 -1
  427. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/index.d.ts +0 -1
  428. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.d.ts +14 -1
  429. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js.map +1 -1
  430. package/dist/components/Employee/HomeAddress/management/HomeAddress.d.ts +21 -0
  431. package/dist/components/Employee/HomeAddress/management/HomeAddress.js +2 -3
  432. package/dist/components/Employee/HomeAddress/management/HomeAddress.js.map +1 -1
  433. package/dist/components/Employee/HomeAddress/management/HomeAddressCard/HomeAddressCard.d.ts +17 -5
  434. package/dist/components/Employee/HomeAddress/management/HomeAddressCard/HomeAddressCard.js +8 -7
  435. package/dist/components/Employee/HomeAddress/management/HomeAddressCard/HomeAddressCard.js.map +1 -1
  436. package/dist/components/Employee/HomeAddress/management/HomeAddressComponents.d.ts +3 -0
  437. package/dist/components/Employee/HomeAddress/management/HomeAddressComponents.js.map +1 -1
  438. package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.d.ts +20 -0
  439. package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
  440. package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +2 -0
  441. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +5 -5
  442. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
  443. package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.d.ts +7 -1
  444. package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.js.map +1 -1
  445. package/dist/components/Employee/HomeAddress/management/homeAddressStateMachine.d.ts +1 -0
  446. package/dist/components/Employee/HomeAddress/management/homeAddressStateMachine.js.map +1 -1
  447. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.d.ts +46 -7
  448. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  449. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/index.d.ts +0 -1
  450. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.d.ts +21 -6
  451. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js.map +1 -1
  452. package/dist/components/Employee/Landing/Landing.d.ts +6 -0
  453. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  454. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlow.d.ts +43 -0
  455. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlow.js.map +1 -1
  456. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.d.ts +17 -0
  457. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.js.map +1 -1
  458. package/dist/components/Employee/OnboardingExecutionFlow/index.d.ts +2 -2
  459. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +7 -0
  460. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js.map +1 -1
  461. package/dist/components/Employee/OnboardingFlow/OnboardingFlow.d.ts +59 -0
  462. package/dist/components/Employee/OnboardingFlow/OnboardingFlow.js.map +1 -1
  463. package/dist/components/Employee/OnboardingFlow/OnboardingFlowComponents.d.ts +2 -1
  464. package/dist/components/Employee/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  465. package/dist/components/Employee/OnboardingFlow/onboardingStateMachine.d.ts +1 -0
  466. package/dist/components/Employee/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  467. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.d.ts +7 -0
  468. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  469. package/dist/components/Employee/PaymentMethod/management/PaymentMethod.d.ts +39 -0
  470. package/dist/components/Employee/PaymentMethod/management/PaymentMethod.js +6 -7
  471. package/dist/components/Employee/PaymentMethod/management/PaymentMethod.js.map +1 -1
  472. package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.d.ts +23 -6
  473. package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js.map +1 -1
  474. package/dist/components/Employee/PaymentMethod/management/PaymentMethodCard.d.ts +24 -7
  475. package/dist/components/Employee/PaymentMethod/management/PaymentMethodCard.js +14 -14
  476. package/dist/components/Employee/PaymentMethod/management/PaymentMethodCard.js.map +1 -1
  477. package/dist/components/Employee/PaymentMethod/management/PaymentMethodComponents.d.ts +5 -0
  478. package/dist/components/Employee/PaymentMethod/management/PaymentMethodComponents.js.map +1 -1
  479. package/dist/components/Employee/PaymentMethod/management/PaymentMethodSplitForm.d.ts +23 -6
  480. package/dist/components/Employee/PaymentMethod/management/PaymentMethodSplitForm.js.map +1 -1
  481. package/dist/components/Employee/PaymentMethod/management/paymentMethodStateMachine.d.ts +1 -0
  482. package/dist/components/Employee/PaymentMethod/management/paymentMethodStateMachine.js.map +1 -1
  483. package/dist/components/Employee/PaymentMethod/management/useFormDictionary.d.ts +4 -0
  484. package/dist/components/Employee/PaymentMethod/management/useFormDictionary.js.map +1 -1
  485. package/dist/components/Employee/PaymentMethod/onboarding/BankForm.d.ts +2 -0
  486. package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js.map +1 -1
  487. package/dist/components/Employee/PaymentMethod/onboarding/ListView.d.ts +1 -0
  488. package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +15 -15
  489. package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
  490. package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethod.d.ts +43 -0
  491. package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethod.js +6 -7
  492. package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
  493. package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethodComponents.d.ts +4 -0
  494. package/dist/components/Employee/PaymentMethod/onboarding/PaymentMethodComponents.js.map +1 -1
  495. package/dist/components/Employee/PaymentMethod/onboarding/SplitView.d.ts +2 -0
  496. package/dist/components/Employee/PaymentMethod/onboarding/SplitView.js.map +1 -1
  497. package/dist/components/Employee/PaymentMethod/onboarding/paymentMethodStateMachine.d.ts +1 -0
  498. package/dist/components/Employee/PaymentMethod/onboarding/paymentMethodStateMachine.js.map +1 -1
  499. package/dist/components/Employee/PaymentMethod/onboarding/useFormDictionary.d.ts +4 -0
  500. package/dist/components/Employee/PaymentMethod/onboarding/useFormDictionary.js.map +1 -1
  501. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +4 -0
  502. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js +8 -7
  503. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  504. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/index.d.ts +1 -1
  505. package/dist/components/Employee/PaymentMethod/shared/DeleteBankAccountDialog.d.ts +2 -0
  506. package/dist/components/Employee/PaymentMethod/shared/DeleteBankAccountDialog.js.map +1 -1
  507. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.d.ts +4 -0
  508. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js +10 -9
  509. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js.map +1 -1
  510. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/index.d.ts +1 -1
  511. package/dist/components/Employee/PaymentMethod/shared/useBankForm/fields.d.ts +80 -0
  512. package/dist/components/Employee/PaymentMethod/shared/useBankForm/fields.js +1 -1
  513. package/dist/components/Employee/PaymentMethod/shared/useBankForm/fields.js.map +1 -1
  514. package/dist/components/Employee/PaymentMethod/shared/useBankForm/index.d.ts +1 -1
  515. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.d.ts +84 -1
  516. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js.map +1 -1
  517. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +45 -0
  518. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.js.map +1 -1
  519. package/dist/components/Employee/PaymentMethod/shared/useDeleteBankAccount.d.ts +1 -0
  520. package/dist/components/Employee/PaymentMethod/shared/useDeleteBankAccount.js.map +1 -1
  521. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/fields.d.ts +22 -0
  522. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/fields.js.map +1 -1
  523. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/index.d.ts +2 -2
  524. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.d.ts +84 -1
  525. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js.map +1 -1
  526. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodFormSchema.d.ts +45 -0
  527. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodFormSchema.js.map +1 -1
  528. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.d.ts +6 -0
  529. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js.map +1 -1
  530. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/fields.d.ts +22 -0
  531. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/fields.js.map +1 -1
  532. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/index.d.ts +2 -2
  533. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/splitFieldFactory.d.ts +25 -0
  534. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/splitFieldFactory.js +4 -4
  535. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/splitFieldFactory.js.map +1 -1
  536. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.d.ts +124 -7
  537. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js.map +1 -1
  538. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.d.ts +52 -6
  539. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.js +1 -2
  540. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.js.map +1 -1
  541. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.d.ts +9 -0
  542. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +6 -6
  543. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  544. package/dist/components/Employee/Paystubs/shared/usePaystubsList/index.d.ts +1 -1
  545. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.d.ts +25 -0
  546. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js.map +1 -1
  547. package/dist/components/Employee/Profile/management/Profile.d.ts +25 -0
  548. package/dist/components/Employee/Profile/management/Profile.js +11 -12
  549. package/dist/components/Employee/Profile/management/Profile.js.map +1 -1
  550. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.d.ts +22 -6
  551. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +8 -7
  552. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js.map +1 -1
  553. package/dist/components/Employee/Profile/management/ProfileComponents.d.ts +5 -1
  554. package/dist/components/Employee/Profile/management/ProfileComponents.js.map +1 -1
  555. package/dist/components/Employee/Profile/management/ProfileEditForm.d.ts +25 -0
  556. package/dist/components/Employee/Profile/management/ProfileEditForm.js +18 -19
  557. package/dist/components/Employee/Profile/management/ProfileEditForm.js.map +1 -1
  558. package/dist/components/Employee/Profile/management/profileStateMachine.d.ts +1 -0
  559. package/dist/components/Employee/Profile/management/profileStateMachine.js.map +1 -1
  560. package/dist/components/Employee/Profile/onboarding/AdminProfile.d.ts +1 -0
  561. package/dist/components/Employee/Profile/onboarding/AdminProfile.js +10 -11
  562. package/dist/components/Employee/Profile/onboarding/AdminProfile.js.map +1 -1
  563. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.d.ts +1 -0
  564. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +8 -9
  565. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js.map +1 -1
  566. package/dist/components/Employee/Profile/onboarding/Profile.d.ts +61 -0
  567. package/dist/components/Employee/Profile/onboarding/Profile.js +11 -12
  568. package/dist/components/Employee/Profile/onboarding/Profile.js.map +1 -1
  569. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +37 -0
  570. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.js.map +1 -1
  571. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.d.ts +170 -0
  572. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.js +8 -8
  573. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.js.map +1 -1
  574. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/index.d.ts +4 -2
  575. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +140 -1
  576. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  577. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/index.d.ts +0 -1
  578. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.d.ts +37 -4
  579. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  580. package/dist/components/Employee/Profile/shared/useHomeAddressForm/fields.d.ts +130 -0
  581. package/dist/components/Employee/Profile/shared/useHomeAddressForm/fields.js +5 -5
  582. package/dist/components/Employee/Profile/shared/useHomeAddressForm/fields.js.map +1 -1
  583. package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +35 -0
  584. package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.js.map +1 -1
  585. package/dist/components/Employee/Profile/shared/useHomeAddressForm/index.d.ts +2 -1
  586. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.d.ts +45 -0
  587. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map +1 -1
  588. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +77 -1
  589. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map +1 -1
  590. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.d.ts +43 -0
  591. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js +4 -4
  592. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js.map +1 -1
  593. package/dist/components/Employee/Profile/shared/useWorkAddressForm/index.d.ts +2 -1
  594. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.d.ts +42 -0
  595. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map +1 -1
  596. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.d.ts +85 -0
  597. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map +1 -1
  598. package/dist/components/Employee/Profile/shared/useWorkAddressForm/workAddressSchema.d.ts +35 -0
  599. package/dist/components/Employee/Profile/shared/useWorkAddressForm/workAddressSchema.js.map +1 -1
  600. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +16 -0
  601. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  602. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingFlow.d.ts +31 -0
  603. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingFlow.js.map +1 -1
  604. package/dist/components/Employee/SelfOnboardingFlow/selfOnboardingMachine.d.ts +1 -0
  605. package/dist/components/Employee/SelfOnboardingFlow/selfOnboardingMachine.js.map +1 -1
  606. package/dist/components/Employee/StateTaxes/index.d.ts +1 -1
  607. package/dist/components/Employee/StateTaxes/management/StateTaxes.d.ts +24 -0
  608. package/dist/components/Employee/StateTaxes/management/StateTaxes.js +9 -10
  609. package/dist/components/Employee/StateTaxes/management/StateTaxes.js.map +1 -1
  610. package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.d.ts +21 -6
  611. package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js +12 -11
  612. package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js.map +1 -1
  613. package/dist/components/Employee/StateTaxes/management/StateTaxesComponents.d.ts +4 -0
  614. package/dist/components/Employee/StateTaxes/management/StateTaxesComponents.js.map +1 -1
  615. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.d.ts +20 -8
  616. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +5 -5
  617. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js.map +1 -1
  618. package/dist/components/Employee/StateTaxes/management/stateTaxesStateMachine.d.ts +1 -0
  619. package/dist/components/Employee/StateTaxes/management/stateTaxesStateMachine.js.map +1 -1
  620. package/dist/components/Employee/StateTaxes/management/useViewDictionary.d.ts +2 -0
  621. package/dist/components/Employee/StateTaxes/management/useViewDictionary.js.map +1 -1
  622. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.d.ts +22 -0
  623. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +5 -5
  624. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js.map +1 -1
  625. package/dist/components/Employee/StateTaxes/onboarding/useViewDictionary.d.ts +2 -0
  626. package/dist/components/Employee/StateTaxes/onboarding/useViewDictionary.js.map +1 -1
  627. package/dist/components/Employee/StateTaxes/shared/EmployeeStateTaxesView.d.ts +4 -0
  628. package/dist/components/Employee/StateTaxes/shared/EmployeeStateTaxesView.js +2 -3
  629. package/dist/components/Employee/StateTaxes/shared/EmployeeStateTaxesView.js.map +1 -1
  630. package/dist/components/Employee/StateTaxes/shared/index.d.ts +1 -2
  631. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.d.ts +39 -16
  632. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.js.map +1 -1
  633. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.d.ts +6 -0
  634. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.js +8 -8
  635. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.js.map +1 -1
  636. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.d.ts +4 -9
  637. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.js.map +1 -1
  638. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMeta.d.ts +5 -1
  639. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldProps.d.ts +52 -0
  640. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +26 -5
  641. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
  642. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.d.ts +106 -0
  643. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
  644. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/index.d.ts +0 -1
  645. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.d.ts +5 -8
  646. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js.map +1 -1
  647. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.d.ts +53 -0
  648. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  649. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +1 -0
  650. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +11 -10
  651. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
  652. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlow.d.ts +47 -0
  653. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlow.js.map +1 -1
  654. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.d.ts +20 -0
  655. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js +10 -9
  656. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js.map +1 -1
  657. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.d.ts +2 -0
  658. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.js.map +1 -1
  659. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.d.ts +48 -0
  660. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  661. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +1 -0
  662. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +3 -2
  663. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
  664. package/dist/components/Employee/Terminations/types.d.ts +16 -0
  665. package/dist/components/Employee/WorkAddress/management/WorkAddress.d.ts +21 -0
  666. package/dist/components/Employee/WorkAddress/management/WorkAddress.js +6 -7
  667. package/dist/components/Employee/WorkAddress/management/WorkAddress.js.map +1 -1
  668. package/dist/components/Employee/WorkAddress/management/WorkAddressCard/WorkAddressCard.d.ts +17 -6
  669. package/dist/components/Employee/WorkAddress/management/WorkAddressCard/WorkAddressCard.js +17 -16
  670. package/dist/components/Employee/WorkAddress/management/WorkAddressCard/WorkAddressCard.js.map +1 -1
  671. package/dist/components/Employee/WorkAddress/management/WorkAddressComponents.d.ts +3 -0
  672. package/dist/components/Employee/WorkAddress/management/WorkAddressComponents.js.map +1 -1
  673. package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.d.ts +20 -0
  674. package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
  675. package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +2 -0
  676. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +7 -7
  677. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
  678. package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.d.ts +2 -0
  679. package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.js.map +1 -1
  680. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.d.ts +46 -7
  681. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  682. package/dist/components/Employee/WorkAddress/management/workAddressStateMachine.d.ts +1 -0
  683. package/dist/components/Employee/WorkAddress/management/workAddressStateMachine.js.map +1 -1
  684. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/index.d.ts +0 -1
  685. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.d.ts +21 -4
  686. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js.map +1 -1
  687. package/dist/components/Employee/exports/employeeManagement.d.ts +7 -2
  688. package/dist/components/Employee/exports/employeeManagement.js +58 -56
  689. package/dist/components/Employee/exports/employeeManagement.js.map +1 -1
  690. package/dist/components/Employee/exports/employeeOnboarding.d.ts +11 -10
  691. package/dist/components/Employee/exports/employeeOnboarding.js +24 -22
  692. package/dist/components/Employee/exports/employeeOnboarding.js.map +1 -1
  693. package/dist/components/Employee/index.d.ts +0 -1
  694. package/dist/components/Flow/FlowHeader.js +4 -3
  695. package/dist/components/Flow/FlowHeader.js.map +1 -1
  696. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +19 -18
  697. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
  698. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +1 -1
  699. package/dist/components/InformationRequests/InformationRequests.js +7 -8
  700. package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
  701. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +16 -17
  702. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
  703. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -3
  704. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
  705. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +11 -10
  706. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
  707. package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js +0 -1
  708. package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js.map +1 -1
  709. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +9 -8
  710. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
  711. package/dist/components/Payroll/Dismissal/index.d.ts +2 -0
  712. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +27 -36
  713. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  714. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +10 -10
  715. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +13 -11
  716. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  717. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +1 -0
  718. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  719. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js +8 -7
  720. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js.map +1 -1
  721. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +2 -3
  722. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  723. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +18 -18
  724. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +295 -289
  725. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  726. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +18 -18
  727. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +15 -15
  728. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +4 -4
  729. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js +3 -2
  730. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
  731. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +6 -7
  732. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  733. package/dist/components/Payroll/RecoveryCases/RecoveryCases.js +6 -7
  734. package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
  735. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +1 -1
  736. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +2 -1
  737. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
  738. package/dist/components/Payroll/RecoveryCases/useRecoveryCaseErrorCode.js +3 -2
  739. package/dist/components/Payroll/RecoveryCases/useRecoveryCaseErrorCode.js.map +1 -1
  740. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +10 -10
  741. package/dist/components/Payroll/index.d.ts +2 -0
  742. package/dist/components/Payroll/index.js +24 -22
  743. package/dist/components/Payroll/index.js.map +1 -1
  744. package/dist/components/Payroll/usePreparedPayrollData.js +22 -33
  745. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  746. package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js +2 -3
  747. package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js.map +1 -1
  748. package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js +2 -3
  749. package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js.map +1 -1
  750. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +14 -14
  751. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
  752. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +3 -2
  753. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
  754. package/dist/components/TimeOff/PolicyList/PolicyList.js +2 -3
  755. package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
  756. package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +8 -8
  757. package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +4 -4
  758. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js +4 -4
  759. package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.js +36 -34
  760. package/dist/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.js.map +1 -1
  761. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +4 -4
  762. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +16 -16
  763. package/dist/components/TimeOff/index.d.ts +6 -2
  764. package/dist/components/TimeOff/index.js +21 -17
  765. package/dist/components/TimeOff/index.js.map +1 -1
  766. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +25 -24
  767. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
  768. package/dist/components/index.d.ts +1 -6
  769. package/dist/contexts/GustoProvider/GustoProvider.d.ts +0 -7
  770. package/dist/contexts/GustoProvider/GustoProvider.js +10 -11
  771. package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
  772. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +3 -2
  773. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  774. package/dist/contexts/GustoProvider/index.d.ts +1 -1
  775. package/dist/contexts/index.d.ts +0 -1
  776. package/dist/i18n/I18n.js +0 -1
  777. package/dist/i18n/I18n.js.map +1 -1
  778. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +56 -40
  779. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  780. package/dist/i18n/en/common.json.d.ts +0 -1
  781. package/dist/i18n/en/common.json.js +2 -2
  782. package/dist/index.d.ts +18 -16
  783. package/dist/index.js +229 -163
  784. package/dist/index.js.map +1 -1
  785. package/dist/node_modules/react-dnd/dist/core/DndProvider.js +1 -1
  786. package/dist/node_modules/react-dnd/dist/core/DndProvider.js.map +1 -1
  787. package/dist/partner-hook-utils/composeErrorHandler.js +3 -1
  788. package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
  789. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +15 -12
  790. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
  791. package/dist/partner-hook-utils/form/fields/DatePickerHookField.js +1 -1
  792. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +19 -16
  793. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
  794. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +16 -13
  795. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  796. package/dist/partner-hook-utils/form/fields/SelectHookField.js +15 -12
  797. package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
  798. package/dist/partner-hook-utils/form/fields/SwitchHookField.js +21 -18
  799. package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
  800. package/dist/partner-hook-utils/form/fields/TextInputHookField.js +12 -9
  801. package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
  802. package/dist/shared/constants.d.ts +5 -3
  803. package/dist/shared/constants.js +0 -1
  804. package/dist/shared/constants.js.map +1 -1
  805. package/dist/style.css +1 -1
  806. package/dist/types/i18next.d.ts +9 -33
  807. package/docs/reference/endpoint-inventory.json +291 -1070
  808. package/package.json +32 -18
  809. package/dist/assets/icons/magnifyingGlass.png.js +0 -5
  810. package/dist/assets/icons/magnifyingGlass.png.js.map +0 -1
  811. package/dist/components/Company/index.js +0 -37
  812. package/dist/components/Company/index.js.map +0 -1
  813. package/dist/components/Contractor/index.js +0 -29
  814. package/dist/components/Contractor/index.js.map +0 -1
  815. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/index.d.ts +0 -3
  816. package/dist/components/Employee/Deductions/shared/index.d.ts +0 -8
  817. package/dist/components/Employee/Documents/shared/index.d.ts +0 -3
  818. package/dist/components/Employee/FederalTaxes/onboarding/index.d.ts +0 -2
  819. package/dist/components/Employee/HomeAddress/shared/index.d.ts +0 -3
  820. package/dist/components/Employee/Paystubs/shared/index.d.ts +0 -3
  821. package/dist/components/Employee/Taxes/Actions.d.ts +0 -1
  822. package/dist/components/Employee/Taxes/Actions.js +0 -13
  823. package/dist/components/Employee/Taxes/Actions.js.map +0 -1
  824. package/dist/components/Employee/Taxes/FederalForm.d.ts +0 -12
  825. package/dist/components/Employee/Taxes/FederalForm.js +0 -109
  826. package/dist/components/Employee/Taxes/FederalForm.js.map +0 -1
  827. package/dist/components/Employee/Taxes/FederalHead.d.ts +0 -1
  828. package/dist/components/Employee/Taxes/FederalHead.js +0 -25
  829. package/dist/components/Employee/Taxes/FederalHead.js.map +0 -1
  830. package/dist/components/Employee/Taxes/StateForm.d.ts +0 -6
  831. package/dist/components/Employee/Taxes/StateForm.js +0 -35
  832. package/dist/components/Employee/Taxes/StateForm.js.map +0 -1
  833. package/dist/components/Employee/Taxes/Taxes.d.ts +0 -13
  834. package/dist/components/Employee/Taxes/Taxes.js +0 -133
  835. package/dist/components/Employee/Taxes/Taxes.js.map +0 -1
  836. package/dist/components/Employee/Taxes/index.d.ts +0 -2
  837. package/dist/components/Employee/Taxes/useTaxes.d.ts +0 -8
  838. package/dist/components/Employee/Taxes/useTaxes.js +0 -21
  839. package/dist/components/Employee/Taxes/useTaxes.js.map +0 -1
  840. package/dist/components/Employee/Terminations/TerminationFlow/index.d.ts +0 -3
  841. package/dist/components/Employee/Terminations/TerminationsData.d.ts +0 -6
  842. package/dist/components/Employee/Terminations/index.d.ts +0 -8
  843. package/dist/components/Employee/WorkAddress/shared/index.d.ts +0 -3
  844. package/dist/components/Employee/index.js +0 -49
  845. package/dist/components/Employee/index.js.map +0 -1
  846. package/dist/contexts/GustoApiProvider/index.d.ts +0 -3
  847. package/dist/i18n/en/Employee.Taxes.json.js +0 -58
  848. package/dist/i18n/en/Employee.Taxes.json.js.map +0 -1
@@ -6,49 +6,93 @@ import { SplitByValue, SplitPaymentsFormData, SplitPaymentsFormOptionalFieldsToR
6
6
  import { SplitByFieldProps } from './fields';
7
7
  import { SplitFieldEntry } from './splitFieldFactory';
8
8
  import { BaseFormHookReady, FieldsMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
9
+ /**
10
+ * A single split entry — pairs a bank account identifier with its current split allocation.
11
+ *
12
+ * @remarks
13
+ * Surfaced on `data.splits` from {@link useSplitPaymentsForm}. Derived from
14
+ * `paymentMethod.splits` when present, otherwise from the employee's bank
15
+ * accounts (one entry per account, no allocated amount). Carries the raw
16
+ * domain data — use it for label construction or lookups by uuid.
17
+ *
18
+ * @public
19
+ */
9
20
  export interface WorkingSplit {
21
+ /** UUID of the underlying bank account. */
10
22
  uuid: string;
23
+ /** Account nickname, when available. */
11
24
  name: string | null;
25
+ /** Masked account number suffix, when available. */
12
26
  hiddenAccountNumber: string | null;
27
+ /** Allocation amount — `null` for the remainder split in Amount mode and for splits that haven't been allocated yet. */
13
28
  splitAmount: number | null;
29
+ /** Ordering value — splits are processed in ascending priority; the highest priority is the remainder. */
14
30
  priority: number;
15
31
  }
32
+ /**
33
+ * Props for {@link useSplitPaymentsForm}.
34
+ *
35
+ * @public
36
+ */
16
37
  export interface UseSplitPaymentsFormProps {
38
+ /** Employee whose payment splits are being edited. */
17
39
  employeeId: string;
40
+ /** Override optional fields to be required. Currently a no-op — `splitBy` and `priority` are always required, and per-split `splitAmount` required-ness is automatic. */
18
41
  optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire;
42
+ /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */
19
43
  validationMode?: UseFormProps['mode'];
44
+ /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */
20
45
  shouldFocusError?: boolean;
21
46
  }
47
+ /**
48
+ * Field components exposed by {@link useSplitPaymentsForm} on `form.Fields`.
49
+ *
50
+ * @public
51
+ */
22
52
  export interface SplitPaymentsFormFields {
53
+ /** Bound to `splitBy` — see {@link SplitByField}. */
23
54
  SplitBy: ComponentType<SplitByFieldProps>;
55
+ /** One entry per bank account, each carrying a pre-bound `Field` component for the per-split amount. */
24
56
  splits: SplitFieldEntry[];
25
57
  }
58
+ /**
59
+ * Ready-state return value of {@link useSplitPaymentsForm}.
60
+ *
61
+ * @public
62
+ */
26
63
  export interface UseSplitPaymentsFormReady extends BaseFormHookReady<FieldsMetadata, SplitPaymentsFormData, SplitPaymentsFormFields> {
64
+ /** Server-fetched data and derived working values. */
27
65
  data: {
66
+ /** The employee's current payment method. */
28
67
  paymentMethod: EmployeePaymentMethod;
68
+ /** All bank accounts available to allocate splits across. */
29
69
  bankAccounts: EmployeeBankAccount[];
70
+ /** The current working split entries, one per bank account. */
30
71
  splits: WorkingSplit[];
31
72
  /** UUID of the split that absorbs the remainder in Amount mode (always the last by priority). */
32
73
  remainderId: string;
33
74
  };
75
+ /** Submission state and reactive form-level flags. */
34
76
  status: {
77
+ /** `true` while the update mutation is in flight. */
35
78
  isPending: boolean;
79
+ /** Always `'update'` — the hook always edits an existing payment method. */
36
80
  mode: 'update';
37
81
  /** Current `splitBy` value, reactively tracked. */
38
82
  splitBy: SplitByValue;
39
83
  /** Live sum of `splitAmount` values; useful for displaying the current total in Percentage mode. */
40
84
  percentageTotal: number;
41
85
  /**
42
- * Mirrors the schema-emitted `PERCENTAGE_TOTAL_MISMATCH` error at the
43
- * synthetic form path. Tracks `formState.errors` directly and follows
44
- * the standard react-hook-form validation lifecycle: with the default
45
- * `validationMode: 'onSubmit'`, becomes `true` after the first failed
46
- * Save attempt and clears live as the user corrects the total. Only
47
- * surfaces in Percentage mode.
86
+ * `true` after a failed Percentage-mode Save when the splits don't sum to
87
+ * 100; clears live as the user corrects the total. Follows the standard
88
+ * react-hook-form validation lifecycle (controlled by `validationMode`).
89
+ * Only surfaces in Percentage mode.
48
90
  */
49
91
  hasPercentageImbalance: boolean;
50
92
  };
93
+ /** Actions that mutate the form or submit it. */
51
94
  actions: {
95
+ /** Submit the form. Returns the updated payment method on success or `undefined` on validation/mutation failure. */
52
96
  onSubmit: () => Promise<HookSubmitResult<EmployeePaymentMethod> | undefined>;
53
97
  /**
54
98
  * Reorder splits by uuid (Amount mode). Pass the ordered list of split
@@ -59,7 +103,80 @@ export interface UseSplitPaymentsFormReady extends BaseFormHookReady<FieldsMetad
59
103
  reorderSplits: (orderedUuids: string[]) => void;
60
104
  };
61
105
  }
106
+ /**
107
+ * Headless React Hook Form hook for splitting an employee's Direct Deposit across multiple bank accounts.
108
+ *
109
+ * @remarks
110
+ * Supports two split modes: Percentage (whole-number shares that sum to 100)
111
+ * and Amount (dollar amounts, with the last-priority split absorbing the
112
+ * remainder). Always operates in update mode against the employee's existing
113
+ * payment method.
114
+ *
115
+ * The Percentage sum-to-100 invariant is surfaced via
116
+ * `status.hasPercentageImbalance` (not as a per-field error). With the default
117
+ * `validationMode: 'onSubmit'`, the imbalance flag appears after the first
118
+ * failed Save and clears live as the user corrects the total.
119
+ *
120
+ * @param props - See {@link UseSplitPaymentsFormProps}.
121
+ * @returns A loading-state result while the payment method and bank accounts are loading, or a {@link UseSplitPaymentsFormReady} once ready.
122
+ * @public
123
+ *
124
+ * @example
125
+ * ```tsx
126
+ * import {
127
+ * useSplitPaymentsForm,
128
+ * SDKFormProvider,
129
+ * type SplitByValue,
130
+ * type UseSplitPaymentsFormReady,
131
+ * } from '@gusto/embedded-react-sdk'
132
+ *
133
+ * function SplitPaycheckScreen({ employeeId }: { employeeId: string }) {
134
+ * const splitForm = useSplitPaymentsForm({ employeeId })
135
+ *
136
+ * if (splitForm.isLoading) return null
137
+ * return <SplitPaycheckReady splitForm={splitForm} />
138
+ * }
139
+ *
140
+ * function SplitPaycheckReady({ splitForm }: { splitForm: UseSplitPaymentsFormReady }) {
141
+ * const { Fields } = splitForm.form
142
+ * const { hasPercentageImbalance, percentageTotal } = splitForm.status
143
+ *
144
+ * return (
145
+ * <SDKFormProvider formHookResult={splitForm}>
146
+ * <form
147
+ * onSubmit={e => {
148
+ * e.preventDefault()
149
+ * void splitForm.actions.onSubmit()
150
+ * }}
151
+ * >
152
+ * {hasPercentageImbalance && (
153
+ * <div role="alert">Splits must total 100%. Currently {percentageTotal}%.</div>
154
+ * )}
155
+ * <Fields.SplitBy label="Split by" getOptionLabel={(value: SplitByValue) => value} />
156
+ * {Fields.splits.map(split => (
157
+ * <split.Field
158
+ * key={split.uuid}
159
+ * label={split.name ?? 'Account'}
160
+ * min={0}
161
+ * />
162
+ * ))}
163
+ * <button type="submit" disabled={splitForm.status.isPending}>Save</button>
164
+ * </form>
165
+ * </SDKFormProvider>
166
+ * )
167
+ * }
168
+ * ```
169
+ */
62
170
  export declare function useSplitPaymentsForm({ employeeId, optionalFieldsToRequire, validationMode, shouldFocusError, }: UseSplitPaymentsFormProps): HookLoadingResult | UseSplitPaymentsFormReady;
171
+ /**
172
+ * Return type of {@link useSplitPaymentsForm} — a discriminated union on `isLoading`.
173
+ *
174
+ * @public
175
+ */
63
176
  export type UseSplitPaymentsFormResult = HookLoadingResult | UseSplitPaymentsFormReady;
177
+ /**
178
+ * Per-field metadata exposed on `form.fieldsMetadata` for {@link useSplitPaymentsForm}.
179
+ *
180
+ * @public
181
+ */
64
182
  export type SplitPaymentsFormFieldsMetadata = UseSplitPaymentsFormReady['form']['fieldsMetadata'];
65
- export type SplitPaymentsFormFieldsType = UseSplitPaymentsFormReady['form']['Fields'];
@@ -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-2025-11-15/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api-v-2025-11-15/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api-v-2025-11-15/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodsGetBankAccounts } from '@gusto/embedded-api-v-2025-11-15/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api-v-2025-11-15/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 FieldsMetadata,\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\nexport interface WorkingSplit {\n uuid: string\n name: string | null\n hiddenAccountNumber: string | null\n splitAmount: number | null\n priority: number\n}\n\nexport interface UseSplitPaymentsFormProps {\n employeeId: string\n optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire\n validationMode?: UseFormProps['mode']\n shouldFocusError?: boolean\n}\n\nexport interface SplitPaymentsFormFields {\n SplitBy: ComponentType<SplitByFieldProps>\n splits: SplitFieldEntry[]\n}\n\nexport interface UseSplitPaymentsFormReady extends BaseFormHookReady<\n FieldsMetadata,\n SplitPaymentsFormData,\n SplitPaymentsFormFields\n> {\n data: {\n paymentMethod: EmployeePaymentMethod\n bankAccounts: EmployeeBankAccount[]\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 status: {\n isPending: boolean\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 * Mirrors the schema-emitted `PERCENTAGE_TOTAL_MISMATCH` error at the\n * synthetic form path. Tracks `formState.errors` directly and follows\n * the standard react-hook-form validation lifecycle: with the default\n * `validationMode: 'onSubmit'`, becomes `true` after the first failed\n * Save attempt and clears live as the user corrects the total. Only\n * surfaces in Percentage mode.\n */\n hasPercentageImbalance: boolean\n }\n actions: {\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\nexport function useSplitPaymentsForm({\n employeeId,\n optionalFieldsToRequire,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseSplitPaymentsFormProps): HookLoadingResult | UseSplitPaymentsFormReady {\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<FieldsMetadata>(() => {\n const entries: FieldsMetadata = {}\n const isAmountSplit = watchedSplitBy === SPLIT_BY.amount\n for (const split of splits) {\n const path = `splitAmount.${split.uuid}`\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: FieldsMetadata = {\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\nexport type UseSplitPaymentsFormResult = HookLoadingResult | UseSplitPaymentsFormReady\nexport type SplitPaymentsFormFieldsMetadata = UseSplitPaymentsFormReady['form']['fieldsMetadata']\nexport type SplitPaymentsFormFieldsType = UseSplitPaymentsFormReady['form']['Fields']\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-v-2025-11-15/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api-v-2025-11-15/models/components/employeepaymentmethod'\nimport { useEmployeePaymentMethodGet } from '@gusto/embedded-api-v-2025-11-15/react-query/employeePaymentMethodGet'\nimport { useEmployeePaymentMethodsGetBankAccounts } from '@gusto/embedded-api-v-2025-11-15/react-query/employeePaymentMethodsGetBankAccounts'\nimport { useEmployeePaymentMethodUpdateMutation } from '@gusto/embedded-api-v-2025-11-15/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 FieldsMetadata,\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 /** Bound to `splitBy` — see {@link SplitByField}. */\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 FieldsMetadata,\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): HookLoadingResult | UseSplitPaymentsFormReady {\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<FieldsMetadata>(() => {\n const entries: FieldsMetadata = {}\n const isAmountSplit = watchedSplitBy === SPLIT_BY.amount\n for (const split of splits) {\n const path = `splitAmount.${split.uuid}`\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: FieldsMetadata = {\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 * @public\n */\nexport type SplitPaymentsFormFieldsMetadata = UseSplitPaymentsFormReady['form']['fieldsMetadata']\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,5 +1,11 @@
1
1
  import { z } from 'zod';
2
2
  import { OptionalFieldsToRequire } from '../../../../../partner-hook-utils/form/buildFormSchema';
3
+ /**
4
+ * Validation error codes emitted by the split payments form schema. Map these
5
+ * codes to localized copy in `validationMessages` when composing the hook.
6
+ *
7
+ * @public
8
+ */
3
9
  export declare const SplitPaymentsFormErrorCodes: {
4
10
  readonly REQUIRED: "REQUIRED";
5
11
  readonly INVALID_PERCENTAGE: "INVALID_PERCENTAGE";
@@ -11,10 +17,29 @@ export declare const SplitPaymentsFormErrorCodes: {
11
17
  * Synthetic form path where the schema emits the percentage-sum-to-100
12
18
  * invariant. The hook subscribes to errors at this path to drive
13
19
  * `status.hasPercentageImbalance`.
20
+ *
21
+ * @internal
14
22
  */
15
23
  export declare const PERCENTAGE_TOTAL_PATH: "percentageTotal";
24
+ /**
25
+ * Union of validation error code strings emitted by the split payments form
26
+ * schema.
27
+ *
28
+ * @public
29
+ */
16
30
  export type SplitPaymentsFormErrorCode = (typeof SplitPaymentsFormErrorCodes)[keyof typeof SplitPaymentsFormErrorCodes];
31
+ /**
32
+ * Supported split-by modes: split by percentage of net pay, or by fixed dollar
33
+ * amount per account.
34
+ *
35
+ * @public
36
+ */
17
37
  export declare const SPLIT_BY_VALUES: readonly ["Percentage", "Amount"];
38
+ /**
39
+ * Union of split-by mode values that the form accepts.
40
+ *
41
+ * @public
42
+ */
18
43
  export type SplitByValue = (typeof SPLIT_BY_VALUES)[number];
19
44
  declare const fieldValidators: {
20
45
  splitBy: z.ZodEnum<{
@@ -24,24 +49,45 @@ declare const fieldValidators: {
24
49
  splitAmount: z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNullable<z.ZodNumber>>>;
25
50
  priority: z.ZodRecord<z.ZodString, z.ZodNumber>;
26
51
  };
52
+ /**
53
+ * Field names accepted by the split payments form.
54
+ *
55
+ * @public
56
+ */
27
57
  export type SplitPaymentsFormField = keyof typeof fieldValidators;
58
+ /**
59
+ * Shape of the values managed by the split payments form. `splitAmount` and
60
+ * `priority` are keyed by bank account uuid.
61
+ *
62
+ * @public
63
+ */
28
64
  export type SplitPaymentsFormData = {
65
+ /** Selected split mode — by percentage or by fixed amount. */
29
66
  splitBy: SplitByValue;
67
+ /** Per-account split values keyed by bank account uuid (percent or dollars depending on `splitBy`). */
30
68
  splitAmount: Record<string, number | null>;
69
+ /** Per-account priority values keyed by bank account uuid; the highest priority receives the remainder. */
31
70
  priority: Record<string, number>;
32
71
  };
72
+ /**
73
+ * Shape of the validated values produced by the split payments form on submit.
74
+ *
75
+ * @public
76
+ */
33
77
  export type SplitPaymentsFormOutputs = SplitPaymentsFormData;
34
78
  declare const requiredFieldsConfig: {};
79
+ /**
80
+ * Keys of optional split payments fields that can be promoted to required via
81
+ * the hook's `optionalFieldsToRequire` option.
82
+ *
83
+ * @public
84
+ */
35
85
  export type SplitPaymentsFormOptionalFieldsToRequire = OptionalFieldsToRequire<typeof requiredFieldsConfig>;
86
+ /** @internal */
36
87
  interface SplitPaymentsFormSchemaOptions {
37
88
  optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire;
38
89
  }
39
- /**
40
- * Resolves the remainder uuid (highest priority value) from a priority map.
41
- * Exported so the hook can mirror the same selection rule when deriving
42
- * dynamic field metadata.
43
- */
44
- export declare function resolveRemainderUuid(priority: Record<string, number>): string;
90
+ /** @internal */
45
91
  export declare function createSplitPaymentsFormSchema(options?: SplitPaymentsFormSchemaOptions): import('../../../../../partner-hook-utils/form/buildFormSchema').BuildFormSchemaResult<{
46
92
  splitBy: z.ZodEnum<{
47
93
  Percentage: "Percentage";
@@ -87,7 +87,6 @@ export {
87
87
  m as PERCENTAGE_TOTAL_PATH,
88
88
  c as SPLIT_BY_VALUES,
89
89
  u as SplitPaymentsFormErrorCodes,
90
- C as createSplitPaymentsFormSchema,
91
- A as resolveRemainderUuid
90
+ C as createSplitPaymentsFormSchema
92
91
  };
93
92
  //# sourceMappingURL=useSplitPaymentsFormSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSplitPaymentsFormSchema.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type OptionalFieldsToRequire,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { SPLIT_BY } from '@/shared/constants'\n\nexport const SplitPaymentsFormErrorCodes = {\n REQUIRED: 'REQUIRED',\n INVALID_PERCENTAGE: 'INVALID_PERCENTAGE',\n INVALID_AMOUNT: 'INVALID_AMOUNT',\n DUPLICATE_PRIORITIES: 'DUPLICATE_PRIORITIES',\n PERCENTAGE_TOTAL_MISMATCH: 'PERCENTAGE_TOTAL_MISMATCH',\n} as const\n\n/**\n * Synthetic form path where the schema emits the percentage-sum-to-100\n * invariant. The hook subscribes to errors at this path to drive\n * `status.hasPercentageImbalance`.\n */\nexport const PERCENTAGE_TOTAL_PATH = 'percentageTotal' as const\n\nexport type SplitPaymentsFormErrorCode =\n (typeof SplitPaymentsFormErrorCodes)[keyof typeof SplitPaymentsFormErrorCodes]\n\nexport const SPLIT_BY_VALUES = [SPLIT_BY.percentage, SPLIT_BY.amount] as const\nexport type SplitByValue = (typeof SPLIT_BY_VALUES)[number]\n\n// Cleared NumberInput emits `NaN`. Normalize NaN to `null` at the schema\n// boundary so it (a) doesn't trip Zod's built-in \"expected number, received\n// NaN\" message, and (b) flows through the same REQUIRED branch in\n// `superRefine` as an explicitly null value.\nconst splitAmountValueSchema = z.preprocess(\n v => (typeof v === 'number' && Number.isNaN(v) ? null : v),\n z.number().nullable(),\n)\n\nconst fieldValidators = {\n splitBy: z.enum(SPLIT_BY_VALUES),\n splitAmount: z.record(z.string(), splitAmountValueSchema),\n priority: z.record(z.string(), z.number()),\n}\n\nexport type SplitPaymentsFormField = keyof typeof fieldValidators\n\nexport type SplitPaymentsFormData = {\n splitBy: SplitByValue\n splitAmount: Record<string, number | null>\n priority: Record<string, number>\n}\nexport type SplitPaymentsFormOutputs = SplitPaymentsFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\nexport type SplitPaymentsFormOptionalFieldsToRequire = OptionalFieldsToRequire<\n typeof requiredFieldsConfig\n>\n\ninterface SplitPaymentsFormSchemaOptions {\n optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire\n}\n\n/**\n * Resolves the remainder uuid (highest priority value) from a priority map.\n * Exported so the hook can mirror the same selection rule when deriving\n * dynamic field metadata.\n */\nexport function resolveRemainderUuid(priority: Record<string, number>): string {\n return Object.entries(priority).reduce<string>((maxId, [uuid, value]) => {\n if (!maxId) return uuid\n const currentMax = priority[maxId] ?? 0\n return value > currentMax ? uuid : maxId\n }, '')\n}\n\nexport function createSplitPaymentsFormSchema(options: SplitPaymentsFormSchemaOptions = {}) {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: SplitPaymentsFormErrorCodes.REQUIRED,\n mode: 'update',\n optionalFieldsToRequire: options.optionalFieldsToRequire,\n superRefine: (data, ctx) => {\n if (data.splitBy === SPLIT_BY.percentage) {\n let anyInvalid = false\n let total = 0\n for (const [uuid, value] of Object.entries(data.splitAmount)) {\n if (value === null) {\n anyInvalid = true\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.REQUIRED,\n })\n continue\n }\n if (!Number.isInteger(value) || value < 0 || value > 100) {\n anyInvalid = true\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.INVALID_PERCENTAGE,\n })\n continue\n }\n total += value\n }\n // Only enforce sum-to-100 when every split is otherwise valid. While\n // any value is missing or out of range, the per-field error is the\n // right thing to surface; an additional sum mismatch would be noise.\n // Emitted at the synthetic form path so the hook can drive a\n // form-level alert via `status.hasPercentageImbalance` without\n // polluting per-field errors.\n if (!anyInvalid && total !== 100) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [PERCENTAGE_TOTAL_PATH],\n message: SplitPaymentsFormErrorCodes.PERCENTAGE_TOTAL_MISMATCH,\n })\n }\n } else {\n const remainderUuid = resolveRemainderUuid(data.priority)\n for (const [uuid, value] of Object.entries(data.splitAmount)) {\n if (value === null) {\n if (uuid === remainderUuid) continue\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.REQUIRED,\n })\n continue\n }\n if (value < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.INVALID_AMOUNT,\n })\n }\n }\n const priorities = Object.values(data.priority)\n if (new Set(priorities).size !== priorities.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['priority'],\n message: SplitPaymentsFormErrorCodes.DUPLICATE_PRIORITIES,\n })\n }\n }\n },\n })\n}\n"],"names":["SplitPaymentsFormErrorCodes","PERCENTAGE_TOTAL_PATH","SPLIT_BY_VALUES","SPLIT_BY","splitAmountValueSchema","z","v","fieldValidators","requiredFieldsConfig","resolveRemainderUuid","priority","maxId","uuid","value","currentMax","createSplitPaymentsFormSchema","options","buildFormSchema","data","ctx","anyInvalid","total","remainderUuid","priorities"],"mappings":"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"}
1
+ {"version":3,"file":"useSplitPaymentsFormSchema.js","sources":["../../../../../../src/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type OptionalFieldsToRequire,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { SPLIT_BY } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the split payments form schema. Map these\n * codes to localized copy in `validationMessages` when composing the hook.\n *\n * @public\n */\nexport const SplitPaymentsFormErrorCodes = {\n REQUIRED: 'REQUIRED',\n INVALID_PERCENTAGE: 'INVALID_PERCENTAGE',\n INVALID_AMOUNT: 'INVALID_AMOUNT',\n DUPLICATE_PRIORITIES: 'DUPLICATE_PRIORITIES',\n PERCENTAGE_TOTAL_MISMATCH: 'PERCENTAGE_TOTAL_MISMATCH',\n} as const\n\n/**\n * Synthetic form path where the schema emits the percentage-sum-to-100\n * invariant. The hook subscribes to errors at this path to drive\n * `status.hasPercentageImbalance`.\n *\n * @internal\n */\nexport const PERCENTAGE_TOTAL_PATH = 'percentageTotal' as const\n\n/**\n * Union of validation error code strings emitted by the split payments form\n * schema.\n *\n * @public\n */\nexport type SplitPaymentsFormErrorCode =\n (typeof SplitPaymentsFormErrorCodes)[keyof typeof SplitPaymentsFormErrorCodes]\n\n/**\n * Supported split-by modes: split by percentage of net pay, or by fixed dollar\n * amount per account.\n *\n * @public\n */\nexport const SPLIT_BY_VALUES = [SPLIT_BY.percentage, SPLIT_BY.amount] as const\n/**\n * Union of split-by mode values that the form accepts.\n *\n * @public\n */\nexport type SplitByValue = (typeof SPLIT_BY_VALUES)[number]\n\n// Cleared NumberInput emits `NaN`. Normalize NaN to `null` at the schema\n// boundary so it (a) doesn't trip Zod's built-in \"expected number, received\n// NaN\" message, and (b) flows through the same REQUIRED branch in\n// `superRefine` as an explicitly null value.\nconst splitAmountValueSchema = z.preprocess(\n v => (typeof v === 'number' && Number.isNaN(v) ? null : v),\n z.number().nullable(),\n)\n\nconst fieldValidators = {\n splitBy: z.enum(SPLIT_BY_VALUES),\n splitAmount: z.record(z.string(), splitAmountValueSchema),\n priority: z.record(z.string(), z.number()),\n}\n\n/**\n * Field names accepted by the split payments form.\n *\n * @public\n */\nexport type SplitPaymentsFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the split payments form. `splitAmount` and\n * `priority` are keyed by bank account uuid.\n *\n * @public\n */\nexport type SplitPaymentsFormData = {\n /** Selected split mode — by percentage or by fixed amount. */\n splitBy: SplitByValue\n /** Per-account split values keyed by bank account uuid (percent or dollars depending on `splitBy`). */\n splitAmount: Record<string, number | null>\n /** Per-account priority values keyed by bank account uuid; the highest priority receives the remainder. */\n priority: Record<string, number>\n}\n/**\n * Shape of the validated values produced by the split payments form on submit.\n *\n * @public\n */\nexport type SplitPaymentsFormOutputs = SplitPaymentsFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\n/**\n * Keys of optional split payments fields that can be promoted to required via\n * the hook's `optionalFieldsToRequire` option.\n *\n * @public\n */\nexport type SplitPaymentsFormOptionalFieldsToRequire = OptionalFieldsToRequire<\n typeof requiredFieldsConfig\n>\n\n/** @internal */\ninterface SplitPaymentsFormSchemaOptions {\n optionalFieldsToRequire?: SplitPaymentsFormOptionalFieldsToRequire\n}\n\n/**\n * Resolves the remainder uuid (highest priority value) from a priority map.\n * Exported so the hook can mirror the same selection rule when deriving\n * dynamic field metadata.\n */\nfunction resolveRemainderUuid(priority: Record<string, number>): string {\n return Object.entries(priority).reduce<string>((maxId, [uuid, value]) => {\n if (!maxId) return uuid\n const currentMax = priority[maxId] ?? 0\n return value > currentMax ? uuid : maxId\n }, '')\n}\n\n/** @internal */\nexport function createSplitPaymentsFormSchema(options: SplitPaymentsFormSchemaOptions = {}) {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: SplitPaymentsFormErrorCodes.REQUIRED,\n mode: 'update',\n optionalFieldsToRequire: options.optionalFieldsToRequire,\n superRefine: (data, ctx) => {\n if (data.splitBy === SPLIT_BY.percentage) {\n let anyInvalid = false\n let total = 0\n for (const [uuid, value] of Object.entries(data.splitAmount)) {\n if (value === null) {\n anyInvalid = true\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.REQUIRED,\n })\n continue\n }\n if (!Number.isInteger(value) || value < 0 || value > 100) {\n anyInvalid = true\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.INVALID_PERCENTAGE,\n })\n continue\n }\n total += value\n }\n // Only enforce sum-to-100 when every split is otherwise valid. While\n // any value is missing or out of range, the per-field error is the\n // right thing to surface; an additional sum mismatch would be noise.\n // Emitted at the synthetic form path so the hook can drive a\n // form-level alert via `status.hasPercentageImbalance` without\n // polluting per-field errors.\n if (!anyInvalid && total !== 100) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [PERCENTAGE_TOTAL_PATH],\n message: SplitPaymentsFormErrorCodes.PERCENTAGE_TOTAL_MISMATCH,\n })\n }\n } else {\n const remainderUuid = resolveRemainderUuid(data.priority)\n for (const [uuid, value] of Object.entries(data.splitAmount)) {\n if (value === null) {\n if (uuid === remainderUuid) continue\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.REQUIRED,\n })\n continue\n }\n if (value < 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['splitAmount', uuid],\n message: SplitPaymentsFormErrorCodes.INVALID_AMOUNT,\n })\n }\n }\n const priorities = Object.values(data.priority)\n if (new Set(priorities).size !== priorities.length) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['priority'],\n message: SplitPaymentsFormErrorCodes.DUPLICATE_PRIORITIES,\n })\n }\n }\n },\n })\n}\n"],"names":["SplitPaymentsFormErrorCodes","PERCENTAGE_TOTAL_PATH","SPLIT_BY_VALUES","SPLIT_BY","splitAmountValueSchema","z","v","fieldValidators","requiredFieldsConfig","resolveRemainderUuid","priority","maxId","uuid","value","currentMax","createSplitPaymentsFormSchema","options","buildFormSchema","data","ctx","anyInvalid","total","remainderUuid","priorities"],"mappings":"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"}
@@ -1,7 +1,14 @@
1
1
  import { EventType } from '../../../../../shared/constants';
2
2
  import { OnEventType } from '../../../../Base/useBase';
3
+ /**
4
+ * Props for {@link PaystubsCard}.
5
+ *
6
+ * @public
7
+ */
3
8
  export interface PaystubsCardProps {
9
+ /** The associated employee identifier. */
4
10
  employeeId: string;
11
+ /** Event handler fired when paystub interactions occur. */
5
12
  onEvent: OnEventType<EventType, unknown>;
6
13
  }
7
14
  /**
@@ -12,5 +19,7 @@ export interface PaystubsCardProps {
12
19
  * download success. The card has no edit transitions and no alert API —
13
20
  * paystubs is a read-only surface whose only action is a download side
14
21
  * effect that opens the PDF in a new tab.
22
+ *
23
+ * @public
15
24
  */
16
25
  export declare function PaystubsCard(props: PaystubsCardProps): import("react").JSX.Element;
@@ -4,8 +4,8 @@ import { useTranslation as C } from "react-i18next";
4
4
  import { useErrorBoundary as R } from "react-error-boundary";
5
5
  import { Loading as _ } from "../../../../Common/Loading/Loading.js";
6
6
  import { EmptyData as b } from "../../../../Common/EmptyData/EmptyData.js";
7
- import { BaseBoundaries as O, BaseLayout as D } from "../../../../Base/Base.js";
8
- import { useComponentContext as L } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
7
+ import { useComponentContext as D } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
8
+ import { BaseBoundaries as O, BaseLayout as L } from "../../../../Base/Base.js";
9
9
  import { composeErrorHandler as T } from "../../../../../partner-hook-utils/composeErrorHandler.js";
10
10
  import { usePaymentMethodList as v } from "../../../PaymentMethod/shared/usePaymentMethodList.js";
11
11
  import { formatDateLongWithYear as j } from "../../../../../helpers/dateFormatting.js";
@@ -21,8 +21,8 @@ function mt(i) {
21
21
  }
22
22
  function Q({ employeeId: i, onEvent: c }) {
23
23
  Y("Employee.Management.Paystubs");
24
- const { t: s } = C("Employee.Management.Paystubs"), l = L(), m = F({ employeeId: i }), n = v({ employeeId: i }), d = T([m, n]);
25
- return m.isLoading ? /* @__PURE__ */ r(D, { error: d.errors, children: /* @__PURE__ */ r(l.Box, { header: /* @__PURE__ */ r(l.BoxHeader, { title: s("title") }), children: /* @__PURE__ */ r(_, {}) }) }) : /* @__PURE__ */ r(
24
+ const { t: s } = C("Employee.Management.Paystubs"), l = D(), m = F({ employeeId: i }), n = v({ employeeId: i }), d = T([m, n]);
25
+ return m.isLoading ? /* @__PURE__ */ r(L, { error: d.errors, children: /* @__PURE__ */ r(l.Box, { header: /* @__PURE__ */ r(l.BoxHeader, { title: s("title") }), children: /* @__PURE__ */ r(_, {}) }) }) : /* @__PURE__ */ r(
26
26
  q,
27
27
  {
28
28
  employeeId: i,
@@ -40,7 +40,7 @@ function q({
40
40
  paymentMethodList: l,
41
41
  errorHandling: m
42
42
  }) {
43
- const { t: n } = C("Employee.Management.Paystubs"), d = L(), u = W("currency"), { showBoundary: y } = R(), [M, f] = N(
43
+ const { t: n } = C("Employee.Management.Paystubs"), d = D(), u = W("currency"), { showBoundary: y } = R(), [M, f] = N(
44
44
  () => /* @__PURE__ */ new Set()
45
45
  ), { payStubs: h } = s.data, x = s.pagination.payStubs, S = l.isLoading ? void 0 : l.data.paymentMethod, k = U(
46
46
  async (t) => {
@@ -138,7 +138,7 @@ function q({
138
138
  },
139
139
  emptyState: () => /* @__PURE__ */ r(b, { title: n("emptyState.title"), description: n("emptyState.description") })
140
140
  }), g = h.length > 0;
141
- return /* @__PURE__ */ r(D, { error: m.errors, children: /* @__PURE__ */ r(
141
+ return /* @__PURE__ */ r(L, { error: m.errors, children: /* @__PURE__ */ r(
142
142
  d.Box,
143
143
  {
144
144
  withPadding: !g,
@@ -1 +1 @@
1
- {"version":3,"file":"PaystubsCard.js","sources":["../../../../../../src/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport {\n usePaystubsList,\n type EmployeePayStub,\n type UsePaystubsListReady,\n} from '../../shared/usePaystubsList'\nimport { DataView, EmptyData, useDataView, Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport {\n usePaymentMethodList,\n type UsePaymentMethodListResult,\n} from '@/components/Employee/PaymentMethod/shared'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport DownloadCloudIcon from '@/assets/icons/download-cloud.svg?react'\n\nexport interface PaystubsCardProps {\n employeeId: string\n onEvent: OnEventType<EventType, unknown>\n}\n\n/**\n * Standalone \"Paystubs\" card. Owns its own data fetch via\n * {@link usePaystubsList} and renders the paginated paystubs table with a\n * per-row PDF download action. Emits the management block's scoped events\n * (`EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_*`) on download request and on\n * download success. The card has no edit transitions and no alert API —\n * paystubs is a read-only surface whose only action is a download side\n * effect that opens the PDF in a new tab.\n */\nexport function PaystubsCard(props: PaystubsCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.Paystubs\">\n <PaystubsCardContent {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction PaystubsCardContent({ employeeId, onEvent }: PaystubsCardProps) {\n useI18n('Employee.Management.Paystubs')\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const paystubsList = usePaystubsList({ employeeId })\n const paymentMethodList = usePaymentMethodList({ employeeId })\n\n const errorHandling = composeErrorHandler([paystubsList, paymentMethodList])\n\n if (paystubsList.isLoading) {\n return (\n <BaseLayout error={errorHandling.errors}>\n <Components.Box header={<Components.BoxHeader title={t('title')} />}>\n <Loading />\n </Components.Box>\n </BaseLayout>\n )\n }\n\n return (\n <PaystubsCardReady\n employeeId={employeeId}\n onEvent={onEvent}\n paystubsList={paystubsList}\n paymentMethodList={paymentMethodList}\n errorHandling={errorHandling}\n />\n )\n}\n\ninterface PaystubsCardReadyProps extends PaystubsCardProps {\n paystubsList: UsePaystubsListReady\n paymentMethodList: UsePaymentMethodListResult\n errorHandling: ReturnType<typeof composeErrorHandler>\n}\n\nfunction PaystubsCardReady({\n employeeId,\n onEvent,\n paystubsList,\n paymentMethodList,\n errorHandling,\n}: PaystubsCardReadyProps) {\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n const { showBoundary } = useErrorBoundary()\n\n const [downloadingPayrollUuids, setDownloadingPayrollUuids] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n const { payStubs } = paystubsList.data\n const payStubsPagination = paystubsList.pagination.payStubs\n const paymentMethod = paymentMethodList.isLoading\n ? undefined\n : paymentMethodList.data.paymentMethod\n\n const handleDownload = useCallback(\n async (payrollUuid: string) => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOAD_REQUESTED, {\n employeeId,\n payrollUuid,\n })\n\n // Omit `noopener` — it makes window.open return null in modern browsers,\n // which would leave us unable to navigate the new tab to the blob URL.\n const newWindow = window.open('', '_blank')\n const loadingMessage = t('downloadLoadingMessage')\n if (newWindow) {\n // Avoid the user staring at about:blank while we fetch the PDF. The\n // navigation to the Blob URL below replaces this document.\n const doc = newWindow.document\n doc.title = loadingMessage\n const style = doc.createElement('style')\n style.textContent =\n 'body{font-family:system-ui,-apple-system,sans-serif;display:flex;align-items:center;' +\n 'justify-content:center;height:100vh;margin:0;color:#444;gap:12px}' +\n '.spinner{width:20px;height:20px;border:2px solid #ccc;border-top-color:#444;' +\n 'border-radius:50%;animation:spin .8s linear infinite}' +\n '@keyframes spin{to{transform:rotate(360deg)}}'\n doc.head.appendChild(style)\n const spinner = doc.createElement('div')\n spinner.className = 'spinner'\n spinner.setAttribute('aria-hidden', 'true')\n const label = doc.createElement('span')\n label.textContent = loadingMessage\n doc.body.replaceChildren(spinner, label)\n }\n setDownloadingPayrollUuids(prev => {\n const next = new Set(prev)\n next.add(payrollUuid)\n return next\n })\n try {\n const result = await paystubsList.actions.downloadPayStub(payrollUuid)\n if (!result) {\n if (newWindow) newWindow.close()\n return\n }\n const url = URL.createObjectURL(result.data)\n if (newWindow) {\n // Revoke after the new tab has loaded the blob; revoking synchronously\n // would race the navigation and leave the tab blank.\n newWindow.addEventListener('load', () => {\n URL.revokeObjectURL(url)\n })\n newWindow.location.href = url\n } else {\n URL.revokeObjectURL(url)\n }\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOADED, {\n employeeId,\n payrollUuid,\n })\n } catch (err) {\n if (newWindow) newWindow.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingPayrollUuids(prev => {\n if (!prev.has(payrollUuid)) return prev\n const next = new Set(prev)\n next.delete(payrollUuid)\n return next\n })\n }\n },\n [paystubsList.actions, onEvent, employeeId, t, showBoundary],\n )\n\n const payStubsColumns = [\n {\n key: 'payday',\n title: t('payday'),\n render: (payStub: EmployeePayStub) => formatDateLongWithYear(payStub.checkDate) || '-',\n },\n {\n key: 'checkAmount',\n title: t('checkAmount'),\n render: (payStub: EmployeePayStub) => {\n if (!payStub.netPay) return '-'\n const amount = parseFloat(payStub.netPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'grossPay',\n title: t('grossPay'),\n render: (payStub: EmployeePayStub) => {\n if (!payStub.grossPay) return '-'\n const amount = parseFloat(payStub.grossPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'paymentMethod',\n title: t('paymentMethod'),\n render: () => paymentMethod?.type || t('noPaymentMethod'),\n },\n ]\n\n const payStubsDataView = useDataView({\n data: payStubs,\n columns: payStubsColumns,\n pagination: payStubsPagination,\n itemMenu: payStub => {\n const isDownloading =\n !!payStub.payrollUuid && downloadingPayrollUuids.has(payStub.payrollUuid)\n return (\n <Components.ButtonIcon\n variant=\"tertiary\"\n aria-label={t('downloadCta')}\n isDisabled={!payStub.payrollUuid}\n isLoading={isDownloading}\n onClick={() => {\n if (payStub.payrollUuid) {\n void handleDownload(payStub.payrollUuid)\n }\n }}\n >\n <DownloadCloudIcon aria-hidden />\n </Components.ButtonIcon>\n )\n },\n emptyState: () => (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n ),\n })\n\n const isShowingTable = payStubs.length > 0\n\n return (\n <BaseLayout error={errorHandling.errors}>\n <Components.Box\n withPadding={!isShowingTable}\n header={<Components.BoxHeader title={t('title')} />}\n >\n {isShowingTable ? (\n <DataView label={t('listLabel')} isWithinBox {...payStubsDataView} />\n ) : (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n )}\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["PaystubsCard","props","jsx","BaseBoundaries","PaystubsCardContent","employeeId","onEvent","useI18n","t","useTranslation","Components","useComponentContext","paystubsList","usePaystubsList","paymentMethodList","usePaymentMethodList","errorHandling","composeErrorHandler","BaseLayout","Loading","PaystubsCardReady","formatCurrency","useNumberFormatter","showBoundary","useErrorBoundary","downloadingPayrollUuids","setDownloadingPayrollUuids","useState","payStubs","payStubsPagination","paymentMethod","handleDownload","useCallback","payrollUuid","componentEvents","newWindow","loadingMessage","doc","style","spinner","label","prev","next","result","url","err","payStubsColumns","payStub","formatDateLongWithYear","amount","payStubsDataView","useDataView","isDownloading","DownloadCloudIcon","EmptyData","isShowingTable","DataView"],"mappings":"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"}
1
+ {"version":3,"file":"PaystubsCard.js","sources":["../../../../../../src/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.tsx"],"sourcesContent":["import { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useErrorBoundary } from 'react-error-boundary'\nimport {\n usePaystubsList,\n type EmployeePayStub,\n type UsePaystubsListReady,\n} from '../../shared/usePaystubsList'\nimport { DataView, EmptyData, useDataView, Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport {\n usePaymentMethodList,\n type UsePaymentMethodListResult,\n} from '@/components/Employee/PaymentMethod/shared'\nimport { formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport DownloadCloudIcon from '@/assets/icons/download-cloud.svg?react'\n\n/**\n * Props for {@link PaystubsCard}.\n *\n * @public\n */\nexport interface PaystubsCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when paystub interactions occur. */\n onEvent: OnEventType<EventType, unknown>\n}\n\n/**\n * Standalone \"Paystubs\" card. Owns its own data fetch via\n * {@link usePaystubsList} and renders the paginated paystubs table with a\n * per-row PDF download action. Emits the management block's scoped events\n * (`EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_*`) on download request and on\n * download success. The card has no edit transitions and no alert API —\n * paystubs is a read-only surface whose only action is a download side\n * effect that opens the PDF in a new tab.\n *\n * @public\n */\nexport function PaystubsCard(props: PaystubsCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.Paystubs\">\n <PaystubsCardContent {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction PaystubsCardContent({ employeeId, onEvent }: PaystubsCardProps) {\n useI18n('Employee.Management.Paystubs')\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const paystubsList = usePaystubsList({ employeeId })\n const paymentMethodList = usePaymentMethodList({ employeeId })\n\n const errorHandling = composeErrorHandler([paystubsList, paymentMethodList])\n\n if (paystubsList.isLoading) {\n return (\n <BaseLayout error={errorHandling.errors}>\n <Components.Box header={<Components.BoxHeader title={t('title')} />}>\n <Loading />\n </Components.Box>\n </BaseLayout>\n )\n }\n\n return (\n <PaystubsCardReady\n employeeId={employeeId}\n onEvent={onEvent}\n paystubsList={paystubsList}\n paymentMethodList={paymentMethodList}\n errorHandling={errorHandling}\n />\n )\n}\n\ninterface PaystubsCardReadyProps extends PaystubsCardProps {\n paystubsList: UsePaystubsListReady\n paymentMethodList: UsePaymentMethodListResult\n errorHandling: ReturnType<typeof composeErrorHandler>\n}\n\nfunction PaystubsCardReady({\n employeeId,\n onEvent,\n paystubsList,\n paymentMethodList,\n errorHandling,\n}: PaystubsCardReadyProps) {\n const { t } = useTranslation('Employee.Management.Paystubs')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n const { showBoundary } = useErrorBoundary()\n\n const [downloadingPayrollUuids, setDownloadingPayrollUuids] = useState<ReadonlySet<string>>(\n () => new Set(),\n )\n\n const { payStubs } = paystubsList.data\n const payStubsPagination = paystubsList.pagination.payStubs\n const paymentMethod = paymentMethodList.isLoading\n ? undefined\n : paymentMethodList.data.paymentMethod\n\n const handleDownload = useCallback(\n async (payrollUuid: string) => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOAD_REQUESTED, {\n employeeId,\n payrollUuid,\n })\n\n // Omit `noopener` — it makes window.open return null in modern browsers,\n // which would leave us unable to navigate the new tab to the blob URL.\n const newWindow = window.open('', '_blank')\n const loadingMessage = t('downloadLoadingMessage')\n if (newWindow) {\n // Avoid the user staring at about:blank while we fetch the PDF. The\n // navigation to the Blob URL below replaces this document.\n const doc = newWindow.document\n doc.title = loadingMessage\n const style = doc.createElement('style')\n style.textContent =\n 'body{font-family:system-ui,-apple-system,sans-serif;display:flex;align-items:center;' +\n 'justify-content:center;height:100vh;margin:0;color:#444;gap:12px}' +\n '.spinner{width:20px;height:20px;border:2px solid #ccc;border-top-color:#444;' +\n 'border-radius:50%;animation:spin .8s linear infinite}' +\n '@keyframes spin{to{transform:rotate(360deg)}}'\n doc.head.appendChild(style)\n const spinner = doc.createElement('div')\n spinner.className = 'spinner'\n spinner.setAttribute('aria-hidden', 'true')\n const label = doc.createElement('span')\n label.textContent = loadingMessage\n doc.body.replaceChildren(spinner, label)\n }\n setDownloadingPayrollUuids(prev => {\n const next = new Set(prev)\n next.add(payrollUuid)\n return next\n })\n try {\n const result = await paystubsList.actions.downloadPayStub(payrollUuid)\n if (!result) {\n if (newWindow) newWindow.close()\n return\n }\n const url = URL.createObjectURL(result.data)\n if (newWindow) {\n // Revoke after the new tab has loaded the blob; revoking synchronously\n // would race the navigation and leave the tab blank.\n newWindow.addEventListener('load', () => {\n URL.revokeObjectURL(url)\n })\n newWindow.location.href = url\n } else {\n URL.revokeObjectURL(url)\n }\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_PAYSTUBS_CARD_DOWNLOADED, {\n employeeId,\n payrollUuid,\n })\n } catch (err) {\n if (newWindow) newWindow.close()\n showBoundary(err instanceof Error ? err : new Error(String(err)))\n } finally {\n setDownloadingPayrollUuids(prev => {\n if (!prev.has(payrollUuid)) return prev\n const next = new Set(prev)\n next.delete(payrollUuid)\n return next\n })\n }\n },\n [paystubsList.actions, onEvent, employeeId, t, showBoundary],\n )\n\n const payStubsColumns = [\n {\n key: 'payday',\n title: t('payday'),\n render: (payStub: EmployeePayStub) => formatDateLongWithYear(payStub.checkDate) || '-',\n },\n {\n key: 'checkAmount',\n title: t('checkAmount'),\n render: (payStub: EmployeePayStub) => {\n if (!payStub.netPay) return '-'\n const amount = parseFloat(payStub.netPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'grossPay',\n title: t('grossPay'),\n render: (payStub: EmployeePayStub) => {\n if (!payStub.grossPay) return '-'\n const amount = parseFloat(payStub.grossPay)\n return isNaN(amount) ? '-' : formatCurrency(amount)\n },\n },\n {\n key: 'paymentMethod',\n title: t('paymentMethod'),\n render: () => paymentMethod?.type || t('noPaymentMethod'),\n },\n ]\n\n const payStubsDataView = useDataView({\n data: payStubs,\n columns: payStubsColumns,\n pagination: payStubsPagination,\n itemMenu: payStub => {\n const isDownloading =\n !!payStub.payrollUuid && downloadingPayrollUuids.has(payStub.payrollUuid)\n return (\n <Components.ButtonIcon\n variant=\"tertiary\"\n aria-label={t('downloadCta')}\n isDisabled={!payStub.payrollUuid}\n isLoading={isDownloading}\n onClick={() => {\n if (payStub.payrollUuid) {\n void handleDownload(payStub.payrollUuid)\n }\n }}\n >\n <DownloadCloudIcon aria-hidden />\n </Components.ButtonIcon>\n )\n },\n emptyState: () => (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n ),\n })\n\n const isShowingTable = payStubs.length > 0\n\n return (\n <BaseLayout error={errorHandling.errors}>\n <Components.Box\n withPadding={!isShowingTable}\n header={<Components.BoxHeader title={t('title')} />}\n >\n {isShowingTable ? (\n <DataView label={t('listLabel')} isWithinBox {...payStubsDataView} />\n ) : (\n <EmptyData title={t('emptyState.title')} description={t('emptyState.description')} />\n )}\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["PaystubsCard","props","jsx","BaseBoundaries","PaystubsCardContent","employeeId","onEvent","useI18n","t","useTranslation","Components","useComponentContext","paystubsList","usePaystubsList","paymentMethodList","usePaymentMethodList","errorHandling","composeErrorHandler","BaseLayout","Loading","PaystubsCardReady","formatCurrency","useNumberFormatter","showBoundary","useErrorBoundary","downloadingPayrollUuids","setDownloadingPayrollUuids","useState","payStubs","payStubsPagination","paymentMethod","handleDownload","useCallback","payrollUuid","componentEvents","newWindow","loadingMessage","doc","style","spinner","label","prev","next","result","url","err","payStubsColumns","payStub","formatDateLongWithYear","amount","payStubsDataView","useDataView","isDownloading","DownloadCloudIcon","EmptyData","isShowingTable","DataView"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import "./types/i18next.d.ts"
2
2
  export { usePaystubsList } from './usePaystubsList';
3
- export type { UsePaystubsListParams, UsePaystubsListResult, UsePaystubsListReady, EmployeePayStub, } from './usePaystubsList';
3
+ export type { UsePaystubsListReady, EmployeePayStub } from './usePaystubsList';