@shipengine/elements 2.24.1 → 2.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +187 -6
  2. package/dist/cjs/components/field/credit-card-input/credit-card-input.cjs +46 -29
  3. package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +29 -5
  4. package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +8 -3
  5. package/dist/cjs/components/field/rate-select/rate-select.cjs +26 -5
  6. package/dist/cjs/components/forms/address-form/address-form-schema.cjs +3 -3
  7. package/dist/cjs/components/forms/edit-billing-form/edit-billing-form.cjs +57 -4
  8. package/dist/cjs/components/service-card/service-card.cjs +4 -4
  9. package/dist/cjs/components/service-card/service-card.styles.cjs +5 -2
  10. package/dist/cjs/components/service-point-display/service-point-display.cjs +1 -36
  11. package/dist/cjs/components/service-point-display/service-point-display.styles.cjs +0 -12
  12. package/dist/cjs/components/shipment-not-found-error/index.cjs +7 -0
  13. package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.cjs +40 -0
  14. package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.styles.cjs +24 -0
  15. package/dist/cjs/components/suspend-purchase/suspend-purchase.cjs +11 -3
  16. package/dist/cjs/elements/purchase-label/components/rate-form/rate-form.cjs +13 -3
  17. package/dist/cjs/elements/purchase-label/components/rate-form/rate-schema.cjs +7 -2
  18. package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +2 -0
  19. package/dist/cjs/elements/purchase-label/hooks/use-rate-options.cjs +31 -2
  20. package/dist/cjs/elements/purchase-label/hooks/use-rates-form.cjs +14 -18
  21. package/dist/cjs/elements/purchase-label/hooks/use-request-rates.cjs +20 -20
  22. package/dist/cjs/elements/purchase-label/purchase-label.cjs +4 -1
  23. package/dist/cjs/elements/shipment-summary/components/label-display/label-card.cjs +16 -31
  24. package/dist/cjs/elements/shipment-summary/components/label-display/label-card.styles.cjs +0 -19
  25. package/dist/cjs/elements/shipment-summary/components/label-display/paperless-label-display.cjs +54 -0
  26. package/dist/cjs/elements/shipment-summary/components/label-display/paperless-label-display.styles.cjs +27 -0
  27. package/dist/cjs/features/payment-method-settings/payment-method-settings.cjs +56 -18
  28. package/dist/cjs/hooks/use-configure-shipment.cjs +32 -11
  29. package/dist/cjs/hooks/use-helpers.cjs +4 -1
  30. package/dist/cjs/index.cjs +15 -12
  31. package/dist/cjs/locales/en/account-settings.json.cjs +6 -0
  32. package/dist/cjs/locales/en/common.json.cjs +2 -0
  33. package/dist/cjs/locales/en/purchase-label.json.cjs +5 -3
  34. package/dist/cjs/package.json.cjs +1 -1
  35. package/dist/cjs/utilities/address.cjs +29 -0
  36. package/dist/cjs/utilities/index.cjs +3 -0
  37. package/dist/cjs/utilities/money.cjs +14 -0
  38. package/dist/cjs/utilities/rate-warning-messages.cjs +25 -0
  39. package/dist/cjs/utilities/shipengine/warehouses.cjs +2 -1
  40. package/dist/cjs/workflows/connect-external-carrier/connect-external-carrier.cjs +7 -3
  41. package/dist/cjs/workflows/label-workflow/label-workflow.cjs +11 -3
  42. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/confirmation-and-submission-step.cjs +1 -1
  43. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +17 -1
  44. package/dist/cjs/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.cjs +4 -1
  45. package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +4 -1
  46. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +14 -3
  47. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +12 -12
  48. package/dist/esm/components/field/credit-card-input/credit-card-input.js +47 -30
  49. package/dist/esm/components/field/rate-select/rate-card/rate-card.js +30 -6
  50. package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +8 -3
  51. package/dist/esm/components/field/rate-select/rate-select.js +26 -5
  52. package/dist/esm/components/forms/address-form/address-form-schema.js +3 -3
  53. package/dist/esm/components/forms/edit-billing-form/edit-billing-form.js +58 -5
  54. package/dist/esm/components/service-card/service-card.js +4 -4
  55. package/dist/esm/components/service-card/service-card.styles.js +5 -2
  56. package/dist/esm/components/service-point-display/service-point-display.js +2 -37
  57. package/dist/esm/components/service-point-display/service-point-display.styles.js +0 -12
  58. package/dist/esm/components/shipment-not-found-error/index.js +1 -0
  59. package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.js +38 -0
  60. package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.styles.js +22 -0
  61. package/dist/esm/components/suspend-purchase/suspend-purchase.js +11 -3
  62. package/dist/esm/elements/purchase-label/components/rate-form/rate-form.js +14 -4
  63. package/dist/esm/elements/purchase-label/components/rate-form/rate-schema.js +7 -2
  64. package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +2 -0
  65. package/dist/esm/elements/purchase-label/hooks/use-rate-options.js +31 -2
  66. package/dist/esm/elements/purchase-label/hooks/use-rates-form.js +14 -18
  67. package/dist/esm/elements/purchase-label/hooks/use-request-rates.js +20 -20
  68. package/dist/esm/elements/purchase-label/purchase-label.js +4 -1
  69. package/dist/esm/elements/shipment-summary/components/label-display/label-card.js +18 -33
  70. package/dist/esm/elements/shipment-summary/components/label-display/label-card.styles.js +0 -19
  71. package/dist/esm/elements/shipment-summary/components/label-display/paperless-label-display.js +52 -0
  72. package/dist/esm/elements/shipment-summary/components/label-display/paperless-label-display.styles.js +25 -0
  73. package/dist/esm/features/payment-method-settings/payment-method-settings.js +57 -19
  74. package/dist/esm/hooks/use-configure-shipment.js +33 -12
  75. package/dist/esm/hooks/use-helpers.js +4 -1
  76. package/dist/esm/index.js +1 -0
  77. package/dist/esm/locales/en/account-settings.json.js +6 -0
  78. package/dist/esm/locales/en/common.json.js +2 -0
  79. package/dist/esm/locales/en/purchase-label.json.js +5 -3
  80. package/dist/esm/package.json.js +1 -1
  81. package/dist/esm/utilities/address.js +26 -0
  82. package/dist/esm/utilities/index.js +1 -0
  83. package/dist/esm/utilities/money.js +14 -1
  84. package/dist/esm/utilities/rate-warning-messages.js +23 -0
  85. package/dist/esm/utilities/shipengine/warehouses.js +2 -1
  86. package/dist/esm/workflows/connect-external-carrier/connect-external-carrier.js +7 -3
  87. package/dist/esm/workflows/label-workflow/label-workflow.js +11 -3
  88. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/confirmation-and-submission-step.js +1 -1
  89. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +17 -1
  90. package/dist/esm/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.js +4 -1
  91. package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +4 -1
  92. package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +14 -3
  93. package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +12 -12
  94. package/dist/types/components/field/credit-card-input/credit-card-input.d.ts.map +1 -1
  95. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +4 -2
  96. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
  97. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +7 -2
  98. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
  99. package/dist/types/components/field/rate-select/rate-select.d.ts +1 -0
  100. package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
  101. package/dist/types/components/forms/address-form/address-form-schema.d.ts.map +1 -1
  102. package/dist/types/components/forms/edit-billing-form/edit-billing-form.d.ts +2 -1
  103. package/dist/types/components/forms/edit-billing-form/edit-billing-form.d.ts.map +1 -1
  104. package/dist/types/components/service-card/service-card.d.ts +1 -1
  105. package/dist/types/components/service-card/service-card.d.ts.map +1 -1
  106. package/dist/types/components/service-card/service-card.styles.d.ts +4 -1
  107. package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
  108. package/dist/types/components/service-point-display/service-point-display.d.ts.map +1 -1
  109. package/dist/types/components/service-point-display/service-point-display.styles.d.ts +0 -12
  110. package/dist/types/components/service-point-display/service-point-display.styles.d.ts.map +1 -1
  111. package/dist/types/components/shipment-not-found-error/index.d.ts +2 -0
  112. package/dist/types/components/shipment-not-found-error/index.d.ts.map +1 -0
  113. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts +6 -0
  114. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts.map +1 -0
  115. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.styles.d.ts +19 -0
  116. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.styles.d.ts.map +1 -0
  117. package/dist/types/components/suspend-purchase/suspend-purchase.d.ts +4 -2
  118. package/dist/types/components/suspend-purchase/suspend-purchase.d.ts.map +1 -1
  119. package/dist/types/elements/labels-grid/labels-grid.d.ts +11 -1
  120. package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
  121. package/dist/types/elements/manage-carriers/manage-carriers.d.ts +11 -1
  122. package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
  123. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +11 -1
  124. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
  125. package/dist/types/elements/manage-funding/manage-funding-element.d.ts +11 -1
  126. package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
  127. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +11 -1
  128. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  129. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +11 -1
  130. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
  131. package/dist/types/elements/purchase-label/components/rate-form/rate-form.d.ts +1 -1
  132. package/dist/types/elements/purchase-label/components/rate-form/rate-form.d.ts.map +1 -1
  133. package/dist/types/elements/purchase-label/components/rate-form/rate-schema.d.ts +10 -1
  134. package/dist/types/elements/purchase-label/components/rate-form/rate-schema.d.ts.map +1 -1
  135. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts +2 -1
  136. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts.map +1 -1
  137. package/dist/types/elements/purchase-label/hooks/use-rate-options.d.ts.map +1 -1
  138. package/dist/types/elements/purchase-label/hooks/use-rates-form.d.ts +2 -2
  139. package/dist/types/elements/purchase-label/hooks/use-rates-form.d.ts.map +1 -1
  140. package/dist/types/elements/purchase-label/hooks/use-request-rates.d.ts.map +1 -1
  141. package/dist/types/elements/purchase-label/purchase-label.d.ts +11 -1
  142. package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
  143. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +11 -1
  144. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
  145. package/dist/types/elements/shipment-summary/components/label-display/label-card.d.ts.map +1 -1
  146. package/dist/types/elements/shipment-summary/components/label-display/label-card.styles.d.ts +0 -19
  147. package/dist/types/elements/shipment-summary/components/label-display/label-card.styles.d.ts.map +1 -1
  148. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.d.ts +8 -0
  149. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.d.ts.map +1 -0
  150. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.styles.d.ts +22 -0
  151. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.styles.d.ts.map +1 -0
  152. package/dist/types/elements/shipment-summary/shipment-summary.d.ts +11 -1
  153. package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
  154. package/dist/types/elements/shipments-grid/hooks/use-shipments-grid.d.ts.map +1 -1
  155. package/dist/types/elements/shipments-grid/shipments-grid.d.ts +11 -1
  156. package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
  157. package/dist/types/elements/theme-creator/theme-creator.d.ts +11 -1
  158. package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
  159. package/dist/types/elements/transaction-history/transaction-history-element.d.ts +11 -1
  160. package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
  161. package/dist/types/elements/unit-settings/unit-settings-element.d.ts +11 -1
  162. package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
  163. package/dist/types/elements/vat-settings/vat-settings-element.d.ts +11 -1
  164. package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
  165. package/dist/types/elements/void-label/void-label.d.ts +11 -1
  166. package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
  167. package/dist/types/features/payment-method-settings/payment-method-settings.d.ts.map +1 -1
  168. package/dist/types/hooks/use-configure-shipment.d.ts +1 -0
  169. package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
  170. package/dist/types/hooks/use-helpers.d.ts +2 -0
  171. package/dist/types/hooks/use-helpers.d.ts.map +1 -1
  172. package/dist/types/index.d.ts +1 -1
  173. package/dist/types/index.d.ts.map +1 -1
  174. package/dist/types/locales/en/index.d.ts +11 -1
  175. package/dist/types/locales/en/index.d.ts.map +1 -1
  176. package/dist/types/types/rates.d.ts +1 -0
  177. package/dist/types/types/rates.d.ts.map +1 -1
  178. package/dist/types/utilities/address.d.ts +21 -0
  179. package/dist/types/utilities/address.d.ts.map +1 -0
  180. package/dist/types/utilities/feature-flags/types.d.ts +1 -1
  181. package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
  182. package/dist/types/utilities/index.d.ts +1 -0
  183. package/dist/types/utilities/index.d.ts.map +1 -1
  184. package/dist/types/utilities/money.d.ts +6 -0
  185. package/dist/types/utilities/money.d.ts.map +1 -1
  186. package/dist/types/utilities/rate-warning-messages.d.ts +15 -0
  187. package/dist/types/utilities/rate-warning-messages.d.ts.map +1 -0
  188. package/dist/types/workflows/account-settings/account-settings.d.ts +11 -1
  189. package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
  190. package/dist/types/workflows/carrier-services/carrier-services.d.ts +11 -1
  191. package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
  192. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +11 -1
  193. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
  194. package/dist/types/workflows/label-workflow/label-workflow.d.ts +11 -1
  195. package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
  196. package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
  197. package/dist/types/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.d.ts.map +1 -1
  198. package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts +2 -1
  199. package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts.map +1 -1
  200. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts +3 -1
  201. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
  202. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -0
  203. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
  204. package/dist/types/workflows/onboarding/onboarding.d.ts +11 -1
  205. package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
  206. package/package.json +3 -3
