@gusto/embedded-react-sdk 0.37.0-rc.1 → 0.37.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/CHANGELOG.md +44 -8
  2. package/README.md +6 -0
  3. package/dist/UNSTABLE_Hooks.d.ts +1 -1
  4. package/dist/UNSTABLE_Hooks.js +50 -6
  5. package/dist/UNSTABLE_Hooks.js.map +1 -1
  6. package/dist/components/Base/Base.d.ts +2 -1
  7. package/dist/components/Base/Base.js +76 -76
  8. package/dist/components/Base/Base.js.map +1 -1
  9. package/dist/components/Base/createCompoundContext.js.map +1 -1
  10. package/dist/components/Common/DataView/DataCards/DataCards.js +42 -36
  11. package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
  12. package/dist/components/Common/Fields/CheckboxField/CheckboxField.d.ts +2 -0
  13. package/dist/components/Common/Fields/CheckboxField/CheckboxField.js +22 -19
  14. package/dist/components/Common/Fields/CheckboxField/CheckboxField.js.map +1 -1
  15. package/dist/components/Common/Fields/CheckboxGroupField/CheckboxGroupField.d.ts +1 -1
  16. package/dist/components/Common/Fields/CheckboxGroupField/CheckboxGroupField.js +32 -30
  17. package/dist/components/Common/Fields/CheckboxGroupField/CheckboxGroupField.js.map +1 -1
  18. package/dist/components/Common/Fields/ComboBoxField/ComboBoxField.d.ts +1 -1
  19. package/dist/components/Common/Fields/ComboBoxField/ComboBoxField.js +36 -34
  20. package/dist/components/Common/Fields/ComboBoxField/ComboBoxField.js.map +1 -1
  21. package/dist/components/Common/Fields/DatePickerField/DatePickerField.d.ts +5 -3
  22. package/dist/components/Common/Fields/DatePickerField/DatePickerField.js +52 -40
  23. package/dist/components/Common/Fields/DatePickerField/DatePickerField.js.map +1 -1
  24. package/dist/components/Common/Fields/FileInputField/FileInputField.js +24 -22
  25. package/dist/components/Common/Fields/FileInputField/FileInputField.js.map +1 -1
  26. package/dist/components/Common/Fields/MultiSelectComboBoxField/MultiSelectComboBoxField.js +24 -22
  27. package/dist/components/Common/Fields/MultiSelectComboBoxField/MultiSelectComboBoxField.js.map +1 -1
  28. package/dist/components/Common/Fields/NumberInputField/NumberInputField.d.ts +2 -0
  29. package/dist/components/Common/Fields/NumberInputField/NumberInputField.js +31 -28
  30. package/dist/components/Common/Fields/NumberInputField/NumberInputField.js.map +1 -1
  31. package/dist/components/Common/Fields/RadioGroupField/RadioGroupField.d.ts +3 -1
  32. package/dist/components/Common/Fields/RadioGroupField/RadioGroupField.js +30 -27
  33. package/dist/components/Common/Fields/RadioGroupField/RadioGroupField.js.map +1 -1
  34. package/dist/components/Common/Fields/SelectField/SelectField.d.ts +3 -1
  35. package/dist/components/Common/Fields/SelectField/SelectField.js +31 -28
  36. package/dist/components/Common/Fields/SelectField/SelectField.js.map +1 -1
  37. package/dist/components/Common/Fields/SwitchField/SwitchField.d.ts +2 -0
  38. package/dist/components/Common/Fields/SwitchField/SwitchField.js +24 -21
  39. package/dist/components/Common/Fields/SwitchField/SwitchField.js.map +1 -1
  40. package/dist/components/Common/Fields/TextAreaField/TextAreaField.js +24 -22
  41. package/dist/components/Common/Fields/TextAreaField/TextAreaField.js.map +1 -1
  42. package/dist/components/Common/Fields/TextInputField/TextInputField.d.ts +2 -0
  43. package/dist/components/Common/Fields/TextInputField/TextInputField.js +26 -23
  44. package/dist/components/Common/Fields/TextInputField/TextInputField.js.map +1 -1
  45. package/dist/components/Common/Fields/hooks/useField.d.ts +3 -2
  46. package/dist/components/Common/Fields/hooks/useField.js +37 -33
  47. package/dist/components/Common/Fields/hooks/useField.js.map +1 -1
  48. package/dist/components/Common/ReorderableList/ReorderableList.js.map +1 -1
  49. package/dist/components/Common/SignatureForm/SignatureForm.js +10 -15
  50. package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
  51. package/dist/components/Common/SignatureForm/SignatureFormActions.js +10 -14
  52. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  53. package/dist/components/Common/SignatureForm/SignatureFormFields.js +14 -19
  54. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  55. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
  56. package/dist/components/Common/UI/Button/Button.js +33 -29
  57. package/dist/components/Common/UI/Button/Button.js.map +1 -1
  58. package/dist/components/Common/UI/Button/Button.module.scss.js +5 -3
  59. package/dist/components/Common/UI/Button/Button.module.scss.js.map +1 -1
  60. package/dist/components/Common/UI/Button/ButtonTypes.d.ts +4 -0
  61. package/dist/components/Common/UI/Button/ButtonTypes.js.map +1 -1
  62. package/dist/components/Common/UI/DescriptionList/DescriptionList.module.scss.js +2 -2
  63. package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
  64. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +94 -80
  65. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
  66. package/dist/components/Common/UI/NumberInput/NumberInput.js +1 -1
  67. package/dist/components/Common/UI/NumberInput/NumberInput.js.map +1 -1
  68. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  69. package/dist/components/Company/AssignSignatory/AssignSignatory.js +7 -11
  70. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  71. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -10
  72. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  73. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -11
  74. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  75. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +6 -9
  76. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  77. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +15 -17
  78. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  79. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +8 -7
  80. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  81. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -9
  82. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  83. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +5 -8
  84. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  85. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +13 -15
  86. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  87. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +8 -7
  88. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  89. package/dist/components/Company/AssignSignatory/TitleSelect.js +2 -5
  90. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  91. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +10 -9
  92. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  93. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +9 -11
  94. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  95. package/dist/components/Company/BankAccount/BankAccountForm/Form.js +9 -13
  96. package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
  97. package/dist/components/Company/BankAccount/BankAccountForm/context.js +8 -7
  98. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  99. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +10 -13
  100. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  101. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +12 -15
  102. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  103. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +4 -8
  104. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
  105. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -8
  106. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  107. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +11 -15
  108. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  109. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +8 -7
  110. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  111. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +11 -15
  112. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  113. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +8 -7
  114. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  115. package/dist/components/Company/FederalTaxes/Actions.js +8 -11
  116. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  117. package/dist/components/Company/FederalTaxes/FederalTaxes.js +15 -19
  118. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  119. package/dist/components/Company/FederalTaxes/Form.js +6 -8
  120. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  121. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +13 -12
  122. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  123. package/dist/components/Company/Industry/Actions.js +8 -11
  124. package/dist/components/Company/Industry/Actions.js.map +1 -1
  125. package/dist/components/Company/Industry/Context.js +11 -10
  126. package/dist/components/Company/Industry/Context.js.map +1 -1
  127. package/dist/components/Company/Industry/Edit.js +10 -14
  128. package/dist/components/Company/Industry/Edit.js.map +1 -1
  129. package/dist/components/Company/Locations/LocationForm/Actions.js +8 -11
  130. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  131. package/dist/components/Company/Locations/LocationForm/Form.js +5 -8
  132. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  133. package/dist/components/Company/Locations/LocationForm/LocationForm.js +15 -19
  134. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  135. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +8 -7
  136. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  137. package/dist/components/Company/Locations/LocationsList/Actions.js +6 -9
  138. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  139. package/dist/components/Company/Locations/LocationsList/List.js +17 -19
  140. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  141. package/dist/components/Company/Locations/LocationsList/LocationsList.js +6 -10
  142. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  143. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +8 -7
  144. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  145. package/dist/components/Company/OnboardingOverview/Completed.js +12 -15
  146. package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
  147. package/dist/components/Company/OnboardingOverview/MissingRequirements.js +9 -12
  148. package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
  149. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +6 -10
  150. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  151. package/dist/components/Company/OnboardingOverview/context.js +8 -7
  152. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  153. package/dist/components/Company/PaySchedule/PaySchedule.js +3 -6
  154. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  155. package/dist/components/Company/PaySchedule/_parts/Actions.js +10 -13
  156. package/dist/components/Company/PaySchedule/_parts/Actions.js.map +1 -1
  157. package/dist/components/Company/PaySchedule/_parts/Edit.js +23 -24
  158. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  159. package/dist/components/Company/PaySchedule/_parts/Head.js +11 -14
  160. package/dist/components/Company/PaySchedule/_parts/Head.js.map +1 -1
  161. package/dist/components/Company/PaySchedule/_parts/List.js +19 -21
  162. package/dist/components/Company/PaySchedule/_parts/List.js.map +1 -1
  163. package/dist/components/Company/PaySchedule/usePaySchedule.js +10 -9
  164. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  165. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -8
  166. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  167. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  168. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +8 -7
  169. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  170. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -9
  171. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  172. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +5 -8
  173. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  174. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +8 -7
  175. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  176. package/dist/components/Contractor/Address/Address.js +3 -7
  177. package/dist/components/Contractor/Address/Address.js.map +1 -1
  178. package/dist/components/Contractor/Address/Form.js +9 -12
  179. package/dist/components/Contractor/Address/Form.js.map +1 -1
  180. package/dist/components/Contractor/Address/useAddress.js +10 -9
  181. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  182. package/dist/components/Contractor/ContractorList/index.js +29 -30
  183. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  184. package/dist/components/Contractor/NewHireReport/NewHireReport.js +2 -3
  185. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  186. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +10 -14
  187. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  188. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +2 -3
  189. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
  190. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +2 -5
  191. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js.map +1 -1
  192. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  193. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +12 -14
  194. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
  195. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js +12 -13
  196. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js.map +1 -1
  197. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js +18 -21
  198. package/dist/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.js.map +1 -1
  199. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +3 -4
  200. package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
  201. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +17 -19
  202. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
  203. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +6 -8
  204. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  205. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.js +2 -4
  206. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.js.map +1 -1
  207. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +2 -5
  208. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  209. package/dist/components/Contractor/Profile/ContractorProfileForm.js +15 -15
  210. package/dist/components/Contractor/Profile/useContractorProfile.js +11 -8
  211. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  212. package/dist/components/Contractor/Submit/Submit.js +20 -22
  213. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  214. package/dist/components/Employee/Compensation/Actions.js +12 -14
  215. package/dist/components/Employee/Compensation/Actions.js.map +1 -1
  216. package/dist/components/Employee/Compensation/Compensation.js.map +1 -1
  217. package/dist/components/Employee/Compensation/Edit.js +27 -28
  218. package/dist/components/Employee/Compensation/Edit.js.map +1 -1
  219. package/dist/components/Employee/Compensation/List.js +23 -25
  220. package/dist/components/Employee/Compensation/List.js.map +1 -1
  221. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +55 -49
  222. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
  223. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +14 -13
  224. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
  225. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js.map +1 -1
  226. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js +14 -13
  227. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js.map +1 -1
  228. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +18 -19
  229. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js.map +1 -1
  230. package/dist/components/Employee/Deductions/IncludeDeductions/IncludeDeductions.js +6 -8
  231. package/dist/components/Employee/Deductions/IncludeDeductions/IncludeDeductions.js.map +1 -1
  232. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +6 -9
  233. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js.map +1 -1
  234. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +10 -14
  235. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  236. package/dist/components/Employee/DocumentSigner/DocumentList/List.js +2 -6
  237. package/dist/components/Employee/DocumentSigner/DocumentList/List.js.map +1 -1
  238. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +8 -7
  239. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  240. package/dist/components/Employee/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +24 -26
  241. package/dist/components/Employee/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
  242. package/dist/components/Employee/DocumentSigner/I9SignatureForm/I9SignatureForm.js +9 -11
  243. package/dist/components/Employee/DocumentSigner/I9SignatureForm/I9SignatureForm.js.map +1 -1
  244. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +11 -15
  245. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  246. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +8 -7
  247. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  248. package/dist/components/Employee/EmployeeDocuments/EmployeeDocumentsPresentation.js +6 -9
  249. package/dist/components/Employee/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
  250. package/dist/components/Employee/EmployeeList/Actions.js +6 -9
  251. package/dist/components/Employee/EmployeeList/Actions.js.map +1 -1
  252. package/dist/components/Employee/EmployeeList/EmployeeList.js +3 -7
  253. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  254. package/dist/components/Employee/EmployeeList/Head.js +5 -8
  255. package/dist/components/Employee/EmployeeList/Head.js.map +1 -1
  256. package/dist/components/Employee/EmployeeList/List.js +16 -17
  257. package/dist/components/Employee/EmployeeList/List.js.map +1 -1
  258. package/dist/components/Employee/EmployeeList/useEmployeeList.js +8 -7
  259. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  260. package/dist/components/Employee/FederalTaxes/Actions.js +7 -10
  261. package/dist/components/Employee/FederalTaxes/Actions.js.map +1 -1
  262. package/dist/components/Employee/FederalTaxes/FederalForm.js +10 -13
  263. package/dist/components/Employee/FederalTaxes/FederalForm.js.map +1 -1
  264. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +8 -7
  265. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  266. package/dist/components/Employee/Landing/Landing.js +14 -15
  267. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  268. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +7 -7
  269. package/dist/components/Employee/PaymentMethod/Actions.js +8 -11
  270. package/dist/components/Employee/PaymentMethod/Actions.js.map +1 -1
  271. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +5 -8
  272. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js.map +1 -1
  273. package/dist/components/Employee/PaymentMethod/BankAccountsList.js +9 -10
  274. package/dist/components/Employee/PaymentMethod/BankAccountsList.js.map +1 -1
  275. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js +7 -10
  276. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js.map +1 -1
  277. package/dist/components/Employee/PaymentMethod/Split.js +9 -10
  278. package/dist/components/Employee/PaymentMethod/Split.js.map +1 -1
  279. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +10 -9
  280. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  281. package/dist/components/Employee/Profile/Actions.js +8 -11
  282. package/dist/components/Employee/Profile/Actions.js.map +1 -1
  283. package/dist/components/Employee/Profile/AdminPersonalDetails.js +14 -17
  284. package/dist/components/Employee/Profile/AdminPersonalDetails.js.map +1 -1
  285. package/dist/components/Employee/Profile/HomeAddress.d.ts +3 -3
  286. package/dist/components/Employee/Profile/HomeAddress.js +45 -45
  287. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  288. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +15 -19
  289. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  290. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  291. package/dist/components/Employee/Profile/useProfile.js +8 -7
  292. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  293. package/dist/components/Employee/StateTaxes/Actions.js +8 -11
  294. package/dist/components/Employee/StateTaxes/Actions.js.map +1 -1
  295. package/dist/components/Employee/StateTaxes/useStateTaxes.js +8 -7
  296. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  297. package/dist/components/Employee/Taxes/Actions.js +8 -11
  298. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  299. package/dist/components/Employee/Taxes/FederalForm.js +10 -13
  300. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  301. package/dist/components/Employee/Taxes/useTaxes.js +8 -7
  302. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  303. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +14 -17
  304. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
  305. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.d.ts +1 -0
  306. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js +37 -33
  307. package/dist/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.js.map +1 -1
  308. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.d.ts +1 -0
  309. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.js +57 -45
  310. package/dist/components/Employee/Terminations/TerminationFlow/terminationStateMachine.js.map +1 -1
  311. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +8 -11
  312. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
  313. package/dist/components/Flow/Flow.js +20 -23
  314. package/dist/components/Flow/Flow.js.map +1 -1
  315. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +16 -18
  316. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
  317. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +18 -20
  318. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
  319. package/dist/components/InformationRequests/InformationRequests.js +3 -4
  320. package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
  321. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
  322. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +8 -10
  323. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js.map +1 -1
  324. package/dist/components/Payroll/Dismissal/DismissalFlow.js +14 -14
  325. package/dist/components/Payroll/Dismissal/DismissalFlow.js.map +1 -1
  326. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.d.ts +2 -2
  327. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +8 -8
  328. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
  329. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.d.ts +2 -1
  330. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +61 -57
  331. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
  332. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +8 -11
  333. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
  334. package/dist/components/Payroll/GrossUpModal/GrossUpModal.d.ts +1 -1
  335. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +88 -75
  336. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  337. package/dist/components/Payroll/GrossUpModal/GrossUpModal.module.scss.js +6 -6
  338. package/dist/components/Payroll/GrossUpModal/GrossUpModalTypes.d.ts +0 -1
  339. package/dist/components/Payroll/OffCycle/OffCycleFlow.d.ts +1 -1
  340. package/dist/components/Payroll/OffCycle/OffCycleFlow.js +24 -18
  341. package/dist/components/Payroll/OffCycle/OffCycleFlow.js.map +1 -1
  342. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +2 -0
  343. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +30 -31
  344. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  345. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +56 -53
  346. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  347. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +30 -32
  348. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  349. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +18 -26
  350. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  351. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes.js +2 -2
  352. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes.js.map +1 -1
  353. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +6 -9
  354. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  355. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +12 -14
  356. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  357. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js +11 -14
  358. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js.map +1 -1
  359. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +12 -12
  360. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +66 -67
  361. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  362. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +20 -21
  363. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  364. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
  365. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +222 -216
  366. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  367. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +19 -21
  368. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  369. package/dist/components/Payroll/PayrollFlow/OffCycleFlowContextual.js +13 -6
  370. package/dist/components/Payroll/PayrollFlow/OffCycleFlowContextual.js.map +1 -1
  371. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +31 -33
  372. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  373. package/dist/components/Payroll/PayrollList/PayrollList.js +44 -40
  374. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  375. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +15 -17
  376. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  377. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +15 -15
  378. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  379. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +58 -59
  380. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  381. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js +7 -10
  382. package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
  383. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +2 -3
  384. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  385. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js +2 -4
  386. package/dist/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.js.map +1 -1
  387. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +11 -13
  388. package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
  389. package/dist/components/Payroll/RecoveryCases/useRecoveryCaseErrorCode.js +2 -5
  390. package/dist/components/Payroll/RecoveryCases/useRecoveryCaseErrorCode.js.map +1 -1
  391. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +12 -14
  392. package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +1 -1
  393. package/dist/components/Payroll/helpers.d.ts +4 -0
  394. package/dist/components/Payroll/helpers.js +21 -16
  395. package/dist/components/Payroll/helpers.js.map +1 -1
  396. package/dist/components/Payroll/usePreparedPayrollData.js +4 -4
  397. package/dist/components/UNSTABLE_Hooks/collectErrors.d.ts +6 -0
  398. package/dist/components/UNSTABLE_Hooks/collectErrors.js +9 -0
  399. package/dist/components/UNSTABLE_Hooks/collectErrors.js.map +1 -0
  400. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.d.ts +2 -2
  401. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.js +6 -9
  402. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.js.map +1 -1
  403. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.d.ts +2 -2
  404. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.js +13 -0
  405. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.js.map +1 -0
  406. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.d.ts +11 -6
  407. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.js +24 -0
  408. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.js.map +1 -0
  409. package/dist/components/UNSTABLE_Hooks/form/composeFormSchema.d.ts +26 -0
  410. package/dist/components/UNSTABLE_Hooks/form/composeFormSchema.js +24 -0
  411. package/dist/components/UNSTABLE_Hooks/form/composeFormSchema.js.map +1 -0
  412. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.d.ts +53 -0
  413. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.js +34 -0
  414. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.js.map +1 -0
  415. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.test.d.ts +1 -0
  416. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.d.ts +1 -1
  417. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.js +14 -0
  418. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.js.map +1 -0
  419. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.d.ts +11 -0
  420. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.js +34 -0
  421. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.js.map +1 -0
  422. package/dist/components/UNSTABLE_Hooks/form/fields/DatePickerHookField.d.ts +11 -0
  423. package/dist/components/UNSTABLE_Hooks/form/fields/DatePickerHookField.js +34 -0
  424. package/dist/components/UNSTABLE_Hooks/form/fields/DatePickerHookField.js.map +1 -0
  425. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.d.ts +14 -0
  426. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.js +40 -0
  427. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.js.map +1 -0
  428. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.d.ts +12 -0
  429. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.js +40 -0
  430. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.js.map +1 -0
  431. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.d.ts +12 -0
  432. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.js +40 -0
  433. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.js.map +1 -0
  434. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.d.ts +11 -0
  435. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.js +34 -0
  436. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.js.map +1 -0
  437. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.d.ts +13 -0
  438. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.js +38 -0
  439. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.js.map +1 -0
  440. package/dist/components/UNSTABLE_Hooks/form/fields/index.d.ts +15 -0
  441. package/dist/components/UNSTABLE_Hooks/form/getFieldWithOptions.d.ts +2 -0
  442. package/dist/components/UNSTABLE_Hooks/form/getFieldWithOptions.js +8 -0
  443. package/dist/components/UNSTABLE_Hooks/form/getFieldWithOptions.js.map +1 -0
  444. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.d.ts +18 -0
  445. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.js +10 -0
  446. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.js.map +1 -0
  447. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.test.d.ts +1 -0
  448. package/dist/components/UNSTABLE_Hooks/form/index.d.ts +8 -1
  449. package/dist/components/UNSTABLE_Hooks/form/resolveFieldError.d.ts +4 -0
  450. package/dist/components/UNSTABLE_Hooks/form/resolveFieldError.js +13 -0
  451. package/dist/components/UNSTABLE_Hooks/form/resolveFieldError.js.map +1 -0
  452. package/dist/components/UNSTABLE_Hooks/form/resolveRequiredFields.d.ts +6 -0
  453. package/dist/components/UNSTABLE_Hooks/form/resolveRequiredFields.js +14 -0
  454. package/dist/components/UNSTABLE_Hooks/form/resolveRequiredFields.js.map +1 -0
  455. package/dist/components/UNSTABLE_Hooks/form/types.d.ts +12 -0
  456. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.d.ts +2 -1
  457. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.js +11 -9
  458. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.js.map +1 -1
  459. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.d.ts +2 -2
  460. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.js +2 -3
  461. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.js.map +1 -1
  462. package/dist/components/UNSTABLE_Hooks/form/useHookFieldResolution.d.ts +23 -0
  463. package/dist/components/UNSTABLE_Hooks/form/useHookFieldResolution.js +11 -0
  464. package/dist/components/UNSTABLE_Hooks/form/useHookFieldResolution.js.map +1 -0
  465. package/dist/components/UNSTABLE_Hooks/form/withOptions.js +7 -0
  466. package/dist/components/UNSTABLE_Hooks/form/withOptions.js.map +1 -0
  467. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.d.ts +5 -0
  468. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.js +149 -0
  469. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.js.map +1 -0
  470. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.d.ts +97 -0
  471. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.js +121 -0
  472. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.js.map +1 -0
  473. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/fields.d.ts +34 -0
  474. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/fields.js +50 -0
  475. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/fields.js.map +1 -0
  476. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/index.d.ts +5 -1
  477. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.d.ts +97 -9
  478. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js +255 -3
  479. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js.map +1 -1
  480. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.d.ts +5 -0
  481. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.js +112 -0
  482. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.js.map +1 -0
  483. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +39 -0
  484. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/employeeDetailsSchema.js +45 -0
  485. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/employeeDetailsSchema.js.map +1 -0
  486. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/fields.d.ts +23 -0
  487. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/fields.js +46 -0
  488. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/fields.js.map +1 -0
  489. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/index.d.ts +7 -0
  490. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +77 -0
  491. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/useEmployeeDetailsForm.js +153 -0
  492. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -0
  493. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.d.ts +5 -0
  494. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.js +69 -0
  495. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.js.map +1 -0
  496. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/fields.d.ts +10 -0
  497. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/fields.js +14 -0
  498. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/fields.js.map +1 -0
  499. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/index.d.ts +7 -0
  500. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/useWorkAddressForm.d.ts +68 -0
  501. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/useWorkAddressForm.js +129 -0
  502. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/useWorkAddressForm.js.map +1 -0
  503. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/workAddressSchema.d.ts +25 -0
  504. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/workAddressSchema.js +24 -0
  505. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/workAddressSchema.js.map +1 -0
  506. package/dist/components/UNSTABLE_Hooks/index.d.ts +8 -4
  507. package/dist/components/UNSTABLE_Hooks/types.d.ts +9 -6
  508. package/dist/components/UNSTABLE_Hooks/useErrorHandling.d.ts +9 -0
  509. package/dist/components/UNSTABLE_Hooks/useErrorHandling.js +12 -0
  510. package/dist/components/UNSTABLE_Hooks/useErrorHandling.js.map +1 -0
  511. package/dist/components/UNSTABLE_Hooks/useErrorHandling.test.d.ts +1 -0
  512. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +10 -13
  513. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  514. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.d.ts +10 -2
  515. package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js.map +1 -1
  516. package/dist/contexts/ThemeProvider/useTheme.js.map +1 -1
  517. package/dist/helpers/requiredIf.d.ts +13 -0
  518. package/dist/helpers/requiredIf.js +8 -0
  519. package/dist/helpers/requiredIf.js.map +1 -0
  520. package/dist/i18n/I18n.js +12 -12
  521. package/dist/i18n/I18n.js.map +1 -1
  522. package/dist/i18n/en/Company.TimeOff.CreateTimeOffPolicy.json.js +26 -0
  523. package/dist/i18n/en/Company.TimeOff.CreateTimeOffPolicy.json.js.map +1 -0
  524. package/dist/i18n/en/Company.TimeOff.HolidayPolicy.json.js +24 -0
  525. package/dist/i18n/en/Company.TimeOff.HolidayPolicy.json.js.map +1 -0
  526. package/dist/i18n/en/Company.TimeOff.TimeOffPolicies.json.js +32 -0
  527. package/dist/i18n/en/Company.TimeOff.TimeOffPolicies.json.js.map +1 -0
  528. package/dist/i18n/en/Company.TimeOff.TimeOffPolicyDetails.json.js +52 -0
  529. package/dist/i18n/en/Company.TimeOff.TimeOffPolicyDetails.json.js.map +1 -0
  530. package/dist/i18n/en/Company.TimeOff.TimeOffRequests.json.js +21 -0
  531. package/dist/i18n/en/Company.TimeOff.TimeOffRequests.json.js.map +1 -0
  532. package/dist/i18n/en/Payroll.GrossUpModal.json.js +16 -14
  533. package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
  534. package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js +5 -5
  535. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -25
  536. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  537. package/dist/i18n/en/UNSTABLE.CompensationForm.json.js +58 -0
  538. package/dist/i18n/en/UNSTABLE.CompensationForm.json.js.map +1 -0
  539. package/dist/i18n/en/UNSTABLE.EmployeeDetailsForm.json.js +34 -0
  540. package/dist/i18n/en/UNSTABLE.EmployeeDetailsForm.json.js.map +1 -0
  541. package/dist/i18n/en/UNSTABLE.WorkAddressForm.json.js +24 -0
  542. package/dist/i18n/en/UNSTABLE.WorkAddressForm.json.js.map +1 -0
  543. package/dist/models/WA_RISK_CODES.d.ts +5 -2866
  544. package/dist/models/WA_RISK_CODES.js.map +1 -1
  545. package/dist/style.css +1 -1
  546. package/dist/types/i18next.d.ts +545 -1
  547. package/dist/types/sdkError.d.ts +7 -1
  548. package/dist/types/sdkError.js.map +1 -1
  549. package/docs/reference/endpoint-inventory.json +92 -0
  550. package/package.json +12 -12
