@gusto/embedded-react-sdk 0.37.0-rc.1 → 0.37.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 (240) hide show
  1. package/CHANGELOG.md +44 -8
  2. package/README.md +6 -0
  3. package/dist/UNSTABLE_Hooks.d.ts +1 -1
  4. package/dist/UNSTABLE_Hooks.js +50 -6
  5. package/dist/UNSTABLE_Hooks.js.map +1 -1
  6. package/dist/components/Base/Base.d.ts +2 -1
  7. package/dist/components/Base/Base.js +78 -77
  8. package/dist/components/Base/Base.js.map +1 -1
  9. package/dist/components/Common/Fields/CheckboxField/CheckboxField.d.ts +2 -0
  10. package/dist/components/Common/Fields/CheckboxField/CheckboxField.js +17 -16
  11. package/dist/components/Common/Fields/CheckboxField/CheckboxField.js.map +1 -1
  12. package/dist/components/Common/Fields/DatePickerField/DatePickerField.d.ts +5 -3
  13. package/dist/components/Common/Fields/DatePickerField/DatePickerField.js +46 -36
  14. package/dist/components/Common/Fields/DatePickerField/DatePickerField.js.map +1 -1
  15. package/dist/components/Common/Fields/NumberInputField/NumberInputField.d.ts +2 -0
  16. package/dist/components/Common/Fields/NumberInputField/NumberInputField.js +21 -20
  17. package/dist/components/Common/Fields/NumberInputField/NumberInputField.js.map +1 -1
  18. package/dist/components/Common/Fields/RadioGroupField/RadioGroupField.d.ts +3 -1
  19. package/dist/components/Common/Fields/RadioGroupField/RadioGroupField.js +20 -19
  20. package/dist/components/Common/Fields/RadioGroupField/RadioGroupField.js.map +1 -1
  21. package/dist/components/Common/Fields/SelectField/SelectField.d.ts +3 -1
  22. package/dist/components/Common/Fields/SelectField/SelectField.js +19 -18
  23. package/dist/components/Common/Fields/SelectField/SelectField.js.map +1 -1
  24. package/dist/components/Common/Fields/SwitchField/SwitchField.d.ts +2 -0
  25. package/dist/components/Common/Fields/SwitchField/SwitchField.js +19 -18
  26. package/dist/components/Common/Fields/SwitchField/SwitchField.js.map +1 -1
  27. package/dist/components/Common/Fields/TextInputField/TextInputField.d.ts +2 -0
  28. package/dist/components/Common/Fields/TextInputField/TextInputField.js +10 -9
  29. package/dist/components/Common/Fields/TextInputField/TextInputField.js.map +1 -1
  30. package/dist/components/Common/SignatureForm/SignatureFormActions.js +1 -1
  31. package/dist/components/Common/SignatureForm/SignatureFormFields.js +1 -1
  32. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +5 -6
  33. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js.map +1 -1
  34. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +9 -6
  35. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  36. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +4 -5
  37. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js.map +1 -1
  38. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +9 -6
  39. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  40. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +11 -8
  41. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  42. package/dist/components/Company/BankAccount/BankAccountForm/context.js +9 -6
  43. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  44. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +9 -6
  45. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  46. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +9 -6
  47. package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  48. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +15 -12
  49. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  50. package/dist/components/Company/Industry/Context.js +12 -9
  51. package/dist/components/Company/Industry/Context.js.map +1 -1
  52. package/dist/components/Company/Locations/LocationForm/Form.js +4 -5
  53. package/dist/components/Company/Locations/LocationForm/Form.js.map +1 -1
  54. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +9 -6
  55. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  56. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +9 -6
  57. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  58. package/dist/components/Company/OnboardingOverview/context.js +9 -6
  59. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  60. package/dist/components/Company/PaySchedule/_parts/Edit.js +9 -10
  61. package/dist/components/Company/PaySchedule/_parts/Edit.js.map +1 -1
  62. package/dist/components/Company/PaySchedule/usePaySchedule.js +11 -8
  63. package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
  64. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +9 -6
  65. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  66. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +9 -6
  67. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  68. package/dist/components/Contractor/Address/Form.js +6 -7
  69. package/dist/components/Contractor/Address/Form.js.map +1 -1
  70. package/dist/components/Contractor/Address/useAddress.js +11 -8
  71. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  72. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js +2 -3
  73. package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js.map +1 -1
  74. package/dist/components/Contractor/Profile/useContractorProfile.js +21 -16
  75. package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
  76. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +14 -11
  77. package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
  78. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +13 -10
  79. package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
  80. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js +6 -3
  81. package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js.map +1 -1
  82. package/dist/components/Employee/Deductions/IncludeDeductions/IncludeDeductions.js +2 -3
  83. package/dist/components/Employee/Deductions/IncludeDeductions/IncludeDeductions.js.map +1 -1
  84. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +9 -6
  85. package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  86. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +9 -6
  87. package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
  88. package/dist/components/Employee/EmployeeList/useEmployeeList.js +9 -6
  89. package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
  90. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +9 -6
  91. package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
  92. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +11 -8
  93. package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
  94. package/dist/components/Employee/Profile/HomeAddress.d.ts +3 -3
  95. package/dist/components/Employee/Profile/HomeAddress.js +44 -43
  96. package/dist/components/Employee/Profile/HomeAddress.js.map +1 -1
  97. package/dist/components/Employee/Profile/PersonalDetailsInputs.js +14 -15
  98. package/dist/components/Employee/Profile/PersonalDetailsInputs.js.map +1 -1
  99. package/dist/components/Employee/Profile/useProfile.js +9 -6
  100. package/dist/components/Employee/Profile/useProfile.js.map +1 -1
  101. package/dist/components/Employee/StateTaxes/useStateTaxes.js +9 -6
  102. package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
  103. package/dist/components/Employee/Taxes/useTaxes.js +9 -6
  104. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  105. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +16 -13
  106. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  107. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +2 -3
  108. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  109. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +185 -177
  110. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  111. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +2 -3
  112. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  113. package/dist/components/Payroll/usePreparedPayrollData.js +7 -5
  114. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  115. package/dist/components/UNSTABLE_Hooks/collectErrors.d.ts +6 -0
  116. package/dist/components/UNSTABLE_Hooks/collectErrors.js +9 -0
  117. package/dist/components/UNSTABLE_Hooks/collectErrors.js.map +1 -0
  118. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.d.ts +1 -1
  119. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.js +3 -3
  120. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataContext.js.map +1 -1
  121. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.d.ts +2 -2
  122. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.js +13 -0
  123. package/dist/components/UNSTABLE_Hooks/form/FormFieldsMetadataProvider.js.map +1 -0
  124. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.d.ts +11 -6
  125. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.js +24 -0
  126. package/dist/components/UNSTABLE_Hooks/form/SDKFormProvider.js.map +1 -0
  127. package/dist/components/UNSTABLE_Hooks/form/composeFormSchema.d.ts +26 -0
  128. package/dist/components/UNSTABLE_Hooks/form/composeFormSchema.js +24 -0
  129. package/dist/components/UNSTABLE_Hooks/form/composeFormSchema.js.map +1 -0
  130. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.d.ts +53 -0
  131. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.js +34 -0
  132. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.js.map +1 -0
  133. package/dist/components/UNSTABLE_Hooks/form/composeSubmitHandler.test.d.ts +1 -0
  134. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.js +14 -0
  135. package/dist/components/UNSTABLE_Hooks/form/deriveFieldsMetadata.js.map +1 -0
  136. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.d.ts +9 -0
  137. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.js +34 -0
  138. package/dist/components/UNSTABLE_Hooks/form/fields/CheckboxHookField.js.map +1 -0
  139. package/dist/components/UNSTABLE_Hooks/form/fields/DatePickerHookField.d.ts +9 -0
  140. package/dist/components/UNSTABLE_Hooks/form/fields/DatePickerHookField.js +29 -0
  141. package/dist/components/UNSTABLE_Hooks/form/fields/DatePickerHookField.js.map +1 -0
  142. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.d.ts +12 -0
  143. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.js +40 -0
  144. package/dist/components/UNSTABLE_Hooks/form/fields/NumberInputHookField.js.map +1 -0
  145. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.d.ts +10 -0
  146. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.js +40 -0
  147. package/dist/components/UNSTABLE_Hooks/form/fields/RadioGroupHookField.js.map +1 -0
  148. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.d.ts +10 -0
  149. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.js +40 -0
  150. package/dist/components/UNSTABLE_Hooks/form/fields/SelectHookField.js.map +1 -0
  151. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.d.ts +9 -0
  152. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.js +34 -0
  153. package/dist/components/UNSTABLE_Hooks/form/fields/SwitchHookField.js.map +1 -0
  154. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.d.ts +11 -0
  155. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.js +38 -0
  156. package/dist/components/UNSTABLE_Hooks/form/fields/TextInputHookField.js.map +1 -0
  157. package/dist/components/UNSTABLE_Hooks/form/fields/index.d.ts +15 -0
  158. package/dist/components/UNSTABLE_Hooks/form/getFieldWithOptions.d.ts +2 -0
  159. package/dist/components/UNSTABLE_Hooks/form/getFieldWithOptions.js +8 -0
  160. package/dist/components/UNSTABLE_Hooks/form/getFieldWithOptions.js.map +1 -0
  161. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.d.ts +18 -0
  162. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.js +10 -0
  163. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.js.map +1 -0
  164. package/dist/components/UNSTABLE_Hooks/form/getFormSubmissionValues.test.d.ts +1 -0
  165. package/dist/components/UNSTABLE_Hooks/form/index.d.ts +6 -1
  166. package/dist/components/UNSTABLE_Hooks/form/resolveRequiredFields.d.ts +6 -0
  167. package/dist/components/UNSTABLE_Hooks/form/resolveRequiredFields.js +14 -0
  168. package/dist/components/UNSTABLE_Hooks/form/resolveRequiredFields.js.map +1 -0
  169. package/dist/components/UNSTABLE_Hooks/form/types.d.ts +12 -0
  170. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.d.ts +2 -1
  171. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.js +10 -8
  172. package/dist/components/UNSTABLE_Hooks/form/useFieldErrorMessage.js.map +1 -1
  173. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.d.ts +2 -2
  174. package/dist/components/UNSTABLE_Hooks/form/useFieldsMetadata.js.map +1 -1
  175. package/dist/components/UNSTABLE_Hooks/form/withOptions.js +7 -0
  176. package/dist/components/UNSTABLE_Hooks/form/withOptions.js.map +1 -0
  177. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.d.ts +5 -0
  178. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.js +151 -0
  179. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/CompensationForm.js.map +1 -0
  180. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.d.ts +97 -0
  181. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.js +121 -0
  182. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/compensationSchema.js.map +1 -0
  183. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/fields.d.ts +34 -0
  184. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/fields.js +50 -0
  185. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/fields.js.map +1 -0
  186. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/index.d.ts +5 -1
  187. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.d.ts +97 -9
  188. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js +255 -3
  189. package/dist/components/UNSTABLE_Hooks/hooks/useCompensationForm/useCompensationForm.js.map +1 -1
  190. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.d.ts +5 -0
  191. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.js +114 -0
  192. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/EmployeeDetailsForm.js.map +1 -0
  193. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +39 -0
  194. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/employeeDetailsSchema.js +45 -0
  195. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/employeeDetailsSchema.js.map +1 -0
  196. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/fields.d.ts +23 -0
  197. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/fields.js +46 -0
  198. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/fields.js.map +1 -0
  199. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/index.d.ts +7 -0
  200. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/useEmployeeDetailsForm.d.ts +77 -0
  201. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/useEmployeeDetailsForm.js +153 -0
  202. package/dist/components/UNSTABLE_Hooks/hooks/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -0
  203. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.d.ts +5 -0
  204. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.js +71 -0
  205. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/WorkAddressForm.js.map +1 -0
  206. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/fields.d.ts +10 -0
  207. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/fields.js +14 -0
  208. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/fields.js.map +1 -0
  209. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/index.d.ts +7 -0
  210. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/useWorkAddressForm.d.ts +68 -0
  211. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/useWorkAddressForm.js +129 -0
  212. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/useWorkAddressForm.js.map +1 -0
  213. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/workAddressSchema.d.ts +25 -0
  214. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/workAddressSchema.js +24 -0
  215. package/dist/components/UNSTABLE_Hooks/hooks/useWorkAddressForm/workAddressSchema.js.map +1 -0
  216. package/dist/components/UNSTABLE_Hooks/index.d.ts +8 -4
  217. package/dist/components/UNSTABLE_Hooks/types.d.ts +9 -6
  218. package/dist/components/UNSTABLE_Hooks/useErrorHandling.d.ts +9 -0
  219. package/dist/components/UNSTABLE_Hooks/useErrorHandling.js +12 -0
  220. package/dist/components/UNSTABLE_Hooks/useErrorHandling.js.map +1 -0
  221. package/dist/components/UNSTABLE_Hooks/useErrorHandling.test.d.ts +1 -0
  222. package/dist/helpers/requiredIf.d.ts +13 -0
  223. package/dist/helpers/requiredIf.js +8 -0
  224. package/dist/helpers/requiredIf.js.map +1 -0
  225. package/dist/i18n/I18n.js +5 -5
  226. package/dist/i18n/I18n.js.map +1 -1
  227. package/dist/i18n/en/UNSTABLE.CompensationForm.json.js +58 -0
  228. package/dist/i18n/en/UNSTABLE.CompensationForm.json.js.map +1 -0
  229. package/dist/i18n/en/UNSTABLE.EmployeeDetailsForm.json.js +34 -0
  230. package/dist/i18n/en/UNSTABLE.EmployeeDetailsForm.json.js.map +1 -0
  231. package/dist/i18n/en/UNSTABLE.WorkAddressForm.json.js +24 -0
  232. package/dist/i18n/en/UNSTABLE.WorkAddressForm.json.js.map +1 -0
  233. package/dist/models/WA_RISK_CODES.d.ts +5 -2866
  234. package/dist/models/WA_RISK_CODES.js.map +1 -1
  235. package/dist/style.css +1 -1
  236. package/dist/types/i18next.d.ts +117 -1
  237. package/dist/types/sdkError.d.ts +7 -1
  238. package/dist/types/sdkError.js.map +1 -1
  239. package/docs/reference/endpoint-inventory.json +92 -0
  240. package/package.json +9 -9
