@gusto/embedded-react-sdk 0.47.0 → 0.47.1

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 (215) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/components/Common/ActionsLayout/ActionsLayout.d.ts +1 -0
  3. package/dist/components/Common/ActionsLayout/ActionsLayout.js.map +1 -1
  4. package/dist/components/Common/Alert/Alert.d.ts +2 -0
  5. package/dist/components/Common/DataView/DataCards/DataCards.d.ts +2 -0
  6. package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
  7. package/dist/components/Common/DataView/DataTable/DataTable.d.ts +2 -0
  8. package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
  9. package/dist/components/Common/DataView/DataView.d.ts +2 -0
  10. package/dist/components/Common/DataView/DataView.js.map +1 -1
  11. package/dist/components/Common/DataView/useDataView.d.ts +4 -0
  12. package/dist/components/Common/DataView/useDataView.js.map +1 -1
  13. package/dist/components/Common/DataView/useSelectionState.d.ts +1 -0
  14. package/dist/components/Common/DataView/useSelectionState.js.map +1 -1
  15. package/dist/components/Common/DateRangeFilter/DateRangeFilter.d.ts +1 -0
  16. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
  17. package/dist/components/Common/DetailViewLayout/DetailViewLayout.d.ts +1 -0
  18. package/dist/components/Common/DetailViewLayout/DetailViewLayout.js.map +1 -1
  19. package/dist/components/Common/DetailViewLayout/DetailViewLayoutTypes.d.ts +1 -0
  20. package/dist/components/Common/DocumentList/DocumentList.d.ts +6 -0
  21. package/dist/components/Common/DocumentList/DocumentList.js.map +1 -1
  22. package/dist/components/Common/DocumentViewer/DocumentViewer.d.ts +1 -0
  23. package/dist/components/Common/DocumentViewer/DocumentViewer.js.map +1 -1
  24. package/dist/components/Common/EmptyData/EmptyData.d.ts +1 -0
  25. package/dist/components/Common/EmptyData/EmptyData.js.map +1 -1
  26. package/dist/components/Common/FadeIn/FadeIn.d.ts +1 -0
  27. package/dist/components/Common/FadeIn/FadeIn.js.map +1 -1
  28. package/dist/components/Common/FieldCaption/FieldCaption.d.ts +8 -0
  29. package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
  30. package/dist/components/Common/FieldDescription/FieldDescription.d.ts +5 -0
  31. package/dist/components/Common/FieldDescription/FieldDescription.js.map +1 -1
  32. package/dist/components/Common/FieldErrorMessage/FieldErrorMessage.d.ts +5 -0
  33. package/dist/components/Common/FieldErrorMessage/FieldErrorMessage.js.map +1 -1
  34. package/dist/components/Common/FieldLayout/FieldLayout.d.ts +5 -0
  35. package/dist/components/Common/FieldLayout/FieldLayout.js.map +1 -1
  36. package/dist/components/Common/FieldLayout/FieldLayoutTypes.d.ts +15 -0
  37. package/dist/components/Common/Fieldset/Fieldset.d.ts +2 -0
  38. package/dist/components/Common/Fieldset/Fieldset.js.map +1 -1
  39. package/dist/components/Common/Flex/Flex.d.ts +4 -0
  40. package/dist/components/Common/Flex/Flex.js.map +1 -1
  41. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbs.d.ts +20 -0
  42. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbs.js.map +1 -1
  43. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +33 -7
  44. package/dist/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers.d.ts +16 -0
  45. package/dist/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers.js.map +1 -1
  46. package/dist/components/Common/Form/Form.d.ts +2 -0
  47. package/dist/components/Common/Form/Form.js.map +1 -1
  48. package/dist/components/Common/Grid/Grid.d.ts +2 -0
  49. package/dist/components/Common/Grid/Grid.js.map +1 -1
  50. package/dist/components/Common/HamburgerMenu/HamburgerMenu.d.ts +7 -0
  51. package/dist/components/Common/HamburgerMenu/HamburgerMenu.js.map +1 -1
  52. package/dist/components/Common/HamburgerMenu/HamburgerMenuTypes.d.ts +11 -0
  53. package/dist/components/Common/HorizontalFieldLayout/HorizontalFieldLayout.d.ts +7 -0
  54. package/dist/components/Common/HorizontalFieldLayout/HorizontalFieldLayout.js.map +1 -1
  55. package/dist/components/Common/HorizontalFieldLayout/HorizontalFieldLayoutTypes.d.ts +14 -0
  56. package/dist/components/Common/InlineSpinner/InlineSpinner.d.ts +1 -0
  57. package/dist/components/Common/InlineSpinner/InlineSpinner.js.map +1 -1
  58. package/dist/components/Common/InternalError/InternalError.d.ts +1 -0
  59. package/dist/components/Common/InternalError/InternalError.js.map +1 -1
  60. package/dist/components/Common/Loading/Loading.d.ts +2 -0
  61. package/dist/components/Common/Loading/Loading.js.map +1 -1
  62. package/dist/components/Common/OnboardingStatusBadge/index.d.ts +3 -0
  63. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  64. package/dist/components/Common/ReorderableList/DropZone.d.ts +1 -0
  65. package/dist/components/Common/ReorderableList/DropZone.js.map +1 -1
  66. package/dist/components/Common/ReorderableList/ReorderableItem.d.ts +1 -3
  67. package/dist/components/Common/ReorderableList/ReorderableItem.js.map +1 -1
  68. package/dist/components/Common/ReorderableList/ReorderableList.d.ts +1 -0
  69. package/dist/components/Common/ReorderableList/ReorderableList.js.map +1 -1
  70. package/dist/components/Common/ReorderableList/ReorderableListTypes.d.ts +4 -0
  71. package/dist/components/Common/ReorderableList/constants.d.ts +1 -3
  72. package/dist/components/Common/ReorderableList/constants.js.map +1 -1
  73. package/dist/components/Common/RequirementsList/RequirementsList.d.ts +1 -0
  74. package/dist/components/Common/RequirementsList/RequirementsList.js.map +1 -1
  75. package/dist/components/Common/TaxInputs/TaxInputs.d.ts +7 -0
  76. package/dist/components/Common/TaxInputs/TaxInputs.js.map +1 -1
  77. package/dist/components/Common/Toast/Toast.d.ts +1 -0
  78. package/dist/components/Common/VisuallyHidden/VisuallyHidden.d.ts +2 -0
  79. package/dist/components/Common/VisuallyHidden/VisuallyHidden.js.map +1 -1
  80. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +6 -7
  81. package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js.map +1 -1
  82. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js +8 -9
  83. package/dist/components/Company/AssignSignatory/CreateSignatory/Actions.js.map +1 -1
  84. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -5
  85. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  86. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js +6 -7
  87. package/dist/components/Company/AssignSignatory/InviteSignatory/Actions.js.map +1 -1
  88. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -5
  89. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  90. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -7
  91. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  92. package/dist/components/Company/BankAccount/BankAccountForm/Actions.js +6 -6
  93. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -5
  94. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  95. package/dist/components/Company/BankAccount/BankAccountList/Actions.js +6 -7
  96. package/dist/components/Company/BankAccount/BankAccountList/Actions.js.map +1 -1
  97. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js +7 -8
  98. package/dist/components/Company/BankAccount/BankAccountVerify/Actions.js.map +1 -1
  99. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js +5 -6
  100. package/dist/components/Company/DocumentSigner/DocumentList/Actions.js.map +1 -1
  101. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -5
  102. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  103. package/dist/components/Company/FederalTaxes/Actions.js +6 -7
  104. package/dist/components/Company/FederalTaxes/Actions.js.map +1 -1
  105. package/dist/components/Company/FederalTaxes/Form.js +1 -1
  106. package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
  107. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -10
  108. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  109. package/dist/components/Company/Industry/Actions.js +5 -6
  110. package/dist/components/Company/Industry/Actions.js.map +1 -1
  111. package/dist/components/Company/Industry/Context.js +6 -8
  112. package/dist/components/Company/Industry/Context.js.map +1 -1
  113. package/dist/components/Company/Industry/Edit.js +10 -11
  114. package/dist/components/Company/Industry/Edit.js.map +1 -1
  115. package/dist/components/Company/Locations/LocationForm/Actions.js +2 -3
  116. package/dist/components/Company/Locations/LocationForm/Actions.js.map +1 -1
  117. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -5
  118. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  119. package/dist/components/Company/Locations/LocationsList/Actions.js +2 -3
  120. package/dist/components/Company/Locations/LocationsList/Actions.js.map +1 -1
  121. package/dist/components/Company/Locations/LocationsList/List.js +2 -3
  122. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  123. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -5
  124. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  125. package/dist/components/Company/OnboardingOverview/context.js +3 -5
  126. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  127. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js +5 -6
  128. package/dist/components/Company/StateTaxes/StateTaxesForm/Actions.js.map +1 -1
  129. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -5
  130. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  131. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js +6 -7
  132. package/dist/components/Company/StateTaxes/StateTaxesList/Actions.js.map +1 -1
  133. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -5
  134. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  135. package/dist/components/Contractor/Address/Form.js +4 -4
  136. package/dist/components/Contractor/Address/useAddress.js +5 -7
  137. package/dist/components/Contractor/Address/useAddress.js.map +1 -1
  138. package/dist/components/Employee/Deductions/management/DeductionsCard/DeductionsCard.js +1 -1
  139. package/dist/components/Employee/Documents/management/DocumentsCard/DocumentsCard.js +12 -12
  140. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js +4 -5
  141. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/Actions.js.map +1 -1
  142. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -5
  143. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  144. package/dist/components/Employee/FederalTaxes/management/FederalTaxesEditForm.js +1 -1
  145. package/dist/components/Employee/FederalTaxes/onboarding/FederalTaxes.js +1 -1
  146. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +4 -4
  147. package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +13 -13
  148. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js +2 -3
  149. package/dist/components/Employee/PaymentMethod/shared/BankFormBody/BankFormBody.js.map +1 -1
  150. package/dist/components/Employee/PaymentMethod/shared/SplitPaymentsFormBody/SplitPaymentsFormBody.js +1 -1
  151. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +6 -6
  152. package/dist/components/Employee/Profile/management/ProfileCard/ProfileCard.js +12 -12
  153. package/dist/components/Employee/Profile/management/ProfileEditForm.js +1 -1
  154. package/dist/components/Employee/Profile/onboarding/EmployeeProfile.js +1 -1
  155. package/dist/components/Employee/StateTaxes/management/StateTaxesEditForm.js +1 -1
  156. package/dist/components/Employee/StateTaxes/onboarding/StateTaxes.js +1 -1
  157. package/dist/components/Employee/Taxes/Actions.js +7 -8
  158. package/dist/components/Employee/Taxes/Actions.js.map +1 -1
  159. package/dist/components/Employee/Taxes/useTaxes.js +3 -5
  160. package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
  161. package/dist/components/Employee/exports/employeeManagement.d.ts +0 -2
  162. package/dist/components/Employee/exports/employeeManagement.js +50 -52
  163. package/dist/components/Employee/exports/employeeManagement.js.map +1 -1
  164. package/dist/components/Employee/exports/employeeOnboarding.d.ts +1 -0
  165. package/dist/components/Employee/exports/employeeOnboarding.js +20 -18
  166. package/dist/components/Employee/exports/employeeOnboarding.js.map +1 -1
  167. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +10 -11
  168. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  169. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +0 -1
  170. package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
  171. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +2 -3
  172. package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -1
  173. package/dist/components/Payroll/usePreparedPayrollData.js +8 -10
  174. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  175. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +2 -3
  176. package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
  177. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +24 -25
  178. package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
  179. package/dist/contexts/GustoProvider/GustoProvider.d.ts +34 -1
  180. package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
  181. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +42 -2
  182. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +2 -3
  183. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  184. package/dist/contexts/GustoProvider/SDKI18next.d.ts +1 -1
  185. package/dist/contexts/GustoProvider/SDKI18next.js.map +1 -1
  186. package/dist/contexts/GustoProvider/index.d.ts +0 -2
  187. package/dist/contexts/ThemeProvider/ThemeProvider.d.ts +5 -1
  188. package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
  189. package/dist/contexts/ThemeProvider/customRender.d.ts +1 -0
  190. package/dist/contexts/ThemeProvider/index.d.ts +0 -1
  191. package/dist/contexts/ThemeProvider/theme.d.ts +7 -101
  192. package/dist/contexts/ThemeProvider/theme.js +58 -64
  193. package/dist/contexts/ThemeProvider/theme.js.map +1 -1
  194. package/dist/contexts/ThemeProvider/types.d.ts +181 -0
  195. package/dist/contexts/ThemeProvider/useTheme.d.ts +4 -0
  196. package/dist/contexts/ThemeProvider/useTheme.js.map +1 -1
  197. package/dist/contexts/index.d.ts +1 -0
  198. package/dist/index.d.ts +3 -2
  199. package/dist/index.js +145 -141
  200. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js +6 -7
  201. package/dist/partner-hook-utils/form/fields/CheckboxHookField.js.map +1 -1
  202. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js +6 -7
  203. package/dist/partner-hook-utils/form/fields/NumberInputHookField.js.map +1 -1
  204. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +8 -9
  205. package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
  206. package/dist/partner-hook-utils/form/fields/SelectHookField.js +2 -3
  207. package/dist/partner-hook-utils/form/fields/SelectHookField.js.map +1 -1
  208. package/dist/partner-hook-utils/form/fields/SwitchHookField.js +12 -13
  209. package/dist/partner-hook-utils/form/fields/SwitchHookField.js.map +1 -1
  210. package/dist/partner-hook-utils/form/fields/TextInputHookField.js +8 -9
  211. package/dist/partner-hook-utils/form/fields/TextInputHookField.js.map +1 -1
  212. package/dist/partner-hook-utils/form/fields/index.d.ts +2 -0
  213. package/dist/partner-hook-utils/form/index.d.ts +1 -1
  214. package/docs/reference/endpoint-inventory.json +16 -16
  215. package/package.json +7 -6
