@gusto/embedded-react-sdk 0.56.1 → 0.56.3

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 (612) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/components/Common/FieldCaption/FieldCaption.js +18 -24
  3. package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
  4. package/dist/components/Common/FieldCaption/FieldCaption.module.scss.js +3 -5
  5. package/dist/components/Common/FieldCaption/FieldCaption.module.scss.js.map +1 -1
  6. package/dist/components/Common/PaginationControl/PaginationControl.js +66 -62
  7. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  8. package/dist/components/Company/PaySchedule/management/PaySchedule.js +60 -0
  9. package/dist/components/Company/PaySchedule/management/PaySchedule.js.map +1 -0
  10. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.js +67 -0
  11. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.js.map +1 -0
  12. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +59 -0
  13. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -0
  14. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +57 -0
  15. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -0
  16. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +46 -0
  17. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -0
  18. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +101 -0
  19. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -0
  20. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +81 -0
  21. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -0
  22. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.js +18 -0
  23. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.js.map +1 -0
  24. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +56 -0
  25. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -0
  26. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +34 -0
  27. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -0
  28. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js +77 -0
  29. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -0
  30. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.module.scss.js +10 -0
  31. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.module.scss.js.map +1 -0
  32. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js +66 -0
  33. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -0
  34. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +75 -57
  35. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  36. package/dist/components/Company/StateTaxes/shared/requirementSetError.js +15 -0
  37. package/dist/components/Company/StateTaxes/shared/requirementSetError.js.map +1 -0
  38. package/dist/components/Company/exports/companyManagement.js +7 -0
  39. package/dist/components/Company/exports/companyManagement.js.map +1 -0
  40. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +24 -24
  41. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  42. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +51 -58
  43. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  44. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +12 -7
  45. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
  46. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +87 -85
  47. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  48. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +1 -1
  49. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  50. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +55 -54
  51. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  52. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +81 -67
  53. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  54. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +129 -125
  55. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  56. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +30 -27
  57. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  58. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +41 -30
  59. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  60. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
  61. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +159 -152
  62. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  63. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +61 -59
  64. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  65. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +32 -31
  66. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  67. package/dist/components/Payroll/PayrollList/PayrollList.js +16 -16
  68. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  69. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  70. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +61 -61
  71. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  72. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +192 -193
  73. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  74. package/dist/components/Payroll/Transition/TransitionFlow.js +27 -22
  75. package/dist/components/Payroll/Transition/TransitionFlow.js.map +1 -1
  76. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +55 -53
  77. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  78. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +44 -41
  79. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  80. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +48 -47
  81. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
  82. package/dist/components/Payroll/helpers.js +72 -67
  83. package/dist/components/Payroll/helpers.js.map +1 -1
  84. package/dist/components/Payroll/usePreparedPayrollData.js +37 -28
  85. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  86. package/dist/contexts/ApiProvider/ApiProvider.js +23 -22
  87. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  88. package/dist/contexts/ApiProvider/informationRequestEnumHook.js +30 -0
  89. package/dist/contexts/ApiProvider/informationRequestEnumHook.js.map +1 -0
  90. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
  91. package/dist/helpers/dateFormatting.js.map +1 -1
  92. package/dist/helpers/formattedStrings.js +9 -8
  93. package/dist/helpers/formattedStrings.js.map +1 -1
  94. package/dist/i18n/I18n.js +2 -0
  95. package/dist/i18n/I18n.js.map +1 -1
  96. package/dist/i18n/en/Company.Management.PaySchedule.json.js +24 -0
  97. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -0
  98. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +18 -0
  99. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -0
  100. package/dist/i18n/en/Company.StateTaxes.json.js +1 -1
  101. package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -14
  102. package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
  103. package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
  104. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +52 -50
  105. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +1 -1
  106. package/dist/i18n/en/common.json.js +36 -38
  107. package/dist/i18n/en/common.json.js.map +1 -1
  108. package/dist/index.js +137 -135
  109. package/dist/index.js.map +1 -1
  110. package/dist/package.json.js +1 -1
  111. package/dist/shared/constants.js +39 -31
  112. package/dist/shared/constants.js.map +1 -1
  113. package/dist/src/components/Common/ActionsLayout/ActionsLayout.d.ts +1 -1
  114. package/dist/src/components/Common/Alert/Alert.d.ts +1 -1
  115. package/dist/src/components/Common/DataView/DataCards/DataCards.d.ts +1 -1
  116. package/dist/src/components/Common/DataView/DataTable/DataTable.d.ts +1 -1
  117. package/dist/src/components/Common/DataView/DataView.d.ts +1 -1
  118. package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +1 -1
  119. package/dist/src/components/Common/DetailViewLayout/DetailViewLayout.d.ts +1 -1
  120. package/dist/src/components/Common/DocumentList/DocumentList.d.ts +1 -1
  121. package/dist/src/components/Common/DocumentViewer/DocumentViewer.d.ts +1 -1
  122. package/dist/src/components/Common/EmptyData/EmptyData.d.ts +1 -1
  123. package/dist/src/components/Common/FieldCaption/FieldCaption.d.ts +1 -1
  124. package/dist/src/components/Common/FieldErrorMessage/FieldErrorMessage.d.ts +1 -1
  125. package/dist/src/components/Common/Fields/CheckboxGroupField/CheckboxGroupField.d.ts +1 -1
  126. package/dist/src/components/Common/Fields/ComboBoxField/ComboBoxField.d.ts +1 -1
  127. package/dist/src/components/Common/Fields/PercentageField/PercentageField.d.ts +1 -1
  128. package/dist/src/components/Common/Fields/RadioGroupField/RadioGroupField.d.ts +1 -1
  129. package/dist/src/components/Common/Fields/SelectField/SelectField.d.ts +1 -1
  130. package/dist/src/components/Common/Fields/hooks/FieldElementRegistryProvider.d.ts +1 -1
  131. package/dist/src/components/Common/Flex/Flex.d.ts +2 -2
  132. package/dist/src/components/Common/FlowBreadcrumbs/FlowBreadcrumbs.d.ts +1 -1
  133. package/dist/src/components/Common/Form/Form.d.ts +1 -1
  134. package/dist/src/components/Common/Grid/Grid.d.ts +1 -1
  135. package/dist/src/components/Common/HamburgerMenu/HamburgerMenu.d.ts +1 -1
  136. package/dist/src/components/Common/InlineSpinner/InlineSpinner.d.ts +1 -1
  137. package/dist/src/components/Common/InternalError/InternalError.d.ts +1 -1
  138. package/dist/src/components/Common/Loading/Loading.d.ts +1 -1
  139. package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +3 -3
  140. package/dist/src/components/Common/PaginationControl/PaginationControl.d.ts +1 -1
  141. package/dist/src/components/Common/PayrollLoading/PayrollLoading.d.ts +1 -1
  142. package/dist/src/components/Common/ReorderableList/ReorderableList.d.ts +1 -1
  143. package/dist/src/components/Common/RequirementsList/RequirementsList.d.ts +1 -1
  144. package/dist/src/components/Common/TaxInputs/TaxInputs.d.ts +7 -7
  145. package/dist/src/components/Common/Toast/Toast.d.ts +1 -1
  146. package/dist/src/components/Common/UI/Alert/Alert.d.ts +1 -1
  147. package/dist/src/components/Common/UI/Box/Box.d.ts +1 -1
  148. package/dist/src/components/Common/UI/BoxHeader/BoxHeader.d.ts +1 -1
  149. package/dist/src/components/Common/UI/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  150. package/dist/src/components/Common/UI/Button/Button.d.ts +1 -1
  151. package/dist/src/components/Common/UI/Button/ButtonIcon.d.ts +1 -1
  152. package/dist/src/components/Common/UI/CalendarPreview/CalendarLegend.d.ts +1 -1
  153. package/dist/src/components/Common/UI/CalendarPreview/CalendarPreview.d.ts +1 -1
  154. package/dist/src/components/Common/UI/Card/Card.d.ts +1 -1
  155. package/dist/src/components/Common/UI/Checkbox/Checkbox.d.ts +1 -1
  156. package/dist/src/components/Common/UI/ComboBox/ComboBox.d.ts +1 -1
  157. package/dist/src/components/Common/UI/DatePicker/DatePicker.d.ts +1 -1
  158. package/dist/src/components/Common/UI/DateRangePicker/DateRangePicker.d.ts +1 -1
  159. package/dist/src/components/Common/UI/DescriptionList/DescriptionList.d.ts +1 -1
  160. package/dist/src/components/Common/UI/Dialog/Dialog.d.ts +1 -1
  161. package/dist/src/components/Common/UI/FileInput/FileInput.d.ts +1 -1
  162. package/dist/src/components/Common/UI/FormBox/FormBox.d.ts +1 -1
  163. package/dist/src/components/Common/UI/FormBoxHeader/FormBoxHeader.d.ts +1 -1
  164. package/dist/src/components/Common/UI/Heading/Heading.d.ts +1 -1
  165. package/dist/src/components/Common/UI/Input/Input.d.ts +1 -1
  166. package/dist/src/components/Common/UI/Link/Link.d.ts +1 -1
  167. package/dist/src/components/Common/UI/List/OrderedList.d.ts +1 -1
  168. package/dist/src/components/Common/UI/List/UnorderedList.d.ts +1 -1
  169. package/dist/src/components/Common/UI/Menu/Menu.d.ts +1 -1
  170. package/dist/src/components/Common/UI/Modal/Modal.d.ts +1 -1
  171. package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
  172. package/dist/src/components/Common/UI/NumberInput/NumberInput.d.ts +1 -1
  173. package/dist/src/components/Common/UI/ProgressBar/ProgressBar.d.ts +1 -1
  174. package/dist/src/components/Common/UI/Radio/Radio.d.ts +1 -1
  175. package/dist/src/components/Common/UI/Select/Select.d.ts +1 -1
  176. package/dist/src/components/Common/UI/Switch/Switch.d.ts +1 -1
  177. package/dist/src/components/Common/UI/Table/Table.d.ts +1 -1
  178. package/dist/src/components/Common/UI/Tabs/Tabs.d.ts +1 -1
  179. package/dist/src/components/Common/UI/Text/Text.d.ts +1 -1
  180. package/dist/src/components/Common/UI/TextArea/TextArea.d.ts +1 -1
  181. package/dist/src/components/Common/UI/TextInput/TextInput.d.ts +1 -1
  182. package/dist/src/components/Company/AssignSignatory/AssignSignatory.d.ts +1 -1
  183. package/dist/src/components/Company/AssignSignatory/AssignSignatorySelection.d.ts +1 -1
  184. package/dist/src/components/Company/AssignSignatory/CreateSignatory/Actions.d.ts +1 -1
  185. package/dist/src/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.d.ts +1 -1
  186. package/dist/src/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.d.ts +1 -1
  187. package/dist/src/components/Company/AssignSignatory/Head.d.ts +1 -1
  188. package/dist/src/components/Company/AssignSignatory/InviteSignatory/Actions.d.ts +1 -1
  189. package/dist/src/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.d.ts +1 -1
  190. package/dist/src/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.d.ts +1 -1
  191. package/dist/src/components/Company/AssignSignatory/SignatoryForm.d.ts +1 -1
  192. package/dist/src/components/Company/AssignSignatory/TitleSelect.d.ts +1 -1
  193. package/dist/src/components/Company/BankAccount/BankAccount.d.ts +1 -1
  194. package/dist/src/components/Company/BankAccount/BankAccountComponents.d.ts +3 -3
  195. package/dist/src/components/Company/BankAccount/BankAccountForm/Actions.d.ts +1 -1
  196. package/dist/src/components/Company/BankAccount/BankAccountForm/BankAccountForm.d.ts +1 -1
  197. package/dist/src/components/Company/BankAccount/BankAccountForm/Form.d.ts +1 -1
  198. package/dist/src/components/Company/BankAccount/BankAccountForm/Head.d.ts +1 -1
  199. package/dist/src/components/Company/BankAccount/BankAccountList/AccountView.d.ts +1 -1
  200. package/dist/src/components/Company/BankAccount/BankAccountList/Actions.d.ts +1 -1
  201. package/dist/src/components/Company/BankAccount/BankAccountList/BankAccountList.d.ts +1 -1
  202. package/dist/src/components/Company/BankAccount/BankAccountList/Head.d.ts +1 -1
  203. package/dist/src/components/Company/BankAccount/BankAccountVerify/Actions.d.ts +1 -1
  204. package/dist/src/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.d.ts +1 -1
  205. package/dist/src/components/Company/BankAccount/BankAccountVerify/Form.d.ts +1 -1
  206. package/dist/src/components/Company/BankAccount/BankAccountVerify/Head.d.ts +1 -1
  207. package/dist/src/components/Company/DocumentSigner/DocumentList/Actions.d.ts +1 -1
  208. package/dist/src/components/Company/DocumentSigner/DocumentList/DocumentList.d.ts +1 -1
  209. package/dist/src/components/Company/DocumentSigner/DocumentList/Head.d.ts +1 -1
  210. package/dist/src/components/Company/DocumentSigner/DocumentList/List.d.ts +1 -1
  211. package/dist/src/components/Company/DocumentSigner/DocumentList/ManageSignatories.d.ts +1 -1
  212. package/dist/src/components/Company/DocumentSigner/DocumentSigner.d.ts +1 -1
  213. package/dist/src/components/Company/DocumentSigner/SignatureForm/SignatureForm.d.ts +1 -1
  214. package/dist/src/components/Company/DocumentSigner/documentSignerStateMachine.d.ts +3 -3
  215. package/dist/src/components/Company/DocumentSigner/shared/useSignCompanyForm/fields.d.ts +2 -2
  216. package/dist/src/components/Company/FederalTaxes/Actions.d.ts +1 -1
  217. package/dist/src/components/Company/FederalTaxes/FederalTaxes.d.ts +1 -1
  218. package/dist/src/components/Company/FederalTaxes/Form.d.ts +1 -1
  219. package/dist/src/components/Company/FederalTaxes/Head.d.ts +1 -1
  220. package/dist/src/components/Company/Industry/Actions.d.ts +1 -1
  221. package/dist/src/components/Company/Industry/Edit.d.ts +1 -1
  222. package/dist/src/components/Company/Industry/Head.d.ts +1 -1
  223. package/dist/src/components/Company/Industry/Industry.d.ts +1 -1
  224. package/dist/src/components/Company/Industry/IndustrySelect.d.ts +1 -1
  225. package/dist/src/components/Company/Locations/LocationForm/Actions.d.ts +1 -1
  226. package/dist/src/components/Company/Locations/LocationForm/Form.d.ts +1 -1
  227. package/dist/src/components/Company/Locations/LocationForm/Head.d.ts +1 -1
  228. package/dist/src/components/Company/Locations/LocationForm/LocationForm.d.ts +1 -1
  229. package/dist/src/components/Company/Locations/Locations.d.ts +1 -1
  230. package/dist/src/components/Company/Locations/LocationsList/Actions.d.ts +1 -1
  231. package/dist/src/components/Company/Locations/LocationsList/Head.d.ts +1 -1
  232. package/dist/src/components/Company/Locations/LocationsList/List.d.ts +1 -1
  233. package/dist/src/components/Company/Locations/LocationsList/LocationsList.d.ts +1 -1
  234. package/dist/src/components/Company/Locations/locationsStateMachine.d.ts +2 -2
  235. package/dist/src/components/Company/OnboardingFlow/OnboardingFlow.d.ts +1 -1
  236. package/dist/src/components/Company/OnboardingFlow/OnboardingFlowComponents.d.ts +9 -9
  237. package/dist/src/components/Company/OnboardingOverview/Completed.d.ts +1 -1
  238. package/dist/src/components/Company/OnboardingOverview/MissingRequirements.d.ts +1 -1
  239. package/dist/src/components/Company/OnboardingOverview/OnboardingOverview.d.ts +1 -1
  240. package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +1 -1
  241. package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +2 -2
  242. package/dist/src/components/Company/PaySchedule/PayScheduleForm.d.ts +1 -1
  243. package/dist/src/components/Company/PaySchedule/PayScheduleList.d.ts +1 -1
  244. package/dist/src/components/Company/PaySchedule/management/PaySchedule.d.ts +24 -0
  245. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.d.ts +10 -0
  246. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +11 -0
  247. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +9 -0
  248. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +35 -0
  249. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +29 -0
  250. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/index.d.ts +1 -0
  251. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.d.ts +7 -0
  252. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.d.ts +12 -0
  253. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +9 -0
  254. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +20 -0
  255. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverview.d.ts +11 -0
  256. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +18 -0
  257. package/dist/src/components/Company/PaySchedule/management/index.d.ts +1 -0
  258. package/dist/src/components/Company/PaySchedule/management/payScheduleManagementStateMachine.d.ts +12 -0
  259. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +8 -8
  260. package/dist/src/components/Company/StateTaxes/StateTaxes.d.ts +1 -1
  261. package/dist/src/components/Company/StateTaxes/StateTaxesComponents.d.ts +3 -3
  262. package/dist/src/components/Company/StateTaxes/StateTaxesForm/Actions.d.ts +1 -1
  263. package/dist/src/components/Company/StateTaxes/StateTaxesForm/Form.d.ts +1 -1
  264. package/dist/src/components/Company/StateTaxes/StateTaxesForm/Head.d.ts +1 -1
  265. package/dist/src/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.d.ts +1 -1
  266. package/dist/src/components/Company/StateTaxes/StateTaxesList/Actions.d.ts +1 -1
  267. package/dist/src/components/Company/StateTaxes/StateTaxesList/Head.d.ts +1 -1
  268. package/dist/src/components/Company/StateTaxes/StateTaxesList/List.d.ts +1 -1
  269. package/dist/src/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +1 -1
  270. package/dist/src/components/Company/StateTaxes/TaxRateManagement/AddRateAction.d.ts +1 -1
  271. package/dist/src/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.d.ts +1 -1
  272. package/dist/src/components/Company/StateTaxes/TaxRateManagement/TaxRateHistorySection.d.ts +1 -1
  273. package/dist/src/components/Company/StateTaxes/TaxRateManagement/TaxRateManagement.d.ts +1 -1
  274. package/dist/src/components/Company/StateTaxes/shared/RequirementFields.d.ts +1 -1
  275. package/dist/src/components/Company/StateTaxes/shared/requirementSetError.d.ts +18 -0
  276. package/dist/src/components/Company/StateTaxes/shared/requirementSetError.test.d.ts +1 -0
  277. package/dist/src/components/Company/exports/companyManagement.d.ts +2 -0
  278. package/dist/src/components/Contractor/Address/management/Address.d.ts +1 -1
  279. package/dist/src/components/Contractor/Address/management/AddressCard/AddressCard.d.ts +1 -1
  280. package/dist/src/components/Contractor/Address/management/AddressComponents.d.ts +2 -2
  281. package/dist/src/components/Contractor/Address/management/AddressEditForm.d.ts +1 -1
  282. package/dist/src/components/Contractor/Address/shared/useContractorAddressForm/fields.d.ts +5 -5
  283. package/dist/src/components/Contractor/Compensation/management/Compensation.d.ts +1 -1
  284. package/dist/src/components/Contractor/Compensation/management/CompensationCard/CompensationCard.d.ts +1 -1
  285. package/dist/src/components/Contractor/Compensation/management/CompensationComponents.d.ts +2 -2
  286. package/dist/src/components/Contractor/Compensation/management/CompensationEditForm.d.ts +1 -1
  287. package/dist/src/components/Contractor/Compensation/shared/useContractorPayForm/fields.d.ts +2 -2
  288. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorList.d.ts +1 -1
  289. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +1 -1
  290. package/dist/src/components/Contractor/ContractorList/onboarding/ContractorList.d.ts +1 -1
  291. package/dist/src/components/Contractor/ContractorList/onboarding/ContractorListView.d.ts +1 -1
  292. package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlow.d.ts +1 -1
  293. package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.d.ts +2 -2
  294. package/dist/src/components/Contractor/Dashboard/Dashboard.d.ts +1 -1
  295. package/dist/src/components/Contractor/Dashboard/DashboardComponents.d.ts +5 -5
  296. package/dist/src/components/Contractor/Dashboard/DashboardFlow.d.ts +1 -1
  297. package/dist/src/components/Contractor/Dashboard/DetailsView.d.ts +1 -1
  298. package/dist/src/components/Contractor/Dashboard/PayView.d.ts +1 -1
  299. package/dist/src/components/Contractor/Documents/management/DocumentsCard/DocumentsCard.d.ts +1 -1
  300. package/dist/src/components/Contractor/Documents/onboarding/DocumentSigner/DocumentSigner.d.ts +1 -1
  301. package/dist/src/components/Contractor/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +2 -2
  302. package/dist/src/components/Contractor/Documents/onboarding/DocumentsList/DocumentsList.d.ts +1 -1
  303. package/dist/src/components/Contractor/Documents/shared/SignatureForm/SignatureForm.d.ts +1 -1
  304. package/dist/src/components/Contractor/Documents/shared/SignatureForm/useContractorSignatureForm/fields.d.ts +19 -19
  305. package/dist/src/components/Contractor/Landing/Landing.d.ts +1 -1
  306. package/dist/src/components/Contractor/NewHireReport/NewHireReport.d.ts +1 -1
  307. package/dist/src/components/Contractor/OnboardingFlow/OnboardingFlow.d.ts +1 -1
  308. package/dist/src/components/Contractor/OnboardingFlow/OnboardingFlowComponents.d.ts +7 -7
  309. package/dist/src/components/Contractor/OnboardingSummary/OnboardingSummary.d.ts +1 -1
  310. package/dist/src/components/Contractor/PaymentMethod/management/PaymentMethod.d.ts +1 -1
  311. package/dist/src/components/Contractor/PaymentMethod/management/PaymentMethodCard/PaymentMethodCard.d.ts +1 -1
  312. package/dist/src/components/Contractor/PaymentMethod/management/PaymentMethodComponents.d.ts +2 -2
  313. package/dist/src/components/Contractor/PaymentMethod/management/PaymentMethodEditForm.d.ts +1 -1
  314. package/dist/src/components/Contractor/PaymentMethod/onboarding/PaymentMethod.d.ts +1 -1
  315. package/dist/src/components/Contractor/PaymentMethod/shared/ContractorBankAccountFields/ContractorBankAccountFields.d.ts +1 -1
  316. package/dist/src/components/Contractor/PaymentMethod/shared/ContractorBankAccountFormBody/ContractorBankAccountFormBody.d.ts +1 -1
  317. package/dist/src/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/fields.d.ts +4 -4
  318. package/dist/src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/fields.d.ts +1 -1
  319. package/dist/src/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.d.ts +1 -1
  320. package/dist/src/components/Contractor/Payments/CreatePayment/CreatePayment.d.ts +1 -1
  321. package/dist/src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +1 -1
  322. package/dist/src/components/Contractor/Payments/CreatePayment/FastAchSubmissionBlockerBanner.d.ts +1 -1
  323. package/dist/src/components/Contractor/Payments/CreatePayment/GenericBlocker.d.ts +1 -1
  324. package/dist/src/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +1 -1
  325. package/dist/src/components/Contractor/Payments/CreatePaymentFlow/CreatePaymentFlow.d.ts +2 -2
  326. package/dist/src/components/Contractor/Payments/CreatePaymentFlow/CreatePaymentFlowComponents.d.ts +2 -2
  327. package/dist/src/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlow.d.ts +2 -2
  328. package/dist/src/components/Contractor/Payments/HistoricalPaymentFlow/HistoricalPaymentFlowComponents.d.ts +2 -2
  329. package/dist/src/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.d.ts +1 -1
  330. package/dist/src/components/Contractor/Payments/PaymentFlow/PaymentFlow.d.ts +1 -1
  331. package/dist/src/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.d.ts +5 -5
  332. package/dist/src/components/Contractor/Payments/PaymentHistory/PaymentHistory.d.ts +1 -1
  333. package/dist/src/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +1 -1
  334. package/dist/src/components/Contractor/Payments/PaymentStatement/PaymentStatement.d.ts +1 -1
  335. package/dist/src/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +1 -1
  336. package/dist/src/components/Contractor/Payments/PaymentSummary/PaymentSummary.d.ts +2 -2
  337. package/dist/src/components/Contractor/Payments/PaymentSummary/PaymentSummaryPresentation.d.ts +1 -1
  338. package/dist/src/components/Contractor/Payments/PaymentsList/PaymentsList.d.ts +2 -2
  339. package/dist/src/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +1 -1
  340. package/dist/src/components/Contractor/Payments/ViewPaymentFlow/ViewPaymentFlow.d.ts +2 -2
  341. package/dist/src/components/Contractor/Payments/ViewPaymentFlow/ViewPaymentFlowComponents.d.ts +2 -2
  342. package/dist/src/components/Contractor/Payments/shared/PaymentSummaryBlock/PaymentSummaryBlock.d.ts +1 -1
  343. package/dist/src/components/Contractor/Payments/shared/SetPaymentAmounts/EditContractorPaymentPresentation.d.ts +1 -1
  344. package/dist/src/components/Contractor/Payments/shared/SetPaymentAmounts/SetPaymentAmounts.d.ts +1 -1
  345. package/dist/src/components/Contractor/Profile/management/Profile.d.ts +1 -1
  346. package/dist/src/components/Contractor/Profile/management/ProfileCard/ProfileCard.d.ts +1 -1
  347. package/dist/src/components/Contractor/Profile/management/ProfileComponents.d.ts +2 -2
  348. package/dist/src/components/Contractor/Profile/management/ProfileEditForm.d.ts +1 -1
  349. package/dist/src/components/Contractor/Profile/onboarding/BusinessSelfOnboardingProfile.d.ts +1 -1
  350. package/dist/src/components/Contractor/Profile/onboarding/ContractorProfile.d.ts +1 -1
  351. package/dist/src/components/Contractor/Profile/onboarding/IndividualSelfOnboardingProfile.d.ts +1 -1
  352. package/dist/src/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.d.ts +1 -1
  353. package/dist/src/components/Contractor/Profile/shared/useContractorDetailsForm/fields.d.ts +14 -14
  354. package/dist/src/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +6 -6
  355. package/dist/src/components/Contractor/SelfOnboardingFlow/SelfOnboardingFlow.d.ts +1 -1
  356. package/dist/src/components/Contractor/Submit/Submit.d.ts +1 -1
  357. package/dist/src/components/Contractor/Submit/SubmitDone.d.ts +1 -1
  358. package/dist/src/components/Contractor/shared/SelectContractors/SelectContractors.d.ts +1 -1
  359. package/dist/src/components/Contractor/shared/SelectContractors/SelectContractorsPresentation.d.ts +1 -1
  360. package/dist/src/components/Employee/Compensation/management/Compensation.d.ts +1 -1
  361. package/dist/src/components/Employee/Compensation/management/CompensationAddAnotherJobForm/CompensationAddAnotherJobForm.d.ts +1 -1
  362. package/dist/src/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.d.ts +1 -1
  363. package/dist/src/components/Employee/Compensation/management/CompensationCard/CompensationCard.d.ts +1 -1
  364. package/dist/src/components/Employee/Compensation/management/CompensationComponents.d.ts +4 -4
  365. package/dist/src/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.d.ts +1 -1
  366. package/dist/src/components/Employee/Compensation/management/CompensationEditJobForm/CompensationEditJobForm.d.ts +1 -1
  367. package/dist/src/components/Employee/Compensation/management/CompensationEditPendingJobForm/CompensationEditPendingJobForm.d.ts +1 -1
  368. package/dist/src/components/Employee/Compensation/management/ManagementCompensationFormBody.d.ts +1 -1
  369. package/dist/src/components/Employee/Compensation/onboarding/Compensation.d.ts +2 -2
  370. package/dist/src/components/Employee/Compensation/onboarding/CompensationFlowComponents.d.ts +3 -3
  371. package/dist/src/components/Employee/Compensation/onboarding/EditCompensation/EditCompensation.d.ts +1 -1
  372. package/dist/src/components/Employee/Compensation/onboarding/JobsList/JobsList.d.ts +1 -1
  373. package/dist/src/components/Employee/Compensation/onboarding/JobsList/JobsListPresentation.d.ts +1 -1
  374. package/dist/src/components/Employee/Compensation/shared/AddCompensationFormBody.d.ts +1 -1
  375. package/dist/src/components/Employee/Compensation/shared/PendingChangesReviewModal.d.ts +1 -1
  376. package/dist/src/components/Employee/Compensation/shared/useCompensationForm/fields.d.ts +7 -7
  377. package/dist/src/components/Employee/Compensation/shared/useJobForm/fields.d.ts +5 -5
  378. package/dist/src/components/Employee/Dashboard/BasicDetailsView.d.ts +1 -1
  379. package/dist/src/components/Employee/Dashboard/Dashboard.d.ts +1 -1
  380. package/dist/src/components/Employee/Dashboard/DashboardComponents.d.ts +13 -13
  381. package/dist/src/components/Employee/Dashboard/DashboardFlow.d.ts +1 -1
  382. package/dist/src/components/Employee/Dashboard/JobAndPayView.d.ts +1 -1
  383. package/dist/src/components/Employee/Dashboard/TaxesView.d.ts +2 -2
  384. package/dist/src/components/Employee/Deductions/management/Deductions.d.ts +1 -1
  385. package/dist/src/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.d.ts +1 -1
  386. package/dist/src/components/Employee/Deductions/management/DeductionsComponents.d.ts +2 -2
  387. package/dist/src/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.d.ts +1 -1
  388. package/dist/src/components/Employee/Deductions/onboarding/Deductions.d.ts +1 -1
  389. package/dist/src/components/Employee/Deductions/onboarding/DeductionsList/DeductionsList.d.ts +1 -1
  390. package/dist/src/components/Employee/Deductions/onboarding/deductionsContextualComponents.d.ts +2 -2
  391. package/dist/src/components/Employee/Deductions/shared/DeductionsForm/ChildSupportFormView.d.ts +1 -1
  392. package/dist/src/components/Employee/Deductions/shared/DeductionsForm/DeductionsForm.d.ts +1 -1
  393. package/dist/src/components/Employee/Deductions/shared/DeductionsForm/StandardDeductionForm.d.ts +1 -1
  394. package/dist/src/components/Employee/Deductions/shared/DeleteDeductionDialog.d.ts +1 -1
  395. package/dist/src/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/fields.d.ts +8 -8
  396. package/dist/src/components/Employee/Deductions/shared/useDeductionForm/fields.d.ts +7 -7
  397. package/dist/src/components/Employee/Documents/management/DocumentManager.d.ts +1 -1
  398. package/dist/src/components/Employee/Documents/management/Documents.d.ts +1 -1
  399. package/dist/src/components/Employee/Documents/management/DocumentsCard/DocumentsCard.d.ts +1 -1
  400. package/dist/src/components/Employee/Documents/management/DocumentsComponents.d.ts +2 -2
  401. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.d.ts +1 -1
  402. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.d.ts +1 -1
  403. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Head.d.ts +1 -1
  404. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.d.ts +1 -1
  405. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.d.ts +1 -1
  406. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.d.ts +1 -1
  407. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.d.ts +1 -1
  408. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/I9SignatureForm/I9SignatureForm.d.ts +1 -1
  409. package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/documentSignerStateMachine.d.ts +4 -4
  410. package/dist/src/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.d.ts +2 -2
  411. package/dist/src/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.d.ts +1 -1
  412. package/dist/src/components/Employee/Documents/shared/SignatureForm/SignatureForm.d.ts +1 -1
  413. package/dist/src/components/Employee/Documents/shared/useSignEmployeeForm/fields.d.ts +39 -39
  414. package/dist/src/components/Employee/EmployeeList/management/ManagementEmployeeList.d.ts +1 -1
  415. package/dist/src/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +1 -1
  416. package/dist/src/components/Employee/EmployeeList/onboarding/EmployeeList.d.ts +1 -1
  417. package/dist/src/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +1 -1
  418. package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +1 -1
  419. package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +4 -4
  420. package/dist/src/components/Employee/FederalTaxes/management/FederalTaxes.d.ts +1 -1
  421. package/dist/src/components/Employee/FederalTaxes/management/FederalTaxesCard/FederalTaxesCard.d.ts +1 -1
  422. package/dist/src/components/Employee/FederalTaxes/management/FederalTaxesComponents.d.ts +2 -2
  423. package/dist/src/components/Employee/FederalTaxes/management/FederalTaxesEditForm.d.ts +1 -1
  424. package/dist/src/components/Employee/FederalTaxes/onboarding/FederalTaxes.d.ts +1 -1
  425. package/dist/src/components/Employee/FederalTaxes/shared/FederalTaxesView.d.ts +1 -1
  426. package/dist/src/components/Employee/FederalTaxes/shared/useFederalTaxesForm/fields.d.ts +6 -6
  427. package/dist/src/components/Employee/HomeAddress/management/HomeAddress.d.ts +1 -1
  428. package/dist/src/components/Employee/HomeAddress/management/HomeAddressCard/HomeAddressCard.d.ts +1 -1
  429. package/dist/src/components/Employee/HomeAddress/management/HomeAddressComponents.d.ts +2 -2
  430. package/dist/src/components/Employee/HomeAddress/management/HomeAddressEditForm.d.ts +1 -1
  431. package/dist/src/components/Employee/HomeAddress/management/HomeAddressView.d.ts +1 -1
  432. package/dist/src/components/Employee/Landing/Landing.d.ts +1 -1
  433. package/dist/src/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlow.d.ts +1 -1
  434. package/dist/src/components/Employee/OnboardingExecutionFlow/OnboardingExecutionFlowComponents.d.ts +3 -3
  435. package/dist/src/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +1 -1
  436. package/dist/src/components/Employee/OnboardingFlow/OnboardingFlow.d.ts +1 -1
  437. package/dist/src/components/Employee/OnboardingFlow/OnboardingFlowComponents.d.ts +2 -2
  438. package/dist/src/components/Employee/OnboardingSummary/OnboardingSummary.d.ts +2 -2
  439. package/dist/src/components/Employee/PaymentMethod/management/PaymentMethod.d.ts +1 -1
  440. package/dist/src/components/Employee/PaymentMethod/management/PaymentMethodBankForm.d.ts +1 -1
  441. package/dist/src/components/Employee/PaymentMethod/management/PaymentMethodCard.d.ts +1 -1
  442. package/dist/src/components/Employee/PaymentMethod/management/PaymentMethodComponents.d.ts +3 -3
  443. package/dist/src/components/Employee/PaymentMethod/management/PaymentMethodSplitForm.d.ts +1 -1
  444. package/dist/src/components/Employee/PaymentMethod/onboarding/BankForm.d.ts +1 -1
  445. package/dist/src/components/Employee/PaymentMethod/onboarding/ListView.d.ts +1 -1
  446. package/dist/src/components/Employee/PaymentMethod/onboarding/PaymentMethod.d.ts +2 -2
  447. package/dist/src/components/Employee/PaymentMethod/onboarding/PaymentMethodComponents.d.ts +3 -3
  448. package/dist/src/components/Employee/PaymentMethod/onboarding/SplitView.d.ts +1 -1
  449. package/dist/src/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.d.ts +1 -1
  450. package/dist/src/components/Employee/PaymentMethod/shared/DeleteBankAccountDialog.d.ts +1 -1
  451. package/dist/src/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.d.ts +1 -1
  452. package/dist/src/components/Employee/PaymentMethod/shared/useBankForm/fields.d.ts +4 -4
  453. package/dist/src/components/Employee/PaymentMethod/shared/usePaymentMethodForm/fields.d.ts +1 -1
  454. package/dist/src/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/fields.d.ts +1 -1
  455. package/dist/src/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.d.ts +1 -1
  456. package/dist/src/components/Employee/Profile/management/Profile.d.ts +1 -1
  457. package/dist/src/components/Employee/Profile/management/ProfileCard/ProfileCard.d.ts +1 -1
  458. package/dist/src/components/Employee/Profile/management/ProfileComponents.d.ts +2 -2
  459. package/dist/src/components/Employee/Profile/management/ProfileEditForm.d.ts +1 -1
  460. package/dist/src/components/Employee/Profile/onboarding/AdminProfile.d.ts +1 -1
  461. package/dist/src/components/Employee/Profile/onboarding/EmployeeProfile.d.ts +1 -1
  462. package/dist/src/components/Employee/Profile/onboarding/Profile.d.ts +2 -2
  463. package/dist/src/components/Employee/Profile/shared/useEmployeeDetailsForm/fields.d.ts +7 -7
  464. package/dist/src/components/Employee/Profile/shared/useHomeAddressForm/fields.d.ts +7 -7
  465. package/dist/src/components/Employee/Profile/shared/useWorkAddressForm/fields.d.ts +2 -2
  466. package/dist/src/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +7 -7
  467. package/dist/src/components/Employee/SelfOnboardingFlow/SelfOnboardingFlow.d.ts +1 -1
  468. package/dist/src/components/Employee/StateTaxes/management/StateTaxes.d.ts +1 -1
  469. package/dist/src/components/Employee/StateTaxes/management/StateTaxesCard/StateTaxesCard.d.ts +1 -1
  470. package/dist/src/components/Employee/StateTaxes/management/StateTaxesComponents.d.ts +2 -2
  471. package/dist/src/components/Employee/StateTaxes/management/StateTaxesEditForm.d.ts +1 -1
  472. package/dist/src/components/Employee/StateTaxes/onboarding/StateTaxes.d.ts +1 -1
  473. package/dist/src/components/Employee/StateTaxes/shared/EmployeeStateTaxesView.d.ts +1 -1
  474. package/dist/src/components/Employee/StateTaxes/shared/useEmployeeStateTaxesForm/fieldComponents.d.ts +6 -6
  475. package/dist/src/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.d.ts +1 -1
  476. package/dist/src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +1 -1
  477. package/dist/src/components/Employee/Terminations/TerminationFlow/TerminationFlow.d.ts +1 -1
  478. package/dist/src/components/Employee/Terminations/TerminationFlow/TerminationFlowComponents.d.ts +4 -4
  479. package/dist/src/components/Employee/Terminations/TerminationSummary/TerminationSummary.d.ts +1 -1
  480. package/dist/src/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +1 -1
  481. package/dist/src/components/Employee/WorkAddress/management/WorkAddress.d.ts +1 -1
  482. package/dist/src/components/Employee/WorkAddress/management/WorkAddressCard/WorkAddressCard.d.ts +1 -1
  483. package/dist/src/components/Employee/WorkAddress/management/WorkAddressComponents.d.ts +2 -2
  484. package/dist/src/components/Employee/WorkAddress/management/WorkAddressEditForm.d.ts +1 -1
  485. package/dist/src/components/Employee/WorkAddress/management/WorkAddressView.d.ts +1 -1
  486. package/dist/src/components/Flow/Flow.d.ts +1 -1
  487. package/dist/src/components/Flow/FlowHeader.d.ts +1 -1
  488. package/dist/src/components/InformationRequests/InformationRequestForm/InformationRequestForm.d.ts +2 -2
  489. package/dist/src/components/InformationRequests/InformationRequestList/InformationRequestList.d.ts +1 -1
  490. package/dist/src/components/InformationRequests/InformationRequests.d.ts +1 -1
  491. package/dist/src/components/InformationRequests/InformationRequestsComponents.d.ts +1 -1
  492. package/dist/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.d.ts +1 -1
  493. package/dist/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.d.ts +1 -1
  494. package/dist/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsComponents.d.ts +2 -2
  495. package/dist/src/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.d.ts +1 -1
  496. package/dist/src/components/Payroll/ConfirmWireDetails/WireInstructions/WireInstructions.d.ts +1 -1
  497. package/dist/src/components/Payroll/Dismissal/DismissalFlow.d.ts +1 -1
  498. package/dist/src/components/Payroll/Dismissal/DismissalFlowComponents.d.ts +2 -2
  499. package/dist/src/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.d.ts +1 -1
  500. package/dist/src/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.d.ts +1 -1
  501. package/dist/src/components/Payroll/GrossUpModal/GrossUpModal.d.ts +1 -1
  502. package/dist/src/components/Payroll/OffCycle/OffCycleFlow.d.ts +1 -1
  503. package/dist/src/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +3 -3
  504. package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreation.d.ts +1 -1
  505. package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  506. package/dist/src/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.d.ts +1 -1
  507. package/dist/src/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.d.ts +1 -1
  508. package/dist/src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.d.ts +1 -1
  509. package/dist/src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.d.ts +1 -1
  510. package/dist/src/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.d.ts +1 -1
  511. package/dist/src/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.d.ts +1 -1
  512. package/dist/src/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.d.ts +1 -1
  513. package/dist/src/components/Payroll/PayrollBlocker/components/PayrollBlockerList.d.ts +1 -1
  514. package/dist/src/components/Payroll/PayrollBlocker/payrollHelpers.d.ts +12 -0
  515. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +1 -1
  516. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
  517. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +6 -1
  518. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.d.ts +1 -1
  519. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
  520. package/dist/src/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +2 -2
  521. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
  522. package/dist/src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +2 -2
  523. package/dist/src/components/Payroll/PayrollFlow/OffCycleFlowContextual.d.ts +1 -1
  524. package/dist/src/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.d.ts +1 -1
  525. package/dist/src/components/Payroll/PayrollFlow/PayrollFlow.d.ts +1 -1
  526. package/dist/src/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +7 -7
  527. package/dist/src/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +1 -1
  528. package/dist/src/components/Payroll/PayrollHistory/PayrollHistory.d.ts +1 -1
  529. package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  530. package/dist/src/components/Payroll/PayrollLanding/PayrollLanding.d.ts +1 -1
  531. package/dist/src/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.d.ts +3 -3
  532. package/dist/src/components/Payroll/PayrollList/PayrollList.d.ts +1 -1
  533. package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +1 -1
  534. package/dist/src/components/Payroll/PayrollOverview/PayrollOverview.d.ts +1 -1
  535. package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  536. package/dist/src/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.d.ts +1 -1
  537. package/dist/src/components/Payroll/PayrollOverview/SubmissionBlockers/GenericBlocker.d.ts +1 -1
  538. package/dist/src/components/Payroll/PayrollReceipts/PayrollReceipts.d.ts +1 -1
  539. package/dist/src/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +1 -1
  540. package/dist/src/components/Payroll/PayrollStatusBadges/PayrollStatusBadges.d.ts +1 -1
  541. package/dist/src/components/Payroll/PrintChecks/PrintChecks.d.ts +1 -1
  542. package/dist/src/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.d.ts +1 -1
  543. package/dist/src/components/Payroll/PrintChecks/PrintChecksComponents.d.ts +3 -3
  544. package/dist/src/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.d.ts +1 -1
  545. package/dist/src/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.d.ts +1 -1
  546. package/dist/src/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.d.ts +1 -1
  547. package/dist/src/components/Payroll/RecoveryCases/RecoveryCases.d.ts +1 -1
  548. package/dist/src/components/Payroll/RecoveryCases/RecoveryCasesComponents.d.ts +1 -1
  549. package/dist/src/components/Payroll/RecoveryCases/RecoveryCasesList/RecoveryCasesList.d.ts +1 -1
  550. package/dist/src/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.d.ts +1 -1
  551. package/dist/src/components/Payroll/Transition/TransitionFlow.d.ts +1 -1
  552. package/dist/src/components/Payroll/Transition/TransitionFlowComponents.d.ts +1 -1
  553. package/dist/src/components/Payroll/TransitionCreation/TransitionCreation.d.ts +1 -1
  554. package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +1 -1
  555. package/dist/src/components/Payroll/TransitionPayroll/TransitionPayroll.d.ts +1 -1
  556. package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollComponents.d.ts +2 -2
  557. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +6 -1
  558. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +7 -1
  559. package/dist/src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts +1 -1
  560. package/dist/src/components/Payroll/helpers.d.ts +34 -0
  561. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +6 -1
  562. package/dist/src/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.d.ts +1 -1
  563. package/dist/src/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.d.ts +1 -1
  564. package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.d.ts +1 -1
  565. package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.d.ts +1 -1
  566. package/dist/src/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.d.ts +1 -1
  567. package/dist/src/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.d.ts +1 -1
  568. package/dist/src/components/TimeOff/PolicyList/PolicyList.d.ts +1 -1
  569. package/dist/src/components/TimeOff/PolicyList/PolicyListPresentation.d.ts +1 -1
  570. package/dist/src/components/TimeOff/PolicySettings/PolicySettings.d.ts +1 -1
  571. package/dist/src/components/TimeOff/PolicySettings/PolicySettingsPresentation.d.ts +1 -1
  572. package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.d.ts +1 -1
  573. package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.d.ts +1 -1
  574. package/dist/src/components/TimeOff/TimeOffFlow/TimeOffFlow.d.ts +1 -1
  575. package/dist/src/components/TimeOff/TimeOffFlow/TimeOffFlowComponents.d.ts +12 -12
  576. package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.d.ts +1 -1
  577. package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
  578. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.d.ts +1 -1
  579. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
  580. package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.d.ts +1 -1
  581. package/dist/src/components/TimeOff/TimeOffPolicyDetail/EditEmployeeBalanceModal.d.ts +1 -1
  582. package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.d.ts +1 -1
  583. package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.d.ts +1 -1
  584. package/dist/src/components/TimeOff/ViewHolidayEmployees/ViewHolidayEmployees.d.ts +1 -1
  585. package/dist/src/components/TimeOff/ViewHolidayPolicyDetails/ViewHolidayPolicyDetails.d.ts +1 -1
  586. package/dist/src/components/TimeOff/ViewHolidaySchedule/ViewHolidaySchedule.d.ts +1 -1
  587. package/dist/src/components/TimeOff/shared/EmployeeTable/EmployeeTable.d.ts +1 -1
  588. package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.d.ts +1 -1
  589. package/dist/src/components/index.d.ts +12 -0
  590. package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +1 -1
  591. package/dist/src/contexts/ApiProvider/informationRequestEnumHook.d.ts +14 -0
  592. package/dist/src/contexts/ApiProvider/informationRequestEnumHook.test.d.ts +1 -0
  593. package/dist/src/contexts/LoadingIndicatorProvider/LoadingIndicatorProvider.d.ts +1 -1
  594. package/dist/src/contexts/LocaleProvider/LocaleProvider.d.ts +1 -1
  595. package/dist/src/contexts/ObservabilityProvider/ObservabilityProvider.d.ts +1 -1
  596. package/dist/src/contexts/ThemeProvider/customRender.d.ts +1 -1
  597. package/dist/src/contexts/UnstableFeaturesProvider/UnstableFeaturesProvider.d.ts +1 -1
  598. package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +2 -0
  599. package/dist/src/helpers/dateFormatting.d.ts +2 -2
  600. package/dist/src/helpers/formattedStrings.d.ts +15 -0
  601. package/dist/src/i18n/en/common.json.d.ts +0 -1
  602. package/dist/src/i18n/types.d.ts +99 -7
  603. package/dist/src/models/external.d.ts +12 -0
  604. package/dist/src/partner-hook-utils/form/FormFieldsMetadataProvider.d.ts +1 -1
  605. package/dist/src/partner-hook-utils/form/SDKFormProvider.d.ts +1 -1
  606. package/dist/src/shared/constants.d.ts +16 -0
  607. package/dist/src/test-utils/renderWithProviders.d.ts +1 -1
  608. package/dist/style.css +1 -1
  609. package/dist/types/sdkError.js +32 -21
  610. package/dist/types/sdkError.js.map +1 -1
  611. package/docs/guides/endpoint-inventory.json +59 -10
  612. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: string\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/**\n * Wraps the prepare-payroll mutation and pay-schedule fetch, retrying while the payroll is still being processed.\n *\n * @remarks\n * Fires the prepare call once on mount, then exposes `handlePreparePayroll` for callers that need to re-prepare\n * (e.g. after sort or pagination changes). Distinguishes initial loading from subsequent pagination via\n * `isLoading` and `isPaginating`, and surfaces the pay schedule for the prepared payroll's pay period.\n *\n * @param params - The company and payroll identifiers, plus optional employee filter, sort, and ready callback.\n * @returns The prepared payroll, its pay schedule, loading flags, and a `handlePreparePayroll` callback to re-run.\n * @internal\n */\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [companyId, payrollId, preparePayroll, employeeUuidsKey, sortBy, onDataReady])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;;;;AA0BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAgB9CC,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AACF,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMf,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMgB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAApB;AAAA,MACA,eAAeQ,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAL;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAAD;AAAA,QAAA;AAAA,MACF;AAAA,IACF,CACD;AACD,IAAAO,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BP,IAAcmB,EAAO,eAAe;AAAA,EAExC,GAAG,CAACvB,GAAWC,GAAWI,GAAgBW,GAAkBb,GAAQC,CAAW,CAAC,GAE1EoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa5B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACmB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}