@@ -2384,6 +2384,122 @@ export interface PayrollWireInstructions{
2384
2384
  "confirm":string;
2385
2385
  };
2386
2386
  };
2387
+ export interface UNSTABLECompensationForm{
2388
+ "title":string;
2389
+ "editTitle":string;
2390
+ "addTitle":string;
2391
+ "jobTitle":string;
2392
+ "employeeClassification":string;
2393
+ "classificationLink":string;
2394
+ "amount":string;
2395
+ "paymentUnitLabel":string;
2396
+ "paymentUnitDescription":string;
2397
+ "adjustForMinimumWage":string;
2398
+ "adjustForMinimumWageDescription":string;
2399
+ "minimumWageLabel":string;
2400
+ "minimumWageDescription":string;
2401
+ "twoPercentStakeholderLabel":string;
2402
+ "stateWcCoveredLabel":string;
2403
+ "stateWcCoveredDescription":string;
2404
+ "stateWcCoveredYes":string;
2405
+ "stateWcCoveredNo":string;
2406
+ "stateWcClassCodeLabel":string;
2407
+ "stateWcClassCodeDescription":string;
2408
+ "submitCta":string;
2409
+ "saveNewJobCta":string;
2410
+ "flsaStatusLabels":{
2411
+ "Commission Only Exempt":string;
2412
+ "Commission Only Nonexempt":string;
2413
+ "Exempt":string;
2414
+ "Nonexempt":string;
2415
+ "Owner":string;
2416
+ "Salaried Nonexempt":string;
2417
+ };
2418
+ "paymentUnitOptions":{
2419
+ "Hour":string;
2420
+ "Month":string;
2421
+ "Paycheck":string;
2422
+ "Week":string;
2423
+ "Year":string;
2424
+ };
2425
+ "startDateLabel":string;
2426
+ "fieldValidations":{
2427
+ "startDate":{
2428
+ "REQUIRED":string;
2429
+ };
2430
+ "jobTitle":{
2431
+ "REQUIRED":string;
2432
+ };
2433
+ "flsaStatus":{
2434
+ "REQUIRED":string;
2435
+ };
2436
+ "rate":{
2437
+ "REQUIRED":string;
2438
+ "RATE_MINIMUM":string;
2439
+ "RATE_EXEMPT_THRESHOLD":string;
2440
+ };
2441
+ "paymentUnit":{
2442
+ "REQUIRED":string;
2443
+ };
2444
+ "minimumWageId":{
2445
+ "REQUIRED":string;
2446
+ };
2447
+ "stateWcClassCode":{
2448
+ "REQUIRED":string;
2449
+ };
2450
+ };
2451
+ };
2452
+ export interface UNSTABLEEmployeeDetailsForm{
2453
+ "addTitle":string;
2454
+ "editTitle":string;
2455
+ "firstNameLabel":string;
2456
+ "middleInitialLabel":string;
2457
+ "lastNameLabel":string;
2458
+ "emailLabel":string;
2459
+ "emailDescription":string;
2460
+ "dateOfBirthLabel":string;
2461
+ "ssnLabel":string;
2462
+ "selfOnboardingLabel":string;
2463
+ "selfOnboardingDescription":string;
2464
+ "createCta":string;
2465
+ "updateCta":string;
2466
+ "fieldValidations":{
2467
+ "firstName":{
2468
+ "REQUIRED":string;
2469
+ "INVALID_NAME":string;
2470
+ };
2471
+ "lastName":{
2472
+ "REQUIRED":string;
2473
+ "INVALID_NAME":string;
2474
+ };
2475
+ "email":{
2476
+ "REQUIRED":string;
2477
+ "INVALID_EMAIL":string;
2478
+ "EMAIL_REQUIRED_FOR_SELF_ONBOARDING":string;
2479
+ };
2480
+ "ssn":{
2481
+ "INVALID_SSN":string;
2482
+ };
2483
+ };
2484
+ };
2485
+ export interface UNSTABLEWorkAddressForm{
2486
+ "addTitle":string;
2487
+ "editTitle":string;
2488
+ "locationLabel":string;
2489
+ "locationDescription":string;
2490
+ "effectiveDateLabel":string;
2491
+ "effectiveDateDescription":string;
2492
+ "createCta":string;
2493
+ "updateCta":string;
2494
+ "fieldValidations":{
2495
+ "locationUuid":{
2496
+ "REQUIRED":string;
2497
+ };
2498
+ "effectiveDate":{
2499
+ "REQUIRED":string;
2500
+ };
2501
+ };
2502
+ };
2387
2503
  export interface common{
2388
2504
  "status":{
2389
2505
  "loading":string;
@@ -2570,6 +2686,6 @@ export interface common{
2570
2686
 
2571
2687
  interface CustomTypeOptions {
2572
2688
  defaultNS: 'common';
2573
- resources: { 'Company.Addresses': CompanyAddresses, 'Company.AssignSignatory': CompanyAssignSignatory, 'Company.BankAccount': CompanyBankAccount, 'Company.DocumentList': CompanyDocumentList, 'Company.FederalTaxes': CompanyFederalTaxes, 'Company.Industry': CompanyIndustry, 'Company.Locations': CompanyLocations, 'Company.OnboardingOverview': CompanyOnboardingOverview, 'Company.PaySchedule': CompanyPaySchedule, 'Company.SignatureForm': CompanySignatureForm, 'Company.StateTaxes': CompanyStateTaxes, 'Contractor.Address': ContractorAddress, 'Contractor.ContractorList': ContractorContractorList, 'Contractor.NewHireReport': ContractorNewHireReport, 'Contractor.PaymentMethod': ContractorPaymentMethod, 'Contractor.Payments.CreatePayment': ContractorPaymentsCreatePayment, 'Contractor.Payments.PaymentHistory': ContractorPaymentsPaymentHistory, 'Contractor.Payments.PaymentStatement': ContractorPaymentsPaymentStatement, 'Contractor.Payments.PaymentSummary': ContractorPaymentsPaymentSummary, 'Contractor.Payments.PaymentsList': ContractorPaymentsPaymentsList, 'Contractor.Profile': ContractorProfile, 'Contractor.Submit': ContractorSubmit, 'Employee.BankAccount': EmployeeBankAccount, 'Employee.Compensation': EmployeeCompensation, 'Employee.Deductions': EmployeeDeductions, 'Employee.DocumentSigner': EmployeeDocumentSigner, 'Employee.EmployeeDocuments': EmployeeEmployeeDocuments, 'Employee.EmployeeList': EmployeeEmployeeList, 'Employee.EmploymentEligibility': EmployeeEmploymentEligibility, 'Employee.FederalTaxes': EmployeeFederalTaxes, 'Employee.HomeAddress': EmployeeHomeAddress, 'Employee.I9SignatureForm': EmployeeI9SignatureForm, 'Employee.Landing': EmployeeLanding, 'Employee.OnboardingSummary': EmployeeOnboardingSummary, 'Employee.PaySchedules': EmployeePaySchedules, 'Employee.PaymentMethod': EmployeePaymentMethod, 'Employee.Profile': EmployeeProfile, 'Employee.SplitPaycheck': EmployeeSplitPaycheck, 'Employee.StateTaxes': EmployeeStateTaxes, 'Employee.Taxes': EmployeeTaxes, 'Employee.Terminations.TerminateEmployee': EmployeeTerminationsTerminateEmployee, 'Employee.Terminations.TerminationFlow': EmployeeTerminationsTerminationFlow, 'Employee.Terminations.TerminationSummary': EmployeeTerminationsTerminationSummary, 'InformationRequests.InformationRequestForm': InformationRequestsInformationRequestForm, 'InformationRequests.InformationRequestList': InformationRequestsInformationRequestList, 'InformationRequests': InformationRequests, 'Payroll.Common': PayrollCommon, 'Payroll.ConfirmWireDetailsBanner': PayrollConfirmWireDetailsBanner, 'Payroll.ConfirmWireDetailsForm': PayrollConfirmWireDetailsForm, 'Payroll.Dismissal': PayrollDismissal, 'Payroll.EmployeeSelection': PayrollEmployeeSelection, 'Payroll.GrossUpModal': PayrollGrossUpModal, 'Payroll.OffCycle': PayrollOffCycle, 'Payroll.OffCycleCreation': PayrollOffCycleCreation, 'Payroll.OffCycleDeductionsSetting': PayrollOffCycleDeductionsSetting, 'Payroll.OffCyclePayPeriodDateForm': PayrollOffCyclePayPeriodDateForm, 'Payroll.OffCycleReasonSelection': PayrollOffCycleReasonSelection, 'Payroll.OffCycleTaxWithholding': PayrollOffCycleTaxWithholding, 'Payroll.PayrollBlocker': PayrollPayrollBlocker, 'Payroll.PayrollConfiguration': PayrollPayrollConfiguration, 'Payroll.PayrollEditEmployee': PayrollPayrollEditEmployee, 'Payroll.PayrollFlow': PayrollPayrollFlow, 'Payroll.PayrollHistory': PayrollPayrollHistory, 'Payroll.PayrollLanding': PayrollPayrollLanding, 'Payroll.PayrollList': PayrollPayrollList, 'Payroll.PayrollOverview': PayrollPayrollOverview, 'Payroll.PayrollReceipts': PayrollPayrollReceipts, 'Payroll.RecoveryCasesList': PayrollRecoveryCasesList, 'Payroll.RecoveryCasesResubmit': PayrollRecoveryCasesResubmit, 'Payroll.Transition': PayrollTransition, 'Payroll.TransitionCreation': PayrollTransitionCreation, 'Payroll.TransitionPayrollAlert': PayrollTransitionPayrollAlert, 'Payroll.WireInstructions': PayrollWireInstructions, 'common': common, }
2689
+ resources: { 'Company.Addresses': CompanyAddresses, 'Company.AssignSignatory': CompanyAssignSignatory, 'Company.BankAccount': CompanyBankAccount, 'Company.DocumentList': CompanyDocumentList, 'Company.FederalTaxes': CompanyFederalTaxes, 'Company.Industry': CompanyIndustry, 'Company.Locations': CompanyLocations, 'Company.OnboardingOverview': CompanyOnboardingOverview, 'Company.PaySchedule': CompanyPaySchedule, 'Company.SignatureForm': CompanySignatureForm, 'Company.StateTaxes': CompanyStateTaxes, 'Contractor.Address': ContractorAddress, 'Contractor.ContractorList': ContractorContractorList, 'Contractor.NewHireReport': ContractorNewHireReport, 'Contractor.PaymentMethod': ContractorPaymentMethod, 'Contractor.Payments.CreatePayment': ContractorPaymentsCreatePayment, 'Contractor.Payments.PaymentHistory': ContractorPaymentsPaymentHistory, 'Contractor.Payments.PaymentStatement': ContractorPaymentsPaymentStatement, 'Contractor.Payments.PaymentSummary': ContractorPaymentsPaymentSummary, 'Contractor.Payments.PaymentsList': ContractorPaymentsPaymentsList, 'Contractor.Profile': ContractorProfile, 'Contractor.Submit': ContractorSubmit, 'Employee.BankAccount': EmployeeBankAccount, 'Employee.Compensation': EmployeeCompensation, 'Employee.Deductions': EmployeeDeductions, 'Employee.DocumentSigner': EmployeeDocumentSigner, 'Employee.EmployeeDocuments': EmployeeEmployeeDocuments, 'Employee.EmployeeList': EmployeeEmployeeList, 'Employee.EmploymentEligibility': EmployeeEmploymentEligibility, 'Employee.FederalTaxes': EmployeeFederalTaxes, 'Employee.HomeAddress': EmployeeHomeAddress, 'Employee.I9SignatureForm': EmployeeI9SignatureForm, 'Employee.Landing': EmployeeLanding, 'Employee.OnboardingSummary': EmployeeOnboardingSummary, 'Employee.PaySchedules': EmployeePaySchedules, 'Employee.PaymentMethod': EmployeePaymentMethod, 'Employee.Profile': EmployeeProfile, 'Employee.SplitPaycheck': EmployeeSplitPaycheck, 'Employee.StateTaxes': EmployeeStateTaxes, 'Employee.Taxes': EmployeeTaxes, 'Employee.Terminations.TerminateEmployee': EmployeeTerminationsTerminateEmployee, 'Employee.Terminations.TerminationFlow': EmployeeTerminationsTerminationFlow, 'Employee.Terminations.TerminationSummary': EmployeeTerminationsTerminationSummary, 'InformationRequests.InformationRequestForm': InformationRequestsInformationRequestForm, 'InformationRequests.InformationRequestList': InformationRequestsInformationRequestList, 'InformationRequests': InformationRequests, 'Payroll.Common': PayrollCommon, 'Payroll.ConfirmWireDetailsBanner': PayrollConfirmWireDetailsBanner, 'Payroll.ConfirmWireDetailsForm': PayrollConfirmWireDetailsForm, 'Payroll.Dismissal': PayrollDismissal, 'Payroll.EmployeeSelection': PayrollEmployeeSelection, 'Payroll.GrossUpModal': PayrollGrossUpModal, 'Payroll.OffCycle': PayrollOffCycle, 'Payroll.OffCycleCreation': PayrollOffCycleCreation, 'Payroll.OffCycleDeductionsSetting': PayrollOffCycleDeductionsSetting, 'Payroll.OffCyclePayPeriodDateForm': PayrollOffCyclePayPeriodDateForm, 'Payroll.OffCycleReasonSelection': PayrollOffCycleReasonSelection, 'Payroll.OffCycleTaxWithholding': PayrollOffCycleTaxWithholding, 'Payroll.PayrollBlocker': PayrollPayrollBlocker, 'Payroll.PayrollConfiguration': PayrollPayrollConfiguration, 'Payroll.PayrollEditEmployee': PayrollPayrollEditEmployee, 'Payroll.PayrollFlow': PayrollPayrollFlow, 'Payroll.PayrollHistory': PayrollPayrollHistory, 'Payroll.PayrollLanding': PayrollPayrollLanding, 'Payroll.PayrollList': PayrollPayrollList, 'Payroll.PayrollOverview': PayrollPayrollOverview, 'Payroll.PayrollReceipts': PayrollPayrollReceipts, 'Payroll.RecoveryCasesList': PayrollRecoveryCasesList, 'Payroll.RecoveryCasesResubmit': PayrollRecoveryCasesResubmit, 'Payroll.Transition': PayrollTransition, 'Payroll.TransitionCreation': PayrollTransitionCreation, 'Payroll.TransitionPayrollAlert': PayrollTransitionPayrollAlert, 'Payroll.WireInstructions': PayrollWireInstructions, 'UNSTABLE.CompensationForm': UNSTABLECompensationForm, 'UNSTABLE.EmployeeDetailsForm': UNSTABLEEmployeeDetailsForm, 'UNSTABLE.WorkAddressForm': UNSTABLEWorkAddressForm, 'common': common, }
2574
2690
  };
2575
2691
  }
@@ -6,7 +6,13 @@
6
6
  * - `network_error` — Network connectivity failure (connection refused, timeout, abort)
7
7
  * - `internal_error` — Unexpected runtime error (unhandled exception, initialization failure)
8
8
  */
9
- export type SDKErrorCategory = 'api_error' | 'validation_error' | 'network_error' | 'internal_error';
9
+ export declare const SDKErrorCategories: {
10
+ readonly API_ERROR: "api_error";
11
+ readonly VALIDATION_ERROR: "validation_error";
12
+ readonly NETWORK_ERROR: "network_error";
13
+ readonly INTERNAL_ERROR: "internal_error";
14
+ };
15
+ export type SDKErrorCategory = (typeof SDKErrorCategories)[keyof typeof SDKErrorCategories];
10
16
  /**
11
17
  * An error thrown by internal SDK logic that should be caught and normalized
12
18
  * by `baseSubmitHandler` rather than propagating to the ErrorBoundary.
@@ -1 +1 @@
1
- {"version":3,"file":"sdkError.js","sources":["../../src/types/sdkError.ts"],"sourcesContent":["import type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { HTTPClientError } from '@gusto/embedded-api/models/errors/httpclienterrors'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { getFieldErrors } from '@/helpers/apiErrorToList'\n\n/**\n * High-level classification of where/how the error originated.\n *\n * - `api_error` — HTTP error response from the Gusto API (422, 404, 409, 500, etc.)\n * - `validation_error` — Client-side Zod schema validation before the request was sent\n * - `network_error` — Network connectivity failure (connection refused, timeout, abort)\n * - `internal_error` — Unexpected runtime error (unhandled exception, initialization failure)\n */\nexport type SDKErrorCategory = 'api_error' | 'validation_error' | 'network_error' | 'internal_error'\n\n/**\n * An error thrown by internal SDK logic that should be caught and normalized\n * by `baseSubmitHandler` rather than propagating to the ErrorBoundary.\n *\n * Use this for guard clauses and data integrity checks inside submit handler\n * callbacks where the error should surface as an inline banner, not a crash.\n *\n * @example\n * ```typescript\n * await baseSubmitHandler(data, async () => {\n * const response = await createPayroll({ ... })\n * if (!response.payrollId) {\n * throw new SDKInternalError('Missing payroll ID in response')\n * }\n * })\n * ```\n */\nexport class SDKInternalError extends Error {\n readonly category: SDKErrorCategory\n\n constructor(message: string, category: SDKErrorCategory = 'internal_error') {\n super(message)\n this.name = 'SDKInternalError'\n this.category = category\n }\n}\n\n/**\n * A flattened, field-level error extracted from an API response.\n *\n * For API errors with `errors[]`, nested structures are recursively flattened\n * into leaf entries. The `field` property is the dot-separated camelCase path\n * (e.g. `\"states.CA.filingStatus.value\"`).\n */\nexport interface SDKFieldError {\n /** Dot-separated camelCase field path (e.g. \"firstName\", \"states.CA.filingStatus.value\") */\n field: string\n /** API error category (e.g. \"invalid_attribute_value\", \"invalid_operation\", \"payroll_blocker\") */\n category: string\n /** Human-readable error message from the API */\n message: string\n /** Additional metadata from the API (e.g. `{ key: \"missing_bank_info\" }` for payroll blockers) */\n metadata?: Record<string, unknown>\n}\n\n/**\n * The unified SDK error type for all error scenarios.\n *\n * This is the core error shape exposed through partner-facing hooks. For\n * observability telemetry (which includes component context), see\n * `ObservabilityError` in `@/types/observability`.\n *\n * @example\n * ```tsx\n * const { error } = useEmployeeForm({ employeeId })\n *\n * if (error) {\n * console.log(error.category) // 'api_error'\n * console.log(error.httpStatus) // 422\n * console.log(error.fieldErrors) // [{ field: 'firstName', ... }]\n * }\n * ```\n */\nexport interface SDKError {\n /** High-level error classification */\n category: SDKErrorCategory\n\n /** Human-readable error summary */\n message: string\n\n /** HTTP status code (undefined for non-HTTP errors like network or validation) */\n httpStatus?: number\n\n /** Flattened field-level errors from API responses. Empty array for non-field errors. */\n fieldErrors: SDKFieldError[]\n\n /**\n * The original error object for advanced use cases.\n * May be stripped by sanitization (controlled by `sanitization.includeRawError`).\n */\n raw?: unknown\n}\n\ninterface ErrorWithErrors {\n errors: EntityErrorObject[]\n}\n\nfunction hasErrorsArray(error: unknown): error is ErrorWithErrors {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'errors' in error &&\n Array.isArray((error as ErrorWithErrors).errors)\n )\n}\n\nfunction toSDKFieldError(entityError: EntityErrorObject): SDKFieldError {\n return {\n field: entityError.errorKey,\n message: entityError.message ?? '',\n category: entityError.category,\n metadata: entityError.metadata as Record<string, unknown> | undefined,\n }\n}\n\n/**\n * Extracts and flattens field errors from an API error's `errors[]` array.\n *\n * Uses the existing `getFieldErrors` recursive traversal for nested errors,\n * with a fallback for errors in categories that `getFieldErrors` doesn't handle.\n */\nfunction extractFieldErrors(errors: EntityErrorObject[]): SDKFieldError[] {\n const flattened = errors.flatMap(err => getFieldErrors(err))\n if (flattened.length > 0) {\n return flattened.map(toSDKFieldError)\n }\n\n return errors.filter(err => err.message).map(toSDKFieldError)\n}\n\ninterface RawAPIFieldError {\n error_key?: string\n errorKey?: string\n category: string\n message?: string\n metadata?: Record<string, unknown>\n}\n\nfunction rawToEntityError(raw: RawAPIFieldError): EntityErrorObject {\n return {\n errorKey: raw.errorKey ?? raw.error_key ?? '',\n category: raw.category,\n message: raw.message,\n metadata: raw.metadata,\n }\n}\n\nfunction tryExtractFieldErrorsFromBody(body: string | undefined): SDKFieldError[] {\n if (!body) return []\n try {\n const parsed: unknown = JSON.parse(body)\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n 'errors' in parsed &&\n Array.isArray((parsed as { errors: unknown }).errors)\n ) {\n const errors = (parsed as { errors: RawAPIFieldError[] }).errors\n return errors\n .filter(err => err.message)\n .map(rawToEntityError)\n .map(toSDKFieldError)\n }\n } catch {\n // Body isn't valid JSON\n }\n return []\n}\n\nfunction buildApiErrorMessage(fieldErrors: SDKFieldError[], fallbackMessage: string): string {\n if (fieldErrors.length === 0) {\n return fallbackMessage\n }\n return fieldErrors.length === 1\n ? '1 field has issues'\n : `${fieldErrors.length} fields have issues`\n}\n\n/**\n * Normalizes any caught error into a unified `SDKError`.\n *\n * Classification is based purely on the error type:\n * - `SDKInternalError` → uses the error's own `category` (default: `internal_error`)\n * - `GustoEmbeddedError` subclasses → `api_error`\n * - `SDKValidationError` → `validation_error`\n * - `HTTPClientError` subclasses → `network_error`\n * - Everything else → `internal_error`\n */\nexport function normalizeToSDKError(error: unknown): SDKError {\n if (error instanceof SDKInternalError) {\n return {\n category: error.category,\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof SDKValidationError) {\n return {\n category: 'validation_error',\n message: typeof error.rawMessage === 'string' ? error.rawMessage : error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof HTTPClientError) {\n return {\n category: 'network_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof GustoEmbeddedError) {\n const httpStatus = error.httpMeta.response.status\n const fieldErrors = hasErrorsArray(error)\n ? extractFieldErrors(error.errors)\n : tryExtractFieldErrorsFromBody(error.httpMeta.body)\n\n return {\n category: 'api_error',\n message: buildApiErrorMessage(fieldErrors, error.message),\n httpStatus,\n fieldErrors,\n raw: error,\n }\n }\n\n if (error instanceof Error) {\n return {\n category: 'internal_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n return {\n category: 'internal_error',\n message: 'An unknown error occurred',\n fieldErrors: [],\n raw: error,\n }\n}\n"],"names":["SDKInternalError","message","category","hasErrorsArray","error","toSDKFieldError","entityError","extractFieldErrors","errors","flattened","err","getFieldErrors","rawToEntityError","raw","tryExtractFieldErrorsFromBody","body","parsed","buildApiErrorMessage","fieldErrors","fallbackMessage","normalizeToSDKError","SDKValidationError","HTTPClientError","GustoEmbeddedError","httpStatus"],"mappings":"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"}
1
+ {"version":3,"file":"sdkError.js","sources":["../../src/types/sdkError.ts"],"sourcesContent":["import type { EntityErrorObject } from '@gusto/embedded-api/models/components/entityerrorobject'\nimport { GustoEmbeddedError } from '@gusto/embedded-api/models/errors/gustoembeddederror'\nimport { HTTPClientError } from '@gusto/embedded-api/models/errors/httpclienterrors'\nimport { SDKValidationError } from '@gusto/embedded-api/models/errors/sdkvalidationerror'\nimport { getFieldErrors } from '@/helpers/apiErrorToList'\n\n/**\n * High-level classification of where/how the error originated.\n *\n * - `api_error` — HTTP error response from the Gusto API (422, 404, 409, 500, etc.)\n * - `validation_error` — Client-side Zod schema validation before the request was sent\n * - `network_error` — Network connectivity failure (connection refused, timeout, abort)\n * - `internal_error` — Unexpected runtime error (unhandled exception, initialization failure)\n */\nexport const SDKErrorCategories = {\n API_ERROR: 'api_error',\n VALIDATION_ERROR: 'validation_error',\n NETWORK_ERROR: 'network_error',\n INTERNAL_ERROR: 'internal_error',\n} as const\n\nexport type SDKErrorCategory = (typeof SDKErrorCategories)[keyof typeof SDKErrorCategories]\n\n/**\n * An error thrown by internal SDK logic that should be caught and normalized\n * by `baseSubmitHandler` rather than propagating to the ErrorBoundary.\n *\n * Use this for guard clauses and data integrity checks inside submit handler\n * callbacks where the error should surface as an inline banner, not a crash.\n *\n * @example\n * ```typescript\n * await baseSubmitHandler(data, async () => {\n * const response = await createPayroll({ ... })\n * if (!response.payrollId) {\n * throw new SDKInternalError('Missing payroll ID in response')\n * }\n * })\n * ```\n */\nexport class SDKInternalError extends Error {\n readonly category: SDKErrorCategory\n\n constructor(message: string, category: SDKErrorCategory = 'internal_error') {\n super(message)\n this.name = 'SDKInternalError'\n this.category = category\n }\n}\n\n/**\n * A flattened, field-level error extracted from an API response.\n *\n * For API errors with `errors[]`, nested structures are recursively flattened\n * into leaf entries. The `field` property is the dot-separated camelCase path\n * (e.g. `\"states.CA.filingStatus.value\"`).\n */\nexport interface SDKFieldError {\n /** Dot-separated camelCase field path (e.g. \"firstName\", \"states.CA.filingStatus.value\") */\n field: string\n /** API error category (e.g. \"invalid_attribute_value\", \"invalid_operation\", \"payroll_blocker\") */\n category: string\n /** Human-readable error message from the API */\n message: string\n /** Additional metadata from the API (e.g. `{ key: \"missing_bank_info\" }` for payroll blockers) */\n metadata?: Record<string, unknown>\n}\n\n/**\n * The unified SDK error type for all error scenarios.\n *\n * This is the core error shape exposed through partner-facing hooks. For\n * observability telemetry (which includes component context), see\n * `ObservabilityError` in `@/types/observability`.\n *\n * @example\n * ```tsx\n * const { error } = useEmployeeForm({ employeeId })\n *\n * if (error) {\n * console.log(error.category) // 'api_error'\n * console.log(error.httpStatus) // 422\n * console.log(error.fieldErrors) // [{ field: 'firstName', ... }]\n * }\n * ```\n */\nexport interface SDKError {\n /** High-level error classification */\n category: SDKErrorCategory\n\n /** Human-readable error summary */\n message: string\n\n /** HTTP status code (undefined for non-HTTP errors like network or validation) */\n httpStatus?: number\n\n /** Flattened field-level errors from API responses. Empty array for non-field errors. */\n fieldErrors: SDKFieldError[]\n\n /**\n * The original error object for advanced use cases.\n * May be stripped by sanitization (controlled by `sanitization.includeRawError`).\n */\n raw?: unknown\n}\n\ninterface ErrorWithErrors {\n errors: EntityErrorObject[]\n}\n\nfunction hasErrorsArray(error: unknown): error is ErrorWithErrors {\n return (\n error !== null &&\n typeof error === 'object' &&\n 'errors' in error &&\n Array.isArray((error as ErrorWithErrors).errors)\n )\n}\n\nfunction toSDKFieldError(entityError: EntityErrorObject): SDKFieldError {\n return {\n field: entityError.errorKey,\n message: entityError.message ?? '',\n category: entityError.category,\n metadata: entityError.metadata as Record<string, unknown> | undefined,\n }\n}\n\n/**\n * Extracts and flattens field errors from an API error's `errors[]` array.\n *\n * Uses the existing `getFieldErrors` recursive traversal for nested errors,\n * with a fallback for errors in categories that `getFieldErrors` doesn't handle.\n */\nfunction extractFieldErrors(errors: EntityErrorObject[]): SDKFieldError[] {\n const flattened = errors.flatMap(err => getFieldErrors(err))\n if (flattened.length > 0) {\n return flattened.map(toSDKFieldError)\n }\n\n return errors.filter(err => err.message).map(toSDKFieldError)\n}\n\ninterface RawAPIFieldError {\n error_key?: string\n errorKey?: string\n category: string\n message?: string\n metadata?: Record<string, unknown>\n}\n\nfunction rawToEntityError(raw: RawAPIFieldError): EntityErrorObject {\n return {\n errorKey: raw.errorKey ?? raw.error_key ?? '',\n category: raw.category,\n message: raw.message,\n metadata: raw.metadata,\n }\n}\n\nfunction tryExtractFieldErrorsFromBody(body: string | undefined): SDKFieldError[] {\n if (!body) return []\n try {\n const parsed: unknown = JSON.parse(body)\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n 'errors' in parsed &&\n Array.isArray((parsed as { errors: unknown }).errors)\n ) {\n const errors = (parsed as { errors: RawAPIFieldError[] }).errors\n return errors\n .filter(err => err.message)\n .map(rawToEntityError)\n .map(toSDKFieldError)\n }\n } catch {\n // Body isn't valid JSON\n }\n return []\n}\n\nfunction buildApiErrorMessage(fieldErrors: SDKFieldError[], fallbackMessage: string): string {\n if (fieldErrors.length === 0) {\n return fallbackMessage\n }\n return fieldErrors.length === 1\n ? '1 field has issues'\n : `${fieldErrors.length} fields have issues`\n}\n\n/**\n * Normalizes any caught error into a unified `SDKError`.\n *\n * Classification is based purely on the error type:\n * - `SDKInternalError` → uses the error's own `category` (default: `internal_error`)\n * - `GustoEmbeddedError` subclasses → `api_error`\n * - `SDKValidationError` → `validation_error`\n * - `HTTPClientError` subclasses → `network_error`\n * - Everything else → `internal_error`\n */\nexport function normalizeToSDKError(error: unknown): SDKError {\n if (error instanceof SDKInternalError) {\n return {\n category: error.category,\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof SDKValidationError) {\n return {\n category: 'validation_error',\n message: typeof error.rawMessage === 'string' ? error.rawMessage : error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof HTTPClientError) {\n return {\n category: 'network_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n if (error instanceof GustoEmbeddedError) {\n const httpStatus = error.httpMeta.response.status\n const fieldErrors = hasErrorsArray(error)\n ? extractFieldErrors(error.errors)\n : tryExtractFieldErrorsFromBody(error.httpMeta.body)\n\n return {\n category: 'api_error',\n message: buildApiErrorMessage(fieldErrors, error.message),\n httpStatus,\n fieldErrors,\n raw: error,\n }\n }\n\n if (error instanceof Error) {\n return {\n category: 'internal_error',\n message: error.message,\n fieldErrors: [],\n raw: error,\n }\n }\n\n return {\n category: 'internal_error',\n message: 'An unknown error occurred',\n fieldErrors: [],\n raw: error,\n }\n}\n"],"names":["SDKInternalError","message","category","hasErrorsArray","error","toSDKFieldError","entityError","extractFieldErrors","errors","flattened","err","getFieldErrors","rawToEntityError","raw","tryExtractFieldErrorsFromBody","body","parsed","buildApiErrorMessage","fieldErrors","fallbackMessage","normalizeToSDKError","SDKValidationError","HTTPClientError","GustoEmbeddedError","httpStatus"],"mappings":"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"}
@@ -1118,6 +1118,98 @@
1118
1118
  "companyId",
1119
1119
  "companyUuid"
1120
1120
  ]
1121
+ },
1122
+ "UNSTABLE_Hooks.hooks.useCompensationForm": {
1123
+ "endpoints": [
1124
+ {
1125
+ "method": "GET",
1126
+ "path": "/v1/employees/:employeeId/jobs"
1127
+ },
1128
+ {
1129
+ "method": "POST",
1130
+ "path": "/v1/employees/:employeeId/jobs"
1131
+ },
1132
+ {
1133
+ "method": "PUT",
1134
+ "path": "/v1/jobs/:jobId"
1135
+ },
1136
+ {
1137
+ "method": "PUT",
1138
+ "path": "/v1/compensations/:compensationId"
1139
+ },
1140
+ {
1141
+ "method": "GET",
1142
+ "path": "/v1/locations/:locationUuid/minimum_wages"
1143
+ },
1144
+ {
1145
+ "method": "GET",
1146
+ "path": "/v1/employees/:employeeId/work_addresses"
1147
+ },
1148
+ {
1149
+ "method": "GET",
1150
+ "path": "/v1/employees/:employeeId"
1151
+ },
1152
+ {
1153
+ "method": "GET",
1154
+ "path": "/v1/companies/:companyId/federal_tax_details"
1155
+ }
1156
+ ],
1157
+ "variables": [
1158
+ "companyId",
1159
+ "compensationId",
1160
+ "employeeId",
1161
+ "jobId",
1162
+ "locationUuid"
1163
+ ]
1164
+ },
1165
+ "UNSTABLE_Hooks.hooks.useEmployeeDetailsForm": {
1166
+ "endpoints": [
1167
+ {
1168
+ "method": "GET",
1169
+ "path": "/v1/employees/:employeeId"
1170
+ },
1171
+ {
1172
+ "method": "POST",
1173
+ "path": "/v1/companies/:companyId/employees"
1174
+ },
1175
+ {
1176
+ "method": "PUT",
1177
+ "path": "/v1/employees/:employeeId"
1178
+ },
1179
+ {
1180
+ "method": "PUT",
1181
+ "path": "/v1/employees/:employeeId/onboarding_status"
1182
+ }
1183
+ ],
1184
+ "variables": [
1185
+ "companyId",
1186
+ "employeeId"
1187
+ ]
1188
+ },
1189
+ "UNSTABLE_Hooks.hooks.useWorkAddressForm": {
1190
+ "endpoints": [
1191
+ {
1192
+ "method": "GET",
1193
+ "path": "/v1/companies/:companyId/locations"
1194
+ },
1195
+ {
1196
+ "method": "GET",
1197
+ "path": "/v1/employees/:employeeId/work_addresses"
1198
+ },
1199
+ {
1200
+ "method": "POST",
1201
+ "path": "/v1/employees/:employeeId/work_addresses"
1202
+ },
1203
+ {
1204
+ "method": "PUT",
1205
+ "path": "/v1/work_addresses/:workAddressUuid"
1206
+ }
1207
+ ],
1208
+ "variables": [
1209
+ "companyId",
1210
+ "employeeId",
1211
+ "workAddressUuid"
1212
+ ]
1121
1213
  }