@@ -11,13 +11,11 @@ import "@gusto/embedded-api-v-2025-11-15/models/errors/apierror";
11
11
  import "@gusto/embedded-api-v-2025-11-15/models/errors/gustoembeddederror";
12
12
  import "@gusto/embedded-api-v-2025-11-15/models/errors/sdkvalidationerror";
13
13
  import "@gusto/embedded-api-v-2025-11-15/models/errors/httpclienterrors";
14
- import "dompurify";
15
- import "../../contexts/LocaleProvider/useLocale.js";
16
14
  import "../../shared/constants.js";
17
15
  import "../../contexts/ComponentAdapter/useComponentContext.js";
18
16
  import "../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
19
17
  import { retryAsync as x } from "../../helpers/retryAsync.js";
20
- const q = 4, v = 1500, B = (e) => e instanceof T ? e.errors.some((r) => r.category === "invalid_operation") : !1, $ = ({
18
+ const q = 4, v = 1500, B = (e) => e instanceof T ? e.errors.some((r) => r.category === "invalid_operation") : !1, W = ({
21
19
  companyId: e,
22
20
  payrollId: r,
23
21
  employeeUuids: a,
@@ -33,7 +31,7 @@ const q = 4, v = 1500, B = (e) => e instanceof T ? e.errors.some((r) => r.catego
33
31
  enabled: !!o?.payPeriod?.payScheduleUuid
34
32
  }
35
33
  ), P = y(async () => {
36
- const s = await p({
34
+ const i = await p({
37
35
  request: {
38
36
  companyId: e,
39
37
  payrollId: r,
@@ -43,8 +41,8 @@ const q = 4, v = 1500, B = (e) => e instanceof T ? e.errors.some((r) => r.catego
43
41
  }
44
42
  }
45
43
  });
46
- f(s.payrollPrepared), s.payrollPrepared && (t.current = !0, l?.(s.payrollPrepared));
47
- }, [e, r, p, h, n, l]), i = y(async () => {
44
+ f(i.payrollPrepared), i.payrollPrepared && (t.current = !0, l?.(i.payrollPrepared));
45
+ }, [e, r, p, h, n, l]), s = y(async () => {
48
46
  await d(
49
47
  null,
50
48
  () => x(P, {
@@ -55,11 +53,11 @@ const q = 4, v = 1500, B = (e) => e instanceof T ? e.errors.some((r) => r.catego
55
53
  );
56
54
  }, [d, P]);
57
55
  b(() => {
58
- u.current || (u.current = !0, i());
59
- }, [i]);
56
+ u.current || (u.current = !0, s());
57
+ }, [s]);
60
58
  const g = c && !t.current, R = c && t.current, A = g || E;
61
59
  return {
62
- handlePreparePayroll: i,
60
+ handlePreparePayroll: s,
63
61
  preparedPayroll: o,
64
62
  paySchedule: S?.payScheduleShow,
65
63
  isLoading: A,
@@ -68,6 +66,6 @@ const q = 4, v = 1500, B = (e) => e instanceof T ? e.errors.some((r) => r.catego
68
66
  };
69
67
  };
70
68
  export {
71
- $ as usePreparedPayrollData
69
+ W as usePreparedPayrollData
72
70
  };
73
71
  //# sourceMappingURL=usePreparedPayrollData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api-v-2025-11-15/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api-v-2025-11-15/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api-v-2025-11-15/models/components/payroll'\nimport type { PayScheduleShow } from '@gusto/embedded-api-v-2025-11-15/models/components/payscheduleshow'\nimport type { QueryParamSortBy } from '@gusto/embedded-api-v-2025-11-15/models/operations/putv1companiescompanyidpayrollspayrollidprepare'\nimport { UnprocessableEntityError } from '@gusto/embedded-api-v-2025-11-15/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: QueryParamSortBy\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [companyId, payrollId, preparePayroll, employeeUuidsKey, sortBy, onDataReady])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;;;;AA2BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAI9CC,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AACF,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMf,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMgB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAApB;AAAA,MACA,eAAeQ,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAL;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAAD;AAAA,QAAA;AAAA,MACF;AAAA,IACF,CACD;AACD,IAAAO,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BP,IAAcmB,EAAO,eAAe;AAAA,EAExC,GAAG,CAACvB,GAAWC,GAAWI,GAAgBW,GAAkBb,GAAQC,CAAW,CAAC,GAE1EoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa5B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACmB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}
1
+ {"version":3,"file":"usePreparedPayrollData.js","sources":["../../../src/components/Payroll/usePreparedPayrollData.ts"],"sourcesContent":["import { useState, useEffect, useCallback, useRef, useMemo } from 'react'\nimport { usePayrollsPrepareMutation } from '@gusto/embedded-api-v-2025-11-15/react-query/payrollsPrepare'\nimport { usePaySchedulesGet } from '@gusto/embedded-api-v-2025-11-15/react-query/paySchedulesGet'\nimport type { PayrollPrepared } from '@gusto/embedded-api-v-2025-11-15/models/components/payroll'\nimport type { PayScheduleShow } from '@gusto/embedded-api-v-2025-11-15/models/components/payscheduleshow'\nimport type { QueryParamSortBy } from '@gusto/embedded-api-v-2025-11-15/models/operations/putv1companiescompanyidpayrollspayrollidprepare'\nimport { UnprocessableEntityError } from '@gusto/embedded-api-v-2025-11-15/models/errors/unprocessableentityerror'\nimport { useBase } from '../Base'\nimport { retryAsync } from '@/helpers/retryAsync'\n\ninterface UsePreparedPayrollDataParams {\n companyId: string\n payrollId: string\n employeeUuids?: string[]\n sortBy?: QueryParamSortBy\n onDataReady?: (preparedPayroll: PayrollPrepared) => void\n}\n\ninterface UsePreparedPayrollDataReturn {\n handlePreparePayroll: () => Promise<void>\n preparedPayroll: PayrollPrepared | undefined\n paySchedule: PayScheduleShow | undefined\n isLoading: boolean\n isPaginating: boolean\n hasInitialData: boolean\n}\n\nconst PREPARE_MAX_ATTEMPTS = 4\nconst PREPARE_RETRY_DELAY_MS = 1500\n\nconst isPayrollBeingProcessedError = (error: unknown): boolean => {\n if (!(error instanceof UnprocessableEntityError)) return false\n return error.errors.some(e => e.category === 'invalid_operation')\n}\n\nexport const usePreparedPayrollData = ({\n companyId,\n payrollId,\n employeeUuids,\n sortBy,\n onDataReady,\n}: UsePreparedPayrollDataParams): UsePreparedPayrollDataReturn => {\n const { mutateAsync: preparePayroll, isPending: isPreparePayrollPending } =\n usePayrollsPrepareMutation()\n const [preparedPayroll, setPreparedPayroll] = useState<PayrollPrepared | undefined>()\n const hasInitialDataRef = useRef(false)\n const hasFiredRef = useRef(false)\n const { baseSubmitHandler } = useBase()\n\n const employeeUuidsKey = useMemo(() => employeeUuids?.join(',') ?? '', [employeeUuids])\n\n const { data: payScheduleData, isLoading: isPayScheduleLoading } = usePaySchedulesGet(\n {\n companyId,\n payScheduleId: preparedPayroll?.payPeriod?.payScheduleUuid || '',\n },\n {\n enabled: !!preparedPayroll?.payPeriod?.payScheduleUuid,\n },\n )\n\n const executePrepare = useCallback(async () => {\n const result = await preparePayroll({\n request: {\n companyId,\n payrollId,\n sortBy,\n requestBody: {\n employeeUuids,\n },\n },\n })\n setPreparedPayroll(result.payrollPrepared)\n if (result.payrollPrepared) {\n hasInitialDataRef.current = true\n onDataReady?.(result.payrollPrepared)\n }\n }, [companyId, payrollId, preparePayroll, employeeUuidsKey, sortBy, onDataReady])\n\n const handlePreparePayroll = useCallback(async () => {\n await baseSubmitHandler(null, () =>\n retryAsync(executePrepare, {\n maxAttempts: PREPARE_MAX_ATTEMPTS,\n delayMs: PREPARE_RETRY_DELAY_MS,\n shouldRetry: isPayrollBeingProcessedError,\n }),\n )\n }, [baseSubmitHandler, executePrepare])\n\n useEffect(() => {\n if (hasFiredRef.current) return\n hasFiredRef.current = true\n void handlePreparePayroll()\n }, [handlePreparePayroll])\n\n const isInitialLoading = isPreparePayrollPending && !hasInitialDataRef.current\n const isPaginating = isPreparePayrollPending && hasInitialDataRef.current\n const isLoading = isInitialLoading || isPayScheduleLoading\n\n return {\n handlePreparePayroll,\n preparedPayroll,\n paySchedule: payScheduleData?.payScheduleShow,\n isLoading,\n isPaginating,\n hasInitialData: hasInitialDataRef.current,\n }\n}\n"],"names":["PREPARE_MAX_ATTEMPTS","PREPARE_RETRY_DELAY_MS","isPayrollBeingProcessedError","error","UnprocessableEntityError","e","usePreparedPayrollData","companyId","payrollId","employeeUuids","sortBy","onDataReady","preparePayroll","isPreparePayrollPending","usePayrollsPrepareMutation","preparedPayroll","setPreparedPayroll","useState","hasInitialDataRef","useRef","hasFiredRef","baseSubmitHandler","useBase","employeeUuidsKey","useMemo","payScheduleData","isPayScheduleLoading","usePaySchedulesGet","executePrepare","useCallback","result","handlePreparePayroll","retryAsync","useEffect","isInitialLoading","isPaginating","isLoading"],"mappings":";;;;;;;;;;;;;;;;;AA2BA,MAAMA,IAAuB,GACvBC,IAAyB,MAEzBC,IAA+B,CAACC,MAC9BA,aAAiBC,IAChBD,EAAM,OAAO,KAAK,CAAAE,MAAKA,EAAE,aAAa,mBAAmB,IADP,IAI9CC,IAAyB,CAAC;AAAA,EACrC,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AACF,MAAkE;AAChE,QAAM,EAAE,aAAaC,GAAgB,WAAWC,EAAA,IAC9CC,EAAA,GACI,CAACC,GAAiBC,CAAkB,IAAIC,EAAA,GACxCC,IAAoBC,EAAO,EAAK,GAChCC,IAAcD,EAAO,EAAK,GAC1B,EAAE,mBAAAE,EAAA,IAAsBC,EAAA,GAExBC,IAAmBC,EAAQ,MAAMf,GAAe,KAAK,GAAG,KAAK,IAAI,CAACA,CAAa,CAAC,GAEhF,EAAE,MAAMgB,GAAiB,WAAWC,MAAyBC;AAAA,IACjE;AAAA,MACE,WAAApB;AAAA,MACA,eAAeQ,GAAiB,WAAW,mBAAmB;AAAA,IAAA;AAAA,IAEhE;AAAA,MACE,SAAS,CAAC,CAACA,GAAiB,WAAW;AAAA,IAAA;AAAA,EACzC,GAGIa,IAAiBC,EAAY,YAAY;AAC7C,UAAMC,IAAS,MAAMlB,EAAe;AAAA,MAClC,SAAS;AAAA,QACP,WAAAL;AAAA,QACA,WAAAC;AAAA,QACA,QAAAE;AAAA,QACA,aAAa;AAAA,UACX,eAAAD;AAAA,QAAA;AAAA,MACF;AAAA,IACF,CACD;AACD,IAAAO,EAAmBc,EAAO,eAAe,GACrCA,EAAO,oBACTZ,EAAkB,UAAU,IAC5BP,IAAcmB,EAAO,eAAe;AAAA,EAExC,GAAG,CAACvB,GAAWC,GAAWI,GAAgBW,GAAkBb,GAAQC,CAAW,CAAC,GAE1EoB,IAAuBF,EAAY,YAAY;AACnD,UAAMR;AAAA,MAAkB;AAAA,MAAM,MAC5BW,EAAWJ,GAAgB;AAAA,QACzB,aAAa5B;AAAA,QACb,SAASC;AAAA,QACT,aAAaC;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL,GAAG,CAACmB,GAAmBO,CAAc,CAAC;AAEtC,EAAAK,EAAU,MAAM;AACd,IAAIb,EAAY,YAChBA,EAAY,UAAU,IACjBW,EAAA;AAAA,EACP,GAAG,CAACA,CAAoB,CAAC;AAEzB,QAAMG,IAAmBrB,KAA2B,CAACK,EAAkB,SACjEiB,IAAetB,KAA2BK,EAAkB,SAC5DkB,IAAYF,KAAoBR;AAEtC,SAAO;AAAA,IACL,sBAAAK;AAAA,IACA,iBAAAhB;AAAA,IACA,aAAaU,GAAiB;AAAA,IAC9B,WAAAW;AAAA,IACA,cAAAD;AAAA,IACA,gBAAgBjB,EAAkB;AAAA,EAAA;AAEtC;"}
@@ -1,13 +1,12 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { useMemo as D } from "react";
3
3
  import { useTranslation as n } from "react-i18next";
4
- import "../../../shared/constants.js";
5
4
  import { useI18n as l } from "../../../i18n/I18n.js";
6
5
  import { PolicyDetailLayout as T } from "../shared/PolicyDetailLayout/PolicyDetailLayout.js";
7
6
  import { useDataView as O } from "../../Common/DataView/useDataView.js";
8
7
  import { DataView as P } from "../../Common/DataView/DataView.js";
9
8
  const v = "holidays";
10
- function _({
9
+ function A({
11
10
  title: t,
12
11
  subtitle: e,
13
12
  onBack: a,
@@ -75,6 +74,6 @@ function x({ holidays: t }) {
75
74
  return /* @__PURE__ */ r(P, { label: e("tableLabel"), ...i });
76
75
  }
77
76
  export {
78
- _ as HolidayPolicyDetailPresentation
77
+ A as HolidayPolicyDetailPresentation
79
78
  };
80
79
  //# sourceMappingURL=HolidayPolicyDetailPresentation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HolidayPolicyDetailPresentation.js","sources":["../../../../src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { HolidayItem } from '../HolidaySelectionForm/HolidaySelectionFormTypes'\nimport { PolicyDetailLayout } from '../shared/PolicyDetailLayout'\nimport type { HolidayPolicyDetailPresentationProps } from './HolidayPolicyDetailTypes'\nimport { DataView, useDataView } from '@/components/Common'\nimport { useI18n } from '@/i18n'\n\nconst HOLIDAYS_TAB_ID = 'holidays'\n\nexport function HolidayPolicyDetailPresentation({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n holidays,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n}: HolidayPolicyDetailPresentationProps) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const holidaysTabContent = <HolidaysTab holidays={holidays} />\n\n return (\n <PolicyDetailLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n firstTab={{\n id: HOLIDAYS_TAB_ID,\n label: t('tabs.holidays'),\n content: holidaysTabContent,\n }}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n employees={employees}\n onAddEmployee={onAddEmployee}\n removeDialog={removeDialog}\n successAlert={successAlert}\n onDismissAlert={onDismissAlert}\n />\n )\n}\n\nfunction HolidaysTab({ holidays }: { holidays: HolidayItem[] }) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const columns = useMemo(\n () => [\n {\n key: 'name' as keyof HolidayItem,\n title: t('tableHeaders.holidayName'),\n render: (item: HolidayItem) => item.name,\n },\n {\n key: 'observedDate' as keyof HolidayItem,\n title: t('tableHeaders.observedDate'),\n render: (item: HolidayItem) => item.observedDate,\n },\n {\n key: 'nextObservation' as keyof HolidayItem,\n title: t('tableHeaders.nextObservation'),\n render: (item: HolidayItem) => item.nextObservation,\n },\n ],\n [t],\n )\n\n const dataViewProps = useDataView<HolidayItem>({\n data: holidays,\n columns,\n })\n\n return <DataView label={t('tableLabel')} {...dataViewProps} />\n}\n"],"names":["HOLIDAYS_TAB_ID","HolidayPolicyDetailPresentation","title","subtitle","onBack","backLabel","actions","holidays","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","useI18n","t","useTranslation","holidaysTabContent","jsx","HolidaysTab","PolicyDetailLayout","columns","useMemo","item","dataViewProps","useDataView","DataView"],"mappings":";;;;;;;;AAQA,MAAMA,IAAkB;AAEjB,SAASC,EAAgC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AACF,GAAyC;AACvC,EAAAC,EAAQ,+BAA+B;AACvC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,+BAA+B,GAEtDC,IAAqB,gBAAAC,EAACC,GAAA,EAAY,UAAAb,EAAA,CAAoB;AAE5D,SACE,gBAAAY;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAAnB;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAU;AAAA,QACR,IAAIN;AAAA,QACJ,OAAOgB,EAAE,eAAe;AAAA,QACxB,SAASE;AAAA,MAAA;AAAA,MAEX,eAAAV;AAAA,MACA,aAAAC;AAAA,MACA,WAAAC;AAAA,MACA,eAAAC;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASM,EAAY,EAAE,UAAAb,KAAyC;AAC9D,EAAAQ,EAAQ,+BAA+B;AACvC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,+BAA+B,GAEtDK,IAAUC;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,KAAK;AAAA,QACL,OAAOP,EAAE,0BAA0B;AAAA,QACnC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,MAEtC;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,2BAA2B;AAAA,QACpC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,MAEtC;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,8BAA8B;AAAA,QACvC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,IACtC;AAAA,IAEF,CAACR,CAAC;AAAA,EAAA,GAGES,IAAgBC,EAAyB;AAAA,IAC7C,MAAMnB;AAAA,IACN,SAAAe;AAAA,EAAA,CACD;AAED,2BAAQK,GAAA,EAAS,OAAOX,EAAE,YAAY,GAAI,GAAGS,GAAe;AAC9D;"}
1
+ {"version":3,"file":"HolidayPolicyDetailPresentation.js","sources":["../../../../src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { HolidayItem } from '../HolidaySelectionForm/HolidaySelectionFormTypes'\nimport { PolicyDetailLayout } from '../shared/PolicyDetailLayout'\nimport type { HolidayPolicyDetailPresentationProps } from './HolidayPolicyDetailTypes'\nimport { DataView, useDataView } from '@/components/Common'\nimport { useI18n } from '@/i18n'\n\nconst HOLIDAYS_TAB_ID = 'holidays'\n\nexport function HolidayPolicyDetailPresentation({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n holidays,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n}: HolidayPolicyDetailPresentationProps) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const holidaysTabContent = <HolidaysTab holidays={holidays} />\n\n return (\n <PolicyDetailLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n firstTab={{\n id: HOLIDAYS_TAB_ID,\n label: t('tabs.holidays'),\n content: holidaysTabContent,\n }}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n employees={employees}\n onAddEmployee={onAddEmployee}\n removeDialog={removeDialog}\n successAlert={successAlert}\n onDismissAlert={onDismissAlert}\n />\n )\n}\n\nfunction HolidaysTab({ holidays }: { holidays: HolidayItem[] }) {\n useI18n('Company.TimeOff.HolidayPolicy')\n const { t } = useTranslation('Company.TimeOff.HolidayPolicy')\n\n const columns = useMemo(\n () => [\n {\n key: 'name' as keyof HolidayItem,\n title: t('tableHeaders.holidayName'),\n render: (item: HolidayItem) => item.name,\n },\n {\n key: 'observedDate' as keyof HolidayItem,\n title: t('tableHeaders.observedDate'),\n render: (item: HolidayItem) => item.observedDate,\n },\n {\n key: 'nextObservation' as keyof HolidayItem,\n title: t('tableHeaders.nextObservation'),\n render: (item: HolidayItem) => item.nextObservation,\n },\n ],\n [t],\n )\n\n const dataViewProps = useDataView<HolidayItem>({\n data: holidays,\n columns,\n })\n\n return <DataView label={t('tableLabel')} {...dataViewProps} />\n}\n"],"names":["HOLIDAYS_TAB_ID","HolidayPolicyDetailPresentation","title","subtitle","onBack","backLabel","actions","holidays","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","useI18n","t","useTranslation","holidaysTabContent","jsx","HolidaysTab","PolicyDetailLayout","columns","useMemo","item","dataViewProps","useDataView","DataView"],"mappings":";;;;;;;AAQA,MAAMA,IAAkB;AAEjB,SAASC,EAAgC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AACF,GAAyC;AACvC,EAAAC,EAAQ,+BAA+B;AACvC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,+BAA+B,GAEtDC,IAAqB,gBAAAC,EAACC,GAAA,EAAY,UAAAb,EAAA,CAAoB;AAE5D,SACE,gBAAAY;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAAnB;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAU;AAAA,QACR,IAAIN;AAAA,QACJ,OAAOgB,EAAE,eAAe;AAAA,QACxB,SAASE;AAAA,MAAA;AAAA,MAEX,eAAAV;AAAA,MACA,aAAAC;AAAA,MACA,WAAAC;AAAA,MACA,eAAAC;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASM,EAAY,EAAE,UAAAb,KAAyC;AAC9D,EAAAQ,EAAQ,+BAA+B;AACvC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,+BAA+B,GAEtDK,IAAUC;AAAA,IACd,MAAM;AAAA,MACJ;AAAA,QACE,KAAK;AAAA,QACL,OAAOP,EAAE,0BAA0B;AAAA,QACnC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,MAEtC;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,2BAA2B;AAAA,QACpC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,MAEtC;AAAA,QACE,KAAK;AAAA,QACL,OAAOR,EAAE,8BAA8B;AAAA,QACvC,QAAQ,CAACQ,MAAsBA,EAAK;AAAA,MAAA;AAAA,IACtC;AAAA,IAEF,CAACR,CAAC;AAAA,EAAA,GAGES,IAAgBC,EAAyB;AAAA,IAC7C,MAAMnB;AAAA,IACN,SAAAe;AAAA,EAAA,CACD;AAED,2BAAQK,GAAA,EAAS,OAAOX,EAAE,YAAY,GAAI,GAAGS,GAAe;AAC9D;"}
@@ -1,36 +1,35 @@
1
1
  import { jsx as i, jsxs as P, Fragment as b } from "react/jsx-runtime";
2
2
  import { useTranslation as S } from "react-i18next";
3
3
  import { EmployeeTable as D } from "../EmployeeTable/EmployeeTable.js";
4
- import "../../../../shared/constants.js";
5
4
  import { EmptyData as L } from "../../../Common/EmptyData/EmptyData.js";
6
5
  import { useComponentContext as O } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
7
6
  import { useI18n as T } from "../../../../i18n/I18n.js";
8
7
  import x from "../../../../assets/icons/plus-circle.svg.js";
9
8
  import { DetailViewLayout as A } from "../../../Common/DetailViewLayout/DetailViewLayout.js";
10
9
  const v = "employees";
11
- function _({
10
+ function N({
12
11
  title: r,
13
- subtitle: m,
14
- onBack: c,
12
+ subtitle: c,
13
+ onBack: m,
15
14
  backLabel: s,
16
15
  actions: p,
17
16
  firstTab: a,
18
17
  selectedTabId: d,
19
18
  onTabChange: h,
20
- employees: t,
19
+ employees: e,
21
20
  onAddEmployee: n,
22
21
  removeDialog: o,
23
22
  successAlert: l,
24
23
  onDismissAlert: u
25
24
  }) {
26
25
  T("Company.TimeOff.PolicyDetail");
27
- const { t: e } = S("Company.TimeOff.PolicyDetail"), { Alert: y, Dialog: C, Button: f } = O(), E = t.emptyState ?? (n ? () => /* @__PURE__ */ i(L, { title: e("emptyEmployees.title"), children: /* @__PURE__ */ i(
26
+ const { t } = S("Company.TimeOff.PolicyDetail"), { Alert: y, Dialog: C, Button: f } = O(), E = e.emptyState ?? (n ? () => /* @__PURE__ */ i(L, { title: t("emptyEmployees.title"), children: /* @__PURE__ */ i(
28
27
  f,
29
28
  {
30
29
  variant: "secondary",
31
30
  icon: /* @__PURE__ */ i(x, { "aria-hidden": !0 }),
32
31
  onClick: n,
33
- children: e("emptyEmployees.addEmployeeCta")
32
+ children: t("emptyEmployees.addEmployeeCta")
34
33
  }
35
34
  ) }) : void 0), g = [
36
35
  {
@@ -40,21 +39,21 @@ function _({
40
39
  },
41
40
  {
42
41
  id: v,
43
- label: e("tabs.employees"),
42
+ label: t("tabs.employees"),
44
43
  content: /* @__PURE__ */ i(
45
44
  D,
46
45
  {
47
- data: t.data,
48
- searchValue: t.searchValue,
49
- onSearchChange: t.onSearchChange,
50
- onSearchClear: t.onSearchClear,
51
- searchPlaceholder: t.searchPlaceholder,
52
- itemMenu: t.itemMenu,
53
- pagination: t.pagination,
54
- isFetching: t.isFetching,
46
+ data: e.data,
47
+ searchValue: e.searchValue,
48
+ onSearchChange: e.onSearchChange,
49
+ onSearchClear: e.onSearchClear,
50
+ searchPlaceholder: e.searchPlaceholder,
51
+ itemMenu: e.itemMenu,
52
+ pagination: e.pagination,
53
+ isFetching: e.isFetching,
55
54
  emptyState: E,
56
- additionalColumns: t.additionalColumns,
57
- hideJobTitle: t.hideJobTitle
55
+ additionalColumns: e.additionalColumns,
56
+ hideJobTitle: e.hideJobTitle
58
57
  }
59
58
  )
60
59
  }
@@ -65,8 +64,8 @@ function _({
65
64
  A,
66
65
  {
67
66
  title: r,
68
- subtitle: m,
69
- onBack: c,
67
+ subtitle: c,
68
+ onBack: m,
70
69
  backLabel: s,
71
70
  actions: p,
72
71
  tabs: g,
@@ -82,15 +81,15 @@ function _({
82
81
  onPrimaryActionClick: o.onConfirm,
83
82
  isPrimaryActionLoading: o.isPending,
84
83
  isDestructive: !0,
85
- title: e("removeEmployeeDialog.title", { name: o.employeeName }),
86
- primaryActionLabel: e("removeEmployeeDialog.confirmCta"),
87
- closeActionLabel: e("removeEmployeeDialog.cancelCta"),
88
- children: e("removeEmployeeDialog.description", { name: o.employeeName })
84
+ title: t("removeEmployeeDialog.title", { name: o.employeeName }),
85
+ primaryActionLabel: t("removeEmployeeDialog.confirmCta"),
86
+ closeActionLabel: t("removeEmployeeDialog.cancelCta"),
87
+ children: t("removeEmployeeDialog.description", { name: o.employeeName })
89
88
  }
90
89
  )
91
90
  ] });
92
91
  }
93
92
  export {
94
- _ as PolicyDetailLayout
93
+ N as PolicyDetailLayout
95
94
  };
96
95
  //# sourceMappingURL=PolicyDetailLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PolicyDetailLayout.js","sources":["../../../../../src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem } from '../EmployeeTable/EmployeeTableTypes'\nimport { EmployeeTable } from '../EmployeeTable/EmployeeTable'\nimport type { PolicyDetailLayoutProps } from './PolicyDetailLayoutTypes'\nimport { DetailViewLayout, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nconst EMPLOYEES_TAB_ID = 'employees'\n\nexport function PolicyDetailLayout<T extends EmployeeTableItem>({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n firstTab,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n}: PolicyDetailLayoutProps<T>) {\n useI18n('Company.TimeOff.PolicyDetail')\n const { t } = useTranslation('Company.TimeOff.PolicyDetail')\n const { Alert, Dialog, Button } = useComponentContext()\n\n const emptyEmployeesState =\n employees.emptyState ??\n (onAddEmployee\n ? () => (\n <EmptyData title={t('emptyEmployees.title')}>\n <Button\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={onAddEmployee}\n >\n {t('emptyEmployees.addEmployeeCta')}\n </Button>\n </EmptyData>\n )\n : undefined)\n\n const tabs = [\n {\n id: firstTab.id,\n label: firstTab.label,\n content: firstTab.content,\n },\n {\n id: EMPLOYEES_TAB_ID,\n label: t('tabs.employees'),\n content: (\n <EmployeeTable<T>\n data={employees.data}\n searchValue={employees.searchValue}\n onSearchChange={employees.onSearchChange}\n onSearchClear={employees.onSearchClear}\n searchPlaceholder={employees.searchPlaceholder}\n itemMenu={employees.itemMenu}\n pagination={employees.pagination}\n isFetching={employees.isFetching}\n emptyState={emptyEmployeesState}\n additionalColumns={employees.additionalColumns}\n hideJobTitle={employees.hideJobTitle}\n />\n ),\n },\n ]\n\n return (\n <>\n {successAlert && <Alert status=\"success\" label={successAlert} onDismiss={onDismissAlert} />}\n\n <DetailViewLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n tabs={tabs}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n />\n\n <Dialog\n isOpen={removeDialog.isOpen}\n onClose={removeDialog.onClose}\n onPrimaryActionClick={removeDialog.onConfirm}\n isPrimaryActionLoading={removeDialog.isPending}\n isDestructive\n title={t('removeEmployeeDialog.title', { name: removeDialog.employeeName })}\n primaryActionLabel={t('removeEmployeeDialog.confirmCta')}\n closeActionLabel={t('removeEmployeeDialog.cancelCta')}\n >\n {t('removeEmployeeDialog.description', { name: removeDialog.employeeName })}\n </Dialog>\n </>\n )\n}\n"],"names":["EMPLOYEES_TAB_ID","PolicyDetailLayout","title","subtitle","onBack","backLabel","actions","firstTab","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","useI18n","t","useTranslation","Alert","Dialog","Button","useComponentContext","emptyEmployeesState","EmptyData","jsx","PlusCircleIcon","tabs","EmployeeTable","jsxs","Fragment","DetailViewLayout"],"mappings":";;;;;;;;;AASA,MAAMA,IAAmB;AAElB,SAASC,EAAgD;AAAA,EAC9D,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AACF,GAA+B;AAC7B,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,8BAA8B,GACrD,EAAE,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAA,GAE5BC,IACJZ,EAAU,eACTC,IACG,wBACGY,GAAA,EAAU,OAAOP,EAAE,sBAAsB,GACxC,UAAA,gBAAAQ;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAM,gBAAAI,EAACC,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,MAClC,SAASd;AAAA,MAER,YAAE,+BAA+B;AAAA,IAAA;AAAA,EAAA,GAEtC,IAEF,SAEAe,IAAO;AAAA,IACX;AAAA,MACE,IAAInB,EAAS;AAAA,MACb,OAAOA,EAAS;AAAA,MAChB,SAASA,EAAS;AAAA,IAAA;AAAA,IAEpB;AAAA,MACE,IAAIP;AAAA,MACJ,OAAOgB,EAAE,gBAAgB;AAAA,MACzB,SACE,gBAAAQ;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,MAAMjB,EAAU;AAAA,UAChB,aAAaA,EAAU;AAAA,UACvB,gBAAgBA,EAAU;AAAA,UAC1B,eAAeA,EAAU;AAAA,UACzB,mBAAmBA,EAAU;AAAA,UAC7B,UAAUA,EAAU;AAAA,UACpB,YAAYA,EAAU;AAAA,UACtB,YAAYA,EAAU;AAAA,UACtB,YAAYY;AAAA,UACZ,mBAAmBZ,EAAU;AAAA,UAC7B,cAAcA,EAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAEJ;AAGF,SACE,gBAAAkB,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAhB,uBAAiBK,GAAA,EAAM,QAAO,WAAU,OAAOL,GAAc,WAAWC,GAAgB;AAAA,IAEzF,gBAAAU;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAA5B;AAAA,QACA,UAAAC;AAAA,QACA,QAAAC;AAAA,QACA,WAAAC;AAAA,QACA,SAAAC;AAAA,QACA,MAAAoB;AAAA,QACA,eAAAlB;AAAA,QACA,aAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAe;AAAA,MAACL;AAAA,MAAA;AAAA,QACC,QAAQP,EAAa;AAAA,QACrB,SAASA,EAAa;AAAA,QACtB,sBAAsBA,EAAa;AAAA,QACnC,wBAAwBA,EAAa;AAAA,QACrC,eAAa;AAAA,QACb,OAAOI,EAAE,8BAA8B,EAAE,MAAMJ,EAAa,cAAc;AAAA,QAC1E,oBAAoBI,EAAE,iCAAiC;AAAA,QACvD,kBAAkBA,EAAE,gCAAgC;AAAA,QAEnD,YAAE,oCAAoC,EAAE,MAAMJ,EAAa,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAC5E,GACF;AAEJ;"}
1
+ {"version":3,"file":"PolicyDetailLayout.js","sources":["../../../../../src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem } from '../EmployeeTable/EmployeeTableTypes'\nimport { EmployeeTable } from '../EmployeeTable/EmployeeTable'\nimport type { PolicyDetailLayoutProps } from './PolicyDetailLayoutTypes'\nimport { DetailViewLayout, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nconst EMPLOYEES_TAB_ID = 'employees'\n\nexport function PolicyDetailLayout<T extends EmployeeTableItem>({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n firstTab,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n}: PolicyDetailLayoutProps<T>) {\n useI18n('Company.TimeOff.PolicyDetail')\n const { t } = useTranslation('Company.TimeOff.PolicyDetail')\n const { Alert, Dialog, Button } = useComponentContext()\n\n const emptyEmployeesState =\n employees.emptyState ??\n (onAddEmployee\n ? () => (\n <EmptyData title={t('emptyEmployees.title')}>\n <Button\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={onAddEmployee}\n >\n {t('emptyEmployees.addEmployeeCta')}\n </Button>\n </EmptyData>\n )\n : undefined)\n\n const tabs = [\n {\n id: firstTab.id,\n label: firstTab.label,\n content: firstTab.content,\n },\n {\n id: EMPLOYEES_TAB_ID,\n label: t('tabs.employees'),\n content: (\n <EmployeeTable<T>\n data={employees.data}\n searchValue={employees.searchValue}\n onSearchChange={employees.onSearchChange}\n onSearchClear={employees.onSearchClear}\n searchPlaceholder={employees.searchPlaceholder}\n itemMenu={employees.itemMenu}\n pagination={employees.pagination}\n isFetching={employees.isFetching}\n emptyState={emptyEmployeesState}\n additionalColumns={employees.additionalColumns}\n hideJobTitle={employees.hideJobTitle}\n />\n ),\n },\n ]\n\n return (\n <>\n {successAlert && <Alert status=\"success\" label={successAlert} onDismiss={onDismissAlert} />}\n\n <DetailViewLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n tabs={tabs}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n />\n\n <Dialog\n isOpen={removeDialog.isOpen}\n onClose={removeDialog.onClose}\n onPrimaryActionClick={removeDialog.onConfirm}\n isPrimaryActionLoading={removeDialog.isPending}\n isDestructive\n title={t('removeEmployeeDialog.title', { name: removeDialog.employeeName })}\n primaryActionLabel={t('removeEmployeeDialog.confirmCta')}\n closeActionLabel={t('removeEmployeeDialog.cancelCta')}\n >\n {t('removeEmployeeDialog.description', { name: removeDialog.employeeName })}\n </Dialog>\n </>\n )\n}\n"],"names":["EMPLOYEES_TAB_ID","PolicyDetailLayout","title","subtitle","onBack","backLabel","actions","firstTab","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","useI18n","useTranslation","Alert","Dialog","Button","useComponentContext","emptyEmployeesState","EmptyData","jsx","PlusCircleIcon","tabs","EmployeeTable","jsxs","Fragment","DetailViewLayout"],"mappings":";;;;;;;;AASA,MAAMA,IAAmB;AAElB,SAASC,EAAgD;AAAA,EAC9D,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AACF,GAA+B;AAC7B,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,EAAA,IAAMC,EAAe,8BAA8B,GACrD,EAAE,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAA,GAE5BC,IACJX,EAAU,eACTC,IACG,wBACGW,GAAA,EAAU,OAAO,EAAE,sBAAsB,GACxC,UAAA,gBAAAC;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAM,gBAAAI,EAACC,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,MAClC,SAASb;AAAA,MAER,YAAE,+BAA+B;AAAA,IAAA;AAAA,EAAA,GAEtC,IAEF,SAEAc,IAAO;AAAA,IACX;AAAA,MACE,IAAIlB,EAAS;AAAA,MACb,OAAOA,EAAS;AAAA,MAChB,SAASA,EAAS;AAAA,IAAA;AAAA,IAEpB;AAAA,MACE,IAAIP;AAAA,MACJ,OAAO,EAAE,gBAAgB;AAAA,MACzB,SACE,gBAAAuB;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,MAAMhB,EAAU;AAAA,UAChB,aAAaA,EAAU;AAAA,UACvB,gBAAgBA,EAAU;AAAA,UAC1B,eAAeA,EAAU;AAAA,UACzB,mBAAmBA,EAAU;AAAA,UAC7B,UAAUA,EAAU;AAAA,UACpB,YAAYA,EAAU;AAAA,UACtB,YAAYA,EAAU;AAAA,UACtB,YAAYW;AAAA,UACZ,mBAAmBX,EAAU;AAAA,UAC7B,cAAcA,EAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAEJ;AAGF,SACE,gBAAAiB,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAf,uBAAiBI,GAAA,EAAM,QAAO,WAAU,OAAOJ,GAAc,WAAWC,GAAgB;AAAA,IAEzF,gBAAAS;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAA3B;AAAA,QACA,UAAAC;AAAA,QACA,QAAAC;AAAA,QACA,WAAAC;AAAA,QACA,SAAAC;AAAA,QACA,MAAAmB;AAAA,QACA,eAAAjB;AAAA,QACA,aAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAc;AAAA,MAACL;AAAA,MAAA;AAAA,QACC,QAAQN,EAAa;AAAA,QACrB,SAASA,EAAa;AAAA,QACtB,sBAAsBA,EAAa;AAAA,QACnC,wBAAwBA,EAAa;AAAA,QACrC,eAAa;AAAA,QACb,OAAO,EAAE,8BAA8B,EAAE,MAAMA,EAAa,cAAc;AAAA,QAC1E,oBAAoB,EAAE,iCAAiC;AAAA,QACvD,kBAAkB,EAAE,gCAAgC;AAAA,QAEnD,YAAE,oCAAoC,EAAE,MAAMA,EAAa,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAC5E,GACF;AAEJ;"}
@@ -2,12 +2,45 @@ import { default as React } from 'react';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  import { ComponentsContextType } from '../ComponentAdapter/useComponentContext';
4
4
  import { GustoProviderProps } from './GustoProviderCustomUIAdapter';
5
+ /**
6
+ * Props for {@link GustoProvider}.
7
+ *
8
+ * @remarks
9
+ * Extends {@link GustoProviderProps} but makes `components` optional and partial: any components
10
+ * you do not supply fall back to the SDK's built-in React Aria implementations.
11
+ *
12
+ * @public
13
+ */
5
14
  export interface GustoApiProps extends Omit<GustoProviderProps, 'components'> {
15
+ /** Optional TanStack Query `QueryClient` to share with the rest of your app. When omitted, the SDK creates its own client configured for Gusto's API. */
6
16
  queryClient?: QueryClient;
17
+ /** Partial component overrides. Any component you do not supply uses the SDK's default React Aria implementation. */
7
18
  components?: Partial<ComponentsContextType>;
19
+ /** The application tree that should have access to the SDK. */
8
20
  children?: React.ReactNode;
9
21
  }
22
+ /**
23
+ * Top-level provider that configures the SDK at the application level.
24
+ *
25
+ * @remarks
26
+ * Wrap your application's component tree with `GustoProvider` so that any SDK component below it
27
+ * has access to the API client, theme, locale, translations, and UI components. Components you
28
+ * provide via the `components` prop override the SDK's React Aria defaults; any component you do
29
+ * not supply uses the default.
30
+ *
31
+ * For full UI control without the bundled React Aria defaults, use {@link GustoProviderCustomUIAdapter}
32
+ * instead and supply a complete component map.
33
+ *
34
+ * @param props - See {@link GustoApiProps}.
35
+ * @returns The configured provider tree wrapping `children`.
36
+ * @public
37
+ */
10
38
  declare const GustoProvider: React.FC<GustoApiProps>;
11
39
  export { GustoProvider };
12
- /** @deprecated Import from `GustoProvider` instead */
40
+ /**
41
+ * Alias for {@link GustoProvider}.
42
+ *
43
+ * @deprecated Use {@link GustoProvider} instead.
44
+ * @public
45
+ */
13
46
  export declare const GustoApiProvider: React.FC<GustoApiProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"GustoProvider.js","sources":["../../../src/contexts/GustoProvider/GustoProvider.tsx"],"sourcesContent":["import type React from 'react'\n// GustoProvider uses react-aria as the default components so we need to include the react-aria I18nProvider here.\n// For use without react-aria, the GustoProviderCustomUIAdapter can be used which does not includes it.\n// eslint-disable-next-line no-restricted-imports\nimport { I18nProvider } from 'react-aria-components'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { createComponents } from '../ComponentAdapter/createComponentsWithDefaults'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport {\n GustoProviderCustomUIAdapter,\n type GustoProviderProps,\n} from './GustoProviderCustomUIAdapter'\n\nexport interface GustoApiProps extends Omit<GustoProviderProps, 'components'> {\n queryClient?: QueryClient\n components?: Partial<ComponentsContextType>\n children?: React.ReactNode\n}\n\nconst GustoProvider: React.FC<GustoApiProps> = props => {\n const { children, components = {}, locale, queryClient, ...remainingProps } = props\n\n return (\n <GustoProviderCustomUIAdapter\n locale={locale}\n queryClient={queryClient}\n {...remainingProps}\n components={createComponents(components)}\n >\n {/* react-aria locale provider that exposes correct locale to number formatters */}\n <I18nProvider locale={locale}>{children}</I18nProvider>\n </GustoProviderCustomUIAdapter>\n )\n}\n\nexport { GustoProvider }\n\n/** @deprecated Import from `GustoProvider` instead */\nexport const GustoApiProvider = GustoProvider\n"],"names":["GustoProvider","props","children","components","locale","queryClient","remainingProps","jsx","GustoProviderCustomUIAdapter","createComponents","I18nProvider","GustoApiProvider"],"mappings":";;;;AAmBA,MAAMA,IAAyC,CAAAC,MAAS;AACtD,QAAM,EAAE,UAAAC,GAAU,YAAAC,IAAa,CAAA,GAAI,QAAAC,GAAQ,aAAAC,GAAa,GAAGC,EAAA,IAAmBL;AAE9E,SACE,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAAJ;AAAA,MACA,aAAAC;AAAA,MACC,GAAGC;AAAA,MACJ,YAAYG,EAAiBN,CAAU;AAAA,MAGvC,UAAA,gBAAAI,EAACG,GAAA,EAAa,QAAAN,GAAiB,UAAAF,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG9C,GAKaS,IAAmBX;"}
1
+ {"version":3,"file":"GustoProvider.js","sources":["../../../src/contexts/GustoProvider/GustoProvider.tsx"],"sourcesContent":["import type React from 'react'\n// GustoProvider uses react-aria as the default components so we need to include the react-aria I18nProvider here.\n// For use without react-aria, the GustoProviderCustomUIAdapter can be used which does not includes it.\n// eslint-disable-next-line no-restricted-imports\nimport { I18nProvider } from 'react-aria-components'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { createComponents } from '../ComponentAdapter/createComponentsWithDefaults'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport {\n GustoProviderCustomUIAdapter,\n type GustoProviderProps,\n} from './GustoProviderCustomUIAdapter'\n\n/**\n * Props for {@link GustoProvider}.\n *\n * @remarks\n * Extends {@link GustoProviderProps} but makes `components` optional and partial: any components\n * you do not supply fall back to the SDK's built-in React Aria implementations.\n *\n * @public\n */\nexport interface GustoApiProps extends Omit<GustoProviderProps, 'components'> {\n /** Optional TanStack Query `QueryClient` to share with the rest of your app. When omitted, the SDK creates its own client configured for Gusto's API. */\n queryClient?: QueryClient\n /** Partial component overrides. Any component you do not supply uses the SDK's default React Aria implementation. */\n components?: Partial<ComponentsContextType>\n /** The application tree that should have access to the SDK. */\n children?: React.ReactNode\n}\n\n/**\n * Top-level provider that configures the SDK at the application level.\n *\n * @remarks\n * Wrap your application's component tree with `GustoProvider` so that any SDK component below it\n * has access to the API client, theme, locale, translations, and UI components. Components you\n * provide via the `components` prop override the SDK's React Aria defaults; any component you do\n * not supply uses the default.\n *\n * For full UI control without the bundled React Aria defaults, use {@link GustoProviderCustomUIAdapter}\n * instead and supply a complete component map.\n *\n * @param props - See {@link GustoApiProps}.\n * @returns The configured provider tree wrapping `children`.\n * @public\n */\nconst GustoProvider: React.FC<GustoApiProps> = props => {\n const { children, components = {}, locale, queryClient, ...remainingProps } = props\n\n return (\n <GustoProviderCustomUIAdapter\n locale={locale}\n queryClient={queryClient}\n {...remainingProps}\n components={createComponents(components)}\n >\n {/* react-aria locale provider that exposes correct locale to number formatters */}\n <I18nProvider locale={locale}>{children}</I18nProvider>\n </GustoProviderCustomUIAdapter>\n )\n}\n\nexport { GustoProvider }\n\n/**\n * Alias for {@link GustoProvider}.\n *\n * @deprecated Use {@link GustoProvider} instead.\n * @public\n */\nexport const GustoApiProvider = GustoProvider\n"],"names":["GustoProvider","props","children","components","locale","queryClient","remainingProps","jsx","GustoProviderCustomUIAdapter","createComponents","I18nProvider","GustoApiProvider"],"mappings":";;;;AA+CA,MAAMA,IAAyC,CAAAC,MAAS;AACtD,QAAM,EAAE,UAAAC,GAAU,YAAAC,IAAa,CAAA,GAAI,QAAAC,GAAQ,aAAAC,GAAa,GAAGC,EAAA,IAAmBL;AAE9E,SACE,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAAJ;AAAA,MACA,aAAAC;AAAA,MACC,GAAGC;AAAA,MACJ,YAAYG,EAAiBN,CAAU;AAAA,MAGvC,UAAA,gBAAAI,EAACG,GAAA,EAAa,QAAAN,GAAiB,UAAAF,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG9C,GAUaS,IAAmBX;"}
@@ -6,29 +6,69 @@ import { GustoSDKTheme } from '../ThemeProvider/theme';
6
6
  import { ResourceDictionary } from '../../types/Helpers';
7
7
  import { SDKHooks } from '../../types/hooks';
8
8
  import { ObservabilityHook } from '../../types/observability';
9
+ /**
10
+ * API client configuration passed to {@link GustoProvider} (and {@link GustoProviderCustomUIAdapter}).
11
+ *
12
+ * @public
13
+ */
9
14
  export interface APIConfig {
15
+ /** URL of your backend proxy that forwards SDK requests to the Gusto Embedded API. SDK components never call Gusto directly. */
10
16
  baseUrl: string;
17
+ /** Extra headers applied to every API request. Combined with any headers your proxy adds. */
11
18
  headers?: HeadersInit;
19
+ /** Request interceptor hooks. Use these to inspect, modify, or react to requests and responses. See {@link SDKHooks}. */
12
20
  hooks?: SDKHooks;
21
+ /** Observability hook for surfacing errors and metrics from the SDK to your monitoring stack. See {@link ObservabilityHook}. */
13
22
  observability?: ObservabilityHook;
14
23
  }
24
+ /**
25
+ * Shared configuration props accepted by {@link GustoProvider} and {@link GustoProviderCustomUIAdapter}.
26
+ *
27
+ * @public
28
+ */
15
29
  export interface GustoProviderProps {
30
+ /** API client configuration, including the proxy `baseUrl`, request hooks, and observability. See {@link APIConfig}. */
16
31
  config: APIConfig;
32
+ /** Translation overrides keyed by language and i18next namespace. Strings supplied here replace the SDK defaults for the matching keys. */
17
33
  dictionary?: ResourceDictionary;
34
+ /** Active i18next language. Defaults to `'en'`. */
18
35
  lng?: string;
36
+ /** BCP 47 locale used for number, date, and currency formatting throughout the SDK. Defaults to `'en-US'`. */
19
37
  locale?: string;
38
+ /** ISO 4217 currency code used for monetary formatting. Defaults to `'USD'`. */
20
39
  currency?: string;
21
- theme?: GustoSDKTheme;
40
+ /** Theme overrides applied to SDK components. See {@link GustoSDKTheme}. */
41
+ theme?: Partial<GustoSDKTheme>;
42
+ /** Element to use as the portal container for SDK popovers and dropdowns. Useful when rendering inside a modal or shadow root. */
22
43
  portalContainer?: HTMLElement;
44
+ /** Optional TanStack Query `QueryClient`. When omitted, the SDK creates its own client configured for Gusto's API. */
23
45
  queryClient?: QueryClient;
46
+ /** Complete map of UI components the SDK renders. Required because this adapter ships no defaults. */
24
47
  components: ComponentsContextType;
48
+ /** Loading indicator rendered while SDK queries are pending. Overrides the SDK default spinner. */
25
49
  LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator'];
26
50
  }
51
+ /**
52
+ * Props for {@link GustoProviderCustomUIAdapter}.
53
+ *
54
+ * @public
55
+ */
27
56
  export interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {
57
+ /** The application tree that should have access to the SDK. */
28
58
  children?: React.ReactNode;
29
59
  }
30
60
  /**
31
- * A provider that accepts UI component adapters through the components prop
61
+ * Top-level provider that requires a complete component map and ships no UI defaults.
62
+ *
63
+ * @remarks
64
+ * Use this adapter when you want full control over every UI primitive the SDK renders, or when
65
+ * you want to avoid the React Aria dependency for tree-shaking. Unlike {@link GustoProvider}, the
66
+ * `components` prop on {@link GustoProviderProps} is required and must supply every component the
67
+ * SDK renders.
68
+ *
69
+ * @param props - See {@link GustoProviderCustomUIAdapterProps}.
70
+ * @returns The configured provider tree wrapping `children`.
71
+ * @public
32
72
  */
33
73
  declare const GustoProviderCustomUIAdapter: React.FC<GustoProviderCustomUIAdapterProps>;
34
74
  export { GustoProviderCustomUIAdapter };
@@ -7,14 +7,13 @@ import { ApiProvider as I } from "../ApiProvider/ApiProvider.js";
7
7
  import { LoadingIndicatorProvider as L } from "../LoadingIndicatorProvider/LoadingIndicatorProvider.js";
8
8
  import { sanitizeError as x } from "../ObservabilityProvider/sanitization.js";
9
9
  import { SDKI18next as m } from "./SDKI18next.js";
10
- import "../../shared/constants.js";
11
10
  import { InternalError as z } from "../../components/Common/InternalError/InternalError.js";
12
11
  import { LocaleProvider as D } from "../LocaleProvider/LocaleProvider.js";
13
12
  import "../LocaleProvider/useLocale.js";
14
13
  import { ThemeProvider as U } from "../ThemeProvider/ThemeProvider.js";
15
14
  import { normalizeToSDKError as T } from "../../types/sdkError.js";
16
15
  import { ObservabilityProvider as w } from "../ObservabilityProvider/ObservabilityProvider.js";
17
- const X = (s) => {
16
+ const W = (s) => {
18
17
  const {
19
18
  children: l,
20
19
  config: r,
@@ -67,6 +66,6 @@ const X = (s) => {
67
66
  ) }, n) }) }) }) }) }) });
68
67
  };
69
68
  export {
70
- X as GustoProviderCustomUIAdapter
69
+ W as GustoProviderCustomUIAdapter
71
70
  };
72
71
  //# 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 type { ErrorInfo } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo } 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 { ObservabilityProvider } from '../ObservabilityProvider'\nimport { sanitizeError } from '../ObservabilityProvider/sanitization'\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'\nimport type { ObservabilityHook } from '@/types/observability'\nimport { normalizeToSDKError } from '@/types/sdkError'\n\nexport interface APIConfig {\n baseUrl: string\n headers?: HeadersInit\n hooks?: SDKHooks\n observability?: ObservabilityHook\n}\n\nexport interface GustoProviderProps {\n config: APIConfig\n dictionary?: ResourceDictionary\n lng?: string\n locale?: string\n currency?: string\n theme?: GustoSDKTheme\n portalContainer?: HTMLElement\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 portalContainer,\n components,\n LoaderComponent,\n queryClient,\n } = props\n\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\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 useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n const handleTopLevelError = useMemo(() => {\n if (!config.observability?.onError) return undefined\n\n return (error: unknown, errorInfo: ErrorInfo) => {\n if (!config.observability?.onError) return\n\n const sdkError = normalizeToSDKError(error)\n\n const observabilityError = {\n ...sdkError,\n timestamp: Date.now(),\n componentStack: errorInfo.componentStack ?? undefined,\n }\n\n const sanitizedError = sanitizeError(observabilityError, config.observability.sanitization)\n\n config.observability.onError(sanitizedError)\n }\n }, [config.observability])\n return (\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ObservabilityProvider observability={config.observability}>\n <ErrorBoundary FallbackComponent={InternalError} onError={handleTopLevelError}>\n <ThemeProvider theme={theme} portalContainer={portalContainer}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider\n url={config.baseUrl}\n headers={config.headers}\n hooks={config.hooks}\n queryClient={queryClient}\n >\n {children}\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ObservabilityProvider>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n )\n}\n\nexport { GustoProviderCustomUIAdapter }\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","portalContainer","components","LoaderComponent","queryClient","language","lang","ns","SDKI18next","useEffect","handleTopLevelError","useMemo","error","errorInfo","observabilityError","normalizeToSDKError","sanitizedError","sanitizeError","jsx","ComponentsProvider","LoadingIndicatorProvider","ObservabilityProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider"],"mappings":";;;;;;;;;;;;;;;;AAkDA,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,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACEX;AAEJ,MAAIG;AACF,eAAWS,KAAYT,GAAY;AACjC,YAAMU,IAAOD;AACb,iBAAWE,KAAMX,EAAWU,CAAI;AAC9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCX,EAAWU,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAGF,EAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeX,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC;AAER,QAAMa,IAAsBC,EAAQ,MAAM;AACxC,QAAKhB,EAAO,eAAe;AAE3B,aAAO,CAACiB,GAAgBC,MAAyB;AAC/C,YAAI,CAAClB,EAAO,eAAe,QAAS;AAIpC,cAAMmB,IAAqB;AAAA,UACzB,GAHeC,EAAoBH,CAAK;AAAA,UAIxC,WAAW,KAAK,IAAA;AAAA,UAChB,gBAAgBC,EAAU,kBAAkB;AAAA,QAAA,GAGxCG,IAAiBC,EAAcH,GAAoBnB,EAAO,cAAc,YAAY;AAE1F,QAAAA,EAAO,cAAc,QAAQqB,CAAc;AAAA,MAC7C;AAAA,EACF,GAAG,CAACrB,EAAO,aAAa,CAAC;AACzB,SACE,gBAAAuB,EAACC,GAAA,EAAmB,OAAOjB,GACzB,UAAA,gBAAAgB,EAACE,GAAA,EAAyB,OAAOjB,GAC/B,UAAA,gBAAAe,EAACG,GAAA,EAAsB,eAAe1B,EAAO,eAC3C,UAAA,gBAAAuB,EAACI,GAAA,EAAc,mBAAmBC,GAAe,SAASb,GACxD,UAAA,gBAAAQ,EAACM,GAAA,EAAc,OAAAxB,GAAc,iBAAAC,GAC3B,UAAA,gBAAAiB,EAACO,GAAA,EAAe,QAAA3B,GAAgB,UAAAC,GAC9B,UAAA,gBAAAmB,EAACQ,GAAA,EAAgB,MAAMlB,GACrB,UAAA,gBAAAU;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,KAAKhC,EAAO;AAAA,MACZ,SAASA,EAAO;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,aAAAS;AAAA,MAEC,UAAAV;AAAA,IAAA;AAAA,EAAA,KAPmCG,CASxC,GACF,GACF,EAAA,CACF,EAAA,CACF,GACF,GACF;AAEJ;"}
1
+ {"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport type { ErrorInfo } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo } 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 { ObservabilityProvider } from '../ObservabilityProvider'\nimport { sanitizeError } from '../ObservabilityProvider/sanitization'\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'\nimport type { ObservabilityHook } from '@/types/observability'\nimport { normalizeToSDKError } from '@/types/sdkError'\n\n/**\n * API client configuration passed to {@link GustoProvider} (and {@link GustoProviderCustomUIAdapter}).\n *\n * @public\n */\nexport interface APIConfig {\n /** URL of your backend proxy that forwards SDK requests to the Gusto Embedded API. SDK components never call Gusto directly. */\n baseUrl: string\n /** Extra headers applied to every API request. Combined with any headers your proxy adds. */\n headers?: HeadersInit\n /** Request interceptor hooks. Use these to inspect, modify, or react to requests and responses. See {@link SDKHooks}. */\n hooks?: SDKHooks\n /** Observability hook for surfacing errors and metrics from the SDK to your monitoring stack. See {@link ObservabilityHook}. */\n observability?: ObservabilityHook\n}\n\n/**\n * Shared configuration props accepted by {@link GustoProvider} and {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoProviderProps {\n /** API client configuration, including the proxy `baseUrl`, request hooks, and observability. See {@link APIConfig}. */\n config: APIConfig\n /** Translation overrides keyed by language and i18next namespace. Strings supplied here replace the SDK defaults for the matching keys. */\n dictionary?: ResourceDictionary\n /** Active i18next language. Defaults to `'en'`. */\n lng?: string\n /** BCP 47 locale used for number, date, and currency formatting throughout the SDK. Defaults to `'en-US'`. */\n locale?: string\n /** ISO 4217 currency code used for monetary formatting. Defaults to `'USD'`. */\n currency?: string\n /** Theme overrides applied to SDK components. See {@link GustoSDKTheme}. */\n theme?: Partial<GustoSDKTheme>\n /** Element to use as the portal container for SDK popovers and dropdowns. Useful when rendering inside a modal or shadow root. */\n portalContainer?: HTMLElement\n /** Optional TanStack Query `QueryClient`. When omitted, the SDK creates its own client configured for Gusto's API. */\n queryClient?: QueryClient\n /** Complete map of UI components the SDK renders. Required because this adapter ships no defaults. */\n components: ComponentsContextType\n /** Loading indicator rendered while SDK queries are pending. Overrides the SDK default spinner. */\n LoaderComponent?: LoadingIndicatorContextProps['LoadingIndicator']\n}\n\n/**\n * Props for {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoProviderCustomUIAdapterProps extends GustoProviderProps {\n /** The application tree that should have access to the SDK. */\n children?: React.ReactNode\n}\n\n/**\n * Top-level provider that requires a complete component map and ships no UI defaults.\n *\n * @remarks\n * Use this adapter when you want full control over every UI primitive the SDK renders, or when\n * you want to avoid the React Aria dependency for tree-shaking. Unlike {@link GustoProvider}, the\n * `components` prop on {@link GustoProviderProps} is required and must supply every component the\n * SDK renders.\n *\n * @param props - See {@link GustoProviderCustomUIAdapterProps}.\n * @returns The configured provider tree wrapping `children`.\n * @public\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 portalContainer,\n components,\n LoaderComponent,\n queryClient,\n } = props\n\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\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 useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n const handleTopLevelError = useMemo(() => {\n if (!config.observability?.onError) return undefined\n\n return (error: unknown, errorInfo: ErrorInfo) => {\n if (!config.observability?.onError) return\n\n const sdkError = normalizeToSDKError(error)\n\n const observabilityError = {\n ...sdkError,\n timestamp: Date.now(),\n componentStack: errorInfo.componentStack ?? undefined,\n }\n\n const sanitizedError = sanitizeError(observabilityError, config.observability.sanitization)\n\n config.observability.onError(sanitizedError)\n }\n }, [config.observability])\n return (\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ObservabilityProvider observability={config.observability}>\n <ErrorBoundary FallbackComponent={InternalError} onError={handleTopLevelError}>\n <ThemeProvider theme={theme} portalContainer={portalContainer}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider\n url={config.baseUrl}\n headers={config.headers}\n hooks={config.hooks}\n queryClient={queryClient}\n >\n {children}\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ObservabilityProvider>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n )\n}\n\nexport { GustoProviderCustomUIAdapter }\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","portalContainer","components","LoaderComponent","queryClient","language","lang","ns","SDKI18next","useEffect","handleTopLevelError","useMemo","error","errorInfo","observabilityError","normalizeToSDKError","sanitizedError","sanitizeError","jsx","ComponentsProvider","LoadingIndicatorProvider","ObservabilityProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider"],"mappings":";;;;;;;;;;;;;;;AA0FA,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,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACEX;AAEJ,MAAIG;AACF,eAAWS,KAAYT,GAAY;AACjC,YAAMU,IAAOD;AACb,iBAAWE,KAAMX,EAAWU,CAAI;AAC9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCX,EAAWU,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAGF,EAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeX,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC;AAER,QAAMa,IAAsBC,EAAQ,MAAM;AACxC,QAAKhB,EAAO,eAAe;AAE3B,aAAO,CAACiB,GAAgBC,MAAyB;AAC/C,YAAI,CAAClB,EAAO,eAAe,QAAS;AAIpC,cAAMmB,IAAqB;AAAA,UACzB,GAHeC,EAAoBH,CAAK;AAAA,UAIxC,WAAW,KAAK,IAAA;AAAA,UAChB,gBAAgBC,EAAU,kBAAkB;AAAA,QAAA,GAGxCG,IAAiBC,EAAcH,GAAoBnB,EAAO,cAAc,YAAY;AAE1F,QAAAA,EAAO,cAAc,QAAQqB,CAAc;AAAA,MAC7C;AAAA,EACF,GAAG,CAACrB,EAAO,aAAa,CAAC;AACzB,SACE,gBAAAuB,EAACC,GAAA,EAAmB,OAAOjB,GACzB,UAAA,gBAAAgB,EAACE,GAAA,EAAyB,OAAOjB,GAC/B,UAAA,gBAAAe,EAACG,GAAA,EAAsB,eAAe1B,EAAO,eAC3C,UAAA,gBAAAuB,EAACI,GAAA,EAAc,mBAAmBC,GAAe,SAASb,GACxD,UAAA,gBAAAQ,EAACM,GAAA,EAAc,OAAAxB,GAAc,iBAAAC,GAC3B,UAAA,gBAAAiB,EAACO,GAAA,EAAe,QAAA3B,GAAgB,UAAAC,GAC9B,UAAA,gBAAAmB,EAACQ,GAAA,EAAgB,MAAMlB,GACrB,UAAA,gBAAAU;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,KAAKhC,EAAO;AAAA,MACZ,SAASA,EAAO;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,aAAAS;AAAA,MAEC,UAAAV;AAAA,IAAA;AAAA,EAAA,KAPmCG,CASxC,GACF,GACF,EAAA,CACF,EAAA,CACF,GACF,GACF;AAEJ;"}
@@ -1,4 +1,4 @@
1
1
  import { i18n } from 'i18next';
2
- /**Creating new i18next instance to avoid global clashing */
2
+ /** @internal */
3
3
  declare const SDKI18next: i18n;
4
4
  export { SDKI18next };
@@ -1 +1 @@
1
- {"version":3,"file":"SDKI18next.js","sources":["../../../src/contexts/GustoProvider/SDKI18next.ts"],"sourcesContent":["import type { i18n } from 'i18next'\nimport i18next from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport { defaultNS } from '@/i18n'\nimport commonEn from '@/i18n/en/common.json'\n\n/**Creating new i18next instance to avoid global clashing */\nconst SDKI18next: i18n = i18next.createInstance({\n debug: false,\n fallbackLng: 'en',\n resources: {\n en: { common: commonEn },\n },\n defaultNS,\n})\n\n// eslint-disable-next-line\nSDKI18next.use(initReactI18next).init().catch(console.error)\n\nexport { SDKI18next }\n"],"names":["SDKI18next","i18next","commonEn","defaultNS","initReactI18next"],"mappings":";;;;AAOA,MAAMA,IAAmBC,EAAQ,eAAe;AAAA,EAC9C,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,IACT,IAAI,EAAE,QAAQC,EAAA;AAAA,EAAS;AAAA,EAEzB,WAAAC;AACF,CAAC;AAGDH,EAAW,IAAII,CAAgB,EAAE,OAAO,MAAM,QAAQ,KAAK;"}
1
+ {"version":3,"file":"SDKI18next.js","sources":["../../../src/contexts/GustoProvider/SDKI18next.ts"],"sourcesContent":["import type { i18n } from 'i18next'\nimport i18next from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport { defaultNS } from '@/i18n'\nimport commonEn from '@/i18n/en/common.json'\n\n/** @internal */\nconst SDKI18next: i18n = i18next.createInstance({\n debug: false,\n fallbackLng: 'en',\n resources: {\n en: { common: commonEn },\n },\n defaultNS,\n})\n\n// eslint-disable-next-line\nSDKI18next.use(initReactI18next).init().catch(console.error)\n\nexport { SDKI18next }\n"],"names":["SDKI18next","i18next","commonEn","defaultNS","initReactI18next"],"mappings":";;;;AAOA,MAAMA,IAAmBC,EAAQ,eAAe;AAAA,EAC9C,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,IACT,IAAI,EAAE,QAAQC,EAAA;AAAA,EAAS;AAAA,EAEzB,WAAAC;AACF,CAAC;AAGDH,EAAW,IAAII,CAAgB,EAAE,OAAO,MAAM,QAAQ,KAAK;"}
@@ -1,6 +1,4 @@
1
1
  import "./types/i18next.d.ts"
2
2
  export { GustoProvider, GustoApiProvider } from './GustoProvider';
3
3
  export type { GustoApiProps } from './GustoProvider';
4
- export { SDKI18next } from './SDKI18next';
5
4
  export { GustoProviderCustomUIAdapter } from './GustoProviderCustomUIAdapter';
6
- export type { GustoProviderProps, GustoProviderCustomUIAdapterProps, APIConfig, } from './GustoProviderCustomUIAdapter';
@@ -1,7 +1,9 @@
1
1
  import { default as React } from 'react';
2
2
  import { GustoSDKTheme } from './theme';
3
+ /** @internal */
3
4
  export interface ThemeProviderProps {
4
- theme?: GustoSDKTheme;
5
+ /** Partial set of theme tokens that override the SDK defaults. */
6
+ theme?: Partial<GustoSDKTheme>;
5
7
  /**
6
8
  * Element to use as the portal container for all SDK overlays (Select, ComboBox,
7
9
  * DatePicker, Menu, etc.). Defaults to the SDK's root article element.
@@ -10,6 +12,8 @@ export interface ThemeProviderProps {
10
12
  * when your app's scroll or clipping context interferes with overlay positioning.
11
13
  */
12
14
  portalContainer?: HTMLElement;
15
+ /** Subtree rendered inside the SDK's themed root element. */
13
16
  children?: React.ReactNode;
14
17
  }
18
+ /** @internal */
15
19
  export declare const ThemeProvider: React.FC<ThemeProviderProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.js","sources":["../../../src/contexts/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import type React from 'react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { ThemeContext } from './useTheme'\nimport { mergePartnerTheme, type GustoSDKTheme } from './theme'\nimport '@/styles/sdk.scss'\n\nexport interface ThemeProviderProps {\n theme?: GustoSDKTheme\n /**\n * Element to use as the portal container for all SDK overlays (Select, ComboBox,\n * DatePicker, Menu, etc.). Defaults to the SDK's root article element.\n *\n * Pass `document.body` (or another stable element outside the SDK's container)\n * when your app's scroll or clipping context interferes with overlay positioning.\n */\n portalContainer?: HTMLElement\n children?: React.ReactNode\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme: partnerThemeOverrides = {},\n portalContainer,\n children,\n}) => {\n const GThemeVariables = useRef<HTMLStyleElement | null>(null)\n const portalContainerRef = useRef<HTMLElement | null>(null)\n\n const articleRef = useCallback(\n (el: HTMLElement | null) => {\n portalContainerRef.current = portalContainer ?? el\n },\n [portalContainer],\n )\n\n const mergedTheme = useMemo(\n () => mergePartnerTheme(partnerThemeOverrides),\n [partnerThemeOverrides],\n )\n\n const cssContent = useMemo(\n () => `.GSDK{\\n${parseThemeToCSS(mergedTheme).join('\\n')}\\n}`,\n [mergedTheme],\n )\n\n useEffect(() => {\n if (!GThemeVariables.current) {\n GThemeVariables.current = document.createElement('style')\n GThemeVariables.current.setAttribute('data-testid', 'GSDK')\n document.head.appendChild(GThemeVariables.current)\n }\n\n GThemeVariables.current.textContent = cssContent\n }, [cssContent])\n\n return (\n <ThemeContext.Provider value={{ container: portalContainerRef }}>\n <article className=\"GSDK\" data-testid=\"GSDK\" ref={articleRef}>\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","portalContainer","children","GThemeVariables","useRef","portalContainerRef","articleRef","useCallback","el","mergedTheme","useMemo","mergePartnerTheme","cssContent","parseThemeToCSS","useEffect","ThemeContext","jsx","theme","prefix","cssProps","key","value"],"mappings":";;;;;AAmBO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,OAAOC,IAAwB,CAAA;AAAA,EAC/B,iBAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAkBC,EAAgC,IAAI,GACtDC,IAAqBD,EAA2B,IAAI,GAEpDE,IAAaC;AAAA,IACjB,CAACC,MAA2B;AAC1B,MAAAH,EAAmB,UAAUJ,KAAmBO;AAAA,IAClD;AAAA,IACA,CAACP,CAAe;AAAA,EAAA,GAGZQ,IAAcC;AAAA,IAClB,MAAMC,EAAkBX,CAAqB;AAAA,IAC7C,CAACA,CAAqB;AAAA,EAAA,GAGlBY,IAAaF;AAAA,IACjB,MAAM;AAAA,EAAWG,EAAgBJ,CAAW,EAAE,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA,IACxD,CAACA,CAAW;AAAA,EAAA;AAGd,SAAAK,EAAU,MAAM;AACd,IAAKX,EAAgB,YACnBA,EAAgB,UAAU,SAAS,cAAc,OAAO,GACxDA,EAAgB,QAAQ,aAAa,eAAe,MAAM,GAC1D,SAAS,KAAK,YAAYA,EAAgB,OAAO,IAGnDA,EAAgB,QAAQ,cAAcS;AAAA,EACxC,GAAG,CAACA,CAAU,CAAC,qBAGZG,EAAa,UAAb,EAAsB,OAAO,EAAE,WAAWV,EAAA,GACzC,UAAA,gBAAAW,EAAC,WAAA,EAAQ,WAAU,QAAO,eAAY,QAAO,KAAKV,GAC/C,UAAAJ,GACH,GACF;AAEJ,GAKMW,IAAkB,CAACI,GAAsBC,MAA8B;AAC3E,QAAMC,IAAqB,CAAA;AAC3B,aAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQJ,CAAK;AAC7C,IAAI,OAAOI,KAAU,WACnBF,EAAS,KAAK,GAAGN,EAAgBQ,GAAOH,IAASA,IAAS,MAAME,IAAMA,CAAG,CAAC,IAE1ED,EAAS,KAAK,OAAOD,IAASA,IAAS,MAAME,IAAMA,CAAG,KAAKC,CAAK,GAAG;AAGvE,SAAOF;AACT;"}
1
+ {"version":3,"file":"ThemeProvider.js","sources":["../../../src/contexts/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["import type React from 'react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { ThemeContext } from './useTheme'\nimport { mergePartnerTheme, type GustoSDKTheme } from './theme'\nimport '@/styles/sdk.scss'\n\n/** @internal */\nexport interface ThemeProviderProps {\n /** Partial set of theme tokens that override the SDK defaults. */\n theme?: Partial<GustoSDKTheme>\n /**\n * Element to use as the portal container for all SDK overlays (Select, ComboBox,\n * DatePicker, Menu, etc.). Defaults to the SDK's root article element.\n *\n * Pass `document.body` (or another stable element outside the SDK's container)\n * when your app's scroll or clipping context interferes with overlay positioning.\n */\n portalContainer?: HTMLElement\n /** Subtree rendered inside the SDK's themed root element. */\n children?: React.ReactNode\n}\n\n/** @internal */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme: partnerThemeOverrides = {},\n portalContainer,\n children,\n}) => {\n const GThemeVariables = useRef<HTMLStyleElement | null>(null)\n const portalContainerRef = useRef<HTMLElement | null>(null)\n\n const articleRef = useCallback(\n (el: HTMLElement | null) => {\n portalContainerRef.current = portalContainer ?? el\n },\n [portalContainer],\n )\n\n const mergedTheme = useMemo(\n () => mergePartnerTheme(partnerThemeOverrides),\n [partnerThemeOverrides],\n )\n\n const cssContent = useMemo(\n () => `.GSDK{\\n${parseThemeToCSS(mergedTheme).join('\\n')}\\n}`,\n [mergedTheme],\n )\n\n useEffect(() => {\n if (!GThemeVariables.current) {\n GThemeVariables.current = document.createElement('style')\n GThemeVariables.current.setAttribute('data-testid', 'GSDK')\n document.head.appendChild(GThemeVariables.current)\n }\n\n GThemeVariables.current.textContent = cssContent\n }, [cssContent])\n\n return (\n <ThemeContext.Provider value={{ container: portalContainerRef }}>\n <article className=\"GSDK\" data-testid=\"GSDK\" ref={articleRef}>\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: Partial<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","portalContainer","children","GThemeVariables","useRef","portalContainerRef","articleRef","useCallback","el","mergedTheme","useMemo","mergePartnerTheme","cssContent","parseThemeToCSS","useEffect","ThemeContext","jsx","theme","prefix","cssProps","key","value"],"mappings":";;;;;AAuBO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,OAAOC,IAAwB,CAAA;AAAA,EAC/B,iBAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAMC,IAAkBC,EAAgC,IAAI,GACtDC,IAAqBD,EAA2B,IAAI,GAEpDE,IAAaC;AAAA,IACjB,CAACC,MAA2B;AAC1B,MAAAH,EAAmB,UAAUJ,KAAmBO;AAAA,IAClD;AAAA,IACA,CAACP,CAAe;AAAA,EAAA,GAGZQ,IAAcC;AAAA,IAClB,MAAMC,EAAkBX,CAAqB;AAAA,IAC7C,CAACA,CAAqB;AAAA,EAAA,GAGlBY,IAAaF;AAAA,IACjB,MAAM;AAAA,EAAWG,EAAgBJ,CAAW,EAAE,KAAK;AAAA,CAAI,CAAC;AAAA;AAAA,IACxD,CAACA,CAAW;AAAA,EAAA;AAGd,SAAAK,EAAU,MAAM;AACd,IAAKX,EAAgB,YACnBA,EAAgB,UAAU,SAAS,cAAc,OAAO,GACxDA,EAAgB,QAAQ,aAAa,eAAe,MAAM,GAC1D,SAAS,KAAK,YAAYA,EAAgB,OAAO,IAGnDA,EAAgB,QAAQ,cAAcS;AAAA,EACxC,GAAG,CAACA,CAAU,CAAC,qBAGZG,EAAa,UAAb,EAAsB,OAAO,EAAE,WAAWV,EAAA,GACzC,UAAA,gBAAAW,EAAC,WAAA,EAAQ,WAAU,QAAO,eAAY,QAAO,KAAKV,GAC/C,UAAAJ,GACH,GACF;AAEJ,GAKMW,IAAkB,CAACI,GAA+BC,MAA8B;AACpF,QAAMC,IAAqB,CAAA;AAC3B,aAAW,CAACC,GAAKC,CAAK,KAAK,OAAO,QAAQJ,CAAK;AAC7C,IAAI,OAAOI,KAAU,WACnBF,EAAS,KAAK,GAAGN,EAAgBQ,GAAOH,IAASA,IAAS,MAAME,IAAMA,CAAG,CAAC,IAE1ED,EAAS,KAAK,OAAOD,IAASA,IAAS,MAAME,IAAMA,CAAG,KAAKC,CAAK,GAAG;AAGvE,SAAOF;AACT;"}
@@ -1,4 +1,5 @@
1
1
  import { RenderOptions } from '@testing-library/react';
2
2
  import { ReactElement } from 'react';
3
+ /** @internal */
3
4
  declare const customRender: (ui: ReactElement, options?: Omit<RenderOptions, "wrapper">) => import('@testing-library/react').RenderResult<typeof import("@testing-library/dom/types/queries"), HTMLElement, HTMLElement>;
4
5
  export { customRender as render };
@@ -1,4 +1,3 @@
1
1
  import "./types/i18next.d.ts"
2
2
  export { ThemeProvider, type ThemeProviderProps } from './ThemeProvider';
3
3
  export { useTheme } from './useTheme';
4
- export { render } from './customRender';