@@ -3,11 +3,14 @@
3
3
  var _tslib = require('../../_virtual/_tslib.cjs');
4
4
  var jsxRuntime = require('@emotion/react/jsx-runtime');
5
5
  var useToggle = require('../../hooks/use-toggle.cjs');
6
+ var giger = require('@shipengine/giger');
6
7
  var reactApi = require('@shipengine/react-api');
7
8
  var React = require('react');
8
9
  var reactI18next = require('react-i18next');
9
10
  var editBillingForm = require('../../components/forms/edit-billing-form/edit-billing-form.cjs');
10
11
  var walletCard = require('../../components/wallet-card/wallet-card.cjs');
12
+ var elementsContextProvider = require('../../elements-provider/elements-context-provider.cjs');
13
+ var spacer = require('../../components/spacer/spacer.cjs');
11
14
  var loader = require('../../components/loader/loader.cjs');
12
15
  var zeroState = require('../../components/zero-state/zero-state.cjs');
13
16
 
@@ -18,37 +21,72 @@ const PaymentMethodSettings = ({
18
21
  const {
19
22
  t
20
23
  } = reactI18next.useTranslation();
24
+ const {
25
+ globalFeatures
26
+ } = elementsContextProvider.useElements();
27
+ const {
28
+ supportEmailAddress
29
+ } = globalFeatures;
21
30
  const [showEditBilling, toggleShowEditBilling] = useToggle.useToggle(false);
22
31
  const [isUpdatingBilling, setIsUpdatingBilling] = React.useState(false);
23
32
  const {
24
- mutateAsync: updateBilling
33
+ error: updateBillingError,
34
+ mutateAsync: updateBilling,
35
+ reset: resetUpdateFundingSource
25
36
  } = reactApi.useUpdateFundingSource();
26
37
  const {
27
38
  data: fundingSources,
28
39
  refetch: refetchFundingSources,
29
40
  isLoading: fundingSourceLoading
30
41
  } = reactApi.useListFundingSources();
31
- const fundingSourceId = (_a = fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources[0]) === null || _a === void 0 ? void 0 : _a.fundingSourceId;
42
+ const {
43
+ fundingSourceId,
44
+ billingInfo
45
+ } = (_a = fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources[0]) !== null && _a !== void 0 ? _a : {};
32
46
  const handleUpdateBilling = (billingInfo, creditCardInfo) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
33
47
  if (fundingSourceId) {
34
- setIsUpdatingBilling(true);
35
- yield updateBilling({
36
- billingInfo,
37
- creditCardInfo,
38
- fundingSourceId
39
- });
40
- yield refetchFundingSources();
41
- toggleShowEditBilling(false);
42
- setIsUpdatingBilling(false);
48
+ try {
49
+ setIsUpdatingBilling(true);
50
+ yield updateBilling({
51
+ billingInfo,
52
+ creditCardInfo,
53
+ fundingSourceId
54
+ });
55
+ yield refetchFundingSources();
56
+ toggleShowEditBilling(false);
57
+ } catch (error) {
58
+ console.error("Error updating billing:", error);
59
+ // error is handled by the mutation
60
+ } finally {
61
+ setIsUpdatingBilling(false);
62
+ }
43
63
  }
44
64
  });