1
+ {"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { UnprocessableEntityError } from '@gusto/embedded-api/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: string\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n /**\n * When true, prepare is called without a roster. A transition payroll's roster is fixed by the\n * pay-schedule transition, so the API rejects any `employeeUuids` sent to prepare.\n */\n isTransitionPayroll?: boolean\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\n/**\n * Wraps the prepare-payroll mutation and pay-schedule fetch, retrying while the payroll is still being processed.\n *\n * @remarks\n * Fires the prepare call once on mount, then exposes `handlePreparePayroll` for callers that need to re-prepare\n * (e.g. after sort or pagination changes). Distinguishes initial loading from subsequent pagination via\n * `isLoading` and `isPaginating`, and surfaces the pay schedule for the prepared payroll's pay period.\n *\n * @param params - The company and payroll identifiers, plus optional employee filter, sort, and ready callback.\n * @returns The prepared payroll, its pay schedule, loading flags, and a `handlePreparePayroll` callback to re-run.\n * @internal\n */\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n isTransitionPayroll = false,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids: isTransitionPayroll ? undefined : employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [\n companyId,\n payrollId,\n preparePayroll,\n employeeUuidsKey,\n sortBy,\n onDataReady,\n isTransitionPayroll,\n ])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","isTransitionPayroll","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;;;;AA+BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAgB9CC,KAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,qBAAAC,IAAsB;AACxB,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMhB,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMiB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAArB;AAAA,MACA,eAAeS,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAN;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAeE,IAAsB,SAAYH;AAAA,QAAA;AAAA,MACnD;AAAA,IACF,CACD;AACD,IAAAQ,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BR,IAAcoB,EAAO,eAAe;AAAA,EAExC,GAAG;AAAA,IACDxB;AAAA,IACAC;AAAA,IACAK;AAAA,IACAW;AAAA,IACAd;AAAA,IACAC;AAAA,IACAC;AAAA,EAAA,CACD,GAEKoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa7B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACoB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}
@@ -1,44 +1,45 @@
1
1
  import { jsx as u } from "react/jsx-runtime";
2
- import { QueryClientProvider as k } from "@tanstack/react-query";
2
+ import { QueryClientProvider as E } from "@tanstack/react-query";
3
3
  import { GustoEmbeddedProvider as R } from "@gusto/embedded-api/react-query/_context";
4
4
  import { GustoEmbeddedCore as g } from "@gusto/embedded-api/core";
5
5
  import { SDKHooks as q } from "@gusto/embedded-api/hooks/hooks";
6
6
  import { useMemo as m } from "react";
7
7
  import { apiVersionHook as C } from "./apiVersionHook.js";
8
8
  import { apiVersionMismatchHook as a } from "./apiVersionMismatchHook.js";
9
- import { createSdkQueryClient as b } from "./createSdkQueryClient.js";
10
- function I({
9
+ import { informationRequestEnumHook as b } from "./informationRequestEnumHook.js";
10
+ import { createSdkQueryClient as l } from "./createSdkQueryClient.js";
11
+ function P({
11
12
  url: s,
12
13
  headers: i,
13
- hooks: e,
14
- children: d,
14
+ hooks: r,
15
+ children: H,
15
16
  queryClient: f
16
17
  }) {
17
18
  const p = m(() => {
18
19
  const t = new g({
19
20
  serverURL: s
20
- }), r = t._options.hooks || new q();
21
- if (r.registerBeforeRequestHook(C), r.registerAfterSuccessHook(a), r.registerAfterErrorHook(a), i) {
21
+ }), e = t._options.hooks || new q();
22
+ if (e.registerBeforeRequestHook(C), e.registerAfterSuccessHook(a), e.registerAfterErrorHook(a), e.registerAfterSuccessHook(b), i) {
22
23
  const o = {
23
- beforeRequest: (l, n) => (new Headers(i).forEach((c, E) => {
24
- c && n.headers.set(E, c);
24
+ beforeRequest: (S, n) => (new Headers(i).forEach((c, k) => {
25
+ c && n.headers.set(k, c);
25
26
  }), n)
26
27
  };
27
- r.registerBeforeRequestHook(o);
28
+ e.registerBeforeRequestHook(o);
28
29
  }
29
- return e?.beforeCreateRequest && e.beforeCreateRequest.forEach((o) => {
30
- r.registerBeforeCreateRequestHook(o);
31
- }), e?.beforeRequest && e.beforeRequest.forEach((o) => {
32
- r.registerBeforeRequestHook(o);
33
- }), e?.afterSuccess && e.afterSuccess.forEach((o) => {
34
- r.registerAfterSuccessHook(o);
35
- }), e?.afterError && e.afterError.forEach((o) => {
36
- r.registerAfterErrorHook(o);
37
- }), t._options.hooks || (t._options.hooks = r), t;
38
- }, [s, i, e]), H = m(() => f ?? b(), [f]);
39
- return /* @__PURE__ */ u(k, { client: H, children: /* @__PURE__ */ u(R, { client: p, children: d }) });
30
+ return r?.beforeCreateRequest && r.beforeCreateRequest.forEach((o) => {
31
+ e.registerBeforeCreateRequestHook(o);
32
+ }), r?.beforeRequest && r.beforeRequest.forEach((o) => {
33
+ e.registerBeforeRequestHook(o);
34
+ }), r?.afterSuccess && r.afterSuccess.forEach((o) => {
35
+ e.registerAfterSuccessHook(o);
36
+ }), r?.afterError && r.afterError.forEach((o) => {
37
+ e.registerAfterErrorHook(o);
38
+ }), t._options.hooks || (t._options.hooks = e), t;
39
+ }, [s, i, r]), d = m(() => f ?? l(), [f]);
40
+ return /* @__PURE__ */ u(E, { client: d, children: /* @__PURE__ */ u(R, { client: p, children: H }) });
40
41
  }
41
42
  export {
42
- I as ApiProvider
43
+ P as ApiProvider
43
44
  };
44
45
  //# sourceMappingURL=ApiProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiProvider.js","sources":["../../../src/contexts/ApiProvider/ApiProvider.tsx"],"sourcesContent":["import { QueryClientProvider, type QueryClient } from '@tanstack/react-query'\nimport { GustoEmbeddedProvider } from '@gusto/embedded-api/react-query/_context'\nimport { GustoEmbeddedCore } from '@gusto/embedded-api/core'\nimport { SDKHooks as NativeSDKHooks } from '@gusto/embedded-api/hooks/hooks'\nimport { useMemo } from 'react'\nimport { apiVersionHook } from './apiVersionHook'\nimport { apiVersionMismatchHook } from './apiVersionMismatchHook'\nimport { createSdkQueryClient } from './createSdkQueryClient'\nimport type { SDKHooks, BeforeRequestHook } from '@/types/hooks'\n\n/**\n * Props for {@link ApiProvider}.\n *\n * @internal\n */\nexport interface ApiProviderProps {\n /** Base URL the SDK uses for all `@gusto/embedded-api-v-2026-06-15` requests. */\n url: string\n /** Default headers applied to every SDK request, in addition to the `X-Gusto-API-Version` header set automatically. */\n headers?: HeadersInit\n /** Lifecycle hooks for intercepting and modifying SDK requests and responses. */\n hooks?: SDKHooks\n /** Subtree that renders inside the API + React Query providers. */\n children: React.ReactNode\n /** Optional React Query client. When omitted, a client is created with the SDK's defaults (auto-invalidation on mutation success). */\n queryClient?: QueryClient\n}\n\n/**\n * Wires the `@gusto/embedded-api-v-2026-06-15` client and a React Query client into the React tree.\n *\n * @remarks\n * Registers the SDK's `X-Gusto-API-Version` header on every request, warns via `console.warn` if a\n * response reports a different `X-Gusto-API-Version` than was requested (e.g. a proxy rewriting the\n * header), applies any default `headers`, and registers user-supplied lifecycle hooks\n * (`beforeCreateRequest`, `beforeRequest`, `afterSuccess`, `afterError`). When no `queryClient` is\n * supplied, one is created with the SDK's defaults so\n * successful mutations under the `['@gusto/embedded-api-v-2026-06-15']` key invalidate every SDK\n * query automatically. Partners who supply their own `QueryClient` are responsible for matching that\n * contract.\n *\n * Typically wrapped by {@link GustoProvider}; use directly only when composing the provider stack\n * manually.\n *\n * @param props - See {@link ApiProviderProps}.\n * @returns A React subtree wrapped in `QueryClientProvider` and the embedded API context.\n * @internal\n */\nexport function ApiProvider({\n url,\n headers,\n hooks,\n children,\n queryClient: queryClientFromProps,\n}: ApiProviderProps) {\n const gustoClient = useMemo(() => {\n const client = new GustoEmbeddedCore({\n serverURL: url,\n })\n\n const sdkHooks = client._options.hooks || new NativeSDKHooks()\n\n sdkHooks.registerBeforeRequestHook(apiVersionHook)\n sdkHooks.registerAfterSuccessHook(apiVersionMismatchHook)\n sdkHooks.registerAfterErrorHook(apiVersionMismatchHook)\n\n if (headers) {\n const defaultHeaderHook: BeforeRequestHook = {\n beforeRequest: (context, request) => {\n const headersInstance = new Headers(headers)\n headersInstance.forEach((headerValue, headerName) => {\n if (headerValue) {\n request.headers.set(headerName, headerValue)\n }\n })\n return request\n },\n }\n sdkHooks.registerBeforeRequestHook(defaultHeaderHook)\n }\n\n if (hooks?.beforeCreateRequest) {\n hooks.beforeCreateRequest.forEach(hook => {\n sdkHooks.registerBeforeCreateRequestHook(hook)\n })\n }\n\n if (hooks?.beforeRequest) {\n hooks.beforeRequest.forEach(hook => {\n sdkHooks.registerBeforeRequestHook(hook)\n })\n }\n\n if (hooks?.afterSuccess) {\n hooks.afterSuccess.forEach(hook => {\n sdkHooks.registerAfterSuccessHook(hook)\n })\n }\n\n if (hooks?.afterError) {\n hooks.afterError.forEach(hook => {\n sdkHooks.registerAfterErrorHook(hook)\n })\n }\n\n if (!client._options.hooks) {\n client._options.hooks = sdkHooks\n }\n\n return client\n }, [url, headers, hooks])\n\n const queryClient = useMemo(() => {\n return queryClientFromProps ?? createSdkQueryClient()\n }, [queryClientFromProps])\n\n return (\n <QueryClientProvider client={queryClient}>\n <GustoEmbeddedProvider client={gustoClient}>{children}</GustoEmbeddedProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["ApiProvider","url","headers","hooks","children","queryClientFromProps","gustoClient","useMemo","client","GustoEmbeddedCore","sdkHooks","NativeSDKHooks","apiVersionHook","apiVersionMismatchHook","defaultHeaderHook","context","request","headerValue","headerName","hook","queryClient","createSdkQueryClient","jsx","QueryClientProvider","GustoEmbeddedProvider"],"mappings":";;;;;;;;;AAgDO,SAASA,EAAY;AAAA,EAC1B,KAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAaC;AACf,GAAqB;AACnB,QAAMC,IAAcC,EAAQ,MAAM;AAChC,UAAMC,IAAS,IAAIC,EAAkB;AAAA,MACnC,WAAWR;AAAA,IAAA,CACZ,GAEKS,IAAWF,EAAO,SAAS,SAAS,IAAIG,EAAA;AAM9C,QAJAD,EAAS,0BAA0BE,CAAc,GACjDF,EAAS,yBAAyBG,CAAsB,GACxDH,EAAS,uBAAuBG,CAAsB,GAElDX,GAAS;AACX,YAAMY,IAAuC;AAAA,QAC3C,eAAe,CAACC,GAASC,OACC,IAAI,QAAQd,CAAO,EAC3B,QAAQ,CAACe,GAAaC,MAAe;AACnD,UAAID,KACFD,EAAQ,QAAQ,IAAIE,GAAYD,CAAW;AAAA,QAE/C,CAAC,GACMD;AAAA,MACT;AAEF,MAAAN,EAAS,0BAA0BI,CAAiB;AAAA,IACtD;AAEA,WAAIX,GAAO,uBACTA,EAAM,oBAAoB,QAAQ,CAAAgB,MAAQ;AACxC,MAAAT,EAAS,gCAAgCS,CAAI;AAAA,IAC/C,CAAC,GAGChB,GAAO,iBACTA,EAAM,cAAc,QAAQ,CAAAgB,MAAQ;AAClC,MAAAT,EAAS,0BAA0BS,CAAI;AAAA,IACzC,CAAC,GAGChB,GAAO,gBACTA,EAAM,aAAa,QAAQ,CAAAgB,MAAQ;AACjC,MAAAT,EAAS,yBAAyBS,CAAI;AAAA,IACxC,CAAC,GAGChB,GAAO,cACTA,EAAM,WAAW,QAAQ,CAAAgB,MAAQ;AAC/B,MAAAT,EAAS,uBAAuBS,CAAI;AAAA,IACtC,CAAC,GAGEX,EAAO,SAAS,UACnBA,EAAO,SAAS,QAAQE,IAGnBF;AAAA,EACT,GAAG,CAACP,GAAKC,GAASC,CAAK,CAAC,GAElBiB,IAAcb,EAAQ,MACnBF,KAAwBgB,EAAA,GAC9B,CAAChB,CAAoB,CAAC;AAEzB,SACE,gBAAAiB,EAACC,KAAoB,QAAQH,GAC3B,4BAACI,GAAA,EAAsB,QAAQlB,GAAc,UAAAF,EAAA,CAAS,EAAA,CACxD;AAEJ;"}
1
+ {"version":3,"file":"ApiProvider.js","sources":["../../../src/contexts/ApiProvider/ApiProvider.tsx"],"sourcesContent":["import { QueryClientProvider, type QueryClient } from '@tanstack/react-query'\nimport { GustoEmbeddedProvider } from '@gusto/embedded-api/react-query/_context'\nimport { GustoEmbeddedCore } from '@gusto/embedded-api/core'\nimport { SDKHooks as NativeSDKHooks } from '@gusto/embedded-api/hooks/hooks'\nimport { useMemo } from 'react'\nimport { apiVersionHook } from './apiVersionHook'\nimport { apiVersionMismatchHook } from './apiVersionMismatchHook'\nimport { informationRequestEnumHook } from './informationRequestEnumHook'\nimport { createSdkQueryClient } from './createSdkQueryClient'\nimport type { SDKHooks, BeforeRequestHook } from '@/types/hooks'\n\n/**\n * Props for {@link ApiProvider}.\n *\n * @internal\n */\nexport interface ApiProviderProps {\n /** Base URL the SDK uses for all `@gusto/embedded-api-v-2026-06-15` requests. */\n url: string\n /** Default headers applied to every SDK request, in addition to the `X-Gusto-API-Version` header set automatically. */\n headers?: HeadersInit\n /** Lifecycle hooks for intercepting and modifying SDK requests and responses. */\n hooks?: SDKHooks\n /** Subtree that renders inside the API + React Query providers. */\n children: React.ReactNode\n /** Optional React Query client. When omitted, a client is created with the SDK's defaults (auto-invalidation on mutation success). */\n queryClient?: QueryClient\n}\n\n/**\n * Wires the `@gusto/embedded-api-v-2026-06-15` client and a React Query client into the React tree.\n *\n * @remarks\n * Registers the SDK's `X-Gusto-API-Version` header on every request, warns via `console.warn` if a\n * response reports a different `X-Gusto-API-Version` than was requested (e.g. a proxy rewriting the\n * header), applies any default `headers`, and registers user-supplied lifecycle hooks\n * (`beforeCreateRequest`, `beforeRequest`, `afterSuccess`, `afterError`). When no `queryClient` is\n * supplied, one is created with the SDK's defaults so\n * successful mutations under the `['@gusto/embedded-api-v-2026-06-15']` key invalidate every SDK\n * query automatically. Partners who supply their own `QueryClient` are responsible for matching that\n * contract.\n *\n * Typically wrapped by {@link GustoProvider}; use directly only when composing the provider stack\n * manually.\n *\n * @param props - See {@link ApiProviderProps}.\n * @returns A React subtree wrapped in `QueryClientProvider` and the embedded API context.\n * @internal\n */\nexport function ApiProvider({\n url,\n headers,\n hooks,\n children,\n queryClient: queryClientFromProps,\n}: ApiProviderProps) {\n const gustoClient = useMemo(() => {\n const client = new GustoEmbeddedCore({\n serverURL: url,\n })\n\n const sdkHooks = client._options.hooks || new NativeSDKHooks()\n\n sdkHooks.registerBeforeRequestHook(apiVersionHook)\n sdkHooks.registerAfterSuccessHook(apiVersionMismatchHook)\n sdkHooks.registerAfterErrorHook(apiVersionMismatchHook)\n sdkHooks.registerAfterSuccessHook(informationRequestEnumHook)\n\n if (headers) {\n const defaultHeaderHook: BeforeRequestHook = {\n beforeRequest: (context, request) => {\n const headersInstance = new Headers(headers)\n headersInstance.forEach((headerValue, headerName) => {\n if (headerValue) {\n request.headers.set(headerName, headerValue)\n }\n })\n return request\n },\n }\n sdkHooks.registerBeforeRequestHook(defaultHeaderHook)\n }\n\n if (hooks?.beforeCreateRequest) {\n hooks.beforeCreateRequest.forEach(hook => {\n sdkHooks.registerBeforeCreateRequestHook(hook)\n })\n }\n\n if (hooks?.beforeRequest) {\n hooks.beforeRequest.forEach(hook => {\n sdkHooks.registerBeforeRequestHook(hook)\n })\n }\n\n if (hooks?.afterSuccess) {\n hooks.afterSuccess.forEach(hook => {\n sdkHooks.registerAfterSuccessHook(hook)\n })\n }\n\n if (hooks?.afterError) {\n hooks.afterError.forEach(hook => {\n sdkHooks.registerAfterErrorHook(hook)\n })\n }\n\n if (!client._options.hooks) {\n client._options.hooks = sdkHooks\n }\n\n return client\n }, [url, headers, hooks])\n\n const queryClient = useMemo(() => {\n return queryClientFromProps ?? createSdkQueryClient()\n }, [queryClientFromProps])\n\n return (\n <QueryClientProvider client={queryClient}>\n <GustoEmbeddedProvider client={gustoClient}>{children}</GustoEmbeddedProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["ApiProvider","url","headers","hooks","children","queryClientFromProps","gustoClient","useMemo","client","GustoEmbeddedCore","sdkHooks","NativeSDKHooks","apiVersionHook","apiVersionMismatchHook","informationRequestEnumHook","defaultHeaderHook","context","request","headerValue","headerName","hook","queryClient","createSdkQueryClient","jsx","QueryClientProvider","GustoEmbeddedProvider"],"mappings":";;;;;;;;;;AAiDO,SAASA,EAAY;AAAA,EAC1B,KAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAaC;AACf,GAAqB;AACnB,QAAMC,IAAcC,EAAQ,MAAM;AAChC,UAAMC,IAAS,IAAIC,EAAkB;AAAA,MACnC,WAAWR;AAAA,IAAA,CACZ,GAEKS,IAAWF,EAAO,SAAS,SAAS,IAAIG,EAAA;AAO9C,QALAD,EAAS,0BAA0BE,CAAc,GACjDF,EAAS,yBAAyBG,CAAsB,GACxDH,EAAS,uBAAuBG,CAAsB,GACtDH,EAAS,yBAAyBI,CAA0B,GAExDZ,GAAS;AACX,YAAMa,IAAuC;AAAA,QAC3C,eAAe,CAACC,GAASC,OACC,IAAI,QAAQf,CAAO,EAC3B,QAAQ,CAACgB,GAAaC,MAAe;AACnD,UAAID,KACFD,EAAQ,QAAQ,IAAIE,GAAYD,CAAW;AAAA,QAE/C,CAAC,GACMD;AAAA,MACT;AAEF,MAAAP,EAAS,0BAA0BK,CAAiB;AAAA,IACtD;AAEA,WAAIZ,GAAO,uBACTA,EAAM,oBAAoB,QAAQ,CAAAiB,MAAQ;AACxC,MAAAV,EAAS,gCAAgCU,CAAI;AAAA,IAC/C,CAAC,GAGCjB,GAAO,iBACTA,EAAM,cAAc,QAAQ,CAAAiB,MAAQ;AAClC,MAAAV,EAAS,0BAA0BU,CAAI;AAAA,IACzC,CAAC,GAGCjB,GAAO,gBACTA,EAAM,aAAa,QAAQ,CAAAiB,MAAQ;AACjC,MAAAV,EAAS,yBAAyBU,CAAI;AAAA,IACxC,CAAC,GAGCjB,GAAO,cACTA,EAAM,WAAW,QAAQ,CAAAiB,MAAQ;AAC/B,MAAAV,EAAS,uBAAuBU,CAAI;AAAA,IACtC,CAAC,GAGEZ,EAAO,SAAS,UACnBA,EAAO,SAAS,QAAQE,IAGnBF;AAAA,EACT,GAAG,CAACP,GAAKC,GAASC,CAAK,CAAC,GAElBkB,IAAcd,EAAQ,MACnBF,KAAwBiB,EAAA,GAC9B,CAACjB,CAAoB,CAAC;AAEzB,SACE,gBAAAkB,EAACC,KAAoB,QAAQH,GAC3B,4BAACI,GAAA,EAAsB,QAAQnB,GAAc,UAAAF,EAAA,CAAS,EAAA,CACxD;AAEJ;"}
@@ -0,0 +1,30 @@
1
+ import { InformationRequestStatus as a, ResponseType as i, InformationRequestType as S } from "@gusto/embedded-api/models/components/informationrequest";
2
+ const _ = "get-information-requests", c = new Set(Object.values(S)), u = new Set(Object.values(a)), T = new Set(Object.values(i)), m = a.PendingResponse, R = i.Text, r = (t) => !!t && typeof t == "object", n = (t, e) => typeof t == "string" && !e.has(t), y = (t) => r(t) && n(t.response_type, T), f = (t) => r(t) && (n(t.type, c) || n(t.status, u) || Array.isArray(t.required_questions) && t.required_questions.some(y)), A = (t) => {
3
+ const e = { ...t };
4
+ return n(t.type, c) && (e.type = null), n(t.status, u) && (e.status = m), Array.isArray(t.required_questions) && (e.required_questions = t.required_questions.map(
5
+ (s) => y(s) ? { ...s, response_type: R } : s
6
+ )), e;
7
+ }, N = {
8
+ afterSuccess: async (t, e) => {
9
+ if (t.operationID !== _)
10
+ return e;
11
+ let s;
12
+ try {
13
+ s = await e.clone().json();
14
+ } catch {
15
+ return e;
16
+ }
17
+ if (!Array.isArray(s) || !s.some(f))
18
+ return e;
19
+ const p = s.map((o) => r(o) ? A(o) : o);
20
+ return new Response(JSON.stringify(p), {
21
+ status: e.status,
22
+ statusText: e.statusText,
23
+ headers: e.headers
24
+ });
25
+ }
26
+ };
27
+ export {
28
+ N as informationRequestEnumHook
29
+ };
30
+ //# sourceMappingURL=informationRequestEnumHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"informationRequestEnumHook.js","sources":["../../../src/contexts/ApiProvider/informationRequestEnumHook.ts"],"sourcesContent":["import {\n InformationRequestType,\n InformationRequestStatus,\n ResponseType,\n} from '@gusto/embedded-api/models/components/informationrequest'\nimport type { AfterSuccessHook } from '@/types/hooks'\n\nconst GET_INFORMATION_REQUESTS_OPERATION_ID = 'get-information-requests'\n\nconst KNOWN_TYPES: ReadonlySet<string> = new Set(Object.values(InformationRequestType))\nconst KNOWN_STATUSES: ReadonlySet<string> = new Set(Object.values(InformationRequestStatus))\nconst KNOWN_RESPONSE_TYPES: ReadonlySet<string> = new Set(Object.values(ResponseType))\n\n// `type` is nullable in the schema, so an unrecognized type collapses to `null` rather than an\n// invented category. An unknown `status` falls back to `pending_response` so the request stays\n// visible and actionable (never silently treated as `approved`, which would hide it). An unknown\n// `response_type` falls back to `text`, a generic renderable input.\nconst FALLBACK_STATUS = InformationRequestStatus.PendingResponse\nconst FALLBACK_RESPONSE_TYPE = ResponseType.Text\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n Boolean(value) && typeof value === 'object'\n\nconst hasUnknownEnum = (value: unknown, known: ReadonlySet<string>): value is string =>\n typeof value === 'string' && !known.has(value)\n\nconst questionHasUnknownResponseType = (question: unknown): boolean =>\n isRecord(question) && hasUnknownEnum(question.response_type, KNOWN_RESPONSE_TYPES)\n\nconst requestNeedsRemap = (request: unknown): request is Record<string, unknown> =>\n isRecord(request) &&\n (hasUnknownEnum(request.type, KNOWN_TYPES) ||\n hasUnknownEnum(request.status, KNOWN_STATUSES) ||\n (Array.isArray(request.required_questions) &&\n request.required_questions.some(questionHasUnknownResponseType)))\n\nconst remapRequest = (request: Record<string, unknown>): Record<string, unknown> => {\n const next: Record<string, unknown> = { ...request }\n\n if (hasUnknownEnum(request.type, KNOWN_TYPES)) {\n next.type = null\n }\n\n if (hasUnknownEnum(request.status, KNOWN_STATUSES)) {\n next.status = FALLBACK_STATUS\n }\n\n if (Array.isArray(request.required_questions)) {\n next.required_questions = request.required_questions.map(question =>\n questionHasUnknownResponseType(question)\n ? { ...(question as Record<string, unknown>), response_type: FALLBACK_RESPONSE_TYPE }\n : question,\n )\n }\n\n return next\n}\n\n/**\n * Temporary workaround for a Gusto-Partner-API spec gap: `InformationRequest.type`, `.status`, and\n * `requiredQuestions[].responseType` are generated as closed enums (`z.nativeEnum`) in\n * `@gusto/embedded-api`, so a value the published OAS doesn't list makes the whole\n * `GetInformationRequests` response throw an `SDKValidationError` -- taking down every\n * `useInformationRequestsGetInformationRequestsSuspense` call site (including the payroll blocker\n * RFI surface, SDK-1347). This afterSuccess hook remaps any value outside those closed enums to a\n * safe known member before the SDK's zod parse, so the response still validates and the request\n * stays viewable. Remove once the client supports lax/open enum parsing for these fields.\n *\n * @internal\n */\nexport const informationRequestEnumHook: AfterSuccessHook = {\n afterSuccess: async (context, response) => {\n if (context.operationID !== GET_INFORMATION_REQUESTS_OPERATION_ID) {\n return response\n }\n\n // The endpoint's body is a bare array of information requests (Speakeasy wraps it under\n // `Information-Requests` before parsing), so read and rewrite that array directly.\n let body: unknown\n try {\n body = await response.clone().json()\n } catch {\n return response\n }\n\n if (!Array.isArray(body) || !body.some(requestNeedsRemap)) {\n return response\n }\n\n const remapped = body.map(request => (isRecord(request) ? remapRequest(request) : request))\n\n return new Response(JSON.stringify(remapped), {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n })\n },\n}\n"],"names":["GET_INFORMATION_REQUESTS_OPERATION_ID","KNOWN_TYPES","InformationRequestType","KNOWN_STATUSES","InformationRequestStatus","KNOWN_RESPONSE_TYPES","ResponseType","FALLBACK_STATUS","FALLBACK_RESPONSE_TYPE","isRecord","value","hasUnknownEnum","known","questionHasUnknownResponseType","question","requestNeedsRemap","request","remapRequest","next","informationRequestEnumHook","context","response","body","remapped"],"mappings":";AAOA,MAAMA,IAAwC,4BAExCC,IAAmC,IAAI,IAAI,OAAO,OAAOC,CAAsB,CAAC,GAChFC,IAAsC,IAAI,IAAI,OAAO,OAAOC,CAAwB,CAAC,GACrFC,IAA4C,IAAI,IAAI,OAAO,OAAOC,CAAY,CAAC,GAM/EC,IAAkBH,EAAyB,iBAC3CI,IAAyBF,EAAa,MAEtCG,IAAW,CAACC,MAChB,EAAQA,KAAU,OAAOA,KAAU,UAE/BC,IAAiB,CAACD,GAAgBE,MACtC,OAAOF,KAAU,YAAY,CAACE,EAAM,IAAIF,CAAK,GAEzCG,IAAiC,CAACC,MACtCL,EAASK,CAAQ,KAAKH,EAAeG,EAAS,eAAeT,CAAoB,GAE7EU,IAAoB,CAACC,MACzBP,EAASO,CAAO,MACfL,EAAeK,EAAQ,MAAMf,CAAW,KACvCU,EAAeK,EAAQ,QAAQb,CAAc,KAC5C,MAAM,QAAQa,EAAQ,kBAAkB,KACvCA,EAAQ,mBAAmB,KAAKH,CAA8B,IAE9DI,IAAe,CAACD,MAA8D;AAClF,QAAME,IAAgC,EAAE,GAAGF,EAAA;AAE3C,SAAIL,EAAeK,EAAQ,MAAMf,CAAW,MAC1CiB,EAAK,OAAO,OAGVP,EAAeK,EAAQ,QAAQb,CAAc,MAC/Ce,EAAK,SAASX,IAGZ,MAAM,QAAQS,EAAQ,kBAAkB,MAC1CE,EAAK,qBAAqBF,EAAQ,mBAAmB;AAAA,IAAI,CAAAF,MACvDD,EAA+BC,CAAQ,IACnC,EAAE,GAAIA,GAAsC,eAAeN,MAC3DM;AAAA,EAAA,IAIDI;AACT,GAcaC,IAA+C;AAAA,EAC1D,cAAc,OAAOC,GAASC,MAAa;AACzC,QAAID,EAAQ,gBAAgBpB;AAC1B,aAAOqB;AAKT,QAAIC;AACJ,QAAI;AACF,MAAAA,IAAO,MAAMD,EAAS,MAAA,EAAQ,KAAA;AAAA,IAChC,QAAQ;AACN,aAAOA;AAAA,IACT;AAEA,QAAI,CAAC,MAAM,QAAQC,CAAI,KAAK,CAACA,EAAK,KAAKP,CAAiB;AACtD,aAAOM;AAGT,UAAME,IAAWD,EAAK,IAAI,CAAAN,MAAYP,EAASO,CAAO,IAAIC,EAAaD,CAAO,IAAIA,CAAQ;AAE1F,WAAO,IAAI,SAAS,KAAK,UAAUO,CAAQ,GAAG;AAAA,MAC5C,QAAQF,EAAS;AAAA,MACjB,YAAYA,EAAS;AAAA,MACrB,SAASA,EAAS;AAAA,IAAA,CACnB;AAAA,EACH;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUnstableFeature.js","sources":["../../../src/contexts/UnstableFeaturesProvider/useUnstableFeature.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\n/**\n * Opt-in flags for SDK functionality that is still in active development.\n *\n * @remarks\n * Pass to {@link GustoProvider} via the `unstableFeatures` prop to enable a feature ahead of its\n * public release. Every flag defaults to disabled when omitted. When a feature graduates to\n * public release, its flag is deleted from this interface along with the conditional checks that\n * read it — there is no deprecation step. This interface may have no flags at all at any given\n * time — e.g. immediately after the last active flag graduates and before the next one is added —\n * the opt-in mechanism itself is permanent even when nothing is currently gated behind it.\n *\n * @alpha\n */\nexport interface UnstableFeatures {\n /** Enables recording past payments to contractors within the `ContractorManagement` flows. */\n historicalPayments?: boolean\n /**\n * Enables the in-development regular-rate-of-pay experience: the payroll editing flow, and the\n * workweek start day field on `PaySchedule` that RRoP's overtime calculations depend on.\n */\n payrollRegularRateOfPay?: boolean\n}\n\n/**\n * React context backing {@link useUnstableFeature}.\n *\n * @internal\n */\nexport const UnstableFeaturesContext = createContext<UnstableFeatures>({})\n\n/**\n * Reads whether `feature` is enabled via {@link GustoProvider}'s `unstableFeatures` prop.\n *\n * @remarks\n * With `throwIfDisabled: true`, call unconditionally at the top of an alpha component's body —\n * not inside {@link WithUnstableFeature} — so mounting the component without opting in fails\n * loudly and immediately. This throws in every environment, including production: using an alpha\n * component without its flag is an integration mistake, not a runtime state, the same as\n * {@link useComponentContext} throwing when called outside a `ComponentsProvider`.\n *\n * @param feature - The {@link UnstableFeatures} flag to read.\n * @param options - Set `throwIfDisabled` to throw instead of returning `false` when `feature` is disabled.\n * @throws When `options.throwIfDisabled` is set and `feature` is not enabled.\n * @internal\n */\nexport const useUnstableFeature = (\n feature: keyof UnstableFeatures,\n options: { throwIfDisabled?: boolean } = { throwIfDisabled: false },\n): boolean => {\n const features = useContext(UnstableFeaturesContext)\n const isEnabled = !!features[feature]\n\n if (options.throwIfDisabled && !isEnabled) {\n throw new Error(\n `This component requires the unstable feature flag \"${feature}\" to be enabled via GustoProvider's \\`unstableFeatures\\` prop.`,\n )\n }\n\n return isEnabled\n}\n"],"names":["UnstableFeaturesContext","createContext","useUnstableFeature","feature","options","isEnabled","useContext"],"mappings":";AA8BO,MAAMA,IAA0BC,EAAgC,CAAA,CAAE,GAiB5DC,IAAqB,CAChCC,GACAC,IAAyC,EAAE,iBAAiB,SAChD;AAEZ,QAAMC,IAAY,CAAC,CADFC,EAAWN,CAAuB,EACtBG,CAAO;AAEpC,MAAIC,EAAQ,mBAAmB,CAACC;AAC9B,UAAM,IAAI;AAAA,MACR,sDAAsDF,CAAO;AAAA,IAAA;AAIjE,SAAOE;AACT;"}
1
+ {"version":3,"file":"useUnstableFeature.js","sources":["../../../src/contexts/UnstableFeaturesProvider/useUnstableFeature.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\n\n/**\n * Opt-in flags for SDK functionality that is still in active development.\n *\n * @remarks\n * Pass to {@link GustoProvider} via the `unstableFeatures` prop to enable a feature ahead of its\n * public release. Every flag defaults to disabled when omitted. When a feature graduates to\n * public release, its flag is deleted from this interface along with the conditional checks that\n * read it — there is no deprecation step. This interface may have no flags at all at any given\n * time — e.g. immediately after the last active flag graduates and before the next one is added —\n * the opt-in mechanism itself is permanent even when nothing is currently gated behind it.\n *\n * @alpha\n */\nexport interface UnstableFeatures {\n /** Enables recording past payments to contractors within the `ContractorManagement` flows. */\n historicalPayments?: boolean\n /**\n * Enables the in-development regular-rate-of-pay experience: the payroll editing flow, and the\n * workweek start day field on `PaySchedule` that RRoP's overtime calculations depend on.\n */\n payrollRegularRateOfPay?: boolean\n /** Enables the in-development `CompanyManagement.PaySchedule` flow for managing pay schedules and their assignments after onboarding. */\n managePaySchedules?: boolean\n}\n\n/**\n * React context backing {@link useUnstableFeature}.\n *\n * @internal\n */\nexport const UnstableFeaturesContext = createContext<UnstableFeatures>({})\n\n/**\n * Reads whether `feature` is enabled via {@link GustoProvider}'s `unstableFeatures` prop.\n *\n * @remarks\n * With `throwIfDisabled: true`, call unconditionally at the top of an alpha component's body —\n * not inside {@link WithUnstableFeature} — so mounting the component without opting in fails\n * loudly and immediately. This throws in every environment, including production: using an alpha\n * component without its flag is an integration mistake, not a runtime state, the same as\n * {@link useComponentContext} throwing when called outside a `ComponentsProvider`.\n *\n * @param feature - The {@link UnstableFeatures} flag to read.\n * @param options - Set `throwIfDisabled` to throw instead of returning `false` when `feature` is disabled.\n * @throws When `options.throwIfDisabled` is set and `feature` is not enabled.\n * @internal\n */\nexport const useUnstableFeature = (\n feature: keyof UnstableFeatures,\n options: { throwIfDisabled?: boolean } = { throwIfDisabled: false },\n): boolean => {\n const features = useContext(UnstableFeaturesContext)\n const isEnabled = !!features[feature]\n\n if (options.throwIfDisabled && !isEnabled) {\n throw new Error(\n `This component requires the unstable feature flag \"${feature}\" to be enabled via GustoProvider's \\`unstableFeatures\\` prop.`,\n )\n }\n\n return isEnabled\n}\n"],"names":["UnstableFeaturesContext","createContext","useUnstableFeature","feature","options","isEnabled","useContext"],"mappings":";AAgCO,MAAMA,IAA0BC,EAAgC,CAAA,CAAE,GAiB5DC,IAAqB,CAChCC,GACAC,IAAyC,EAAE,iBAAiB,SAChD;AAEZ,QAAMC,IAAY,CAAC,CADFC,EAAWN,CAAuB,EACtBG,CAAO;AAEpC,MAAIC,EAAQ,mBAAmB,CAACC;AAC9B,UAAM,IAAI;AAAA,MACR,sDAAsDF,CAAO;AAAA,IAAA;AAIjE,SAAOE;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dateFormatting.js","sources":["../../src/helpers/dateFormatting.ts"],"sourcesContent":["/**\n * Normalizes any date input (string, Date, or undefined) to a Date object.\n *\n * @remarks Handles `YYYY-MM-DD` strings by parsing them in local time to avoid\n * timezone drift. Also accepts ISO timestamp strings and existing `Date`\n * instances. Returns `null` for nullish, empty, or unparseable input.\n *\n * @param dateInput - The date value to normalize.\n * @returns A `Date` instance, or `null` if the input is missing or invalid.\n * @internal\n */\nexport const normalizeToDate = (dateInput?: string | Date | null): Date | null => {\n if (!dateInput) return null\n\n if (typeof dateInput === 'string') {\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(dateInput)) {\n const parts = dateInput.split('-')\n if (parts.length !== 3) return null\n\n const numbers = parts.map(Number)\n const year = numbers[0]\n const month = numbers[1]\n const day = numbers[2]\n if (year === undefined || month === undefined || day === undefined) {\n return null\n }\n\n if (\n isNaN(year) ||\n isNaN(month) ||\n isNaN(day) ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31\n ) {\n return null\n }\n\n return new Date(year, month - 1, day)\n }\n\n const parsedDate = new Date(dateInput)\n return isNaN(parsedDate.getTime()) ? null : parsedDate\n }\n\n if (dateInput instanceof Date) {\n return isNaN(dateInput.getTime()) ? null : dateInput\n }\n\n return null\n}\n\n/**\n * Creates a date formatter function that handles both string and Date inputs.\n */\nconst createDateFormatter =\n (options: Intl.DateTimeFormatOptions) =>\n (dateInput?: string | Date | null, locale?: string): string => {\n const date = normalizeToDate(dateInput)\n if (!date) return ''\n return date.toLocaleDateString(locale, options)\n }\n\n/**\n * Formats a date as a short weekday plus short month and day (e.g. `Mon, Jan 5`).\n *\n * @internal\n */\nexport const formatDateShortWithWeekday = createDateFormatter({\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n})\n\n/**\n * Formats a date as a short weekday, short month, day, and year (e.g. `Mon, Jan 5, 2025`).\n *\n * @internal\n */\nexport const formatDateShortWithWeekdayAndYear = createDateFormatter({\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n})\n\n/**\n * Formats a date as a short month and day (e.g. `Jan 5`).\n *\n * @internal\n */\nexport const formatDateShort = createDateFormatter({\n month: 'short',\n day: 'numeric',\n})\n\n/**\n * Formats a date as a short month, day, and year (e.g. `Jan 5, 2025`).\n *\n * @internal\n */\nexport const formatDateShortWithYear = createDateFormatter({\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n})\n\n/**\n * Formats a date as a long month and day (e.g. `January 5`).\n *\n * @internal\n */\nexport const formatDateLong = createDateFormatter({\n month: 'long',\n day: 'numeric',\n})\n\n/**\n * Formats a date as a long month, day, and year (e.g. `January 5, 2025`).\n *\n * @internal\n */\nexport const formatDateLongWithYear = createDateFormatter({\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n})\n\n/**\n * Splits a date into separate locale-formatted time and date strings.\n *\n * @param dateInput - The date value to format.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleString`.\n * @returns An object with `time` (e.g. `3:45 PM EST`) and `date` (e.g. `Mon, Jan 5`).\n * Both fields are empty strings when the input cannot be parsed.\n * @internal\n */\nexport const formatDateWithTime = (\n dateInput?: string | Date | null,\n locale?: string,\n): { time: string; date: string } => {\n const date = normalizeToDate(dateInput)\n if (!date) return { time: '', date: '' }\n\n const time = date.toLocaleTimeString(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n timeZoneName: 'short',\n })\n\n const dateString = date.toLocaleDateString(locale, {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n })\n\n return { time, date: dateString }\n}\n\n/**\n * Formats a pay period start and end date for display as separate fields.\n *\n * @remarks Start date renders with the long month and day; end date renders\n * with the short month, day, and year.\n *\n * @param startDateInput - Pay period start date.\n * @param endDateInput - Pay period end date.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleDateString`.\n * @returns Formatted `startDate` and `endDate` strings. Both fields are empty\n * strings when either input cannot be parsed.\n * @internal\n */\nexport const formatPayPeriod = (\n startDateInput?: string | Date | null,\n endDateInput?: string | Date | null,\n locale?: string,\n): { startDate: string; endDate: string } => {\n const startDate = normalizeToDate(startDateInput)\n const endDate = normalizeToDate(endDateInput)\n\n if (!startDate || !endDate) {\n return { startDate: '', endDate: '' }\n }\n\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n\n return { startDate: startFormatted, endDate: endFormatted }\n}\n\n/**\n * Formats a pay period as a single en-dash–separated range string.\n *\n * @param startDateInput - Pay period start date.\n * @param endDateInput - Pay period end date.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleDateString`.\n * @param options - When `useShortMonth` is true, both ends use short month names.\n * Otherwise the start uses the long month name and the end uses short.\n * @returns The formatted range (e.g. `January 1–Jan 15, 2025`), or an empty\n * string when either input cannot be parsed.\n * @internal\n */\nexport const formatPayPeriodRange = (\n startDateInput?: string | Date | null,\n endDateInput?: string | Date | null,\n locale?: string,\n options?: { useShortMonth?: boolean },\n): string => {\n const startDate = normalizeToDate(startDateInput)\n const endDate = normalizeToDate(endDateInput)\n\n if (!startDate || !endDate) return ''\n\n const monthFormat = options?.useShortMonth ? 'short' : 'long'\n\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: monthFormat,\n day: 'numeric',\n })\n\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: monthFormat,\n day: 'numeric',\n year: 'numeric',\n })\n\n return `${startFormatted}–${endFormatted}`\n}\n\n/**\n * Formats a `Date` as a `YYYY-MM-DD` string using the local year, month, and day.\n *\n * @param date - The date to format.\n * @returns A zero-padded `YYYY-MM-DD` string, or `null` when the input is an invalid date.\n * @internal\n */\nexport const formatDateToStringDate = (date: Date): string | null => {\n if (isNaN(date.getTime())) {\n return null\n }\n const year = String(date.getFullYear()).padStart(4, '0')\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\n/**\n * Converts any parseable date string to a `YYYY-MM-DD` ISO string using local time.\n *\n * @remarks Reads the local year, month, and day so the calendar date is\n * preserved regardless of the runtime timezone. Safe for dates parsed from\n * locale-format strings (e.g. `4/16/1998`) or ISO strings, both of which land\n * at local midnight when normalized.\n *\n * @param value - The date string to convert.\n * @returns A `YYYY-MM-DD` string, or `''` for nullish, empty, or unparseable input.\n * @internal\n */\nexport const normalizeToISOString = (value?: string | null): string => {\n if (!value) return ''\n const date = normalizeToDate(value)\n if (!date) return ''\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\n/**\n * Normalizes a `Date` to local midnight, stripping any time-of-day component.\n *\n * @param date - The date to normalize, or `null`.\n * @returns A new `Date` at local midnight, or `null` when the input is missing or invalid.\n * @internal\n */\nexport const normalizeDateToLocal = (date: Date | null): Date | null => {\n if (!date || isNaN(date.getTime())) {\n return null\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\n/**\n * Number of milliseconds in one hour.\n *\n * @internal\n */\nexport const MS_PER_HOUR = 1000 * 60 * 60\nconst MS_PER_DAY = MS_PER_HOUR * 24\n\n/**\n * Returns the number of hours from now until a deadline.\n *\n * @param deadline - Target date in the future (or past, for negative results).\n * @returns Hours until `deadline` (fractional, negative if `deadline` is in\n * the past), or `null` when the input cannot be parsed.\n * @internal\n */\nexport const getHoursUntil = (deadline?: Date | string | null): number | null => {\n const deadlineDate = normalizeToDate(deadline)\n if (!deadlineDate) return null\n\n const now = new Date()\n const timeDiffMs = deadlineDate.getTime() - now.getTime()\n return timeDiffMs / MS_PER_HOUR\n}\n\n/**\n * Returns the number of days from now until a deadline.\n *\n * @param deadline - Target date in the future (or past, for negative results).\n * @returns Days until `deadline` (fractional, negative if `deadline` is in\n * the past), or `null` when the input cannot be parsed.\n * @internal\n */\nexport const getDaysUntil = (deadline?: Date | string | null): number | null => {\n const deadlineDate = normalizeToDate(deadline)\n if (!deadlineDate) return null\n\n const now = new Date()\n const timeDiffMs = deadlineDate.getTime() - now.getTime()\n return timeDiffMs / MS_PER_DAY\n}\n\n/**\n * Returns whether a date falls on Saturday or Sunday.\n *\n * @param date - The date to test.\n * @returns `true` if `date` is a weekend day.\n * @internal\n */\nconst isWeekend = (date: Date): boolean => {\n const day = date.getDay()\n return day === 0 || day === 6\n}\n\n/**\n * Returns a new `Date` offset from the input by a given number of days.\n *\n * @param date - The base date. Not mutated.\n * @param days - Number of days to add (negative values subtract).\n * @returns A new `Date` shifted by `days`.\n * @internal\n */\nexport const addDays = (date: Date, days: number): Date => {\n const result = new Date(date)\n result.setDate(result.getDate() + days)\n return result\n}\n\n/**\n * Returns a new `Date` offset by a given number of years.\n *\n * @param date - The base date. Not mutated.\n * @param years - Number of years to add (negative values subtract).\n * @returns A new `Date` shifted by `years`.\n * @internal\n */\nexport const addYears = (date: Date, years: number): Date => {\n const result = new Date(date)\n result.setFullYear(result.getFullYear() + years)\n return result\n}\n\n/**\n * Returns a new `Date` offset by a given number of business days (Monday–Friday).\n *\n * @remarks Skips Saturdays and Sundays when counting. The result is normalized\n * to local midnight. Does not account for holidays.\n *\n * @param startDate - The base date. Not mutated.\n * @param businessDays - Number of business days to add.\n * @returns A new `Date` shifted forward by `businessDays` weekdays.\n * @internal\n */\nexport const addBusinessDays = (startDate: Date, businessDays: number): Date => {\n let currentDate = new Date(startDate)\n currentDate.setHours(0, 0, 0, 0)\n let daysAdded = 0\n\n while (daysAdded < businessDays) {\n currentDate = addDays(currentDate, 1)\n if (!isWeekend(currentDate)) {\n daysAdded++\n }\n }\n\n return currentDate\n}\n\n/**\n * Formats numeric month and day as a zero-padded `MM-DD` string.\n *\n * @param month - Month number, 1–12.\n * @param day - Day-of-month number, 1–31.\n * @returns A `MM-DD` string, or `undefined` when either argument is missing.\n * @internal\n */\nexport function formatMonthDay(month?: number, day?: number): string | undefined {\n if (month == null || day == null) return undefined\n return `${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`\n}\n\n/**\n * Returns the number of days in a given month (1-indexed).\n *\n * @remarks Uses a non-leap year, so February always returns 28.\n *\n * @param month - Month number, 1–12.\n * @returns The number of days in that month.\n * @internal\n */\nexport function getDaysInMonth(month: number): number {\n return new Date(2023, month, 0).getDate()\n}\n"],"names":["normalizeToDate","dateInput","parts","numbers","year","month","day","parsedDate","createDateFormatter","options","locale","date","formatDateShortWithWeekday","formatDateShortWithWeekdayAndYear","formatDateShort","formatDateShortWithYear","formatDateLong","formatDateLongWithYear","formatDateWithTime","time","dateString","formatPayPeriod","startDateInput","endDateInput","startDate","endDate","startFormatted","endFormatted","formatPayPeriodRange","monthFormat","formatDateToStringDate","normalizeToISOString","value","normalizeDateToLocal","MS_PER_HOUR","MS_PER_DAY","getHoursUntil","deadline","deadlineDate","now","getDaysUntil","isWeekend","addDays","days","result","addYears","years","addBusinessDays","businessDays","currentDate","daysAdded","formatMonthDay","getDaysInMonth"],"mappings":"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"}
1
+ {"version":3,"file":"dateFormatting.js","sources":["../../src/helpers/dateFormatting.ts"],"sourcesContent":["/**\n * Normalizes any date input (string, Date, or undefined) to a Date object.\n *\n * @remarks Handles `YYYY-MM-DD` strings by parsing them in local time to avoid\n * timezone drift. Also accepts ISO timestamp strings and existing `Date`\n * instances. Returns `null` for nullish, empty, or unparseable input.\n *\n * @param dateInput - The date value to normalize.\n * @returns A `Date` instance, or `null` if the input is missing or invalid.\n * @internal\n */\nexport const normalizeToDate = (dateInput?: string | Date | null): Date | null => {\n if (!dateInput) return null\n\n if (typeof dateInput === 'string') {\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(dateInput)) {\n const parts = dateInput.split('-')\n if (parts.length !== 3) return null\n\n const numbers = parts.map(Number)\n const year = numbers[0]\n const month = numbers[1]\n const day = numbers[2]\n if (year === undefined || month === undefined || day === undefined) {\n return null\n }\n\n if (\n isNaN(year) ||\n isNaN(month) ||\n isNaN(day) ||\n month < 1 ||\n month > 12 ||\n day < 1 ||\n day > 31\n ) {\n return null\n }\n\n return new Date(year, month - 1, day)\n }\n\n const parsedDate = new Date(dateInput)\n return isNaN(parsedDate.getTime()) ? null : parsedDate\n }\n\n if (dateInput instanceof Date) {\n return isNaN(dateInput.getTime()) ? null : dateInput\n }\n\n return null\n}\n\n/**\n * Creates a date formatter function that handles both string and Date inputs.\n */\nconst createDateFormatter =\n (options: Intl.DateTimeFormatOptions) =>\n (dateInput?: string | Date | null, locale?: string): string => {\n const date = normalizeToDate(dateInput)\n if (!date) return ''\n return date.toLocaleDateString(locale, options)\n }\n\n/**\n * Formats a date as a short weekday plus short month and day (e.g. `Mon, Jan 5`).\n *\n * @internal\n */\nexport const formatDateShortWithWeekday = createDateFormatter({\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n})\n\n/**\n * Formats a date as a short weekday, short month, day, and year (e.g. `Mon, Jan 5, 2025`).\n *\n * @internal\n */\nexport const formatDateShortWithWeekdayAndYear = createDateFormatter({\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n})\n\n/**\n * Formats a date as a short month and day (e.g. `Jan 5`).\n *\n * @internal\n */\nexport const formatDateShort = createDateFormatter({\n month: 'short',\n day: 'numeric',\n})\n\n/**\n * Formats a date as a short month, day, and year (e.g. `Jan 5, 2025`).\n *\n * @internal\n */\nexport const formatDateShortWithYear = createDateFormatter({\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n})\n\n/**\n * Formats a date as a long month and day (e.g. `January 5`).\n *\n * @internal\n */\nexport const formatDateLong = createDateFormatter({\n month: 'long',\n day: 'numeric',\n})\n\n/**\n * Formats a date as a long month, day, and year (e.g. `January 5, 2025`).\n *\n * @internal\n */\nexport const formatDateLongWithYear = createDateFormatter({\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n})\n\n/**\n * Splits a date into separate locale-formatted time and date strings.\n *\n * @param dateInput - The date value to format.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleString`.\n * @returns An object with `time` (e.g. `3:45 PM EST`) and `date` (e.g. `Mon, Jan 5`).\n * Both fields are empty strings when the input cannot be parsed.\n * @internal\n */\nexport const formatDateWithTime = (\n dateInput?: string | Date | null,\n locale?: string,\n): { time: string; date: string } => {\n const date = normalizeToDate(dateInput)\n if (!date) return { time: '', date: '' }\n\n const time = date.toLocaleTimeString(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n timeZoneName: 'short',\n })\n\n const dateString = date.toLocaleDateString(locale, {\n weekday: 'short',\n month: 'short',\n day: 'numeric',\n })\n\n return { time, date: dateString }\n}\n\n/**\n * Formats a pay period start and end date for display as separate fields.\n *\n * @remarks Start date renders with the long month and day; end date renders\n * with the short month, day, and year.\n *\n * @param startDateInput - Pay period start date.\n * @param endDateInput - Pay period end date.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleDateString`.\n * @returns Formatted `startDate` and `endDate` strings. Both fields are empty\n * strings when either input cannot be parsed.\n * @internal\n */\nexport const formatPayPeriod = (\n startDateInput?: string | Date | null,\n endDateInput?: string | Date | null,\n locale?: string,\n): { startDate: string; endDate: string } => {\n const startDate = normalizeToDate(startDateInput)\n const endDate = normalizeToDate(endDateInput)\n\n if (!startDate || !endDate) {\n return { startDate: '', endDate: '' }\n }\n\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n })\n\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n })\n\n return { startDate: startFormatted, endDate: endFormatted }\n}\n\n/**\n * Formats a pay period as a single en-dash–separated range string.\n *\n * @param startDateInput - Pay period start date.\n * @param endDateInput - Pay period end date.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleDateString`.\n * @param options - When `useShortMonth` is true, both ends use short month names.\n * Otherwise both use the long month name.\n * @returns The formatted range (e.g. `January 1–January 15, 2025`), or an empty\n * string when either input cannot be parsed.\n * @internal\n */\nexport const formatPayPeriodRange = (\n startDateInput?: string | Date | null,\n endDateInput?: string | Date | null,\n locale?: string,\n options?: { useShortMonth?: boolean },\n): string => {\n const startDate = normalizeToDate(startDateInput)\n const endDate = normalizeToDate(endDateInput)\n\n if (!startDate || !endDate) return ''\n\n const monthFormat = options?.useShortMonth ? 'short' : 'long'\n\n const startFormatted = startDate.toLocaleDateString(locale, {\n month: monthFormat,\n day: 'numeric',\n })\n\n const endFormatted = endDate.toLocaleDateString(locale, {\n month: monthFormat,\n day: 'numeric',\n year: 'numeric',\n })\n\n return `${startFormatted}–${endFormatted}`\n}\n\n/**\n * Formats a `Date` as a `YYYY-MM-DD` string using the local year, month, and day.\n *\n * @param date - The date to format.\n * @returns A zero-padded `YYYY-MM-DD` string, or `null` when the input is an invalid date.\n * @internal\n */\nexport const formatDateToStringDate = (date: Date): string | null => {\n if (isNaN(date.getTime())) {\n return null\n }\n const year = String(date.getFullYear()).padStart(4, '0')\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\n/**\n * Converts any parseable date string to a `YYYY-MM-DD` ISO string using local time.\n *\n * @remarks Reads the local year, month, and day so the calendar date is\n * preserved regardless of the runtime timezone. Safe for dates parsed from\n * locale-format strings (e.g. `4/16/1998`) or ISO strings, both of which land\n * at local midnight when normalized.\n *\n * @param value - The date string to convert.\n * @returns A `YYYY-MM-DD` string, or `''` for nullish, empty, or unparseable input.\n * @internal\n */\nexport const normalizeToISOString = (value?: string | null): string => {\n if (!value) return ''\n const date = normalizeToDate(value)\n if (!date) return ''\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n}\n\n/**\n * Normalizes a `Date` to local midnight, stripping any time-of-day component.\n *\n * @param date - The date to normalize, or `null`.\n * @returns A new `Date` at local midnight, or `null` when the input is missing or invalid.\n * @internal\n */\nexport const normalizeDateToLocal = (date: Date | null): Date | null => {\n if (!date || isNaN(date.getTime())) {\n return null\n }\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\n/**\n * Number of milliseconds in one hour.\n *\n * @internal\n */\nexport const MS_PER_HOUR = 1000 * 60 * 60\nconst MS_PER_DAY = MS_PER_HOUR * 24\n\n/**\n * Returns the number of hours from now until a deadline.\n *\n * @param deadline - Target date in the future (or past, for negative results).\n * @returns Hours until `deadline` (fractional, negative if `deadline` is in\n * the past), or `null` when the input cannot be parsed.\n * @internal\n */\nexport const getHoursUntil = (deadline?: Date | string | null): number | null => {\n const deadlineDate = normalizeToDate(deadline)\n if (!deadlineDate) return null\n\n const now = new Date()\n const timeDiffMs = deadlineDate.getTime() - now.getTime()\n return timeDiffMs / MS_PER_HOUR\n}\n\n/**\n * Returns the number of days from now until a deadline.\n *\n * @param deadline - Target date in the future (or past, for negative results).\n * @returns Days until `deadline` (fractional, negative if `deadline` is in\n * the past), or `null` when the input cannot be parsed.\n * @internal\n */\nexport const getDaysUntil = (deadline?: Date | string | null): number | null => {\n const deadlineDate = normalizeToDate(deadline)\n if (!deadlineDate) return null\n\n const now = new Date()\n const timeDiffMs = deadlineDate.getTime() - now.getTime()\n return timeDiffMs / MS_PER_DAY\n}\n\n/**\n * Returns whether a date falls on Saturday or Sunday.\n *\n * @param date - The date to test.\n * @returns `true` if `date` is a weekend day.\n * @internal\n */\nconst isWeekend = (date: Date): boolean => {\n const day = date.getDay()\n return day === 0 || day === 6\n}\n\n/**\n * Returns a new `Date` offset from the input by a given number of days.\n *\n * @param date - The base date. Not mutated.\n * @param days - Number of days to add (negative values subtract).\n * @returns A new `Date` shifted by `days`.\n * @internal\n */\nexport const addDays = (date: Date, days: number): Date => {\n const result = new Date(date)\n result.setDate(result.getDate() + days)\n return result\n}\n\n/**\n * Returns a new `Date` offset by a given number of years.\n *\n * @param date - The base date. Not mutated.\n * @param years - Number of years to add (negative values subtract).\n * @returns A new `Date` shifted by `years`.\n * @internal\n */\nexport const addYears = (date: Date, years: number): Date => {\n const result = new Date(date)\n result.setFullYear(result.getFullYear() + years)\n return result\n}\n\n/**\n * Returns a new `Date` offset by a given number of business days (Monday–Friday).\n *\n * @remarks Skips Saturdays and Sundays when counting. The result is normalized\n * to local midnight. Does not account for holidays.\n *\n * @param startDate - The base date. Not mutated.\n * @param businessDays - Number of business days to add.\n * @returns A new `Date` shifted forward by `businessDays` weekdays.\n * @internal\n */\nexport const addBusinessDays = (startDate: Date, businessDays: number): Date => {\n let currentDate = new Date(startDate)\n currentDate.setHours(0, 0, 0, 0)\n let daysAdded = 0\n\n while (daysAdded < businessDays) {\n currentDate = addDays(currentDate, 1)\n if (!isWeekend(currentDate)) {\n daysAdded++\n }\n }\n\n return currentDate\n}\n\n/**\n * Formats numeric month and day as a zero-padded `MM-DD` string.\n *\n * @param month - Month number, 1–12.\n * @param day - Day-of-month number, 1–31.\n * @returns A `MM-DD` string, or `undefined` when either argument is missing.\n * @internal\n */\nexport function formatMonthDay(month?: number, day?: number): string | undefined {\n if (month == null || day == null) return undefined\n return `${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`\n}\n\n/**\n * Returns the number of days in a given month (1-indexed).\n *\n * @remarks Uses a non-leap year, so February always returns 28.\n *\n * @param month - Month number, 1–12.\n * @returns The number of days in that month.\n * @internal\n */\nexport function getDaysInMonth(month: number): number {\n return new Date(2023, month, 0).getDate()\n}\n"],"names":["normalizeToDate","dateInput","parts","numbers","year","month","day","parsedDate","createDateFormatter","options","locale","date","formatDateShortWithWeekday","formatDateShortWithWeekdayAndYear","formatDateShort","formatDateShortWithYear","formatDateLong","formatDateLongWithYear","formatDateWithTime","time","dateString","formatPayPeriod","startDateInput","endDateInput","startDate","endDate","startFormatted","endFormatted","formatPayPeriodRange","monthFormat","formatDateToStringDate","normalizeToISOString","value","normalizeDateToLocal","MS_PER_HOUR","MS_PER_DAY","getHoursUntil","deadline","deadlineDate","now","getDaysUntil","isWeekend","addDays","days","result","addYears","years","addBusinessDays","businessDays","currentDate","daysAdded","formatMonthDay","getDaysInMonth"],"mappings":"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"}
@@ -9,9 +9,9 @@ const c = (t) => t.charAt(0).toLocaleUpperCase() + t.slice(1), S = ({
9
9
  }) => `${t ? c(t) : ""}${e ? a(c(e)) : ""}${r ? a(c(r)) : ""}`, a = (t) => t ? ` ${t}` : "", p = (t) => {
10
10
  const e = a(t.street1), r = a(t.street2);
11
11
  return `${e},${r}`;
12
- }, D = (t) => [t.street1?.trim(), t.street2?.trim()].filter(
12
+ }, L = (t) => [t.street1?.trim(), t.street2?.trim()].filter(
13
13
  (r) => !!r
14
- ).join(", "), y = (t) => `${a(t.city)}, ${a(t.state)} ${a(t.zip)}`, L = (t) => `${p(t)} ${y(t)}`, f = (t, e) => e ? `${t}%` : `$${t}`, s = (t, e = "en-US") => {
14
+ ).join(", "), y = (t) => `${a(t.city)}, ${a(t.state)} ${a(t.zip)}`, D = (t) => `${p(t)} ${y(t)}`, f = (t, e) => e ? `${t}%` : `$${t}`, s = (t, e = "en-US") => {
15
15
  const r = t.toLocaleString(e, {
16
16
  minimumFractionDigits: 2,
17
17
  maximumFractionDigits: 2
@@ -75,25 +75,26 @@ const c = (t) => t.charAt(0).toLocaleUpperCase() + t.slice(1), S = ({
75
75
  function z(t) {
76
76
  return t ? { __html: m.sanitize(t, h) } : { __html: "" };
77
77
  }
78
- const g = (t) => t.replace(/\D/g, ""), P = (t) => t.replace(/\.value$/, ""), T = (t) => t.replace(/_([a-z])/g, (e, r) => r.toUpperCase()), U = (t) => {
78
+ const g = (t) => t.replace(/\D/g, ""), P = (t) => t.replace(/^(-?)0+(?=\d)/, "$1"), T = (t) => t.replace(/\.value$/, ""), U = (t) => t.replace(/_([a-z])/g, (e, r) => r.toUpperCase()), W = (t) => {
79
79
  if (!t) return "";
80
80
  const e = g(String(t));
81
81
  return e.length === 10 ? `${e.slice(0, 3)}-${e.slice(3, 6)}-${e.slice(6)}` : e.length === 11 && e.startsWith("1") ? `${e.slice(1, 4)}-${e.slice(4, 7)}-${e.slice(7)}` : e || "";
82
82
  };
83
83
  export {
84
- L as addressInline,
84
+ D as addressInline,
85
85
  z as createMarkup,
86
86
  S as firstLastName,
87
87
  $ as formatCompensationRate,
88
88
  s as formatNumberAsCurrency,
89
89
  A as formatPayRate,
90
- U as formatPhoneNumber,
91
- D as formatStreetForDisplay,
90
+ W as formatPhoneNumber,
91
+ L as formatStreetForDisplay,
92
92
  y as getCityStateZip,
93
93
  p as getStreet,
94
- P as normalizeErrorKeyForForm,
94
+ T as normalizeErrorKeyForForm,
95
95
  g as removeNonDigits,
96
- T as snakeCaseToCamelCase,
96
+ U as snakeCaseToCamelCase,
97
+ P as stripLeadingZeros,
97
98
  b as useFormatCompensationRate
98
99
  };
99
100
  //# sourceMappingURL=formattedStrings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formattedStrings.js","sources":["../../src/helpers/formattedStrings.ts"],"sourcesContent":["import DOMPurify from 'dompurify'\nimport { type Location } from '@gusto/embedded-api/models/components/location'\nimport { type EmployeeAddress } from '@gusto/embedded-api/models/components/employeeaddress'\nimport { type TFunction } from 'i18next'\nimport { useTranslation } from 'react-i18next'\nimport { useCallback } from 'react'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\n\nconst capitalize = (word: string) => word.charAt(0).toLocaleUpperCase() + word.slice(1)\n\n/**\n * Joins a first, middle initial, and last name into a single capitalized display string.\n *\n * @remarks Each name part is capitalized at its first character. A space is\n * inserted before the middle initial and last name only when that part is\n * present. Missing parts are treated as empty.\n *\n * @param name - Object with optional `first_name`, `middle_initial`, and `last_name` fields.\n * @returns The combined name, e.g. `Jane M Doe`, `Jane Doe`, `Jane`, or `''`.\n * @internal\n */\nexport const firstLastName = ({\n first_name,\n middle_initial,\n last_name,\n}: {\n first_name?: string | null\n middle_initial?: string | null\n last_name?: string | null\n}) =>\n `${first_name ? capitalize(first_name) : ''}${middle_initial ? maybeString(capitalize(middle_initial)) : ''}${last_name ? maybeString(capitalize(last_name)) : ''}`\n\nconst maybeString = (str: string | null | undefined) => {\n return str ? ` ${str}` : ''\n}\n\n/**\n * Combines an address's two street lines with a comma separator.\n *\n * @remarks Each line is prefixed with a leading space when present, producing\n * a string like ` 123 Main St, Apt 4`. Prefer {@link formatStreetForDisplay}\n * for new display code; this function is retained for legacy callers.\n *\n * @param address - Address whose `street1` and `street2` are joined.\n * @returns The joined street string.\n * @internal\n */\nexport const getStreet = (address: EmployeeAddress | Location) => {\n const street1 = maybeString(address.street1)\n const street2 = maybeString(address.street2)\n\n return `${street1},${street2}`\n}\n\n/**\n * Joins an address's street lines with a comma for display.\n *\n * @remarks Trims each line and skips empty values, avoiding the leading-space\n * and trailing-comma artifacts of {@link getStreet}.\n *\n * @param address - Address whose `street1` and `street2` are joined.\n * @returns The display-formatted street string, e.g. `123 Main St, Apt 4`.\n * @internal\n */\nexport const formatStreetForDisplay = (address: EmployeeAddress | Location) => {\n const parts = [address.street1?.trim(), address.street2?.trim()].filter((part): part is string =>\n Boolean(part),\n )\n return parts.join(', ')\n}\n\n/**\n * Formats an address's city, state, and zip into a single display string.\n *\n * @param address - Address whose `city`, `state`, and `zip` are joined.\n * @returns A `City, State Zip` string. Empty fields are skipped.\n * @internal\n */\nexport const getCityStateZip = (address: EmployeeAddress | Location) =>\n `${maybeString(address.city)}, ${maybeString(address.state)} ${maybeString(address.zip)}`\n\n/**\n * Formats a full address as a single inline string.\n *\n * @param address - The address to format.\n * @returns The combined street and city/state/zip string.\n * @internal\n */\nexport const addressInline = (address: EmployeeAddress | Location) =>\n `${getStreet(address)} ${getCityStateZip(address)}`\n\n/**\n * Wraps an amount string with a currency or percent symbol.\n *\n * @param amount - Pre-formatted numeric string.\n * @param isPercentage - When `true`, appends `%`; otherwise prepends `$`.\n * @returns The amount with the appropriate symbol.\n * @internal\n */\nconst amountStr = (amount: string, isPercentage: boolean) =>\n isPercentage ? `${amount}%` : `$${amount}`\n\n/**\n * Formats a number as a USD currency string with two decimal places.\n *\n * @param amount - The numeric value to format.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleString`.\n * Defaults to `en-US`.\n * @returns A `$1,234.56` style currency string.\n * @internal\n */\nexport const formatNumberAsCurrency = (amount: number, locale: string = 'en-US') => {\n const formattedNumber = amount.toLocaleString(locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n return amountStr(formattedNumber, false)\n}\n\n/**\n * Formats a pay rate with its payment unit, annualizing weekly and monthly values.\n *\n * @remarks Hourly, yearly, and paycheck rates are displayed at the input\n * value. Weekly rates are multiplied by 52 and monthly rates by 12 to express\n * an annualized amount. Unknown payment units render as the currency value\n * alone.\n *\n * @param args - Formatting inputs: `rate` (numeric value), `paymentUnit`\n * (`Hour`, `Week`, `Month`, `Year`, or `Paycheck`), `t` (i18next translation\n * function), and optional `locale` (BCP 47 tag, default `en-US`).\n * @returns The translated, formatted pay rate string.\n * @internal\n */\nexport const formatPayRate = ({\n rate,\n paymentUnit,\n t,\n locale = 'en-US',\n}: {\n rate: number\n paymentUnit: string\n t: TFunction\n locale?: string\n}) => {\n const amount = formatNumberAsCurrency(rate, locale)\n\n switch (paymentUnit) {\n case 'Hour':\n return t('payRateFormats.hourly', { amount, ns: 'common' })\n case 'Week':\n return t('payRateFormats.weekly', {\n amount: formatNumberAsCurrency(rate * 52, locale),\n ns: 'common',\n })\n case 'Month':\n return t('payRateFormats.monthly', {\n amount: formatNumberAsCurrency(rate * 12, locale),\n ns: 'common',\n })\n case 'Year':\n return t('payRateFormats.yearly', { amount, ns: 'common' })\n case 'Paycheck':\n return t('payRateFormats.paycheck', { amount, ns: 'common' })\n default:\n return amount\n }\n}\n\n/**\n * Formats a compensation rate as-is, without annualizing weekly or monthly values.\n *\n * @remarks Use for displaying compensation card data where the stored rate\n * should be shown directly (e.g. `$950 per week`, `$3,500 per month`).\n * Unknown payment units render as the currency value alone.\n *\n * @param args - Formatting inputs: `rate` (numeric value), `paymentUnit`\n * (`Hour`, `Week`, `Month`, `Year`, or `Paycheck`), `t` (i18next translation\n * function), and optional `locale` (BCP 47 tag, default `en-US`).\n * @returns The translated, formatted compensation rate string.\n * @internal\n */\nexport const formatCompensationRate = ({\n rate,\n paymentUnit,\n t,\n locale = 'en-US',\n}: {\n rate: number\n paymentUnit: string\n t: TFunction\n locale?: string\n}) => {\n const amount = formatNumberAsCurrency(rate, locale)\n\n switch (paymentUnit) {\n case 'Hour':\n return t('compensationRateFormats.hourly', { amount, ns: 'common' })\n case 'Week':\n return t('compensationRateFormats.weekly', { amount, ns: 'common' })\n case 'Month':\n return t('compensationRateFormats.monthly', { amount, ns: 'common' })\n case 'Year':\n return t('compensationRateFormats.yearly', { amount, ns: 'common' })\n case 'Paycheck':\n return t('compensationRateFormats.paycheck', { amount, ns: 'common' })\n default:\n return amount\n }\n}\n\n/**\n * Hook that returns a memoized {@link formatCompensationRate} bound to the active locale.\n *\n * @returns A callback `(rate, paymentUnit) => string`.\n * @internal\n */\nexport const useFormatCompensationRate = () => {\n const { t } = useTranslation('common')\n const { locale } = useLocale()\n\n return useCallback(\n (rate: number, paymentUnit: string) => {\n return formatCompensationRate({ rate, paymentUnit, t, locale })\n },\n [t, locale],\n )\n}\n\nconst dompurifyConfig = { ALLOWED_TAGS: ['a', 'b', 'strong'], ALLOWED_ATTR: ['href', 'target'] }\n/**\n * Sanitizes an HTML string for use with React's `dangerouslySetInnerHTML`.\n *\n * @remarks Only `<a>`, `<b>`, and `<strong>` tags are allowed, and `<a>`\n * elements may retain only `href` and `target` attributes. All other markup\n * is stripped via DOMPurify.\n *\n * @param dirty - The raw HTML string to sanitize.\n * @returns An object shaped for `dangerouslySetInnerHTML`. The `__html`\n * field is `''` when the input is empty.\n * @internal\n */\nexport function createMarkup(dirty: string) {\n if (!dirty) return { __html: '' }\n return { __html: DOMPurify.sanitize(dirty, dompurifyConfig) }\n}\n\n/**\n * Removes all non-digit characters from a string.\n *\n * @param value - The string to filter.\n * @returns The input with only the digit characters `0`–`9` retained.\n * @internal\n */\nexport const removeNonDigits = (value: string): string => {\n return value.replace(/\\D/g, '')\n}\n\n/**\n * Strips the trailing `.value` segment from an API error path.\n *\n * @remarks API validation errors target a `.value` field on the inner\n * object, but react-hook-form registers the field under its bare name.\n * Stripping `.value` aligns the error path with the form field name.\n *\n * @param errorKey - The dotted error path returned by the API.\n * @returns The error key without a trailing `.value`.\n * @internal\n */\nexport const normalizeErrorKeyForForm = (errorKey: string): string =>\n errorKey.replace(/\\.value$/, '')\n\n/**\n * Converts a `snake_case` string to `camelCase`.\n *\n * @param s - The snake_case string to convert.\n * @returns The camelCase equivalent.\n * @internal\n */\nexport const snakeCaseToCamelCase = (s: string) => {\n return s.replace(/_([a-z])/g, (_: string, char: string) => char.toUpperCase())\n}\n\n/**\n * Converts a `camelCase` or `PascalCase` string to `snake_case`.\n *\n * @remarks Handles consecutive uppercase letters by inserting a separator\n * before the final letter of a run that is followed by a lowercase letter\n * (e.g. `HTMLParser` becomes `html_parser`).\n *\n * @param s - The camelCase or PascalCase string to convert.\n * @returns The snake_case equivalent in lower case.\n * @internal\n */\nexport const camelCaseToSnakeCase = (s: string) => {\n return s\n .replace(\n /([a-z0-9])([A-Z])/g,\n (_: string, group1: string, group2: string) => `${group1}_${group2.toLowerCase()}`,\n )\n .replace(\n /([A-Z])([A-Z])(?=[a-z])/g,\n (_: string, group1: string, group2: string) =>\n `${group1.toLowerCase()}_${group2.toLowerCase()}`,\n )\n .toLowerCase()\n}\n\n/**\n * Formats a US phone number as `NNN-NNN-NNNN` for display.\n *\n * @remarks Strips non-digit characters before formatting. A leading `1`\n * country code on 11-digit inputs is dropped. Inputs that are not 10 or 11\n * digits are returned as the raw digit string. Returns an empty string for\n * nullish input.\n *\n * @param phoneNumber - The phone number to format.\n * @returns The formatted phone number, the digit-only fallback, or `''`.\n * @internal\n */\nexport const formatPhoneNumber = (phoneNumber: string | number | null | undefined): string => {\n if (!phoneNumber) return ''\n\n const digits = removeNonDigits(String(phoneNumber))\n\n if (digits.length === 10) {\n return `${digits.slice(0, 3)}-${digits.slice(3, 6)}-${digits.slice(6)}`\n }\n\n if (digits.length === 11 && digits.startsWith('1')) {\n return `${digits.slice(1, 4)}-${digits.slice(4, 7)}-${digits.slice(7)}`\n }\n\n return digits || ''\n}\n"],"names":["capitalize","word","firstLastName","first_name","middle_initial","last_name","maybeString","str","getStreet","address","street1","street2","formatStreetForDisplay","part","getCityStateZip","addressInline","amountStr","amount","isPercentage","formatNumberAsCurrency","locale","formattedNumber","formatPayRate","rate","paymentUnit","t","formatCompensationRate","useFormatCompensationRate","useTranslation","useLocale","useCallback","dompurifyConfig","createMarkup","dirty","DOMPurify","removeNonDigits","value","normalizeErrorKeyForForm","errorKey","snakeCaseToCamelCase","s","_","char","formatPhoneNumber","phoneNumber","digits"],"mappings":"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"}
1
+ {"version":3,"file":"formattedStrings.js","sources":["../../src/helpers/formattedStrings.ts"],"sourcesContent":["import DOMPurify from 'dompurify'\nimport { type Location } from '@gusto/embedded-api/models/components/location'\nimport { type EmployeeAddress } from '@gusto/embedded-api/models/components/employeeaddress'\nimport { type TFunction } from 'i18next'\nimport { useTranslation } from 'react-i18next'\nimport { useCallback } from 'react'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\n\nconst capitalize = (word: string) => word.charAt(0).toLocaleUpperCase() + word.slice(1)\n\n/**\n * Joins a first, middle initial, and last name into a single capitalized display string.\n *\n * @remarks Each name part is capitalized at its first character. A space is\n * inserted before the middle initial and last name only when that part is\n * present. Missing parts are treated as empty.\n *\n * @param name - Object with optional `first_name`, `middle_initial`, and `last_name` fields.\n * @returns The combined name, e.g. `Jane M Doe`, `Jane Doe`, `Jane`, or `''`.\n * @internal\n */\nexport const firstLastName = ({\n first_name,\n middle_initial,\n last_name,\n}: {\n first_name?: string | null\n middle_initial?: string | null\n last_name?: string | null\n}) =>\n `${first_name ? capitalize(first_name) : ''}${middle_initial ? maybeString(capitalize(middle_initial)) : ''}${last_name ? maybeString(capitalize(last_name)) : ''}`\n\nconst maybeString = (str: string | null | undefined) => {\n return str ? ` ${str}` : ''\n}\n\n/**\n * Combines an address's two street lines with a comma separator.\n *\n * @remarks Each line is prefixed with a leading space when present, producing\n * a string like ` 123 Main St, Apt 4`. Prefer {@link formatStreetForDisplay}\n * for new display code; this function is retained for legacy callers.\n *\n * @param address - Address whose `street1` and `street2` are joined.\n * @returns The joined street string.\n * @internal\n */\nexport const getStreet = (address: EmployeeAddress | Location) => {\n const street1 = maybeString(address.street1)\n const street2 = maybeString(address.street2)\n\n return `${street1},${street2}`\n}\n\n/**\n * Joins an address's street lines with a comma for display.\n *\n * @remarks Trims each line and skips empty values, avoiding the leading-space\n * and trailing-comma artifacts of {@link getStreet}.\n *\n * @param address - Address whose `street1` and `street2` are joined.\n * @returns The display-formatted street string, e.g. `123 Main St, Apt 4`.\n * @internal\n */\nexport const formatStreetForDisplay = (address: EmployeeAddress | Location) => {\n const parts = [address.street1?.trim(), address.street2?.trim()].filter((part): part is string =>\n Boolean(part),\n )\n return parts.join(', ')\n}\n\n/**\n * Formats an address's city, state, and zip into a single display string.\n *\n * @param address - Address whose `city`, `state`, and `zip` are joined.\n * @returns A `City, State Zip` string. Empty fields are skipped.\n * @internal\n */\nexport const getCityStateZip = (address: EmployeeAddress | Location) =>\n `${maybeString(address.city)}, ${maybeString(address.state)} ${maybeString(address.zip)}`\n\n/**\n * Formats a full address as a single inline string.\n *\n * @param address - The address to format.\n * @returns The combined street and city/state/zip string.\n * @internal\n */\nexport const addressInline = (address: EmployeeAddress | Location) =>\n `${getStreet(address)} ${getCityStateZip(address)}`\n\n/**\n * Wraps an amount string with a currency or percent symbol.\n *\n * @param amount - Pre-formatted numeric string.\n * @param isPercentage - When `true`, appends `%`; otherwise prepends `$`.\n * @returns The amount with the appropriate symbol.\n * @internal\n */\nconst amountStr = (amount: string, isPercentage: boolean) =>\n isPercentage ? `${amount}%` : `$${amount}`\n\n/**\n * Formats a number as a USD currency string with two decimal places.\n *\n * @param amount - The numeric value to format.\n * @param locale - Optional BCP 47 locale tag passed to `toLocaleString`.\n * Defaults to `en-US`.\n * @returns A `$1,234.56` style currency string.\n * @internal\n */\nexport const formatNumberAsCurrency = (amount: number, locale: string = 'en-US') => {\n const formattedNumber = amount.toLocaleString(locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })\n return amountStr(formattedNumber, false)\n}\n\n/**\n * Formats a pay rate with its payment unit, annualizing weekly and monthly values.\n *\n * @remarks Hourly, yearly, and paycheck rates are displayed at the input\n * value. Weekly rates are multiplied by 52 and monthly rates by 12 to express\n * an annualized amount. Unknown payment units render as the currency value\n * alone.\n *\n * @param args - Formatting inputs: `rate` (numeric value), `paymentUnit`\n * (`Hour`, `Week`, `Month`, `Year`, or `Paycheck`), `t` (i18next translation\n * function), and optional `locale` (BCP 47 tag, default `en-US`).\n * @returns The translated, formatted pay rate string.\n * @internal\n */\nexport const formatPayRate = ({\n rate,\n paymentUnit,\n t,\n locale = 'en-US',\n}: {\n rate: number\n paymentUnit: string\n t: TFunction\n locale?: string\n}) => {\n const amount = formatNumberAsCurrency(rate, locale)\n\n switch (paymentUnit) {\n case 'Hour':\n return t('payRateFormats.hourly', { amount, ns: 'common' })\n case 'Week':\n return t('payRateFormats.weekly', {\n amount: formatNumberAsCurrency(rate * 52, locale),\n ns: 'common',\n })\n case 'Month':\n return t('payRateFormats.monthly', {\n amount: formatNumberAsCurrency(rate * 12, locale),\n ns: 'common',\n })\n case 'Year':\n return t('payRateFormats.yearly', { amount, ns: 'common' })\n case 'Paycheck':\n return t('payRateFormats.paycheck', { amount, ns: 'common' })\n default:\n return amount\n }\n}\n\n/**\n * Formats a compensation rate as-is, without annualizing weekly or monthly values.\n *\n * @remarks Use for displaying compensation card data where the stored rate\n * should be shown directly (e.g. `$950 per week`, `$3,500 per month`).\n * Unknown payment units render as the currency value alone.\n *\n * @param args - Formatting inputs: `rate` (numeric value), `paymentUnit`\n * (`Hour`, `Week`, `Month`, `Year`, or `Paycheck`), `t` (i18next translation\n * function), and optional `locale` (BCP 47 tag, default `en-US`).\n * @returns The translated, formatted compensation rate string.\n * @internal\n */\nexport const formatCompensationRate = ({\n rate,\n paymentUnit,\n t,\n locale = 'en-US',\n}: {\n rate: number\n paymentUnit: string\n t: TFunction\n locale?: string\n}) => {\n const amount = formatNumberAsCurrency(rate, locale)\n\n switch (paymentUnit) {\n case 'Hour':\n return t('compensationRateFormats.hourly', { amount, ns: 'common' })\n case 'Week':\n return t('compensationRateFormats.weekly', { amount, ns: 'common' })\n case 'Month':\n return t('compensationRateFormats.monthly', { amount, ns: 'common' })\n case 'Year':\n return t('compensationRateFormats.yearly', { amount, ns: 'common' })\n case 'Paycheck':\n return t('compensationRateFormats.paycheck', { amount, ns: 'common' })\n default:\n return amount\n }\n}\n\n/**\n * Hook that returns a memoized {@link formatCompensationRate} bound to the active locale.\n *\n * @returns A callback `(rate, paymentUnit) => string`.\n * @internal\n */\nexport const useFormatCompensationRate = () => {\n const { t } = useTranslation('common')\n const { locale } = useLocale()\n\n return useCallback(\n (rate: number, paymentUnit: string) => {\n return formatCompensationRate({ rate, paymentUnit, t, locale })\n },\n [t, locale],\n )\n}\n\nconst dompurifyConfig = { ALLOWED_TAGS: ['a', 'b', 'strong'], ALLOWED_ATTR: ['href', 'target'] }\n/**\n * Sanitizes an HTML string for use with React's `dangerouslySetInnerHTML`.\n *\n * @remarks Only `<a>`, `<b>`, and `<strong>` tags are allowed, and `<a>`\n * elements may retain only `href` and `target` attributes. All other markup\n * is stripped via DOMPurify.\n *\n * @param dirty - The raw HTML string to sanitize.\n * @returns An object shaped for `dangerouslySetInnerHTML`. The `__html`\n * field is `''` when the input is empty.\n * @internal\n */\nexport function createMarkup(dirty: string) {\n if (!dirty) return { __html: '' }\n return { __html: DOMPurify.sanitize(dirty, dompurifyConfig) }\n}\n\n/**\n * Removes all non-digit characters from a string.\n *\n * @param value - The string to filter.\n * @returns The input with only the digit characters `0`–`9` retained.\n * @internal\n */\nexport const removeNonDigits = (value: string): string => {\n return value.replace(/\\D/g, '')\n}\n\n/**\n * Removes redundant leading zeros from a numeric input string.\n *\n * @remarks Intended as a `transform` for controlled `type=\"number\"` text\n * fields, which store their value verbatim. Several payroll inputs are\n * seeded with `\"0\"`, so typing into one without clearing it would otherwise\n * leave a value like `\"05\"`. Only zeros immediately followed by another\n * digit are stripped, so `\"0\"`, `\"0.5\"`, and an empty string are preserved,\n * and any leading sign is retained (`\"-05\"` becomes `\"-5\"`).\n *\n * @param value - The raw input string.\n * @returns The input with redundant leading zeros removed.\n * @internal\n */\nexport const stripLeadingZeros = (value: string): string => value.replace(/^(-?)0+(?=\\d)/, '$1')\n\n/**\n * Strips the trailing `.value` segment from an API error path.\n *\n * @remarks API validation errors target a `.value` field on the inner\n * object, but react-hook-form registers the field under its bare name.\n * Stripping `.value` aligns the error path with the form field name.\n *\n * @param errorKey - The dotted error path returned by the API.\n * @returns The error key without a trailing `.value`.\n * @internal\n */\nexport const normalizeErrorKeyForForm = (errorKey: string): string =>\n errorKey.replace(/\\.value$/, '')\n\n/**\n * Converts a `snake_case` string to `camelCase`.\n *\n * @param s - The snake_case string to convert.\n * @returns The camelCase equivalent.\n * @internal\n */\nexport const snakeCaseToCamelCase = (s: string) => {\n return s.replace(/_([a-z])/g, (_: string, char: string) => char.toUpperCase())\n}\n\n/**\n * Converts a `camelCase` or `PascalCase` string to `snake_case`.\n *\n * @remarks Handles consecutive uppercase letters by inserting a separator\n * before the final letter of a run that is followed by a lowercase letter\n * (e.g. `HTMLParser` becomes `html_parser`).\n *\n * @param s - The camelCase or PascalCase string to convert.\n * @returns The snake_case equivalent in lower case.\n * @internal\n */\nexport const camelCaseToSnakeCase = (s: string) => {\n return s\n .replace(\n /([a-z0-9])([A-Z])/g,\n (_: string, group1: string, group2: string) => `${group1}_${group2.toLowerCase()}`,\n )\n .replace(\n /([A-Z])([A-Z])(?=[a-z])/g,\n (_: string, group1: string, group2: string) =>\n `${group1.toLowerCase()}_${group2.toLowerCase()}`,\n )\n .toLowerCase()\n}\n\n/**\n * Formats a US phone number as `NNN-NNN-NNNN` for display.\n *\n * @remarks Strips non-digit characters before formatting. A leading `1`\n * country code on 11-digit inputs is dropped. Inputs that are not 10 or 11\n * digits are returned as the raw digit string. Returns an empty string for\n * nullish input.\n *\n * @param phoneNumber - The phone number to format.\n * @returns The formatted phone number, the digit-only fallback, or `''`.\n * @internal\n */\nexport const formatPhoneNumber = (phoneNumber: string | number | null | undefined): string => {\n if (!phoneNumber) return ''\n\n const digits = removeNonDigits(String(phoneNumber))\n\n if (digits.length === 10) {\n return `${digits.slice(0, 3)}-${digits.slice(3, 6)}-${digits.slice(6)}`\n }\n\n if (digits.length === 11 && digits.startsWith('1')) {\n return `${digits.slice(1, 4)}-${digits.slice(4, 7)}-${digits.slice(7)}`\n }\n\n return digits || ''\n}\n"],"names":["capitalize","word","firstLastName","first_name","middle_initial","last_name","maybeString","str","getStreet","address","street1","street2","formatStreetForDisplay","part","getCityStateZip","addressInline","amountStr","amount","isPercentage","formatNumberAsCurrency","locale","formattedNumber","formatPayRate","rate","paymentUnit","t","formatCompensationRate","useFormatCompensationRate","useTranslation","useLocale","useCallback","dompurifyConfig","createMarkup","dirty","DOMPurify","removeNonDigits","value","stripLeadingZeros","normalizeErrorKeyForForm","errorKey","snakeCaseToCamelCase","s","_","char","formatPhoneNumber","phoneNumber","digits"],"mappings":"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"}
package/dist/i18n/I18n.js CHANGED
@@ -8,6 +8,8 @@ const j = "common", i = /* @__PURE__ */ Object.assign({
8
8
  "./en/Company.FederalTaxes.json": () => import("./en/Company.FederalTaxes.json.js").then((e) => e.default),
9
9
  "./en/Company.Industry.json": () => import("./en/Company.Industry.json.js").then((e) => e.default),
10
10
  "./en/Company.Locations.json": () => import("./en/Company.Locations.json.js").then((e) => e.default),
11
+ "./en/Company.Management.PaySchedule.json": () => import("./en/Company.Management.PaySchedule.json.js").then((e) => e.default),
12
+ "./en/Company.Management.PayScheduleAssignment.json": () => import("./en/Company.Management.PayScheduleAssignment.json.js").then((e) => e.default),
11
13
  "./en/Company.OnboardingOverview.json": () => import("./en/Company.OnboardingOverview.json.js").then((e) => e.default),
12
14
  "./en/Company.PaySchedule.json": () => import("./en/Company.PaySchedule.json.js").then((e) => e.default),
13
15
  "./en/Company.SignatureForm.json": () => import("./en/Company.SignatureForm.json.js").then((e) => e.default),
@@ -1 +1 @@
1
- {"version":3,"file":"I18n.js","sources":["../../src/i18n/I18n.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\nimport { useTranslation } from 'react-i18next'\nimport type { CustomTypeOptions } from 'i18next'\nimport type { Resources } from './types'\nimport { LRUCache } from '@/helpers/LRUCache'\nimport type { ResourceDictionary } from '@/types/Helpers'\n\n/** @internal */\nexport const defaultNS = 'common'\n\nconst translationLoaders = import.meta.glob<Record<string, string>>('./*/*.json', {\n import: 'default',\n})\n\nfunction resolveTranslationLoader(lng: string | undefined, ns: string) {\n const language = lng ?? 'en'\n const primaryPath = `./${language}/${ns}.json`\n const load =\n translationLoaders[primaryPath as keyof typeof translationLoaders] ??\n translationLoaders[`./en/${ns}.json` as keyof typeof translationLoaders]\n return load\n}\n\n//LRU cache holding requested resources\nconst resourceCache = new LRUCache(50)\n/**\n * Dynamic loading of translation resources - works with Suspence to prevent early access to loadable strings\n *\n * @param lng - resource language\n * @param ns - Namespace/name of the component/resource\n * @returns translation resource\n */\nconst loadResource = ({ lng = 'en', ns }: { ns: string; lng?: string }) => {\n let isLoading = true\n let isError = false\n let resource: Record<string, string>\n\n const importResources = async () => {\n try {\n const load = resolveTranslationLoader(lng, ns)\n if (!load) {\n isError = true\n isLoading = false\n return\n }\n resource = await load()\n isLoading = false\n } catch {\n isError = true\n isLoading = false\n }\n }\n const promise = importResources()\n return () => {\n if (isLoading) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw promise // Throw the promise to indicate Suspense should suspend.\n } else if (isError) {\n throw new Error(`Error loading translation for component: ${ns}`) // Handle error\n } else {\n return resource // Return the resource when loading is complete\n }\n }\n}\n\n/**\n * Hook that allows component to load custom dictionary\n *\n * @param ns - Namespace - should match component name exactly - not exposed to consumers\n * @internal\n */\nexport const useI18n = (\n namespaces:\n keyof CustomTypeOptions['resources'] | Array<keyof CustomTypeOptions['resources']> | null,\n) => {\n //Getting our instance of i18n -> supplied by the provider set in GustoProvider\n const { i18n: i18nInstance } = useTranslation()\n //Abort when namespace is not provided\n if (!namespaces) return\n const nsMap = Array.isArray(namespaces) ? namespaces : [namespaces]\n for (const ns of nsMap) {\n // `language` (the requested language) rather than `resolvedLanguage` (the language i18next has\n // already loaded translations for) - resolvedLanguage stays pinned to whatever language already\n // has resources (typically 'en', preloaded in SDKI18next) until a resource bundle is registered\n // under the newly requested language, which is exactly what this loop is trying to do.\n const key = `${i18nInstance.language}:${ns}`\n //Skip loading default resource if it is already in cache\n if (resourceCache.get(key) === null) {\n //If resource not in cache, initiate loading and add getter to cache\n resourceCache.put(key, loadResource({ lng: i18nInstance.language, ns: ns }))\n }\n //Get resourceGetter from cache\n const resourceGetter = resourceCache.get(key)\n if (resourceGetter) {\n const resource = resourceGetter()\n i18nInstance.addResourceBundle(i18nInstance.language, ns, resource, true, false) //Last argument is set to false to prevent override of keys provided by partners on GustoProvider level through dictionary prop\n }\n }\n}\n\n/**\n * Used by individual components to override their dictionaries with partner provided resources\n *\n * @internal\n */\nexport const useComponentDictionary = <K extends keyof Resources>(\n ns: K,\n resource?: ResourceDictionary<K> | null,\n) => {\n const { i18n: i18nInstance } = useTranslation()\n if (resource) {\n for (const lang in resource) {\n i18nInstance.addResourceBundle(lang, ns, resource[lang], true, true)\n }\n }\n}\n"],"names":["defaultNS","translationLoaders","m","resolveTranslationLoader","lng","ns","primaryPath","resourceCache","LRUCache","loadResource","isLoading","isError","resource","promise","load","useI18n","namespaces","i18nInstance","useTranslation","nsMap","key","resourceGetter","useComponentDictionary","lang"],"mappings":"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"}
1
+ {"version":3,"file":"I18n.js","sources":["../../src/i18n/I18n.ts"],"sourcesContent":["/// <reference types=\"vite/client\" />\nimport { useTranslation } from 'react-i18next'\nimport type { CustomTypeOptions } from 'i18next'\nimport type { Resources } from './types'\nimport { LRUCache } from '@/helpers/LRUCache'\nimport type { ResourceDictionary } from '@/types/Helpers'\n\n/** @internal */\nexport const defaultNS = 'common'\n\nconst translationLoaders = import.meta.glob<Record<string, string>>('./*/*.json', {\n import: 'default',\n})\n\nfunction resolveTranslationLoader(lng: string | undefined, ns: string) {\n const language = lng ?? 'en'\n const primaryPath = `./${language}/${ns}.json`\n const load =\n translationLoaders[primaryPath as keyof typeof translationLoaders] ??\n translationLoaders[`./en/${ns}.json` as keyof typeof translationLoaders]\n return load\n}\n\n//LRU cache holding requested resources\nconst resourceCache = new LRUCache(50)\n/**\n * Dynamic loading of translation resources - works with Suspence to prevent early access to loadable strings\n *\n * @param lng - resource language\n * @param ns - Namespace/name of the component/resource\n * @returns translation resource\n */\nconst loadResource = ({ lng = 'en', ns }: { ns: string; lng?: string }) => {\n let isLoading = true\n let isError = false\n let resource: Record<string, string>\n\n const importResources = async () => {\n try {\n const load = resolveTranslationLoader(lng, ns)\n if (!load) {\n isError = true\n isLoading = false\n return\n }\n resource = await load()\n isLoading = false\n } catch {\n isError = true\n isLoading = false\n }\n }\n const promise = importResources()\n return () => {\n if (isLoading) {\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw promise // Throw the promise to indicate Suspense should suspend.\n } else if (isError) {\n throw new Error(`Error loading translation for component: ${ns}`) // Handle error\n } else {\n return resource // Return the resource when loading is complete\n }\n }\n}\n\n/**\n * Hook that allows component to load custom dictionary\n *\n * @param ns - Namespace - should match component name exactly - not exposed to consumers\n * @internal\n */\nexport const useI18n = (\n namespaces:\n keyof CustomTypeOptions['resources'] | Array<keyof CustomTypeOptions['resources']> | null,\n) => {\n //Getting our instance of i18n -> supplied by the provider set in GustoProvider\n const { i18n: i18nInstance } = useTranslation()\n //Abort when namespace is not provided\n if (!namespaces) return\n const nsMap = Array.isArray(namespaces) ? namespaces : [namespaces]\n for (const ns of nsMap) {\n // `language` (the requested language) rather than `resolvedLanguage` (the language i18next has\n // already loaded translations for) - resolvedLanguage stays pinned to whatever language already\n // has resources (typically 'en', preloaded in SDKI18next) until a resource bundle is registered\n // under the newly requested language, which is exactly what this loop is trying to do.\n const key = `${i18nInstance.language}:${ns}`\n //Skip loading default resource if it is already in cache\n if (resourceCache.get(key) === null) {\n //If resource not in cache, initiate loading and add getter to cache\n resourceCache.put(key, loadResource({ lng: i18nInstance.language, ns: ns }))\n }\n //Get resourceGetter from cache\n const resourceGetter = resourceCache.get(key)\n if (resourceGetter) {\n const resource = resourceGetter()\n i18nInstance.addResourceBundle(i18nInstance.language, ns, resource, true, false) //Last argument is set to false to prevent override of keys provided by partners on GustoProvider level through dictionary prop\n }\n }\n}\n\n/**\n * Used by individual components to override their dictionaries with partner provided resources\n *\n * @internal\n */\nexport const useComponentDictionary = <K extends keyof Resources>(\n ns: K,\n resource?: ResourceDictionary<K> | null,\n) => {\n const { i18n: i18nInstance } = useTranslation()\n if (resource) {\n for (const lang in resource) {\n i18nInstance.addResourceBundle(lang, ns, resource[lang], true, true)\n }\n }\n}\n"],"names":["defaultNS","translationLoaders","m","resolveTranslationLoader","lng","ns","primaryPath","resourceCache","LRUCache","loadResource","isLoading","isError","resource","promise","load","useI18n","namespaces","i18nInstance","useTranslation","nsMap","key","resourceGetter","useComponentDictionary","lang"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ const e = "Pay schedule", t = "You have assigned everyone to be on one pay schedule.", a = "Manage", n = "Edit", o = "Edit pay schedule", s = "Edit AutoPilot", d = { name: "Name", frequency: "Frequency" }, l = { label: "AutoPilot", enabled: "Enabled", disabled: "Disabled" }, i = { assignmentUpdated: "Pay schedule assignment updated." }, c = {
2
+ title: e,
3
+ description: t,
4
+ manageCta: a,
5
+ editCta: n,
6
+ editScheduleAriaLabel: o,
7
+ editAutoPilotAriaLabel: s,
8
+ labels: d,
9
+ autoPilot: l,
10
+ alerts: i
11
+ };
12
+ export {
13
+ i as alerts,
14
+ l as autoPilot,
15
+ c as default,
16
+ t as description,
17
+ s as editAutoPilotAriaLabel,
18
+ n as editCta,
19
+ o as editScheduleAriaLabel,
20
+ d as labels,
21
+ a as manageCta,
22
+ e as title
23
+ };
24
+ //# sourceMappingURL=Company.Management.PaySchedule.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Company.Management.PaySchedule.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -0,0 +1,18 @@
1
+ const e = { heading: "Choose schedule type", description: "After you choose, you can create a pay schedule for each group.", options: { single: { label: "Everyone on one schedule", description: "Choose one pay schedule for all your employees" } } }, a = { heading: "Assign employees", payScheduleLabel: "Pay schedule", payScheduleDescription: "The pay schedule to use for all employees.", addPayScheduleCta: "Add pay schedule" }, n = { heading: "Review changes", noChangesHeading: "There are no changes to review.", noChangesDescription: "If you intended to make changes, please go back and make them.", employeeChangesHeading: "Employees affected", nameLabel: "Name", transitionPayPeriodLabel: "Transition pay period", payFrequencyLabel: "New pay frequency", firstPayPeriodLabel: "First pay period", noTransitionNeeded: "No transition needed" }, o = "Back", s = "Continue", t = "Submit", i = {
2
+ typeStep: e,
3
+ scheduleStep: a,
4
+ reviewStep: n,
5
+ backCta: o,
6
+ continueCta: s,
7
+ submitCta: t
8
+ };
9
+ export {
10
+ o as backCta,
11
+ s as continueCta,
12
+ i as default,
13
+ n as reviewStep,
14
+ a as scheduleStep,
15
+ t as submitCta,
16
+ e as typeStep
17
+ };
18
+ //# sourceMappingURL=Company.Management.PayScheduleAssignment.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Company.Management.PayScheduleAssignment.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}