@gusto/embedded-react-sdk 0.12.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/CHANGELOG.md +139 -0
  2. package/dist/_virtual/dynamic-import-helper.js +1 -8
  3. package/dist/_virtual/dynamic-import-helper.js.map +1 -1
  4. package/dist/assets/icons/spinner_small.svg.js +10 -0
  5. package/dist/assets/icons/spinner_small.svg.js.map +1 -0
  6. package/dist/components/Base/Base.js +38 -36
  7. package/dist/components/Base/Base.js.map +1 -1
  8. package/dist/components/Base/useBase.d.ts +2 -0
  9. package/dist/components/Base/useBase.js.map +1 -1
  10. package/dist/components/Common/DataView/DataView.d.ts +2 -1
  11. package/dist/components/Common/DataView/DataView.js +20 -19
  12. package/dist/components/Common/DataView/DataView.js.map +1 -1
  13. package/dist/components/Common/DataView/useDataView.d.ts +3 -1
  14. package/dist/components/Common/DataView/useDataView.js +13 -11
  15. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  16. package/dist/components/Common/EmptyData/EmptyData.module.scss.js +1 -1
  17. package/dist/components/Common/InlineSpinner/InlineSpinner.d.ts +6 -0
  18. package/dist/components/Common/InlineSpinner/InlineSpinner.js +25 -0
  19. package/dist/components/Common/InlineSpinner/InlineSpinner.js.map +1 -0
  20. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js +10 -0
  21. package/dist/components/Common/InlineSpinner/InlineSpinner.module.scss.js.map +1 -0
  22. package/dist/components/Common/InlineSpinner/index.d.ts +2 -0
  23. package/dist/components/Common/PaginationControl/PaginationControl.js +31 -28
  24. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  25. package/dist/components/Common/PaginationControl/PaginationControlTypes.d.ts +1 -0
  26. package/dist/components/Common/ReorderableList/DropZone.js +1 -1
  27. package/dist/components/Common/ReorderableList/DropZone.js.map +1 -1
  28. package/dist/components/Common/ReorderableList/ReorderableItem.js +1 -1
  29. package/dist/components/Common/ReorderableList/ReorderableItem.js.map +1 -1
  30. package/dist/components/Common/SignatureForm/SignatureForm.js +8 -5
  31. package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
  32. package/dist/components/Common/SignatureForm/SignatureFormActions.js +13 -10
  33. package/dist/components/Common/SignatureForm/SignatureFormActions.js.map +1 -1
  34. package/dist/components/Common/SignatureForm/SignatureFormFields.js +13 -10
  35. package/dist/components/Common/SignatureForm/SignatureFormFields.js.map +1 -1
  36. package/dist/components/Common/UI/CalendarPreview/CalendarPreview.js +1 -1
  37. package/dist/components/Common/UI/DatePicker/DatePicker.js +1 -1
  38. package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
  39. package/dist/components/Common/hooks/useNumberFormatter.js +1 -1
  40. package/dist/components/Common/index.d.ts +1 -0
  41. package/dist/components/Company/AssignSignatory/AssignSignatory.js +8 -6
  42. package/dist/components/Company/AssignSignatory/AssignSignatory.js.map +1 -1
  43. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +8 -6
  44. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  45. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +10 -8
  46. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  47. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +8 -7
  48. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js.map +1 -1
  49. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +14 -13
  50. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  51. package/dist/components/Company/AssignSignatory/CreateSignatory/Schema.d.ts +2 -2
  52. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -8
  53. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  54. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +8 -6
  55. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  56. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +10 -9
  57. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js.map +1 -1
  58. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +11 -10
  59. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  60. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -8
  61. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  62. package/dist/components/Company/AssignSignatory/TitleSelect.js +8 -7
  63. package/dist/components/Company/AssignSignatory/TitleSelect.js.map +1 -1
  64. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -10
  65. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  66. package/dist/components/Company/BankAccount/BankAccount.js +1 -1
  67. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +9 -8
  68. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js.map +1 -1
  69. package/dist/components/Company/BankAccount/BankAccountForm/BankAccountForm.js +2 -2
  70. package/dist/components/Company/BankAccount/BankAccountForm/Form.js +11 -9
  71. package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
  72. package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -8
  73. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  74. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +12 -10
  75. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  76. package/dist/components/Company/BankAccount/BankAccountList/BankAccountList.js +1 -1
  77. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +13 -11
  78. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  79. package/dist/components/Company/BankAccount/BankAccountVerify/BankAccountVerify.js +2 -2
  80. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +6 -4
  81. package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
  82. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +7 -5
  83. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  84. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +14 -12
  85. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  86. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -8
  87. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  88. package/dist/components/Company/DocumentSigner/DocumentSigner.js +1 -1
  89. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +11 -9
  90. package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  91. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +5 -8
  92. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  93. package/dist/components/Company/FederalTaxes/Actions.js +9 -7
  94. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  95. package/dist/components/Company/FederalTaxes/FederalTaxes.js +20 -18
  96. package/dist/components/Company/FederalTaxes/FederalTaxes.js.map +1 -1
  97. package/dist/components/Company/FederalTaxes/Form.js +6 -4
  98. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  99. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -13
  100. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  101. package/dist/components/Company/Industry/Actions.js +7 -5
  102. package/dist/components/Company/Industry/Actions.js.map +1 -1
  103. package/dist/components/Company/Industry/Context.js +8 -11
  104. package/dist/components/Company/Industry/Context.js.map +1 -1
  105. package/dist/components/Company/Industry/Edit.js +12 -10
  106. package/dist/components/Company/Industry/Edit.js.map +1 -1
  107. package/dist/components/Company/Industry/Industry.js +2 -2
  108. package/dist/components/Company/Locations/LocationForm/Actions.js +8 -6
  109. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  110. package/dist/components/Company/Locations/LocationForm/Form.js +6 -5
  111. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  112. package/dist/components/Company/Locations/LocationForm/LocationForm.js +16 -14
  113. package/dist/components/Company/Locations/LocationForm/LocationForm.js.map +1 -1
  114. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -8
  115. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  116. package/dist/components/Company/Locations/LocationsList/Actions.js +8 -6
  117. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  118. package/dist/components/Company/Locations/LocationsList/List.js +4 -2
  119. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  120. package/dist/components/Company/Locations/LocationsList/LocationsList.js +15 -13
  121. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  122. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -8
  123. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  124. package/dist/components/Company/OnboardingOverview/Completed.js +14 -12
  125. package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
  126. package/dist/components/Company/OnboardingOverview/MissingRequirements.js +8 -6
  127. package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
  128. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +5 -3
  129. package/dist/components/Company/OnboardingOverview/OnboardingOverview.js.map +1 -1
  130. package/dist/components/Company/OnboardingOverview/context.js +5 -8
  131. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  132. package/dist/components/Company/PaySchedule/PaySchedule.js +40 -38
  133. package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
  134. package/dist/components/Company/PaySchedule/_parts/Actions.js +12 -10
  135. package/dist/components/Company/PaySchedule/_parts/Actions.js.map +1 -1
  136. package/dist/components/Company/PaySchedule/_parts/Edit.js +17 -16
  137. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  138. package/dist/components/Company/PaySchedule/_parts/Head.js +8 -6
  139. package/dist/components/Company/PaySchedule/_parts/Head.js.map +1 -1
  140. package/dist/components/Company/PaySchedule/_parts/List.js +15 -13
  141. package/dist/components/Company/PaySchedule/_parts/List.js.map +1 -1
  142. package/dist/components/Company/PaySchedule/usePaySchedule.js +8 -11
  143. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  144. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +7 -5
  145. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  146. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +3 -3
  147. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -8
  148. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  149. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +8 -6
  150. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  151. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +7 -5
  152. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  153. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +1 -1
  154. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -8
  155. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  156. package/dist/components/Contractor/Address/Address.js +10 -8
  157. package/dist/components/Contractor/Address/Address.js.map +1 -1
  158. package/dist/components/Contractor/Address/Form.js +4 -3
  159. package/dist/components/Contractor/Address/Form.js.map +1 -1
  160. package/dist/components/Contractor/Address/useAddress.js +7 -10
  161. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  162. package/dist/components/Contractor/ContractorList/index.js +26 -25
  163. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  164. package/dist/components/Contractor/ContractorList/useContractorList.js +1 -1
  165. package/dist/components/Contractor/NewHireReport/NewHireReport.js +58 -55
  166. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  167. package/dist/components/Contractor/NewHireReport/types.d.ts +1 -0
  168. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js +19 -12
  169. package/dist/components/Contractor/OnboardingFlow/OnboardingFlowComponents.js.map +1 -1
  170. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js +6 -5
  171. package/dist/components/Contractor/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  172. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +7 -5
  173. package/dist/components/Contractor/PaymentMethod/BankAccountForm.js.map +1 -1
  174. package/dist/components/Contractor/PaymentMethod/PaymentMethod.d.ts +4 -4
  175. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js +87 -85
  176. package/dist/components/Contractor/PaymentMethod/PaymentMethod.js.map +1 -1
  177. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +3 -2
  178. package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js.map +1 -1
  179. package/dist/components/Contractor/Profile/ContractorProfile.js +1 -1
  180. package/dist/components/Contractor/Profile/ContractorProfileForm.js +13 -13
  181. package/dist/components/Contractor/Profile/useContractorProfile.d.ts +19 -19
  182. package/dist/components/Contractor/Profile/useContractorProfile.js +37 -41
  183. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  184. package/dist/components/Contractor/Submit/Submit.js +28 -27
  185. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  186. package/dist/components/Employee/Compensation/Actions.js +6 -5
  187. package/dist/components/Employee/Compensation/Actions.js.map +1 -1
  188. package/dist/components/Employee/Compensation/Compensation.js +10 -10
  189. package/dist/components/Employee/Compensation/Compensation.js.map +1 -1
  190. package/dist/components/Employee/Compensation/Edit.js +15 -14
  191. package/dist/components/Employee/Compensation/Edit.js.map +1 -1
  192. package/dist/components/Employee/Compensation/List.js +25 -23
  193. package/dist/components/Employee/Compensation/List.js.map +1 -1
  194. package/dist/components/Employee/Compensation/useCompensation.js +1 -1
  195. package/dist/components/Employee/Compensation/useCompensation.js.map +1 -1
  196. package/dist/components/Employee/Deductions/Deductions.js +1 -1
  197. package/dist/components/Employee/Deductions/Deductions.js.map +1 -1
  198. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js +15 -14
  199. package/dist/components/Employee/Deductions/DeductionsForm/DeductionsForm.js.map +1 -1
  200. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +10 -9
  201. package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js.map +1 -1
  202. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js +12 -11
  203. package/dist/components/Employee/Deductions/IncludeDeductionsForm/IncludeDeductionsForm.js.map +1 -1
  204. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js +8 -6
  205. package/dist/components/Employee/DocumentSigner/DocumentList/Actions.js.map +1 -1
  206. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +12 -10
  207. package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  208. package/dist/components/Employee/DocumentSigner/DocumentList/List.js +4 -2
  209. package/dist/components/Employee/DocumentSigner/DocumentList/List.js.map +1 -1
  210. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +5 -8
  211. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  212. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +16 -14
  213. package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
  214. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +5 -8
  215. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  216. package/dist/components/Employee/EmployeeList/Actions.js +6 -4
  217. package/dist/components/Employee/EmployeeList/Actions.js.map +1 -1
  218. package/dist/components/Employee/EmployeeList/EmployeeList.js +76 -62
  219. package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
  220. package/dist/components/Employee/EmployeeList/Head.js +7 -5
  221. package/dist/components/Employee/EmployeeList/Head.js.map +1 -1
  222. package/dist/components/Employee/EmployeeList/List.js +30 -27
  223. package/dist/components/Employee/EmployeeList/List.js.map +1 -1
  224. package/dist/components/Employee/EmployeeList/useEmployeeList.d.ts +1 -0
  225. package/dist/components/Employee/EmployeeList/useEmployeeList.js +5 -8
  226. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  227. package/dist/components/Employee/FederalTaxes/Actions.d.ts +1 -0
  228. package/dist/components/Employee/FederalTaxes/Actions.js +15 -0
  229. package/dist/components/Employee/FederalTaxes/Actions.js.map +1 -0
  230. package/dist/components/Employee/FederalTaxes/FederalForm.d.ts +29 -0
  231. package/dist/components/Employee/FederalTaxes/FederalForm.js +110 -0
  232. package/dist/components/Employee/FederalTaxes/FederalForm.js.map +1 -0
  233. package/dist/components/Employee/FederalTaxes/FederalTaxes.d.ts +6 -0
  234. package/dist/components/Employee/FederalTaxes/FederalTaxes.js +72 -0
  235. package/dist/components/Employee/FederalTaxes/FederalTaxes.js.map +1 -0
  236. package/dist/components/Employee/FederalTaxes/Head.d.ts +1 -0
  237. package/dist/components/Employee/FederalTaxes/Head.js +24 -0
  238. package/dist/components/Employee/FederalTaxes/Head.js.map +1 -0
  239. package/dist/components/Employee/FederalTaxes/index.d.ts +2 -0
  240. package/dist/components/Employee/FederalTaxes/useFederalTaxes.d.ts +5 -0
  241. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +17 -0
  242. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -0
  243. package/dist/components/Employee/Landing/Landing.js +15 -14
  244. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  245. package/dist/components/Employee/OnboardingFlow/OnboardingFlow.d.ts +1 -19
  246. package/dist/components/Employee/OnboardingFlow/OnboardingFlow.js.map +1 -1
  247. package/dist/components/Employee/OnboardingFlow/OnboardingFlowComponents.d.ts +22 -0
  248. package/dist/components/Employee/OnboardingFlow/OnboardingFlowComponents.js +18 -0
  249. package/dist/components/Employee/OnboardingFlow/OnboardingFlowComponents.js.map +1 -0
  250. package/dist/components/Employee/OnboardingFlow/onboardingStateMachine.d.ts +2 -1
  251. package/dist/components/Employee/OnboardingFlow/onboardingStateMachine.js +72 -63
  252. package/dist/components/Employee/OnboardingFlow/onboardingStateMachine.js.map +1 -1
  253. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +9 -9
  254. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  255. package/dist/components/Employee/PaymentMethod/Actions.js +9 -7
  256. package/dist/components/Employee/PaymentMethod/Actions.js.map +1 -1
  257. package/dist/components/Employee/PaymentMethod/BankAccount.d.ts +2 -2
  258. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +6 -5
  259. package/dist/components/Employee/PaymentMethod/BankAccountEdit.js.map +1 -1
  260. package/dist/components/Employee/PaymentMethod/BankAccountsList.js +10 -8
  261. package/dist/components/Employee/PaymentMethod/BankAccountsList.js.map +1 -1
  262. package/dist/components/Employee/PaymentMethod/PaymentMethod.js +8 -8
  263. package/dist/components/Employee/PaymentMethod/PaymentMethod.js.map +1 -1
  264. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js +3 -2
  265. package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js.map +1 -1
  266. package/dist/components/Employee/PaymentMethod/Split.js +12 -11
  267. package/dist/components/Employee/PaymentMethod/Split.js.map +1 -1
  268. package/dist/components/Employee/PaymentMethod/usePaymentMethod.d.ts +8 -8
  269. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +11 -14
  270. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  271. package/dist/components/Employee/Profile/Actions.js +9 -7
  272. package/dist/components/Employee/Profile/Actions.js.map +1 -1
  273. package/dist/components/Employee/Profile/AdminPersonalDetails.d.ts +2 -2
  274. package/dist/components/Employee/Profile/AdminPersonalDetails.js +10 -9
  275. package/dist/components/Employee/Profile/AdminPersonalDetails.js.map +1 -1
  276. package/dist/components/Employee/Profile/HomeAddress.js +6 -5
  277. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  278. package/dist/components/Employee/Profile/PersonalDetailsInputs.d.ts +2 -2
  279. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +22 -21
  280. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  281. package/dist/components/Employee/Profile/Profile.js +15 -13
  282. package/dist/components/Employee/Profile/Profile.js.map +1 -1
  283. package/dist/components/Employee/Profile/useProfile.js +5 -8
  284. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  285. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.d.ts +2 -1
  286. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +37 -24
  287. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  288. package/dist/components/Employee/SelfOnboardingFlow/selfOnboardingMachine.d.ts +2 -1
  289. package/dist/components/Employee/SelfOnboardingFlow/selfOnboardingMachine.js +31 -19
  290. package/dist/components/Employee/SelfOnboardingFlow/selfOnboardingMachine.js.map +1 -1
  291. package/dist/components/Employee/StateTaxes/Actions.d.ts +1 -0
  292. package/dist/components/Employee/StateTaxes/Actions.js +15 -0
  293. package/dist/components/Employee/StateTaxes/Actions.js.map +1 -0
  294. package/dist/components/Employee/StateTaxes/StateForm.d.ts +10 -0
  295. package/dist/components/Employee/StateTaxes/StateForm.js +34 -0
  296. package/dist/components/Employee/StateTaxes/StateForm.js.map +1 -0
  297. package/dist/components/Employee/StateTaxes/StateTaxes.d.ts +7 -0
  298. package/dist/components/Employee/StateTaxes/StateTaxes.js +90 -0
  299. package/dist/components/Employee/StateTaxes/StateTaxes.js.map +1 -0
  300. package/dist/components/Employee/StateTaxes/index.d.ts +2 -0
  301. package/dist/components/Employee/StateTaxes/useStateTaxes.d.ts +8 -0
  302. package/dist/components/Employee/StateTaxes/useStateTaxes.js +17 -0
  303. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -0
  304. package/dist/components/Employee/Taxes/Actions.js +10 -8
  305. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  306. package/dist/components/Employee/Taxes/FederalForm.js +14 -12
  307. package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
  308. package/dist/components/Employee/Taxes/Taxes.d.ts +5 -0
  309. package/dist/components/Employee/Taxes/Taxes.js +73 -85
  310. package/dist/components/Employee/Taxes/Taxes.js.map +1 -1
  311. package/dist/components/Employee/Taxes/useTaxes.js +5 -8
  312. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  313. package/dist/components/Employee/index.d.ts +3 -1
  314. package/dist/components/Employee/index.js +16 -12
  315. package/dist/components/Employee/index.js.map +1 -1
  316. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +4 -2
  317. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +75 -34
  318. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  319. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +10 -5
  320. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +118 -50
  321. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  322. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +14 -11
  323. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  324. package/dist/components/Payroll/PayrollList/PayrollList.d.ts +1 -1
  325. package/dist/components/Payroll/PayrollList/PayrollList.js +24 -11
  326. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  327. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +8 -6
  328. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +36 -25
  329. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  330. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +1 -1
  331. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +12 -9
  332. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  333. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.d.ts +2 -1
  334. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +4 -4
  335. package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +1 -1
  336. package/dist/components/Payroll/helpers.d.ts +20 -0
  337. package/dist/components/Payroll/helpers.js +208 -0
  338. package/dist/components/Payroll/helpers.js.map +1 -0
  339. package/dist/components/Payroll/helpers.test.d.ts +1 -0
  340. package/dist/contexts/ApiProvider/ApiProvider.js +4 -4
  341. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +8 -5
  342. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  343. package/dist/contexts/ThemeProvider/ThemeProvider.js +7 -7
  344. package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
  345. package/dist/helpers/formattedStrings.d.ts +9 -0
  346. package/dist/helpers/formattedStrings.js +55 -16
  347. package/dist/helpers/formattedStrings.js.map +1 -1
  348. package/dist/i18n/I18n.js +11 -11
  349. package/dist/i18n/I18n.js.map +1 -1
  350. package/dist/i18n/en/Employee.FederalTaxes.json.js +46 -0
  351. package/dist/i18n/en/Employee.FederalTaxes.json.js.map +1 -0
  352. package/dist/i18n/en/Employee.StateTaxes.json.js +6 -10
  353. package/dist/i18n/en/Employee.StateTaxes.json.js.map +1 -1
  354. package/dist/i18n/en/Employee.Taxes.json.js +7 -7
  355. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +30 -0
  356. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js.map +1 -0
  357. package/dist/i18n/en/Payroll.PayrollList.json.js +14 -0
  358. package/dist/i18n/en/Payroll.PayrollList.json.js.map +1 -0
  359. package/dist/i18n/en/common.json.d.ts +8 -0
  360. package/dist/i18n/en/common.json.js +15 -13
  361. package/dist/i18n/en/common.json.js.map +1 -1
  362. package/dist/shared/constants.d.ts +4 -2
  363. package/dist/shared/constants.js +10 -9
  364. package/dist/shared/constants.js.map +1 -1
  365. package/dist/style.css +1 -1
  366. package/dist/types/i18next.d.ts +71 -4
  367. package/package.json +29 -30