45
- if (showEditBilling) return jsxRuntime.jsx(editBillingForm.EditBillingForm, {
46
- isLoading: isUpdatingBilling,
47
- onCancel: () => {
48
- toggleShowEditBilling(false);
49
- },
50
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
51
- onSubmit: handleUpdateBilling
65
+ if (showEditBilling) return jsxRuntime.jsxs(jsxRuntime.Fragment, {
66
+ children: [jsxRuntime.jsx(editBillingForm.EditBillingForm, {
67
+ billingInfo: billingInfo,
68
+ isLoading: isUpdatingBilling,
69
+ onCancel: () => {
70
+ toggleShowEditBilling(false);
71
+ resetUpdateFundingSource();
72
+ },
73
+ onSubmit: (billingInfo, creditCardInfo) => {
74
+ void handleUpdateBilling(billingInfo, creditCardInfo);
75
+ }
76
+ }), (updateBillingError === null || updateBillingError === void 0 ? void 0 : updateBillingError.length) && jsxRuntime.jsxs(jsxRuntime.Fragment, {
77
+ children: [jsxRuntime.jsx(spacer.Spacer, {
78
+ multiplier: 2
79
+ }), jsxRuntime.jsx(giger.InlineNotification, {
80
+ css: {
81
+ textAlign: "left"
82
+ },
83
+ title: t("account-settings:errors.paymentMethod.title"),
84
+ type: giger.NotificationType.ERROR,
85
+ children: t("account-settings:errors.paymentMethod.description", {
86
+ email: supportEmailAddress
87
+ })
88
+ })]
89
+ })]
52
90
  });else {
53
91
  if (fundingSourceLoading) return jsxRuntime.jsx(loader.Loader, {
54
92
  message: t("loading.paymentMethod")
@@ -22,6 +22,8 @@ const useConfigureShipment = ({
22
22
  warehouseId,
23
23
  useWarehouses = true
24
24
  }) => {
25
+ // Track when we've created a replacement shipment for a "not found" case
26
+ const [replacementShipmentId, setReplacementShipmentId] = React.useState();
25
27
  // Queue of incomplete requirement keys (i.e., Ship From addresses, Warehouses, Carriers)
26
28
  const incompleteRequirementsKeys = React.useMemo(() => [], []);
27
29
  const {
@@ -77,7 +79,7 @@ const useConfigureShipment = ({
77
79
  salesOrderIds: salesOrderId ? [salesOrderId] : salesOrder$1 ? [salesOrder$1.salesOrderId] :
78
80
  // TODO: current workaround - revert to being undefined rather than empty list
79
81
  [],
80
- shipmentIds: shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
82
+ shipmentIds: replacementShipmentId ? [replacementShipmentId] : shipmentId ? [shipmentId] : externalShipment ? [externalShipment.shipmentId] : newV1Shipment ? [newV1Shipment.shipments[0].shipmentId] : undefined
81
83
  });
82
84
  const {
83
85
  error: createSalesOrderShipmentErrors,
@@ -90,6 +92,19 @@ const useConfigureShipment = ({
90
92
  const cancelledShipment = shipment.getShipmentByStatus("cancelled", salesOrderShipments);
91
93
  const defaultWarehouse = warehouses.getDefaultWarehouse(warehouses$1);
92
94
  const defaultShipFromAddress = address.getDefaultShipFromAddress(shipFromAddresses);
95
+ // Common function to create a V1 shipment
96
+ const createV1ShipmentWithDefaults = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
97
+ const v1Shipment = yield createV1Shipment(Object.assign({}, (defaultShipFromAddress === null || defaultShipFromAddress === void 0 ? void 0 : defaultShipFromAddress.originAddress) ? {
98
+ shipFrom: defaultShipFromAddress.originAddress
99
+ } : {
100
+ warehouseId: warehouseId ? warehouseId : defaultWarehouse.warehouseId
101
+ }));
102
+ if (v1Shipment) {
103
+ yield refetchSalesOrderShipments();
104
+ return v1Shipment;
105
+ }
106
+ return null;
107
+ }), [createV1Shipment, defaultShipFromAddress, defaultWarehouse, warehouseId, refetchSalesOrderShipments]);
93
108
  // Handles the creation of new shipments for the sales order flow and one-off flow
94
109
  const handleShipmentCreation = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
95
110
  var _a, _b, _c;
@@ -139,16 +154,17 @@ const useConfigureShipment = ({
139
154
  }
140
155
  // Create a Shipment for one-off flow
141
156
  if (!salesOrderId && !externalOrderId && !externalOrderNumber && !orderSourceCode && !shipmentId && !externalShipmentId) {
142
- const v1Shipment = yield createV1Shipment(Object.assign({}, (defaultShipFromAddress === null || defaultShipFromAddress === void 0 ? void 0 : defaultShipFromAddress.originAddress) ? {
143
- shipFrom: defaultShipFromAddress.originAddress
144
- } : {
145
- warehouseId: warehouseId ? warehouseId : defaultWarehouse.warehouseId
146
- }));
147
- if (v1Shipment) {
148
- yield refetchSalesOrderShipments();
149
- }
157
+ yield createV1ShipmentWithDefaults();
158
+ }
159
+ }), [createSalesOrderShipment, createV1ShipmentWithDefaults, creatingSalesOrderShipment, creatingV1Shipment, defaultShipFromAddress, defaultWarehouse, externalOrderId, externalOrderNumber, externalShipmentId, incompleteRequirementsKeys, isExternalShipmentFetching, isExternalShipmentInitialLoading, isFetchingWarehouses, isInitialLoadingWarehouses, labelPurchasedSalesOrderShipment, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching, orderSourceCode, pendingSalesOrderShipment, salesOrder$1, salesOrderId, salesOrderShipmentCreated, shipFromAddresses === null || shipFromAddresses === void 0 ? void 0 : shipFromAddresses.length, shipmentId, useWarehouses, v1shipmentCreated, warehouseId, warehouses$1]);
160
+ const createNewShipmentForNotFound = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
161
+ // Force create a new shipment even if shipmentId exists (for shipment_not_found case)
162
+ const v1Shipment = yield createV1ShipmentWithDefaults();
163
+ if (v1Shipment) {
164
+ // Store the new shipment ID to override the stale one
165
+ setReplacementShipmentId(v1Shipment.shipments[0].shipmentId);
150
166
  }
151
- }), [createSalesOrderShipment, createV1Shipment, creatingSalesOrderShipment, creatingV1Shipment, defaultShipFromAddress, defaultWarehouse, externalOrderId, externalOrderNumber, externalShipmentId, incompleteRequirementsKeys, isExternalShipmentFetching, isExternalShipmentInitialLoading, isFetchingWarehouses, isInitialLoadingWarehouses, labelPurchasedSalesOrderShipment, listSalesOrderShipmentsInitiallyLoading, listSalesOrderShipmentsIsFetching, orderSourceCode, pendingSalesOrderShipment, refetchSalesOrderShipments, salesOrder$1, salesOrderId, salesOrderShipmentCreated, shipFromAddresses === null || shipFromAddresses === void 0 ? void 0 : shipFromAddresses.length, shipmentId, useWarehouses, v1shipmentCreated, warehouseId, warehouses$1]);
167
+ }), [createV1ShipmentWithDefaults]);
152
168
  const refetchPendingSalesOrderShipments = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
