@gusto/embedded-react-sdk 0.56.4 → 0.56.6

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 (138) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/components/Common/DocumentEmbed/DocumentEmbed.js +18 -0
  3. package/dist/components/Common/DocumentEmbed/DocumentEmbed.js.map +1 -0
  4. package/dist/components/Common/DocumentViewer/DocumentViewer.js +35 -29
  5. package/dist/components/Common/DocumentViewer/DocumentViewer.js.map +1 -1
  6. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  7. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  8. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  9. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  10. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  11. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  12. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  13. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  14. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  15. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  16. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +6 -5
  17. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  18. package/dist/components/Company/Industry/Context.js +7 -6
  19. package/dist/components/Company/Industry/Context.js.map +1 -1
  20. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  21. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  22. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  23. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  24. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  25. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  26. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js +39 -0
  27. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -0
  28. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.js +54 -0
  29. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.js.map +1 -0
  30. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js +56 -0
  31. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -0
  32. package/dist/components/Company/PaySchedule/management/PaySchedule.js +54 -39
  33. package/dist/components/Company/PaySchedule/management/PaySchedule.js.map +1 -1
  34. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +48 -32
  35. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
  36. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +8 -8
  37. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
  38. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js +74 -32
  39. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
  40. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  41. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  42. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  43. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  44. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +4 -3
  45. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  46. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +64 -61
  47. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
  48. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +133 -134
  49. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
  50. package/dist/components/Contractor/ContractorListFlow/ContractorListFlow.js.map +1 -1
  51. package/dist/components/Contractor/ContractorListFlow/ContractorListFlowComponents.js +22 -9
  52. package/dist/components/Contractor/ContractorListFlow/ContractorListFlowComponents.js.map +1 -1
  53. package/dist/components/Contractor/ContractorListFlow/contractorListStateMachine.js +51 -20
  54. package/dist/components/Contractor/ContractorListFlow/contractorListStateMachine.js.map +1 -1
  55. package/dist/components/Contractor/Dismissal/Dismissal.js +77 -0
  56. package/dist/components/Contractor/Dismissal/Dismissal.js.map +1 -0
  57. package/dist/components/Contractor/Dismissal/DismissalPresentation.js +57 -0
  58. package/dist/components/Contractor/Dismissal/DismissalPresentation.js.map +1 -0
  59. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +44 -0
  60. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -0
  61. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js +17 -14
  62. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
  63. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +45 -41
  64. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  65. package/dist/components/Contractor/exports/contractorManagement.js +56 -54
  66. package/dist/components/Contractor/exports/contractorManagement.js.map +1 -1
  67. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  68. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  69. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js +27 -16
  70. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -1
  71. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js +25 -17
  72. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js.map +1 -1
  73. package/dist/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.js +6 -5
  74. package/dist/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.js.map +1 -1
  75. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +3 -2
  76. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  77. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +201 -196
  78. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  79. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +55 -52
  80. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  81. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +38 -29
  82. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
  83. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +63 -62
  84. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  85. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +25 -18
  86. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  87. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +72 -68
  88. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
  89. package/dist/components/Payroll/usePreparedPayrollData.js +3 -2
  90. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  91. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  92. package/dist/i18n/I18n.js +2 -0
  93. package/dist/i18n/I18n.js.map +1 -1
  94. package/dist/i18n/en/Company.Management.AutoPilotDialog.json.js +22 -0
  95. package/dist/i18n/en/Company.Management.AutoPilotDialog.json.js.map +1 -0
  96. package/dist/i18n/en/Contractor.Dismissal.json.js +20 -0
  97. package/dist/i18n/en/Contractor.Dismissal.json.js.map +1 -0
  98. package/dist/i18n/en/Contractor.Payments.PaymentStatement.json.js +2 -2
  99. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +38 -38
  100. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +31 -31
  101. package/dist/i18n/en/common.json.js +37 -35
  102. package/dist/i18n/en/common.json.js.map +1 -1
  103. package/dist/package.json.js +1 -1
  104. package/dist/shared/constants.js +19 -15
  105. package/dist/shared/constants.js.map +1 -1
  106. package/dist/src/components/Common/DocumentEmbed/DocumentEmbed.d.ts +3 -0
  107. package/dist/src/components/Common/DocumentEmbed/DocumentEmbedTypes.d.ts +25 -0
  108. package/dist/src/components/Common/DocumentEmbed/index.d.ts +2 -0
  109. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +11 -0
  110. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.d.ts +17 -0
  111. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/index.d.ts +1 -0
  112. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +22 -0
  113. package/dist/src/components/Company/PaySchedule/management/PaySchedule.d.ts +17 -1
  114. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +2 -0
  115. package/dist/src/components/Company/PaySchedule/management/index.d.ts +1 -1
  116. package/dist/src/components/Company/exports/companyManagement.d.ts +1 -1
  117. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorList.d.ts +2 -0
  118. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
  119. package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlow.d.ts +6 -4
  120. package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.d.ts +2 -0
  121. package/dist/src/components/Contractor/ContractorListFlow/contractorListStateMachine.d.ts +1 -0
  122. package/dist/src/components/Contractor/ContractorListFlow/contractorListStateMachine.test.d.ts +1 -0
  123. package/dist/src/components/Contractor/Dismissal/Dismissal.d.ts +45 -0
  124. package/dist/src/components/Contractor/Dismissal/DismissalPresentation.d.ts +17 -0
  125. package/dist/src/components/Contractor/Dismissal/useDismissal/useDismissal.d.ts +41 -0
  126. package/dist/src/components/Contractor/Dismissal/useDismissal/useDismissal.test.d.ts +1 -0
  127. package/dist/src/components/Contractor/exports/contractorManagement.d.ts +1 -0
  128. package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +1 -1
  129. package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +6 -0
  130. package/dist/src/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.test.d.ts +1 -0
  131. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +19 -0
  132. package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
  133. package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +5 -2
  134. package/dist/src/i18n/en/common.json.d.ts +3 -0
  135. package/dist/src/i18n/types.d.ts +128 -0
  136. package/dist/src/shared/constants.d.ts +8 -0
  137. package/docs/guides/endpoint-inventory.json +30 -1
  138. package/package.json +1 -1
@@ -1,73 +1,71 @@
1
- import { jsxs as o, Fragment as H, jsx as a } from "react/jsx-runtime";
2
- import { useState as b, useEffect as j } from "react";
3
- import { useTranslation as $ } from "react-i18next";
4
- import { Flex as m } from "../../../Common/Flex/Flex.js";
5
- import { EmptyData as z } from "../../../Common/EmptyData/EmptyData.js";
6
- import { HamburgerMenu as S } from "../../../Common/HamburgerMenu/HamburgerMenu.js";
7
- import { useComponentContext as A } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
8
- import { ContractorOnboardingStatusBadge as F } from "../../../Common/OnboardingStatusBadge/index.js";
9
- import G from "../../../../assets/icons/trashcan.svg.js";
1
+ import { jsxs as s, Fragment as j, jsx as t } from "react/jsx-runtime";
2
+ import { useState as b, useEffect as $ } from "react";
3
+ import { useTranslation as z } from "react-i18next";
4
+ import { getContractorDisplayName as y } from "../../shared/helpers.js";
5
+ import { Flex as d } from "../../../Common/Flex/Flex.js";
6
+ import { EmptyData as F } from "../../../Common/EmptyData/EmptyData.js";
7
+ import { HamburgerMenu as L } from "../../../Common/HamburgerMenu/HamburgerMenu.js";
8
+ import { useComponentContext as S } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
9
+ import { ContractorOnboardingStatusBadge as G } from "../../../Common/OnboardingStatusBadge/index.js";
10
+ import W from "../../../../assets/icons/trashcan.svg.js";
10
11
  import D from "../../../../assets/icons/x-circle.svg.js";