@@ -1 +1 @@
1
- {"version":3,"file":"RunPayroll.js","sources":["../../../../src/components/Payroll/RunPayrollFlow/RunPayroll.tsx"],"sourcesContent":["import { useReducer } from 'react'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { EventType, runPayrollEvents } from '@/shared/constants'\n\ntype PayrollFlowEvent = (typeof runPayrollEvents)[keyof typeof runPayrollEvents]\ntype PayrollFlowAction =\n | {\n type: Extract<\n PayrollFlowEvent,\n 'runPayroll/back' | 'runPayroll/edited' | 'runPayroll/calculated' | 'runPayroll/submitted'\n >\n }\n | {\n type: Extract<PayrollFlowEvent, 'runPayroll/selected'>\n payload: { payrollId: string }\n }\n\ninterface PayrollFlowState {\n currentPayrollId?: string\n isCalculated: boolean\n}\nconst createInitialPayrollFlowState: () => PayrollFlowState = () => ({\n currentPayrollId: undefined,\n isCalculated: false,\n})\n\nconst runPayrollFlowReducer: (\n state: PayrollFlowState,\n action: PayrollFlowAction,\n) => PayrollFlowState = (state, action) => {\n switch (action.type) {\n case 'runPayroll/back':\n return {\n ...state,\n currentPayrollId: undefined,\n }\n case 'runPayroll/edited':\n return {\n ...state,\n isCalculated: false,\n }\n case 'runPayroll/calculated':\n return {\n ...state,\n isCalculated: true,\n }\n case 'runPayroll/selected': {\n return {\n ...state,\n currentPayrollId: action.payload.payrollId,\n }\n }\n case 'runPayroll/submitted': {\n return {\n ...state,\n isCalculated: false,\n currentPayrollId: undefined,\n }\n }\n default:\n return state\n }\n}\n\ninterface RunPayrollProps extends Pick<BaseComponentInterface, 'onEvent'> {\n companyId: string\n Configuration: ({\n onEvent,\n payrollId,\n }: Pick<BaseComponentInterface, 'onEvent'> & { payrollId: string }) => React.JSX.Element\n List: ({\n companyId,\n onEvent,\n }: Pick<BaseComponentInterface, 'onEvent'> & { companyId: string }) => React.JSX.Element\n Overview: ({\n companyId,\n onEvent,\n payrollId,\n }: Pick<BaseComponentInterface, 'onEvent'> & {\n companyId: string\n payrollId: string\n }) => React.JSX.Element\n}\n\nexport const RunPayroll = ({\n companyId,\n Configuration,\n List,\n onEvent,\n Overview,\n}: RunPayrollProps) => {\n const [{ isCalculated, currentPayrollId }, dispatch] = useReducer(\n runPayrollFlowReducer,\n createInitialPayrollFlowState(),\n )\n\n const wrappedOnEvent: OnEventType<string, unknown> = (event, payload) => {\n dispatch({ type: event, payload } as PayrollFlowAction)\n onEvent(event as EventType, payload)\n }\n\n return currentPayrollId ? (\n isCalculated ? (\n <Overview companyId={companyId} onEvent={wrappedOnEvent} payrollId={currentPayrollId} />\n ) : (\n <Configuration onEvent={wrappedOnEvent} payrollId={currentPayrollId} />\n )\n ) : (\n <List companyId={companyId} onEvent={wrappedOnEvent} />\n )\n}\n"],"names":["createInitialPayrollFlowState","runPayrollFlowReducer","state","action","RunPayroll","companyId","Configuration","List","onEvent","Overview","isCalculated","currentPayrollId","dispatch","useReducer","wrappedOnEvent","event","payload","jsx"],"mappings":";;AAsBA,MAAMA,IAAwD,OAAO;AAAA,EACnE,kBAAkB;AAAA,EAClB,cAAc;AAChB,IAEMC,IAGkB,CAACC,GAAOC,MAAW;AACzC,UAAQA,EAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAO;AAAA,QACL,GAAGD;AAAA,QACH,kBAAkB;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,cAAc;AAAA,MAAA;AAAA,IAElB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,cAAc;AAAA,MAAA;AAAA,IAElB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,kBAAkBC,EAAO,QAAQ;AAAA,MAAA;AAAA,IAGrC,KAAK;AACH,aAAO;AAAA,QACL,GAAGD;AAAA,QACH,cAAc;AAAA,QACd,kBAAkB;AAAA,MAAA;AAAA,IAGtB;AACE,aAAOA;AAAA,EAAA;AAEb,GAsBaE,IAAa,CAAC;AAAA,EACzB,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,MAAuB;AACrB,QAAM,CAAC,EAAE,cAAAC,GAAc,kBAAAC,EAAA,GAAoBC,CAAQ,IAAIC;AAAA,IACrDZ;AAAA,IACAD,EAAA;AAAA,EAA8B,GAG1Bc,IAA+C,CAACC,GAAOC,MAAY;AACvE,IAAAJ,EAAS,EAAE,MAAMG,GAAO,SAAAC,EAAA,CAA8B,GACtDR,EAAQO,GAAoBC,CAAO;AAAA,EACrC;AAEA,SAAOL,IACLD,IACE,gBAAAO,EAACR,GAAA,EAAS,WAAAJ,GAAsB,SAASS,GAAgB,WAAWH,EAAA,CAAkB,sBAErFL,GAAA,EAAc,SAASQ,GAAgB,WAAWH,EAAA,CAAkB,IAGvE,gBAAAM,EAACV,GAAA,EAAK,WAAAF,GAAsB,SAASS,EAAA,CAAgB;AAEzD;"}
1
+ {"version":3,"file":"RunPayroll.js","sources":["../../../../src/components/Payroll/RunPayrollFlow/RunPayroll.tsx"],"sourcesContent":["import { useReducer } from 'react'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport type { OnEventType } from '@/components/Base/useBase'\nimport type { EventType, runPayrollEvents } from '@/shared/constants'\n\ntype PayrollFlowEvent = (typeof runPayrollEvents)[keyof typeof runPayrollEvents]\ntype PayrollFlowAction =\n | {\n type: Extract<\n PayrollFlowEvent,\n 'runPayroll/back' | 'runPayroll/edited' | 'runPayroll/calculated' | 'runPayroll/submitted'\n >\n }\n | {\n type: Extract<PayrollFlowEvent, 'runPayroll/selected'>\n payload: { payrollId: string }\n }\n\ninterface PayrollFlowState {\n currentPayrollId?: string\n isCalculated: boolean\n}\nconst createInitialPayrollFlowState: () => PayrollFlowState = () => ({\n currentPayrollId: undefined,\n isCalculated: false,\n})\n\nconst runPayrollFlowReducer: (\n state: PayrollFlowState,\n action: PayrollFlowAction,\n) => PayrollFlowState = (state, action) => {\n switch (action.type) {\n case 'runPayroll/back':\n return {\n ...state,\n currentPayrollId: undefined,\n }\n case 'runPayroll/edited':\n return {\n ...state,\n isCalculated: false,\n }\n case 'runPayroll/calculated':\n return {\n ...state,\n isCalculated: true,\n }\n case 'runPayroll/selected': {\n return {\n ...state,\n currentPayrollId: action.payload.payrollId,\n }\n }\n case 'runPayroll/submitted': {\n return {\n ...state,\n isCalculated: false,\n currentPayrollId: undefined,\n }\n }\n default:\n return state\n }\n}\n\ninterface RunPayrollProps extends Pick<BaseComponentInterface, 'onEvent'> {\n companyId: string\n Configuration: ({\n onEvent,\n payrollId,\n companyId,\n }: Pick<BaseComponentInterface, 'onEvent'> & {\n payrollId: string\n companyId: string\n }) => React.JSX.Element\n List: ({\n companyId,\n onEvent,\n }: Pick<BaseComponentInterface, 'onEvent'> & { companyId: string }) => React.JSX.Element\n Overview: ({\n companyId,\n onEvent,\n payrollId,\n }: Pick<BaseComponentInterface, 'onEvent'> & {\n companyId: string\n payrollId: string\n }) => React.JSX.Element\n}\n\nexport const RunPayroll = ({\n companyId,\n Configuration,\n List,\n onEvent,\n Overview,\n}: RunPayrollProps) => {\n const [{ isCalculated, currentPayrollId }, dispatch] = useReducer(\n runPayrollFlowReducer,\n createInitialPayrollFlowState(),\n )\n\n const wrappedOnEvent: OnEventType<string, unknown> = (event, payload) => {\n dispatch({ type: event, payload } as PayrollFlowAction)\n onEvent(event as EventType, payload)\n }\n\n return currentPayrollId ? (\n isCalculated ? (\n <Overview companyId={companyId} onEvent={wrappedOnEvent} payrollId={currentPayrollId} />\n ) : (\n <Configuration onEvent={wrappedOnEvent} payrollId={currentPayrollId} companyId={companyId} />\n )\n ) : (\n <List companyId={companyId} onEvent={wrappedOnEvent} />\n )\n}\n"],"names":["createInitialPayrollFlowState","runPayrollFlowReducer","state","action","RunPayroll","companyId","Configuration","List","onEvent","Overview","isCalculated","currentPayrollId","dispatch","useReducer","wrappedOnEvent","event","payload","jsx"],"mappings":";;AAsBA,MAAMA,IAAwD,OAAO;AAAA,EACnE,kBAAkB;AAAA,EAClB,cAAc;AAChB,IAEMC,IAGkB,CAACC,GAAOC,MAAW;AACzC,UAAQA,EAAO,MAAA;AAAA,IACb,KAAK;AACH,aAAO;AAAA,QACL,GAAGD;AAAA,QACH,kBAAkB;AAAA,MAAA;AAAA,IAEtB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,cAAc;AAAA,MAAA;AAAA,IAElB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,cAAc;AAAA,MAAA;AAAA,IAElB,KAAK;AACH,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,kBAAkBC,EAAO,QAAQ;AAAA,MAAA;AAAA,IAGrC,KAAK;AACH,aAAO;AAAA,QACL,GAAGD;AAAA,QACH,cAAc;AAAA,QACd,kBAAkB;AAAA,MAAA;AAAA,IAGtB;AACE,aAAOA;AAAA,EAAA;AAEb,GA0BaE,IAAa,CAAC;AAAA,EACzB,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AACF,MAAuB;AACrB,QAAM,CAAC,EAAE,cAAAC,GAAc,kBAAAC,EAAA,GAAoBC,CAAQ,IAAIC;AAAA,IACrDZ;AAAA,IACAD,EAAA;AAAA,EAA8B,GAG1Bc,IAA+C,CAACC,GAAOC,MAAY;AACvE,IAAAJ,EAAS,EAAE,MAAMG,GAAO,SAAAC,EAAA,CAA8B,GACtDR,EAAQO,GAAoBC,CAAO;AAAA,EACrC;AAEA,SAAOL,IACLD,IACE,gBAAAO,EAACR,GAAA,EAAS,WAAAJ,GAAsB,SAASS,GAAgB,WAAWH,EAAA,CAAkB,IAEtF,gBAAAM,EAACX,KAAc,SAASQ,GAAgB,WAAWH,GAAkB,WAAAN,EAAA,CAAsB,IAG7F,gBAAAY,EAACV,GAAA,EAAK,WAAAF,GAAsB,SAASS,EAAA,CAAgB;AAEzD;"}
@@ -0,0 +1,20 @@
1
+ import { Employee } from '@gusto/embedded-api/models/components/employee';
2
+ import { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow';
3
+ import { TFunction } from 'i18next';
4
+ import { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject';
5
+ export declare const formatEmployeePayRate: ({ employee, t, locale, }: {
6
+ employee?: Employee;
7
+ t: TFunction;
8
+ locale?: string;
9
+ }) => string | null;
10
+ export declare const useFormatEmployeePayRate: () => (employee?: Employee) => string | null;
11
+ export declare const getEmployeePayRateInfo: (employee: Employee | undefined) => {
12
+ rate: number;
13
+ paymentUnit: import('@gusto/embedded-api/models/components/compensation').PaymentUnit;
14
+ } | null;
15
+ export declare const getRegularHours: (compensation: EmployeeCompensations) => number;
16
+ export declare const getTotalPtoHours: (compensation: EmployeeCompensations) => number;
17
+ export declare const getAdditionalEarnings: (compensation: EmployeeCompensations) => number;
18
+ export declare const getReimbursements: (compensation: EmployeeCompensations) => number;
19
+ export declare const formatHoursDisplay: (hours: number) => string;
20
+ export declare const calculateGrossPay: (compensation: EmployeeCompensations, employee: Employee, compensationEffectiveDateString?: string, paySchedule?: PayScheduleObject, isOffCycle?: boolean) => number;
@@ -0,0 +1,208 @@
1
+ import { useCallback as b } from "react";
2
+ import { useTranslation as C } from "react-i18next";
3
+ import { formatPayRate as T } from "../../helpers/formattedStrings.js";
4
+ import { useLocale as v } from "../../contexts/LocaleProvider/useLocale.js";
5
+ const j = "regular hours", E = (t) => Math.round(t * 1e6) / 1e6, h = (t) => Math.round(t * 100) / 100, P = (t) => t.toLowerCase() === j, M = {
6
+ Daily: 8,
7
+ "Every week": 40,
8
+ "Every other week": 80,
9
+ "Twice per month": 86.666667,
10
+ Monthly: 173.333333,
11
+ Quarterly: 520,
12
+ Semiannually: 1040,
13
+ Annually: 2080
14
+ }, S = ({
15
+ employee: t,
16
+ t: e,
17
+ locale: r = "en-US"
18
+ }) => {
19
+ if (!t?.jobs)
20
+ return null;
21
+ const n = t.jobs.find((s) => s.primary) || t.jobs[0];
22
+ if (!n?.compensations)
23
+ return null;
24
+ const o = n.compensations[0];
25
+ if (!o || !o.rate || parseFloat(o.rate) === 0)
26
+ return null;
27
+ const a = parseFloat(o.rate), u = o.paymentUnit || "Hour";
28
+ return T({ rate: a, paymentUnit: u, t: e, locale: r });
29
+ }, z = () => {
30
+ const { t } = C("common"), { locale: e } = v();
31
+ return b(
32
+ (r) => S({ employee: r, t, locale: e }),
33
+ [t, e]
34
+ );
35
+ }, B = (t) => t.hourlyCompensations ? t.hourlyCompensations.filter((e) => e.name?.toLowerCase() === "regular hours").reduce((e, r) => e + parseFloat(r.hours || "0"), 0) : 0, x = (t) => t.paidTimeOff ? t.paidTimeOff.reduce((e, r) => e + parseFloat(r.hours || "0"), 0) : 0, U = (t) => t.fixedCompensations ? t.fixedCompensations.filter((e) => {
36
+ const r = e.name?.toLowerCase() || "", n = parseFloat(e.amount || "0");
37
+ return r !== "reimbursement" && r !== "minimum wage adjustment" && n > 0;
38
+ }).reduce((e, r) => e + parseFloat(r.amount || "0"), 0) : 0, K = (t) => {
39
+ if (!t.fixedCompensations)
40
+ return 0;
41
+ const e = t.fixedCompensations.find(
42
+ (r) => r.name?.toLowerCase() === "reimbursement"
43
+ );
44
+ return e ? parseFloat(e.amount || "0") : 0;
45
+ }, V = (t) => {
46
+ const e = h(t);
47
+ return e % 1 === 0 ? `${e}.0` : e.toString();
48
+ }, W = (t) => t.frequency && M[t.frequency] || 0, y = (t, e) => {
49
+ if (!t.length) return null;
50
+ const r = [...t].sort(
51
+ (n, o) => (n.effectiveDate ? new Date(n.effectiveDate).getTime() : 0) - (o.effectiveDate ? new Date(o.effectiveDate).getTime() : 0)
52
+ );
53
+ for (let n = r.length - 1; n >= 0; n--) {
54
+ const o = r[n]?.effectiveDate, a = o ? new Date(o) : null;
55
+ if (a && a <= e)
56
+ return r[n] || null;
57
+ }
58
+ return r[0] || null;
59
+ }, A = (t, e) => {
60
+ if (!t.length) return null;
61
+ const r = [...t].sort(
62
+ (n, o) => (n.effectiveDate ? new Date(n.effectiveDate).getTime() : 0) - (o.effectiveDate ? new Date(o.effectiveDate).getTime() : 0)
63
+ );
64
+ for (let n = r.length - 1; n >= 0; n--) {
65
+ const o = r[n]?.effectiveDate, a = o ? new Date(o) : null;
66
+ if (a && a <= e)
67
+ return r[n] || null;
68
+ }
69
+ return r[0] || null;
70
+ }, O = (t) => t.flsaStatus === "Exempt" || t.flsaStatus === "Salaried Nonexempt", L = (t) => t.length ? t.filter((e) => {
71
+ const r = e.name?.toLowerCase(), n = parseFloat(e.amount || "0");
72
+ return (r === "paycheck tips" || r === "cash tips") && n > 0;
73
+ }).reduce((e, r) => e + parseFloat(r.amount || "0"), 0) : 0, g = (t) => {
74
+ const e = parseFloat(t.rate || "0");
75
+ switch (t.paymentUnit || "Hour") {
76
+ case "Hour":
77
+ return e;
78
+ case "Year":
79
+ return e / 2080;
80
+ // 52 weeks * 40 hours
81
+ case "Month":
82
+ return e / 173.333333;
83
+ case "Week":
84
+ return e / 40;
85
+ case "Paycheck":
86
+ return 0;
87
+ // Paycheck rate is 0 for hourly calculation
88
+ default:
89
+ return e;
90
+ }
91
+ }, k = (t, e, r) => {
92
+ const n = t.jobs?.find((a) => a.uuid === e);
93
+ if (!n?.compensations)
94
+ return 0;
95
+ const o = y(n.compensations, r);
96
+ return o ? g(o) : 0;
97
+ }, H = (t, e) => {
98
+ const r = t.jobs?.find((o) => o.primary) || t.jobs?.[0];
99
+ if (!r?.compensations)
100
+ return 0;
101
+ const n = y(r.compensations, e);
102
+ return n ? g(n) : 0;
103
+ }, I = (t) => t.paidTimeOff ? t.paidTimeOff.reduce(
104
+ (e, r) => e + parseFloat(r.finalPayoutUnusedHoursInput || "0"),
105
+ 0
106
+ ) : 0, D = (t, e, r, n) => {
107
+ const o = x(t);
108
+ if (n) {
109
+ const a = I(t);
110
+ return o + a;
111
+ }
112
+ return e ? Math.min(r, o) : o;
113
+ }, _ = (t, e, r) => {
114
+ if (!t.adjustForMinimumWage) return 0;
115
+ const n = A(
116
+ t.minimumWages || [],
117
+ r
118
+ );
119
+ if (!n)
120
+ return 0;
121
+ const o = e.hourlyCompensations?.reduce(
122
+ (f, l) => f + parseFloat(l.hours || "0"),
123
+ 0
124
+ ) || 0, a = g(t), u = (parseFloat(n.wage || "0") - a) * o, s = L(e.fixedCompensations || []);
125
+ return Math.max(0, u - s);
126
+ }, J = (t, e, r, n, o, a, u) => {
127
+ if (!u && n)
128
+ return H(e, r) * (o - a);
129
+ if (!t.hourlyCompensations || !e.jobs)
130
+ return 0;
131
+ const s = t.hourlyCompensations.reduce((i, c) => {
132
+ const p = parseFloat(c.hours || "0"), d = k(e, c.jobUuid || "", r);
133
+ return i + p * d;
134
+ }, 0), f = t.hourlyCompensations.reduce((i, c) => i + parseFloat(c.hours || "0"), 0);
135
+ if (f === 0) return s;
136
+ const l = E(s / f), m = t.hourlyCompensations.filter((i) => !P(i.name || "")).reduce((i, c) => {
137
+ const p = parseFloat(c.hours || "0"), d = c.compensationMultiplier || 1;
138
+ return i + p * l * (d - 1);
139
+ }, 0);
140
+ return s + m;
141
+ }, G = (t, e, r, n, o, a) => {
142
+ const u = D(
143
+ t,
144
+ n,
145
+ o,
146
+ a
147
+ ), s = H(e, r);
148
+ return u * s;
149
+ }, N = (t, e, r) => {
150
+ if (!e) return !1;
151
+ const n = t.hourlyCompensations?.find(
152
+ (a) => P(a.name || "")
153
+ );
154
+ return n ? parseFloat(n.hours || "0") === r : !1;
155
+ }, X = (t, e, r, n, o = !1) => {
156
+ if (t.excluded)
157
+ return 0;
158
+ const a = r ? new Date(r) : /* @__PURE__ */ new Date(), u = e.jobs?.find((F) => F.primary) || e.jobs?.[0];
159
+ if (!u?.compensations)
160
+ return 0;
161
+ const s = y(
162
+ u.compensations,
163
+ a
164
+ );
165
+ if (!s)
166
+ return 0;
167
+ const f = O(s), l = n ? W(n) : 0, m = N(
168
+ t,
169
+ f,
170
+ l
171
+ ), i = D(
172
+ t,
173
+ m,
174
+ l,
175
+ o
176
+ ), c = J(
177
+ t,
178
+ e,
179
+ a,
180
+ m,
181
+ l,
182
+ i,
183
+ o
184
+ ), p = U(t), d = G(
185
+ t,
186
+ e,
187
+ a,
188
+ m,
189
+ l,
190
+ o
191
+ ), R = _(
192
+ s,
193
+ t,
194
+ a
195
+ ), w = c + p + d + R;
196
+ return h(w);
197
+ };
198
+ export {
199
+ X as calculateGrossPay,
200
+ S as formatEmployeePayRate,
201
+ V as formatHoursDisplay,
202
+ U as getAdditionalEarnings,
203
+ B as getRegularHours,
204
+ K as getReimbursements,
205
+ x as getTotalPtoHours,
206
+ z as useFormatEmployeePayRate
207
+ };
208
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/components/Payroll/helpers.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type {\n EmployeeCompensations,\n PayrollShowFixedCompensations,\n} from '@gusto/embedded-api/models/components/payrollshow'\nimport { useCallback } from 'react'\nimport type { TFunction } from 'i18next'\nimport { useTranslation } from 'react-i18next'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport type { Compensation, MinimumWages } from '@gusto/embedded-api/models/components/compensation'\nimport { formatPayRate } from '@/helpers/formattedStrings'\nimport { useLocale } from '@/contexts/LocaleProvider/useLocale'\n\nconst REGULAR_HOURS_NAME = 'regular hours'\n\nconst roundToSixDecimals = (value: number): number => {\n return Math.round(value * 1_000_000) / 1_000_000\n}\n\nconst roundToTwoDecimals = (value: number): number => {\n return Math.round(value * 100) / 100\n}\n\nconst isRegularHours = (compensationName: string): boolean => {\n return compensationName.toLowerCase() === REGULAR_HOURS_NAME\n}\n\nconst PAY_PERIOD_HOURS_MAPPINGS: Record<string, number> = {\n Daily: 8.0,\n 'Every week': 40.0,\n 'Every other week': 80.0,\n 'Twice per month': 86.666667,\n Monthly: 173.333333,\n Quarterly: 520.0,\n Semiannually: 1040.0,\n Annually: 2080.0,\n}\n\nexport const formatEmployeePayRate = ({\n employee,\n t,\n locale = 'en-US',\n}: {\n employee?: Employee\n t: TFunction\n locale?: string\n}) => {\n if (!employee?.jobs) {\n return null\n }\n\n const primaryJob = employee.jobs.find(job => job.primary) || employee.jobs[0]\n if (!primaryJob?.compensations) {\n return null\n }\n\n const jobCompensation = primaryJob.compensations[0]\n if (!jobCompensation) {\n return null\n }\n if (!jobCompensation.rate || parseFloat(jobCompensation.rate) === 0) {\n return null\n }\n\n const rate = parseFloat(jobCompensation.rate)\n const paymentUnit = jobCompensation.paymentUnit || 'Hour'\n\n return formatPayRate({ rate, paymentUnit, t, locale })\n}\n\nexport const useFormatEmployeePayRate = () => {\n const { t } = useTranslation('common')\n const { locale } = useLocale()\n\n return useCallback(\n (employee?: Employee) => {\n return formatEmployeePayRate({ employee, t, locale })\n },\n [t, locale],\n )\n}\n\nexport const getEmployeePayRateInfo = (employee: Employee | undefined) => {\n if (!employee?.jobs) {\n return null\n }\n\n const primaryJob = employee.jobs.find(job => job.primary) || employee.jobs[0]\n if (!primaryJob?.compensations) {\n return null\n }\n\n const jobCompensation = primaryJob.compensations[0]\n if (!jobCompensation) {\n return null\n }\n if (!jobCompensation.rate || parseFloat(jobCompensation.rate) === 0) {\n return null\n }\n\n const rate = parseFloat(jobCompensation.rate)\n const paymentUnit = jobCompensation.paymentUnit || 'Hour'\n\n return { rate, paymentUnit }\n}\n\nexport const getRegularHours = (compensation: EmployeeCompensations) => {\n if (!compensation.hourlyCompensations) return 0\n\n return compensation.hourlyCompensations\n .filter(hourlyCompensation => hourlyCompensation.name?.toLowerCase() === 'regular hours')\n .reduce((sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'), 0)\n}\n\nexport const getTotalPtoHours = (compensation: EmployeeCompensations) => {\n if (!compensation.paidTimeOff) {\n return 0\n }\n return compensation.paidTimeOff.reduce((sum, pto) => sum + parseFloat(pto.hours || '0'), 0)\n}\n\nexport const getAdditionalEarnings = (compensation: EmployeeCompensations) => {\n if (!compensation.fixedCompensations) {\n return 0\n }\n\n return compensation.fixedCompensations\n .filter(fixedCompensation => {\n const name = fixedCompensation.name?.toLowerCase() || ''\n const amount = parseFloat(fixedCompensation.amount || '0')\n return name !== 'reimbursement' && name !== 'minimum wage adjustment' && amount > 0\n })\n .reduce((sum, fixedCompensation) => sum + parseFloat(fixedCompensation.amount || '0'), 0)\n}\n\nexport const getReimbursements = (compensation: EmployeeCompensations) => {\n if (!compensation.fixedCompensations) {\n return 0\n }\n\n const reimbursementComp = compensation.fixedCompensations.find(\n fixedCompensation => fixedCompensation.name?.toLowerCase() === 'reimbursement',\n )\n return reimbursementComp ? parseFloat(reimbursementComp.amount || '0') : 0\n}\n\nexport const formatHoursDisplay = (hours: number): string => {\n const rounded = roundToTwoDecimals(hours)\n\n if (rounded % 1 === 0) {\n return `${rounded}.0`\n }\n\n return rounded.toString()\n}\n\nconst getHoursInPayPeriod = (paySchedule: PayScheduleObject): number => {\n if (!paySchedule.frequency) {\n return 0\n }\n\n return PAY_PERIOD_HOURS_MAPPINGS[paySchedule.frequency] || 0\n}\n\nconst getEffectiveCompensation = (\n compensations: Compensation[],\n effectiveDate: Date,\n): Compensation | null => {\n if (!compensations.length) return null\n\n const sorted = [...compensations].sort(\n (a, b) =>\n (a.effectiveDate ? new Date(a.effectiveDate).getTime() : 0) -\n (b.effectiveDate ? new Date(b.effectiveDate).getTime() : 0),\n )\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const currentDateString = sorted[i]?.effectiveDate\n const currentDate = currentDateString ? new Date(currentDateString) : null\n if (currentDate && currentDate <= effectiveDate) {\n return sorted[i] || null\n }\n }\n\n return sorted[0] || null\n}\n\nconst getEffectiveMinimumWage = (\n minimumWages: MinimumWages[],\n effectiveDate: Date,\n): MinimumWages | null => {\n if (!minimumWages.length) return null\n\n const sorted = [...minimumWages].sort(\n (a, b) =>\n (a.effectiveDate ? new Date(a.effectiveDate).getTime() : 0) -\n (b.effectiveDate ? new Date(b.effectiveDate).getTime() : 0),\n )\n\n for (let i = sorted.length - 1; i >= 0; i--) {\n const currentDateString = sorted[i]?.effectiveDate\n const currentDate = currentDateString ? new Date(currentDateString) : null\n if (currentDate && currentDate <= effectiveDate) {\n return sorted[i] || null\n }\n }\n\n return sorted[0] || null\n}\n\nconst isSalaried = (compensation: Compensation): boolean => {\n return compensation.flsaStatus === 'Exempt' || compensation.flsaStatus === 'Salaried Nonexempt'\n}\n\nconst getTotalTipCompensations = (fixedCompensations: PayrollShowFixedCompensations[]): number => {\n if (!fixedCompensations.length) return 0\n\n return fixedCompensations\n .filter(fixedCompensation => {\n const name = fixedCompensation.name?.toLowerCase()\n const amount = parseFloat(fixedCompensation.amount || '0')\n return (name === 'paycheck tips' || name === 'cash tips') && amount > 0\n })\n .reduce((sum, fixedCompensation) => sum + parseFloat(fixedCompensation.amount || '0'), 0)\n}\n\nconst calculateHourlyRate = (compensation: Compensation): number => {\n const rate = parseFloat(compensation.rate || '0')\n const paymentUnit = compensation.paymentUnit || 'Hour'\n\n switch (paymentUnit) {\n case 'Hour':\n return rate\n case 'Year':\n return rate / 2080 // 52 weeks * 40 hours\n case 'Month':\n return rate / 173.333333\n case 'Week':\n return rate / 40\n case 'Paycheck':\n return 0 // Paycheck rate is 0 for hourly calculation\n default:\n return rate\n }\n}\n\nconst getHourlyRateForJob = (employee: Employee, jobUuid: string, effectiveDate: Date): number => {\n const job = employee.jobs?.find(j => j.uuid === jobUuid)\n if (!job?.compensations) {\n return 0\n }\n\n const compensation = getEffectiveCompensation(job.compensations, effectiveDate)\n return compensation ? calculateHourlyRate(compensation) : 0\n}\n\nconst getPrimaryHourlyRate = (employee: Employee, effectiveDate: Date): number => {\n const primaryJob = employee.jobs?.find(job => job.primary) || employee.jobs?.[0]\n if (!primaryJob?.compensations) {\n return 0\n }\n\n const compensation = getEffectiveCompensation(primaryJob.compensations, effectiveDate)\n return compensation ? calculateHourlyRate(compensation) : 0\n}\n\nconst getTotalOutstandingPtoHours = (compensation: EmployeeCompensations): number => {\n if (!compensation.paidTimeOff) {\n return 0\n }\n\n return compensation.paidTimeOff.reduce(\n (sum, paidTimeOff) => sum + parseFloat(paidTimeOff.finalPayoutUnusedHoursInput || '0'),\n 0,\n )\n}\n\nconst getPtoHours = (\n compensation: EmployeeCompensations,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n offCycle: boolean,\n): number => {\n const regularPtoHours = getTotalPtoHours(compensation)\n\n if (offCycle) {\n const outstandingPtoHours = getTotalOutstandingPtoHours(compensation)\n return regularPtoHours + outstandingPtoHours\n }\n\n if (isSalariedWithExpectedHours) {\n return Math.min(hoursInPayPeriod, regularPtoHours)\n }\n\n return regularPtoHours\n}\n\nconst calculateMinimumWageAdjustment = (\n primaryCompensation: Compensation,\n compensation: EmployeeCompensations,\n effectiveDate: Date,\n): number => {\n if (!primaryCompensation.adjustForMinimumWage) return 0\n\n const effectiveMinWage = getEffectiveMinimumWage(\n primaryCompensation.minimumWages || [],\n effectiveDate,\n )\n if (!effectiveMinWage) {\n return 0\n }\n\n const totalHours =\n compensation.hourlyCompensations?.reduce(\n (sum, hourlyCompensation) => sum + parseFloat(hourlyCompensation.hours || '0'),\n 0,\n ) || 0\n\n const hourlyRate = calculateHourlyRate(primaryCompensation)\n\n const totalTipCredit = (parseFloat(effectiveMinWage.wage || '0') - hourlyRate) * totalHours\n const totalTips = getTotalTipCompensations(compensation.fixedCompensations || [])\n\n return Math.max(0, totalTipCredit - totalTips)\n}\n\nconst calculateRegularPlusOvertimePay = (\n compensation: EmployeeCompensations,\n employee: Employee,\n effectiveDate: Date,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n ptoHours: number,\n isOffCycle: boolean,\n): number => {\n if (!isOffCycle && isSalariedWithExpectedHours) {\n const primaryHourlyRate = getPrimaryHourlyRate(employee, effectiveDate)\n return primaryHourlyRate * (hoursInPayPeriod - ptoHours)\n }\n\n if (!compensation.hourlyCompensations || !employee.jobs) {\n return 0\n }\n\n const regularRatePay = compensation.hourlyCompensations.reduce((sum, hc) => {\n const hours = parseFloat(hc.hours || '0')\n const hourlyRate = getHourlyRateForJob(employee, hc.jobUuid || '', effectiveDate)\n return sum + hours * hourlyRate\n }, 0)\n\n const totalHours = compensation.hourlyCompensations.reduce((sum, hc) => {\n return sum + parseFloat(hc.hours || '0')\n }, 0)\n\n if (totalHours === 0) return regularRatePay\n\n const overtimeWeightedRate = roundToSixDecimals(regularRatePay / totalHours)\n\n // Calculate overtime pay for non-regular hours\n const overtimePay = compensation.hourlyCompensations\n .filter(hc => !isRegularHours(hc.name || ''))\n .reduce((sum, hc) => {\n const hours = parseFloat(hc.hours || '0')\n const multiplier = hc.compensationMultiplier || 1\n return sum + hours * overtimeWeightedRate * (multiplier - 1)\n }, 0)\n\n return regularRatePay + overtimePay\n}\n\nconst calculatePtoPay = (\n compensation: EmployeeCompensations,\n employee: Employee,\n effectiveDate: Date,\n isSalariedWithExpectedHours: boolean,\n hoursInPayPeriod: number,\n offCycle: boolean,\n): number => {\n const ptoHours = getPtoHours(\n compensation,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n offCycle,\n )\n const primaryHourlyRate = getPrimaryHourlyRate(employee, effectiveDate)\n return ptoHours * primaryHourlyRate\n}\n\nconst isSalariedWithPayPeriodExpectedHours = (\n compensation: EmployeeCompensations,\n isSalaried: boolean,\n hoursInPayPeriod: number,\n): boolean => {\n if (!isSalaried) return false\n\n const regularHourlyCompensation = compensation.hourlyCompensations?.find(hourlyCompensation =>\n isRegularHours(hourlyCompensation.name || ''),\n )\n\n if (!regularHourlyCompensation) return false\n\n const regularHours = parseFloat(regularHourlyCompensation.hours || '0')\n return regularHours === hoursInPayPeriod\n}\n\nexport const calculateGrossPay = (\n compensation: EmployeeCompensations,\n employee: Employee,\n compensationEffectiveDateString?: string,\n paySchedule?: PayScheduleObject,\n isOffCycle: boolean = false,\n): number => {\n if (compensation.excluded) {\n return 0\n }\n\n const compensationEffectiveDate = compensationEffectiveDateString\n ? new Date(compensationEffectiveDateString)\n : new Date()\n\n const primaryJob = employee.jobs?.find(job => job.primary) || employee.jobs?.[0]\n if (!primaryJob?.compensations) {\n return 0\n }\n\n const primaryCompensation = getEffectiveCompensation(\n primaryJob.compensations,\n compensationEffectiveDate,\n )\n\n if (!primaryCompensation) {\n return 0\n }\n\n const salaried = isSalaried(primaryCompensation)\n const hoursInPayPeriod = paySchedule ? getHoursInPayPeriod(paySchedule) : 0\n\n const isSalariedWithExpectedHours = isSalariedWithPayPeriodExpectedHours(\n compensation,\n salaried,\n hoursInPayPeriod,\n )\n\n const ptoHours = getPtoHours(\n compensation,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n isOffCycle,\n )\n\n const regularPlusOvertimePay = calculateRegularPlusOvertimePay(\n compensation,\n employee,\n compensationEffectiveDate,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n ptoHours,\n isOffCycle,\n )\n\n const fixedPay = getAdditionalEarnings(compensation)\n const ptoPay = calculatePtoPay(\n compensation,\n employee,\n compensationEffectiveDate,\n isSalariedWithExpectedHours,\n hoursInPayPeriod,\n isOffCycle,\n )\n const minimumWageAdjustment = calculateMinimumWageAdjustment(\n primaryCompensation,\n compensation,\n compensationEffectiveDate,\n )\n\n const total = regularPlusOvertimePay + fixedPay + ptoPay + minimumWageAdjustment\n return roundToTwoDecimals(total)\n}\n"],"names":["REGULAR_HOURS_NAME","roundToSixDecimals","value","roundToTwoDecimals","isRegularHours","compensationName","PAY_PERIOD_HOURS_MAPPINGS","formatEmployeePayRate","employee","t","locale","primaryJob","job","jobCompensation","rate","paymentUnit","formatPayRate","useFormatEmployeePayRate","useTranslation","useLocale","useCallback","getRegularHours","compensation","hourlyCompensation","sum","getTotalPtoHours","pto","getAdditionalEarnings","fixedCompensation","name","amount","getReimbursements","reimbursementComp","formatHoursDisplay","hours","rounded","getHoursInPayPeriod","paySchedule","getEffectiveCompensation","compensations","effectiveDate","sorted","a","b","i","currentDateString","currentDate","getEffectiveMinimumWage","minimumWages","isSalaried","getTotalTipCompensations","fixedCompensations","calculateHourlyRate","getHourlyRateForJob","jobUuid","j","getPrimaryHourlyRate","getTotalOutstandingPtoHours","paidTimeOff","getPtoHours","isSalariedWithExpectedHours","hoursInPayPeriod","offCycle","regularPtoHours","outstandingPtoHours","calculateMinimumWageAdjustment","primaryCompensation","effectiveMinWage","totalHours","hourlyRate","totalTipCredit","totalTips","calculateRegularPlusOvertimePay","ptoHours","isOffCycle","regularRatePay","hc","overtimeWeightedRate","overtimePay","multiplier","calculatePtoPay","primaryHourlyRate","isSalariedWithPayPeriodExpectedHours","regularHourlyCompensation","calculateGrossPay","compensationEffectiveDateString","compensationEffectiveDate","salaried","regularPlusOvertimePay","fixedPay","ptoPay","minimumWageAdjustment","total"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { jsx as c } from "react/jsx-runtime";
2
- import { QueryClient as p, QueryClientProvider as E } from "@tanstack/react-query";
3
- import { GustoEmbeddedProvider as H } from "@gusto/embedded-api/react-query/_context";
4
- import { GustoEmbeddedCore as b } from "@gusto/embedded-api/core";
5
- import { SDKHooks as R } from "@gusto/embedded-api/hooks/hooks";
2
+ import { QueryClient as p, QueryClientProvider as E } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@tanstack/react-query/build/modern/index.js";
3
+ import { GustoEmbeddedProvider as H } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/react-query/_context.js";
4
+ import { GustoEmbeddedCore as b } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/core.js";
5
+ import { SDKHooks as R } from "/home/runner/work/embedded-react-sdk/embedded-react-sdk/node_modules/@gusto/embedded-api/esm/hooks/hooks.js";
6
6
  import { useMemo as a } from "react";
7
7
  function Q({ url: i, headers: s, hooks: e, children: u }) {
8
8
  const d = a(() => {
@@ -6,10 +6,13 @@ import { ComponentsProvider as P } from "../ComponentAdapter/ComponentsProvider.
6
6
  import { ApiProvider as I } from "../ApiProvider/ApiProvider.js";
7
7
  import { LoadingIndicatorProvider as x } from "../LoadingIndicatorProvider/LoadingIndicatorProvider.js";
8
8
  import { SDKI18next as t } from "./SDKI18next.js";
9
+ import "classnames";
10
+ import "../../shared/constants.js";
9
11
  import { InternalError as y } from "../../components/Common/InternalError/InternalError.js";
10
12
  import { LocaleProvider as C } from "../LocaleProvider/LocaleProvider.js";
13
+ import "../LocaleProvider/useLocale.js";
11
14
  import { ThemeProvider as L } from "../ThemeProvider/ThemeProvider.js";
12
- const G = (a) => {
15
+ const T = (a) => {
13
16
  const {
14
17
  children: d,
15
18
  config: e,
@@ -17,8 +20,8 @@ const G = (a) => {
17
20
  lng: n = "en",
18
21
  locale: c = "en-US",
19
22
  currency: l = "USD",
20
- theme: s,
21
- components: p,
23
+ theme: p,
24
+ components: s,
22
25
  LoaderComponent: f
23
26
  } = a;
24
27
  if (o)
@@ -35,9 +38,9 @@ const G = (a) => {
35
38
  }
36
39
  return g(() => {
37
40
  (async () => await t.changeLanguage(n))();
38
- }, [n]), /* @__PURE__ */ r(P, { value: p, children: /* @__PURE__ */ r(x, { value: f, children: /* @__PURE__ */ r(h, { FallbackComponent: y, children: /* @__PURE__ */ r(L, { theme: s, children: /* @__PURE__ */ r(C, { locale: c, currency: l, children: /* @__PURE__ */ r(v, { i18n: t, children: /* @__PURE__ */ r(I, { url: e.baseUrl, headers: e.headers, hooks: e.hooks, children: d }) }, n) }) }) }) }) });
41
+ }, [n]), /* @__PURE__ */ r(P, { value: s, children: /* @__PURE__ */ r(x, { value: f, children: /* @__PURE__ */ r(h, { FallbackComponent: y, children: /* @__PURE__ */ r(L, { theme: p, children: /* @__PURE__ */ r(C, { locale: c, currency: l, children: /* @__PURE__ */ r(v, { i18n: t, children: /* @__PURE__ */ r(I, { url: e.baseUrl, headers: e.headers, hooks: e.hooks, children: d }) }, n) }) }) }) }) });
39
42
  };
40
43
  export {
41
- G as GustoProviderCustomUIAdapter
44
+ T as GustoProviderCustomUIAdapter
42
45
  };
43
46
  //# sourceMappingURL=GustoProviderCustomUIAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport type { LoadingIndicatorContextProps } from '../LoadingIndicatorProvider/useLoadingIndicator'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GustoSDKTheme } from '@/contexts/ThemeProvider/theme'\nimport type { ResourceDictionary, SupportedLanguages } from '@/types/Helpers'\nimport type { SDKHooks } from '@/types/hooks'\n\nexport interface APIConfig {\n baseUrl: string\n headers?: HeadersInit\n hooks?: SDKHooks\n}\n\nexport interface GustoProviderProps {\n config: APIConfig\n dictionary?: ResourceDictionary\n lng?: string\n locale?: string\n currency?: string\n theme?: GustoSDKTheme\n queryClient?: QueryClient\n components: ComponentsContextType\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n}\n\nexport interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {\n children?: React.ReactNode\n}\n\n/**\n * A provider that accepts UI component adapters through the components prop\n */\nconst GustoProviderCustomUIAdapter: React.FC<GustoProviderCustomUIAdapterProps> = props => {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n components,\n LoaderComponent,\n } = props\n\n // Handle dictionary resources\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n // Adding resources overrides to i18next instance - initial load will override common namespace and add component specific dictionaries provided by partners\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n // Handle language change\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n return (\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ErrorBoundary FallbackComponent={InternalError}>\n <ThemeProvider theme={theme}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider url={config.baseUrl} headers={config.headers} hooks={config.hooks}>\n {children}\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n )\n}\n\nexport { GustoProviderCustomUIAdapter }\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","components","LoaderComponent","language","lang","ns","SDKI18next","useEffect","ComponentsProvider","jsx","LoadingIndicatorProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider"],"mappings":";;;;;;;;;;;AA2CA,MAAMA,IAA4E,CAAAC,MAAS;AACzF,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,EAAA,IACET;AAGJ,MAAIG;AACF,eAAWO,KAAYP,GAAY;AACjC,YAAMQ,IAAOD;AACb,iBAAWE,KAAMT,EAAWQ,CAAI;AAE9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCT,EAAWQ,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAIF,SAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeT,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC,qBAGLW,GAAA,EAAmB,OAAOP,GACzB,UAAA,gBAAAQ,EAACC,GAAA,EAAyB,OAAOR,GAC/B,UAAA,gBAAAO,EAACE,GAAA,EAAc,mBAAmBC,GAChC,UAAA,gBAAAH,EAACI,GAAA,EAAc,OAAAb,GACb,UAAA,gBAAAS,EAACK,GAAA,EAAe,QAAAhB,GAAgB,UAAAC,GAC9B,UAAA,gBAAAU,EAACM,GAAA,EAAgB,MAAMT,GACrB,UAAA,gBAAAG,EAACO,GAAA,EAAY,KAAKrB,EAAO,SAAS,SAASA,EAAO,SAAS,OAAOA,EAAO,OACtE,UAAAD,GACH,EAAA,GAHsCG,CAIxC,GACF,EAAA,CACF,GACF,GACF,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport type { LoadingIndicatorContextProps } from '../LoadingIndicatorProvider/useLoadingIndicator'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GustoSDKTheme } from '@/contexts/ThemeProvider/theme'\nimport type { ResourceDictionary, SupportedLanguages } from '@/types/Helpers'\nimport type { SDKHooks } from '@/types/hooks'\n\nexport interface APIConfig {\n baseUrl: string\n headers?: HeadersInit\n hooks?: SDKHooks\n}\n\nexport interface GustoProviderProps {\n config: APIConfig\n dictionary?: ResourceDictionary\n lng?: string\n locale?: string\n currency?: string\n theme?: GustoSDKTheme\n queryClient?: QueryClient\n components: ComponentsContextType\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n}\n\nexport interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {\n children?: React.ReactNode\n}\n\n/**\n * A provider that accepts UI component adapters through the components prop\n */\nconst GustoProviderCustomUIAdapter: React.FC<GustoProviderCustomUIAdapterProps> = props => {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n components,\n LoaderComponent,\n } = props\n\n // Handle dictionary resources\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n // Adding resources overrides to i18next instance - initial load will override common namespace and add component specific dictionaries provided by partners\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n // Handle language change\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n return (\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ErrorBoundary FallbackComponent={InternalError}>\n <ThemeProvider theme={theme}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider url={config.baseUrl} headers={config.headers} hooks={config.hooks}>\n {children}\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n )\n}\n\nexport { GustoProviderCustomUIAdapter }\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","components","LoaderComponent","language","lang","ns","SDKI18next","useEffect","ComponentsProvider","jsx","LoadingIndicatorProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider"],"mappings":";;;;;;;;;;;;;;AA2CA,MAAMA,IAA4E,CAAAC,MAAS;AACzF,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,EAAA,IACET;AAGJ,MAAIG;AACF,eAAWO,KAAYP,GAAY;AACjC,YAAMQ,IAAOD;AACb,iBAAWE,KAAMT,EAAWQ,CAAI;AAE9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCT,EAAWQ,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAIF,SAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeT,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC,qBAGLW,GAAA,EAAmB,OAAOP,GACzB,UAAA,gBAAAQ,EAACC,GAAA,EAAyB,OAAOR,GAC/B,UAAA,gBAAAO,EAACE,GAAA,EAAc,mBAAmBC,GAChC,UAAA,gBAAAH,EAACI,GAAA,EAAc,OAAAb,GACb,UAAA,gBAAAS,EAACK,GAAA,EAAe,QAAAhB,GAAgB,UAAAC,GAC9B,UAAA,gBAAAU,EAACM,GAAA,EAAgB,MAAMT,GACrB,UAAA,gBAAAG,EAACO,GAAA,EAAY,KAAKrB,EAAO,SAAS,SAASA,EAAO,SAAS,OAAOA,EAAO,OACtE,UAAAD,GACH,EAAA,GAHsCG,CAIxC,GACF,EAAA,CACF,GACF,GACF,EAAA,CACF;AAEJ;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as s } from "react/jsx-runtime";
2
- import { useRef as c, useEffect as u } from "react";
3
- import { useTranslation as a } from "react-i18next";
2
+ import { useRef as c, useEffect as a } from "react";
3
+ import { useTranslation as i } from "react-i18next";
4
4
  import { ThemeContext as d } from "./useTheme.js";
5
5
  import { mergePartnerTheme as l } from "./theme.js";
6
6
  /* empty css */
@@ -8,13 +8,13 @@ const D = ({
8
8
  theme: n = {},
9
9
  children: t
10
10
  }) => {
11
- const e = c(null), { t: r } = a(), o = c(null);
12
- return u(() => {
13
- const i = l(n);
11
+ const e = c(null), { t: r } = i(), o = c(null);
12
+ return a(() => {
13
+ const u = l(n);
14
14
  e.current && e.current.remove(), e.current = document.createElement("style"), e.current.setAttribute("data-testid", "GSDK"), e.current.appendChild(
15
15
  document.createTextNode(
16
16
  `.GSDK{
17
- ${m(i).join(`
17
+ ${m(u).join(`
18
18
  `)}
19
19
  }`
20
20
  )
@@ -24,7 +24,7 @@ ${m(i).join(`
24
24
  }, m = (n, t) => {
25
25
  const e = [];
26
26
  for (const [r, o] of Object.entries(n))
27
- typeof o == "object" ? e.push(...m(o, t ? t + "-" + r : r)) : e.push(`--g-${t ? t + "-" + r : r}: ${String(o)};`);
27
+ typeof o == "object" ? e.push(...m(o, t ? t + "-" + r : r)) : e.push(`--g-${t ? t + "-" + r : r}: ${o};`);
28
28
  return e;
29
29
  };
30
30
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sources":["../../../src/contexts/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import type React from 'react'\nimport { useEffect, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ThemeContext } from './useTheme'\nimport { mergePartnerTheme, type GustoSDKTheme } from './theme'\nimport '@/styles/sdk.scss'\n\nexport interface ThemeProviderProps {\n theme?: GustoSDKTheme\n children?: React.ReactNode\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme: partnerThemeOverrides = {},\n children,\n}) => {\n const GThemeVariables = useRef<HTMLStyleElement | null>(null)\n const { t } = useTranslation()\n const containerRef = useRef<HTMLElement>(null)\n\n useEffect(() => {\n const gustoSDKThemeWithOverrides = mergePartnerTheme(partnerThemeOverrides)\n\n if (GThemeVariables.current) {\n GThemeVariables.current.remove()\n }\n GThemeVariables.current = document.createElement('style')\n GThemeVariables.current.setAttribute('data-testid', 'GSDK')\n GThemeVariables.current.appendChild(\n document.createTextNode(\n `.GSDK{\\n${parseThemeToCSS(gustoSDKThemeWithOverrides).join('\\n')}\\n}`,\n ),\n )\n document.head.appendChild(GThemeVariables.current)\n }, [partnerThemeOverrides, t])\n\n return (\n // @ts-expect-error HACK fix mismatch where containerRef allows null\n <ThemeContext.Provider value={{ container: containerRef }}>\n <article className=\"GSDK\" data-testid=\"GSDK\" ref={containerRef}>\n {children}\n </article>\n </ThemeContext.Provider>\n )\n}\n\n/**\n * Recursive flattening of the theme object into css variable format\n */\nconst parseThemeToCSS = (theme: GustoSDKTheme, prefix?: string): string[] => {\n const cssProps: string[] = []\n for (const [key, value] of Object.entries(theme)) {\n if (typeof value === 'object') {\n cssProps.push(...parseThemeToCSS(value, prefix ? prefix + '-' + key : key))\n } else {\n cssProps.push(`--g-${prefix ? prefix + '-' + key : key}: ${String(value)};`)\n }\n }\n return cssProps\n}\n"],"names":["ThemeProvider","partnerThemeOverrides","children","GThemeVariables","useRef","t","useTranslation","containerRef","useEffect","gustoSDKThemeWithOverrides","mergePartnerTheme","parseThemeToCSS","ThemeContext","jsx","theme","prefix","cssProps","key","value"],"mappings":";;;;;;AAYO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,OAAOC,IAAwB,CAAA;AAAA,EAC/B,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAkBC,EAAgC,IAAI,GACtD,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAeH,EAAoB,IAAI;AAE7C,SAAAI,EAAU,MAAM;AACd,UAAMC,IAA6BC,EAAkBT,CAAqB;AAE1E,IAAIE,EAAgB,WAClBA,EAAgB,QAAQ,OAAA,GAE1BA,EAAgB,UAAU,SAAS,cAAc,OAAO,GACxDA,EAAgB,QAAQ,aAAa,eAAe,MAAM,GAC1DA,EAAgB,QAAQ;AAAA,MACtB,SAAS;AAAA,QACP;AAAA,EAAWQ,EAAgBF,CAA0B,EAAE,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA,MAAA;AAAA,IACnE,GAEF,SAAS,KAAK,YAAYN,EAAgB,OAAO;AAAA,EACnD,GAAG,CAACF,GAAuBI,CAAC,CAAC;AAAA,oBAI1BO,EAAa,UAAb,EAAsB,OAAO,EAAE,WAAWL,EAAA,GACzC,UAAA,gBAAAM,EAAC,WAAA,EAAQ,WAAU,QAAO,eAAY,QAAO,KAAKN,GAC/C,UAAAL,GACH,EAAA,CACF;AAEJ,GAKMS,IAAkB,CAACG,GAAsBC,MAA8B;AAC3E,QAAMC,IAAqB,CAAA;AAC3B,aAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQJ,CAAK;AAC7C,IAAI,OAAOI,KAAU,WACnBF,EAAS,KAAK,GAAGL,EAAgBO,GAAOH,IAASA,IAAS,MAAME,IAAMA,CAAG,CAAC,IAE1ED,EAAS,KAAK,OAAOD,IAASA,IAAS,MAAME,IAAMA,CAAG,KAAK,OAAOC,CAAK,CAAC,GAAG;AAG/E,SAAOF;AACT;"}
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../src/contexts/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import type React from 'react'\nimport { useEffect, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { ThemeContext } from './useTheme'\nimport { mergePartnerTheme, type GustoSDKTheme } from './theme'\nimport '@/styles/sdk.scss'\n\nexport interface ThemeProviderProps {\n theme?: GustoSDKTheme\n children?: React.ReactNode\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme: partnerThemeOverrides = {},\n children,\n}) => {\n const GThemeVariables = useRef<HTMLStyleElement | null>(null)\n const { t } = useTranslation()\n const containerRef = useRef<HTMLElement>(null)\n\n useEffect(() => {\n const gustoSDKThemeWithOverrides = mergePartnerTheme(partnerThemeOverrides)\n\n if (GThemeVariables.current) {\n GThemeVariables.current.remove()\n }\n GThemeVariables.current = document.createElement('style')\n GThemeVariables.current.setAttribute('data-testid', 'GSDK')\n GThemeVariables.current.appendChild(\n document.createTextNode(\n `.GSDK{\\n${parseThemeToCSS(gustoSDKThemeWithOverrides).join('\\n')}\\n}`,\n ),\n )\n document.head.appendChild(GThemeVariables.current)\n }, [partnerThemeOverrides, t])\n\n return (\n // @ts-expect-error HACK fix mismatch where containerRef allows null\n <ThemeContext.Provider value={{ container: containerRef }}>\n <article className=\"GSDK\" data-testid=\"GSDK\" ref={containerRef}>\n {children}\n </article>\n </ThemeContext.Provider>\n )\n}\n\n/**\n * Recursive flattening of the theme object into css variable format\n */\nconst parseThemeToCSS = (theme: GustoSDKTheme, prefix?: string): string[] => {\n const cssProps: string[] = []\n for (const [key, value] of Object.entries(theme)) {\n if (typeof value === 'object') {\n cssProps.push(...parseThemeToCSS(value, prefix ? prefix + '-' + key : key))\n } else {\n cssProps.push(`--g-${prefix ? prefix + '-' + key : key}: ${value};`)\n }\n }\n return cssProps\n}\n"],"names":["ThemeProvider","partnerThemeOverrides","children","GThemeVariables","useRef","t","useTranslation","containerRef","useEffect","gustoSDKThemeWithOverrides","mergePartnerTheme","parseThemeToCSS","ThemeContext","jsx","theme","prefix","cssProps","key","value"],"mappings":";;;;;;AAYO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,OAAOC,IAAwB,CAAA;AAAA,EAC/B,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAkBC,EAAgC,IAAI,GACtD,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAeH,EAAoB,IAAI;AAE7C,SAAAI,EAAU,MAAM;AACd,UAAMC,IAA6BC,EAAkBT,CAAqB;AAE1E,IAAIE,EAAgB,WAClBA,EAAgB,QAAQ,OAAA,GAE1BA,EAAgB,UAAU,SAAS,cAAc,OAAO,GACxDA,EAAgB,QAAQ,aAAa,eAAe,MAAM,GAC1DA,EAAgB,QAAQ;AAAA,MACtB,SAAS;AAAA,QACP;AAAA,EAAWQ,EAAgBF,CAA0B,EAAE,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA,MAAA;AAAA,IACnE,GAEF,SAAS,KAAK,YAAYN,EAAgB,OAAO;AAAA,EACnD,GAAG,CAACF,GAAuBI,CAAC,CAAC;AAAA,oBAI1BO,EAAa,UAAb,EAAsB,OAAO,EAAE,WAAWL,EAAA,GACzC,UAAA,gBAAAM,EAAC,WAAA,EAAQ,WAAU,QAAO,eAAY,QAAO,KAAKN,GAC/C,UAAAL,GACH,EAAA,CACF;AAEJ,GAKMS,IAAkB,CAACG,GAAsBC,MAA8B;AAC3E,QAAMC,IAAqB,CAAA;AAC3B,aAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQJ,CAAK;AAC7C,IAAI,OAAOI,KAAU,WACnBF,EAAS,KAAK,GAAGL,EAAgBO,GAAOH,IAASA,IAAS,MAAME,IAAMA,CAAG,CAAC,IAE1ED,EAAS,KAAK,OAAOD,IAASA,IAAS,MAAME,IAAMA,CAAG,KAAKC,CAAK,GAAG;AAGvE,SAAOF;AACT;"}
@@ -1,5 +1,6 @@
1
1
  import { Location } from '@gusto/embedded-api/models/components/location';
2
2
  import { EmployeeAddress } from '@gusto/embedded-api/models/components/employeeaddress';
3
+ import { TFunction } from 'i18next';
3
4
  export declare const firstLastName: ({ first_name, last_name, }: {
4
5
  first_name?: string | null;
5
6
  last_name?: string | null;
@@ -11,6 +12,14 @@ export declare const currentDateString: () => string;
11
12
  export declare function isNumberKey({ which, keyCode }: KeyboardEvent): boolean;
12
13
  export declare const booleanToString: (value: boolean) => "true" | "false";
13
14
  export declare const amountStr: (amount: string, isPercentage: boolean) => string;
15
+ export declare const formatNumberAsCurrency: (amount: number, locale?: string) => string;
16
+ export declare const formatPayRate: ({ rate, paymentUnit, t, locale, }: {
17
+ rate: number;
18
+ paymentUnit: string;
19
+ t: TFunction;
20
+ locale?: string;
21
+ }) => string;
22
+ export declare const useFormatPayRate: () => (rate: number, paymentUnit: string) => string;
14
23
  export declare function createMarkup(dirty: string): {
15
24
  __html: string;
16
25
  };
@@ -1,22 +1,61 @@
1
- import c from "dompurify";
2
- const o = (t) => t.charAt(0).toLocaleUpperCase() + t.slice(1), u = ({
1
+ import m from "dompurify";
2
+ import "react-i18next";
3
+ import "react";
4
+ import "../contexts/LocaleProvider/useLocale.js";
5
+ const c = (t) => t.charAt(0).toLocaleUpperCase() + t.slice(1), h = ({
3
6
  first_name: t,
4
- last_name: r
5
- }) => `${t ? o(t) : ""}${r ? e(o(r)) : ""}`, e = (t) => t ? ` ${t}` : "", i = (t) => {
6
- const r = e(t.street1), n = e(t.street2);
7
- return `${r},${n}`;
8
- }, s = (t) => `${e(t.city)}, ${e(t.state)} ${e(t.zip)}`, $ = (t) => `${i(t)} ${s(t)}`, a = { ALLOWED_TAGS: ["a", "b", "strong"], ALLOWED_ATTR: ["href", "target"] };
9
- function g(t) {
10
- return t ? { __html: c.sanitize(t, a) } : { __html: "" };
7
+ last_name: e
8
+ }) => `${t ? c(t) : ""}${e ? n(c(e)) : ""}`, n = (t) => t ? ` ${t}` : "", i = (t) => {
9
+ const e = n(t.street1), r = n(t.street2);
10
+ return `${e},${r}`;
11
+ }, u = (t) => `${n(t.city)}, ${n(t.state)} ${n(t.zip)}`, C = (t) => `${i(t)} ${u(t)}`, p = (t, e) => e ? `${t}%` : `$${t}`, s = (t, e = "en-US") => {
12
+ const r = t.toLocaleString(e, {
13
+ minimumFractionDigits: 2,
14
+ maximumFractionDigits: 2
15
+ });
16
+ return p(r, !1);
17
+ }, S = ({
18
+ rate: t,
19
+ paymentUnit: e,
20
+ t: r,
21
+ locale: a = "en-US"
22
+ }) => {
23
+ const o = s(t, a);
24
+ switch (e) {
25
+ case "Hour":
26
+ return r("payRateFormats.hourly", { amount: o, ns: "common" });
27
+ case "Week":
28
+ return r("payRateFormats.weekly", {
29
+ amount: s(t * 52, a),
30
+ ns: "common"
31
+ });
32
+ case "Month":
33
+ return r("payRateFormats.monthly", {
34
+ amount: s(t * 12, a),
35
+ ns: "common"
36
+ });
37
+ case "Year":
38
+ return r("payRateFormats.yearly", { amount: o, ns: "common" });
39
+ case "Paycheck":
40
+ return r("payRateFormats.paycheck", { amount: o, ns: "common" });
41
+ default:
42
+ return o;
43
+ }
44
+ }, y = { ALLOWED_TAGS: ["a", "b", "strong"], ALLOWED_ATTR: ["href", "target"] };
45
+ function D(t) {
46
+ return t ? { __html: m.sanitize(t, y) } : { __html: "" };
11
47
  }
12
- const l = (t) => t.replace(/\D/g, ""), f = (t) => t.replace(/_([a-z])/g, (r, n) => n.toUpperCase());
48
+ const F = (t) => t.replace(/\D/g, ""), L = (t) => t.replace(/_([a-z])/g, (e, r) => r.toUpperCase());
13
49
  export {
14
- $ as addressInline,
15
- g as createMarkup,
16
- u as firstLastName,
17
- s as getCityStateZip,
50
+ C as addressInline,
51
+ p as amountStr,
52
+ D as createMarkup,
53
+ h as firstLastName,
54
+ s as formatNumberAsCurrency,
55
+ S as formatPayRate,
56
+ u as getCityStateZip,
18
57
  i as getStreet,
19
- l as removeNonDigits,
20
- f as snakeCaseToCamelCase
58
+ F as removeNonDigits,
59
+ L as snakeCaseToCamelCase
21
60
  };
22
61
  //# 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'\n\nconst capitalize = (word: string) => word.charAt(0).toLocaleUpperCase() + word.slice(1)\n\nexport const firstLastName = ({\n first_name,\n last_name,\n}: {\n first_name?: string | null\n last_name?: string | null\n}) =>\n `${first_name ? capitalize(first_name) : ''}${last_name ? maybeString(capitalize(last_name)) : ''}`\n\nconst maybeString = (str: string | null | undefined) => {\n return str ? ` ${str}` : ''\n}\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\nexport const getCityStateZip = (address: EmployeeAddress | Location) =>\n `${maybeString(address.city)}, ${maybeString(address.state)} ${maybeString(address.zip)}`\n\nexport const addressInline = (address: EmployeeAddress | Location) =>\n `${getStreet(address)} ${getCityStateZip(address)}`\n\nexport const currentDateString = () => {\n const d = new Date()\n const dateString = `${String(d.getFullYear())}-${('0' + String(d.getMonth() + 1)).slice(-2)}-${('0' + String(d.getDate())).slice(-2)}`\n return dateString\n}\n\nexport function isNumberKey({ which, keyCode }: KeyboardEvent) {\n const charCode = which ? which : keyCode\n if (charCode > 31 && charCode != 46 && (charCode < 48 || charCode > 57)) return false\n return true\n}\n\nexport const booleanToString = (value: boolean) => (value ? 'true' : 'false')\n\nexport const amountStr = (amount: string, isPercentage: boolean) =>\n isPercentage ? `${amount}%` : `$${amount}`\n\nconst dompurifyConfig = { ALLOWED_TAGS: ['a', 'b', 'strong'], ALLOWED_ATTR: ['href', 'target'] }\nexport function createMarkup(dirty: string) {\n if (!dirty) return { __html: '' }\n return { __html: DOMPurify.sanitize(dirty, dompurifyConfig) }\n}\n\nexport const removeNonDigits = (value: string): string => {\n return value.replace(/\\D/g, '')\n}\n\nexport const snakeCaseToCamelCase = (s: string) => {\n return s.replace(/_([a-z])/g, (_: string, char: string) => char.toUpperCase())\n}\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"],"names":["capitalize","word","firstLastName","first_name","last_name","maybeString","str","getStreet","address","street1","street2","getCityStateZip","addressInline","dompurifyConfig","createMarkup","dirty","DOMPurify","removeNonDigits","value","snakeCaseToCamelCase","s","_","char"],"mappings":";AAIA,MAAMA,IAAa,CAACC,MAAiBA,EAAK,OAAO,CAAC,EAAE,sBAAsBA,EAAK,MAAM,CAAC,GAEzEC,IAAgB,CAAC;AAAA,EAC5B,YAAAC;AAAA,EACA,WAAAC;AACF,MAIE,GAAGD,IAAaH,EAAWG,CAAU,IAAI,EAAE,GAAGC,IAAYC,EAAYL,EAAWI,CAAS,CAAC,IAAI,EAAE,IAE7FC,IAAc,CAACC,MACZA,IAAM,IAAIA,CAAG,KAAK,IAGdC,IAAY,CAACC,MAAwC;AAChE,QAAMC,IAAUJ,EAAYG,EAAQ,OAAO,GACrCE,IAAUL,EAAYG,EAAQ,OAAO;AAE3C,SAAO,GAAGC,CAAO,IAAIC,CAAO;AAC9B,GAEaC,IAAkB,CAACH,MAC9B,GAAGH,EAAYG,EAAQ,IAAI,CAAC,KAAKH,EAAYG,EAAQ,KAAK,CAAC,IAAIH,EAAYG,EAAQ,GAAG,CAAC,IAE5EI,IAAgB,CAACJ,MAC5B,GAAGD,EAAUC,CAAO,CAAC,IAAIG,EAAgBH,CAAO,CAAC,IAmB7CK,IAAkB,EAAE,cAAc,CAAC,KAAK,KAAK,QAAQ,GAAG,cAAc,CAAC,QAAQ,QAAQ,EAAA;AACtF,SAASC,EAAaC,GAAe;AAC1C,SAAKA,IACE,EAAE,QAAQC,EAAU,SAASD,GAAOF,CAAe,EAAA,IADvC,EAAE,QAAQ,GAAA;AAE/B;AAEO,MAAMI,IAAkB,CAACC,MACvBA,EAAM,QAAQ,OAAO,EAAE,GAGnBC,IAAuB,CAACC,MAC5BA,EAAE,QAAQ,aAAa,CAACC,GAAWC,MAAiBA,EAAK,aAAa;"}
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\nexport const firstLastName = ({\n first_name,\n last_name,\n}: {\n first_name?: string | null\n last_name?: string | null\n}) =>\n `${first_name ? capitalize(first_name) : ''}${last_name ? maybeString(capitalize(last_name)) : ''}`\n\nconst maybeString = (str: string | null | undefined) => {\n return str ? ` ${str}` : ''\n}\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\nexport const getCityStateZip = (address: EmployeeAddress | Location) =>\n `${maybeString(address.city)}, ${maybeString(address.state)} ${maybeString(address.zip)}`\n\nexport const addressInline = (address: EmployeeAddress | Location) =>\n `${getStreet(address)} ${getCityStateZip(address)}`\n\nexport const currentDateString = () => {\n const d = new Date()\n const dateString = `${String(d.getFullYear())}-${('0' + String(d.getMonth() + 1)).slice(-2)}-${('0' + String(d.getDate())).slice(-2)}`\n return dateString\n}\n\nexport function isNumberKey({ which, keyCode }: KeyboardEvent) {\n const charCode = which ? which : keyCode\n if (charCode > 31 && charCode != 46 && (charCode < 48 || charCode > 57)) return false\n return true\n}\n\nexport const booleanToString = (value: boolean) => (value ? 'true' : 'false')\n\nexport const amountStr = (amount: string, isPercentage: boolean) =>\n isPercentage ? `${amount}%` : `$${amount}`\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\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\nexport const useFormatPayRate = () => {\n const { t } = useTranslation('common')\n const { locale } = useLocale()\n\n return useCallback(\n (rate: number, paymentUnit: string) => {\n return formatPayRate({ rate, paymentUnit, t, locale })\n },\n [t, locale],\n )\n}\n\nconst dompurifyConfig = { ALLOWED_TAGS: ['a', 'b', 'strong'], ALLOWED_ATTR: ['href', 'target'] }\nexport function createMarkup(dirty: string) {\n if (!dirty) return { __html: '' }\n return { __html: DOMPurify.sanitize(dirty, dompurifyConfig) }\n}\n\nexport const removeNonDigits = (value: string): string => {\n return value.replace(/\\D/g, '')\n}\n\nexport const snakeCaseToCamelCase = (s: string) => {\n return s.replace(/_([a-z])/g, (_: string, char: string) => char.toUpperCase())\n}\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"],"names":["capitalize","word","firstLastName","first_name","last_name","maybeString","str","getStreet","address","street1","street2","getCityStateZip","addressInline","amountStr","amount","isPercentage","formatNumberAsCurrency","locale","formattedNumber","formatPayRate","rate","paymentUnit","t","dompurifyConfig","createMarkup","dirty","DOMPurify","removeNonDigits","value","snakeCaseToCamelCase","s","_","char"],"mappings":";;;;AAQA,MAAMA,IAAa,CAACC,MAAiBA,EAAK,OAAO,CAAC,EAAE,sBAAsBA,EAAK,MAAM,CAAC,GAEzEC,IAAgB,CAAC;AAAA,EAC5B,YAAAC;AAAA,EACA,WAAAC;AACF,MAIE,GAAGD,IAAaH,EAAWG,CAAU,IAAI,EAAE,GAAGC,IAAYC,EAAYL,EAAWI,CAAS,CAAC,IAAI,EAAE,IAE7FC,IAAc,CAACC,MACZA,IAAM,IAAIA,CAAG,KAAK,IAGdC,IAAY,CAACC,MAAwC;AAChE,QAAMC,IAAUJ,EAAYG,EAAQ,OAAO,GACrCE,IAAUL,EAAYG,EAAQ,OAAO;AAE3C,SAAO,GAAGC,CAAO,IAAIC,CAAO;AAC9B,GAEaC,IAAkB,CAACH,MAC9B,GAAGH,EAAYG,EAAQ,IAAI,CAAC,KAAKH,EAAYG,EAAQ,KAAK,CAAC,IAAIH,EAAYG,EAAQ,GAAG,CAAC,IAE5EI,IAAgB,CAACJ,MAC5B,GAAGD,EAAUC,CAAO,CAAC,IAAIG,EAAgBH,CAAO,CAAC,IAgBtCK,IAAY,CAACC,GAAgBC,MACxCA,IAAe,GAAGD,CAAM,MAAM,IAAIA,CAAM,IAE7BE,IAAyB,CAACF,GAAgBG,IAAiB,YAAY;AAClF,QAAMC,IAAkBJ,EAAO,eAAeG,GAAQ;AAAA,IACpD,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EAAA,CACxB;AACD,SAAOJ,EAAUK,GAAiB,EAAK;AACzC,GAEaC,IAAgB,CAAC;AAAA,EAC5B,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAAC;AAAA,EACA,QAAAL,IAAS;AACX,MAKM;AACJ,QAAMH,IAASE,EAAuBI,GAAMH,CAAM;AAElD,UAAQI,GAAA;AAAA,IACN,KAAK;AACH,aAAOC,EAAE,yBAAyB,EAAE,QAAAR,GAAQ,IAAI,UAAU;AAAA,IAC5D,KAAK;AACH,aAAOQ,EAAE,yBAAyB;AAAA,QAChC,QAAQN,EAAuBI,IAAO,IAAIH,CAAM;AAAA,QAChD,IAAI;AAAA,MAAA,CACL;AAAA,IACH,KAAK;AACH,aAAOK,EAAE,0BAA0B;AAAA,QACjC,QAAQN,EAAuBI,IAAO,IAAIH,CAAM;AAAA,QAChD,IAAI;AAAA,MAAA,CACL;AAAA,IACH,KAAK;AACH,aAAOK,EAAE,yBAAyB,EAAE,QAAAR,GAAQ,IAAI,UAAU;AAAA,IAC5D,KAAK;AACH,aAAOQ,EAAE,2BAA2B,EAAE,QAAAR,GAAQ,IAAI,UAAU;AAAA,IAC9D;AACE,aAAOA;AAAA,EAAA;AAEb,GAcMS,IAAkB,EAAE,cAAc,CAAC,KAAK,KAAK,QAAQ,GAAG,cAAc,CAAC,QAAQ,QAAQ,EAAA;AACtF,SAASC,EAAaC,GAAe;AAC1C,SAAKA,IACE,EAAE,QAAQC,EAAU,SAASD,GAAOF,CAAe,EAAA,IADvC,EAAE,QAAQ,GAAA;AAE/B;AAEO,MAAMI,IAAkB,CAACC,MACvBA,EAAM,QAAQ,OAAO,EAAE,GAGnBC,IAAuB,CAACC,MAC5BA,EAAE,QAAQ,aAAa,CAACC,GAAWC,MAAiBA,EAAK,aAAa;"}