153
169
  const {
154
170
  data: shipments
@@ -180,13 +196,18 @@ const useConfigureShipment = ({
180
196
  errorCode: "invalid_status",
181
197
  errorSource: "elements",
182
198
  errorType: "business_rules"
183
- })] : []), ...(incompleteRequirementsKeys.length > 0 ? [new reactApi.CodedError(incompleteRequirementsKeys.length > 1 ? "no_carriers_and_warehouses" : incompleteRequirementsKeys[0], {
199
+ })] : []), ...(incompleteRequirementsKeys.length > 0 ? [new reactApi.CodedError(incompleteRequirementsKeys.length === 1 ? "no_carriers_and_warehouses" : incompleteRequirementsKeys[0], {
184
200
  errorCode: "unknown",
185
201
  errorSource: "elements",
186
202
  errorType: "business_rules"
203
+ })] : []), ...((salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) === 0 && shipmentId ? [new reactApi.CodedError("shipment_not_found", {
204
+ errorCode: "invalid_status",
205
+ errorSource: "elements",
206
+ errorType: "business_rules"
187
207
  })] : [])];
188
208
  return {
189
209
  carriers,
210
+ createNewShipmentForNotFound,
190
211
  errors: errors.length > 0 ? errors : undefined,
191
212
  isLoading: (isSalesOrderLoading || !(salesOrderShipments === null || salesOrderShipments === void 0 ? void 0 : salesOrderShipments.length) || creatingSalesOrderShipment) && errors.length === 0,
192
213
  refetchPendingSalesOrderShipments,
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var reactApi = require('@shipengine/react-api');
4
+ var address = require('../utilities/address.cjs');
4
5
  var checks = require('../utilities/checks.cjs');
5
6
 
6
7
  const useHelpers = () => {
@@ -17,7 +18,9 @@ const useHelpers = () => {
17
18
  return {
18
19
  helpersReady,
19
20
  sellerOnboarded,
20
- validateShipFromAddress: checks.validateShipFromAddress
21
+ validateShipFromAddress: checks.validateShipFromAddress,
22
+ getCountries: address.getCountries,
23
+ getUsStates: address.getUsStates
21
24
  };
22
25
  };
23
26
 
@@ -4,7 +4,8 @@ var reactApi = require('@shipengine/react-api');
4
4
  var styles = require('./utilities/styles.cjs');
5
5
  var featureFlags = require('./utilities/feature-flags/feature-flags.cjs');
6
6
  var checks = require('./utilities/checks.cjs');
7
- var address = require('./constants/shipengine/address.cjs');
7
+ var address = require('./utilities/address.cjs');
8
+ var address$1 = require('./constants/shipengine/address.cjs');
8
9
  var manageCarriers = require('./elements/manage-carriers/manage-carriers.cjs');
9
10
  var manageWarehouses = require('./elements/manage-warehouses/manage-warehouses.cjs');
10
11
  var purchaseLabel = require('./elements/purchase-label/purchase-label.cjs');
@@ -46,17 +47,19 @@ exports.getDefaultFeatures = featureFlags.getDefaultFeatures;
46
47
  exports.getSellerIdFromToken = checks.getSellerIdFromToken;
47
48
  exports.isOnboarded = checks.isOnboarded;
48
49
  exports.validateShipFromAddress = checks.validateShipFromAddress;
49
- exports.Country = address.Country;
50
- exports.UsState = address.UsState;
51
- exports.UsaCity = address.UsaCity;
52
- exports.addressNameRegex = address.addressNameRegex;
53
- exports.countries = address.countries;
54
- exports.countryCodes = address.countryCodes;
55
- exports.euCountryCodes = address.euCountryCodes;
56
- exports.postalCodeRegex = address.postalCodeRegex;
57
- exports.usCities = address.usCities;
58
- exports.usStateCodes = address.usStateCodes;
59
- exports.usStates = address.usStates;
50
+ exports.getCountries = address.getCountries;
51
+ exports.getUsStates = address.getUsStates;
52
+ exports.Country = address$1.Country;
53
+ exports.UsState = address$1.UsState;
54
+ exports.UsaCity = address$1.UsaCity;
55
+ exports.addressNameRegex = address$1.addressNameRegex;
56
+ exports.countries = address$1.countries;
57
+ exports.countryCodes = address$1.countryCodes;
58
+ exports.euCountryCodes = address$1.euCountryCodes;
59
+ exports.postalCodeRegex = address$1.postalCodeRegex;
60
+ exports.usCities = address$1.usCities;
61
+ exports.usStateCodes = address$1.usStateCodes;
62
+ exports.usStates = address$1.usStates;
60
63
  exports.ManageCarriers = manageCarriers;
61
64
  exports.ManageWarehouses = manageWarehouses;
62
65
  exports.PurchaseLabel = purchaseLabel;
@@ -26,6 +26,12 @@ var accoutSettings = {
26
26
  labelLayout: "Shipping Label Layout",
27
27
  unitSettings: "Units of Measure",
28
28
  vatSettings: "Tax Settings"
29
+ },
30
+ errors: {
31
+ paymentMethod: {
32
+ title: "Error Updating Payment Method",
33
+ description: "There was an error updating your payment method. Ensure your payment information is correct and try again. If the problem persists, contact support at {{email}}."
34
+ }
29
35
  }
30
36
  }
31
37
  };