11
- import W from "../../../../assets/icons/eye.svg.js";
12
- import U from "../../../../assets/icons/slash-circle.svg.js";
13
- import X from "../../../../assets/icons/plus-circle.svg.js";
14
- import { firstLastName as q } from "../../../../helpers/formattedStrings.js";
15
- import { normalizeToDate as J, formatDateLong as K, formatDateLongWithYear as Q } from "../../../../helpers/dateFormatting.js";
16
- import { ContractorOnboardingStatus as y, CONTRACTOR_TYPE as Z } from "../../../../shared/constants.js";
17
- import { VisuallyHidden as ee } from "../../../Common/VisuallyHidden/VisuallyHidden.js";
18
- import { useDataView as ie } from "../../../Common/DataView/useDataView.js";
19
- import { DataView as te } from "../../../Common/DataView/DataView.js";
20
- function w(n) {
21
- return n.type === Z.BUSINESS ? n.businessName ?? "" : q({ first_name: n.firstName, last_name: n.lastName });
22
- }
23
- function ae({ contractor: n }) {
24
- const l = A();
25
- return /* @__PURE__ */ o(m, { flexDirection: "column", gap: 0, children: [
26
- /* @__PURE__ */ a(l.Text, { size: "sm", weight: "medium", children: w(n) }),
27
- /* @__PURE__ */ a(l.Text, { variant: "supporting", size: "sm", children: n.type ?? "–" })
12
+ import X from "../../../../assets/icons/eye.svg.js";
13
+ import q from "../../../../assets/icons/slash-circle.svg.js";
14
+ import J from "../../../../assets/icons/plus-circle.svg.js";
15
+ import { normalizeToDate as K, formatDateLong as Q, formatDateLongWithYear as U } from "../../../../helpers/dateFormatting.js";
16
+ import { ContractorOnboardingStatus as w } from "../../../../shared/constants.js";
17
+ import { VisuallyHidden as Z } from "../../../Common/VisuallyHidden/VisuallyHidden.js";
18
+ import { useDataView as ee } from "../../../Common/DataView/useDataView.js";
19
+ import { DataView as ie } from "../../../Common/DataView/DataView.js";
20
+ function te({ contractor: l }) {
21
+ const r = S();
22
+ return /* @__PURE__ */ s(d, { flexDirection: "column", gap: 0, children: [
23
+ /* @__PURE__ */ t(r.Text, { size: "sm", weight: "medium", children: y(l) }),
24
+ /* @__PURE__ */ t(r.Text, { variant: "supporting", size: "sm", children: l.type ?? "–" })
28
25
  ] });
29
26
  }
30
- function p(n) {
31
- const l = J(n);
32
- return l ? l.getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? K(l) : Q(l) : "";
27
+ function p(l) {
28
+ const r = K(l);
29
+ return r ? r.getFullYear() === (/* @__PURE__ */ new Date()).getFullYear() ? Q(r) : U(r) : "";
33
30
  }
34
- function ne(n) {
35
- return n === y.ADMIN_ONBOARDING_REVIEW || n === y.SELF_ONBOARDING_REVIEW;
31
+ function ae(l) {
32
+ return l === w.ADMIN_ONBOARDING_REVIEW || l === w.SELF_ONBOARDING_REVIEW;
36
33
  }
37
34
  function Ae({
38
- className: n,
39
- contractors: l,
40
- isFetching: u,
41
- selectedTab: c,
42
- onTabChange: L,
43
- status: v,
44
- pagination: E,
45
- onEdit: I,
35
+ className: l,
36
+ contractors: r,
37
+ isFetching: c,
38
+ selectedTab: u,
39
+ onTabChange: k,
40
+ successMessage: v,
41
+ status: A,
42
+ pagination: I,
43
+ onEdit: E,
46
44
  onView: R,
47
- onDismiss: k,
48
- onRehire: N,
49
- onDelete: O,
50
- onCancelSelfOnboarding: T,
51
- onCancelDismissal: B,
52
- onCancelRehire: _,
53
- onAddContractor: x
45
+ onDismiss: B,
46
+ onRehire: O,
47
+ onDelete: T,
48
+ onCancelSelfOnboarding: x,
49
+ onCancelDismissal: N,
50
+ onCancelRehire: P,
51
+ onAddContractor: _
54
52
  }) {
55
- const { t: e } = $("Contractor.ManagementContractorList"), r = A(), [f, h] = b(null), [s, g] = b(null), [d, P] = b(c);
56
- j(() => {
57
- u || P(c);
58
- }, [c, u]);
59
- const V = [
53
+ const { t: e } = z("Contractor.ManagementContractorList"), n = S(), [f, h] = b(null), [o, g] = b(null), [m, V] = b(u);
54
+ $(() => {
55
+ c || V(u);
56
+ }, [u, c]);
57
+ const H = [
60
58
  { id: "active", label: e("tabs.active"), content: null },
61
59
  { id: "onboarding", label: e("tabs.onboarding"), content: null },
62
60
  { id: "dismissed", label: e("tabs.dismissed"), content: null }
63
61
  ], M = () => {
64
- const t = {
62
+ const a = {
65
63
  key: "name",
66
64
  title: e("nameLabel"),
67
- render: (i) => /* @__PURE__ */ a(ae, { contractor: i })
65
+ render: (i) => /* @__PURE__ */ t(te, { contractor: i })
68
66
  };
69
- return d === "active" ? [
70
- t,
67
+ return m === "active" ? [
68
+ a,
71
69
  {
72
70
  key: "rate",
73
71
  title: e("rateLabel"),
@@ -75,147 +73,148 @@ function Ae({
75
73
  },
76
74
  {
77
75
  key: "status",
78
- title: /* @__PURE__ */ a(ee, { children: e("statusColumnLabel") }),
79
- render: (i) => i.upcomingEmployment?.startDate ? /* @__PURE__ */ a(r.Badge, { status: "info", children: e("startsBadge", {
76
+ title: /* @__PURE__ */ t(Z, { children: e("statusColumnLabel") }),
77
+ render: (i) => i.upcomingEmployment?.startDate ? /* @__PURE__ */ t(n.Badge, { status: "info", children: e("startsBadge", {
80
78
  date: p(i.upcomingEmployment.startDate)
81
- }) }) : i.dismissalDate ? /* @__PURE__ */ a(r.Badge, { status: "warning", children: e("lastDayBadge", { date: p(i.dismissalDate) }) }) : null
79
+ }) }) : i.dismissalDate ? /* @__PURE__ */ t(n.Badge, { status: "warning", children: e("lastDayBadge", { date: p(i.dismissalDate) }) }) : null
82
80
  }
83
- ] : d === "onboarding" ? [
84
- t,
81
+ ] : m === "onboarding" ? [
82
+ a,
85
83
  {
86
84
  key: "status",
87
85
  title: e("onboardingStatusLabel"),
88
- render: (i) => /* @__PURE__ */ o(m, { alignItems: "center", gap: 8, children: [
89
- /* @__PURE__ */ a(
90
- F,
86
+ render: (i) => /* @__PURE__ */ s(d, { alignItems: "center", gap: 8, children: [
87
+ /* @__PURE__ */ t(
88
+ G,
91
89
  {
92
90
  onboarded: i.onboarded,
93
91
  onboardingStatus: i.onboardingStatus
94
92
  }
95
93
  ),
96
- i.onboardingStatus === y.ONBOARDING_COMPLETED && i.upcomingEmployment?.startDate && /* @__PURE__ */ a(r.Badge, { status: "info", children: e("startsBadge", {
94
+ i.onboardingStatus === w.ONBOARDING_COMPLETED && i.upcomingEmployment?.startDate && /* @__PURE__ */ t(n.Badge, { status: "info", children: e("startsBadge", {
97
95
  date: p(i.upcomingEmployment.startDate)
98
96
  }) })
99
97
  ] })
100
98
  }
101
99
  ] : [
102
- t,
100
+ a,
103
101
  {
104
102
  key: "dismissalDate",
105
103
  title: e("dismissalDateLabel"),
106
104
  render: (i) => i.dismissalDate ? p(i.dismissalDate) : "–"
107
105
  }
108
106
  ];
109
- }, { ...Y } = ie({
110
- data: l,
107
+ }, { ...Y } = ee({
108
+ data: r,
111
109
  columns: M(),
112
- itemMenu: (t) => {
113
- if (d === "onboarding") {
110
+ itemMenu: (a) => {
111
+ if (m === "onboarding") {
114
112
  const C = [];
115
- return t.allowedActions.includes("cancel_self_onboarding") && C.push({
113
+ return a.allowedActions.includes("cancel_self_onboarding") && C.push({
116
114
  label: e("cancelSelfOnboardingCta"),
117
115
  onClick: () => {
118
- T(t.uuid);
116
+ x(a.uuid);
119
117
  },
120
- icon: /* @__PURE__ */ a(D, { "aria-hidden": !0 })
121
- }), t.allowedActions.includes("delete") && C.push({
118
+ icon: /* @__PURE__ */ t(D, { "aria-hidden": !0 })
119
+ }), a.allowedActions.includes("delete") && C.push({
122
120
  label: e("removeCta"),
123
121
  onClick: () => {
124
- h(t.uuid);
122
+ h(a.uuid);
125
123
  },
126
- icon: /* @__PURE__ */ a(G, { "aria-hidden": !0 })
127
- }), /* @__PURE__ */ o(m, { alignItems: "center", justifyContent: "flex-end", gap: 4, children: [
128
- t.allowedActions.includes("edit") && /* @__PURE__ */ a(
129
- r.Button,
124
+ icon: /* @__PURE__ */ t(W, { "aria-hidden": !0 })
125
+ }), /* @__PURE__ */ s(d, { alignItems: "center", justifyContent: "flex-end", gap: 4, children: [
126
+ a.allowedActions.includes("edit") && /* @__PURE__ */ t(
127
+ n.Button,
130
128
  {
131
129
  variant: "secondary",
132
130
  onClick: () => {
133
- I(t.uuid);
131
+ E(a.uuid);
134
132
  },
135
- children: ne(t.onboardingStatus) ? e("reviewCta") : e("continueCta")
133
+ children: ae(a.onboardingStatus) ? e("reviewCta") : e("continueCta")
136
134
  }
137
135
  ),
138
- /* @__PURE__ */ a(
139
- S,
136
+ /* @__PURE__ */ t(
137
+ L,
140
138
  {
141
139
  items: C,
142
- triggerLabel: e("hamburgerTitle", { name: w(t) })
140
+ triggerLabel: e("hamburgerTitle", { name: y(a) })
143
141
  }
144
142
  )
145
143
  ] });
146
144
  }
147
145
  const i = [];
148
- return t.allowedActions.includes("view") && i.push({
146
+ return a.allowedActions.includes("view") && i.push({
149
147
  label: e("viewDetailsCta"),
150
148
  onClick: () => {
151
- R(t.uuid);
149
+ R(a.uuid);
152
150
  },
153
- icon: /* @__PURE__ */ a(W, { "aria-hidden": !0 })
154
- }), t.allowedActions.includes("cancel_rehire") && i.push({
151
+ icon: /* @__PURE__ */ t(X, { "aria-hidden": !0 })
152
+ }), a.allowedActions.includes("cancel_rehire") && i.push({
155
153
  label: e("cancelRehireCta"),
156
154
  onClick: () => {
157
- g({ contractorId: t.uuid, type: "rehire" });
155
+ g({ contractorId: a.uuid, type: "rehire" });
158
156
  },
159
- icon: /* @__PURE__ */ a(D, { "aria-hidden": !0 })
160
- }), t.allowedActions.includes("cancel_dismissal") && i.push({
157
+ icon: /* @__PURE__ */ t(D, { "aria-hidden": !0 })
158
+ }), a.allowedActions.includes("cancel_dismissal") && i.push({
161
159
  label: e("cancelDismissalCta"),
162
160
  onClick: () => {
163
- g({ contractorId: t.uuid, type: "dismissal" });
161
+ g({ contractorId: a.uuid, type: "dismissal" });
164
162
  },
165
- icon: /* @__PURE__ */ a(D, { "aria-hidden": !0 })
166
- }), t.allowedActions.includes("dismiss") && i.push({
163
+ icon: /* @__PURE__ */ t(D, { "aria-hidden": !0 })
164
+ }), a.allowedActions.includes("dismiss") && i.push({
167
165
  label: e("dismissCta"),
168
166
  onClick: () => {
169
- k(t.uuid);
167
+ B(a.uuid);
170
168
  },
171
- icon: /* @__PURE__ */ a(U, { "aria-hidden": !0 })
172
- }), t.allowedActions.includes("rehire") && i.push({
169
+ icon: /* @__PURE__ */ t(q, { "aria-hidden": !0 })
170
+ }), a.allowedActions.includes("rehire") && i.push({
173
171
  label: e("rehireCta"),
174
172
  onClick: () => {
175
- N(t.uuid);
173
+ O(a.uuid);
176
174
  },
177
- icon: /* @__PURE__ */ a(X, { "aria-hidden": !0 })
178
- }), /* @__PURE__ */ a(
179
- S,
175
+ icon: /* @__PURE__ */ t(J, { "aria-hidden": !0 })
176
+ }), /* @__PURE__ */ t(
177
+ L,
180
178
  {
181
179
  items: i,
182
- triggerLabel: e("hamburgerTitle", { name: w(t) })
180
+ triggerLabel: e("hamburgerTitle", { name: y(a) })
183
181
  }
184
182
  );
185
183
  },
186
- isFetching: u,
187
- pagination: E,
188
- emptyState: () => /* @__PURE__ */ a(
189
- z,
184
+ isFetching: c,
185
+ pagination: I,
186
+ emptyState: () => /* @__PURE__ */ t(
187
+ F,
190
188
  {
191
- title: e(`emptyState.${d}.title`),
192
- description: e(`emptyState.${d}.description`)
189
+ title: e(`emptyState.${m}.title`),
190
+ description: e(`emptyState.${m}.description`)
193
191
  }
194
192
  )
195
193
  });
196
- return /* @__PURE__ */ o(H, { children: [
197
- /* @__PURE__ */ o(m, { className: n, flexDirection: "column", gap: 32, children: [
198
- /* @__PURE__ */ o(m, { justifyContent: "space-between", alignItems: "center", children: [
199
- /* @__PURE__ */ a(r.Heading, { as: "h2", children: e("title") }),
200
- /* @__PURE__ */ a(r.Button, { variant: "secondary", onClick: x, children: e("addContractorCta") })
194
+ return /* @__PURE__ */ s(j, { children: [
195
+ /* @__PURE__ */ s(d, { className: l, flexDirection: "column", gap: 32, children: [
196
+ v && /* @__PURE__ */ t(n.Alert, { label: v, status: "success" }),
197
+ /* @__PURE__ */ s(d, { justifyContent: "space-between", alignItems: "center", children: [
198
+ /* @__PURE__ */ t(n.Heading, { as: "h2", children: e("title") }),
199
+ /* @__PURE__ */ t(n.Button, { variant: "secondary", onClick: _, children: e("addContractorCta") })
201
200
  ] }),
202
- /* @__PURE__ */ o(m, { flexDirection: "column", gap: 0, children: [
203
- /* @__PURE__ */ a(
204
- r.Tabs,
201
+ /* @__PURE__ */ s(d, { flexDirection: "column", gap: 0, children: [
202
+ /* @__PURE__ */ t(
203
+ n.Tabs,
205
204
  {
206
- tabs: V,
207
- selectedId: c,
208
- onSelectionChange: (t) => {
209
- L(t);
205
+ tabs: H,
206
+ selectedId: u,
207
+ onSelectionChange: (a) => {
208
+ k(a);
210
209
  },
211
210
  "aria-label": e("tabsLabel")
212
211
  }
213
212
  ),
214
- /* @__PURE__ */ a(te, { label: e("contractorListLabel"), ...Y })
213
+ /* @__PURE__ */ t(ie, { label: e("contractorListLabel"), ...Y })
215
214
  ] })
216
215
  ] }),
217
- /* @__PURE__ */ a(
218
- r.Dialog,
216
+ /* @__PURE__ */ t(
217
+ n.Dialog,
219
218
  {
220
219
  isOpen: !!f,
221
220
  onClose: () => {
@@ -224,11 +223,11 @@ function Ae({
224
223
  onPrimaryActionClick: async () => {
225
224
  if (f)
226
225
  try {
227
- await O(f), h(null);
226
+ await T(f), h(null);
228
227
  } catch {
229
228
  }
230
229
  },
231
- isPrimaryActionLoading: v.isPending,
230
+ isPrimaryActionLoading: A.isPending,
232
231
  isDestructive: !0,
233
232
  title: e("removeDialog.title"),
234
233
  primaryActionLabel: e("removeDialog.confirmCta"),
@@ -236,25 +235,25 @@ function Ae({
236
235
  children: e("removeDialog.description")
237
236
  }
238
237
  ),
239
- /* @__PURE__ */ a(
240
- r.Dialog,
238
+ /* @__PURE__ */ t(
239
+ n.Dialog,
241
240
  {
242
- isOpen: !!s,
241
+ isOpen: !!o,
243
242
  onClose: () => {
244
243
  g(null);
245
244
  },
246
245
  onPrimaryActionClick: async () => {
247
- if (s)
246
+ if (o)
248
247
  try {
249
- s.type === "rehire" ? await _(s.contractorId) : await B(s.contractorId), g(null);
248
+ o.type === "rehire" ? await P(o.contractorId) : await N(o.contractorId), g(null);
250
249
  } catch {
251
250
  }
252
251
  },
253
- isPrimaryActionLoading: v.isPending,
254
- title: s?.type === "rehire" ? e("cancelRehireDialog.title") : e("cancelDismissalDialog.title"),
255
- primaryActionLabel: s?.type === "rehire" ? e("cancelRehireDialog.confirmCta") : e("cancelDismissalDialog.confirmCta"),
256
- closeActionLabel: s?.type === "rehire" ? e("cancelRehireDialog.cancelCta") : e("cancelDismissalDialog.cancelCta"),
257
- children: s?.type === "rehire" ? e("cancelRehireDialog.description") : e("cancelDismissalDialog.description")
252
+ isPrimaryActionLoading: A.isPending,
253
+ title: o?.type === "rehire" ? e("cancelRehireDialog.title") : e("cancelDismissalDialog.title"),
254
+ primaryActionLabel: o?.type === "rehire" ? e("cancelRehireDialog.confirmCta") : e("cancelDismissalDialog.confirmCta"),
255
+ closeActionLabel: o?.type === "rehire" ? e("cancelRehireDialog.cancelCta") : e("cancelDismissalDialog.cancelCta"),
256
+ children: o?.type === "rehire" ? e("cancelRehireDialog.description") : e("cancelDismissalDialog.description")
258
257
  }
259
258
  )
260
259
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"ManagementContractorListView.js","sources":["../../../../../src/components/Contractor/ContractorList/management/ManagementContractorListView.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { UseContractorListResult, ContractorWithActions } from '../shared/useContractorList'\nimport type { ContractorTab } from './ManagementContractorList'\nimport { DataView, EmptyData, useDataView, Flex, VisuallyHidden } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { ContractorOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport XCircleSvg from '@/assets/icons/x-circle.svg?react'\nimport EyeSvg from '@/assets/icons/eye.svg?react'\nimport SlashCircleSvg from '@/assets/icons/slash-circle.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { normalizeToDate, formatDateLong, formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport { CONTRACTOR_TYPE, ContractorOnboardingStatus } from '@/shared/constants'\n\n/** @internal */\nexport interface ManagementContractorListViewProps extends Pick<\n Extract<UseContractorListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n /** CSS class name applied to the root element. */\n className?: string\n contractors: ContractorWithActions[]\n isFetching: boolean\n selectedTab: ContractorTab\n onTabChange: (tab: ContractorTab) => void\n onEdit: (contractorId: string) => void\n onView: (contractorId: string) => void\n onDismiss: (contractorId: string) => void\n onRehire: (contractorId: string) => void\n onDelete: (contractorId: string) => Promise<void>\n onCancelSelfOnboarding: (contractorId: string) => Promise<void>\n onCancelDismissal: (contractorId: string) => Promise<void>\n onCancelRehire: (contractorId: string) => Promise<void>\n onAddContractor: () => void\n}\n\nfunction contractorDisplayName(contractor: ContractorWithActions) {\n return contractor.type === CONTRACTOR_TYPE.BUSINESS\n ? (contractor.businessName ?? '')\n : firstLastName({ first_name: contractor.firstName, last_name: contractor.lastName })\n}\n\nfunction ContractorNameCell({ contractor }: { contractor: ContractorWithActions }) {\n const Components = useComponentContext()\n return (\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Text size=\"sm\" weight=\"medium\">\n {contractorDisplayName(contractor)}\n </Components.Text>\n <Components.Text variant=\"supporting\" size=\"sm\">\n {contractor.type ?? '–'}\n </Components.Text>\n </Flex>\n )\n}\n\nfunction formatBadgeDate(dateStr: string): string {\n const date = normalizeToDate(dateStr)\n if (!date) return ''\n const isSameYear = date.getFullYear() === new Date().getFullYear()\n return isSameYear ? formatDateLong(date) : formatDateLongWithYear(date)\n}\n\nfunction isOnboardingEditReview(onboardingStatus?: string | null) {\n return (\n onboardingStatus === ContractorOnboardingStatus.ADMIN_ONBOARDING_REVIEW ||\n onboardingStatus === ContractorOnboardingStatus.SELF_ONBOARDING_REVIEW\n )\n}\n\n/** @internal */\nexport function ManagementContractorListView({\n className,\n contractors,\n isFetching,\n selectedTab,\n onTabChange,\n status,\n pagination,\n onEdit,\n onView,\n onDismiss,\n onRehire,\n onDelete,\n onCancelSelfOnboarding,\n onCancelDismissal,\n onCancelRehire,\n onAddContractor,\n}: ManagementContractorListViewProps) {\n const { t } = useTranslation('Contractor.ManagementContractorList')\n const Components = useComponentContext()\n const [contractorToRemove, setContractorToRemove] = useState<string | null>(null)\n const [cancelAction, setCancelAction] = useState<{\n contractorId: string\n type: 'dismissal' | 'rehire'\n } | null>(null)\n\n // Columns, item-menu shape, and empty-state copy stay pinned to the previously\n // committed tab until the new tab's data lands, so they swap in one paint together\n // with `contractors`/`pagination` instead of flashing ahead of the still-stale rows\n // that `keepPreviousData` is rendering.\n const [committedTab, setCommittedTab] = useState(selectedTab)\n useEffect(() => {\n if (!isFetching) {\n setCommittedTab(selectedTab)\n }\n }, [selectedTab, isFetching])\n\n const tabs = [\n { id: 'active', label: t('tabs.active'), content: null },\n { id: 'onboarding', label: t('tabs.onboarding'), content: null },\n { id: 'dismissed', label: t('tabs.dismissed'), content: null },\n ]\n\n const getColumns = () => {\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n render: (contractor: ContractorWithActions) => <ContractorNameCell contractor={contractor} />,\n }\n\n if (committedTab === 'active') {\n return [\n nameColumn,\n {\n key: 'rate',\n title: t('rateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.wageType === 'Hourly' && contractor.hourlyRate\n ? t('rateHourly', { rate: `$${contractor.hourlyRate}` })\n : (contractor.wageType ?? '–'),\n },\n {\n key: 'status',\n title: <VisuallyHidden>{t('statusColumnLabel')}</VisuallyHidden>,\n render: (contractor: ContractorWithActions) => {\n if (contractor.upcomingEmployment?.startDate) {\n return (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )\n }\n if (contractor.dismissalDate) {\n return (\n <Components.Badge status=\"warning\">\n {t('lastDayBadge', { date: formatBadgeDate(contractor.dismissalDate) })}\n </Components.Badge>\n )\n }\n return null\n },\n },\n ]\n }\n\n if (committedTab === 'onboarding') {\n return [\n nameColumn,\n {\n key: 'status',\n title: t('onboardingStatusLabel'),\n render: (contractor: ContractorWithActions) => (\n <Flex alignItems=\"center\" gap={8}>\n <ContractorOnboardingStatusBadge\n onboarded={contractor.onboarded}\n onboardingStatus={contractor.onboardingStatus}\n />\n {contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED &&\n contractor.upcomingEmployment?.startDate && (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )}\n </Flex>\n ),\n },\n ]\n }\n\n return [\n nameColumn,\n {\n key: 'dismissalDate',\n title: t('dismissalDateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.dismissalDate ? formatBadgeDate(contractor.dismissalDate) : '–',\n },\n ]\n }\n\n const { ...dataViewProps } = useDataView({\n data: contractors,\n columns: getColumns(),\n itemMenu: contractor => {\n if (committedTab === 'onboarding') {\n const menuItems = []\n\n if (contractor.allowedActions.includes('cancel_self_onboarding')) {\n menuItems.push({\n label: t('cancelSelfOnboardingCta'),\n onClick: () => {\n void onCancelSelfOnboarding(contractor.uuid)\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('removeCta'),\n onClick: () => {\n setContractorToRemove(contractor.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"flex-end\" gap={4}>\n {contractor.allowedActions.includes('edit') && (\n <Components.Button\n variant=\"secondary\"\n onClick={() => {\n onEdit(contractor.uuid)\n }}\n >\n {isOnboardingEditReview(contractor.onboardingStatus)\n ? t('reviewCta')\n : t('continueCta')}\n </Components.Button>\n )}\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: contractorDisplayName(contractor) })}\n />\n </Flex>\n )\n }\n\n const menuItems = []\n\n if (contractor.allowedActions.includes('view')) {\n menuItems.push({\n label: t('viewDetailsCta'),\n onClick: () => {\n onView(contractor.uuid)\n },\n icon: <EyeSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_rehire')) {\n menuItems.push({\n label: t('cancelRehireCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'rehire' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_dismissal')) {\n menuItems.push({\n label: t('cancelDismissalCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'dismissal' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('dismiss')) {\n menuItems.push({\n label: t('dismissCta'),\n onClick: () => {\n onDismiss(contractor.uuid)\n },\n icon: <SlashCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('rehire')) {\n menuItems.push({\n label: t('rehireCta'),\n onClick: () => {\n onRehire(contractor.uuid)\n },\n icon: <PlusCircleIcon aria-hidden />,\n })\n }\n\n return (\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: contractorDisplayName(contractor) })}\n />\n )\n },\n isFetching,\n pagination,\n emptyState: () => (\n <EmptyData\n title={t(`emptyState.${committedTab}.title`)}\n description={t(`emptyState.${committedTab}.description`)}\n />\n ),\n })\n\n return (\n <>\n <Flex className={className} flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Button variant=\"secondary\" onClick={onAddContractor}>\n {t('addContractorCta')}\n </Components.Button>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Tabs\n tabs={tabs}\n selectedId={selectedTab}\n onSelectionChange={id => {\n onTabChange(id as ContractorTab)\n }}\n aria-label={t('tabsLabel')}\n />\n\n <DataView label={t('contractorListLabel')} {...dataViewProps} />\n </Flex>\n </Flex>\n\n <Components.Dialog\n isOpen={!!contractorToRemove}\n onClose={() => {\n setContractorToRemove(null)\n }}\n onPrimaryActionClick={async () => {\n if (contractorToRemove) {\n try {\n await onDelete(contractorToRemove)\n setContractorToRemove(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('removeDialog.title')}\n primaryActionLabel={t('removeDialog.confirmCta')}\n closeActionLabel={t('removeDialog.cancelCta')}\n >\n {t('removeDialog.description')}\n </Components.Dialog>\n\n <Components.Dialog\n isOpen={!!cancelAction}\n onClose={() => {\n setCancelAction(null)\n }}\n onPrimaryActionClick={async () => {\n if (!cancelAction) return\n try {\n if (cancelAction.type === 'rehire') {\n await onCancelRehire(cancelAction.contractorId)\n } else {\n await onCancelDismissal(cancelAction.contractorId)\n }\n setCancelAction(null)\n } catch {\n // Keep dialog open on error\n }\n }}\n isPrimaryActionLoading={status.isPending}\n title={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.title')\n : t('cancelDismissalDialog.title')\n }\n primaryActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.confirmCta')\n : t('cancelDismissalDialog.confirmCta')\n }\n closeActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.cancelCta')\n : t('cancelDismissalDialog.cancelCta')\n }\n >\n {cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.description')\n : t('cancelDismissalDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["contractorDisplayName","contractor","CONTRACTOR_TYPE","firstLastName","ContractorNameCell","Components","useComponentContext","jsxs","Flex","jsx","formatBadgeDate","dateStr","date","normalizeToDate","formatDateLong","formatDateLongWithYear","isOnboardingEditReview","onboardingStatus","ContractorOnboardingStatus","ManagementContractorListView","className","contractors","isFetching","selectedTab","onTabChange","status","pagination","onEdit","onView","onDismiss","onRehire","onDelete","onCancelSelfOnboarding","onCancelDismissal","onCancelRehire","onAddContractor","t","useTranslation","contractorToRemove","setContractorToRemove","useState","cancelAction","setCancelAction","committedTab","setCommittedTab","useEffect","tabs","getColumns","nameColumn","VisuallyHidden","ContractorOnboardingStatusBadge","dataViewProps","useDataView","menuItems","XCircleSvg","TrashCanSvg","HamburgerMenu","EyeSvg","SlashCircleSvg","PlusCircleIcon","EmptyData","Fragment","id","DataView"],"mappings":"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"}
1
+ {"version":3,"file":"ManagementContractorListView.js","sources":["../../../../../src/components/Contractor/ContractorList/management/ManagementContractorListView.tsx"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport type { UseContractorListResult, ContractorWithActions } from '../shared/useContractorList'\nimport { getContractorDisplayName } from '../../shared/helpers'\nimport type { ContractorTab } from './ManagementContractorList'\nimport { DataView, EmptyData, useDataView, Flex, VisuallyHidden } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { ContractorOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\nimport XCircleSvg from '@/assets/icons/x-circle.svg?react'\nimport EyeSvg from '@/assets/icons/eye.svg?react'\nimport SlashCircleSvg from '@/assets/icons/slash-circle.svg?react'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\nimport { normalizeToDate, formatDateLong, formatDateLongWithYear } from '@/helpers/dateFormatting'\nimport { ContractorOnboardingStatus } from '@/shared/constants'\n\n/** @internal */\nexport interface ManagementContractorListViewProps extends Pick<\n Extract<UseContractorListResult, { isLoading: false }>,\n 'pagination' | 'status'\n> {\n /** CSS class name applied to the root element. */\n className?: string\n contractors: ContractorWithActions[]\n isFetching: boolean\n selectedTab: ContractorTab\n onTabChange: (tab: ContractorTab) => void\n /** Success message to display in an alert above the list, typically after a dismissal is scheduled. */\n successMessage?: string\n onEdit: (contractorId: string) => void\n onView: (contractorId: string) => void\n onDismiss: (contractorId: string) => void\n onRehire: (contractorId: string) => void\n onDelete: (contractorId: string) => Promise<void>\n onCancelSelfOnboarding: (contractorId: string) => Promise<void>\n onCancelDismissal: (contractorId: string) => Promise<void>\n onCancelRehire: (contractorId: string) => Promise<void>\n onAddContractor: () => void\n}\n\nfunction ContractorNameCell({ contractor }: { contractor: ContractorWithActions }) {\n const Components = useComponentContext()\n return (\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Text size=\"sm\" weight=\"medium\">\n {getContractorDisplayName(contractor)}\n </Components.Text>\n <Components.Text variant=\"supporting\" size=\"sm\">\n {contractor.type ?? '–'}\n </Components.Text>\n </Flex>\n )\n}\n\nfunction formatBadgeDate(dateStr: string): string {\n const date = normalizeToDate(dateStr)\n if (!date) return ''\n const isSameYear = date.getFullYear() === new Date().getFullYear()\n return isSameYear ? formatDateLong(date) : formatDateLongWithYear(date)\n}\n\nfunction isOnboardingEditReview(onboardingStatus?: string | null) {\n return (\n onboardingStatus === ContractorOnboardingStatus.ADMIN_ONBOARDING_REVIEW ||\n onboardingStatus === ContractorOnboardingStatus.SELF_ONBOARDING_REVIEW\n )\n}\n\n/** @internal */\nexport function ManagementContractorListView({\n className,\n contractors,\n isFetching,\n selectedTab,\n onTabChange,\n successMessage,\n status,\n pagination,\n onEdit,\n onView,\n onDismiss,\n onRehire,\n onDelete,\n onCancelSelfOnboarding,\n onCancelDismissal,\n onCancelRehire,\n onAddContractor,\n}: ManagementContractorListViewProps) {\n const { t } = useTranslation('Contractor.ManagementContractorList')\n const Components = useComponentContext()\n const [contractorToRemove, setContractorToRemove] = useState<string | null>(null)\n const [cancelAction, setCancelAction] = useState<{\n contractorId: string\n type: 'dismissal' | 'rehire'\n } | null>(null)\n\n // Columns, item-menu shape, and empty-state copy stay pinned to the previously\n // committed tab until the new tab's data lands, so they swap in one paint together\n // with `contractors`/`pagination` instead of flashing ahead of the still-stale rows\n // that `keepPreviousData` is rendering.\n const [committedTab, setCommittedTab] = useState(selectedTab)\n useEffect(() => {\n if (!isFetching) {\n setCommittedTab(selectedTab)\n }\n }, [selectedTab, isFetching])\n\n const tabs = [\n { id: 'active', label: t('tabs.active'), content: null },\n { id: 'onboarding', label: t('tabs.onboarding'), content: null },\n { id: 'dismissed', label: t('tabs.dismissed'), content: null },\n ]\n\n const getColumns = () => {\n const nameColumn = {\n key: 'name',\n title: t('nameLabel'),\n render: (contractor: ContractorWithActions) => <ContractorNameCell contractor={contractor} />,\n }\n\n if (committedTab === 'active') {\n return [\n nameColumn,\n {\n key: 'rate',\n title: t('rateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.wageType === 'Hourly' && contractor.hourlyRate\n ? t('rateHourly', { rate: `$${contractor.hourlyRate}` })\n : (contractor.wageType ?? '–'),\n },\n {\n key: 'status',\n title: <VisuallyHidden>{t('statusColumnLabel')}</VisuallyHidden>,\n render: (contractor: ContractorWithActions) => {\n if (contractor.upcomingEmployment?.startDate) {\n return (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )\n }\n if (contractor.dismissalDate) {\n return (\n <Components.Badge status=\"warning\">\n {t('lastDayBadge', { date: formatBadgeDate(contractor.dismissalDate) })}\n </Components.Badge>\n )\n }\n return null\n },\n },\n ]\n }\n\n if (committedTab === 'onboarding') {\n return [\n nameColumn,\n {\n key: 'status',\n title: t('onboardingStatusLabel'),\n render: (contractor: ContractorWithActions) => (\n <Flex alignItems=\"center\" gap={8}>\n <ContractorOnboardingStatusBadge\n onboarded={contractor.onboarded}\n onboardingStatus={contractor.onboardingStatus}\n />\n {contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED &&\n contractor.upcomingEmployment?.startDate && (\n <Components.Badge status=\"info\">\n {t('startsBadge', {\n date: formatBadgeDate(contractor.upcomingEmployment.startDate),\n })}\n </Components.Badge>\n )}\n </Flex>\n ),\n },\n ]\n }\n\n return [\n nameColumn,\n {\n key: 'dismissalDate',\n title: t('dismissalDateLabel'),\n render: (contractor: ContractorWithActions) =>\n contractor.dismissalDate ? formatBadgeDate(contractor.dismissalDate) : '–',\n },\n ]\n }\n\n const { ...dataViewProps } = useDataView({\n data: contractors,\n columns: getColumns(),\n itemMenu: contractor => {\n if (committedTab === 'onboarding') {\n const menuItems = []\n\n if (contractor.allowedActions.includes('cancel_self_onboarding')) {\n menuItems.push({\n label: t('cancelSelfOnboardingCta'),\n onClick: () => {\n void onCancelSelfOnboarding(contractor.uuid)\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('delete')) {\n menuItems.push({\n label: t('removeCta'),\n onClick: () => {\n setContractorToRemove(contractor.uuid)\n },\n icon: <TrashCanSvg aria-hidden />,\n })\n }\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"flex-end\" gap={4}>\n {contractor.allowedActions.includes('edit') && (\n <Components.Button\n variant=\"secondary\"\n onClick={() => {\n onEdit(contractor.uuid)\n }}\n >\n {isOnboardingEditReview(contractor.onboardingStatus)\n ? t('reviewCta')\n : t('continueCta')}\n </Components.Button>\n )}\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: getContractorDisplayName(contractor) })}\n />\n </Flex>\n )\n }\n\n const menuItems = []\n\n if (contractor.allowedActions.includes('view')) {\n menuItems.push({\n label: t('viewDetailsCta'),\n onClick: () => {\n onView(contractor.uuid)\n },\n icon: <EyeSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_rehire')) {\n menuItems.push({\n label: t('cancelRehireCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'rehire' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('cancel_dismissal')) {\n menuItems.push({\n label: t('cancelDismissalCta'),\n onClick: () => {\n setCancelAction({ contractorId: contractor.uuid, type: 'dismissal' })\n },\n icon: <XCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('dismiss')) {\n menuItems.push({\n label: t('dismissCta'),\n onClick: () => {\n onDismiss(contractor.uuid)\n },\n icon: <SlashCircleSvg aria-hidden />,\n })\n }\n\n if (contractor.allowedActions.includes('rehire')) {\n menuItems.push({\n label: t('rehireCta'),\n onClick: () => {\n onRehire(contractor.uuid)\n },\n icon: <PlusCircleIcon aria-hidden />,\n })\n }\n\n return (\n <HamburgerMenu\n items={menuItems}\n triggerLabel={t('hamburgerTitle', { name: getContractorDisplayName(contractor) })}\n />\n )\n },\n isFetching,\n pagination,\n emptyState: () => (\n <EmptyData\n title={t(`emptyState.${committedTab}.title`)}\n description={t(`emptyState.${committedTab}.description`)}\n />\n ),\n })\n\n return (\n <>\n <Flex className={className} flexDirection=\"column\" gap={32}>\n {successMessage && <Components.Alert label={successMessage} status=\"success\" />}\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Components.Heading as=\"h2\">{t('title')}</Components.Heading>\n <Components.Button variant=\"secondary\" onClick={onAddContractor}>\n {t('addContractorCta')}\n </Components.Button>\n </Flex>\n\n <Flex flexDirection=\"column\" gap={0}>\n <Components.Tabs\n tabs={tabs}\n selectedId={selectedTab}\n onSelectionChange={id => {\n onTabChange(id as ContractorTab)\n }}\n aria-label={t('tabsLabel')}\n />\n\n <DataView label={t('contractorListLabel')} {...dataViewProps} />\n </Flex>\n </Flex>\n\n <Components.Dialog\n isOpen={!!contractorToRemove}\n onClose={() => {\n setContractorToRemove(null)\n }}\n onPrimaryActionClick={async () => {\n if (contractorToRemove) {\n try {\n await onDelete(contractorToRemove)\n setContractorToRemove(null)\n } catch {\n // Keep dialog open on error\n }\n }\n }}\n isPrimaryActionLoading={status.isPending}\n isDestructive\n title={t('removeDialog.title')}\n primaryActionLabel={t('removeDialog.confirmCta')}\n closeActionLabel={t('removeDialog.cancelCta')}\n >\n {t('removeDialog.description')}\n </Components.Dialog>\n\n <Components.Dialog\n isOpen={!!cancelAction}\n onClose={() => {\n setCancelAction(null)\n }}\n onPrimaryActionClick={async () => {\n if (!cancelAction) return\n try {\n if (cancelAction.type === 'rehire') {\n await onCancelRehire(cancelAction.contractorId)\n } else {\n await onCancelDismissal(cancelAction.contractorId)\n }\n setCancelAction(null)\n } catch {\n // Keep dialog open on error\n }\n }}\n isPrimaryActionLoading={status.isPending}\n title={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.title')\n : t('cancelDismissalDialog.title')\n }\n primaryActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.confirmCta')\n : t('cancelDismissalDialog.confirmCta')\n }\n closeActionLabel={\n cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.cancelCta')\n : t('cancelDismissalDialog.cancelCta')\n }\n >\n {cancelAction?.type === 'rehire'\n ? t('cancelRehireDialog.description')\n : t('cancelDismissalDialog.description')}\n </Components.Dialog>\n </>\n )\n}\n"],"names":["ContractorNameCell","contractor","Components","useComponentContext","jsxs","Flex","jsx","getContractorDisplayName","formatBadgeDate","dateStr","date","normalizeToDate","formatDateLong","formatDateLongWithYear","isOnboardingEditReview","onboardingStatus","ContractorOnboardingStatus","ManagementContractorListView","className","contractors","isFetching","selectedTab","onTabChange","successMessage","status","pagination","onEdit","onView","onDismiss","onRehire","onDelete","onCancelSelfOnboarding","onCancelDismissal","onCancelRehire","onAddContractor","t","useTranslation","contractorToRemove","setContractorToRemove","useState","cancelAction","setCancelAction","committedTab","setCommittedTab","useEffect","tabs","getColumns","nameColumn","VisuallyHidden","ContractorOnboardingStatusBadge","dataViewProps","useDataView","menuItems","XCircleSvg","TrashCanSvg","HamburgerMenu","EyeSvg","SlashCircleSvg","PlusCircleIcon","EmptyData","Fragment","id","DataView"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContractorListFlow.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlow.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo } from 'react'\nimport { contractorListStateMachine } from './contractorListStateMachine'\nimport {\n ContractorListContextual,\n type ContractorListFlowContextInterface,\n type ContractorListFlowProps,\n} from './ContractorListFlowComponents'\nimport { Flow } from '@/components/Flow/Flow'\n\n/**\n * Hub for viewing and managing a company's contractors, including onboarding new ones.\n *\n * @remarks\n * Drop-in entry point for browsing a company's contractors. Begins on the\n * management contractor list and routes into {@link DashboardFlow} when the\n * admin selects \"View details\" on a row, or directly into the Profile step\n * of contractor onboarding — the same Profile → Address → Payment Method →\n * New Hire Report → Submit sequence used by\n * {@link ContractorOnboarding.OnboardingFlow | OnboardingFlow} — when the\n * admin clicks \"Add contractor\" or selects \"Continue\"/\"Review\" on an\n * onboarding-tab row. A \"Back to contractors\" header is added above the\n * dashboard; the onboarding steps show their own progress header instead,\n * matching `OnboardingFlow`'s own screens exactly. Submitting, or cancelling\n * from any step, returns to this list.\n *\n * \"Dismiss\" and \"Rehire\" have no corresponding sub-flow yet and are not\n * handled internally — they continue to fire their documented events\n * (`contractor/dismiss`, `contractor/rehire`) straight through `onEvent` for\n * the host app to handle, exactly as they do outside this flow.\n *\n * The flow forwards every event emitted by its blocks to `onEvent`;\n * see the events table on each block for the full set of events and\n * payloads observable from this flow.\n *\n * @components\n * - {@link ContractorList}\n * - {@link DashboardFlow}\n * - {@link ContractorOnboarding.ContractorProfile | ContractorProfile}\n * - {@link ContractorOnboarding.Address | Address}\n * - {@link ContractorOnboarding.PaymentMethod | PaymentMethod}\n * - {@link ContractorOnboarding.NewHireReport | NewHireReport}\n * - {@link ContractorOnboarding.ContractorSubmit | ContractorSubmit}\n *\n * @param props - See {@link ContractorListFlowProps}.\n * @returns The contractor list workflow with internal navigation to the dashboard and onboarding steps.\n * @public\n * @group Flow components\n *\n * @example\n * ```tsx title=\"App.tsx\"\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function MyApp() {\n * return (\n * <ContractorManagement.ContractorListFlow\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport const ContractorListFlow = ({ companyId, onEvent }: ContractorListFlowProps) => {\n const machine = useMemo(\n () =>\n createMachine(\n 'list',\n contractorListStateMachine,\n (initialContext: ContractorListFlowContextInterface) => ({\n ...initialContext,\n component: ContractorListContextual,\n companyId,\n selfOnboarding: false,\n }),\n ),\n [companyId],\n )\n return <Flow machine={machine} onEvent={onEvent} />\n}\n"],"names":["ContractorListFlow","companyId","onEvent","machine","useMemo","createMachine","contractorListStateMachine","initialContext","ContractorListContextual","jsx","Flow"],"mappings":";;;;;;AA+DO,MAAMA,IAAqB,CAAC,EAAE,WAAAC,GAAW,SAAAC,QAAuC;AACrF,QAAMC,IAAUC;AAAA,IACd,MACEC;AAAA,MACE;AAAA,MACAC;AAAA,MACA,CAACC,OAAwD;AAAA,QACvD,GAAGA;AAAA,QACH,WAAWC;AAAA,QACX,WAAAP;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,IAEJ,CAACA,CAAS;AAAA,EAAA;AAEZ,SAAO,gBAAAQ,EAACC,GAAA,EAAK,SAAAP,GAAkB,SAAAD,EAAA,CAAkB;AACnD;"}
1
+ {"version":3,"file":"ContractorListFlow.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlow.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo } from 'react'\nimport { contractorListStateMachine } from './contractorListStateMachine'\nimport {\n ContractorListContextual,\n type ContractorListFlowContextInterface,\n type ContractorListFlowProps,\n} from './ContractorListFlowComponents'\nimport { Flow } from '@/components/Flow/Flow'\n\n/**\n * Hub for viewing and managing a company's contractors, including onboarding new ones.\n *\n * @remarks\n * Drop-in entry point for browsing a company's contractors. Begins on the\n * management contractor list and routes into {@link DashboardFlow} when the\n * admin selects \"View details\" on a row, or directly into the Profile step\n * of contractor onboarding — the same Profile → Address → Payment Method →\n * New Hire Report → Submit sequence used by\n * {@link ContractorOnboarding.OnboardingFlow | OnboardingFlow} — when the\n * admin clicks \"Add contractor\" or selects \"Continue\"/\"Review\" on an\n * onboarding-tab row. A \"Back to contractors\" header is added above the\n * dashboard; the onboarding steps show their own progress header instead,\n * matching `OnboardingFlow`'s own screens exactly. Submitting, or cancelling\n * from any step, returns to this list.\n *\n * \"Dismiss\" routes into {@link Dismissal}, a standalone form for scheduling\n * the contractor's dismissal date. \"Rehire\" has no corresponding sub-flow yet\n * and is not handled internally — it continues to fire its documented event\n * (`contractor/rehire`) straight through `onEvent` for the host app to\n * handle, exactly as it does outside this flow.\n *\n * The flow forwards every event emitted by its blocks to `onEvent`;\n * see the events table on each block for the full set of events and\n * payloads observable from this flow.\n *\n * @components\n * - {@link ContractorList}\n * - {@link DashboardFlow}\n * - {@link Dismissal}\n * - {@link ContractorOnboarding.ContractorProfile | ContractorProfile}\n * - {@link ContractorOnboarding.Address | Address}\n * - {@link ContractorOnboarding.PaymentMethod | PaymentMethod}\n * - {@link ContractorOnboarding.NewHireReport | NewHireReport}\n * - {@link ContractorOnboarding.ContractorSubmit | ContractorSubmit}\n *\n * @param props - See {@link ContractorListFlowProps}.\n * @returns The contractor list workflow with internal navigation to the dashboard and onboarding steps.\n * @public\n * @group Flow components\n *\n * @example\n * ```tsx title=\"App.tsx\"\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function MyApp() {\n * return (\n * <ContractorManagement.ContractorListFlow\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport const ContractorListFlow = ({ companyId, onEvent }: ContractorListFlowProps) => {\n const machine = useMemo(\n () =>\n createMachine(\n 'list',\n contractorListStateMachine,\n (initialContext: ContractorListFlowContextInterface) => ({\n ...initialContext,\n component: ContractorListContextual,\n companyId,\n selfOnboarding: false,\n }),\n ),\n [companyId],\n )\n return <Flow machine={machine} onEvent={onEvent} />\n}\n"],"names":["ContractorListFlow","companyId","onEvent","machine","useMemo","createMachine","contractorListStateMachine","initialContext","ContractorListContextual","jsx","Flow"],"mappings":";;;;;;AAiEO,MAAMA,IAAqB,CAAC,EAAE,WAAAC,GAAW,SAAAC,QAAuC;AACrF,QAAMC,IAAUC;AAAA,IACd,MACEC;AAAA,MACE;AAAA,MACAC;AAAA,MACA,CAACC,OAAwD;AAAA,QACvD,GAAGA;AAAA,QACH,WAAWC;AAAA,QACX,WAAAP;AAAA,QACA,gBAAgB;AAAA,MAAA;AAAA,IAClB;AAAA,IAEJ,CAACA,CAAS;AAAA,EAAA;AAEZ,SAAO,gBAAAQ,EAACC,GAAA,EAAK,SAAAP,GAAkB,SAAAD,EAAA,CAAkB;AACnD;"}
@@ -1,18 +1,31 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { ManagementContractorList as e } from "../ContractorList/management/ManagementContractorList.js";
2
+ import { ManagementContractorList as c } from "../ContractorList/management/ManagementContractorList.js";
3
+ import { Dismissal as e } from "../Dismissal/Dismissal.js";
3
4
  import { useFlow as n } from "../../Flow/useFlow.js";
4
- import { ensureRequired as a } from "../../../helpers/ensureRequired.js";
5
+ import { ensureRequired as s } from "../../../helpers/ensureRequired.js";
5
6
  import { DashboardFlow as m } from "../Dashboard/DashboardFlow.js";
6
- function d() {
7
- const { companyId: o, onEvent: t } = n();
8
- return /* @__PURE__ */ r(e, { companyId: a(o), onEvent: t });
7
+ function I() {
8
+ const { companyId: o, onEvent: t, successMessage: a } = n();
9
+ return /* @__PURE__ */ r(
10
+ c,
11
+ {
12
+ companyId: s(o),
13
+ onEvent: t,
14
+ successMessage: a
15
+ }
16
+ );
9
17
  }
10
- function f() {
18
+ function x() {
11
19
  const { contractorId: o, onEvent: t } = n();
12
- return /* @__PURE__ */ r(m, { contractorId: a(o), onEvent: t });
20
+ return /* @__PURE__ */ r(m, { contractorId: s(o), onEvent: t });
21
+ }
22
+ function C() {
23
+ const { contractorId: o, onEvent: t } = n();
24
+ return /* @__PURE__ */ r(e, { contractorId: s(o), onEvent: t });
13
25
  }
14
26
  export {
15
- d as ContractorListContextual,
16
- f as DashboardFlowContextual
27
+ I as ContractorListContextual,
28
+ x as DashboardFlowContextual,
29
+ C as DismissalContextual
17
30
  };
18
31
  //# sourceMappingURL=ContractorListFlowComponents.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContractorListFlowComponents.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.tsx"],"sourcesContent":["import { ManagementContractorList } from '../ContractorList/management/ManagementContractorList'\nimport { DashboardFlow } from '../Dashboard'\nimport { type OnboardingFlowContextInterface } from '../OnboardingFlow/OnboardingFlowComponents'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\n\n/**\n * Props for {@link ContractorListFlow}.\n *\n * @public\n */\nexport interface ContractorListFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n}\n\n// Extends OnboardingFlowContextInterface (rather than FlowContextInterface directly) so this\n// machine's context is shape-compatible with the shared contractor-onboarding step states it\n// spreads in from onboardingStateMachine.ts (see createContractorOnboardingSteps) — those\n// states' reducers and Contextual components (ProfileContextual, AddressContextual, etc.) are\n// typed against OnboardingFlowContextInterface.\n/** @internal */\nexport type ContractorListFlowContextInterface = OnboardingFlowContextInterface\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <ManagementContractorList companyId={ensureRequired(companyId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function DashboardFlowContextual() {\n const { contractorId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <DashboardFlow contractorId={ensureRequired(contractorId)} onEvent={onEvent} />\n}\n"],"names":["ContractorListContextual","companyId","onEvent","useFlow","ManagementContractorList","ensureRequired","DashboardFlowContextual","contractorId","DashboardFlow"],"mappings":";;;;;AA0BO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,EAAA,IAAYC,EAAA;AAC/B,2BAAQC,GAAA,EAAyB,WAAWC,EAAeJ,CAAS,GAAG,SAAAC,GAAkB;AAC3F;AAGO,SAASI,IAA0B;AACxC,QAAM,EAAE,cAAAC,GAAc,SAAAL,EAAA,IAAYC,EAAA;AAClC,2BAAQK,GAAA,EAAc,cAAcH,EAAeE,CAAY,GAAG,SAAAL,GAAkB;AACtF;"}
1
+ {"version":3,"file":"ContractorListFlowComponents.js","sources":["../../../../src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.tsx"],"sourcesContent":["import { ManagementContractorList } from '../ContractorList/management/ManagementContractorList'\nimport { DashboardFlow } from '../Dashboard'\nimport { Dismissal } from '../Dismissal/Dismissal'\nimport { type OnboardingFlowContextInterface } from '../OnboardingFlow/OnboardingFlowComponents'\nimport { useFlow } from '@/components/Flow/useFlow'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { ensureRequired } from '@/helpers/ensureRequired'\n\n/**\n * Props for {@link ContractorListFlow}.\n *\n * @public\n */\nexport interface ContractorListFlowProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n}\n\n// Extends OnboardingFlowContextInterface (rather than FlowContextInterface directly) so this\n// machine's context is shape-compatible with the shared contractor-onboarding step states it\n// spreads in from onboardingStateMachine.ts (see createContractorOnboardingSteps) — those\n// states' reducers and Contextual components (ProfileContextual, AddressContextual, etc.) are\n// typed against OnboardingFlowContextInterface.\n/** @internal */\nexport type ContractorListFlowContextInterface = OnboardingFlowContextInterface\n\n/** @internal */\nexport function ContractorListContextual() {\n const { companyId, onEvent, successMessage } = useFlow<ContractorListFlowContextInterface>()\n return (\n <ManagementContractorList\n companyId={ensureRequired(companyId)}\n onEvent={onEvent}\n successMessage={successMessage}\n />\n )\n}\n\n/** @internal */\nexport function DashboardFlowContextual() {\n const { contractorId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <DashboardFlow contractorId={ensureRequired(contractorId)} onEvent={onEvent} />\n}\n\n/** @internal */\nexport function DismissalContextual() {\n const { contractorId, onEvent } = useFlow<ContractorListFlowContextInterface>()\n return <Dismissal contractorId={ensureRequired(contractorId)} onEvent={onEvent} />\n}\n"],"names":["ContractorListContextual","companyId","onEvent","successMessage","useFlow","jsx","ManagementContractorList","ensureRequired","DashboardFlowContextual","contractorId","DashboardFlow","DismissalContextual","Dismissal"],"mappings":";;;;;;AA2BO,SAASA,IAA2B;AACzC,QAAM,EAAE,WAAAC,GAAW,SAAAC,GAAS,gBAAAC,EAAA,IAAmBC,EAAA;AAC/C,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAeN,CAAS;AAAA,MACnC,SAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAGO,SAASK,IAA0B;AACxC,QAAM,EAAE,cAAAC,GAAc,SAAAP,EAAA,IAAYE,EAAA;AAClC,2BAAQM,GAAA,EAAc,cAAcH,EAAeE,CAAY,GAAG,SAAAP,GAAkB;AACtF;AAGO,SAASS,IAAsB;AACpC,QAAM,EAAE,cAAAF,GAAc,SAAAP,EAAA,IAAYE,EAAA;AAClC,2BAAQQ,GAAA,EAAU,cAAcL,EAAeE,CAAY,GAAG,SAAAP,GAAkB;AAClF;"}