1122
1214
  },
1123
1215
  "flows": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gusto/embedded-react-sdk",
3
- "version": "0.37.0-rc.1",
3
+ "version": "0.37.0",
4
4
  "homepage": "https://github.com/Gusto/embedded-react-sdk",
5
5
  "bugs": {
6
6
  "url": "https://github.com/Gusto/embedded-react-sdk/issues"
@@ -81,9 +81,9 @@
81
81
  "@commitlint/config-conventional": "^20.5.0",
82
82
  "@eslint/js": "^9.39.2",
83
83
  "@playwright/test": "^1.58.2",
84
- "@storybook/addon-a11y": "^10.3.1",
85
- "@storybook/addon-docs": "^10.3.1",
86
- "@storybook/addon-onboarding": "^10.3.1",
84
+ "@storybook/addon-a11y": "^10.3.3",
85
+ "@storybook/addon-docs": "^10.3.3",
86
+ "@storybook/addon-onboarding": "^10.3.3",
87
87
  "@storybook/react-vite": "^10.3.1",
88
88
  "@storybook/test-runner": "^0.24.3",
89
89
  "@testing-library/jest-dom": "^6.9.1",
@@ -95,7 +95,7 @@
95
95
  "@types/pngjs": "^6.0.5",
96
96
  "@types/react": "^19.2.14",
97
97
  "@vitejs/plugin-react-swc": "^4.3.0",
98
- "@vitest/coverage-v8": "^4.1.0",
98
+ "@vitest/coverage-v8": "^4.1.1",
99
99
  "axe-core": "^4.11.1",
100
100
  "dotenv": "^17.3.1",
101
101
  "eslint": "^9.39.4",
@@ -104,7 +104,7 @@
104
104
  "eslint-plugin-react": "^7.37.5",
105
105
  "eslint-plugin-react-hooks": "^6.1.1",
106
106
  "eslint-plugin-react-refresh": "^0.4.24",
107
- "eslint-plugin-storybook": "^10.3.1",
107
+ "eslint-plugin-storybook": "^10.3.3",
108
108
  "globals": "^17.4.0",
109
109
  "husky": "^9.1.7",
110
110
  "jest-axe": "^9.0.0",
@@ -153,9 +153,9 @@
153
153
  "react-aria": "^3.44.0",
154
154
  "react-aria-components": "1.13.0",
155
155
  "react-error-boundary": "^6.1.1",
156
- "react-hook-form": "^7.71.2",
157
- "react-i18next": "^16.6.1",
158
- "react-robot": "^1.2.0",
156
+ "react-hook-form": "^7.72.0",
157
+ "react-i18next": "^16.6.6",
158
+ "react-robot": "^1.2.1",
159
159
  "robot3": "^1.2.0",
160
160
  "zod": "^4.3.6"
161
161
  },