@@ -165,10 +165,12 @@ var common = {
165
165
  total: "Total"
166
166
  },
167
167
  errorMessages: {
168
+ fundingSourceCreationFailed: "Please check your payment and billing details, and confirm that your bank hasn’t blocked the payment method. If the issue persists, please contact support at {{email}}.",
168
169
  contactSupport: "Your transaction may not have processed as expected. Please contact support at {{email}}.",
169
170
  invalidNameOrCompany: "Recipient name and company name (if provided) must have two characters in first and last name.",
170
171
  parsingFailure: "Parsing failed. Please check address and try again.",
171
172
  incompleteLabelPurchaseRequirements: "Please add your {{requirements}} to continue purchasing a label.",
173
+ shipmentNotFound: "Cannot find shipment with ID: {{id}}.",
172
174
  shipmentCancelled: "This shipment is Cancelled in ShipStation. Log into ShipStation to restore the order to Awaiting Shipment status.",
173
175
  unableToLoad: {
174
176
  accountSettings: "Unable to load account settings",
@@ -12,7 +12,8 @@ var purchaseLabel = {
12
12
  showItems: "Show items",
13
13
  showMoreRates: "Show more rates",
14
14
  showFewerRates: "Show fewer rates",
15
- saveRate: "Save Rate"
15
+ saveRate: "Save Rate",
16
+ createNewShipment: "Create New Shipment"
16
17
  },
17
18
  balance: {
18
19
  currentBalance: "Available Funds:",
@@ -129,7 +130,6 @@ var purchaseLabel = {
129
130
  otherLocations: "Other drop off points near you:",
130
131
  noServicePointsForService: "There are no drop off locations for this service within 10km of your search area.",
131
132
  error: "Unable to find drop off locations within 10km of your search area.",
132
- paperless: "Print & Paperless",
133
133
  localTimeDisclaimer: "Hours shown in local time"
134
134
  },
135
135
  shipToAddressFormFields: "Ship To Address Form Fields",
@@ -143,7 +143,9 @@ var purchaseLabel = {
143
143
  },
144
144
  warnings: {
145
145
  parcelGuardShipDate: "ParcelGuard must be purchased within 48 hours of the ship date. Please update the ship date to continue."
146
- }
146
+ },
147
+ paperlessAvailable: "Paperless available",
148
+ usePaperlessLabel: "Use Paperless Label (QR Code)"
147
149
  }
148
150
  };
