@gusto/embedded-react-sdk 0.51.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/dist/components/Base/useBaseSubmit.js +4 -4
  3. package/dist/components/Base/useBaseSubmit.js.map +1 -1
  4. package/dist/components/Common/DocumentList/DocumentList.d.ts +8 -1
  5. package/dist/components/Common/DocumentList/DocumentList.js +24 -21
  6. package/dist/components/Common/DocumentList/DocumentList.js.map +1 -1
  7. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +1 -1
  8. package/dist/components/Common/OnboardingStatusBadge/index.d.ts +2 -2
  9. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  10. package/dist/components/Common/TaxInputs/TaxInputs.d.ts +2 -2
  11. package/dist/components/Common/TaxInputs/TaxInputs.js.map +1 -1
  12. package/dist/components/Common/UI/FormBox/FormBox.d.ts +9 -0
  13. package/dist/components/Common/UI/FormBox/FormBox.js +13 -0
  14. package/dist/components/Common/UI/FormBox/FormBox.js.map +1 -0
  15. package/dist/components/Common/UI/FormBox/FormBox.module.scss.js +14 -0
  16. package/dist/components/Common/UI/FormBox/FormBox.module.scss.js.map +1 -0
  17. package/dist/components/Common/UI/FormBox/FormBoxTypes.d.ts +26 -0
  18. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.d.ts +9 -0
  19. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js +23 -0
  20. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js.map +1 -0
  21. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js +8 -0
  22. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js.map +1 -0
  23. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.d.ts +36 -0
  24. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js +7 -0
  25. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js.map +1 -0
  26. package/dist/components/Common/UI/FormBoxHeader/index.d.ts +1 -0
  27. package/dist/components/Common/UI/Input/InputTypes.d.ts +1 -0
  28. package/dist/components/Common/UI/Input/InputTypes.js.map +1 -1
  29. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +5 -5
  30. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  31. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.d.ts +1 -2
  32. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.d.ts +1 -1
  33. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +9 -8
  34. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  35. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +3 -3
  36. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  37. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.d.ts +1 -1
  38. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.d.ts +1 -1
  39. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +9 -8
  40. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  41. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +11 -10
  42. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  43. package/dist/components/Company/BankAccount/BankAccount.js +1 -1
  44. package/dist/components/Company/BankAccount/BankAccount.js.map +1 -1
  45. package/dist/components/Company/BankAccount/BankAccountComponents.d.ts +1 -1
  46. package/dist/components/Company/BankAccount/BankAccountComponents.js.map +1 -1
  47. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +1 -1
  48. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js.map +1 -1
  49. package/dist/components/Company/BankAccount/BankAccountForm/Form.d.ts +1 -1
  50. package/dist/components/Company/BankAccount/BankAccountForm/context.js +9 -8
  51. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  52. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +1 -1
  53. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js.map +1 -1
  54. package/dist/components/Company/BankAccount/BankAccountList/context.d.ts +1 -1
  55. package/dist/components/Company/BankAccount/BankAccountList/context.js.map +1 -1
  56. package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js +1 -1
  57. package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js.map +1 -1
  58. package/dist/components/Company/BankAccount/BankAccountVerify/Form.d.ts +1 -1
  59. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +2 -2
  60. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  61. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.d.ts +2 -2
  62. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +9 -8
  63. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  64. package/dist/components/Company/DocumentSigner/DocumentSigner.js +1 -1
  65. package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
  66. package/dist/components/Company/DocumentSigner/documentSignerStateMachine.d.ts +2 -2
  67. package/dist/components/Company/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  68. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.d.ts +1 -1
  69. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.d.ts +1 -1
  70. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js +3 -3
  71. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/useSignCompanyForm.js.map +1 -1
  72. package/dist/components/Company/FederalTaxes/FederalTaxes.js +2 -2
  73. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  74. package/dist/components/Company/FederalTaxes/Form.js +1 -1
  75. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  76. package/dist/components/Company/FederalTaxes/useFederalTaxes.d.ts +2 -2
  77. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +12 -11
  78. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  79. package/dist/components/Company/Industry/Context.js +12 -11
  80. package/dist/components/Company/Industry/Context.js.map +1 -1
  81. package/dist/components/Company/Industry/Industry.js +2 -2
  82. package/dist/components/Company/Industry/Industry.js.map +1 -1
  83. package/dist/components/Company/Locations/LocationForm/Actions.js +7 -7
  84. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  85. package/dist/components/Company/Locations/LocationForm/Form.d.ts +1 -1
  86. package/dist/components/Company/Locations/LocationForm/LocationForm.js +46 -45
  87. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  88. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +9 -8
  89. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  90. package/dist/components/Company/Locations/LocationsList/LocationsList.js +1 -1
  91. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  92. package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -1
  93. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +9 -8
  94. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  95. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +1 -1
  96. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  97. package/dist/components/Company/OnboardingOverview/context.d.ts +1 -1
  98. package/dist/components/Company/OnboardingOverview/context.js +9 -8
  99. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  100. package/dist/components/Company/PaySchedule/PaySchedule.js +1 -1
  101. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  102. package/dist/components/Company/PaySchedule/PayScheduleList.js +1 -1
  103. package/dist/components/Company/PaySchedule/PayScheduleList.js.map +1 -1
  104. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +3 -3
  105. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +3 -3
  106. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +6 -6
  107. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  108. package/dist/components/Company/StateTaxes/StateTaxes.d.ts +10 -1
  109. package/dist/components/Company/StateTaxes/StateTaxes.js +23 -17
  110. package/dist/components/Company/StateTaxes/StateTaxes.js.map +1 -1
  111. package/dist/components/Company/StateTaxes/StateTaxesComponents.d.ts +2 -0
  112. package/dist/components/Company/StateTaxes/StateTaxesComponents.js +17 -10
  113. package/dist/components/Company/StateTaxes/StateTaxesComponents.js.map +1 -1
  114. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +3 -3
  115. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  116. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +2 -2
  117. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  118. package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.d.ts +1 -1
  119. package/dist/components/Company/StateTaxes/StateTaxesForm/applicableIf.js.map +1 -1
  120. package/dist/components/Company/StateTaxes/StateTaxesForm/context.d.ts +1 -1
  121. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +9 -8
  122. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  123. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +27 -27
  124. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  125. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +9 -0
  126. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +24 -24
  127. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
  128. package/dist/components/Company/StateTaxes/StateTaxesList/context.d.ts +1 -1
  129. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +9 -8
  130. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  131. package/dist/components/Contractor/Address/Address.d.ts +4 -3
  132. package/dist/components/Contractor/Address/Address.js.map +1 -1
  133. package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.d.ts +2 -2
  134. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +3 -3
  135. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +3 -3
  136. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
  137. package/dist/components/Contractor/ContractorList/index.js +95 -92
  138. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  139. package/dist/components/Contractor/ContractorList/useContractorList.d.ts +1 -1
  140. package/dist/components/Contractor/ContractorList/useContractorList.js +1 -1
  141. package/dist/components/Contractor/ContractorList/useContractorList.js.map +1 -1
  142. package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
  143. package/dist/components/Contractor/Documents/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  144. package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.d.ts +3 -1
  145. package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js +64 -51
  146. package/dist/components/Contractor/Documents/DocumentsList/DocumentsList.js.map +1 -1
  147. package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.d.ts +1 -1
  148. package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js +1 -1
  149. package/dist/components/Contractor/Documents/DocumentsList/useContractorDocumentsList/useContractorDocumentsList.js.map +1 -1
  150. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +202 -159
  151. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
  152. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/contractorSignatureFormSchema.d.ts +1 -1
  153. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +3 -3
  154. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js +3 -3
  155. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.js.map +1 -1
  156. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +2 -2
  157. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js +55 -54
  158. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.js.map +1 -1
  159. package/dist/components/Contractor/Landing/Landing.js +2 -2
  160. package/dist/components/Contractor/Landing/Landing.js.map +1 -1
  161. package/dist/components/Contractor/NewHireReport/NewHireReport.js +2 -2
  162. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  163. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.d.ts +1 -1
  164. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js +2 -2
  165. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountForm.js.map +1 -1
  166. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.d.ts +1 -1
  167. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.d.ts +1 -1
  168. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js.map +1 -1
  169. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +3 -3
  170. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js +2 -2
  171. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.js.map +1 -1
  172. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +5 -5
  173. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  174. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +2 -2
  175. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
  176. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.d.ts +2 -2
  177. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
  178. package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.d.ts +1 -1
  179. package/dist/components/Contractor/Payments/CreatePayment/GenericBlocker.js.map +1 -1
  180. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +4 -4
  181. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
  182. package/dist/components/Contractor/Payments/CreatePayment/helpers.d.ts +1 -1
  183. package/dist/components/Contractor/Payments/CreatePayment/helpers.js.map +1 -1
  184. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js +2 -2
  185. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js.map +1 -1
  186. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
  187. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +3 -3
  188. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  189. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +2 -2
  190. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
  191. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +4 -4
  192. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  193. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -3
  194. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  195. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.d.ts +17 -5
  196. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +32 -31
  197. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  198. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.d.ts +3 -3
  199. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.js.map +1 -1
  200. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.d.ts +16 -4
  201. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +34 -30
  202. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  203. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +1 -1
  204. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +1 -1
  205. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  206. package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js +1 -1
  207. package/dist/components/Contractor/Profile/SelfOnboardingContractorProfile.js.map +1 -1
  208. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -1
  209. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +6 -6
  210. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
  211. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +2 -2
  212. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +3 -3
  213. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  214. package/dist/components/Contractor/Submit/Submit.js +3 -3
  215. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  216. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +1 -1
  217. package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
  218. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +1 -1
  219. package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
  220. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js +1 -1
  221. package/dist/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.js.map +1 -1
  222. package/dist/components/Employee/Compensation/management/ManagementCompensationFormBody.js.map +1 -1
  223. package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +2 -6
  224. package/dist/components/Employee/Compensation/onboarding/Compensation.js +38 -42
  225. package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
  226. package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.d.ts +2 -2
  227. package/dist/components/Employee/Compensation/onboarding/CompensationFlowComponents.js.map +1 -1
  228. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js +2 -2
  229. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsList.js.map +1 -1
  230. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.d.ts +1 -1
  231. package/dist/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.js.map +1 -1
  232. package/dist/components/Employee/Compensation/shared/AddCompensationFormBody.js.map +1 -1
  233. package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.d.ts +1 -1
  234. package/dist/components/Employee/Compensation/shared/derivePrimaryFlsaStatus.js.map +1 -1
  235. package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.d.ts +2 -2
  236. package/dist/components/Employee/Compensation/shared/getPendingCompensationChanges.js.map +1 -1
  237. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +2 -2
  238. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +3 -3
  239. package/dist/components/Employee/Compensation/shared/useCompensationForm/fields.js.map +1 -1
  240. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.d.ts +4 -4
  241. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +7 -7
  242. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  243. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.d.ts +1 -1
  244. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +4 -4
  245. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  246. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +1 -1
  247. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.d.ts +3 -3
  248. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +7 -7
  249. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  250. package/dist/components/Employee/Dashboard/Dashboard.js +1 -1
  251. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  252. package/dist/components/Employee/Dashboard/dashboardStateMachine.js.map +1 -1
  253. package/dist/components/Employee/Dashboard/index.d.ts +1 -1
  254. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js.map +1 -1
  255. package/dist/components/Employee/Deductions/management/deductionsStateMachine.js.map +1 -1
  256. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.d.ts +1 -1
  257. package/dist/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.js.map +1 -1
  258. package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.d.ts +1 -1
  259. package/dist/components/Employee/Deductions/onboarding/deductionsContextualComponents.js.map +1 -1
  260. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.d.ts +1 -1
  261. package/dist/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.js.map +1 -1
  262. package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.d.ts +1 -1
  263. package/dist/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.js.map +1 -1
  264. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.d.ts +1 -1
  265. package/dist/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.js.map +1 -1
  266. package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.d.ts +1 -1
  267. package/dist/components/Employee/Deductions/shared/DeleteDeductionDialog.js.map +1 -1
  268. package/dist/components/Employee/Deductions/shared/formatDeductionAmount.d.ts +1 -1
  269. package/dist/components/Employee/Deductions/shared/formatDeductionAmount.js.map +1 -1
  270. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +2 -2
  271. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js +1 -1
  272. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.js.map +1 -1
  273. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.d.ts +1 -1
  274. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.js.map +1 -1
  275. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +3 -3
  276. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js +5 -5
  277. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.js.map +1 -1
  278. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +2 -2
  279. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js +1 -1
  280. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.js.map +1 -1
  281. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.d.ts +1 -1
  282. package/dist/components/Employee/Deductions/shared/useDeductionForm/fields.js.map +1 -1
  283. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.d.ts +1 -1
  284. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js +3 -3
  285. package/dist/components/Employee/Deductions/shared/useDeductionForm/useDeductionForm.js.map +1 -1
  286. package/dist/components/Employee/Deductions/shared/useDeductionsList.d.ts +1 -1
  287. package/dist/components/Employee/Deductions/shared/useDeductionsList.js +2 -2
  288. package/dist/components/Employee/Deductions/shared/useDeductionsList.js.map +1 -1
  289. package/dist/components/Employee/Deductions/shared/useDeleteDeduction.d.ts +1 -1
  290. package/dist/components/Employee/Deductions/shared/useDeleteDeduction.js.map +1 -1
  291. package/dist/components/Employee/Documents/management/DocumentManager.js +2 -2
  292. package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
  293. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js.map +1 -1
  294. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +1 -1
  295. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  296. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.d.ts +1 -1
  297. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +9 -8
  298. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  299. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +2 -2
  300. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  301. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +3 -3
  302. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
  303. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +1 -1
  304. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
  305. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.d.ts +2 -2
  306. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js +1 -1
  307. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.js.map +1 -1
  308. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js +1 -1
  309. package/dist/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
  310. package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +1 -1
  311. package/dist/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.js.map +1 -1
  312. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +3 -6
  313. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  314. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.d.ts +1 -1
  315. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js +1 -1
  316. package/dist/components/Employee/Documents/shared/useDocumentsList/useDocumentsList.js.map +1 -1
  317. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +2 -2
  318. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js +27 -32
  319. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
  320. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.d.ts +1 -1
  321. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js +3 -3
  322. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/useSignEmployeeForm.js.map +1 -1
  323. package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
  324. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +1 -1
  325. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
  326. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +3 -3
  327. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +4 -5
  328. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  329. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +2 -2
  330. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js +1 -1
  331. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.js.map +1 -1
  332. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +2 -2
  333. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js +2 -2
  334. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.js.map +1 -1
  335. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.d.ts +1 -1
  336. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js +1 -1
  337. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesSummary/useFederalTaxesSummary.js.map +1 -1
  338. package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
  339. package/dist/components/Employee/HomeAddress/management/HomeAddressView.d.ts +1 -1
  340. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
  341. package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.d.ts +1 -1
  342. package/dist/components/Employee/HomeAddress/management/getPendingFutureHomeAddress.js.map +1 -1
  343. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.d.ts +1 -1
  344. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +3 -3
  345. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  346. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.d.ts +1 -1
  347. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js +1 -1
  348. package/dist/components/Employee/HomeAddress/shared/useHomeAddressSummary/useHomeAddressSummary.js.map +1 -1
  349. package/dist/components/Employee/Landing/Landing.js +2 -2
  350. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  351. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.d.ts +1 -1
  352. package/dist/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.js.map +1 -1
  353. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +1 -1
  354. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js +1 -3
  355. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js.map +1 -1
  356. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +55 -49
  357. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  358. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +1 -1
  359. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  360. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.d.ts +1 -1
  361. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js.map +1 -1
  362. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.d.ts +1 -1
  363. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js +1 -1
  364. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankForm.js.map +1 -1
  365. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +1 -1
  366. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.d.ts +1 -1
  367. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js +2 -2
  368. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodForm/usePaymentMethodForm.js.map +1 -1
  369. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.d.ts +2 -2
  370. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js +4 -4
  371. package/dist/components/Employee/PaymentMethod/shared/usePaymentMethodList.js.map +1 -1
  372. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.d.ts +2 -2
  373. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js +3 -3
  374. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsForm.js.map +1 -1
  375. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.d.ts +1 -1
  376. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.d.ts +1 -1
  377. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js +3 -3
  378. package/dist/components/Employee/Paystubs/shared/usePaystubsList/usePaystubsList.js.map +1 -1
  379. package/dist/components/Employee/Profile/onboarding/AdminProfile.js.map +1 -1
  380. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
  381. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js.map +1 -1
  382. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +2 -2
  383. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +1 -1
  384. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +5 -5
  385. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  386. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.d.ts +1 -1
  387. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
  388. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  389. package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +1 -1
  390. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js +1 -1
  391. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useCurrentHomeAddressForm.js.map +1 -1
  392. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +2 -2
  393. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js +4 -4
  394. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.js.map +1 -1
  395. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.d.ts +1 -1
  396. package/dist/components/Employee/Profile/shared/useWorkAddressForm/fields.js.map +1 -1
  397. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js +1 -1
  398. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useCurrentWorkAddressForm.js.map +1 -1
  399. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.d.ts +2 -2
  400. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js +5 -5
  401. package/dist/components/Employee/Profile/shared/useWorkAddressForm/useWorkAddressForm.js.map +1 -1
  402. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +1 -1
  403. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  404. package/dist/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.js.map +1 -1
  405. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/stateTaxesFixtures.d.ts +1 -1
  406. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/__fixtures__/toWireFormat.d.ts +1 -1
  407. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.d.ts +1 -1
  408. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.js.map +1 -1
  409. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.d.ts +1 -1
  410. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.js.map +1 -1
  411. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.d.ts +1 -1
  412. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.js.map +1 -1
  413. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.d.ts +1 -1
  414. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js +2 -2
  415. package/dist/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.js.map +1 -1
  416. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.d.ts +1 -1
  417. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js +1 -1
  418. package/dist/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.js.map +1 -1
  419. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +9 -9
  420. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  421. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +1 -1
  422. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
  423. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +4 -4
  424. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  425. package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
  426. package/dist/components/Employee/WorkAddress/management/WorkAddressView.d.ts +1 -1
  427. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
  428. package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.d.ts +2 -2
  429. package/dist/components/Employee/WorkAddress/management/getPendingFutureWorkAddress.js.map +1 -1
  430. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.d.ts +1 -1
  431. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +3 -3
  432. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  433. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.d.ts +1 -1
  434. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js +1 -1
  435. package/dist/components/Employee/WorkAddress/shared/useEmployeeWorkAddressSummary/useEmployeeWorkAddressSummary.js.map +1 -1
  436. package/dist/components/Employee/exports/employeeManagement.d.ts +1 -1
  437. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.d.ts +4 -5
  438. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +101 -125
  439. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
  440. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +2 -2
  441. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
  442. package/dist/components/InformationRequests/InformationRequestsComponents.d.ts +0 -5
  443. package/dist/components/InformationRequests/InformationRequestsComponents.js +12 -13
  444. package/dist/components/InformationRequests/InformationRequestsComponents.js.map +1 -1
  445. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +1 -1
  446. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
  447. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -2
  448. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
  449. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +3 -3
  450. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
  451. package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js +2 -2
  452. package/dist/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.js.map +1 -1
  453. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +5 -5
  454. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
  455. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +4 -4
  456. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
  457. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +8 -7
  458. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  459. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +1 -1
  460. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +9 -9
  461. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  462. package/dist/components/Payroll/OffCycle/index.d.ts +1 -1
  463. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +4 -4
  464. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  465. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +1 -1
  466. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  467. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +2 -2
  468. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js +1 -1
  469. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
  470. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +4 -4
  471. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  472. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +2 -2
  473. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
  474. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +100 -95
  475. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  476. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +5 -6
  477. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  478. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +5 -5
  479. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +6 -6
  480. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  481. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +57 -56
  482. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  483. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +4 -4
  484. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +1 -1
  485. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  486. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +2 -2
  487. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  488. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +24 -7
  489. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js +37 -33
  490. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  491. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +2 -2
  492. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  493. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +7 -7
  494. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
  495. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +1 -1
  496. package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
  497. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +2 -2
  498. package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +1 -1
  499. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  500. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +4 -4
  501. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  502. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +2 -2
  503. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  504. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +2 -2
  505. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  506. package/dist/components/Payroll/PayrollList/PayrollList.js +8 -8
  507. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  508. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -3
  509. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +1 -1
  510. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  511. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +7 -7
  512. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  513. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +4 -4
  514. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +31 -31
  515. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  516. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.d.ts +2 -2
  517. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
  518. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.d.ts +1 -1
  519. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.js.map +1 -1
  520. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +1 -1
  521. package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
  522. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +1 -1
  523. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  524. package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.d.ts +1 -1
  525. package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js +2 -2
  526. package/dist/components/Payroll/PayrollStatusBadges/payrollStatusConfig.js.map +1 -1
  527. package/dist/components/Payroll/RecoveryCases/RecoveryCases.d.ts +9 -5
  528. package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
  529. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +1 -1
  530. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
  531. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +2 -2
  532. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
  533. package/dist/components/Payroll/Transition/TransitionFlowComponents.d.ts +1 -1
  534. package/dist/components/Payroll/Transition/TransitionFlowComponents.js +2 -2
  535. package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -1
  536. package/dist/components/Payroll/Transition/index.d.ts +1 -1
  537. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +4 -4
  538. package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
  539. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +3 -3
  540. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  541. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +1 -1
  542. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  543. package/dist/components/Payroll/helpers.d.ts +26 -12
  544. package/dist/components/Payroll/helpers.js +1 -1
  545. package/dist/components/Payroll/helpers.js.map +1 -1
  546. package/dist/components/Payroll/index.d.ts +3 -2
  547. package/dist/components/Payroll/payrollTypes.d.ts +1 -1
  548. package/dist/components/Payroll/payrollTypes.js +1 -1
  549. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  550. package/dist/components/Payroll/usePreparedPayrollData.d.ts +2 -2
  551. package/dist/components/Payroll/usePreparedPayrollData.js +16 -15
  552. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  553. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.d.ts +1 -1
  554. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +3 -3
  555. package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
  556. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +3 -3
  557. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
  558. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +3 -3
  559. package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
  560. package/dist/components/TimeOff/PolicyList/PolicyList.js +6 -6
  561. package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
  562. package/dist/components/TimeOff/PolicySettings/PolicySettings.js +30 -29
  563. package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
  564. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +1 -1
  565. package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
  566. package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.d.ts +2 -2
  567. package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.js.map +1 -1
  568. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +27 -26
  569. package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
  570. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +2 -2
  571. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
  572. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +1 -1
  573. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +69 -68
  574. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
  575. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +20 -20
  576. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
  577. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +67 -66
  578. package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
  579. package/dist/contexts/ApiProvider/ApiProvider.d.ts +5 -5
  580. package/dist/contexts/ApiProvider/ApiProvider.js +3 -3
  581. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  582. package/dist/contexts/ApiProvider/apiVersion.d.ts +23 -0
  583. package/dist/contexts/ApiProvider/apiVersion.js +6 -0
  584. package/dist/contexts/ApiProvider/apiVersion.js.map +1 -0
  585. package/dist/contexts/ApiProvider/apiVersionHook.js +3 -2
  586. package/dist/contexts/ApiProvider/apiVersionHook.js.map +1 -1
  587. package/dist/contexts/ApiProvider/createSdkQueryClient.d.ts +1 -1
  588. package/dist/contexts/ApiProvider/createSdkQueryClient.js +7 -6
  589. package/dist/contexts/ApiProvider/createSdkQueryClient.js.map +1 -1
  590. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +40 -36
  591. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
  592. package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +2 -0
  593. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
  594. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +18 -16
  595. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
  596. package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +6 -0
  597. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  598. package/dist/contexts/GustoProvider/GustoProvider.d.ts +4 -5
  599. package/dist/contexts/GustoProvider/GustoProvider.js +6 -6
  600. package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
  601. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +7 -7
  602. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +8 -8
  603. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  604. package/dist/contexts/GustoProvider/index.d.ts +1 -1
  605. package/dist/contexts/index.d.ts +2 -6
  606. package/dist/helpers/apiErrorToList.d.ts +1 -1
  607. package/dist/helpers/apiErrorToList.js.map +1 -1
  608. package/dist/helpers/formattedStrings.d.ts +2 -2
  609. package/dist/helpers/formattedStrings.js.map +1 -1
  610. package/dist/hooks/useCompanyPaymentSpeed.d.ts +1 -1
  611. package/dist/hooks/useCompanyPaymentSpeed.js +1 -1
  612. package/dist/hooks/useCompanyPaymentSpeed.js.map +1 -1
  613. package/dist/i18n/en/Contractor.ContractorList.json.js +18 -16
  614. package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
  615. package/dist/i18n/en/Contractor.DocumentsList.json.js +20 -16
  616. package/dist/i18n/en/Contractor.DocumentsList.json.js.map +1 -1
  617. package/dist/i18n/en/Contractor.SignatureForm.json.js +5 -5
  618. package/dist/i18n/en/Employee.OnboardingSummary.json.js +24 -20
  619. package/dist/i18n/en/Employee.OnboardingSummary.json.js.map +1 -1
  620. package/dist/i18n/types.d.ts +12 -0
  621. package/dist/index.d.ts +8 -7
  622. package/dist/index.js +121 -134
  623. package/dist/index.js.map +1 -1
  624. package/dist/models/WA_RISK_CODES.d.ts +5 -2
  625. package/dist/models/WA_RISK_CODES.js.map +1 -1
  626. package/dist/models/external.d.ts +236 -226
  627. package/dist/partner-hook-utils/composeErrorHandler.d.ts +9 -4
  628. package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
  629. package/dist/partner-hook-utils/form/SDKFormProvider.d.ts +10 -2
  630. package/dist/partner-hook-utils/form/SDKFormProvider.js +7 -1
  631. package/dist/partner-hook-utils/form/SDKFormProvider.js.map +1 -1
  632. package/dist/partner-hook-utils/form/composeSubmitHandler.d.ts +7 -4
  633. package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
  634. package/dist/partner-hook-utils/form/fields/index.d.ts +1 -0
  635. package/dist/partner-hook-utils/form/index.d.ts +3 -3
  636. package/dist/partner-hook-utils/form/useHookFieldResolution.js.map +1 -1
  637. package/dist/partner-hook-utils/index.d.ts +1 -1
  638. package/dist/partner-hook-utils/types.d.ts +7 -3
  639. package/dist/shared/constants.d.ts +2 -2
  640. package/dist/shared/constants.js +5 -5
  641. package/dist/shared/constants.js.map +1 -1
  642. package/dist/style.css +1 -1
  643. package/dist/types/Helpers.d.ts +11 -0
  644. package/dist/types/hooks.d.ts +2 -2
  645. package/dist/types/sdkError.js +3 -3
  646. package/dist/types/sdkError.js.map +1 -1
  647. package/docs/guides/endpoint-inventory.json +1201 -297
  648. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"StateTaxesCard.js","sources":["../../../../../../src/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeStateTaxQuestion } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxquestion'\nimport { useStateTaxesSummary } from '../../shared/useStateTaxesSummary'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\n\n/**\n * Props for {@link StateTaxesCard}.\n *\n * @public\n */\nexport interface StateTaxesCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the Edit button is clicked. */\n onEvent: OnEventType<EventType, unknown>\n}\n\n/**\n * Standalone read-only summary card showing an employee's per-state tax\n * withholding answers. Fetches its own data and surfaces an Edit button\n * that emits an event for the orchestrator to swap in the edit form.\n *\n * @remarks\n * The Edit button is hidden when no state on record has any tax-withholding\n * questions (e.g. states with no income tax), since there is nothing to edit.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/stateTaxes/editRequested` | Edit button was clicked | `{ employeeId: string }` |\n *\n * @param props - The component props.\n * @public\n */\nexport function StateTaxesCard(props: StateTaxesCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.StateTaxes\">\n <StateTaxesCardContent {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction StateTaxesCardContent({ employeeId, onEvent }: StateTaxesCardProps) {\n useI18n('Employee.Management.StateTaxes')\n const { t } = useTranslation('Employee.Management.StateTaxes')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n\n const summary = useStateTaxesSummary({ employeeId })\n const isLoading = summary.isLoading\n const stateTaxes = summary.isLoading ? [] : summary.data.employeeStateTaxesList\n\n const stateTaxesHaveAnyQuestions = stateTaxes.some(s => (s.questions?.length ?? 0) > 0)\n\n const formatStateTaxAnswer = (\n question: EmployeeStateTaxQuestion,\n answer: string | number | boolean,\n ) => {\n if (\n question.inputQuestionFormat.type === 'Select' &&\n question.inputQuestionFormat.options &&\n question.inputQuestionFormat.options.length > 0\n ) {\n const option = question.inputQuestionFormat.options.find(opt => opt.value === answer)\n if (option?.label) {\n return option.label\n }\n }\n\n if (typeof answer === 'number') {\n if (question.inputQuestionFormat.type === 'Currency') {\n return formatCurrency(answer)\n }\n return answer\n }\n\n if (typeof answer === 'string' && !isNaN(parseFloat(answer))) {\n const numValue = parseFloat(answer)\n if (question.inputQuestionFormat.type === 'Currency') {\n return formatCurrency(numValue)\n }\n return answer\n }\n\n if (typeof answer === 'boolean') {\n return answer ? t('card.yes') : t('card.no')\n }\n\n return answer\n }\n\n const emptyPlaceholder = <span aria-label={t('card.listEmptyPlaceholder')}>–</span>\n\n const handleEdit = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_STATE_TAXES_EDIT_REQUESTED, { employeeId })\n }\n\n return (\n <BaseLayout error={summary.errorHandling.errors}>\n <Components.Box\n header={\n <Components.BoxHeader\n title={t('card.title')}\n action={\n isLoading || stateTaxesHaveAnyQuestions ? (\n <Components.Button variant=\"secondary\" onClick={handleEdit} isDisabled={isLoading}>\n {t('card.editCta')}\n </Components.Button>\n ) : undefined\n }\n />\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {isLoading ? (\n <Loading />\n ) : stateTaxes.length > 0 ? (\n <Flex flexDirection=\"column\" gap={24}>\n {stateTaxes.map((stateTax, index) => {\n const stateName = stateTax.state\n ? tCommon(`statesHash.${stateTax.state}`, stateTax.state)\n : ''\n const hasQuestions = (stateTax.questions?.length ?? 0) > 0\n return (\n <Flex key={stateTax.state ?? index} flexDirection=\"column\" gap={16}>\n {stateName ? (\n <Components.Heading as=\"h4\">{stateName}</Components.Heading>\n ) : null}\n\n {hasQuestions ? (\n <Components.DescriptionList\n items={stateTax.questions!.map(question => {\n const answer = question.answers[0]?.value\n return {\n term: question.label,\n description:\n answer === null || answer === undefined\n ? emptyPlaceholder\n : formatStateTaxAnswer(question, answer),\n }\n })}\n />\n ) : (\n <Components.Text variant=\"supporting\">\n {t('card.noWithholdingForState')}\n </Components.Text>\n )}\n </Flex>\n )\n })}\n </Flex>\n ) : (\n <Components.Text>{t('card.noStateTaxes')}</Components.Text>\n )}\n </Flex>\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["StateTaxesCard","props","jsx","BaseBoundaries","StateTaxesCardContent","employeeId","onEvent","useI18n","t","useTranslation","tCommon","Components","useComponentContext","formatCurrency","useNumberFormatter","summary","useStateTaxesSummary","isLoading","stateTaxes","stateTaxesHaveAnyQuestions","s","formatStateTaxAnswer","question","answer","option","opt","numValue","emptyPlaceholder","handleEdit","componentEvents","BaseLayout","Flex","Loading","stateTax","index","stateName","hasQuestions","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"StateTaxesCard.js","sources":["../../../../../../src/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeStateTaxQuestion } from '@gusto/embedded-api/models/components/employeestatetaxquestion'\nimport { useStateTaxesSummary } from '../../shared/useStateTaxesSummary'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Loading } from '@/components/Common'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport { useI18n } from '@/i18n'\nimport { componentEvents, type EventType } from '@/shared/constants'\nimport type { OnEventType } from '@/components/Base/useBase'\n\n/**\n * Props for {@link StateTaxesCard}.\n *\n * @public\n */\nexport interface StateTaxesCardProps {\n /** The associated employee identifier. */\n employeeId: string\n /** Event handler fired when the Edit button is clicked. */\n onEvent: OnEventType<EventType, unknown>\n}\n\n/**\n * Standalone read-only summary card showing an employee's per-state tax\n * withholding answers. Fetches its own data and surfaces an Edit button\n * that emits an event for the orchestrator to swap in the edit form.\n *\n * @remarks\n * The Edit button is hidden when no state on record has any tax-withholding\n * questions (e.g. states with no income tax), since there is nothing to edit.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/management/stateTaxes/editRequested` | Edit button was clicked | `{ employeeId: string }` |\n *\n * @param props - The component props.\n * @public\n */\nexport function StateTaxesCard(props: StateTaxesCardProps) {\n return (\n <BaseBoundaries componentName=\"Employee.Management.StateTaxes\">\n <StateTaxesCardContent {...props} />\n </BaseBoundaries>\n )\n}\n\nfunction StateTaxesCardContent({ employeeId, onEvent }: StateTaxesCardProps) {\n useI18n('Employee.Management.StateTaxes')\n const { t } = useTranslation('Employee.Management.StateTaxes')\n const { t: tCommon } = useTranslation('common')\n const Components = useComponentContext()\n const formatCurrency = useNumberFormatter('currency')\n\n const summary = useStateTaxesSummary({ employeeId })\n const isLoading = summary.isLoading\n const stateTaxes = summary.isLoading ? [] : summary.data.employeeStateTaxesList\n\n const stateTaxesHaveAnyQuestions = stateTaxes.some(s => (s.questions?.length ?? 0) > 0)\n\n const formatStateTaxAnswer = (\n question: EmployeeStateTaxQuestion,\n answer: string | number | boolean,\n ) => {\n if (\n question.inputQuestionFormat.type === 'Select' &&\n question.inputQuestionFormat.options &&\n question.inputQuestionFormat.options.length > 0\n ) {\n const option = question.inputQuestionFormat.options.find(opt => opt.value === answer)\n if (option?.label) {\n return option.label\n }\n }\n\n if (typeof answer === 'number') {\n if (question.inputQuestionFormat.type === 'Currency') {\n return formatCurrency(answer)\n }\n return answer\n }\n\n if (typeof answer === 'string' && !isNaN(parseFloat(answer))) {\n const numValue = parseFloat(answer)\n if (question.inputQuestionFormat.type === 'Currency') {\n return formatCurrency(numValue)\n }\n return answer\n }\n\n if (typeof answer === 'boolean') {\n return answer ? t('card.yes') : t('card.no')\n }\n\n return answer\n }\n\n const emptyPlaceholder = <span aria-label={t('card.listEmptyPlaceholder')}>–</span>\n\n const handleEdit = () => {\n onEvent(componentEvents.EMPLOYEE_MANAGEMENT_STATE_TAXES_EDIT_REQUESTED, { employeeId })\n }\n\n return (\n <BaseLayout error={summary.errorHandling.errors}>\n <Components.Box\n header={\n <Components.BoxHeader\n title={t('card.title')}\n action={\n isLoading || stateTaxesHaveAnyQuestions ? (\n <Components.Button variant=\"secondary\" onClick={handleEdit} isDisabled={isLoading}>\n {t('card.editCta')}\n </Components.Button>\n ) : undefined\n }\n />\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {isLoading ? (\n <Loading />\n ) : stateTaxes.length > 0 ? (\n <Flex flexDirection=\"column\" gap={24}>\n {stateTaxes.map((stateTax, index) => {\n const stateName = stateTax.state\n ? tCommon(`statesHash.${stateTax.state}`, stateTax.state)\n : ''\n const hasQuestions = (stateTax.questions?.length ?? 0) > 0\n return (\n <Flex key={stateTax.state ?? index} flexDirection=\"column\" gap={16}>\n {stateName ? (\n <Components.Heading as=\"h4\">{stateName}</Components.Heading>\n ) : null}\n\n {hasQuestions ? (\n <Components.DescriptionList\n items={stateTax.questions!.map(question => {\n const answer = question.answers[0]?.value\n return {\n term: question.label,\n description:\n answer === null || answer === undefined\n ? emptyPlaceholder\n : formatStateTaxAnswer(question, answer),\n }\n })}\n />\n ) : (\n <Components.Text variant=\"supporting\">\n {t('card.noWithholdingForState')}\n </Components.Text>\n )}\n </Flex>\n )\n })}\n </Flex>\n ) : (\n <Components.Text>{t('card.noStateTaxes')}</Components.Text>\n )}\n </Flex>\n </Components.Box>\n </BaseLayout>\n )\n}\n"],"names":["StateTaxesCard","props","jsx","BaseBoundaries","StateTaxesCardContent","employeeId","onEvent","useI18n","t","useTranslation","tCommon","Components","useComponentContext","formatCurrency","useNumberFormatter","summary","useStateTaxesSummary","isLoading","stateTaxes","stateTaxesHaveAnyQuestions","s","formatStateTaxAnswer","question","answer","option","opt","numValue","emptyPlaceholder","handleEdit","componentEvents","BaseLayout","Flex","Loading","stateTax","index","stateName","hasQuestions","jsxs"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist';
1
+ import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
2
2
  export declare const caEmployeeStateTaxes: EmployeeStateTaxesList[];
3
3
  export declare const nyEmployeeStateTaxes: EmployeeStateTaxesList[];
4
4
  export declare const inEmployeeStateTaxes: EmployeeStateTaxesList[];
@@ -1,4 +1,4 @@
1
- import { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist';
1
+ import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
2
2
  interface WireAnswer {
3
3
  value: unknown;
4
4
  valid_from: string | undefined;
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist';
2
+ import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
3
3
  import { StateTaxQuestionVariant } from './fieldMapping';
4
4
  import { FieldsMetadataConfig } from '../../../../../partner-hook-utils/form/buildFormSchema';
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"employeeStateTaxesSchema.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport type {\n FieldMetadata,\n FieldMetadataWithOptions,\n FieldsMetadata,\n} from '@/partner-hook-utils/types'\nimport type { FieldsMetadataConfig } from '@/partner-hook-utils/form/buildFormSchema'\n\n// ── Error codes ────────────────────────────────────────────────────────\n\n/**\n * Validation error codes produced by the {@link useEmployeeStateTaxesForm} schema.\n *\n * @remarks\n * Use these constants as the keys in a field's `validationMessages` prop to\n * map an error code to a user-facing message. The state-taxes form surfaces\n * only a single error code: every required field that is empty emits\n * `REQUIRED`.\n *\n * @public\n */\nexport const EmployeeStateTaxesErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the employee state taxes\n * form schema.\n *\n * @public\n */\nexport type EmployeeStateTaxesErrorCode =\n (typeof EmployeeStateTaxesErrorCodes)[keyof typeof EmployeeStateTaxesErrorCodes]\n\n// ── Form data shape ────────────────────────────────────────────────────\n\n/**\n * Union of value types a single state-tax answer may hold in the form. The\n * shape depends on the API-provided question variant.\n *\n * @public\n */\nexport type StateTaxValue = string | number | boolean | Date | null | undefined\n\n/**\n * Shape of the values managed by the employee state taxes form. Keyed by\n * two-letter state code, then by question key (camelCased from the API key).\n *\n * @public\n */\nexport interface EmployeeStateTaxesFormData {\n /** Per-state answer map: state code → (camelCased question key → value). */\n states: Record<string, Record<string, StateTaxValue>>\n}\n\n/**\n * Shape of the validated values produced by the employee state taxes form on\n * submit.\n *\n * @public\n */\nexport type EmployeeStateTaxesFormOutputs = EmployeeStateTaxesFormData\n\n// ── Empty-value detection ──────────────────────────────────────────────\n\n/**\n * State-taxes fields are typed as `z.unknown()` in the schema and validated\n * for emptiness in `superRefine`. The bundled UI components only emit\n * type-correct values (NumberInput → number | undefined, DatePicker → Date |\n * undefined, etc.) and the submit serializer normalizes NaN / invalid Dates\n * to empty strings before hitting the API, so a per-variant Zod validator\n * would only fire for adversarial inputs that aren't reachable through the UI.\n */\nfunction isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string' && value.trim() === '') return true\n if (typeof value === 'number' && Number.isNaN(value)) return true\n if (value instanceof Date && Number.isNaN(value.getTime())) return true\n return false\n}\n\n// ── Schema factory ─────────────────────────────────────────────────────\n\n/** @internal */\nexport interface EmployeeStateTaxesSchemaOptions {\n isAdmin?: boolean\n}\n\ninterface QuestionOption {\n value: string | number | boolean\n label: string\n}\n\ninterface QuestionEntry {\n apiKey: string\n formKey: string\n fullPath: string\n variant: StateTaxQuestionVariant\n options?: QuestionOption[]\n isAdminOnly: boolean\n /** Server-provided answer at hook initialization. Used to compute the\n * `file_new_hire_report` lock-once-set rule. */\n initialValue: unknown\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesQuestionMeta {\n state: string\n isWorkState: boolean\n apiKey: string\n formKey: string\n variant: StateTaxQuestionVariant\n isAdminOnly: boolean\n isWireSelectWithBooleanOptions: boolean\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesMetadataConfig extends FieldsMetadataConfig<\n Record<string, z.ZodType>\n> {\n /** Group → questions, in API response order, post admin-filtering. */\n groups: Array<{\n state: string\n isWorkState: boolean\n questions: EmployeeStateTaxesQuestionMeta[]\n }>\n}\n\n/** @internal */\nexport type EmployeeStateTaxesSchemaResult = [\n schema: z.ZodType<EmployeeStateTaxesFormData, EmployeeStateTaxesFormData>,\n metadataConfig: EmployeeStateTaxesMetadataConfig,\n]\n\n/** @internal */\nexport function createEmployeeStateTaxesSchema(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: EmployeeStateTaxesSchemaOptions = {},\n): EmployeeStateTaxesSchemaResult {\n const { isAdmin = false } = options\n\n const groupEntries: Array<{\n state: string\n isWorkState: boolean\n questions: QuestionEntry[]\n }> = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const visibleQuestions: QuestionEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n const formKey = snakeCaseToCamelCase(question.key)\n const fullPath = `states.${stateGroup.state}.${formKey}`\n visibleQuestions.push({\n apiKey: question.key,\n formKey,\n fullPath,\n variant: getQuestionVariant(question),\n options: normalizeOptions(question.inputQuestionFormat.options),\n isAdminOnly: question.isQuestionForAdminOnly,\n initialValue: question.answers[0]?.value,\n })\n }\n\n groupEntries.push({\n state: stateGroup.state,\n isWorkState: Boolean(stateGroup.isWorkState),\n questions: visibleQuestions,\n })\n }\n\n const statesShape: Record<string, z.ZodType> = {}\n for (const group of groupEntries) {\n const innerShape: Record<string, z.ZodType> = {}\n for (const entry of group.questions) {\n innerShape[entry.formKey] = z.unknown()\n }\n statesShape[group.state] = z.object(innerShape).optional()\n }\n\n const baseSchema = z.object({\n states: z.object(statesShape),\n })\n\n const refined = baseSchema.superRefine((data, ctx) => {\n for (const group of groupEntries) {\n const stateValues = data.states[group.state] ?? {}\n for (const entry of group.questions) {\n const value = (stateValues as Record<string, unknown>)[entry.formKey]\n if (isEmpty(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['states', group.state, entry.formKey],\n message: EmployeeStateTaxesErrorCodes.REQUIRED,\n })\n }\n }\n }\n })\n\n const schema = refined as unknown as z.ZodType<\n EmployeeStateTaxesFormData,\n EmployeeStateTaxesFormData\n >\n\n const groupsForMetadata = groupEntries.map(g => ({\n state: g.state,\n isWorkState: g.isWorkState,\n questions: g.questions.map(q => ({\n state: g.state,\n isWorkState: g.isWorkState,\n apiKey: q.apiKey,\n formKey: q.formKey,\n variant: q.variant,\n isAdminOnly: q.isAdminOnly,\n isWireSelectWithBooleanOptions: isWireSelectWithBooleanOptions(q.options),\n })),\n }))\n\n function getFieldsMetadata(): FieldsMetadata {\n const metadata: FieldsMetadata = {}\n for (const group of groupEntries) {\n for (const entry of group.questions) {\n const base: FieldMetadata = {\n name: entry.fullPath,\n isRequired: true,\n }\n\n if (isLockedOnceSet(entry.apiKey, entry.initialValue)) {\n base.isDisabled = true\n }\n\n if (entry.options && entry.options.length > 0) {\n const withOptions: FieldMetadataWithOptions = {\n ...base,\n options: entry.options.map(opt => ({\n value: String(opt.value),\n label: opt.label,\n })),\n }\n metadata[entry.fullPath] = withOptions\n } else {\n metadata[entry.fullPath] = base\n }\n }\n }\n return metadata\n }\n\n /**\n * Mirrors the existing `TaxInputs.tsx` rule for `file_new_hire_report`:\n * once a value has been recorded server-side, the question is locked.\n */\n function isLockedOnceSet(apiKey: string, initialValue: unknown): boolean {\n if (apiKey !== 'file_new_hire_report') return false\n return initialValue !== undefined && initialValue !== null\n }\n\n return [\n schema,\n {\n getFieldsMetadata,\n predicateDeps: [],\n groups: groupsForMetadata,\n } as EmployeeStateTaxesMetadataConfig,\n ]\n}\n\nfunction isWireSelectWithBooleanOptions(options: QuestionOption[] | undefined): boolean {\n if (!options || options.length === 0) return false\n return options.every(opt => typeof opt.value === 'boolean')\n}\n\nfunction normalizeOptions(\n options:\n | Array<{ value?: string | number | boolean | undefined; label?: string | undefined }>\n | undefined,\n): QuestionOption[] | undefined {\n if (!options) return undefined\n const result: QuestionOption[] = []\n for (const opt of options) {\n if (opt.value === undefined || opt.label === undefined) continue\n result.push({ value: opt.value, label: opt.label })\n }\n return result.length > 0 ? result : undefined\n}\n"],"names":["EmployeeStateTaxesErrorCodes","isEmpty","value","createEmployeeStateTaxesSchema","employeeStateTaxes","options","isAdmin","groupEntries","stateGroup","visibleQuestions","question","formKey","snakeCaseToCamelCase","fullPath","getQuestionVariant","normalizeOptions","statesShape","group","innerShape","entry","z","schema","data","ctx","stateValues","groupsForMetadata","g","q","isWireSelectWithBooleanOptions","getFieldsMetadata","metadata","base","isLockedOnceSet","withOptions","opt","apiKey","initialValue","result"],"mappings":"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"}
1
+ {"version":3,"file":"employeeStateTaxesSchema.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/employeeStateTaxesSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport type {\n FieldMetadata,\n FieldMetadataWithOptions,\n FieldsMetadata,\n} from '@/partner-hook-utils/types'\nimport type { FieldsMetadataConfig } from '@/partner-hook-utils/form/buildFormSchema'\n\n// ── Error codes ────────────────────────────────────────────────────────\n\n/**\n * Validation error codes produced by the {@link useEmployeeStateTaxesForm} schema.\n *\n * @remarks\n * Use these constants as the keys in a field's `validationMessages` prop to\n * map an error code to a user-facing message. The state-taxes form surfaces\n * only a single error code: every required field that is empty emits\n * `REQUIRED`.\n *\n * @public\n */\nexport const EmployeeStateTaxesErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the employee state taxes\n * form schema.\n *\n * @public\n */\nexport type EmployeeStateTaxesErrorCode =\n (typeof EmployeeStateTaxesErrorCodes)[keyof typeof EmployeeStateTaxesErrorCodes]\n\n// ── Form data shape ────────────────────────────────────────────────────\n\n/**\n * Union of value types a single state-tax answer may hold in the form. The\n * shape depends on the API-provided question variant.\n *\n * @public\n */\nexport type StateTaxValue = string | number | boolean | Date | null | undefined\n\n/**\n * Shape of the values managed by the employee state taxes form. Keyed by\n * two-letter state code, then by question key (camelCased from the API key).\n *\n * @public\n */\nexport interface EmployeeStateTaxesFormData {\n /** Per-state answer map: state code → (camelCased question key → value). */\n states: Record<string, Record<string, StateTaxValue>>\n}\n\n/**\n * Shape of the validated values produced by the employee state taxes form on\n * submit.\n *\n * @public\n */\nexport type EmployeeStateTaxesFormOutputs = EmployeeStateTaxesFormData\n\n// ── Empty-value detection ──────────────────────────────────────────────\n\n/**\n * State-taxes fields are typed as `z.unknown()` in the schema and validated\n * for emptiness in `superRefine`. The bundled UI components only emit\n * type-correct values (NumberInput → number | undefined, DatePicker → Date |\n * undefined, etc.) and the submit serializer normalizes NaN / invalid Dates\n * to empty strings before hitting the API, so a per-variant Zod validator\n * would only fire for adversarial inputs that aren't reachable through the UI.\n */\nfunction isEmpty(value: unknown): boolean {\n if (value === undefined || value === null) return true\n if (typeof value === 'string' && value.trim() === '') return true\n if (typeof value === 'number' && Number.isNaN(value)) return true\n if (value instanceof Date && Number.isNaN(value.getTime())) return true\n return false\n}\n\n// ── Schema factory ─────────────────────────────────────────────────────\n\n/** @internal */\nexport interface EmployeeStateTaxesSchemaOptions {\n isAdmin?: boolean\n}\n\ninterface QuestionOption {\n value: string | number | boolean\n label: string\n}\n\ninterface QuestionEntry {\n apiKey: string\n formKey: string\n fullPath: string\n variant: StateTaxQuestionVariant\n options?: QuestionOption[]\n isAdminOnly: boolean\n /** Server-provided answer at hook initialization. Used to compute the\n * `file_new_hire_report` lock-once-set rule. */\n initialValue: unknown\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesQuestionMeta {\n state: string\n isWorkState: boolean\n apiKey: string\n formKey: string\n variant: StateTaxQuestionVariant\n isAdminOnly: boolean\n isWireSelectWithBooleanOptions: boolean\n}\n\n/** @internal */\nexport interface EmployeeStateTaxesMetadataConfig extends FieldsMetadataConfig<\n Record<string, z.ZodType>\n> {\n /** Group → questions, in API response order, post admin-filtering. */\n groups: Array<{\n state: string\n isWorkState: boolean\n questions: EmployeeStateTaxesQuestionMeta[]\n }>\n}\n\n/** @internal */\nexport type EmployeeStateTaxesSchemaResult = [\n schema: z.ZodType<EmployeeStateTaxesFormData, EmployeeStateTaxesFormData>,\n metadataConfig: EmployeeStateTaxesMetadataConfig,\n]\n\n/** @internal */\nexport function createEmployeeStateTaxesSchema(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: EmployeeStateTaxesSchemaOptions = {},\n): EmployeeStateTaxesSchemaResult {\n const { isAdmin = false } = options\n\n const groupEntries: Array<{\n state: string\n isWorkState: boolean\n questions: QuestionEntry[]\n }> = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const visibleQuestions: QuestionEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n const formKey = snakeCaseToCamelCase(question.key)\n const fullPath = `states.${stateGroup.state}.${formKey}`\n visibleQuestions.push({\n apiKey: question.key,\n formKey,\n fullPath,\n variant: getQuestionVariant(question),\n options: normalizeOptions(question.inputQuestionFormat.options),\n isAdminOnly: question.isQuestionForAdminOnly,\n initialValue: question.answers[0]?.value,\n })\n }\n\n groupEntries.push({\n state: stateGroup.state,\n isWorkState: Boolean(stateGroup.isWorkState),\n questions: visibleQuestions,\n })\n }\n\n const statesShape: Record<string, z.ZodType> = {}\n for (const group of groupEntries) {\n const innerShape: Record<string, z.ZodType> = {}\n for (const entry of group.questions) {\n innerShape[entry.formKey] = z.unknown()\n }\n statesShape[group.state] = z.object(innerShape).optional()\n }\n\n const baseSchema = z.object({\n states: z.object(statesShape),\n })\n\n const refined = baseSchema.superRefine((data, ctx) => {\n for (const group of groupEntries) {\n const stateValues = data.states[group.state] ?? {}\n for (const entry of group.questions) {\n const value = (stateValues as Record<string, unknown>)[entry.formKey]\n if (isEmpty(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['states', group.state, entry.formKey],\n message: EmployeeStateTaxesErrorCodes.REQUIRED,\n })\n }\n }\n }\n })\n\n const schema = refined as unknown as z.ZodType<\n EmployeeStateTaxesFormData,\n EmployeeStateTaxesFormData\n >\n\n const groupsForMetadata = groupEntries.map(g => ({\n state: g.state,\n isWorkState: g.isWorkState,\n questions: g.questions.map(q => ({\n state: g.state,\n isWorkState: g.isWorkState,\n apiKey: q.apiKey,\n formKey: q.formKey,\n variant: q.variant,\n isAdminOnly: q.isAdminOnly,\n isWireSelectWithBooleanOptions: isWireSelectWithBooleanOptions(q.options),\n })),\n }))\n\n function getFieldsMetadata(): FieldsMetadata {\n const metadata: FieldsMetadata = {}\n for (const group of groupEntries) {\n for (const entry of group.questions) {\n const base: FieldMetadata = {\n name: entry.fullPath,\n isRequired: true,\n }\n\n if (isLockedOnceSet(entry.apiKey, entry.initialValue)) {\n base.isDisabled = true\n }\n\n if (entry.options && entry.options.length > 0) {\n const withOptions: FieldMetadataWithOptions = {\n ...base,\n options: entry.options.map(opt => ({\n value: String(opt.value),\n label: opt.label,\n })),\n }\n metadata[entry.fullPath] = withOptions\n } else {\n metadata[entry.fullPath] = base\n }\n }\n }\n return metadata\n }\n\n /**\n * Mirrors the existing `TaxInputs.tsx` rule for `file_new_hire_report`:\n * once a value has been recorded server-side, the question is locked.\n */\n function isLockedOnceSet(apiKey: string, initialValue: unknown): boolean {\n if (apiKey !== 'file_new_hire_report') return false\n return initialValue !== undefined && initialValue !== null\n }\n\n return [\n schema,\n {\n getFieldsMetadata,\n predicateDeps: [],\n groups: groupsForMetadata,\n } as EmployeeStateTaxesMetadataConfig,\n ]\n}\n\nfunction isWireSelectWithBooleanOptions(options: QuestionOption[] | undefined): boolean {\n if (!options || options.length === 0) return false\n return options.every(opt => typeof opt.value === 'boolean')\n}\n\nfunction normalizeOptions(\n options:\n | Array<{ value?: string | number | boolean | undefined; label?: string | undefined }>\n | undefined,\n): QuestionOption[] | undefined {\n if (!options) return undefined\n const result: QuestionOption[] = []\n for (const opt of options) {\n if (opt.value === undefined || opt.label === undefined) continue\n result.push({ value: opt.value, label: opt.label })\n }\n return result.length > 0 ? result : undefined\n}\n"],"names":["EmployeeStateTaxesErrorCodes","isEmpty","value","createEmployeeStateTaxesSchema","employeeStateTaxes","options","isAdmin","groupEntries","stateGroup","visibleQuestions","question","formKey","snakeCaseToCamelCase","fullPath","getQuestionVariant","normalizeOptions","statesShape","group","innerShape","entry","z","schema","data","ctx","stateValues","groupsForMetadata","g","q","isWireSelectWithBooleanOptions","getFieldsMetadata","metadata","base","isLockedOnceSet","withOptions","opt","apiKey","initialValue","result"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { EmployeeStateTaxQuestion } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxquestion';
1
+ import { EmployeeStateTaxQuestion } from '@gusto/embedded-api/models/components/employeestatetaxquestion';
2
2
  /**
3
3
  * UI input variant for a state-tax question — determines which field type renders for a given question from the employee state-taxes API.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"fieldMapping.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.ts"],"sourcesContent":["import type { EmployeeStateTaxQuestion } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxquestion'\n\n/**\n * UI input variant for a state-tax question — determines which field type renders for a given question from the employee state-taxes API.\n *\n * @public\n */\nexport type StateTaxQuestionVariant = 'select' | 'radio' | 'text' | 'number' | 'currency' | 'date'\n\n/**\n * Per-key mapping rules that promote API `Select`s to other variants for\n * UX reasons.\n *\n * `file_new_hire_report` is internally a Radio per the canonical Ruby\n * helper (`FileNewHireReportHelper.display_field_for_file_new_hire_report`),\n * but the converter at\n * `convert_employee_state_field_to_gws_flow_questions.rb` emits it as\n * `Select` because there's no Radio output type. The existing component at\n * `src/components/Employee/StateTaxes/StateForm.tsx` intends to override\n * `questionType` to `'Radio'` for this question but the comparison checks\n * `'fileNewHireReport'` (camelCase) against an API `key` of\n * `'file_new_hire_report'` (snake_case), so the override never fires today.\n *\n * This map fixes that bug and surfaces it as a Radio in the new hook.\n */\nconst SELECT_TO_RADIO_PROMOTION_KEYS = new Set<string>(['file_new_hire_report'])\n\n/** @internal */\nexport function getQuestionVariant(question: EmployeeStateTaxQuestion): StateTaxQuestionVariant {\n if (SELECT_TO_RADIO_PROMOTION_KEYS.has(question.key)) {\n return 'radio'\n }\n\n switch (question.inputQuestionFormat.type.toLowerCase()) {\n case 'select':\n return 'select'\n case 'number':\n return 'number'\n case 'currency':\n return 'currency'\n case 'date':\n return 'date'\n case 'text':\n return 'text'\n default:\n return 'text'\n }\n}\n"],"names":["SELECT_TO_RADIO_PROMOTION_KEYS","getQuestionVariant","question"],"mappings":"AAyBA,MAAMA,IAAiC,oBAAI,IAAY,CAAC,sBAAsB,CAAC;AAGxE,SAASC,EAAmBC,GAA6D;AAC9F,MAAIF,EAA+B,IAAIE,EAAS,GAAG;AACjD,WAAO;AAGT,UAAQA,EAAS,oBAAoB,KAAK,YAAA,GAAY;AAAA,IACpD,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
1
+ {"version":3,"file":"fieldMapping.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldMapping.ts"],"sourcesContent":["import type { EmployeeStateTaxQuestion } from '@gusto/embedded-api/models/components/employeestatetaxquestion'\n\n/**\n * UI input variant for a state-tax question — determines which field type renders for a given question from the employee state-taxes API.\n *\n * @public\n */\nexport type StateTaxQuestionVariant = 'select' | 'radio' | 'text' | 'number' | 'currency' | 'date'\n\n/**\n * Per-key mapping rules that promote API `Select`s to other variants for\n * UX reasons.\n *\n * `file_new_hire_report` is internally a Radio per the canonical Ruby\n * helper (`FileNewHireReportHelper.display_field_for_file_new_hire_report`),\n * but the converter at\n * `convert_employee_state_field_to_gws_flow_questions.rb` emits it as\n * `Select` because there's no Radio output type. The existing component at\n * `src/components/Employee/StateTaxes/StateForm.tsx` intends to override\n * `questionType` to `'Radio'` for this question but the comparison checks\n * `'fileNewHireReport'` (camelCase) against an API `key` of\n * `'file_new_hire_report'` (snake_case), so the override never fires today.\n *\n * This map fixes that bug and surfaces it as a Radio in the new hook.\n */\nconst SELECT_TO_RADIO_PROMOTION_KEYS = new Set<string>(['file_new_hire_report'])\n\n/** @internal */\nexport function getQuestionVariant(question: EmployeeStateTaxQuestion): StateTaxQuestionVariant {\n if (SELECT_TO_RADIO_PROMOTION_KEYS.has(question.key)) {\n return 'radio'\n }\n\n switch (question.inputQuestionFormat.type.toLowerCase()) {\n case 'select':\n return 'select'\n case 'number':\n return 'number'\n case 'currency':\n return 'currency'\n case 'date':\n return 'date'\n case 'text':\n return 'text'\n default:\n return 'text'\n }\n}\n"],"names":["SELECT_TO_RADIO_PROMOTION_KEYS","getQuestionVariant","question"],"mappings":"AAyBA,MAAMA,IAAiC,oBAAI,IAAY,CAAC,sBAAsB,CAAC;AAGxE,SAASC,EAAmBC,GAA6D;AAC9F,MAAIF,EAA+B,IAAIE,EAAS,GAAG;AACjD,WAAO;AAGT,UAAQA,EAAS,oBAAoB,KAAK,YAAA,GAAY;AAAA,IACpD,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
@@ -1,5 +1,5 @@
1
1
  import { ComponentType } from 'react';
2
- import { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist';
2
+ import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
3
3
  import { CurrencyStateTaxFieldProps, DateStateTaxFieldProps, NumberStateTaxFieldProps, RadioStateTaxFieldProps, SelectStateTaxFieldProps, TextStateTaxFieldProps } from './fieldProps';
4
4
  export type { BaseStateTaxFieldProps, StateTaxValidationMessages, CurrencyStateTaxFieldProps, DateStateTaxFieldProps, NumberStateTaxFieldProps, RadioStateTaxFieldProps, SelectStateTaxFieldProps, TextStateTaxFieldProps, } from './fieldProps';
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport {\n CurrencyStateTaxField,\n DateStateTaxField,\n NumberStateTaxField,\n RadioStateTaxField,\n SelectStateTaxField,\n TextStateTaxField,\n} from './fieldComponents'\nimport type { BoundFieldMeta } from './fieldMeta'\nimport type {\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\n\nexport type {\n BaseStateTaxFieldProps,\n StateTaxValidationMessages,\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\n\n// ── Discriminated union surfaced to partners ───────────────────────────\n\n/**\n * Metadata shared by every {@link StateTaxQuestionFieldEntry} variant,\n * independent of which input the question renders.\n *\n * @public\n */\nexport interface SharedQuestionMetadata {\n /** Stable identifier for this question (camelCase form of the API key). */\n questionId: string\n /** API-supplied label; default text for the rendered Field. */\n label: string\n /** API-supplied description (raw HTML, sanitized internally before render). */\n description: string | null\n}\n\n/**\n * A state-tax question that renders as a select (dropdown). Includes read-only\n * question metadata from the API and a bound select field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface SelectStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the select variant. */\n type: 'select'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<SelectStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a radio group. Includes read-only\n * question metadata from the API and a bound radio field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface RadioStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the radio variant. */\n type: 'radio'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<RadioStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a single-line text input. Includes\n * read-only question metadata from the API and a bound text field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface TextStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the text variant. */\n type: 'text'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<TextStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a decimal number input. Includes\n * read-only question metadata from the API and a bound number field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface NumberStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the number variant. */\n type: 'number'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<NumberStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a currency-formatted number input. Includes\n * read-only question metadata from the API and a bound currency field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface CurrencyStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the currency variant. */\n type: 'currency'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<CurrencyStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a date picker. Includes read-only\n * question metadata from the API and a bound date field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface DateStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the date variant. */\n type: 'date'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<DateStateTaxFieldProps>\n}\n\n/**\n * One question entry within a {@link StateTaxFieldsGroup}, discriminated by\n * `type` to identify which input variant the question uses. Each entry carries\n * a `Field` component pre-bound to its API-supplied metadata so callers can\n * render the input directly.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFieldsGroup}\n */\nexport type StateTaxQuestionFieldEntry =\n | SelectStateTaxQuestion\n | RadioStateTaxQuestion\n | TextStateTaxQuestion\n | NumberStateTaxQuestion\n | CurrencyStateTaxQuestion\n | DateStateTaxQuestion\n\n/**\n * Group of state-tax questions for a single jurisdiction returned by\n * {@link useStateFields}.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFields}\n */\nexport interface StateTaxFieldsGroup {\n /** Two-letter state code. */\n state: string\n /** Ordered list of question entries for this state, post admin-only filtering. */\n questions: StateTaxQuestionFieldEntry[]\n}\n\n/**\n * Iterable, render-ready group + question entries with bound Field components,\n * grouped by state.\n *\n * @public\n *\n * @example\n * The value exposed on `form.Fields`: one entry per state, each carrying its\n * questions as pre-bound `Field` components you render directly.\n *\n * ```tsx\n * function StateTaxQuestions({ fields }: { fields: StateTaxFields }) {\n * return fields.map(group => (\n * <section key={group.state}>\n * <h3>{group.state}</h3>\n * {group.questions.map(question => (\n * <question.Field key={question.questionId} />\n * ))}\n * </section>\n * ))\n * }\n * ```\n */\nexport type StateTaxFields = StateTaxFieldsGroup[]\n\n// ── Factory ────────────────────────────────────────────────────────────\n\n/** @internal */\nexport interface CreateStateFieldsOptions {\n isAdmin: boolean\n}\n\n/** @internal */\nexport function createStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: CreateStateFieldsOptions,\n): StateTaxFieldsGroup[] {\n const { isAdmin } = options\n const groups: StateTaxFieldsGroup[] = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const questions: StateTaxQuestionFieldEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n\n const formKey = snakeCaseToCamelCase(question.key)\n const meta: BoundFieldMeta = {\n name: `states.${stateGroup.state}.${formKey}`,\n apiLabel: question.label,\n apiDescription: question.description,\n }\n const variant = getQuestionVariant(question)\n const shared: SharedQuestionMetadata = {\n questionId: formKey,\n label: question.label,\n description: question.description,\n }\n\n questions.push(buildEntry(variant, meta, shared))\n }\n\n if (questions.length === 0) continue\n\n groups.push({\n state: stateGroup.state,\n questions,\n })\n }\n\n return groups\n}\n\nfunction buildEntry(\n variant: StateTaxQuestionVariant,\n meta: BoundFieldMeta,\n shared: SharedQuestionMetadata,\n): StateTaxQuestionFieldEntry {\n switch (variant) {\n case 'select':\n return {\n type: 'select',\n Field: function BoundSelectStateTaxField(props: SelectStateTaxFieldProps) {\n return <SelectStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'radio':\n return {\n type: 'radio',\n Field: function BoundRadioStateTaxField(props: RadioStateTaxFieldProps) {\n return <RadioStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'text':\n return {\n type: 'text',\n Field: function BoundTextStateTaxField(props: TextStateTaxFieldProps) {\n return <TextStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'number':\n return {\n type: 'number',\n Field: function BoundNumberStateTaxField(props: NumberStateTaxFieldProps) {\n return <NumberStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'currency':\n return {\n type: 'currency',\n Field: function BoundCurrencyStateTaxField(props: CurrencyStateTaxFieldProps) {\n return <CurrencyStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'date':\n return {\n type: 'date',\n Field: function BoundDateStateTaxField(props: DateStateTaxFieldProps) {\n return <DateStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n }\n}\n\n/**\n * Memoizes the bound field components for a state-taxes form, avoiding unnecessary rebuilds when the data refetches but the underlying questions haven't changed.\n *\n * @param employeeStateTaxes - Array of state-tax groups returned by the employee state-taxes API.\n * @param isAdmin - When `true`, admin-only questions are included; when `false`, they are filtered out.\n * @returns An array of {@link StateTaxFieldsGroup} — one entry per state, each with a `questions` array of bound field components.\n * @public\n * @group Utility hooks\n */\nexport function useStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): StateTaxFieldsGroup[] {\n return useMemo(\n () => createStateFields(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n}\n"],"names":["createStateFields","employeeStateTaxes","options","isAdmin","groups","stateGroup","questions","question","formKey","snakeCaseToCamelCase","meta","variant","getQuestionVariant","shared","buildEntry","props","jsx","SelectStateTaxField","RadioStateTaxField","TextStateTaxField","NumberStateTaxField","CurrencyStateTaxField","DateStateTaxField","useStateFields","useMemo"],"mappings":";;;;;AA+MO,SAASA,EACdC,GACAC,GACuB;AACvB,QAAM,EAAE,SAAAC,MAAYD,GACdE,IAAgC,CAAA;AAEtC,aAAWC,KAAcJ,GAAoB;AAC3C,QAAI,CAACI,EAAW,SAAS,CAACA,EAAW,UAAW;AAEhD,UAAMC,IAA0C,CAAA;AAChD,eAAWC,KAAYF,EAAW,WAAW;AAC3C,UAAIE,EAAS,0BAA0B,CAACJ,EAAS;AAEjD,YAAMK,IAAUC,EAAqBF,EAAS,GAAG,GAC3CG,IAAuB;AAAA,QAC3B,MAAM,UAAUL,EAAW,KAAK,IAAIG,CAAO;AAAA,QAC3C,UAAUD,EAAS;AAAA,QACnB,gBAAgBA,EAAS;AAAA,MAAA,GAErBI,IAAUC,EAAmBL,CAAQ,GACrCM,IAAiC;AAAA,QACrC,YAAYL;AAAA,QACZ,OAAOD,EAAS;AAAA,QAChB,aAAaA,EAAS;AAAA,MAAA;AAGxB,MAAAD,EAAU,KAAKQ,EAAWH,GAASD,GAAMG,CAAM,CAAC;AAAA,IAClD;AAEA,IAAIP,EAAU,WAAW,KAEzBF,EAAO,KAAK;AAAA,MACV,OAAOC,EAAW;AAAA,MAClB,WAAAC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOF;AACT;AAEA,SAASU,EACPH,GACAD,GACAG,GAC4B;AAC5B,UAAQF,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCI,GAAiC;AACxE,iBAAO,gBAAAC,EAACC,GAAA,EAAoB,MAAAP,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAiCE,GAAgC;AACtE,iBAAO,gBAAAC,EAACE,GAAA,EAAmB,MAAAR,GAAa,GAAGK,EAAA,CAAO;AAAA,QACpD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACG,GAAA,EAAkB,MAAAT,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCE,GAAiC;AACxE,iBAAO,gBAAAC,EAACI,GAAA,EAAoB,MAAAV,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAoCE,GAAmC;AAC5E,iBAAO,gBAAAC,EAACK,GAAA,EAAsB,MAAAX,GAAa,GAAGK,EAAA,CAAO;AAAA,QACvD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACM,GAAA,EAAkB,MAAAZ,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,EACL;AAEN;AAWO,SAASU,EACdtB,GACAE,GACuB;AACvB,SAAOqB;AAAA,IACL,MAAMxB,EAAkBC,GAAoB,EAAE,SAAAE,GAAS;AAAA,IACvD,CAACF,GAAoBE,CAAO;AAAA,EAAA;AAEhC;"}
1
+ {"version":3,"file":"fields.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fields.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { getQuestionVariant, type StateTaxQuestionVariant } from './fieldMapping'\nimport {\n CurrencyStateTaxField,\n DateStateTaxField,\n NumberStateTaxField,\n RadioStateTaxField,\n SelectStateTaxField,\n TextStateTaxField,\n} from './fieldComponents'\nimport type { BoundFieldMeta } from './fieldMeta'\nimport type {\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\n\nexport type {\n BaseStateTaxFieldProps,\n StateTaxValidationMessages,\n CurrencyStateTaxFieldProps,\n DateStateTaxFieldProps,\n NumberStateTaxFieldProps,\n RadioStateTaxFieldProps,\n SelectStateTaxFieldProps,\n TextStateTaxFieldProps,\n} from './fieldProps'\n\n// ── Discriminated union surfaced to partners ───────────────────────────\n\n/**\n * Metadata shared by every {@link StateTaxQuestionFieldEntry} variant,\n * independent of which input the question renders.\n *\n * @public\n */\nexport interface SharedQuestionMetadata {\n /** Stable identifier for this question (camelCase form of the API key). */\n questionId: string\n /** API-supplied label; default text for the rendered Field. */\n label: string\n /** API-supplied description (raw HTML, sanitized internally before render). */\n description: string | null\n}\n\n/**\n * A state-tax question that renders as a select (dropdown). Includes read-only\n * question metadata from the API and a bound select field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface SelectStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the select variant. */\n type: 'select'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<SelectStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a radio group. Includes read-only\n * question metadata from the API and a bound radio field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface RadioStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the radio variant. */\n type: 'radio'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<RadioStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a single-line text input. Includes\n * read-only question metadata from the API and a bound text field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface TextStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the text variant. */\n type: 'text'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<TextStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a decimal number input. Includes\n * read-only question metadata from the API and a bound number field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface NumberStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the number variant. */\n type: 'number'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<NumberStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a currency-formatted number input. Includes\n * read-only question metadata from the API and a bound currency field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface CurrencyStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the currency variant. */\n type: 'currency'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<CurrencyStateTaxFieldProps>\n}\n\n/**\n * A state-tax question that renders as a date picker. Includes read-only\n * question metadata from the API and a bound date field, exposed as\n * `<question.Field />`.\n *\n * @public\n * @group Fields\n */\nexport interface DateStateTaxQuestion extends SharedQuestionMetadata {\n /** Discriminant identifying the date variant. */\n type: 'date'\n /** Field component pre-bound to this question's API-supplied metadata. */\n Field: ComponentType<DateStateTaxFieldProps>\n}\n\n/**\n * One question entry within a {@link StateTaxFieldsGroup}, discriminated by\n * `type` to identify which input variant the question uses. Each entry carries\n * a `Field` component pre-bound to its API-supplied metadata so callers can\n * render the input directly.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFieldsGroup}\n */\nexport type StateTaxQuestionFieldEntry =\n | SelectStateTaxQuestion\n | RadioStateTaxQuestion\n | TextStateTaxQuestion\n | NumberStateTaxQuestion\n | CurrencyStateTaxQuestion\n | DateStateTaxQuestion\n\n/**\n * Group of state-tax questions for a single jurisdiction returned by\n * {@link useStateFields}.\n *\n * @public\n * @group Fields\n * @groupWith {@link StateTaxFields}\n */\nexport interface StateTaxFieldsGroup {\n /** Two-letter state code. */\n state: string\n /** Ordered list of question entries for this state, post admin-only filtering. */\n questions: StateTaxQuestionFieldEntry[]\n}\n\n/**\n * Iterable, render-ready group + question entries with bound Field components,\n * grouped by state.\n *\n * @public\n *\n * @example\n * The value exposed on `form.Fields`: one entry per state, each carrying its\n * questions as pre-bound `Field` components you render directly.\n *\n * ```tsx\n * function StateTaxQuestions({ fields }: { fields: StateTaxFields }) {\n * return fields.map(group => (\n * <section key={group.state}>\n * <h3>{group.state}</h3>\n * {group.questions.map(question => (\n * <question.Field key={question.questionId} />\n * ))}\n * </section>\n * ))\n * }\n * ```\n */\nexport type StateTaxFields = StateTaxFieldsGroup[]\n\n// ── Factory ────────────────────────────────────────────────────────────\n\n/** @internal */\nexport interface CreateStateFieldsOptions {\n isAdmin: boolean\n}\n\n/** @internal */\nexport function createStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n options: CreateStateFieldsOptions,\n): StateTaxFieldsGroup[] {\n const { isAdmin } = options\n const groups: StateTaxFieldsGroup[] = []\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const questions: StateTaxQuestionFieldEntry[] = []\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n\n const formKey = snakeCaseToCamelCase(question.key)\n const meta: BoundFieldMeta = {\n name: `states.${stateGroup.state}.${formKey}`,\n apiLabel: question.label,\n apiDescription: question.description,\n }\n const variant = getQuestionVariant(question)\n const shared: SharedQuestionMetadata = {\n questionId: formKey,\n label: question.label,\n description: question.description,\n }\n\n questions.push(buildEntry(variant, meta, shared))\n }\n\n if (questions.length === 0) continue\n\n groups.push({\n state: stateGroup.state,\n questions,\n })\n }\n\n return groups\n}\n\nfunction buildEntry(\n variant: StateTaxQuestionVariant,\n meta: BoundFieldMeta,\n shared: SharedQuestionMetadata,\n): StateTaxQuestionFieldEntry {\n switch (variant) {\n case 'select':\n return {\n type: 'select',\n Field: function BoundSelectStateTaxField(props: SelectStateTaxFieldProps) {\n return <SelectStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'radio':\n return {\n type: 'radio',\n Field: function BoundRadioStateTaxField(props: RadioStateTaxFieldProps) {\n return <RadioStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'text':\n return {\n type: 'text',\n Field: function BoundTextStateTaxField(props: TextStateTaxFieldProps) {\n return <TextStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'number':\n return {\n type: 'number',\n Field: function BoundNumberStateTaxField(props: NumberStateTaxFieldProps) {\n return <NumberStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'currency':\n return {\n type: 'currency',\n Field: function BoundCurrencyStateTaxField(props: CurrencyStateTaxFieldProps) {\n return <CurrencyStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n case 'date':\n return {\n type: 'date',\n Field: function BoundDateStateTaxField(props: DateStateTaxFieldProps) {\n return <DateStateTaxField meta={meta} {...props} />\n },\n ...shared,\n }\n }\n}\n\n/**\n * Memoizes the bound field components for a state-taxes form, avoiding unnecessary rebuilds when the data refetches but the underlying questions haven't changed.\n *\n * @param employeeStateTaxes - Array of state-tax groups returned by the employee state-taxes API.\n * @param isAdmin - When `true`, admin-only questions are included; when `false`, they are filtered out.\n * @returns An array of {@link StateTaxFieldsGroup} — one entry per state, each with a `questions` array of bound field components.\n * @public\n * @group Utility hooks\n */\nexport function useStateFields(\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): StateTaxFieldsGroup[] {\n return useMemo(\n () => createStateFields(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n}\n"],"names":["createStateFields","employeeStateTaxes","options","isAdmin","groups","stateGroup","questions","question","formKey","snakeCaseToCamelCase","meta","variant","getQuestionVariant","shared","buildEntry","props","jsx","SelectStateTaxField","RadioStateTaxField","TextStateTaxField","NumberStateTaxField","CurrencyStateTaxField","DateStateTaxField","useStateFields","useMemo"],"mappings":";;;;;AA+MO,SAASA,EACdC,GACAC,GACuB;AACvB,QAAM,EAAE,SAAAC,MAAYD,GACdE,IAAgC,CAAA;AAEtC,aAAWC,KAAcJ,GAAoB;AAC3C,QAAI,CAACI,EAAW,SAAS,CAACA,EAAW,UAAW;AAEhD,UAAMC,IAA0C,CAAA;AAChD,eAAWC,KAAYF,EAAW,WAAW;AAC3C,UAAIE,EAAS,0BAA0B,CAACJ,EAAS;AAEjD,YAAMK,IAAUC,EAAqBF,EAAS,GAAG,GAC3CG,IAAuB;AAAA,QAC3B,MAAM,UAAUL,EAAW,KAAK,IAAIG,CAAO;AAAA,QAC3C,UAAUD,EAAS;AAAA,QACnB,gBAAgBA,EAAS;AAAA,MAAA,GAErBI,IAAUC,EAAmBL,CAAQ,GACrCM,IAAiC;AAAA,QACrC,YAAYL;AAAA,QACZ,OAAOD,EAAS;AAAA,QAChB,aAAaA,EAAS;AAAA,MAAA;AAGxB,MAAAD,EAAU,KAAKQ,EAAWH,GAASD,GAAMG,CAAM,CAAC;AAAA,IAClD;AAEA,IAAIP,EAAU,WAAW,KAEzBF,EAAO,KAAK;AAAA,MACV,OAAOC,EAAW;AAAA,MAClB,WAAAC;AAAA,IAAA,CACD;AAAA,EACH;AAEA,SAAOF;AACT;AAEA,SAASU,EACPH,GACAD,GACAG,GAC4B;AAC5B,UAAQF,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCI,GAAiC;AACxE,iBAAO,gBAAAC,EAACC,GAAA,EAAoB,MAAAP,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAiCE,GAAgC;AACtE,iBAAO,gBAAAC,EAACE,GAAA,EAAmB,MAAAR,GAAa,GAAGK,EAAA,CAAO;AAAA,QACpD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACG,GAAA,EAAkB,MAAAT,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAkCE,GAAiC;AACxE,iBAAO,gBAAAC,EAACI,GAAA,EAAoB,MAAAV,GAAa,GAAGK,EAAA,CAAO;AAAA,QACrD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAoCE,GAAmC;AAC5E,iBAAO,gBAAAC,EAACK,GAAA,EAAsB,MAAAX,GAAa,GAAGK,EAAA,CAAO;AAAA,QACvD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,IAEP,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAO,SAAgCE,GAA+B;AACpE,iBAAO,gBAAAC,EAACM,GAAA,EAAkB,MAAAZ,GAAa,GAAGK,EAAA,CAAO;AAAA,QACnD;AAAA,QACA,GAAGF;AAAA,MAAA;AAAA,EACL;AAEN;AAWO,SAASU,EACdtB,GACAE,GACuB;AACvB,SAAOqB;AAAA,IACL,MAAMxB,EAAkBC,GAAoB,EAAE,SAAAE,GAAS;AAAA,IACvD,CAACF,GAAoBE,CAAO;AAAA,EAAA;AAEhC;"}
@@ -1,5 +1,5 @@
1
1
  import { UseFormProps } from 'react-hook-form';
2
- import { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist';
2
+ import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
3
3
  import { EmployeeStateTaxesFormData } from './employeeStateTaxesSchema';
4
4
  import { StateTaxFields } from './fields';
5
5
  import { BaseFormHookReady, FieldMetadata, FieldMetadataWithOptions, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
@@ -1,8 +1,8 @@
1
1
  import { useMemo as l } from "react";
2
2
  import { useForm as D } from "react-hook-form";
3
3
  import { zodResolver as L } from "@hookform/resolvers/zod";
4
- import { useEmployeeTaxSetupGetStateTaxes as O } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeTaxSetupGetStateTaxes";
5
- import { useEmployeeTaxSetupUpdateStateTaxesMutation as M } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeTaxSetupUpdateStateTaxes";
4
+ import { useEmployeeTaxSetupGetStateTaxes as O } from "@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes";
5
+ import { useEmployeeTaxSetupUpdateStateTaxesMutation as M } from "@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes";
6
6
  import { createEmployeeStateTaxesSchema as U } from "./employeeStateTaxesSchema.js";
7
7
  import { createStateFields as _ } from "./fields.js";
8
8
  import { getQuestionVariant as Q } from "./fieldMapping.js";
@@ -1 +1 @@
1
- {"version":3,"file":"useEmployeeStateTaxesForm.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist'\nimport type {\n EmployeeStateTaxesRequest,\n States as EmployeeStateTaxesRequestState,\n} from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxesrequest'\nimport { useEmployeeTaxSetupGetStateTaxes } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeTaxSetupGetStateTaxes'\nimport { useEmployeeTaxSetupUpdateStateTaxesMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeTaxSetupUpdateStateTaxes'\nimport {\n createEmployeeStateTaxesSchema,\n type EmployeeStateTaxesFormData,\n type EmployeeStateTaxesFormOutputs,\n} from './employeeStateTaxesSchema'\nimport type { StateTaxFields } from './fields'\nimport { createStateFields } from './fields'\nimport { getQuestionVariant } from './fieldMapping'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldMetadataWithOptions,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\nconst DEFAULT_TAX_VALID_FROM = '2010-01-01'\n\n/**\n * Options accepted by {@link useEmployeeStateTaxesForm}.\n *\n * @public\n */\nexport interface UseEmployeeStateTaxesFormProps {\n /** The UUID of the employee whose state taxes are being updated. */\n employeeId: string\n /**\n * When `true`, admin-only questions are visible and submitted. When\n * `false`, they are filtered out and the surfaced answer for those\n * questions is preserved unchanged on submit.\n */\n isAdmin?: boolean\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. Defaults to `true`. Set to `false` when composing with other forms. */\n shouldFocusError?: boolean\n}\n\n/**\n * Ready-state return value of {@link useEmployeeStateTaxesForm} — the\n * `isLoading: false` branch of {@link UseEmployeeStateTaxesFormResult}.\n *\n * @public\n */\nexport interface UseEmployeeStateTaxesFormReady extends BaseFormHookReady<\n EmployeeStateTaxesFieldsMetadata,\n EmployeeStateTaxesFormData,\n StateTaxFields\n> {\n /** Current per-state tax records returned by the server. */\n data: {\n employeeStateTaxes: EmployeeStateTaxesList[]\n }\n /** Submission status. `mode` is always `'update'` since state-tax records are created with the employee. */\n status: { isPending: boolean; mode: 'update' }\n /** Form actions. */\n actions: {\n /** Validates and submits the form, resolving to the updated records on success or `undefined` when validation blocked the submit. */\n onSubmit: () => Promise<HookSubmitResult<EmployeeStateTaxesList[]> | undefined>\n }\n}\n\n/**\n * Discriminated union returned by {@link useEmployeeStateTaxesForm}. Loading\n * branch carries only `errorHandling`; ready branch carries form data,\n * fields, status, and actions.\n *\n * @public\n */\nexport type UseEmployeeStateTaxesFormResult = HookLoadingResult | UseEmployeeStateTaxesFormReady\n\n/**\n * Headless form hook for updating an employee's state tax withholding answers.\n * The set of questions is driven by the API response per state, so\n * `form.Fields` is an array of state groups with discriminated, render-ready\n * `Field` components rather than a fixed named object.\n *\n * @remarks\n * The state-tax record(s) are created automatically with the employee, so this\n * hook is always in update mode. When the form has no states with submittable\n * answers (e.g. an employee in a no-income-tax state), submit resolves with\n * the existing record list without making a network request.\n *\n * @param props - Hook options.\n * @returns A loading result while data is fetching, or a ready result with\n * form data, fields, status, actions, and error handling.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useEmployeeStateTaxesForm,\n * SDKFormProvider,\n * type UseEmployeeStateTaxesFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function StateTaxesPage({ employeeId }: { employeeId: string }) {\n * const stateTaxes = useEmployeeStateTaxesForm({ employeeId })\n *\n * if (stateTaxes.isLoading) return <div>Loading...</div>\n *\n * return <StateTaxesFormReady stateTaxes={stateTaxes} />\n * }\n *\n * function StateTaxesFormReady({\n * stateTaxes,\n * }: {\n * stateTaxes: UseEmployeeStateTaxesFormReady\n * }) {\n * const handleSubmit = async () => {\n * const result = await stateTaxes.actions.onSubmit()\n * if (result) console.log('Updated state tax records:', result.data)\n * }\n *\n * return (\n * <SDKFormProvider formHookResult={stateTaxes}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void handleSubmit()\n * }}\n * >\n * {stateTaxes.form.Fields.map(group => (\n * <section key={group.state}>\n * <h2>{group.state}</h2>\n * {group.questions.map(question => (\n * <question.Field key={question.questionId} />\n * ))}\n * </section>\n * ))}\n * <button type=\"submit\" disabled={stateTaxes.status.isPending}>\n * Save\n * </button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useEmployeeStateTaxesForm({\n employeeId,\n isAdmin = false,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseEmployeeStateTaxesFormProps): UseEmployeeStateTaxesFormResult {\n const stateTaxesQuery = useEmployeeTaxSetupGetStateTaxes({ employeeUuid: employeeId })\n\n const employeeStateTaxes = useMemo<EmployeeStateTaxesList[]>(\n () => stateTaxesQuery.data?.employeeStateTaxesList ?? [],\n [stateTaxesQuery.data?.employeeStateTaxesList],\n )\n\n const [schema, metadataConfig] = useMemo(\n () => createEmployeeStateTaxesSchema(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n\n const fieldsArray = useMemo(\n () => createStateFields(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n\n const resolvedDefaults = useMemo(\n () => deriveDefaultValues(employeeStateTaxes, isAdmin),\n [employeeStateTaxes, isAdmin],\n )\n\n const formMethods = useForm<EmployeeStateTaxesFormData, unknown, EmployeeStateTaxesFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const { mutateAsync: updateStateTaxes, isPending } = useEmployeeTaxSetupUpdateStateTaxesMutation()\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('EmployeeStateTaxesForm')\n\n const errorHandling = composeErrorHandler([stateTaxesQuery], {\n submitError,\n setSubmitError,\n })\n\n const fieldsMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n\n const onSubmit = async (): Promise<HookSubmitResult<EmployeeStateTaxesList[]> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeStateTaxesList[]> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async data => {\n await baseSubmitHandler(data, async payload => {\n const requestStates = serializeStatesPayload(payload, employeeStateTaxes, isAdmin)\n\n if (requestStates.length === 0) {\n submitResult = { mode: 'update', data: employeeStateTaxes }\n return\n }\n\n const requestBody: EmployeeStateTaxesRequest = { states: requestStates }\n const response = await updateStateTaxes({\n request: { employeeUuid: employeeId, employeeStateTaxesRequest: requestBody },\n })\n\n const updated = response.employeeStateTaxesList\n if (!updated) {\n throw new SDKInternalError('State taxes update did not return an updated record')\n }\n\n submitResult = { mode: 'update', data: updated }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (stateTaxesQuery.isLoading || !stateTaxesQuery.data?.employeeStateTaxesList) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { employeeStateTaxes },\n status: { isPending, mode: 'update' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: fieldsArray,\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n// ── Defaults derivation ────────────────────────────────────────────────\n\nfunction deriveDefaultValues(\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): EmployeeStateTaxesFormData {\n const states: Record<string, Record<string, unknown>> = {}\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const stateValues: Record<string, unknown> = {}\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n const formKey = snakeCaseToCamelCase(question.key)\n const wireValue = question.answers[0]?.value\n stateValues[formKey] = resolveDefaultForQuestion(question, wireValue)\n }\n\n if (Object.keys(stateValues).length > 0) {\n states[stateGroup.state] = stateValues\n }\n }\n\n return { states: states as EmployeeStateTaxesFormData['states'] }\n}\n\nfunction resolveDefaultForQuestion(\n question: EmployeeStateTaxesList['questions'] extends Array<infer Q> | undefined ? Q : never,\n wireValue: string | number | boolean | null | undefined,\n): unknown {\n if (question.key === 'file_new_hire_report') {\n if (wireValue === undefined || wireValue === null) return true\n return wireValue\n }\n\n const variant = getQuestionVariant(question)\n\n switch (variant) {\n case 'date': {\n if (wireValue === undefined || wireValue === null || wireValue === '') return undefined\n if (typeof wireValue === 'string') {\n const trimmed = wireValue.trim()\n if (trimmed === '') return undefined\n const parsed = new Date(trimmed)\n return Number.isNaN(parsed.getTime()) ? undefined : parsed\n }\n return wireValue\n }\n case 'number':\n case 'currency': {\n if (wireValue === undefined || wireValue === null || wireValue === '') return undefined\n const parsed = typeof wireValue === 'number' ? wireValue : Number(wireValue)\n return Number.isNaN(parsed) ? undefined : parsed\n }\n default:\n return wireValue\n }\n}\n\n// ── Submit serialization ───────────────────────────────────────────────\n\ntype SerializedQuestion = {\n key: string\n answers: Array<{\n validFrom: string\n validUpTo: string | null\n value: string | number | boolean\n }>\n}\n\nfunction serializeStatesPayload(\n payload: EmployeeStateTaxesFormOutputs,\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): EmployeeStateTaxesRequestState[] {\n const { states: statesPayload } = payload\n if (Object.keys(statesPayload).length === 0) return []\n\n const result: EmployeeStateTaxesRequestState[] = []\n\n for (const state of employeeStateTaxes) {\n const stateName = state.state\n if (!stateName || state.questions === undefined) continue\n\n const serialized: SerializedQuestion[] = []\n for (const question of state.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n\n const formValue = (statesPayload[stateName] as Record<string, unknown> | undefined)?.[\n snakeCaseToCamelCase(question.key)\n ]\n\n let serializedValue: string | number | boolean\n if (formValue === undefined || formValue === null) {\n serializedValue = ''\n } else if (typeof formValue === 'number' && Number.isNaN(formValue)) {\n serializedValue = ''\n } else if (formValue instanceof Date) {\n if (Number.isNaN(formValue.getTime())) {\n serializedValue = ''\n } else {\n serializedValue = formValue.toISOString().split('T')[0] ?? ''\n }\n } else {\n serializedValue = formValue as string | number | boolean\n }\n\n serialized.push({\n key: question.key,\n answers: [\n {\n validFrom: question.answers[0]?.validFrom ?? DEFAULT_TAX_VALID_FROM,\n validUpTo: question.answers[0]?.validUpTo ?? null,\n value: serializedValue,\n },\n ],\n })\n }\n\n result.push({ state: stateName, questions: serialized })\n }\n\n return result\n}\n\n/**\n * Field metadata for {@link useEmployeeStateTaxesForm}, keyed by full form path.\n *\n * @remarks\n * The set of keys is determined at runtime: one entry per state tax question,\n * keyed as `states.<STATE>.<camelCaseQuestionKey>`. Each entry is a\n * {@link FieldMetadata}, or a {@link FieldMetadataWithOptions} for questions the\n * API exposes as a select or radio. Both the questions and their options are\n * driven by the API response per state, so neither the keys nor which entries\n * carry options are known ahead of time.\n *\n * @public\n */\nexport type EmployeeStateTaxesFieldsMetadata = Record<\n `states.${string}.${string}`,\n FieldMetadata | FieldMetadataWithOptions\n>\n\n/**\n * The array of per-state field groups exposed by\n * {@link useEmployeeStateTaxesForm} on `form.Fields`.\n *\n * @public\n */\nexport type EmployeeStateTaxesFormFields = UseEmployeeStateTaxesFormReady['form']['Fields']\n"],"names":["DEFAULT_TAX_VALID_FROM","useEmployeeStateTaxesForm","employeeId","isAdmin","validationMode","shouldFocusError","stateTaxesQuery","useEmployeeTaxSetupGetStateTaxes","employeeStateTaxes","useMemo","schema","metadataConfig","createEmployeeStateTaxesSchema","fieldsArray","createStateFields","resolvedDefaults","deriveDefaultValues","formMethods","useForm","zodResolver","updateStateTaxes","isPending","useEmployeeTaxSetupUpdateStateTaxesMutation","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","fieldsMetadata","useDeriveFieldsMetadata","onSubmit","submitResult","resolve","data","payload","requestStates","serializeStatesPayload","updated","SDKInternalError","hookFormInternals","useHookFormInternals","createGetFormSubmissionValues","states","stateGroup","stateValues","question","formKey","snakeCaseToCamelCase","wireValue","resolveDefaultForQuestion","getQuestionVariant","trimmed","parsed","statesPayload","result","state","stateName","serialized","formValue","serializedValue"],"mappings":"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"}
1
+ {"version":3,"file":"useEmployeeStateTaxesForm.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/useEmployeeStateTaxesForm.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport type {\n EmployeeStateTaxesRequest,\n States as EmployeeStateTaxesRequestState,\n} from '@gusto/embedded-api/models/components/employeestatetaxesrequest'\nimport { useEmployeeTaxSetupGetStateTaxes } from '@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes'\nimport { useEmployeeTaxSetupUpdateStateTaxesMutation } from '@gusto/embedded-api/react-query/employeeTaxSetupUpdateStateTaxes'\nimport {\n createEmployeeStateTaxesSchema,\n type EmployeeStateTaxesFormData,\n type EmployeeStateTaxesFormOutputs,\n} from './employeeStateTaxesSchema'\nimport type { StateTaxFields } from './fields'\nimport { createStateFields } from './fields'\nimport { getQuestionVariant } from './fieldMapping'\nimport { snakeCaseToCamelCase } from '@/helpers/formattedStrings'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldMetadataWithOptions,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\nconst DEFAULT_TAX_VALID_FROM = '2010-01-01'\n\n/**\n * Options accepted by {@link useEmployeeStateTaxesForm}.\n *\n * @public\n */\nexport interface UseEmployeeStateTaxesFormProps {\n /** The UUID of the employee whose state taxes are being updated. */\n employeeId: string\n /**\n * When `true`, admin-only questions are visible and submitted. When\n * `false`, they are filtered out and the surfaced answer for those\n * questions is preserved unchanged on submit.\n */\n isAdmin?: boolean\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. Defaults to `true`. Set to `false` when composing with other forms. */\n shouldFocusError?: boolean\n}\n\n/**\n * Ready-state return value of {@link useEmployeeStateTaxesForm} — the\n * `isLoading: false` branch of {@link UseEmployeeStateTaxesFormResult}.\n *\n * @public\n */\nexport interface UseEmployeeStateTaxesFormReady extends BaseFormHookReady<\n EmployeeStateTaxesFieldsMetadata,\n EmployeeStateTaxesFormData,\n StateTaxFields\n> {\n /** Current per-state tax records returned by the server. */\n data: {\n employeeStateTaxes: EmployeeStateTaxesList[]\n }\n /** Submission status. `mode` is always `'update'` since state-tax records are created with the employee. */\n status: { isPending: boolean; mode: 'update' }\n /** Form actions. */\n actions: {\n /** Validates and submits the form, resolving to the updated records on success or `undefined` when validation blocked the submit. */\n onSubmit: () => Promise<HookSubmitResult<EmployeeStateTaxesList[]> | undefined>\n }\n}\n\n/**\n * Discriminated union returned by {@link useEmployeeStateTaxesForm}. Loading\n * branch carries only `errorHandling`; ready branch carries form data,\n * fields, status, and actions.\n *\n * @public\n */\nexport type UseEmployeeStateTaxesFormResult = HookLoadingResult | UseEmployeeStateTaxesFormReady\n\n/**\n * Headless form hook for updating an employee's state tax withholding answers.\n * The set of questions is driven by the API response per state, so\n * `form.Fields` is an array of state groups with discriminated, render-ready\n * `Field` components rather than a fixed named object.\n *\n * @remarks\n * The state-tax record(s) are created automatically with the employee, so this\n * hook is always in update mode. When the form has no states with submittable\n * answers (e.g. an employee in a no-income-tax state), submit resolves with\n * the existing record list without making a network request.\n *\n * @param props - Hook options.\n * @returns A loading result while data is fetching, or a ready result with\n * form data, fields, status, actions, and error handling.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useEmployeeStateTaxesForm,\n * SDKFormProvider,\n * type UseEmployeeStateTaxesFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function StateTaxesPage({ employeeId }: { employeeId: string }) {\n * const stateTaxes = useEmployeeStateTaxesForm({ employeeId })\n *\n * if (stateTaxes.isLoading) return <div>Loading...</div>\n *\n * return <StateTaxesFormReady stateTaxes={stateTaxes} />\n * }\n *\n * function StateTaxesFormReady({\n * stateTaxes,\n * }: {\n * stateTaxes: UseEmployeeStateTaxesFormReady\n * }) {\n * const handleSubmit = async () => {\n * const result = await stateTaxes.actions.onSubmit()\n * if (result) console.log('Updated state tax records:', result.data)\n * }\n *\n * return (\n * <SDKFormProvider formHookResult={stateTaxes}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void handleSubmit()\n * }}\n * >\n * {stateTaxes.form.Fields.map(group => (\n * <section key={group.state}>\n * <h2>{group.state}</h2>\n * {group.questions.map(question => (\n * <question.Field key={question.questionId} />\n * ))}\n * </section>\n * ))}\n * <button type=\"submit\" disabled={stateTaxes.status.isPending}>\n * Save\n * </button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useEmployeeStateTaxesForm({\n employeeId,\n isAdmin = false,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseEmployeeStateTaxesFormProps): UseEmployeeStateTaxesFormResult {\n const stateTaxesQuery = useEmployeeTaxSetupGetStateTaxes({ employeeUuid: employeeId })\n\n const employeeStateTaxes = useMemo<EmployeeStateTaxesList[]>(\n () => stateTaxesQuery.data?.employeeStateTaxesList ?? [],\n [stateTaxesQuery.data?.employeeStateTaxesList],\n )\n\n const [schema, metadataConfig] = useMemo(\n () => createEmployeeStateTaxesSchema(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n\n const fieldsArray = useMemo(\n () => createStateFields(employeeStateTaxes, { isAdmin }),\n [employeeStateTaxes, isAdmin],\n )\n\n const resolvedDefaults = useMemo(\n () => deriveDefaultValues(employeeStateTaxes, isAdmin),\n [employeeStateTaxes, isAdmin],\n )\n\n const formMethods = useForm<EmployeeStateTaxesFormData, unknown, EmployeeStateTaxesFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const { mutateAsync: updateStateTaxes, isPending } = useEmployeeTaxSetupUpdateStateTaxesMutation()\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('EmployeeStateTaxesForm')\n\n const errorHandling = composeErrorHandler([stateTaxesQuery], {\n submitError,\n setSubmitError,\n })\n\n const fieldsMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n\n const onSubmit = async (): Promise<HookSubmitResult<EmployeeStateTaxesList[]> | undefined> => {\n let submitResult: HookSubmitResult<EmployeeStateTaxesList[]> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async data => {\n await baseSubmitHandler(data, async payload => {\n const requestStates = serializeStatesPayload(payload, employeeStateTaxes, isAdmin)\n\n if (requestStates.length === 0) {\n submitResult = { mode: 'update', data: employeeStateTaxes }\n return\n }\n\n const requestBody: EmployeeStateTaxesRequest = { states: requestStates }\n const response = await updateStateTaxes({\n request: { employeeUuid: employeeId, employeeStateTaxesRequest: requestBody },\n })\n\n const updated = response.employeeStateTaxesList\n if (!updated) {\n throw new SDKInternalError('State taxes update did not return an updated record')\n }\n\n submitResult = { mode: 'update', data: updated }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (stateTaxesQuery.isLoading || !stateTaxesQuery.data?.employeeStateTaxesList) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { employeeStateTaxes },\n status: { isPending, mode: 'update' as const },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: fieldsArray,\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n// ── Defaults derivation ────────────────────────────────────────────────\n\nfunction deriveDefaultValues(\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): EmployeeStateTaxesFormData {\n const states: Record<string, Record<string, unknown>> = {}\n\n for (const stateGroup of employeeStateTaxes) {\n if (!stateGroup.state || !stateGroup.questions) continue\n\n const stateValues: Record<string, unknown> = {}\n for (const question of stateGroup.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n const formKey = snakeCaseToCamelCase(question.key)\n const wireValue = question.answers[0]?.value\n stateValues[formKey] = resolveDefaultForQuestion(question, wireValue)\n }\n\n if (Object.keys(stateValues).length > 0) {\n states[stateGroup.state] = stateValues\n }\n }\n\n return { states: states as EmployeeStateTaxesFormData['states'] }\n}\n\nfunction resolveDefaultForQuestion(\n question: EmployeeStateTaxesList['questions'] extends Array<infer Q> | undefined ? Q : never,\n wireValue: string | number | boolean | null | undefined,\n): unknown {\n if (question.key === 'file_new_hire_report') {\n if (wireValue === undefined || wireValue === null) return true\n return wireValue\n }\n\n const variant = getQuestionVariant(question)\n\n switch (variant) {\n case 'date': {\n if (wireValue === undefined || wireValue === null || wireValue === '') return undefined\n if (typeof wireValue === 'string') {\n const trimmed = wireValue.trim()\n if (trimmed === '') return undefined\n const parsed = new Date(trimmed)\n return Number.isNaN(parsed.getTime()) ? undefined : parsed\n }\n return wireValue\n }\n case 'number':\n case 'currency': {\n if (wireValue === undefined || wireValue === null || wireValue === '') return undefined\n const parsed = typeof wireValue === 'number' ? wireValue : Number(wireValue)\n return Number.isNaN(parsed) ? undefined : parsed\n }\n default:\n return wireValue\n }\n}\n\n// ── Submit serialization ───────────────────────────────────────────────\n\ntype SerializedQuestion = {\n key: string\n answers: Array<{\n validFrom: string\n validUpTo: string | null\n value: string | number | boolean\n }>\n}\n\nfunction serializeStatesPayload(\n payload: EmployeeStateTaxesFormOutputs,\n employeeStateTaxes: EmployeeStateTaxesList[],\n isAdmin: boolean,\n): EmployeeStateTaxesRequestState[] {\n const { states: statesPayload } = payload\n if (Object.keys(statesPayload).length === 0) return []\n\n const result: EmployeeStateTaxesRequestState[] = []\n\n for (const state of employeeStateTaxes) {\n const stateName = state.state\n if (!stateName || state.questions === undefined) continue\n\n const serialized: SerializedQuestion[] = []\n for (const question of state.questions) {\n if (question.isQuestionForAdminOnly && !isAdmin) continue\n\n const formValue = (statesPayload[stateName] as Record<string, unknown> | undefined)?.[\n snakeCaseToCamelCase(question.key)\n ]\n\n let serializedValue: string | number | boolean\n if (formValue === undefined || formValue === null) {\n serializedValue = ''\n } else if (typeof formValue === 'number' && Number.isNaN(formValue)) {\n serializedValue = ''\n } else if (formValue instanceof Date) {\n if (Number.isNaN(formValue.getTime())) {\n serializedValue = ''\n } else {\n serializedValue = formValue.toISOString().split('T')[0] ?? ''\n }\n } else {\n serializedValue = formValue as string | number | boolean\n }\n\n serialized.push({\n key: question.key,\n answers: [\n {\n validFrom: question.answers[0]?.validFrom ?? DEFAULT_TAX_VALID_FROM,\n validUpTo: question.answers[0]?.validUpTo ?? null,\n value: serializedValue,\n },\n ],\n })\n }\n\n result.push({ state: stateName, questions: serialized })\n }\n\n return result\n}\n\n/**\n * Field metadata for {@link useEmployeeStateTaxesForm}, keyed by full form path.\n *\n * @remarks\n * The set of keys is determined at runtime: one entry per state tax question,\n * keyed as `states.<STATE>.<camelCaseQuestionKey>`. Each entry is a\n * {@link FieldMetadata}, or a {@link FieldMetadataWithOptions} for questions the\n * API exposes as a select or radio. Both the questions and their options are\n * driven by the API response per state, so neither the keys nor which entries\n * carry options are known ahead of time.\n *\n * @public\n */\nexport type EmployeeStateTaxesFieldsMetadata = Record<\n `states.${string}.${string}`,\n FieldMetadata | FieldMetadataWithOptions\n>\n\n/**\n * The array of per-state field groups exposed by\n * {@link useEmployeeStateTaxesForm} on `form.Fields`.\n *\n * @public\n */\nexport type EmployeeStateTaxesFormFields = UseEmployeeStateTaxesFormReady['form']['Fields']\n"],"names":["DEFAULT_TAX_VALID_FROM","useEmployeeStateTaxesForm","employeeId","isAdmin","validationMode","shouldFocusError","stateTaxesQuery","useEmployeeTaxSetupGetStateTaxes","employeeStateTaxes","useMemo","schema","metadataConfig","createEmployeeStateTaxesSchema","fieldsArray","createStateFields","resolvedDefaults","deriveDefaultValues","formMethods","useForm","zodResolver","updateStateTaxes","isPending","useEmployeeTaxSetupUpdateStateTaxesMutation","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","fieldsMetadata","useDeriveFieldsMetadata","onSubmit","submitResult","resolve","data","payload","requestStates","serializeStatesPayload","updated","SDKInternalError","hookFormInternals","useHookFormInternals","createGetFormSubmissionValues","states","stateGroup","stateValues","question","formKey","snakeCaseToCamelCase","wireValue","resolveDefaultForQuestion","getQuestionVariant","trimmed","parsed","statesPayload","result","state","stateName","serialized","formValue","serializedValue"],"mappings":";;;;;;;;;;;;;;;AAkCA,MAAMA,IAAyB;AA2HxB,SAASC,GAA0B;AAAA,EACxC,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,gBAAAC,IAAiB;AAAA,EACjB,kBAAAC,IAAmB;AACrB,GAAoE;AAClE,QAAMC,IAAkBC,EAAiC,EAAE,cAAcL,GAAY,GAE/EM,IAAqBC;AAAA,IACzB,MAAMH,EAAgB,MAAM,0BAA0B,CAAA;AAAA,IACtD,CAACA,EAAgB,MAAM,sBAAsB;AAAA,EAAA,GAGzC,CAACI,GAAQC,CAAc,IAAIF;AAAA,IAC/B,MAAMG,EAA+BJ,GAAoB,EAAE,SAAAL,GAAS;AAAA,IACpE,CAACK,GAAoBL,CAAO;AAAA,EAAA,GAGxBU,IAAcJ;AAAA,IAClB,MAAMK,EAAkBN,GAAoB,EAAE,SAAAL,GAAS;AAAA,IACvD,CAACK,GAAoBL,CAAO;AAAA,EAAA,GAGxBY,IAAmBN;AAAA,IACvB,MAAMO,EAAoBR,GAAoBL,CAAO;AAAA,IACrD,CAACK,GAAoBL,CAAO;AAAA,EAAA,GAGxBc,IAAcC,EAA4E;AAAA,IAC9F,UAAUC,EAAYT,CAAM;AAAA,IAC5B,MAAMN;AAAA,IACN,kBAAAC;AAAA,IACA,eAAeU;AAAA,IACf,QAAQA;AAAA,IACR,cAAc,EAAE,iBAAiB,GAAA;AAAA,EAAK,CACvC,GAEK,EAAE,aAAaK,GAAkB,WAAAC,EAAA,IAAcC,EAAA,GAE/C;AAAA,IACJ,mBAAAC;AAAA,IACA,OAAOC;AAAA,IACP,UAAUC;AAAA,EAAA,IACRC,EAAc,wBAAwB,GAEpCC,IAAgBC,EAAoB,CAACtB,CAAe,GAAG;AAAA,IAC3D,aAAAkB;AAAA,IACA,gBAAAC;AAAA,EAAA,CACD,GAEKI,IAAiBC,EAAwBnB,GAAgBM,EAAY,OAAO,GAE5Ec,IAAW,YAA6E;AAC5F,QAAIC;AAEJ,iBAAM,IAAI,QAAc,CAAAC,MAAW;AACjC,MAAKhB,EAAY;AAAA,QACf,OAAMiB,MAAQ;AACZ,gBAAMX,EAAkBW,GAAM,OAAMC,MAAW;AAC7C,kBAAMC,IAAgBC,EAAuBF,GAAS3B,GAAoBL,CAAO;AAEjF,gBAAIiC,EAAc,WAAW,GAAG;AAC9B,cAAAJ,IAAe,EAAE,MAAM,UAAU,MAAMxB,EAAA;AACvC;AAAA,YACF;AAOA,kBAAM8B,KAJW,MAAMlB,EAAiB;AAAA,cACtC,SAAS,EAAE,cAAclB,GAAY,2BAFQ,EAAE,QAAQkC,EAAA,EAES;AAAA,YAAY,CAC7E,GAEwB;AACzB,gBAAI,CAACE;AACH,oBAAM,IAAIC,EAAiB,qDAAqD;AAGlF,YAAAP,IAAe,EAAE,MAAM,UAAU,MAAMM,EAAA;AAAA,UACzC,CAAC,GACDL,EAAA;AAAA,QACF;AAAA,QACA,MAAM;AACJ,UAAAA,EAAA;AAAA,QACF;AAAA,MAAA,EACF;AAAA,IACF,CAAC,GAEMD;AAAA,EACT,GAEMQ,IAAoBC,EAAqBxB,CAAW;AAE1D,SAAIX,EAAgB,aAAa,CAACA,EAAgB,MAAM,yBAC/C,EAAE,WAAW,IAAe,eAAAqB,EAAA,IAG9B;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,oBAAAnB,EAAA;AAAA,IACR,QAAQ,EAAE,WAAAa,GAAW,MAAM,SAAA;AAAA,IAC3B,SAAS,EAAE,UAAAU,EAAA;AAAA,IACX,eAAAJ;AAAA,IACA,MAAM;AAAA,MACJ,QAAQd;AAAA,MACR,gBAAAgB;AAAA,MACA,mBAAAW;AAAA,MACA,yBAAyBE,EAA8BzB,GAAaP,CAAM;AAAA,IAAA;AAAA,EAC5E;AAEJ;AAIA,SAASM,EACPR,GACAL,GAC4B;AAC5B,QAAMwC,IAAkD,CAAA;AAExD,aAAWC,KAAcpC,GAAoB;AAC3C,QAAI,CAACoC,EAAW,SAAS,CAACA,EAAW,UAAW;AAEhD,UAAMC,IAAuC,CAAA;AAC7C,eAAWC,KAAYF,EAAW,WAAW;AAC3C,UAAIE,EAAS,0BAA0B,CAAC3C,EAAS;AACjD,YAAM4C,IAAUC,EAAqBF,EAAS,GAAG,GAC3CG,IAAYH,EAAS,QAAQ,CAAC,GAAG;AACvC,MAAAD,EAAYE,CAAO,IAAIG,EAA0BJ,GAAUG,CAAS;AAAA,IACtE;AAEA,IAAI,OAAO,KAAKJ,CAAW,EAAE,SAAS,MACpCF,EAAOC,EAAW,KAAK,IAAIC;AAAA,EAE/B;AAEA,SAAO,EAAE,QAAAF,EAAA;AACX;AAEA,SAASO,EACPJ,GACAG,GACS;AACT,MAAIH,EAAS,QAAQ;AACnB,WAA+BG,KAA2B;AAM5D,UAFgBE,EAAmBL,CAAQ,GAEnC;AAAA,IACN,KAAK,QAAQ;AACX,UAA+BG,KAAc,QAAQA,MAAc,GAAI;AACvE,UAAI,OAAOA,KAAc,UAAU;AACjC,cAAMG,IAAUH,EAAU,KAAA;AAC1B,YAAIG,MAAY,GAAI;AACpB,cAAMC,IAAS,IAAI,KAAKD,CAAO;AAC/B,eAAO,OAAO,MAAMC,EAAO,QAAA,CAAS,IAAI,SAAYA;AAAA,MACtD;AACA,aAAOJ;AAAA,IACT;AAAA,IACA,KAAK;AAAA,IACL,KAAK,YAAY;AACf,UAA+BA,KAAc,QAAQA,MAAc,GAAI;AACvE,YAAMI,IAAS,OAAOJ,KAAc,WAAWA,IAAY,OAAOA,CAAS;AAC3E,aAAO,OAAO,MAAMI,CAAM,IAAI,SAAYA;AAAA,IAC5C;AAAA,IACA;AACE,aAAOJ;AAAA,EAAA;AAEb;AAaA,SAASZ,EACPF,GACA3B,GACAL,GACkC;AAClC,QAAM,EAAE,QAAQmD,EAAA,IAAkBnB;AAClC,MAAI,OAAO,KAAKmB,CAAa,EAAE,WAAW,UAAU,CAAA;AAEpD,QAAMC,IAA2C,CAAA;AAEjD,aAAWC,KAAShD,GAAoB;AACtC,UAAMiD,IAAYD,EAAM;AACxB,QAAI,CAACC,KAAaD,EAAM,cAAc,OAAW;AAEjD,UAAME,IAAmC,CAAA;AACzC,eAAWZ,KAAYU,EAAM,WAAW;AACtC,UAAIV,EAAS,0BAA0B,CAAC3C,EAAS;AAEjD,YAAMwD,IAAaL,EAAcG,CAAS,IACxCT,EAAqBF,EAAS,GAAG,CACnC;AAEA,UAAIc;AACJ,MAA+BD,KAAc,QAElC,OAAOA,KAAc,YAAY,OAAO,MAAMA,CAAS,IADhEC,IAAkB,KAGTD,aAAqB,OAC1B,OAAO,MAAMA,EAAU,QAAA,CAAS,IAClCC,IAAkB,KAElBA,IAAkBD,EAAU,YAAA,EAAc,MAAM,GAAG,EAAE,CAAC,KAAK,KAG7DC,IAAkBD,GAGpBD,EAAW,KAAK;AAAA,QACd,KAAKZ,EAAS;AAAA,QACd,SAAS;AAAA,UACP;AAAA,YACE,WAAWA,EAAS,QAAQ,CAAC,GAAG,aAAa9C;AAAA,YAC7C,WAAW8C,EAAS,QAAQ,CAAC,GAAG,aAAa;AAAA,YAC7C,OAAOc;AAAA,UAAA;AAAA,QACT;AAAA,MACF,CACD;AAAA,IACH;AAEA,IAAAL,EAAO,KAAK,EAAE,OAAOE,GAAW,WAAWC,GAAY;AAAA,EACzD;AAEA,SAAOH;AACT;"}
@@ -1,4 +1,4 @@
1
- import { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist';
1
+ import { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist';
2
2
  import { BaseHookReady, HookLoadingResult } from '../../../../../partner-hook-utils/types';
3
3
  /** @internal */
4
4
  export interface UseStateTaxesSummaryParams {
@@ -1,4 +1,4 @@
1
- import { useEmployeeTaxSetupGetStateTaxes as i } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeTaxSetupGetStateTaxes";
1
+ import { useEmployeeTaxSetupGetStateTaxes as i } from "@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes";
2
2
  import { composeErrorHandler as o } from "../../../../../partner-hook-utils/composeErrorHandler.js";
3
3
  function m({
4
4
  employeeId: s
@@ -1 +1 @@
1
- {"version":3,"file":"useStateTaxesSummary.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.tsx"],"sourcesContent":["import { useEmployeeTaxSetupGetStateTaxes } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeTaxSetupGetStateTaxes'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api-v-2026-02-01/models/components/employeestatetaxeslist'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/** @internal */\nexport interface UseStateTaxesSummaryParams {\n employeeId: string\n}\n\ntype UseStateTaxesSummaryReady = BaseHookReady<\n { employeeStateTaxesList: EmployeeStateTaxesList[] },\n { isFetching: boolean; isPending: boolean }\n>\n\n/** @internal */\nexport type UseStateTaxesSummaryResult = HookLoadingResult | UseStateTaxesSummaryReady\n\n/** @internal */\nexport function useStateTaxesSummary({\n employeeId,\n}: UseStateTaxesSummaryParams): UseStateTaxesSummaryResult {\n const stateTaxesQuery = useEmployeeTaxSetupGetStateTaxes(\n { employeeUuid: employeeId },\n { staleTime: Infinity },\n )\n\n const errorHandling = composeErrorHandler([stateTaxesQuery])\n\n const employeeStateTaxesList = stateTaxesQuery.data?.employeeStateTaxesList\n\n if (stateTaxesQuery.isLoading || !employeeStateTaxesList) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { employeeStateTaxesList },\n status: {\n isFetching: stateTaxesQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useStateTaxesSummary","employeeId","stateTaxesQuery","useEmployeeTaxSetupGetStateTaxes","errorHandling","composeErrorHandler","employeeStateTaxesList"],"mappings":";;AAmBO,SAASA,EAAqB;AAAA,EACnC,YAAAC;AACF,GAA2D;AACzD,QAAMC,IAAkBC;AAAA,IACtB,EAAE,cAAcF,EAAA;AAAA,IAChB,EAAE,WAAW,MAAA;AAAA,EAAS,GAGlBG,IAAgBC,EAAoB,CAACH,CAAe,CAAC,GAErDI,IAAyBJ,EAAgB,MAAM;AAErD,SAAIA,EAAgB,aAAa,CAACI,IACzB,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,wBAAAE,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYJ,EAAgB;AAAA,MAC5B,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useStateTaxesSummary.js","sources":["../../../../../../src/components/Employee/StateTaxes/shared/useStateTaxesSummary/useStateTaxesSummary.tsx"],"sourcesContent":["import { useEmployeeTaxSetupGetStateTaxes } from '@gusto/embedded-api/react-query/employeeTaxSetupGetStateTaxes'\nimport type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/** @internal */\nexport interface UseStateTaxesSummaryParams {\n employeeId: string\n}\n\ntype UseStateTaxesSummaryReady = BaseHookReady<\n { employeeStateTaxesList: EmployeeStateTaxesList[] },\n { isFetching: boolean; isPending: boolean }\n>\n\n/** @internal */\nexport type UseStateTaxesSummaryResult = HookLoadingResult | UseStateTaxesSummaryReady\n\n/** @internal */\nexport function useStateTaxesSummary({\n employeeId,\n}: UseStateTaxesSummaryParams): UseStateTaxesSummaryResult {\n const stateTaxesQuery = useEmployeeTaxSetupGetStateTaxes(\n { employeeUuid: employeeId },\n { staleTime: Infinity },\n )\n\n const errorHandling = composeErrorHandler([stateTaxesQuery])\n\n const employeeStateTaxesList = stateTaxesQuery.data?.employeeStateTaxesList\n\n if (stateTaxesQuery.isLoading || !employeeStateTaxesList) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { employeeStateTaxesList },\n status: {\n isFetching: stateTaxesQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useStateTaxesSummary","employeeId","stateTaxesQuery","useEmployeeTaxSetupGetStateTaxes","errorHandling","composeErrorHandler","employeeStateTaxesList"],"mappings":";;AAmBO,SAASA,EAAqB;AAAA,EACnC,YAAAC;AACF,GAA2D;AACzD,QAAMC,IAAkBC;AAAA,IACtB,EAAE,cAAcF,EAAA;AAAA,IAChB,EAAE,WAAW,MAAA;AAAA,EAAS,GAGlBG,IAAgBC,EAAoB,CAACH,CAAe,CAAC,GAErDI,IAAyBJ,EAAgB,MAAM;AAErD,SAAIA,EAAgB,aAAa,CAACI,IACzB,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,wBAAAE,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYJ,EAAgB;AAAA,MAC5B,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}
@@ -1,14 +1,14 @@
1
1
  import { jsx as y } from "react/jsx-runtime";
2
2
  import { useQueryClient as S } from "@tanstack/react-query";
3
- import { useEmployeesGetSuspense as Y } from "@gusto/embedded-api-v-2026-02-01/react-query/employeesGet";
4
- import { useEmployeeEmploymentsGetTerminationsSuspense as q, invalidateAllEmployeeEmploymentsGetTerminations as I } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsGetTerminations";
5
- import { useEmployeeEmploymentsCreateTerminationMutation as b } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsCreateTermination";
6
- import { useEmployeeEmploymentsUpdateTerminationMutation as B } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsUpdateTermination";
7
- import { usePayrollsCreateOffCycleMutation as G } from "@gusto/embedded-api-v-2026-02-01/react-query/payrollsCreateOffCycle";
8
- import { usePaySchedulesGetUnprocessedTerminationPeriods as k, invalidateAllPaySchedulesGetUnprocessedTerminationPeriods as x } from "@gusto/embedded-api-v-2026-02-01/react-query/paySchedulesGetUnprocessedTerminationPeriods";
9
- import { invalidateAllPayrollsList as W } from "@gusto/embedded-api-v-2026-02-01/react-query/payrollsList";
10
- import { OffCycleReason as F } from "@gusto/embedded-api-v-2026-02-01/models/operations/postv1companiescompanyidpayrolls";
11
- import { RFCDate as p } from "@gusto/embedded-api-v-2026-02-01/types/rfcdate";
3
+ import { useEmployeesGetSuspense as Y } from "@gusto/embedded-api/react-query/employeesGet";
4
+ import { useEmployeeEmploymentsGetTerminationsSuspense as q, invalidateAllEmployeeEmploymentsGetTerminations as I } from "@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations";
5
+ import { useEmployeeEmploymentsCreateTerminationMutation as b } from "@gusto/embedded-api/react-query/employeeEmploymentsCreateTermination";
6
+ import { useEmployeeEmploymentsUpdateTerminationMutation as B } from "@gusto/embedded-api/react-query/employeeEmploymentsUpdateTermination";
7
+ import { usePayrollsCreateOffCycleMutation as G } from "@gusto/embedded-api/react-query/payrollsCreateOffCycle";
8
+ import { usePaySchedulesGetUnprocessedTerminationPeriods as k, invalidateAllPaySchedulesGetUnprocessedTerminationPeriods as x } from "@gusto/embedded-api/react-query/paySchedulesGetUnprocessedTerminationPeriods";
9
+ import { invalidateAllPayrollsList as W } from "@gusto/embedded-api/react-query/payrollsList";
10
+ import { OffCycleReason as F } from "@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls";
11
+ import { RFCDate as p } from "@gusto/embedded-api/types/rfcdate";
12
12
  import { TerminateEmployeePresentation as H } from "./TerminateEmployeePresentation.js";
13
13
  import { BaseComponent as j } from "../../../Base/Base.js";
14
14
  import { useBase as Q } from "../../../Base/useBase.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TerminateEmployee.js","sources":["../../../../../src/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.tsx"],"sourcesContent":["import { useQueryClient } from '@tanstack/react-query'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api-v-2026-02-01/react-query/employeesGet'\nimport {\n useEmployeeEmploymentsGetTerminationsSuspense,\n invalidateAllEmployeeEmploymentsGetTerminations,\n} from '@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsGetTerminations'\nimport { useEmployeeEmploymentsCreateTerminationMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsCreateTermination'\nimport { useEmployeeEmploymentsUpdateTerminationMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsUpdateTermination'\nimport { usePayrollsCreateOffCycleMutation } from '@gusto/embedded-api-v-2026-02-01/react-query/payrollsCreateOffCycle'\nimport {\n usePaySchedulesGetUnprocessedTerminationPeriods,\n invalidateAllPaySchedulesGetUnprocessedTerminationPeriods,\n} from '@gusto/embedded-api-v-2026-02-01/react-query/paySchedulesGetUnprocessedTerminationPeriods'\nimport { invalidateAllPayrollsList } from '@gusto/embedded-api-v-2026-02-01/react-query/payrollsList'\nimport { OffCycleReason } from '@gusto/embedded-api-v-2026-02-01/models/operations/postv1companiescompanyidpayrolls'\nimport { RFCDate } from '@gusto/embedded-api-v-2026-02-01/types/rfcdate'\nimport type { PayrollOption } from '../types'\nimport { TerminateEmployeePresentation } from './TerminateEmployeePresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\n/**\n * Props for {@link TerminateEmployee}.\n *\n * @public\n */\nexport interface TerminateEmployeeProps extends BaseComponentInterface<'Employee.Terminations.TerminateEmployee'> {\n /** The employee identifier to terminate. */\n employeeId: string\n /** The associated company identifier. */\n companyId: string\n}\n\n/**\n * Form values collected by {@link TerminateEmployee}.\n *\n * @public\n */\nexport interface TerminateEmployeeFormData {\n /** The effective date of the termination — the employee's last day of work. */\n lastDayOfWork: Date\n /** How to process the employee's final paycheck. */\n payrollOption: PayrollOption\n}\n\n/**\n * Standalone form for capturing an employee's termination details — last day of work and how to process final payroll.\n *\n * @remarks\n * The main termination form used inside {@link TerminationFlow}. Detects existing\n * terminations and pre-populates for editing when one is active, or routes to\n * the summary view (via the `employee/termination/viewSummary` event) when the\n * employee is already terminated.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/termination/created` | Fired when a new termination is created | `{ employeeId: string, effectiveDate: string, payrollOption: PayrollOption }` |\n * | `employee/termination/updated` | Fired when an existing termination is updated | `{ employeeId: string, effectiveDate: string, payrollOption: PayrollOption }` |\n * | `employee/termination/done` | Fired when the termination form is completed | `{ employeeId: string, effectiveDate: string, payrollOption: PayrollOption, payrollUuid?: string }` |\n * | `employee/termination/viewSummary` | Fired when redirecting to view an existing termination | `{ employeeId: string, effectiveDate: string }` |\n * | `employee/termination/payrollCreated` | Fired after a dismissal-payroll period was successfully created | `{ payrolls: PayrollUnprocessed[] }` |\n * | `employee/termination/payrollFailed` | Fired if creating a dismissal payroll fails | `{ employeeId: string, error: unknown }` |\n * | `CANCEL` | Fired when the user clicks Cancel | — |\n *\n * @param props - See {@link TerminateEmployeeProps}.\n * @returns The termination form.\n * @public\n * @group Block components\n *\n * @example\n * ```tsx\n * import { EmployeeManagement } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <EmployeeManagement.TerminateEmployee\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * employeeId=\"4b3f930f-82cd-48a8-b797-798686e12e5e\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function TerminateEmployee(props: TerminateEmployeeProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, companyId, dictionary }: TerminateEmployeeProps) => {\n useComponentDictionary('Employee.Terminations.TerminateEmployee', dictionary)\n useI18n('Employee.Terminations.TerminateEmployee')\n\n const queryClient = useQueryClient()\n const { onEvent, baseSubmitHandler } = useBase()\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n const { data: terminationsData } = useEmployeeEmploymentsGetTerminationsSuspense({ employeeId })\n\n const { mutateAsync: createTermination, isPending: isCreatingTermination } =\n useEmployeeEmploymentsCreateTerminationMutation()\n\n const { mutateAsync: updateTermination, isPending: isUpdatingTermination } =\n useEmployeeEmploymentsUpdateTerminationMutation()\n\n const { mutateAsync: createOffCyclePayroll, isPending: isCreatingPayroll } =\n usePayrollsCreateOffCycleMutation()\n\n const { refetch: fetchTerminationPeriods } = usePaySchedulesGetUnprocessedTerminationPeriods(\n { companyId },\n { enabled: false },\n )\n\n // If employee is already terminated, redirect to summary with existing termination data\n // Don't pass payrollOption to avoid showing the success alert\n if (employee?.terminated && terminationsData.terminations?.[0]) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_VIEW_SUMMARY, {\n employeeId,\n effectiveDate: terminationsData.terminations[0].effectiveDate!,\n termination: terminationsData.terminations[0],\n })\n return null\n }\n\n const employeeName = firstLastName({\n first_name: employee?.firstName,\n last_name: employee?.lastName,\n })\n\n const existingTermination = terminationsData.terminations?.[0]\n\n const handleSubmit = async (formData: TerminateEmployeeFormData) => {\n const { lastDayOfWork, payrollOption } = formData\n const effectiveDate = lastDayOfWork.toISOString().split('T')[0]!\n\n await baseSubmitHandler({ effectiveDate, payrollOption }, async () => {\n const runTerminationPayroll = payrollOption === 'dismissalPayroll'\n\n const result = existingTermination\n ? await updateTermination({\n request: {\n employeeId,\n requestBody: {\n version: existingTermination.version!,\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n : await createTermination({\n request: {\n employeeId,\n requestBody: {\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n\n await invalidateAllEmployeeEmploymentsGetTerminations(queryClient)\n\n let firstPayrollUuid: string | undefined\n\n if (runTerminationPayroll) {\n try {\n const { data: terminationPeriodsData } = await fetchTerminationPeriods()\n\n const employeePeriods =\n terminationPeriodsData?.unprocessedTerminationPayPeriods?.filter(\n period => period.employeeUuid === employeeId,\n ) ?? []\n\n const createdPayrolls = []\n\n for (const terminationPeriod of employeePeriods) {\n if (terminationPeriod.startDate && terminationPeriod.endDate) {\n const payrollResult = await createOffCyclePayroll({\n request: {\n companyId,\n requestBody: {\n offCycle: true,\n offCycleReason: OffCycleReason.DismissedEmployee,\n startDate: new RFCDate(terminationPeriod.startDate),\n endDate: new RFCDate(terminationPeriod.endDate),\n employeeUuids: [employeeId],\n checkDate: terminationPeriod.checkDate\n ? new RFCDate(terminationPeriod.checkDate)\n : undefined,\n },\n },\n })\n\n if (payrollResult.payrollUnprocessed) {\n createdPayrolls.push(payrollResult.payrollUnprocessed)\n }\n }\n }\n\n if (createdPayrolls.length > 0) {\n firstPayrollUuid = createdPayrolls[0]?.payrollUuid ?? createdPayrolls[0]?.uuid\n\n await invalidateAllPayrollsList(queryClient)\n await invalidateAllPaySchedulesGetUnprocessedTerminationPeriods(queryClient)\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_CREATED, {\n payrolls: createdPayrolls,\n })\n }\n } catch (payrollError) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_FAILED, {\n error: payrollError,\n employeeId,\n })\n }\n }\n\n const eventType = existingTermination\n ? componentEvents.EMPLOYEE_TERMINATION_UPDATED\n : componentEvents.EMPLOYEE_TERMINATION_CREATED\n\n onEvent(eventType, {\n termination: result.termination,\n payrollOption,\n runTerminationPayroll,\n })\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_DONE, {\n employeeId,\n effectiveDate,\n payrollOption,\n payrollUuid: firstPayrollUuid,\n termination: result.termination,\n ...(payrollOption === 'anotherWay' && { manualHandling: true }),\n })\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const isPending = isCreatingTermination || isUpdatingTermination || isCreatingPayroll\n\n return (\n <TerminateEmployeePresentation\n employeeName={employeeName}\n existingTermination={existingTermination}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n isLoading={isPending}\n />\n )\n}\n"],"names":["TerminateEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","dictionary","useComponentDictionary","useI18n","queryClient","useQueryClient","onEvent","baseSubmitHandler","useBase","employee","useEmployeesGetSuspense","terminationsData","useEmployeeEmploymentsGetTerminationsSuspense","createTermination","isCreatingTermination","useEmployeeEmploymentsCreateTerminationMutation","updateTermination","isUpdatingTermination","useEmployeeEmploymentsUpdateTerminationMutation","createOffCyclePayroll","isCreatingPayroll","usePayrollsCreateOffCycleMutation","fetchTerminationPeriods","usePaySchedulesGetUnprocessedTerminationPeriods","componentEvents","employeeName","firstLastName","existingTermination","TerminateEmployeePresentation","formData","lastDayOfWork","payrollOption","effectiveDate","runTerminationPayroll","result","invalidateAllEmployeeEmploymentsGetTerminations","firstPayrollUuid","terminationPeriodsData","employeePeriods","period","createdPayrolls","terminationPeriod","payrollResult","OffCycleReason","RFCDate","invalidateAllPayrollsList","invalidateAllPaySchedulesGetUnprocessedTerminationPeriods","payrollError","eventType"],"mappings":"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"}
1
+ {"version":3,"file":"TerminateEmployee.js","sources":["../../../../../src/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.tsx"],"sourcesContent":["import { useQueryClient } from '@tanstack/react-query'\nimport { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport {\n useEmployeeEmploymentsGetTerminationsSuspense,\n invalidateAllEmployeeEmploymentsGetTerminations,\n} from '@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations'\nimport { useEmployeeEmploymentsCreateTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsCreateTermination'\nimport { useEmployeeEmploymentsUpdateTerminationMutation } from '@gusto/embedded-api/react-query/employeeEmploymentsUpdateTermination'\nimport { usePayrollsCreateOffCycleMutation } from '@gusto/embedded-api/react-query/payrollsCreateOffCycle'\nimport {\n usePaySchedulesGetUnprocessedTerminationPeriods,\n invalidateAllPaySchedulesGetUnprocessedTerminationPeriods,\n} from '@gusto/embedded-api/react-query/paySchedulesGetUnprocessedTerminationPeriods'\nimport { invalidateAllPayrollsList } from '@gusto/embedded-api/react-query/payrollsList'\nimport { OffCycleReason } from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport type { PayrollOption } from '../types'\nimport { TerminateEmployeePresentation } from './TerminateEmployeePresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\n/**\n * Props for {@link TerminateEmployee}.\n *\n * @public\n */\nexport interface TerminateEmployeeProps extends BaseComponentInterface<'Employee.Terminations.TerminateEmployee'> {\n /** The employee identifier to terminate. */\n employeeId: string\n /** The associated company identifier. */\n companyId: string\n}\n\n/**\n * Form values collected by {@link TerminateEmployee}.\n *\n * @public\n */\nexport interface TerminateEmployeeFormData {\n /** The effective date of the termination — the employee's last day of work. */\n lastDayOfWork: Date\n /** How to process the employee's final paycheck. */\n payrollOption: PayrollOption\n}\n\n/**\n * Standalone form for capturing an employee's termination details — last day of work and how to process final payroll.\n *\n * @remarks\n * The main termination form used inside {@link TerminationFlow}. Detects existing\n * terminations and pre-populates for editing when one is active, or routes to\n * the summary view (via the `employee/termination/viewSummary` event) when the\n * employee is already terminated.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `employee/termination/created` | Fired when a new termination is created | `{ employeeId: string, effectiveDate: string, payrollOption: PayrollOption }` |\n * | `employee/termination/updated` | Fired when an existing termination is updated | `{ employeeId: string, effectiveDate: string, payrollOption: PayrollOption }` |\n * | `employee/termination/done` | Fired when the termination form is completed | `{ employeeId: string, effectiveDate: string, payrollOption: PayrollOption, payrollUuid?: string }` |\n * | `employee/termination/viewSummary` | Fired when redirecting to view an existing termination | `{ employeeId: string, effectiveDate: string }` |\n * | `employee/termination/payrollCreated` | Fired after a dismissal-payroll period was successfully created | `{ payrolls: PayrollUnprocessed[] }` |\n * | `employee/termination/payrollFailed` | Fired if creating a dismissal payroll fails | `{ employeeId: string, error: unknown }` |\n * | `CANCEL` | Fired when the user clicks Cancel | — |\n *\n * @param props - See {@link TerminateEmployeeProps}.\n * @returns The termination form.\n * @public\n * @group Block components\n *\n * @example\n * ```tsx\n * import { EmployeeManagement } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <EmployeeManagement.TerminateEmployee\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * employeeId=\"4b3f930f-82cd-48a8-b797-798686e12e5e\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function TerminateEmployee(props: TerminateEmployeeProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ employeeId, companyId, dictionary }: TerminateEmployeeProps) => {\n useComponentDictionary('Employee.Terminations.TerminateEmployee', dictionary)\n useI18n('Employee.Terminations.TerminateEmployee')\n\n const queryClient = useQueryClient()\n const { onEvent, baseSubmitHandler } = useBase()\n\n const {\n data: { employee },\n } = useEmployeesGetSuspense({ employeeId })\n\n const { data: terminationsData } = useEmployeeEmploymentsGetTerminationsSuspense({ employeeId })\n\n const { mutateAsync: createTermination, isPending: isCreatingTermination } =\n useEmployeeEmploymentsCreateTerminationMutation()\n\n const { mutateAsync: updateTermination, isPending: isUpdatingTermination } =\n useEmployeeEmploymentsUpdateTerminationMutation()\n\n const { mutateAsync: createOffCyclePayroll, isPending: isCreatingPayroll } =\n usePayrollsCreateOffCycleMutation()\n\n const { refetch: fetchTerminationPeriods } = usePaySchedulesGetUnprocessedTerminationPeriods(\n { companyId },\n { enabled: false },\n )\n\n // If employee is already terminated, redirect to summary with existing termination data\n // Don't pass payrollOption to avoid showing the success alert\n if (employee?.terminated && terminationsData.terminations?.[0]) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_VIEW_SUMMARY, {\n employeeId,\n effectiveDate: terminationsData.terminations[0].effectiveDate!,\n termination: terminationsData.terminations[0],\n })\n return null\n }\n\n const employeeName = firstLastName({\n first_name: employee?.firstName,\n last_name: employee?.lastName,\n })\n\n const existingTermination = terminationsData.terminations?.[0]\n\n const handleSubmit = async (formData: TerminateEmployeeFormData) => {\n const { lastDayOfWork, payrollOption } = formData\n const effectiveDate = lastDayOfWork.toISOString().split('T')[0]!\n\n await baseSubmitHandler({ effectiveDate, payrollOption }, async () => {\n const runTerminationPayroll = payrollOption === 'dismissalPayroll'\n\n const result = existingTermination\n ? await updateTermination({\n request: {\n employeeId,\n requestBody: {\n version: existingTermination.version!,\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n : await createTermination({\n request: {\n employeeId,\n requestBody: {\n effectiveDate,\n runTerminationPayroll,\n },\n },\n })\n\n await invalidateAllEmployeeEmploymentsGetTerminations(queryClient)\n\n let firstPayrollUuid: string | undefined\n\n if (runTerminationPayroll) {\n try {\n const { data: terminationPeriodsData } = await fetchTerminationPeriods()\n\n const employeePeriods =\n terminationPeriodsData?.unprocessedTerminationPayPeriods?.filter(\n period => period.employeeUuid === employeeId,\n ) ?? []\n\n const createdPayrolls = []\n\n for (const terminationPeriod of employeePeriods) {\n if (terminationPeriod.startDate && terminationPeriod.endDate) {\n const payrollResult = await createOffCyclePayroll({\n request: {\n companyId,\n requestBody: {\n offCycle: true,\n offCycleReason: OffCycleReason.DismissedEmployee,\n startDate: new RFCDate(terminationPeriod.startDate),\n endDate: new RFCDate(terminationPeriod.endDate),\n employeeUuids: [employeeId],\n checkDate: terminationPeriod.checkDate\n ? new RFCDate(terminationPeriod.checkDate)\n : undefined,\n },\n },\n })\n\n if (payrollResult.payrollUnprocessed) {\n createdPayrolls.push(payrollResult.payrollUnprocessed)\n }\n }\n }\n\n if (createdPayrolls.length > 0) {\n firstPayrollUuid = createdPayrolls[0]?.payrollUuid ?? createdPayrolls[0]?.uuid\n\n await invalidateAllPayrollsList(queryClient)\n await invalidateAllPaySchedulesGetUnprocessedTerminationPeriods(queryClient)\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_CREATED, {\n payrolls: createdPayrolls,\n })\n }\n } catch (payrollError) {\n onEvent(componentEvents.EMPLOYEE_TERMINATION_PAYROLL_FAILED, {\n error: payrollError,\n employeeId,\n })\n }\n }\n\n const eventType = existingTermination\n ? componentEvents.EMPLOYEE_TERMINATION_UPDATED\n : componentEvents.EMPLOYEE_TERMINATION_CREATED\n\n onEvent(eventType, {\n termination: result.termination,\n payrollOption,\n runTerminationPayroll,\n })\n\n onEvent(componentEvents.EMPLOYEE_TERMINATION_DONE, {\n employeeId,\n effectiveDate,\n payrollOption,\n payrollUuid: firstPayrollUuid,\n termination: result.termination,\n ...(payrollOption === 'anotherWay' && { manualHandling: true }),\n })\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n const isPending = isCreatingTermination || isUpdatingTermination || isCreatingPayroll\n\n return (\n <TerminateEmployeePresentation\n employeeName={employeeName}\n existingTermination={existingTermination}\n onSubmit={handleSubmit}\n onCancel={handleCancel}\n isLoading={isPending}\n />\n )\n}\n"],"names":["TerminateEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","dictionary","useComponentDictionary","useI18n","queryClient","useQueryClient","onEvent","baseSubmitHandler","useBase","employee","useEmployeesGetSuspense","terminationsData","useEmployeeEmploymentsGetTerminationsSuspense","createTermination","isCreatingTermination","useEmployeeEmploymentsCreateTerminationMutation","updateTermination","isUpdatingTermination","useEmployeeEmploymentsUpdateTerminationMutation","createOffCyclePayroll","isCreatingPayroll","usePayrollsCreateOffCycleMutation","fetchTerminationPeriods","usePaySchedulesGetUnprocessedTerminationPeriods","componentEvents","employeeName","firstLastName","existingTermination","TerminateEmployeePresentation","formData","lastDayOfWork","payrollOption","effectiveDate","runTerminationPayroll","result","invalidateAllEmployeeEmploymentsGetTerminations","firstPayrollUuid","terminationPeriodsData","employeePeriods","period","createdPayrolls","terminationPeriod","payrollResult","OffCycleReason","RFCDate","invalidateAllPayrollsList","invalidateAllPaySchedulesGetUnprocessedTerminationPeriods","payrollError","eventType"],"mappings":";;;;;;;;;;;;;;;;;AAyFO,SAASA,GAAkBC,GAA+B;AAC/D,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEA,MAAMG,IAAO,CAAC,EAAE,YAAAC,GAAY,WAAAC,GAAW,YAAAC,QAAyC;AAC9E,EAAAC,EAAuB,2CAA2CD,CAAU,GAC5EE,EAAQ,yCAAyC;AAEjD,QAAMC,IAAcC,EAAA,GACd,EAAE,SAAAC,GAAS,mBAAAC,EAAA,IAAsBC,EAAA,GAEjC;AAAA,IACJ,MAAM,EAAE,UAAAC,EAAA;AAAA,EAAS,IACfC,EAAwB,EAAE,YAAAX,GAAY,GAEpC,EAAE,MAAMY,EAAA,IAAqBC,EAA8C,EAAE,YAAAb,GAAY,GAEzF,EAAE,aAAac,GAAmB,WAAWC,EAAA,IACjDC,EAAA,GAEI,EAAE,aAAaC,GAAmB,WAAWC,EAAA,IACjDC,EAAA,GAEI,EAAE,aAAaC,GAAuB,WAAWC,EAAA,IACrDC,EAAA,GAEI,EAAE,SAASC,EAAA,IAA4BC;AAAA,IAC3C,EAAE,WAAAvB,EAAA;AAAA,IACF,EAAE,SAAS,GAAA;AAAA,EAAM;AAKnB,MAAIS,GAAU,cAAcE,EAAiB,eAAe,CAAC;AAC3D,WAAAL,EAAQkB,EAAgB,mCAAmC;AAAA,MACzD,YAAAzB;AAAA,MACA,eAAeY,EAAiB,aAAa,CAAC,EAAE;AAAA,MAChD,aAAaA,EAAiB,aAAa,CAAC;AAAA,IAAA,CAC7C,GACM;AAGT,QAAMc,IAAeC,EAAc;AAAA,IACjC,YAAYjB,GAAU;AAAA,IACtB,WAAWA,GAAU;AAAA,EAAA,CACtB,GAEKkB,IAAsBhB,EAAiB,eAAe,CAAC;AAkH7D,SACE,gBAAAf;AAAA,IAACgC;AAAA,IAAA;AAAA,MACC,cAAAH;AAAA,MACA,qBAAAE;AAAA,MACA,UApHiB,OAAOE,MAAwC;AAClE,cAAM,EAAE,eAAAC,GAAe,eAAAC,EAAA,IAAkBF,GACnCG,IAAgBF,EAAc,YAAA,EAAc,MAAM,GAAG,EAAE,CAAC;AAE9D,cAAMvB,EAAkB,EAAE,eAAAyB,GAAe,eAAAD,EAAA,GAAiB,YAAY;AACpE,gBAAME,IAAwBF,MAAkB,oBAE1CG,IAASP,IACX,MAAMX,EAAkB;AAAA,YACtB,SAAS;AAAA,cACP,YAAAjB;AAAA,cACA,aAAa;AAAA,gBACX,SAAS4B,EAAoB;AAAA,gBAC7B,eAAAK;AAAA,gBACA,uBAAAC;AAAA,cAAA;AAAA,YACF;AAAA,UACF,CACD,IACD,MAAMpB,EAAkB;AAAA,YACtB,SAAS;AAAA,cACP,YAAAd;AAAA,cACA,aAAa;AAAA,gBACX,eAAAiC;AAAA,gBACA,uBAAAC;AAAA,cAAA;AAAA,YACF;AAAA,UACF,CACD;AAEL,gBAAME,EAAgD/B,CAAW;AAEjE,cAAIgC;AAEJ,cAAIH;AACF,gBAAI;AACF,oBAAM,EAAE,MAAMI,EAAA,IAA2B,MAAMf,EAAA,GAEzCgB,IACJD,GAAwB,kCAAkC;AAAA,gBACxD,CAAAE,MAAUA,EAAO,iBAAiBxC;AAAA,cAAA,KAC/B,CAAA,GAEDyC,IAAkB,CAAA;AAExB,yBAAWC,KAAqBH;AAC9B,oBAAIG,EAAkB,aAAaA,EAAkB,SAAS;AAC5D,wBAAMC,IAAgB,MAAMvB,EAAsB;AAAA,oBAChD,SAAS;AAAA,sBACP,WAAAnB;AAAA,sBACA,aAAa;AAAA,wBACX,UAAU;AAAA,wBACV,gBAAgB2C,EAAe;AAAA,wBAC/B,WAAW,IAAIC,EAAQH,EAAkB,SAAS;AAAA,wBAClD,SAAS,IAAIG,EAAQH,EAAkB,OAAO;AAAA,wBAC9C,eAAe,CAAC1C,CAAU;AAAA,wBAC1B,WAAW0C,EAAkB,YACzB,IAAIG,EAAQH,EAAkB,SAAS,IACvC;AAAA,sBAAA;AAAA,oBACN;AAAA,kBACF,CACD;AAED,kBAAIC,EAAc,sBAChBF,EAAgB,KAAKE,EAAc,kBAAkB;AAAA,gBAEzD;AAGF,cAAIF,EAAgB,SAAS,MAC3BJ,IAAmBI,EAAgB,CAAC,GAAG,eAAeA,EAAgB,CAAC,GAAG,MAE1E,MAAMK,EAA0BzC,CAAW,GAC3C,MAAM0C,EAA0D1C,CAAW,GAE3EE,EAAQkB,EAAgB,sCAAsC;AAAA,gBAC5D,UAAUgB;AAAA,cAAA,CACX;AAAA,YAEL,SAASO,GAAc;AACrB,cAAAzC,EAAQkB,EAAgB,qCAAqC;AAAA,gBAC3D,OAAOuB;AAAA,gBACP,YAAAhD;AAAA,cAAA,CACD;AAAA,YACH;AAGF,gBAAMiD,IAAYrB,IACdH,EAAgB,+BAChBA,EAAgB;AAEpB,UAAAlB,EAAQ0C,GAAW;AAAA,YACjB,aAAad,EAAO;AAAA,YACpB,eAAAH;AAAA,YACA,uBAAAE;AAAA,UAAA,CACD,GAED3B,EAAQkB,EAAgB,2BAA2B;AAAA,YACjD,YAAAzB;AAAA,YACA,eAAAiC;AAAA,YACA,eAAAD;AAAA,YACA,aAAaK;AAAA,YACb,aAAaF,EAAO;AAAA,YACpB,GAAIH,MAAkB,gBAAgB,EAAE,gBAAgB,GAAA;AAAA,UAAK,CAC9D;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAaI,UAXiB,MAAM;AACzB,QAAAzB,EAAQkB,EAAgB,MAAM;AAAA,MAChC;AAAA,MAUI,WARcV,KAAyBG,KAAyBG;AAAA,IAQrD;AAAA,EAAA;AAGjB;"}
@@ -1,4 +1,4 @@
1
- import { Termination } from '@gusto/embedded-api-v-2026-02-01/models/components/termination';
1
+ import { Termination } from '@gusto/embedded-api/models/components/termination';
2
2
  import { TerminateEmployeeFormData } from './TerminateEmployee';
3
3
  interface TerminateEmployeePresentationProps {
4
4
  employeeName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TerminateEmployeePresentation.js","sources":["../../../../../src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport z from 'zod'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Termination } from '@gusto/embedded-api-v-2026-02-01/models/components/termination'\nimport type { PayrollOption } from '../types'\nimport type { TerminateEmployeeFormData } from './TerminateEmployee'\nimport { Flex, ActionsLayout, DatePickerField, RadioGroupField } from '@/components/Common'\nimport { Form as HtmlForm } from '@/components/Common/Form'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\n\ninterface TerminateEmployeePresentationProps {\n employeeName: string\n existingTermination?: Termination\n onSubmit: (data: TerminateEmployeeFormData) => void\n onCancel: () => void\n isLoading: boolean\n}\n\nconst terminateEmployeeSchema = z.object({\n lastDayOfWork: z.date({ error: 'validation.lastDayRequired' }),\n payrollOption: z.enum(['dismissalPayroll', 'regularPayroll', 'anotherWay'], {\n error: 'validation.payrollOptionRequired',\n }),\n})\n\n/** @internal */\nexport function TerminateEmployeePresentation({\n employeeName,\n existingTermination,\n onSubmit,\n onCancel,\n isLoading,\n}: TerminateEmployeePresentationProps) {\n const { Alert, Heading, Text, Button } = useComponentContext()\n useI18n('Employee.Terminations.TerminateEmployee')\n const { t } = useTranslation('Employee.Terminations.TerminateEmployee')\n\n const getPayrollOptionFromTermination = (termination: Termination): PayrollOption => {\n if (termination.runTerminationPayroll === true) {\n return 'dismissalPayroll'\n }\n return 'regularPayroll'\n }\n\n const initialValues: Partial<TerminateEmployeeFormData> = {\n lastDayOfWork: existingTermination?.effectiveDate\n ? new Date(existingTermination.effectiveDate)\n : undefined,\n payrollOption: existingTermination\n ? getPayrollOptionFromTermination(existingTermination)\n : 'dismissalPayroll',\n }\n const formMethods = useForm<TerminateEmployeeFormData>({\n resolver: zodResolver(terminateEmployeeSchema),\n defaultValues: initialValues,\n })\n\n const selectedPayrollOption = formMethods.watch('payrollOption')\n\n const payrollOptions = [\n {\n value: 'dismissalPayroll' as const,\n label: t('form.payrollOption.options.dismissalPayroll.label'),\n description: t('form.payrollOption.options.dismissalPayroll.description'),\n },\n {\n value: 'regularPayroll' as const,\n label: t('form.payrollOption.options.regularPayroll.label'),\n description: t('form.payrollOption.options.regularPayroll.description'),\n },\n {\n value: 'anotherWay' as const,\n label: t('form.payrollOption.options.anotherWay.label'),\n description: t('form.payrollOption.options.anotherWay.description'),\n },\n ]\n\n return (\n <FormProvider {...formMethods}>\n <HtmlForm onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Flex flexDirection=\"column\" gap={24}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title', { employeeName })}</Heading>\n <Text variant=\"supporting\">{t('subtitle')}</Text>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={24}>\n <DatePickerField\n name=\"lastDayOfWork\"\n label={t('form.lastDayOfEmployment.label')}\n description={t('form.lastDayOfEmployment.description')}\n isRequired\n errorMessage={t('validation.lastDayRequired')}\n />\n\n <RadioGroupField<PayrollOption>\n name=\"payrollOption\"\n label={t('form.payrollOption.label')}\n description={t('form.payrollOption.description')}\n options={payrollOptions}\n isRequired\n errorMessage={t('validation.payrollOptionRequired')}\n />\n <Alert status=\"warning\" label={t(`alert.${selectedPayrollOption}.label`)}>\n <Text>{t(`alert.${selectedPayrollOption}.text`, { employeeName })}</Text>\n </Alert>\n </Flex>\n\n <ActionsLayout>\n <Button variant=\"secondary\" onClick={onCancel} isDisabled={isLoading}>\n {t('actions.cancel')}\n </Button>\n <Button type=\"submit\" variant=\"primary\" isLoading={isLoading}>\n {t('actions.submit')}\n </Button>\n </ActionsLayout>\n </Flex>\n </HtmlForm>\n </FormProvider>\n )\n}\n"],"names":["terminateEmployeeSchema","z","TerminateEmployeePresentation","employeeName","existingTermination","onSubmit","onCancel","isLoading","Alert","Heading","Text","Button","useComponentContext","useI18n","t","useTranslation","getPayrollOptionFromTermination","termination","initialValues","formMethods","useForm","zodResolver","selectedPayrollOption","payrollOptions","FormProvider","jsx","HtmlForm","jsxs","Flex","DatePickerField","RadioGroupField","ActionsLayout"],"mappings":"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"}
1
+ {"version":3,"file":"TerminateEmployeePresentation.js","sources":["../../../../../src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport z from 'zod'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Termination } from '@gusto/embedded-api/models/components/termination'\nimport type { PayrollOption } from '../types'\nimport type { TerminateEmployeeFormData } from './TerminateEmployee'\nimport { Flex, ActionsLayout, DatePickerField, RadioGroupField } from '@/components/Common'\nimport { Form as HtmlForm } from '@/components/Common/Form'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\n\ninterface TerminateEmployeePresentationProps {\n employeeName: string\n existingTermination?: Termination\n onSubmit: (data: TerminateEmployeeFormData) => void\n onCancel: () => void\n isLoading: boolean\n}\n\nconst terminateEmployeeSchema = z.object({\n lastDayOfWork: z.date({ error: 'validation.lastDayRequired' }),\n payrollOption: z.enum(['dismissalPayroll', 'regularPayroll', 'anotherWay'], {\n error: 'validation.payrollOptionRequired',\n }),\n})\n\n/** @internal */\nexport function TerminateEmployeePresentation({\n employeeName,\n existingTermination,\n onSubmit,\n onCancel,\n isLoading,\n}: TerminateEmployeePresentationProps) {\n const { Alert, Heading, Text, Button } = useComponentContext()\n useI18n('Employee.Terminations.TerminateEmployee')\n const { t } = useTranslation('Employee.Terminations.TerminateEmployee')\n\n const getPayrollOptionFromTermination = (termination: Termination): PayrollOption => {\n if (termination.runTerminationPayroll === true) {\n return 'dismissalPayroll'\n }\n return 'regularPayroll'\n }\n\n const initialValues: Partial<TerminateEmployeeFormData> = {\n lastDayOfWork: existingTermination?.effectiveDate\n ? new Date(existingTermination.effectiveDate)\n : undefined,\n payrollOption: existingTermination\n ? getPayrollOptionFromTermination(existingTermination)\n : 'dismissalPayroll',\n }\n const formMethods = useForm<TerminateEmployeeFormData>({\n resolver: zodResolver(terminateEmployeeSchema),\n defaultValues: initialValues,\n })\n\n const selectedPayrollOption = formMethods.watch('payrollOption')\n\n const payrollOptions = [\n {\n value: 'dismissalPayroll' as const,\n label: t('form.payrollOption.options.dismissalPayroll.label'),\n description: t('form.payrollOption.options.dismissalPayroll.description'),\n },\n {\n value: 'regularPayroll' as const,\n label: t('form.payrollOption.options.regularPayroll.label'),\n description: t('form.payrollOption.options.regularPayroll.description'),\n },\n {\n value: 'anotherWay' as const,\n label: t('form.payrollOption.options.anotherWay.label'),\n description: t('form.payrollOption.options.anotherWay.description'),\n },\n ]\n\n return (\n <FormProvider {...formMethods}>\n <HtmlForm onSubmit={formMethods.handleSubmit(onSubmit)}>\n <Flex flexDirection=\"column\" gap={24}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title', { employeeName })}</Heading>\n <Text variant=\"supporting\">{t('subtitle')}</Text>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={24}>\n <DatePickerField\n name=\"lastDayOfWork\"\n label={t('form.lastDayOfEmployment.label')}\n description={t('form.lastDayOfEmployment.description')}\n isRequired\n errorMessage={t('validation.lastDayRequired')}\n />\n\n <RadioGroupField<PayrollOption>\n name=\"payrollOption\"\n label={t('form.payrollOption.label')}\n description={t('form.payrollOption.description')}\n options={payrollOptions}\n isRequired\n errorMessage={t('validation.payrollOptionRequired')}\n />\n <Alert status=\"warning\" label={t(`alert.${selectedPayrollOption}.label`)}>\n <Text>{t(`alert.${selectedPayrollOption}.text`, { employeeName })}</Text>\n </Alert>\n </Flex>\n\n <ActionsLayout>\n <Button variant=\"secondary\" onClick={onCancel} isDisabled={isLoading}>\n {t('actions.cancel')}\n </Button>\n <Button type=\"submit\" variant=\"primary\" isLoading={isLoading}>\n {t('actions.submit')}\n </Button>\n </ActionsLayout>\n </Flex>\n </HtmlForm>\n </FormProvider>\n )\n}\n"],"names":["terminateEmployeeSchema","z","TerminateEmployeePresentation","employeeName","existingTermination","onSubmit","onCancel","isLoading","Alert","Heading","Text","Button","useComponentContext","useI18n","t","useTranslation","getPayrollOptionFromTermination","termination","initialValues","formMethods","useForm","zodResolver","selectedPayrollOption","payrollOptions","FormProvider","jsx","HtmlForm","jsxs","Flex","DatePickerField","RadioGroupField","ActionsLayout"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { useState as I } from "react";
3
3
  import { useQueryClient as b } from "@tanstack/react-query";
4
- import { useEmployeesGetSuspense as B } from "@gusto/embedded-api-v-2026-02-01/react-query/employeesGet";
5
- import { useEmployeeEmploymentsGetTerminationsSuspense as G, invalidateAllEmployeeEmploymentsGetTerminations as j } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsGetTerminations";
6
- import { useEmployeeEmploymentsDeleteTerminationMutation as k } from "@gusto/embedded-api-v-2026-02-01/react-query/employeeEmploymentsDeleteTermination";
7
- import { invalidateAllEmployeesList as q } from "@gusto/embedded-api-v-2026-02-01/react-query/employeesList";
4
+ import { useEmployeesGetSuspense as B } from "@gusto/embedded-api/react-query/employeesGet";
5
+ import { useEmployeeEmploymentsGetTerminationsSuspense as G, invalidateAllEmployeeEmploymentsGetTerminations as j } from "@gusto/embedded-api/react-query/employeeEmploymentsGetTerminations";
6
+ import { useEmployeeEmploymentsDeleteTerminationMutation as k } from "@gusto/embedded-api/react-query/employeeEmploymentsDeleteTermination";
7
+ import { invalidateAllEmployeesList as q } from "@gusto/embedded-api/react-query/employeesList";
8
8
  import { TerminationSummaryPresentation as x } from "./TerminationSummaryPresentation.js";
9
9
  import { normalizeToDate as F } from "../../../../helpers/dateFormatting.js";
10
10
  import { BaseComponent as U } from "../../../Base/Base.js";