@@ -1,7 +1,7 @@
1
1
  import { useCallback as v } from "react";
2
2
  import { useTranslation as S } from "react-i18next";
3
- import { PayrollCategory as M, isOffCyclePayroll as O } from "./payrollTypes.js";
4
- import { formatPayRate as x } from "../../helpers/formattedStrings.js";
3
+ import { PayrollCategory as M, isOffCyclePayroll as x } from "./payrollTypes.js";
4
+ import { formatPayRate as O } from "../../helpers/formattedStrings.js";
5
5
  import { useLocale as L } from "../../contexts/LocaleProvider/useLocale.js";
6
6
  import { FlsaStatus as N, COMPENSATION_NAME_REIMBURSEMENT as g } from "../../shared/constants.js";
7
7
  import { MS_PER_HOUR as P } from "../../helpers/dateFormatting.js";
@@ -28,7 +28,7 @@ const j = "regular hours", p = (e) => e.jobs?.find((t) => t.primary) || e.jobs?.
28
28
  if (!o || !o.rate || parseFloat(o.rate) === 0)
29
29
  return null;
30
30
  const s = parseFloat(o.rate), u = o.paymentUnit || "Hour";
31
- return x({ rate: s, paymentUnit: u, t, locale: r });
31
+ return O({ rate: s, paymentUnit: u, t, locale: r });
32
32
  }, se = () => {
33
33
  const { t: e } = S("common"), { locale: t } = L();
34
34
  return v(
@@ -52,7 +52,7 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
52
52
  }, le = (e) => {
53
53
  const t = R(e);
54
54
  return t % 1 === 0 ? `${t}.0` : t.toString();
55
- }, B = (e) => e.frequency && A[e.frequency] || 0, C = (e, t) => {
55
+ }, B = (e) => e.frequency && A[e.frequency] || 0, h = (e, t) => {
56
56
  if (!e.length) return null;
57
57
  const r = [...e].sort(
58
58
  (n, o) => (n.effectiveDate ? new Date(n.effectiveDate).getTime() : 0) - (o.effectiveDate ? new Date(o.effectiveDate).getTime() : 0)
@@ -77,7 +77,7 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
77
77
  }, Y = (e) => e.flsaStatus === "Exempt" || e.flsaStatus === "Salaried Nonexempt", G = (e) => e.length ? e.filter((t) => {
78
78
  const r = t.name?.toLowerCase(), n = parseFloat(t.amount || "0");
79
79
  return (r === "paycheck tips" || r === "cash tips") && n > 0;
80
- }).reduce((t, r) => t + parseFloat(r.amount || "0"), 0) : 0, h = (e) => {
80
+ }).reduce((t, r) => t + parseFloat(r.amount || "0"), 0) : 0, C = (e) => {
81
81
  const t = parseFloat(e.rate || "0");
82
82
  switch (e.paymentUnit || "Hour") {
83
83
  case "Hour":
@@ -99,14 +99,14 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
99
99
  const n = e.jobs?.find((s) => s.uuid === t);
100
100
  if (!n?.compensations)
101
101
  return 0;
102
- const o = C(n.compensations, r);
103
- return o ? h(o) : 0;
102
+ const o = h(n.compensations, r);
103
+ return o ? C(o) : 0;
104
104
  }, w = (e, t) => {
105
105
  const r = p(e);
106
106
  if (!r?.compensations)
107
107
  return 0;
108
- const n = C(r.compensations, t);
109
- return n ? h(n) : 0;
108
+ const n = h(r.compensations, t);
109
+ return n ? C(n) : 0;
110
110
  }, q = (e) => e.paidTimeOff ? e.paidTimeOff.reduce(
111
111
  (t, r) => t + parseFloat(r.finalPayoutUnusedHoursInput || "0"),
112
112
  0
@@ -128,7 +128,7 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
128
128
  const o = t.hourlyCompensations?.reduce(
129
129
  (f, l) => f + parseFloat(l.hours || "0"),
130
130
  0
131
- ) || 0, s = h(e), u = (parseFloat(n.wage || "0") - s) * o, a = G(t.fixedCompensations || []);
131
+ ) || 0, s = C(e), u = (parseFloat(n.wage || "0") - s) * o, a = G(t.fixedCompensations || []);
132
132
  return Math.max(0, u - a);
133
133
  }, $ = (e, t, r, n, o, s, u) => {
134
134
  if (!u && n)
@@ -165,7 +165,7 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
165
165
  const s = r ? new Date(r) : /* @__PURE__ */ new Date(), u = p(t);
166
166
  if (!u?.compensations)
167
167
  return 0;
168
- const a = C(
168
+ const a = h(
169
169
  u.compensations,
170
170
  s
171
171
  );
@@ -175,7 +175,7 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
175
175
  e,
176
176
  f,
177
177
  l
178
- ), i = O(o), c = H(
178
+ ), i = x(o), c = H(
179
179
  e,
180
180
  m,
181
181
  l,
@@ -240,12 +240,16 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
240
240
  amount: "0.00",
241
241
  jobUuid: r
242
242
  } : null);
243
- }, ye = (e) => e.totals ? Number(e.totals.grossPay ?? 0) + Number(e.totals.employerTaxes ?? 0) + Number(e.totals.reimbursements ?? 0) + Number(e.totals.benefits ?? 0) : 0, D = (e) => {
243
+ }, ye = (e) => {
244
+ if (!e || e.length === 0) return !0;
245
+ const t = e.filter((r) => !r.excluded);
246
+ return t.length === 0 ? !0 : t.some((r) => r.paymentMethod === "Direct Deposit");
247
+ }, ge = (e) => e.totals ? Number(e.totals.grossPay ?? 0) + Number(e.totals.employerTaxes ?? 0) + Number(e.totals.reimbursements ?? 0) + Number(e.totals.benefits ?? 0) : 0, D = (e) => {
244
248
  const t = e.getFullYear(), r = new Date(t, 2, 1);
245
249
  r.setDate(1 + (7 - r.getDay()) + 7);
246
250
  const n = new Date(t, 10, 1);
247
251
  return n.setDate(1 + (7 - n.getDay()) % 7), e >= r && e < n ? -7 : -8;
248
- }, ge = (e) => {
252
+ }, pe = (e) => {
249
253
  if (e.payrollStatusMeta?.cancellable === !1 || !e.processed || !e.payrollDeadline)
250
254
  return !1;
251
255
  const t = /* @__PURE__ */ new Date(), r = new Date(e.payrollDeadline), n = new Date(t.getTime() + D(t) * P), o = new Date(r.getTime() + D(r) * P), s = new Date(o);
@@ -253,8 +257,8 @@ const _ = (e) => e.paidTimeOff ? e.paidTimeOff.reduce((t, r) => t + parseFloat(r
253
257
  };
254
258
  export {
255
259
  ce as calculateGrossPay,
256
- ye as calculateTotalPayroll,
257
- ge as canCancelPayroll,
260
+ ge as calculateTotalPayroll,
261
+ pe as canCancelPayroll,
258
262
  W as formatEmployeePayRate,
259
263
  le as formatHoursDisplay,
260
264
  I as getAdditionalEarnings,
@@ -266,6 +270,7 @@ export {
266
270
  de as getReimbursementCompensation,
267
271
  ie as getReimbursements,
268
272
  _ as getTotalPtoHours,
273
+ ye as hasDirectDepositEmployees,
269
274
  se as useFormatEmployeePayRate
270
275
  };
271
276
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/components/Payroll/helpers.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollShowFixedCompensations } from '@gusto/embedded-api/models/components/payroll'\nimport type { PayrollEmployeeCompensationsTypeFixedCompensations as FixedCompensations } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollFixedCompensationTypesType } from '@gusto/embedded-api/models/components/payrollfixedcompensationtypestype'\nimport { useCallback } from 'react'\nimport type { TFunction } from 'i18next'\nimport { useTranslation } from 'react-i18next'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport type { Compensation, MinimumWages } from '@gusto/embedded-api/models/components/compensation'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payroll'\nimport type { PayrollType } from './PayrollList/types'\nimport { PayrollCategory, isOffCyclePayroll } from './payrollTypes'\nimport { formatPayRate } from '@/helpers/formattedStrings'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { COMPENSATION_NAME_REIMBURSEMENT, FlsaStatus } from '@/shared/constants'\nimport { MS_PER_HOUR } from '@/helpers/dateFormatting'\nconst REGULAR_HOURS_NAME = 'regular hours'\n\n// Utility to get the primary job from an employee\nexport const getPrimaryJob = (employee: Employee) => {\n return employee.jobs?.find(job => job.primary) || employee.jobs?.[0] || null\n}\n\nconst roundToSixDecimals = (value: number): number => {\n return Math.round(value * 1_000_000) / 1_000_000\n}\n\nconst roundToTwoDecimals = (value: number): number => {\n return Math.round(value * 100) / 100\n}\n\nconst isRegularHours = (compensationName: string): boolean => {\n return compensationName.toLowerCase() === REGULAR_HOURS_NAME\n}\n\nconst PAY_PERIOD_HOURS_MAPPINGS: Record<string, number> = {\n Daily: 8.0,\n 'Every week': 40.0,\n 'Every other week': 80.0,\n 'Twice per month': 86.666667,\n Monthly: 173.333333,\n Quarterly: 520.0,\n Semiannually: 1040.0,\n Annually: 2080.0,\n}\n\nexport const formatEmployeePayRate = ({\n employee,\n t,\n locale = 'en-US',\n}: {\n employee?: Employee\n t: TFunction\n locale?: string\n}) => {\n if (!employee?.jobs) {\n return null\n }\n\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return null\n }\n\n const jobCompensation = primaryJob.compensations[0]\n if (!jobCompensation) {\n return null\n }\n if (!jobCompensation.rate || parseFloat(jobCompensation.rate) === 0) {\n return null\n }\n\n const rate = parseFloat(jobCompensation.rate)\n const paymentUnit = jobCompensation.paymentUnit || 'Hour'\n\n return formatPayRate({ rate, paymentUnit, t, locale })\n}\n\nexport const useFormatEmployeePayRate = () => {\n const { t } = useTranslation('common')\n const { locale } = useLocale()\n\n return useCallback(\n (employee?: Employee) => {\n return formatEmployeePayRate({ employee, t, locale })\n },\n [t, locale],\n )\n}\n\nexport const getEmployeePayRateInfo = (employee: Employee | undefined) => {\n if (!employee?.jobs) {\n return null\n }\n\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return null\n }\n\n const jobCompensation = primaryJob.compensations[0]\n if (!jobCompensation) {\n return null\n }\n if (!jobCompensation.rate || parseFloat(jobCompensation.rate) === 0) {\n return null\n }\n\n const rate = parseFloat(jobCompensation.rate)\n const paymentUnit = jobCompensation.paymentUnit || 'Hour'\n\n return { rate, paymentUnit }\n}\n\nexport const getRegularHours = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.hourlyCompensations) return 0\n\n return compensation.hourlyCompensations\n .filter(hourlyCompensation => hourlyCompensation.name?.toLowerCase() === 'regular hours')\n .reduce((sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'), 0)\n}\n\nexport function getOvertimeHours(compensation: PayrollEmployeeCompensationsType) {\n if (!compensation.hourlyCompensations || compensation.excluded) {\n return 0\n }\n\n return compensation.hourlyCompensations\n .filter(hourlyCompensation => Number(hourlyCompensation.compensationMultiplier) > 1)\n .reduce((sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'), 0)\n}\n\nexport const getTotalPtoHours = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.paidTimeOff) {\n return 0\n }\n return compensation.paidTimeOff.reduce((sum, pto) => sum + parseFloat(pto.hours || '0'), 0)\n}\n\nexport const getAdditionalEarnings = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.fixedCompensations) {\n return 0\n }\n\n return compensation.fixedCompensations\n .filter(fixedCompensation => {\n const name = fixedCompensation.name?.toLowerCase() || ''\n const amount = parseFloat(fixedCompensation.amount || '0')\n return name !== 'reimbursement' && name !== 'minimum wage adjustment' && amount > 0\n })\n .reduce((sum, fixedCompensation) => sum + parseFloat(fixedCompensation.amount || '0'), 0)\n}\n\nexport const getReimbursements = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.fixedCompensations) {\n return 0\n }\n\n const reimbursementComp = compensation.fixedCompensations.find(\n fixedCompensation => fixedCompensation.name?.toLowerCase() === 'reimbursement',\n )\n return reimbursementComp ? parseFloat(reimbursementComp.amount || '0') : 0\n}\n\nexport const formatHoursDisplay = (hours: number): string => {\n const rounded = roundToTwoDecimals(hours)\n\n if (rounded % 1 === 0) {\n return `${rounded}.0`\n }\n\n return rounded.toString()\n}\n\nconst getHoursInPayPeriod = (paySchedule: PayScheduleObject): number => {\n if (!paySchedule.frequency) {\n return 0\n }\n\n return PAY_PERIOD_HOURS_MAPPINGS[paySchedule.frequency] || 0\n}\n\nconst getEffectiveCompensation = (\n compensations: Compensation[],\n effectiveDate: Date,\n): Compensation | null => {\n if (!compensations.length) return null\n\n const sorted = [...compensations].sort(\n (a, b) =>\n (a.effectiveDate ? new Date(a.effectiveDate).getTime() : 0) -\n (b.effectiveDate ? new Date(b.effectiveDate).getTime() : 0),\n )\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const currentDateString = sorted[i]?.effectiveDate\n const currentDate = currentDateString ? new Date(currentDateString) : null\n if (currentDate && currentDate <= effectiveDate) {\n return sorted[i] || null\n }\n }\n\n return sorted[0] || null\n}\n\nconst getEffectiveMinimumWage = (\n minimumWages: MinimumWages[],\n effectiveDate: Date,\n): MinimumWages | null => {\n if (!minimumWages.length) return null\n\n const sorted = [...minimumWages].sort(\n (a, b) =>\n (a.effectiveDate ? new Date(a.effectiveDate).getTime() : 0) -\n (b.effectiveDate ? new Date(b.effectiveDate).getTime() : 0),\n )\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const currentDateString = sorted[i]?.effectiveDate\n const currentDate = currentDateString ? new Date(currentDateString) : null\n if (currentDate && currentDate <= effectiveDate) {\n return sorted[i] || null\n }\n }\n\n return sorted[0] || null\n}\n\nconst isSalaried = (compensation: Compensation): boolean => {\n return compensation.flsaStatus === 'Exempt' || compensation.flsaStatus === 'Salaried Nonexempt'\n}\n\nconst getTotalTipCompensations = (fixedCompensations: PayrollShowFixedCompensations[]): number => {\n if (!fixedCompensations.length) return 0\n\n return fixedCompensations\n .filter(fixedCompensation => {\n const name = fixedCompensation.name?.toLowerCase()\n const amount = parseFloat(fixedCompensation.amount || '0')\n return (name === 'paycheck tips' || name === 'cash tips') && amount > 0\n })\n .reduce((sum, fixedCompensation) => sum + parseFloat(fixedCompensation.amount || '0'), 0)\n}\n\nconst calculateHourlyRate = (compensation: Compensation): number => {\n const rate = parseFloat(compensation.rate || '0')\n const paymentUnit = compensation.paymentUnit || 'Hour'\n\n switch (paymentUnit) {\n case 'Hour':\n return rate\n case 'Year':\n return rate / 2080 // 52 weeks * 40 hours\n case 'Month':\n return rate / 173.333333\n case 'Week':\n return rate / 40\n case 'Paycheck':\n return 0 // Paycheck rate is 0 for hourly calculation\n default:\n return rate\n }\n}\n\nconst getHourlyRateForJob = (employee: Employee, jobUuid: string, effectiveDate: Date): number => {\n const job = employee.jobs?.find(j => j.uuid === jobUuid)\n if (!job?.compensations) {\n return 0\n }\n\n const compensation = getEffectiveCompensation(job.compensations, effectiveDate)\n return compensation ? calculateHourlyRate(compensation) : 0\n}\n\nconst getPrimaryHourlyRate = (employee: Employee, effectiveDate: Date): number => {\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return 0\n }\n\n const compensation = getEffectiveCompensation(primaryJob.compensations, effectiveDate)\n return compensation ? calculateHourlyRate(compensation) : 0\n}\n\nconst getTotalOutstandingPtoHours = (compensation: PayrollEmployeeCompensationsType): number => {\n if (!compensation.paidTimeOff) {\n return 0\n }\n\n return compensation.paidTimeOff.reduce(\n (sum, paidTimeOff) => sum + parseFloat(paidTimeOff.finalPayoutUnusedHoursInput || '0'),\n 0,\n )\n}\n\nconst getPtoHours = (\n compensation: PayrollEmployeeCompensationsType,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n offCycle: boolean,\n): number => {\n const regularPtoHours = getTotalPtoHours(compensation)\n\n if (offCycle) {\n const outstandingPtoHours = getTotalOutstandingPtoHours(compensation)\n return regularPtoHours + outstandingPtoHours\n }\n\n if (isSalariedWithExpectedHours) {\n return Math.min(hoursInPayPeriod, regularPtoHours)\n }\n\n return regularPtoHours\n}\n\nconst calculateMinimumWageAdjustment = (\n primaryCompensation: Compensation,\n compensation: PayrollEmployeeCompensationsType,\n effectiveDate: Date,\n): number => {\n if (!primaryCompensation.adjustForMinimumWage) return 0\n\n const effectiveMinWage = getEffectiveMinimumWage(\n primaryCompensation.minimumWages || [],\n effectiveDate,\n )\n if (!effectiveMinWage) {\n return 0\n }\n\n const totalHours =\n compensation.hourlyCompensations?.reduce(\n (sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'),\n 0,\n ) || 0\n\n const hourlyRate = calculateHourlyRate(primaryCompensation)\n\n const totalTipCredit = (parseFloat(effectiveMinWage.wage || '0') - hourlyRate) * totalHours\n const totalTips = getTotalTipCompensations(compensation.fixedCompensations || [])\n\n return Math.max(0, totalTipCredit - totalTips)\n}\n\nconst calculateRegularPlusOvertimePay = (\n compensation: PayrollEmployeeCompensationsType,\n employee: Employee,\n effectiveDate: Date,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n ptoHours: number,\n isOffCycle: boolean,\n): number => {\n if (!isOffCycle && isSalariedWithExpectedHours) {\n const primaryHourlyRate = getPrimaryHourlyRate(employee, effectiveDate)\n return primaryHourlyRate * (hoursInPayPeriod - ptoHours)\n }\n\n if (!compensation.hourlyCompensations || !employee.jobs) {\n return 0\n }\n\n const regularRatePay = compensation.hourlyCompensations.reduce((sum, hc) => {\n const hours = parseFloat(hc.hours || '0')\n const hourlyRate = getHourlyRateForJob(employee, hc.jobUuid || '', effectiveDate)\n return sum + hours * hourlyRate\n }, 0)\n\n const totalHours = compensation.hourlyCompensations.reduce((sum, hc) => {\n return sum + parseFloat(hc.hours || '0')\n }, 0)\n\n if (totalHours === 0) return regularRatePay\n\n const overtimeWeightedRate = roundToSixDecimals(regularRatePay / totalHours)\n\n // Calculate overtime pay for non-regular hours\n const overtimePay = compensation.hourlyCompensations\n .filter(hc => !isRegularHours(hc.name || ''))\n .reduce((sum, hc) => {\n const hours = parseFloat(hc.hours || '0')\n const multiplier = hc.compensationMultiplier || 1\n return sum + hours * overtimeWeightedRate * (multiplier - 1)\n }, 0)\n\n return regularRatePay + overtimePay\n}\n\nconst calculatePtoPay = (\n compensation: PayrollEmployeeCompensationsType,\n employee: Employee,\n effectiveDate: Date,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n offCycle: boolean,\n): number => {\n const ptoHours = getPtoHours(\n compensation,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n const primaryHourlyRate = getPrimaryHourlyRate(employee, effectiveDate)\n return ptoHours * primaryHourlyRate\n}\n\nconst isSalariedWithPayPeriodExpectedHours = (\n compensation: PayrollEmployeeCompensationsType,\n isSalaried: boolean,\n hoursInPayPeriod: number,\n): boolean => {\n if (!isSalaried) return false\n\n const regularHourlyCompensation = compensation.hourlyCompensations?.find(hourlyCompensation =>\n isRegularHours(hourlyCompensation.name || ''),\n )\n\n if (!regularHourlyCompensation) return false\n\n const regularHours = parseFloat(regularHourlyCompensation.hours || '0')\n return regularHours === hoursInPayPeriod\n}\n\nexport const calculateGrossPay = (\n compensation: PayrollEmployeeCompensationsType,\n employee: Employee,\n compensationEffectiveDateString?: string,\n paySchedule?: PayScheduleObject,\n payrollCategory: PayrollCategory = PayrollCategory.Regular,\n): number => {\n if (compensation.excluded) {\n return 0\n }\n\n const compensationEffectiveDate = compensationEffectiveDateString\n ? new Date(compensationEffectiveDateString)\n : new Date()\n\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return 0\n }\n\n const primaryCompensation = getEffectiveCompensation(\n primaryJob.compensations,\n compensationEffectiveDate,\n )\n\n if (!primaryCompensation) {\n return 0\n }\n\n const salaried = isSalaried(primaryCompensation)\n const hoursInPayPeriod = paySchedule ? getHoursInPayPeriod(paySchedule) : 0\n\n const isSalariedWithExpectedHours = isSalariedWithPayPeriodExpectedHours(\n compensation,\n salaried,\n hoursInPayPeriod,\n )\n\n const offCycle = isOffCyclePayroll(payrollCategory)\n\n const ptoHours = getPtoHours(\n compensation,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n\n const regularPlusOvertimePay = calculateRegularPlusOvertimePay(\n compensation,\n employee,\n compensationEffectiveDate,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n ptoHours,\n offCycle,\n )\n\n const fixedPay = getAdditionalEarnings(compensation)\n const ptoPay = calculatePtoPay(\n compensation,\n employee,\n compensationEffectiveDate,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n const minimumWageAdjustment = calculateMinimumWageAdjustment(\n primaryCompensation,\n compensation,\n compensationEffectiveDate,\n )\n\n const total = regularPlusOvertimePay + fixedPay + ptoPay + minimumWageAdjustment\n return roundToTwoDecimals(total)\n}\n\n// Payroll type and status utilities\nexport const getPayrollType = (payroll: {\n external?: boolean\n offCycle?: boolean\n}): PayrollType => {\n if (payroll.external) return 'External'\n if (payroll.offCycle) return 'Off-Cycle'\n return 'Regular'\n}\n\nconst OFF_CYCLE_REASON_LABELS: Record<string, string> = {\n Bonus: 'Bonus',\n Correction: 'Correction',\n 'Transition from old pay schedule': 'Transition',\n 'Dismissed employee': 'Dismissal',\n 'Hired employee': 'New Hire',\n 'Benefit reversal': 'Benefit Reversal',\n 'Wage correction': 'Wage Correction',\n 'Tax reconciliation': 'Tax Reconciliation',\n Reversal: 'Reversal',\n 'Disability insurance distribution': 'Disability Insurance',\n}\n\nexport const getPayrollTypeLabel = (payroll: {\n external?: boolean\n offCycle?: boolean\n offCycleReason?: string | null\n}): string => {\n if (payroll.external) return 'External'\n if (payroll.offCycle && payroll.offCycleReason) {\n return OFF_CYCLE_REASON_LABELS[payroll.offCycleReason] ?? payroll.offCycleReason\n }\n if (payroll.offCycle) return 'Off-Cycle'\n return 'Regular'\n}\n\nexport const getAdditionalEarningsCompensations = ({\n flsaStatus,\n existingFixedCompensations = [],\n primaryJobUuid,\n fixedCompensationTypes = [],\n excludedTypes = [],\n}: {\n flsaStatus: string | undefined\n existingFixedCompensations?: FixedCompensations[]\n primaryJobUuid?: string\n fixedCompensationTypes?: PayrollFixedCompensationTypesType[]\n excludedTypes?: string[]\n}): FixedCompensations[] => {\n const allFixedCompensations = [...existingFixedCompensations]\n\n if (flsaStatus !== FlsaStatus.OWNER && primaryJobUuid && fixedCompensationTypes.length > 0) {\n const compensationTypeNames = fixedCompensationTypes\n .map(type => type.name)\n .filter(Boolean) as string[]\n\n compensationTypeNames.forEach(compensationName => {\n const exists = allFixedCompensations.some(\n comp => comp.name?.toLowerCase() === compensationName.toLowerCase(),\n )\n\n if (!exists) {\n allFixedCompensations.push({\n name: compensationName,\n amount: '0.00',\n jobUuid: primaryJobUuid,\n })\n }\n })\n }\n\n // Filter and sort additional earnings (exclude specified types)\n return allFixedCompensations\n .filter(comp => comp.name && !excludedTypes.includes(comp.name))\n .sort((a, b) => (a.name || '').localeCompare(b.name || ''))\n}\n\nexport const getReimbursementCompensation = (\n fixedCompensations: FixedCompensations[],\n fixedCompensationTypes: PayrollFixedCompensationTypesType[],\n primaryJobUuid?: string,\n) => {\n const reimbursementCompensation = fixedCompensations.find(\n comp => comp.name?.toLowerCase() === COMPENSATION_NAME_REIMBURSEMENT.toLowerCase(),\n )\n\n if (reimbursementCompensation) {\n return reimbursementCompensation\n }\n\n if (\n primaryJobUuid &&\n fixedCompensationTypes.some(\n type => type.name?.toLowerCase() === COMPENSATION_NAME_REIMBURSEMENT.toLowerCase(),\n )\n ) {\n return {\n name: COMPENSATION_NAME_REIMBURSEMENT,\n amount: '0.00',\n jobUuid: primaryJobUuid,\n }\n }\n\n return null\n}\n\n// Total Payroll = Gross Pay + Employer Taxes + Reimbursements + Benefits\nexport const calculateTotalPayroll = (payrollData: Payroll) => {\n const totalPayroll = payrollData.totals\n ? Number(payrollData.totals.grossPay ?? 0) +\n Number(payrollData.totals.employerTaxes ?? 0) +\n Number(payrollData.totals.reimbursements ?? 0) +\n Number(payrollData.totals.benefits ?? 0)\n : 0\n\n return totalPayroll\n}\n\n/**\n * Converts a Date to Pacific Time considering Daylight Saving Time.\n * Returns the UTC offset in hours (e.g., -7 for PDT, -8 for PST).\n *\n * DST rules for Pacific Time:\n * - Starts: Second Sunday in March at 2:00 AM\n * - Ends: First Sunday in November at 2:00 AM\n */\nconst getPacificTimeOffset = (date: Date): number => {\n const year = date.getFullYear()\n\n const secondSundayMarch = new Date(year, 2, 1)\n secondSundayMarch.setDate(1 + (7 - secondSundayMarch.getDay()) + 7)\n\n const firstSundayNovember = new Date(year, 10, 1)\n firstSundayNovember.setDate(1 + ((7 - firstSundayNovember.getDay()) % 7))\n\n const isDST = date >= secondSundayMarch && date < firstSundayNovember\n return isDST ? -7 : -8\n}\n\n/**\n * Determines if a payroll can be cancelled based on business rules.\n *\n * A payroll can be cancelled if all of the following conditions are met:\n * - The payroll has been processed (processed === true)\n * - Current time is before 4:00 PM PT on the payroll deadline\n * - The payrollStatusMeta.cancellable flag is not explicitly false\n *\n * This check enforces the business rule that payrolls can only be cancelled\n * before the 4:00 PM PT cutoff time on their deadline date.\n */\nexport const canCancelPayroll = (payroll: Payroll): boolean => {\n if (payroll.payrollStatusMeta?.cancellable === false) {\n return false\n }\n\n if (!payroll.processed) {\n return false\n }\n\n if (!payroll.payrollDeadline) {\n return false\n }\n\n const now = new Date()\n const deadline = new Date(payroll.payrollDeadline)\n\n const nowInPT = new Date(now.getTime() + getPacificTimeOffset(now) * MS_PER_HOUR)\n const deadlineInPT = new Date(deadline.getTime() + getPacificTimeOffset(deadline) * MS_PER_HOUR)\n\n const cutoffTime = new Date(deadlineInPT)\n cutoffTime.setUTCHours(16, 0, 0, 0)\n\n if (nowInPT >= cutoffTime) {\n return false\n }\n\n return true\n}\n"],"names":["REGULAR_HOURS_NAME","getPrimaryJob","employee","job","roundToSixDecimals","value","roundToTwoDecimals","isRegularHours","compensationName","PAY_PERIOD_HOURS_MAPPINGS","formatEmployeePayRate","locale","primaryJob","jobCompensation","rate","paymentUnit","formatPayRate","useFormatEmployeePayRate","t","useTranslation","useLocale","useCallback","getRegularHours","compensation","hourlyCompensation","sum","getOvertimeHours","getTotalPtoHours","pto","getAdditionalEarnings","fixedCompensation","name","amount","getReimbursements","reimbursementComp","formatHoursDisplay","hours","rounded","getHoursInPayPeriod","paySchedule","getEffectiveCompensation","compensations","effectiveDate","sorted","a","b","i","currentDateString","currentDate","getEffectiveMinimumWage","minimumWages","isSalaried","getTotalTipCompensations","fixedCompensations","calculateHourlyRate","getHourlyRateForJob","jobUuid","j","getPrimaryHourlyRate","getTotalOutstandingPtoHours","paidTimeOff","getPtoHours","isSalariedWithExpectedHours","hoursInPayPeriod","offCycle","regularPtoHours","outstandingPtoHours","calculateMinimumWageAdjustment","primaryCompensation","effectiveMinWage","totalHours","hourlyRate","totalTipCredit","totalTips","calculateRegularPlusOvertimePay","ptoHours","isOffCycle","regularRatePay","hc","overtimeWeightedRate","overtimePay","multiplier","calculatePtoPay","primaryHourlyRate","isSalariedWithPayPeriodExpectedHours","regularHourlyCompensation","calculateGrossPay","compensationEffectiveDateString","payrollCategory","PayrollCategory","compensationEffectiveDate","salaried","isOffCyclePayroll","regularPlusOvertimePay","fixedPay","ptoPay","minimumWageAdjustment","total","OFF_CYCLE_REASON_LABELS","getPayrollTypeLabel","payroll","getAdditionalEarningsCompensations","flsaStatus","existingFixedCompensations","primaryJobUuid","fixedCompensationTypes","excludedTypes","allFixedCompensations","FlsaStatus","type","comp","getReimbursementCompensation","reimbursementCompensation","COMPENSATION_NAME_REIMBURSEMENT","calculateTotalPayroll","payrollData","getPacificTimeOffset","date","year","secondSundayMarch","firstSundayNovember","canCancelPayroll","now","deadline","nowInPT","MS_PER_HOUR","deadlineInPT","cutoffTime"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/components/Payroll/helpers.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollShowFixedCompensations } from '@gusto/embedded-api/models/components/payroll'\nimport type { PayrollEmployeeCompensationsTypeFixedCompensations as FixedCompensations } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollFixedCompensationTypesType } from '@gusto/embedded-api/models/components/payrollfixedcompensationtypestype'\nimport { useCallback } from 'react'\nimport type { TFunction } from 'i18next'\nimport { useTranslation } from 'react-i18next'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport type { Compensation, MinimumWages } from '@gusto/embedded-api/models/components/compensation'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payroll'\nimport type { PayrollType } from './PayrollList/types'\nimport { PayrollCategory, isOffCyclePayroll } from './payrollTypes'\nimport { formatPayRate } from '@/helpers/formattedStrings'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\nimport { COMPENSATION_NAME_REIMBURSEMENT, FlsaStatus } from '@/shared/constants'\nimport { MS_PER_HOUR } from '@/helpers/dateFormatting'\nconst REGULAR_HOURS_NAME = 'regular hours'\n\n// Utility to get the primary job from an employee\nexport const getPrimaryJob = (employee: Employee) => {\n return employee.jobs?.find(job => job.primary) || employee.jobs?.[0] || null\n}\n\nconst roundToSixDecimals = (value: number): number => {\n return Math.round(value * 1_000_000) / 1_000_000\n}\n\nconst roundToTwoDecimals = (value: number): number => {\n return Math.round(value * 100) / 100\n}\n\nconst isRegularHours = (compensationName: string): boolean => {\n return compensationName.toLowerCase() === REGULAR_HOURS_NAME\n}\n\nconst PAY_PERIOD_HOURS_MAPPINGS: Record<string, number> = {\n Daily: 8.0,\n 'Every week': 40.0,\n 'Every other week': 80.0,\n 'Twice per month': 86.666667,\n Monthly: 173.333333,\n Quarterly: 520.0,\n Semiannually: 1040.0,\n Annually: 2080.0,\n}\n\nexport const formatEmployeePayRate = ({\n employee,\n t,\n locale = 'en-US',\n}: {\n employee?: Employee\n t: TFunction\n locale?: string\n}) => {\n if (!employee?.jobs) {\n return null\n }\n\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return null\n }\n\n const jobCompensation = primaryJob.compensations[0]\n if (!jobCompensation) {\n return null\n }\n if (!jobCompensation.rate || parseFloat(jobCompensation.rate) === 0) {\n return null\n }\n\n const rate = parseFloat(jobCompensation.rate)\n const paymentUnit = jobCompensation.paymentUnit || 'Hour'\n\n return formatPayRate({ rate, paymentUnit, t, locale })\n}\n\nexport const useFormatEmployeePayRate = () => {\n const { t } = useTranslation('common')\n const { locale } = useLocale()\n\n return useCallback(\n (employee?: Employee) => {\n return formatEmployeePayRate({ employee, t, locale })\n },\n [t, locale],\n )\n}\n\nexport const getEmployeePayRateInfo = (employee: Employee | undefined) => {\n if (!employee?.jobs) {\n return null\n }\n\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return null\n }\n\n const jobCompensation = primaryJob.compensations[0]\n if (!jobCompensation) {\n return null\n }\n if (!jobCompensation.rate || parseFloat(jobCompensation.rate) === 0) {\n return null\n }\n\n const rate = parseFloat(jobCompensation.rate)\n const paymentUnit = jobCompensation.paymentUnit || 'Hour'\n\n return { rate, paymentUnit }\n}\n\nexport const getRegularHours = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.hourlyCompensations) return 0\n\n return compensation.hourlyCompensations\n .filter(hourlyCompensation => hourlyCompensation.name?.toLowerCase() === 'regular hours')\n .reduce((sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'), 0)\n}\n\nexport function getOvertimeHours(compensation: PayrollEmployeeCompensationsType) {\n if (!compensation.hourlyCompensations || compensation.excluded) {\n return 0\n }\n\n return compensation.hourlyCompensations\n .filter(hourlyCompensation => Number(hourlyCompensation.compensationMultiplier) > 1)\n .reduce((sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'), 0)\n}\n\nexport const getTotalPtoHours = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.paidTimeOff) {\n return 0\n }\n return compensation.paidTimeOff.reduce((sum, pto) => sum + parseFloat(pto.hours || '0'), 0)\n}\n\nexport const getAdditionalEarnings = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.fixedCompensations) {\n return 0\n }\n\n return compensation.fixedCompensations\n .filter(fixedCompensation => {\n const name = fixedCompensation.name?.toLowerCase() || ''\n const amount = parseFloat(fixedCompensation.amount || '0')\n return name !== 'reimbursement' && name !== 'minimum wage adjustment' && amount > 0\n })\n .reduce((sum, fixedCompensation) => sum + parseFloat(fixedCompensation.amount || '0'), 0)\n}\n\nexport const getReimbursements = (compensation: PayrollEmployeeCompensationsType) => {\n if (!compensation.fixedCompensations) {\n return 0\n }\n\n const reimbursementComp = compensation.fixedCompensations.find(\n fixedCompensation => fixedCompensation.name?.toLowerCase() === 'reimbursement',\n )\n return reimbursementComp ? parseFloat(reimbursementComp.amount || '0') : 0\n}\n\nexport const formatHoursDisplay = (hours: number): string => {\n const rounded = roundToTwoDecimals(hours)\n\n if (rounded % 1 === 0) {\n return `${rounded}.0`\n }\n\n return rounded.toString()\n}\n\nconst getHoursInPayPeriod = (paySchedule: PayScheduleObject): number => {\n if (!paySchedule.frequency) {\n return 0\n }\n\n return PAY_PERIOD_HOURS_MAPPINGS[paySchedule.frequency] || 0\n}\n\nconst getEffectiveCompensation = (\n compensations: Compensation[],\n effectiveDate: Date,\n): Compensation | null => {\n if (!compensations.length) return null\n\n const sorted = [...compensations].sort(\n (a, b) =>\n (a.effectiveDate ? new Date(a.effectiveDate).getTime() : 0) -\n (b.effectiveDate ? new Date(b.effectiveDate).getTime() : 0),\n )\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const currentDateString = sorted[i]?.effectiveDate\n const currentDate = currentDateString ? new Date(currentDateString) : null\n if (currentDate && currentDate <= effectiveDate) {\n return sorted[i] || null\n }\n }\n\n return sorted[0] || null\n}\n\nconst getEffectiveMinimumWage = (\n minimumWages: MinimumWages[],\n effectiveDate: Date,\n): MinimumWages | null => {\n if (!minimumWages.length) return null\n\n const sorted = [...minimumWages].sort(\n (a, b) =>\n (a.effectiveDate ? new Date(a.effectiveDate).getTime() : 0) -\n (b.effectiveDate ? new Date(b.effectiveDate).getTime() : 0),\n )\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const currentDateString = sorted[i]?.effectiveDate\n const currentDate = currentDateString ? new Date(currentDateString) : null\n if (currentDate && currentDate <= effectiveDate) {\n return sorted[i] || null\n }\n }\n\n return sorted[0] || null\n}\n\nconst isSalaried = (compensation: Compensation): boolean => {\n return compensation.flsaStatus === 'Exempt' || compensation.flsaStatus === 'Salaried Nonexempt'\n}\n\nconst getTotalTipCompensations = (fixedCompensations: PayrollShowFixedCompensations[]): number => {\n if (!fixedCompensations.length) return 0\n\n return fixedCompensations\n .filter(fixedCompensation => {\n const name = fixedCompensation.name?.toLowerCase()\n const amount = parseFloat(fixedCompensation.amount || '0')\n return (name === 'paycheck tips' || name === 'cash tips') && amount > 0\n })\n .reduce((sum, fixedCompensation) => sum + parseFloat(fixedCompensation.amount || '0'), 0)\n}\n\nconst calculateHourlyRate = (compensation: Compensation): number => {\n const rate = parseFloat(compensation.rate || '0')\n const paymentUnit = compensation.paymentUnit || 'Hour'\n\n switch (paymentUnit) {\n case 'Hour':\n return rate\n case 'Year':\n return rate / 2080 // 52 weeks * 40 hours\n case 'Month':\n return rate / 173.333333\n case 'Week':\n return rate / 40\n case 'Paycheck':\n return 0 // Paycheck rate is 0 for hourly calculation\n default:\n return rate\n }\n}\n\nconst getHourlyRateForJob = (employee: Employee, jobUuid: string, effectiveDate: Date): number => {\n const job = employee.jobs?.find(j => j.uuid === jobUuid)\n if (!job?.compensations) {\n return 0\n }\n\n const compensation = getEffectiveCompensation(job.compensations, effectiveDate)\n return compensation ? calculateHourlyRate(compensation) : 0\n}\n\nconst getPrimaryHourlyRate = (employee: Employee, effectiveDate: Date): number => {\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return 0\n }\n\n const compensation = getEffectiveCompensation(primaryJob.compensations, effectiveDate)\n return compensation ? calculateHourlyRate(compensation) : 0\n}\n\nconst getTotalOutstandingPtoHours = (compensation: PayrollEmployeeCompensationsType): number => {\n if (!compensation.paidTimeOff) {\n return 0\n }\n\n return compensation.paidTimeOff.reduce(\n (sum, paidTimeOff) => sum + parseFloat(paidTimeOff.finalPayoutUnusedHoursInput || '0'),\n 0,\n )\n}\n\nconst getPtoHours = (\n compensation: PayrollEmployeeCompensationsType,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n offCycle: boolean,\n): number => {\n const regularPtoHours = getTotalPtoHours(compensation)\n\n if (offCycle) {\n const outstandingPtoHours = getTotalOutstandingPtoHours(compensation)\n return regularPtoHours + outstandingPtoHours\n }\n\n if (isSalariedWithExpectedHours) {\n return Math.min(hoursInPayPeriod, regularPtoHours)\n }\n\n return regularPtoHours\n}\n\nconst calculateMinimumWageAdjustment = (\n primaryCompensation: Compensation,\n compensation: PayrollEmployeeCompensationsType,\n effectiveDate: Date,\n): number => {\n if (!primaryCompensation.adjustForMinimumWage) return 0\n\n const effectiveMinWage = getEffectiveMinimumWage(\n primaryCompensation.minimumWages || [],\n effectiveDate,\n )\n if (!effectiveMinWage) {\n return 0\n }\n\n const totalHours =\n compensation.hourlyCompensations?.reduce(\n (sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'),\n 0,\n ) || 0\n\n const hourlyRate = calculateHourlyRate(primaryCompensation)\n\n const totalTipCredit = (parseFloat(effectiveMinWage.wage || '0') - hourlyRate) * totalHours\n const totalTips = getTotalTipCompensations(compensation.fixedCompensations || [])\n\n return Math.max(0, totalTipCredit - totalTips)\n}\n\nconst calculateRegularPlusOvertimePay = (\n compensation: PayrollEmployeeCompensationsType,\n employee: Employee,\n effectiveDate: Date,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n ptoHours: number,\n isOffCycle: boolean,\n): number => {\n if (!isOffCycle && isSalariedWithExpectedHours) {\n const primaryHourlyRate = getPrimaryHourlyRate(employee, effectiveDate)\n return primaryHourlyRate * (hoursInPayPeriod - ptoHours)\n }\n\n if (!compensation.hourlyCompensations || !employee.jobs) {\n return 0\n }\n\n const regularRatePay = compensation.hourlyCompensations.reduce((sum, hc) => {\n const hours = parseFloat(hc.hours || '0')\n const hourlyRate = getHourlyRateForJob(employee, hc.jobUuid || '', effectiveDate)\n return sum + hours * hourlyRate\n }, 0)\n\n const totalHours = compensation.hourlyCompensations.reduce((sum, hc) => {\n return sum + parseFloat(hc.hours || '0')\n }, 0)\n\n if (totalHours === 0) return regularRatePay\n\n const overtimeWeightedRate = roundToSixDecimals(regularRatePay / totalHours)\n\n // Calculate overtime pay for non-regular hours\n const overtimePay = compensation.hourlyCompensations\n .filter(hc => !isRegularHours(hc.name || ''))\n .reduce((sum, hc) => {\n const hours = parseFloat(hc.hours || '0')\n const multiplier = hc.compensationMultiplier || 1\n return sum + hours * overtimeWeightedRate * (multiplier - 1)\n }, 0)\n\n return regularRatePay + overtimePay\n}\n\nconst calculatePtoPay = (\n compensation: PayrollEmployeeCompensationsType,\n employee: Employee,\n effectiveDate: Date,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n offCycle: boolean,\n): number => {\n const ptoHours = getPtoHours(\n compensation,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n const primaryHourlyRate = getPrimaryHourlyRate(employee, effectiveDate)\n return ptoHours * primaryHourlyRate\n}\n\nconst isSalariedWithPayPeriodExpectedHours = (\n compensation: PayrollEmployeeCompensationsType,\n isSalaried: boolean,\n hoursInPayPeriod: number,\n): boolean => {\n if (!isSalaried) return false\n\n const regularHourlyCompensation = compensation.hourlyCompensations?.find(hourlyCompensation =>\n isRegularHours(hourlyCompensation.name || ''),\n )\n\n if (!regularHourlyCompensation) return false\n\n const regularHours = parseFloat(regularHourlyCompensation.hours || '0')\n return regularHours === hoursInPayPeriod\n}\n\nexport const calculateGrossPay = (\n compensation: PayrollEmployeeCompensationsType,\n employee: Employee,\n compensationEffectiveDateString?: string,\n paySchedule?: PayScheduleObject,\n payrollCategory: PayrollCategory = PayrollCategory.Regular,\n): number => {\n if (compensation.excluded) {\n return 0\n }\n\n const compensationEffectiveDate = compensationEffectiveDateString\n ? new Date(compensationEffectiveDateString)\n : new Date()\n\n const primaryJob = getPrimaryJob(employee)\n if (!primaryJob?.compensations) {\n return 0\n }\n\n const primaryCompensation = getEffectiveCompensation(\n primaryJob.compensations,\n compensationEffectiveDate,\n )\n\n if (!primaryCompensation) {\n return 0\n }\n\n const salaried = isSalaried(primaryCompensation)\n const hoursInPayPeriod = paySchedule ? getHoursInPayPeriod(paySchedule) : 0\n\n const isSalariedWithExpectedHours = isSalariedWithPayPeriodExpectedHours(\n compensation,\n salaried,\n hoursInPayPeriod,\n )\n\n const offCycle = isOffCyclePayroll(payrollCategory)\n\n const ptoHours = getPtoHours(\n compensation,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n\n const regularPlusOvertimePay = calculateRegularPlusOvertimePay(\n compensation,\n employee,\n compensationEffectiveDate,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n ptoHours,\n offCycle,\n )\n\n const fixedPay = getAdditionalEarnings(compensation)\n const ptoPay = calculatePtoPay(\n compensation,\n employee,\n compensationEffectiveDate,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n const minimumWageAdjustment = calculateMinimumWageAdjustment(\n primaryCompensation,\n compensation,\n compensationEffectiveDate,\n )\n\n const total = regularPlusOvertimePay + fixedPay + ptoPay + minimumWageAdjustment\n return roundToTwoDecimals(total)\n}\n\n// Payroll type and status utilities\nexport const getPayrollType = (payroll: {\n external?: boolean\n offCycle?: boolean\n}): PayrollType => {\n if (payroll.external) return 'External'\n if (payroll.offCycle) return 'Off-Cycle'\n return 'Regular'\n}\n\nconst OFF_CYCLE_REASON_LABELS: Record<string, string> = {\n Bonus: 'Bonus',\n Correction: 'Correction',\n 'Transition from old pay schedule': 'Transition',\n 'Dismissed employee': 'Dismissal',\n 'Hired employee': 'New Hire',\n 'Benefit reversal': 'Benefit Reversal',\n 'Wage correction': 'Wage Correction',\n 'Tax reconciliation': 'Tax Reconciliation',\n Reversal: 'Reversal',\n 'Disability insurance distribution': 'Disability Insurance',\n}\n\nexport const getPayrollTypeLabel = (payroll: {\n external?: boolean\n offCycle?: boolean\n offCycleReason?: string | null\n}): string => {\n if (payroll.external) return 'External'\n if (payroll.offCycle && payroll.offCycleReason) {\n return OFF_CYCLE_REASON_LABELS[payroll.offCycleReason] ?? payroll.offCycleReason\n }\n if (payroll.offCycle) return 'Off-Cycle'\n return 'Regular'\n}\n\nexport const getAdditionalEarningsCompensations = ({\n flsaStatus,\n existingFixedCompensations = [],\n primaryJobUuid,\n fixedCompensationTypes = [],\n excludedTypes = [],\n}: {\n flsaStatus: string | undefined\n existingFixedCompensations?: FixedCompensations[]\n primaryJobUuid?: string\n fixedCompensationTypes?: PayrollFixedCompensationTypesType[]\n excludedTypes?: string[]\n}): FixedCompensations[] => {\n const allFixedCompensations = [...existingFixedCompensations]\n\n if (flsaStatus !== FlsaStatus.OWNER && primaryJobUuid && fixedCompensationTypes.length > 0) {\n const compensationTypeNames = fixedCompensationTypes\n .map(type => type.name)\n .filter(Boolean) as string[]\n\n compensationTypeNames.forEach(compensationName => {\n const exists = allFixedCompensations.some(\n comp => comp.name?.toLowerCase() === compensationName.toLowerCase(),\n )\n\n if (!exists) {\n allFixedCompensations.push({\n name: compensationName,\n amount: '0.00',\n jobUuid: primaryJobUuid,\n })\n }\n })\n }\n\n // Filter and sort additional earnings (exclude specified types)\n return allFixedCompensations\n .filter(comp => comp.name && !excludedTypes.includes(comp.name))\n .sort((a, b) => (a.name || '').localeCompare(b.name || ''))\n}\n\nexport const getReimbursementCompensation = (\n fixedCompensations: FixedCompensations[],\n fixedCompensationTypes: PayrollFixedCompensationTypesType[],\n primaryJobUuid?: string,\n) => {\n const reimbursementCompensation = fixedCompensations.find(\n comp => comp.name?.toLowerCase() === COMPENSATION_NAME_REIMBURSEMENT.toLowerCase(),\n )\n\n if (reimbursementCompensation) {\n return reimbursementCompensation\n }\n\n if (\n primaryJobUuid &&\n fixedCompensationTypes.some(\n type => type.name?.toLowerCase() === COMPENSATION_NAME_REIMBURSEMENT.toLowerCase(),\n )\n ) {\n return {\n name: COMPENSATION_NAME_REIMBURSEMENT,\n amount: '0.00',\n jobUuid: primaryJobUuid,\n }\n }\n\n return null\n}\n\nexport const hasDirectDepositEmployees = (\n employeeCompensations?: Array<{ paymentMethod?: string | null; excluded?: boolean }>,\n): boolean => {\n if (!employeeCompensations || employeeCompensations.length === 0) return true\n const activeCompensations = employeeCompensations.filter(comp => !comp.excluded)\n if (activeCompensations.length === 0) return true\n return activeCompensations.some(comp => comp.paymentMethod === 'Direct Deposit')\n}\n\n// Total Payroll = Gross Pay + Employer Taxes + Reimbursements + Benefits\nexport const calculateTotalPayroll = (payrollData: Payroll) => {\n const totalPayroll = payrollData.totals\n ? Number(payrollData.totals.grossPay ?? 0) +\n Number(payrollData.totals.employerTaxes ?? 0) +\n Number(payrollData.totals.reimbursements ?? 0) +\n Number(payrollData.totals.benefits ?? 0)\n : 0\n\n return totalPayroll\n}\n\n/**\n * Converts a Date to Pacific Time considering Daylight Saving Time.\n * Returns the UTC offset in hours (e.g., -7 for PDT, -8 for PST).\n *\n * DST rules for Pacific Time:\n * - Starts: Second Sunday in March at 2:00 AM\n * - Ends: First Sunday in November at 2:00 AM\n */\nconst getPacificTimeOffset = (date: Date): number => {\n const year = date.getFullYear()\n\n const secondSundayMarch = new Date(year, 2, 1)\n secondSundayMarch.setDate(1 + (7 - secondSundayMarch.getDay()) + 7)\n\n const firstSundayNovember = new Date(year, 10, 1)\n firstSundayNovember.setDate(1 + ((7 - firstSundayNovember.getDay()) % 7))\n\n const isDST = date >= secondSundayMarch && date < firstSundayNovember\n return isDST ? -7 : -8\n}\n\n/**\n * Determines if a payroll can be cancelled based on business rules.\n *\n * A payroll can be cancelled if all of the following conditions are met:\n * - The payroll has been processed (processed === true)\n * - Current time is before 4:00 PM PT on the payroll deadline\n * - The payrollStatusMeta.cancellable flag is not explicitly false\n *\n * This check enforces the business rule that payrolls can only be cancelled\n * before the 4:00 PM PT cutoff time on their deadline date.\n */\nexport const canCancelPayroll = (payroll: Payroll): boolean => {\n if (payroll.payrollStatusMeta?.cancellable === false) {\n return false\n }\n\n if (!payroll.processed) {\n return false\n }\n\n if (!payroll.payrollDeadline) {\n return false\n }\n\n const now = new Date()\n const deadline = new Date(payroll.payrollDeadline)\n\n const nowInPT = new Date(now.getTime() + getPacificTimeOffset(now) * MS_PER_HOUR)\n const deadlineInPT = new Date(deadline.getTime() + getPacificTimeOffset(deadline) * MS_PER_HOUR)\n\n const cutoffTime = new Date(deadlineInPT)\n cutoffTime.setUTCHours(16, 0, 0, 0)\n\n if (nowInPT >= cutoffTime) {\n return false\n }\n\n return true\n}\n"],"names":["REGULAR_HOURS_NAME","getPrimaryJob","employee","job","roundToSixDecimals","value","roundToTwoDecimals","isRegularHours","compensationName","PAY_PERIOD_HOURS_MAPPINGS","formatEmployeePayRate","locale","primaryJob","jobCompensation","rate","paymentUnit","formatPayRate","useFormatEmployeePayRate","t","useTranslation","useLocale","useCallback","getRegularHours","compensation","hourlyCompensation","sum","getOvertimeHours","getTotalPtoHours","pto","getAdditionalEarnings","fixedCompensation","name","amount","getReimbursements","reimbursementComp","formatHoursDisplay","hours","rounded","getHoursInPayPeriod","paySchedule","getEffectiveCompensation","compensations","effectiveDate","sorted","a","b","i","currentDateString","currentDate","getEffectiveMinimumWage","minimumWages","isSalaried","getTotalTipCompensations","fixedCompensations","calculateHourlyRate","getHourlyRateForJob","jobUuid","j","getPrimaryHourlyRate","getTotalOutstandingPtoHours","paidTimeOff","getPtoHours","isSalariedWithExpectedHours","hoursInPayPeriod","offCycle","regularPtoHours","outstandingPtoHours","calculateMinimumWageAdjustment","primaryCompensation","effectiveMinWage","totalHours","hourlyRate","totalTipCredit","totalTips","calculateRegularPlusOvertimePay","ptoHours","isOffCycle","regularRatePay","hc","overtimeWeightedRate","overtimePay","multiplier","calculatePtoPay","primaryHourlyRate","isSalariedWithPayPeriodExpectedHours","regularHourlyCompensation","calculateGrossPay","compensationEffectiveDateString","payrollCategory","PayrollCategory","compensationEffectiveDate","salaried","isOffCyclePayroll","regularPlusOvertimePay","fixedPay","ptoPay","minimumWageAdjustment","total","OFF_CYCLE_REASON_LABELS","getPayrollTypeLabel","payroll","getAdditionalEarningsCompensations","flsaStatus","existingFixedCompensations","primaryJobUuid","fixedCompensationTypes","excludedTypes","allFixedCompensations","FlsaStatus","type","comp","getReimbursementCompensation","reimbursementCompensation","COMPENSATION_NAME_REIMBURSEMENT","hasDirectDepositEmployees","employeeCompensations","activeCompensations","calculateTotalPayroll","payrollData","getPacificTimeOffset","date","year","secondSundayMarch","firstSundayNovember","canCancelPayroll","now","deadline","nowInPT","MS_PER_HOUR","deadlineInPT","cutoffTime"],"mappings":"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"}
@@ -7,12 +7,12 @@ import "react-error-boundary";
7
7
  import "react-i18next";
8
8
  import "@tanstack/react-query";
9
9
  import { useBase as j } from "../Base/useBase.js";
10
- import "../../shared/constants.js";
11
- import "classnames";
12
- import "../../contexts/ComponentAdapter/useComponentContext.js";
10
+ import "@gusto/embedded-api/models/errors/apierror";
13
11
  import "@gusto/embedded-api/models/errors/gustoembeddederror";
14
- import "@gusto/embedded-api/models/errors/httpclienterrors";
15
12
  import "@gusto/embedded-api/models/errors/sdkvalidationerror";
13
+ import "@gusto/embedded-api/models/errors/httpclienterrors";
14
+ import "../../shared/constants.js";
15
+ import "../../contexts/ComponentAdapter/useComponentContext.js";
16
16
  import { retryAsync as x } from "../../helpers/retryAsync.js";
17
17
  const q = 4, v = 1500, w = (e) => e instanceof T ? Array.isArray(e.errors) && e.errors.some((r) => r.category === "invalid_operation") : !1, V = ({
18
18
  companyId: e,
@@ -0,0 +1,6 @@
1
+ import { SDKError } from '../../types/sdkError';
2
+ interface QueryWithError {
3
+ error: Error | null;
4
+ }
5
+ export declare function collectErrors(queries: QueryWithError[], submitError: SDKError | null): SDKError[];
6
+ export {};
@@ -0,0 +1,9 @@
1
+ import { normalizeToSDKError as n } from "../../types/sdkError.js";
2
+ function c(l, o) {
3
+ const e = l.filter((r) => r.error != null).map((r) => n(r.error));
4
+ return o && e.push(o), e;
5
+ }
6
+ export {
7
+ c as collectErrors
8
+ };
9
+ //# sourceMappingURL=collectErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectErrors.js","sources":["../../../src/components/UNSTABLE_Hooks/collectErrors.ts"],"sourcesContent":["import { type SDKError, normalizeToSDKError } from '@/types/sdkError'\n\ninterface QueryWithError {\n error: Error | null\n}\n\nexport function collectErrors(queries: QueryWithError[], submitError: SDKError | null): SDKError[] {\n const queryErrors = queries\n .filter((q): q is QueryWithError & { error: Error } => q.error != null)\n .map(q => normalizeToSDKError(q.error))\n\n if (submitError) {\n queryErrors.push(submitError)\n }\n\n return queryErrors\n}\n"],"names":["collectErrors","queries","submitError","queryErrors","q","normalizeToSDKError"],"mappings":";AAMO,SAASA,EAAcC,GAA2BC,GAA0C;AACjG,QAAMC,IAAcF,EACjB,OAAO,CAACG,MAA8CA,EAAE,SAAS,IAAI,EACrE,IAAI,CAAAA,MAAKC,EAAoBD,EAAE,KAAK,CAAC;AAExC,SAAIF,KACFC,EAAY,KAAKD,CAAW,GAGvBC;AACT;"}
@@ -2,7 +2,7 @@ import { FieldsMetadata } from './types';
2
2
  import { SDKError } from '../../../types/sdkError';
3
3
  export interface FormFieldsMetadataContextValue {
4
4
  metadata: FieldsMetadata;
5
- error: SDKError | null;
5
+ errors: SDKError[];
6
6
  }
7
7
  export declare const FormFieldsMetadataContext: import('react').Context<FormFieldsMetadataContextValue | null>;
8
- export declare function useFormFieldsMetadataContext(): FormFieldsMetadataContextValue;
8
+ export declare function useFormFieldsMetadataContext(): FormFieldsMetadataContextValue | null;
@@ -1,13 +1,10 @@
1
- import { useContext as e, createContext as o } from "react";
2
- const r = o(null);
3
- function n() {
4
- const t = e(r);
5
- if (!t)
6
- throw new Error("useFormFieldsMetadataContext must be used within a FormFieldsMetadataProvider");
7
- return t;
1
+ import { createContext as t, useContext as e } from "react";
2
+ const o = t(null);
3
+ function r() {
4
+ return e(o);
8
5
  }
9
6
  export {
10
- r as FormFieldsMetadataContext,
11
- n as useFormFieldsMetadataContext
7
+ o as FormFieldsMetadataContext,
8
+ r as useFormFieldsMetadataContext
12
9
  };
13
10
  //# sourceMappingURL=FormFieldsMetadataContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldsMetadataContext.js","sources":["../../../../src/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { FieldsMetadata } from './types'\nimport type { SDKError } from '@/types/sdkError'\n\nexport interface FormFieldsMetadataContextValue {\n metadata: FieldsMetadata\n error: SDKError | null\n}\n\nexport const FormFieldsMetadataContext = createContext<FormFieldsMetadataContextValue | null>(null)\n\nexport function useFormFieldsMetadataContext(): FormFieldsMetadataContextValue {\n const context = useContext(FormFieldsMetadataContext)\n if (!context) {\n throw new Error('useFormFieldsMetadataContext must be used within a FormFieldsMetadataProvider')\n }\n return context\n}\n"],"names":["FormFieldsMetadataContext","createContext","useFormFieldsMetadataContext","context","useContext"],"mappings":";AASO,MAAMA,IAA4BC,EAAqD,IAAI;AAE3F,SAASC,IAA+D;AAC7E,QAAMC,IAAUC,EAAWJ,CAAyB;AACpD,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,+EAA+E;AAEjG,SAAOA;AACT;"}
1
+ {"version":3,"file":"FormFieldsMetadataContext.js","sources":["../../../../src/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { FieldsMetadata } from './types'\nimport type { SDKError } from '@/types/sdkError'\n\nexport interface FormFieldsMetadataContextValue {\n metadata: FieldsMetadata\n errors: SDKError[]\n}\n\nexport const FormFieldsMetadataContext = createContext<FormFieldsMetadataContextValue | null>(null)\n\nexport function useFormFieldsMetadataContext(): FormFieldsMetadataContextValue | null {\n return useContext(FormFieldsMetadataContext)\n}\n"],"names":["FormFieldsMetadataContext","createContext","useFormFieldsMetadataContext","useContext"],"mappings":";AASO,MAAMA,IAA4BC,EAAqD,IAAI;AAE3F,SAASC,IAAsE;AACpF,SAAOC,EAAWH,CAAyB;AAC7C;"}
@@ -3,8 +3,8 @@ import { FieldMetadata, FieldMetadataWithOptions } from './types';
3
3
  import { SDKError } from '../../../types/sdkError';
4
4
  interface FormFieldsMetadataProviderProps {
5
5
  metadata: Record<string, FieldMetadata | FieldMetadataWithOptions>;
6
- error: SDKError | null;
6
+ errors: SDKError[];
7
7
  children: ReactNode;
8
8
  }
9
- export declare function FormFieldsMetadataProvider({ metadata, error, children, }: FormFieldsMetadataProviderProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function FormFieldsMetadataProvider({ metadata, errors, children, }: FormFieldsMetadataProviderProps): import("react/jsx-runtime").JSX.Element;
10
10
  export {};
@@ -0,0 +1,13 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { FormFieldsMetadataContext as a } from "./FormFieldsMetadataContext.js";
3
+ function m({
4
+ metadata: r,
5
+ errors: o,
6
+ children: t
7
+ }) {
8
+ return /* @__PURE__ */ e(a.Provider, { value: { metadata: r, errors: o }, children: t });
9
+ }
10
+ export {
11
+ m as FormFieldsMetadataProvider
12
+ };
13
+ //# sourceMappingURL=FormFieldsMetadataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormFieldsMetadataProvider.js","sources":["../../../../src/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport type { FieldMetadata, FieldMetadataWithOptions } from './types'\nimport { FormFieldsMetadataContext } from './FormFieldsMetadataContext'\nimport type { SDKError } from '@/types/sdkError'\n\ninterface FormFieldsMetadataProviderProps {\n metadata: Record<string, FieldMetadata | FieldMetadataWithOptions>\n errors: SDKError[]\n children: ReactNode\n}\n\nexport function FormFieldsMetadataProvider({\n metadata,\n errors,\n children,\n}: FormFieldsMetadataProviderProps) {\n return (\n <FormFieldsMetadataContext.Provider value={{ metadata, errors }}>\n {children}\n </FormFieldsMetadataContext.Provider>\n )\n}\n"],"names":["FormFieldsMetadataProvider","metadata","errors","children","jsx","FormFieldsMetadataContext"],"mappings":";;AAWO,SAASA,EAA2B;AAAA,EACzC,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AACF,GAAoC;AAClC,SACE,gBAAAC,EAACC,EAA0B,UAA1B,EAAmC,OAAO,EAAE,UAAAJ,GAAU,QAAAC,KACpD,UAAAC,GACH;AAEJ;"}
@@ -1,18 +1,23 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { FieldValues } from 'react-hook-form';
3
- import { HookFormInternals, HookErrors } from '../types';
3
+ import { HookFormInternals } from '../types';
4
4
  import { FieldMetadata, FieldMetadataWithOptions } from './types';
5
+ import { SDKError } from '../../../types/sdkError';
5
6
  interface SDKFormProviderProps<TFormData extends FieldValues = FieldValues, TFieldsMetadata extends {
6
7
  [K in keyof TFieldsMetadata]: FieldMetadata | FieldMetadataWithOptions;
7
8
  } = Record<string, FieldMetadata | FieldMetadataWithOptions>> {
8
- errors: HookErrors;
9
- form: {
10
- fieldsMetadata: TFieldsMetadata;
11
- hookFormInternals: HookFormInternals<TFormData>;
9
+ formHookResult: {
10
+ errorHandling: {
11
+ errors: SDKError[];
12
+ };
13
+ form: {
14
+ fieldsMetadata: TFieldsMetadata;
15
+ hookFormInternals: HookFormInternals<TFormData>;
16
+ };
12
17
  };
13
18
  children: ReactNode;
14
19
  }
15
20
  export declare function SDKFormProvider<TFormData extends FieldValues = FieldValues, TFieldsMetadata extends {
16
21
  [K in keyof TFieldsMetadata]: FieldMetadata | FieldMetadataWithOptions;
17
- } = Record<string, FieldMetadata | FieldMetadataWithOptions>>({ errors, form, children }: SDKFormProviderProps<TFormData, TFieldsMetadata>): import("react/jsx-runtime").JSX.Element;
22
+ } = Record<string, FieldMetadata | FieldMetadataWithOptions>>({ formHookResult, children }: SDKFormProviderProps<TFormData, TFieldsMetadata>): import("react/jsx-runtime").JSX.Element;
18
23
  export {};
@@ -0,0 +1,24 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { useEffect as i } from "react";
3
+ import { FormProvider as d } from "react-hook-form";
4
+ import { FormFieldsMetadataProvider as f } from "./FormFieldsMetadataProvider.js";
5
+ function m(o, s) {
6
+ const { fieldsMetadata: e } = s, { setError: r } = s.hookFormInternals.formMethods;
7
+ i(() => {
8
+ if (!o.length) return;
9
+ const n = new Set(Object.keys(e));
10
+ for (const t of o)
11
+ n.has(t.field) && r(t.field, {
12
+ type: "custom",
13
+ message: t.message
14
+ });
15
+ }, [o, r, e]);
16
+ }
17
+ function p({ formHookResult: o, children: s }) {
18
+ const { errorHandling: e, form: r } = o, n = e.errors.flatMap((t) => t.fieldErrors);
19
+ return m(n, r), /* @__PURE__ */ a(f, { metadata: r.fieldsMetadata, errors: e.errors, children: /* @__PURE__ */ a(d, { ...r.hookFormInternals.formMethods, children: s }) });
20
+ }
21
+ export {
22
+ p as SDKFormProvider
23
+ };
24
+ //# sourceMappingURL=SDKFormProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SDKFormProvider.js","sources":["../../../../src/components/UNSTABLE_Hooks/form/SDKFormProvider.tsx"],"sourcesContent":["import { type ReactNode, useEffect } from 'react'\nimport type { FieldPath, FieldValues } from 'react-hook-form'\nimport { FormProvider } from 'react-hook-form'\nimport type { HookFormInternals } from '../types'\nimport { FormFieldsMetadataProvider } from './FormFieldsMetadataProvider'\nimport type { FieldMetadata, FieldMetadataWithOptions } from './types'\nimport type { SDKError, SDKFieldError } from '@/types/sdkError'\n\nfunction useSyncFieldErrors<\n TFormData extends FieldValues,\n TFieldsMetadata extends {\n [K in keyof TFieldsMetadata]: FieldMetadata | FieldMetadataWithOptions\n },\n>(\n fieldErrors: SDKFieldError[],\n form: {\n fieldsMetadata: TFieldsMetadata\n hookFormInternals: HookFormInternals<TFormData>\n },\n) {\n const { fieldsMetadata } = form\n const { setError } = form.hookFormInternals.formMethods\n\n useEffect(() => {\n if (!fieldErrors.length) return\n const knownFields = new Set(Object.keys(fieldsMetadata))\n for (const fieldError of fieldErrors) {\n if (knownFields.has(fieldError.field)) {\n setError(fieldError.field as FieldPath<TFormData>, {\n type: 'custom',\n message: fieldError.message,\n })\n }\n }\n }, [fieldErrors, setError, fieldsMetadata])\n}\n\ninterface SDKFormProviderProps<\n TFormData extends FieldValues = FieldValues,\n TFieldsMetadata extends {\n [K in keyof TFieldsMetadata]: FieldMetadata | FieldMetadataWithOptions\n } = Record<string, FieldMetadata | FieldMetadataWithOptions>,\n> {\n formHookResult: {\n errorHandling: { errors: SDKError[] }\n form: {\n fieldsMetadata: TFieldsMetadata\n hookFormInternals: HookFormInternals<TFormData>\n }\n }\n children: ReactNode\n}\n\nexport function SDKFormProvider<\n TFormData extends FieldValues = FieldValues,\n TFieldsMetadata extends {\n [K in keyof TFieldsMetadata]: FieldMetadata | FieldMetadataWithOptions\n } = Record<string, FieldMetadata | FieldMetadataWithOptions>,\n>({ formHookResult, children }: SDKFormProviderProps<TFormData, TFieldsMetadata>) {\n const { errorHandling, form } = formHookResult\n const allFieldErrors = errorHandling.errors.flatMap(e => e.fieldErrors)\n useSyncFieldErrors(allFieldErrors, form)\n\n return (\n <FormFieldsMetadataProvider metadata={form.fieldsMetadata} errors={errorHandling.errors}>\n <FormProvider {...form.hookFormInternals.formMethods}>{children}</FormProvider>\n </FormFieldsMetadataProvider>\n )\n}\n"],"names":["useSyncFieldErrors","fieldErrors","form","fieldsMetadata","setError","useEffect","knownFields","fieldError","SDKFormProvider","formHookResult","children","errorHandling","allFieldErrors","e","jsx","FormFieldsMetadataProvider","FormProvider"],"mappings":";;;;AAQA,SAASA,EAMPC,GACAC,GAIA;AACA,QAAM,EAAE,gBAAAC,MAAmBD,GACrB,EAAE,UAAAE,EAAA,IAAaF,EAAK,kBAAkB;AAE5C,EAAAG,EAAU,MAAM;AACd,QAAI,CAACJ,EAAY,OAAQ;AACzB,UAAMK,IAAc,IAAI,IAAI,OAAO,KAAKH,CAAc,CAAC;AACvD,eAAWI,KAAcN;AACvB,MAAIK,EAAY,IAAIC,EAAW,KAAK,KAClCH,EAASG,EAAW,OAA+B;AAAA,QACjD,MAAM;AAAA,QACN,SAASA,EAAW;AAAA,MAAA,CACrB;AAAA,EAGP,GAAG,CAACN,GAAaG,GAAUD,CAAc,CAAC;AAC5C;AAkBO,SAASK,EAKd,EAAE,gBAAAC,GAAgB,UAAAC,KAA8D;AAChF,QAAM,EAAE,eAAAC,GAAe,MAAAT,EAAA,IAASO,GAC1BG,IAAiBD,EAAc,OAAO,QAAQ,CAAAE,MAAKA,EAAE,WAAW;AACtE,SAAAb,EAAmBY,GAAgBV,CAAI,GAGrC,gBAAAY,EAACC,GAAA,EAA2B,UAAUb,EAAK,gBAAgB,QAAQS,EAAc,QAC/E,UAAA,gBAAAG,EAACE,KAAc,GAAGd,EAAK,kBAAkB,aAAc,UAAAQ,GAAS,GAClE;AAEJ;"}
@@ -0,0 +1,26 @@
1
+ import { z } from 'zod';
2
+ import { RequiredFields } from './resolveRequiredFields';
3
+ interface ComposeFormSchemaOptions<T extends Record<string, z.ZodType>> {
4
+ fieldValidators: T;
5
+ fixedFields?: Set<string>;
6
+ requiredOnCreate?: Set<string>;
7
+ requiredOnUpdate?: Set<string>;
8
+ mode: 'create' | 'update';
9
+ requiredFields?: RequiredFields<string>;
10
+ }
11
+ /**
12
+ * Composes a Zod form schema by applying `requiredIf` to configurable fields
13
+ * based on mode and partner-specified required fields.
14
+ *
15
+ * Pattern: define all field validators as if required, then pass them here.
16
+ * Configurable fields get wrapped with `requiredIf` to conditionally accept
17
+ * empty input. Fixed fields (e.g. booleans, always-present controls) pass through as-is.
18
+ *
19
+ * `requiredOnCreate` / `requiredOnUpdate` define mode-specific defaults.
20
+ * `requiredFields` (partner overrides) are additive on top of those defaults.
21
+ *
22
+ * Generic `T` preserves the fieldValidators type so zodResolver can infer
23
+ * the correct form data type without manual casts at the call site.
24
+ */
25
+ export declare function composeFormSchema<T extends Record<string, z.ZodType>>({ fieldValidators, fixedFields, requiredOnCreate, requiredOnUpdate, mode, requiredFields, }: ComposeFormSchemaOptions<T>): z.ZodObject<T>;
26
+ export {};
@@ -0,0 +1,24 @@
1
+ import { z as a } from "zod";
2
+ import { resolveRequiredFields as h } from "./resolveRequiredFields.js";
3
+ import { requiredIf as S } from "../../../helpers/requiredIf.js";
4
+ function b({
5
+ fieldValidators: o,
6
+ fixedFields: n = /* @__PURE__ */ new Set(),
7
+ requiredOnCreate: s = /* @__PURE__ */ new Set(),
8
+ requiredOnUpdate: i = /* @__PURE__ */ new Set(),
9
+ mode: r,
10
+ requiredFields: c
11
+ }) {
12
+ const m = new Set(h(c, r)), u = r === "create" ? s : i, f = Object.fromEntries(
13
+ Object.entries(o).map(([e, t]) => {
14
+ if (n.has(e)) return [e, t];
15
+ const p = u.has(e) || m.has(e);
16
+ return [e, S(t, p)];
17
+ })
18
+ );
19
+ return a.object(f);
20
+ }
21
+ export {
22
+ b as composeFormSchema
23
+ };
24
+ //# sourceMappingURL=composeFormSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeFormSchema.js","sources":["../../../../src/components/UNSTABLE_Hooks/form/composeFormSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport { resolveRequiredFields, type RequiredFields } from './resolveRequiredFields'\nimport { requiredIf } from '@/helpers/requiredIf'\n\ninterface ComposeFormSchemaOptions<T extends Record<string, z.ZodType>> {\n fieldValidators: T\n fixedFields?: Set<string>\n requiredOnCreate?: Set<string>\n requiredOnUpdate?: Set<string>\n mode: 'create' | 'update'\n requiredFields?: RequiredFields<string>\n}\n\n/**\n * Composes a Zod form schema by applying `requiredIf` to configurable fields\n * based on mode and partner-specified required fields.\n *\n * Pattern: define all field validators as if required, then pass them here.\n * Configurable fields get wrapped with `requiredIf` to conditionally accept\n * empty input. Fixed fields (e.g. booleans, always-present controls) pass through as-is.\n *\n * `requiredOnCreate` / `requiredOnUpdate` define mode-specific defaults.\n * `requiredFields` (partner overrides) are additive on top of those defaults.\n *\n * Generic `T` preserves the fieldValidators type so zodResolver can infer\n * the correct form data type without manual casts at the call site.\n */\nexport function composeFormSchema<T extends Record<string, z.ZodType>>({\n fieldValidators,\n fixedFields = new Set(),\n requiredOnCreate = new Set(),\n requiredOnUpdate = new Set(),\n mode,\n requiredFields,\n}: ComposeFormSchemaOptions<T>) {\n const required = new Set(resolveRequiredFields(requiredFields, mode))\n const modeDefaults = mode === 'create' ? requiredOnCreate : requiredOnUpdate\n\n const shape = Object.fromEntries(\n Object.entries(fieldValidators).map(([key, validator]) => {\n if (fixedFields.has(key)) return [key, validator]\n\n const isRequired = modeDefaults.has(key) || required.has(key)\n return [key, requiredIf(validator, isRequired)]\n }),\n )\n\n // Object.fromEntries erases specific field types to Record<string, ZodType>,\n // and requiredIf wraps fields with z.preprocess which makes z.input infer unknown.\n // Cast back to ZodObject<T> so zodResolver infers the correct form data type\n // from the original fieldValidators — consumers don't need per-hook casts.\n return z.object(shape) as unknown as z.ZodObject<T>\n}\n"],"names":["composeFormSchema","fieldValidators","fixedFields","requiredOnCreate","requiredOnUpdate","mode","requiredFields","required","resolveRequiredFields","modeDefaults","shape","key","validator","isRequired","requiredIf","z"],"mappings":";;;AA2BO,SAASA,EAAuD;AAAA,EACrE,iBAAAC;AAAA,EACA,aAAAC,wBAAkB,IAAA;AAAA,EAClB,kBAAAC,wBAAuB,IAAA;AAAA,EACvB,kBAAAC,wBAAuB,IAAA;AAAA,EACvB,MAAAC;AAAA,EACA,gBAAAC;AACF,GAAgC;AAC9B,QAAMC,IAAW,IAAI,IAAIC,EAAsBF,GAAgBD,CAAI,CAAC,GAC9DI,IAAeJ,MAAS,WAAWF,IAAmBC,GAEtDM,IAAQ,OAAO;AAAA,IACnB,OAAO,QAAQT,CAAe,EAAE,IAAI,CAAC,CAACU,GAAKC,CAAS,MAAM;AACxD,UAAIV,EAAY,IAAIS,CAAG,EAAG,QAAO,CAACA,GAAKC,CAAS;AAEhD,YAAMC,IAAaJ,EAAa,IAAIE,CAAG,KAAKJ,EAAS,IAAII,CAAG;AAC5D,aAAO,CAACA,GAAKG,EAAWF,GAAWC,CAAU,CAAC;AAAA,IAChD,CAAC;AAAA,EAAA;AAOH,SAAOE,EAAE,OAAOL,CAAK;AACvB;"}
@@ -0,0 +1,53 @@
1
+ import { SyntheticEvent } from 'react';
2
+ /**
3
+ * Minimal shape required for a form hook result to participate in `composeSubmitHandler`.
4
+ * Any hook returning `BaseFormHookReady` satisfies this interface.
5
+ *
6
+ * Uses method syntax so TypeScript applies bivariant checking on parameter types,
7
+ * allowing hooks with specific form data generics to be passed without casts.
8
+ */
9
+ interface ComposableFormHookResult {
10
+ form: {
11
+ hookFormInternals: {
12
+ formMethods: {
13
+ handleSubmit(onValid: () => void, onInvalid?: () => void): () => Promise<void>;
14
+ setFocus(name: string): void;
15
+ formState: {
16
+ errors: Record<string, unknown>;
17
+ };
18
+ };
19
+ };
20
+ };
21
+ }
22
+ /**
23
+ * Coordinates validation and submission across multiple form hooks on the same page.
24
+ *
25
+ * Validates all forms simultaneously via `handleSubmit()`, then focuses the first invalid
26
+ * field across all forms (in array order). Only calls `onAllValid` when every form passes.
27
+ *
28
+ * Uses `handleSubmit` rather than `trigger` so that react-hook-form sets
29
+ * `formState.isSubmitted = true`, which enables `reValidateMode` (default: `onChange`).
30
+ * Without this, errors set by manual `trigger()` calls would never clear as the user types.
31
+ *
32
+ * Each hook passed to `forms` should be initialized with `shouldFocusError: false` so that
33
+ * react-hook-form's built-in per-form focus is disabled and `composeSubmitHandler` can manage
34
+ * cross-form focus instead.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const detailsForm = useEmployeeDetailsForm({ employeeId, shouldFocusError: false })
39
+ * const addressForm = useHomeAddressForm({ employeeId, shouldFocusError: false })
40
+ *
41
+ * const handleSubmit = composeSubmitHandler(
42
+ * [detailsForm, addressForm],
43
+ * async () => {
44
+ * await detailsForm.actions.onSubmit()
45
+ * await addressForm.actions.onSubmit()
46
+ * },
47
+ * )
48
+ *
49
+ * return <form onSubmit={handleSubmit}>...</form>
50
+ * ```
51
+ */
52
+ export declare function composeSubmitHandler(forms: ComposableFormHookResult[], onAllValid: () => Promise<void>): (e: SyntheticEvent) => Promise<void>;
53
+ export {};
@@ -0,0 +1,34 @@
1
+ function l(t, e) {
2
+ return async (a) => {
3
+ if (a.preventDefault(), !(await Promise.all(
4
+ t.map(
5
+ (r) => new Promise((o) => {
6
+ r.form.hookFormInternals.formMethods.handleSubmit(
7
+ () => {
8
+ o(!0);
9
+ },
10
+ () => {
11
+ o(!1);
12
+ }
13
+ )();
14
+ })
15
+ )
16
+ )).every(Boolean)) {
17
+ for (const r of t) {
18
+ const o = Object.keys(
19
+ r.form.hookFormInternals.formMethods.formState.errors
20
+ )[0];
21
+ if (o) {
22
+ r.form.hookFormInternals.formMethods.setFocus(o);
23
+ return;
24
+ }
25
+ }
26
+ return;
27
+ }
28
+ await e();
29
+ };
30
+ }
31
+ export {
32
+ l as composeSubmitHandler
33
+ };
34
+ //# sourceMappingURL=composeSubmitHandler.js.map