149
151
 
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var version = "2.24.1";
3
+ var version = "2.25.0";
4
4
 
5
5
  exports.version = version;
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var address = require('../constants/shipengine/address.cjs');
4
+
5
+ /**
6
+ * Returns a simplified list of countries for use in dropdowns and forms.
7
+ *
8
+ * @returns Array of country objects with name and code properties
9
+ */
10
+ const getCountries = () => {
11
+ return address.countries.map(country => ({
12
+ name: country.name,
13
+ code: country.code
14
+ }));
15
+ };
16
+ /**
17
+ * Returns a simplified list of US states for use in dropdowns and forms.
18
+ *
19
+ * @returns Array of US state objects with name and code properties
20
+ */
21
+ const getUsStates = () => {
22
+ return address.usStates.map(state => ({
23
+ name: state.name,
24
+ code: state.code
25
+ }));
26
+ };
27
+
28
+ exports.getCountries = getCountries;
29
+ exports.getUsStates = getUsStates;
@@ -2,6 +2,7 @@
2
2
 
3
3
  var styles = require('./styles.cjs');
4
4
  var checks = require('./checks.cjs');
5
+ var address = require('./address.cjs');
5
6
  var featureFlags = require('./feature-flags/feature-flags.cjs');
6
7
 
7
8
 
@@ -11,4 +12,6 @@ exports.scopeTheme = styles.scopeTheme;
11
12
  exports.getSellerIdFromToken = checks.getSellerIdFromToken;
12
13
  exports.isOnboarded = checks.isOnboarded;
13
14
  exports.validateShipFromAddress = checks.validateShipFromAddress;
15
+ exports.getCountries = address.getCountries;
16
+ exports.getUsStates = address.getUsStates;
14
17
  exports.getDefaultFeatures = featureFlags.getDefaultFeatures;
@@ -38,6 +38,19 @@ const calculateTotal = (...values) => {
38
38
  return value ? total + ((_a = value.amount) !== null && _a !== void 0 ? _a : 0) : total;
39
39
  }, 0);
40
40
  };
41
+ /**
42
+ * @internal
43
+ *
44
+ * # Money Utils - maskCreditCardNumber
45
+ */
46
+ const maskCreditCardNumber = cc => {
47
+ const sanitizedCC = cc.replace(/\s/g, "");
48
+ if (!sanitizedCC || sanitizedCC.length < 15 || sanitizedCC.length > 16) {
49
+ return cc;
50
+ }
51
+ const maskedCCNumber = "*".repeat(sanitizedCC.length - 4) + sanitizedCC.slice(-4);
52
+ return maskedCCNumber.replace(/(.{4})/g, "$1 ").trim();
53
+ };
41
54
  /**
42
55
  * @internal
43
56
  *
@@ -103,3 +116,4 @@ exports.formatExpiration = formatExpiration;
103
116
  exports.formatMoney = formatMoney;
104
117
  exports.getCurrencyFromString = getCurrencyFromString;
105
118
  exports.getCurrencySymbolFromString = getCurrencySymbolFromString;
119
+ exports.maskCreditCardNumber = maskCreditCardNumber;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var rateMessages = require('../data/rate-messages.json.cjs');
4
+
5
+ /**
6
+ * Builds warning messages for a rate by combining messages from different sources:
7
+ * 1. Messages for serviceCode:shipDay combination
8
+ * 2. Messages for serviceCode:packageType combination
9
+ * 3. Messages for serviceCode only
10
+ * 4. Existing warning messages from the rate
11
+ */
12
+ const buildRateWarningMessages = ({
13
+ serviceCode,
14
+ packageType,
15
+ shipDay,
16
+ existingWarningMessages = []
17
+ }) => {
18
+ const keys = [shipDay && `${serviceCode}:${shipDay}`, packageType && `${serviceCode}:${packageType}`, serviceCode].filter(Boolean);
19
+ return [...keys.flatMap(key => {
20
+ var _a;
21
+ return (_a = rateMessages.default[key]) !== null && _a !== void 0 ? _a : [];
22
+ }), ...existingWarningMessages];
23
+ };
24
+
25
+ exports.buildRateWarningMessages = buildRateWarningMessages;
@@ -1,7 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const getDefaultWarehouse = warehouses => {
4
- return warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.isDefault);
4
+ var _a;
5
+ return (_a = warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.isDefault)) !== null && _a !== void 0 ? _a : warehouses === null || warehouses === void 0 ? void 0 : warehouses[0];
5
6
  };
6
7
  const getWarehouseById = (warehouseId, warehouses) => {
7
8
  return warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.warehouseId === warehouseId);
@@ -85,7 +85,7 @@ const Component = ({
85
85
  refetch: refetchSchema
86
86
  } = reactApi.useGetCarrierConnectionForm({
87
87
  carrierName: selectedCarrier !== null && selectedCarrier !== void 0 ? selectedCarrier : "apicode-dummy-carrier",
88
- enabled: false
88
+ enabled: !!selectedCarrier
89
89
  });
90
90
  React.useEffect(() => {
91
91
  if (selectedCarrier && needsRefetch) {
@@ -152,7 +152,9 @@ const Component = ({
152
152
  const updatedSchema = Object.assign({}, schema);
153
153
  // camelize required fields, as casing varies between carriers
154
154
  if (updatedSchema.required && Array.isArray(updatedSchema.required)) {
155
- updatedSchema.required = updatedSchema.required.map(humps__namespace.camelize);
155
+ updatedSchema.required = updatedSchema.required.map(item => {
156
+ return typeof item === "string" ? humps__namespace.camelize(item) : item;
157
+ });
156
158
  }
157
159
  // camelize property keys
158
160
  // fail safe to ensure schema properties and required array match in the event the camelizeKeys from shipengine/js-api isn't consistent
@@ -174,7 +176,9 @@ const Component = ({
174
176
  const updatedUiSchema = Object.assign({}, uiSchemaClone);
175
177
  // add nickname to ui:order and camelize the values to ensure consistency with jsonSchema properties and required array
176
178
  if (!hasNicknameProperty && updatedUiSchema["ui:order"]) {
177
- updatedUiSchema["ui:order"] = [...updatedUiSchema["ui:order"], "nickname"].map(humps__namespace.camelize);
179
+ // ui:order is typically an array of strings, but apparently can also be an array of arrays of strings, so we need to recursively camelize the items
180
+ const camelizeUIOrderItem = item => typeof item === "string" ? humps__namespace.camelize(item) : item.map(i => humps__namespace.camelize(i));
181
+ updatedUiSchema["ui:order"] = [...updatedUiSchema["ui:order"], "nickname"].map(camelizeUIOrderItem);
178
182
  }
179
183
  return updatedUiSchema;
180
184
  }, [uiSchema, hasNicknameProperty]);
@@ -46,6 +46,7 @@ const Component = _a => {
46
46
  data: accountSettings
47
47
  } = reactApi.useGetAccountSettings();
48
48
  const {
49
+ createNewShipmentForNotFound,
49
50
  shipment: shipment$1,
50
51
  salesOrder,
51
52
  isLoading: isConfiguringShipment,
@@ -59,19 +60,24 @@ const Component = _a => {
59
60
  useWarehouses: (_b = propFeatures === null || propFeatures === void 0 ? void 0 : propFeatures.shipmentForm) === null || _b === void 0 ? void 0 : _b.useWarehouses,
60
61
  warehouseId
61
62
  }));
63
+ // Track if we have a shipment_not_found error to avoid reusing the bad shipment ID
64
+ const hasShipmentNotFoundError = configureShipmentErrors === null || configureShipmentErrors === void 0 ? void 0 : configureShipmentErrors.some(error => error.message === "shipment_not_found");
65
+ const shipmentId = _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : undefined;
62
66
  const {
63
67
  data: insuranceAccount,
64
68
  isInitialLoading: insuranceIsLoading
65
69
  } = reactApi.useGetInsuranceAccount((shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.insuranceProvider) === reactApi.SE.InsuranceProviderType.SHIPSURANCE ? reactApi.SE.InsuranceProviderType.SHIPSURANCE : undefined);
66
70
  const {
67
71
  data: labelsResponse,
68
- isLoading: isLabelsLoading,
72
+ isFetching: isLabelsLoading,
69
73
  error: listLabelsErrors,
70
74
  refetch: refetchLabels
71
75
  } = reactApi.useListLabels({
72
- enabled: _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId),
76
+ enabled:
77
+ // Don't enable if we have a shipment_not_found error (avoid reusing bad ID)
78
+ hasShipmentNotFoundError ? false : _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId),
73
79
  queryFnParams: {
74
- shipmentId: _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId
80
+ shipmentId: (shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId) || (!hasShipmentNotFoundError ? shipmentId : undefined)
75
81
  }
76
82
  });
77
83
  /**
@@ -175,6 +181,8 @@ const Component = _a => {
175
181
  data: shipment$1 || salesOrder,
176
182
  errors: errors.length ? errors : undefined,
177
183
  isLoading: isLabelsLoading || isConfiguringShipment || insuranceIsLoading,
184
+ onCreateNewShipment: createNewShipmentForNotFound,
185
+ shipmentId: shipmentId,
178
186
  children: element && getElement(element)
179
187
  });
180
188
  };
@@ -73,7 +73,7 @@ const ConfirmationAndSubmissionStep = ({
73
73
  }),
74
74
  children: [jsxRuntime.jsx(ccProviderLogo.CcProviderLogo, {
75
75
  provider: provider,
76
- width: 36
76
+ width: 56
77
77
  }), jsxRuntime.jsx(giger.Typography, {
78
78
  variant: "body2",
79
79
  children: `**** **** **** ${last4 !== null && last4 !== void 0 ? last4 : "****"}`
@@ -1,10 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var _tslib = require('../../../../_virtual/_tslib.cjs');
4
+ var useScrubErrors = require('../../../../hooks/use-scrub-errors.cjs');
4
5
  var reactApi = require('@shipengine/react-api');
5
6
  var checks = require('../../../../utilities/checks.cjs');
6
7
  var warehouses = require('../../../../utilities/shipengine/warehouses.cjs');
7
8
  var React = require('react');
9
+ var reactI18next = require('react-i18next');
8
10
  var useManageWarehouses = require('../../../../features/manage-warehouses/use-manage-warehouses.cjs');
9
11
  var elementsContextProvider = require('../../../../elements-provider/elements-context-provider.cjs');
10
12
 
@@ -15,6 +17,9 @@ const useConfirmationAndSubmissionStep = ({
15
17
  globalFeatures,
16
18
  getToken
17
19
  } = elementsContextProvider.useElements();
20
+ const {
21
+ t
22
+ } = reactI18next.useTranslation();
18
23
  const [isSubmittingOnboarding, setIsSubmittingOnboarding] = React.useState(false);
19
24
  const {
20
25
  createWarehouse,
@@ -35,6 +40,15 @@ const useConfirmationAndSubmissionStep = ({
35
40
  mutateAsync: createFundingSource,
36
41
  reset: resetCreateFundingSource
37
42
  } = reactApi.useCreateFundingSource();
43
+ const displayableCreateFundingSourceErrors = useScrubErrors.useScrubErrors({
44
+ errors: createFundingSourceErrors !== null && createFundingSourceErrors !== void 0 ? createFundingSourceErrors : undefined,
45
+ predicate: React.useCallback(e => e.message.includes("An unexpected error occurred."), []),
46
+ scrubber: React.useCallback(() => {
47
+ return `${t("common:errorMessages.fundingSourceCreationFailed", {
48
+ email: globalFeatures.supportEmailAddress
49
+ })} `;
50
+ }, [globalFeatures.supportEmailAddress, t])
51
+ });
38
52
  const {
39
53
  error: updatePaymentMethodErrors,
40
54
  isLoading: isUpdatingPaymentMethod,
@@ -296,7 +310,9 @@ const useConfirmationAndSubmissionStep = ({
296
310
  setIsSubmittingOnboarding(false);
297
311
  }), [onboardSeller, updateExistingFundingSource, onStepComplete, createFundingSourceErrors, registerCarrierErrors, updatePaymentMethodErrors, updateWarehouseErrors]);
298
312
  return {
299
- createFundingSourceErrors,
313
+ createFundingSourceErrors: displayableCreateFundingSourceErrors === null || displayableCreateFundingSourceErrors === void 0 ? void 0 : displayableCreateFundingSourceErrors.map(message => ({
314
+ message
315
+ })),
300
316
  createOnboardingSubmissionHandler,
301
317
  isLoading: {
302
318
  connectingCarriers: isRegisteringCarriers,
@@ -61,6 +61,7 @@ const OnboardingWizard = ({
61
61
  isLoadingTermsAgreementStep,
62
62
  fundingSourceRequiredTerms,
63
63
  fundingSourceMetadata,
64
+ hasFreeStampsConnected,
64
65
  handleSubmitTermsAgreement,
65
66
  refetchCarriers,
66
67
  refetchFundingSources,
@@ -167,8 +168,10 @@ const OnboardingWizard = ({
167
168
  return jsxRuntime.jsx(termsAgreementStep.TermsAgreementStep, {
168
169
  carrierProfilesToRegister: carrierProfilesToRegister,
169
170
  enabledCarrierProfiles: enabledCarrierProfiles,
171
+ fundingSourceRequiredTerms: fundingSourceRequiredTerms,
170
172
  insuranceProviderProfiles: insuranceProviderProfiles,
171
- onSubmit: handleSubmitTermsAgreement
173
+ onSubmit: handleSubmitTermsAgreement,
174
+ showStampsLogo: hasFreeStampsConnected
172
175
  });
173
176
  },
174
177
  label: t("onboarding:stepLabel.termsAgreement")
@@ -20,6 +20,7 @@ var submitButton = require('../../../../components/field/submit-button/submit-bu
20
20
  const TermsAgreementForm = ({
21
21
  carrierTerms,
22
22
  hideTerms,
23
+ requiredTerms = [],
23
24
  insuranceProviderTerms,
24
25
  isSubmitDisabled,
25
26
  onSubmit
@@ -98,7 +99,9 @@ const TermsAgreementForm = ({
98
99
  title: t("onboarding:termsAndAgreementLinkText.auctanePrivacyPolicy")
99
100
  }]
100
101
  }
101
- }), !!carrierTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
102
+ }), requiredTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
103
+ term: term
104
+ }, term.termType)), !!carrierTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
102
105
  children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
103
106
  bold: true,
104
107
  variant: "body1",
@@ -16,7 +16,9 @@ const TermsAgreementStep = ({
16
16
  carrierProfilesToRegister,
17
17
  insuranceProviderProfiles,
18
18
  onSubmit,
19
- enabledCarrierProfiles
19
+ enabledCarrierProfiles,
20
+ fundingSourceRequiredTerms,
21
+ showStampsLogo = false
20
22
  }) => {
21
23
  var _a, _b, _c, _d, _e;
22
24
  const {
@@ -49,8 +51,16 @@ const TermsAgreementStep = ({
49
51
  });
50
52
  }
51
53
  const renderCarrierLogos = () => {
54
+ var _a;
52
55
  if (!carrierProfilesToRegister.length) return null;
53
- return carrierProfilesToRegister.map(p => {
56
+ const stampsCarrierProfile = {
57
+ carrierCode: "stamps_com",
58
+ carrierName: (_a = carrierFriendlyNames["stamps_com"]) === null || _a === void 0 ? void 0 : _a.name
59
+ };
60
+ // kind of a goofy way to just display stamps/usps logo without sending it in the payload to register
61
+ // we don't want to register stamps as a carrier if it's not being used as the primary payment method
62
+ const carriersToDisplay = showStampsLogo ? [stampsCarrierProfile, ...carrierProfilesToRegister] : carrierProfilesToRegister;
63
+ return carriersToDisplay.map(p => {
54
64
  var _a;
55
65
  return jsxRuntime.jsx(carrierLogo.CarrierLogo, {
56
66
  carrierCode: p.carrierCode,
@@ -101,7 +111,8 @@ const TermsAgreementStep = ({
101
111
  carrierTerms: carrierTerms,
102
112
  hideTerms: hideTerms,
103
113
  insuranceProviderTerms: insuranceProviderTerms,
104
- onSubmit: onSubmit
114
+ onSubmit: onSubmit,
115
+ requiredTerms: fundingSourceRequiredTerms
105
116
  })
106
117
  })]
107
118
  });