@shipengine/elements 2.26.5 → 2.28.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 (241) hide show
  1. package/dist/cjs/assets/xcover/logo.svg.cjs +44 -0
  2. package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/index.cjs +7 -0
  3. package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.cjs +56 -0
  4. package/dist/cjs/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.cjs +27 -0
  5. package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +53 -42
  6. package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +4 -0
  7. package/dist/cjs/components/field/rate-select/rate-select.cjs +80 -49
  8. package/dist/cjs/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.cjs +1 -1
  9. package/dist/cjs/components/forms/warehouse-form/warehouse-form.cjs +10 -1
  10. package/dist/cjs/components/service-card/service-card.cjs +3 -2
  11. package/dist/cjs/components/service-card/service-card.styles.cjs +4 -2
  12. package/dist/cjs/data/insurance-provider-metadatas.json.cjs +10 -4
  13. package/dist/cjs/elements/customs-form/customs-form-element.cjs +294 -0
  14. package/dist/cjs/elements/customs-form/customs-form-element.stories.cjs +243 -0
  15. package/dist/cjs/elements/customs-form/customs-form-schema.cjs +59 -0
  16. package/dist/cjs/elements/customs-form/customs-form-types.cjs +63 -0
  17. package/dist/cjs/elements/customs-form/index.cjs +10 -0
  18. package/dist/cjs/elements/index.cjs +5 -0
  19. package/dist/cjs/elements/labels-grid/hooks/use-labels-grid.cjs +2 -2
  20. package/dist/cjs/elements/labels-grid/labels-grid.cjs +29 -9
  21. package/dist/cjs/elements/labels-grid/labels-grid.styles.cjs +5 -0
  22. package/dist/cjs/elements/manage-carriers/manage-carriers.cjs +1 -1
  23. package/dist/cjs/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.cjs +1 -1
  24. package/dist/cjs/elements/purchase-label/components/index.cjs +2 -0
  25. package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +3 -5
  26. package/dist/cjs/elements/purchase-label/components/shipment-form/shipment-form.cjs +7 -4
  27. package/dist/cjs/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.cjs +35 -11
  28. package/dist/cjs/elements/purchase-label/hooks/use-insurance-provider-options.cjs +2 -2
  29. package/dist/cjs/elements/shipments-grid/hooks/use-shipments-grid.cjs +2 -2
  30. package/dist/cjs/elements/shipments-grid/shipments-grid.cjs +20 -6
  31. package/dist/cjs/elements/shipments-grid/shipments-grid.styles.cjs +5 -0
  32. package/dist/cjs/factories/shipengine/address.cjs +114 -0
  33. package/dist/cjs/factories/shipengine/money.cjs +21 -0
  34. package/dist/cjs/factories/shipengine/order-source.cjs +37 -0
  35. package/dist/cjs/factories/shipengine/package.cjs +41 -0
  36. package/dist/cjs/factories/shipengine/resource.cjs +23 -0
  37. package/dist/cjs/factories/shipengine/shipment.cjs +176 -0
  38. package/dist/cjs/factories/shipengine/weight.cjs +44 -0
  39. package/dist/cjs/factories/utils.cjs +19 -0
  40. package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +4 -6
  41. package/dist/cjs/features/manage-carriers/manage-carriers.cjs +8 -6
  42. package/dist/cjs/features/manage-warehouses/manage-warehouses.cjs +9 -5
  43. package/dist/cjs/hooks/use-configure-shipment.cjs +55 -14
  44. package/dist/cjs/hooks/use-get-funding-source-insurance-provider.cjs +7 -7
  45. package/dist/cjs/hooks/use-get-service-data.cjs +60 -0
  46. package/dist/cjs/hooks/use-import-sales-order.cjs +45 -20
  47. package/dist/cjs/hooks/use-manage-funding-source-insurance.cjs +15 -23
  48. package/dist/cjs/index.cjs +5 -0
  49. package/dist/cjs/locales/en/common.json.cjs +1 -1
  50. package/dist/cjs/locales/en/list-labels.json.cjs +2 -1
  51. package/dist/cjs/locales/en/list-shipments.json.cjs +1 -1
  52. package/dist/cjs/locales/en/manage-warehouses.json.cjs +2 -0
  53. package/dist/cjs/locales/en/purchase-label.json.cjs +9 -1
  54. package/dist/cjs/package.json.cjs +1 -1
  55. package/dist/cjs/utilities/feature-flags/feature-flags.cjs +3 -1
  56. package/dist/cjs/utilities/shipengine/carrier.cjs +4 -0
  57. package/dist/cjs/utilities/shipengine/index.cjs +3 -0
  58. package/dist/cjs/utilities/shipengine/insurance.cjs +63 -0
  59. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +9 -9
  60. package/dist/cjs/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.cjs +1 -1
  61. package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +3 -2
  62. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +8 -6
  63. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +4 -19
  64. package/dist/esm/assets/xcover/logo.svg.js +23 -0
  65. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/index.js +1 -0
  66. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.js +54 -0
  67. package/dist/esm/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.js +25 -0
  68. package/dist/esm/components/field/rate-select/rate-card/rate-card.js +53 -42
  69. package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +4 -0
  70. package/dist/esm/components/field/rate-select/rate-select.js +80 -49
  71. package/dist/esm/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.js +1 -1
  72. package/dist/esm/components/forms/warehouse-form/warehouse-form.js +10 -1
  73. package/dist/esm/components/service-card/service-card.js +3 -2
  74. package/dist/esm/components/service-card/service-card.styles.js +4 -2
  75. package/dist/esm/data/insurance-provider-metadatas.json.js +9 -4
  76. package/dist/esm/elements/customs-form/customs-form-element.js +291 -0
  77. package/dist/esm/elements/customs-form/customs-form-element.stories.js +232 -0
  78. package/dist/esm/elements/customs-form/customs-form-schema.js +56 -0
  79. package/dist/esm/elements/customs-form/customs-form-types.js +60 -0
  80. package/dist/esm/elements/customs-form/index.js +3 -0
  81. package/dist/esm/elements/index.js +3 -0
  82. package/dist/esm/elements/labels-grid/hooks/use-labels-grid.js +2 -2
  83. package/dist/esm/elements/labels-grid/labels-grid.js +30 -10
  84. package/dist/esm/elements/labels-grid/labels-grid.styles.js +5 -0
  85. package/dist/esm/elements/manage-carriers/manage-carriers.js +1 -1
  86. package/dist/esm/elements/purchase-label/components/customs-forms/tax-ids/tax-ids.js +1 -1
  87. package/dist/esm/elements/purchase-label/components/index.js +1 -0
  88. package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +3 -5
  89. package/dist/esm/elements/purchase-label/components/shipment-form/shipment-form.js +7 -4
  90. package/dist/esm/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.js +35 -11
  91. package/dist/esm/elements/purchase-label/hooks/use-insurance-provider-options.js +2 -2
  92. package/dist/esm/elements/shipments-grid/hooks/use-shipments-grid.js +2 -2
  93. package/dist/esm/elements/shipments-grid/shipments-grid.js +21 -7
  94. package/dist/esm/elements/shipments-grid/shipments-grid.styles.js +5 -0
  95. package/dist/esm/elements-provider/elements-context-provider.js +1 -1
  96. package/dist/esm/factories/shipengine/address.js +111 -0
  97. package/dist/esm/factories/shipengine/money.js +19 -0
  98. package/dist/esm/factories/shipengine/order-source.js +34 -0
  99. package/dist/esm/factories/shipengine/package.js +39 -0
  100. package/dist/esm/factories/shipengine/resource.js +21 -0
  101. package/dist/esm/factories/shipengine/shipment.js +168 -0
  102. package/dist/esm/factories/shipengine/weight.js +40 -0
  103. package/dist/esm/factories/utils.js +15 -0
  104. package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +5 -7
  105. package/dist/esm/features/manage-carriers/manage-carriers.js +8 -6
  106. package/dist/esm/features/manage-warehouses/manage-warehouses.js +9 -5
  107. package/dist/esm/hooks/use-configure-shipment.js +55 -14
  108. package/dist/esm/hooks/use-get-funding-source-insurance-provider.js +7 -7
  109. package/dist/esm/hooks/use-get-service-data.js +58 -0
  110. package/dist/esm/hooks/use-import-sales-order.js +47 -22
  111. package/dist/esm/hooks/use-manage-funding-source-insurance.js +15 -23
  112. package/dist/esm/index.js +3 -0
  113. package/dist/esm/locales/en/common.json.js +1 -1
  114. package/dist/esm/locales/en/list-labels.json.js +2 -1
  115. package/dist/esm/locales/en/list-shipments.json.js +1 -1
  116. package/dist/esm/locales/en/manage-warehouses.json.js +2 -0
  117. package/dist/esm/locales/en/purchase-label.json.js +9 -1
  118. package/dist/esm/package.json.js +1 -1
  119. package/dist/esm/utilities/feature-flags/feature-flags.js +3 -1
  120. package/dist/esm/utilities/shipengine/carrier.js +4 -0
  121. package/dist/esm/utilities/shipengine/index.js +1 -1
  122. package/dist/esm/utilities/shipengine/insurance.js +61 -1
  123. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +9 -9
  124. package/dist/esm/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.js +1 -1
  125. package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +3 -2
  126. package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +8 -6
  127. package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +5 -20
  128. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts +2 -0
  129. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/index.d.ts.map +1 -0
  130. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts +8 -0
  131. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.d.ts.map +1 -0
  132. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts +22 -0
  133. package/dist/types/components/field/rate-select/rate-card/rate-attribute-item/rate-attribute-item.styles.d.ts.map +1 -0
  134. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +3 -2
  135. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
  136. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +4 -0
  137. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
  138. package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
  139. package/dist/types/components/forms/register-funding-source-insurance-form/register-funding-source-insurance-form.d.ts.map +1 -1
  140. package/dist/types/components/forms/warehouse-form/warehouse-form.d.ts.map +1 -1
  141. package/dist/types/components/service-card/service-card.d.ts +2 -1
  142. package/dist/types/components/service-card/service-card.d.ts.map +1 -1
  143. package/dist/types/components/service-card/service-card.styles.d.ts +2 -1
  144. package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
  145. package/dist/types/elements/customs-form/customs-form-element.d.ts +1222 -0
  146. package/dist/types/elements/customs-form/customs-form-element.d.ts.map +1 -0
  147. package/dist/types/elements/customs-form/customs-form-element.stories.d.ts +12 -0
  148. package/dist/types/elements/customs-form/customs-form-element.stories.d.ts.map +1 -0
  149. package/dist/types/elements/customs-form/customs-form-schema.d.ts +398 -0
  150. package/dist/types/elements/customs-form/customs-form-schema.d.ts.map +1 -0
  151. package/dist/types/elements/customs-form/customs-form-types.d.ts +139 -0
  152. package/dist/types/elements/customs-form/customs-form-types.d.ts.map +1 -0
  153. package/dist/types/elements/customs-form/index.d.ts +4 -0
  154. package/dist/types/elements/customs-form/index.d.ts.map +1 -0
  155. package/dist/types/elements/index.d.ts +1 -0
  156. package/dist/types/elements/index.d.ts.map +1 -1
  157. package/dist/types/elements/labels-grid/labels-grid.d.ts +14 -3
  158. package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
  159. package/dist/types/elements/labels-grid/labels-grid.styles.d.ts +5 -0
  160. package/dist/types/elements/labels-grid/labels-grid.styles.d.ts.map +1 -1
  161. package/dist/types/elements/manage-carriers/manage-carriers.d.ts +14 -3
  162. package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
  163. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +14 -3
  164. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
  165. package/dist/types/elements/manage-funding/manage-funding-element.d.ts +14 -3
  166. package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
  167. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +14 -3
  168. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  169. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +14 -3
  170. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
  171. package/dist/types/elements/purchase-label/components/index.d.ts +1 -0
  172. package/dist/types/elements/purchase-label/components/index.d.ts.map +1 -1
  173. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts +1 -1
  174. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts.map +1 -1
  175. package/dist/types/elements/purchase-label/components/shipment-form/shipment-form.d.ts.map +1 -1
  176. package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts +6 -1
  177. package/dist/types/elements/purchase-label/hooks/use-filter-visible-rate-options/use-filter-visible-rate-options.d.ts.map +1 -1
  178. package/dist/types/elements/purchase-label/hooks/use-insurance-provider-options.d.ts.map +1 -1
  179. package/dist/types/elements/purchase-label/purchase-label.d.ts +14 -3
  180. package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
  181. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +14 -3
  182. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
  183. package/dist/types/elements/shipment-summary/shipment-summary.d.ts +14 -3
  184. package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
  185. package/dist/types/elements/shipments-grid/shipments-grid.d.ts +14 -3
  186. package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
  187. package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts +5 -0
  188. package/dist/types/elements/shipments-grid/shipments-grid.styles.d.ts.map +1 -1
  189. package/dist/types/elements/theme-creator/theme-creator.d.ts +14 -3
  190. package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
  191. package/dist/types/elements/transaction-history/transaction-history-element.d.ts +14 -3
  192. package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
  193. package/dist/types/elements/unit-settings/unit-settings-element.d.ts +14 -3
  194. package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
  195. package/dist/types/elements/vat-settings/vat-settings-element.d.ts +14 -3
  196. package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
  197. package/dist/types/elements/void-label/void-label.d.ts +14 -3
  198. package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
  199. package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
  200. package/dist/types/features/manage-carriers/manage-carriers.d.ts.map +1 -1
  201. package/dist/types/features/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  202. package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
  203. package/dist/types/hooks/use-get-funding-source-insurance-provider.d.ts.map +1 -1
  204. package/dist/types/hooks/use-get-service-data.d.ts +14 -0
  205. package/dist/types/hooks/use-get-service-data.d.ts.map +1 -0
  206. package/dist/types/hooks/use-import-sales-order.d.ts +20 -1
  207. package/dist/types/hooks/use-import-sales-order.d.ts.map +1 -1
  208. package/dist/types/hooks/use-manage-funding-source-insurance.d.ts +3 -4
  209. package/dist/types/hooks/use-manage-funding-source-insurance.d.ts.map +1 -1
  210. package/dist/types/locales/en/index.d.ts +14 -3
  211. package/dist/types/locales/en/index.d.ts.map +1 -1
  212. package/dist/types/types/insurance-metadata.d.ts +1 -1
  213. package/dist/types/types/insurance-metadata.d.ts.map +1 -1
  214. package/dist/types/types/rates.d.ts +1 -0
  215. package/dist/types/types/rates.d.ts.map +1 -1
  216. package/dist/types/utilities/feature-flags/feature-flags.d.ts.map +1 -1
  217. package/dist/types/utilities/feature-flags/types.d.ts +8 -0
  218. package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
  219. package/dist/types/utilities/shipengine/carrier.d.ts.map +1 -1
  220. package/dist/types/utilities/shipengine/insurance.d.ts +31 -0
  221. package/dist/types/utilities/shipengine/insurance.d.ts.map +1 -1
  222. package/dist/types/workflows/account-settings/account-settings.d.ts +14 -3
  223. package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
  224. package/dist/types/workflows/carrier-services/carrier-services.d.ts +14 -3
  225. package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
  226. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +14 -3
  227. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
  228. package/dist/types/workflows/label-workflow/label-workflow.d.ts +14 -3
  229. package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
  230. package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
  231. package/dist/types/workflows/onboarding/components/ship-from-address-step/ship-from-address-step.d.ts.map +1 -1
  232. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
  233. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -5
  234. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
  235. package/dist/types/workflows/onboarding/onboarding.d.ts +14 -3
  236. package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
  237. package/package.json +3 -3
  238. package/dist/cjs/hooks/use-get-service-name.cjs +0 -22
  239. package/dist/esm/hooks/use-get-service-name.js +0 -20
  240. package/dist/types/hooks/use-get-service-name.d.ts +0 -5
  241. package/dist/types/hooks/use-get-service-name.d.ts.map +0 -1
@@ -5,26 +5,49 @@ var reactApi = require('@shipengine/react-api');
5
5
  var reactQuery = require('@tanstack/react-query');
6
6
  var React = require('react');
7
7
 
8
+ /**
9
+ * Imports and retrieves sales orders by either:
10
+ * - Sales order ID lookup
11
+ * - External order ID/number search
12
+ *
13
+ * 1. First attempts to find the sales order using provided identifiers
14
+ * 2. If no order is found and initial fetches have run, automatically refreshes order sources
15
+ * 3. Invalidates relevant queries after successful refresh to refetch updated data
16
+ *
17
+ * @returns Object:
18
+ * - `salesOrder`: The found sales order, or undefined
19
+ * - `isLoading`: Boolean indicating if the hook is currently loading data
20
+ * - `errors`: Array of errors from failed queries, or undefined
21
+ */
8
22
  const useImportSalesOrder = ({
9
23
  enabled,
10
24
  externalOrderId,
25
+ externalOrderNumber,
11
26
  orderSourceCode,
12
27
  salesOrderId
13
28
  }) => {
14
29
  var _a, _b, _c;
15
30
  const queryClient = reactQuery.useQueryClient();
16
31
  const [refreshAttempted, setRefreshAttempted] = React.useState(false);
17
- // attempt to get sales order through external id means
18
- const orderByExternalIdQuery = reactApi.useGetSalesOrderByExternalOrderId(externalOrderId, {
19
- enabled: enabled && !!externalOrderId && !salesOrderId
32
+ // Fetch sales order by External Order ID or External Order Number
33
+ const salesOrderByExternalIdQuery = reactApi.useListSalesOrders({
34
+ externalOrderId,
35
+ externalOrderNumber
20
36
  });
21
37
  // if an order was found through external search disable this query
22
- const orderByIdQuery = reactApi.useGetSalesOrder(salesOrderId, {
38
+ const salesOrderByIdQuery = reactApi.useGetSalesOrder(salesOrderId, {
23
39
  enabled: enabled && !!salesOrderId
24
40
  });
25
- const salesOrder = React.useMemo(() => salesOrderId ? orderByIdQuery.data : orderByExternalIdQuery.data, [salesOrderId, orderByIdQuery.data, orderByExternalIdQuery.data]);
41
+ const salesOrder = React.useMemo(() => {
42
+ if (salesOrderId) {
43
+ return salesOrderByIdQuery.data;
44
+ } else if (salesOrderByExternalIdQuery.data && salesOrderByExternalIdQuery.data.length > 0) {
45
+ return salesOrderByExternalIdQuery.data[0];
46
+ }
47
+ return undefined;
48
+ }, [salesOrderId, salesOrderByIdQuery.data, salesOrderByExternalIdQuery.data]);
26
49
  // Determine if the initial fetch attempts (if applicable) have settled without finding data
27
- const initialFetchSettled = (salesOrderId ? !orderByIdQuery.isInitialLoading && !orderByIdQuery.isFetching : true) && (externalOrderId && !salesOrderId ? !orderByExternalIdQuery.isLoading && !orderByExternalIdQuery.isFetching : true);
50
+ const initialFetchSettled = (salesOrderId ? !salesOrderByIdQuery.isInitialLoading && !salesOrderByIdQuery.isFetching : true) && ((externalOrderNumber || externalOrderId) && !salesOrderId ? !salesOrderByExternalIdQuery.isLoading && !salesOrderByExternalIdQuery.isFetching : true);
28
51
  const shouldAttemptRefresh = enabled && initialFetchSettled && !salesOrder && !refreshAttempted;
29
52
  const listOrderSourcesQuery = reactApi.useListOrderSources({
30
53
  enabled: shouldAttemptRefresh
@@ -34,6 +57,17 @@ const useImportSalesOrder = ({
34
57
  isLoading: isRefreshingOrderSource,
35
58
  mutateAsync: refreshOrderSource
36
59
  } = reactApi.useRefreshOrderSource();
60
+ const invalidateSalesOrderQueries = React.useCallback(() => {
61
+ if (salesOrderId) {
62
+ void queryClient.invalidateQueries({
63
+ queryKey: ["useGetSalesOrder", salesOrderId]
64
+ });
65
+ } else if (externalOrderId || externalOrderNumber) {
66
+ void queryClient.invalidateQueries({
67
+ queryKey: ["useListSalesOrders", externalOrderId, externalOrderNumber]
68
+ });
69
+ }
70
+ }, [queryClient, salesOrderId, externalOrderId, externalOrderNumber]);
37
71
  React.useEffect(() => {
38
72
  if (listOrderSourcesQuery.isSuccess && listOrderSourcesQuery.data && shouldAttemptRefresh && !isRefreshingOrderSource) {
39
73
  const orderSourcesToRefresh = orderSourceCode ? listOrderSourcesQuery.data.filter(o => o.orderSourceCode.includes(orderSourceCode) && o.active) : listOrderSourcesQuery.data.filter(o => o.active);
@@ -41,29 +75,20 @@ const useImportSalesOrder = ({
41
75
  setRefreshAttempted(true);
42
76
  void (() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
43
77
  yield Promise.all(orderSourcesToRefresh.map(o => refreshOrderSource(o.orderSourceId, {
44
- // Invalidate relevant queries on successful refresh
78
+ // Invalidate relevant queries
45
79
  onSuccess: () => {
46
- if (salesOrderId) {
47
- void queryClient.invalidateQueries({
48
- queryKey: ["useGetSalesOrder", salesOrderId]
49
- });
50
- }
51
- if (externalOrderId && !salesOrderId) {
52
- void queryClient.invalidateQueries({
53
- queryKey: ["useGetSalesOrderByExternalOrderId", externalOrderId]
54
- });
55
- }
80
+ invalidateSalesOrderQueries();
56
81
  }
57
82
  })));
58
83
  }))();
59
84
  }
60
85
  }
61
86
  }, [externalOrderId, isRefreshingOrderSource, listOrderSourcesQuery.data, listOrderSourcesQuery.isSuccess, orderSourceCode, queryClient, refreshOrderSource, salesOrderId, shouldAttemptRefresh]);
62
- const isLoading = orderByIdQuery.isInitialLoading || orderByExternalIdQuery.isInitialLoading || listOrderSourcesQuery.isInitialLoading || isRefreshingOrderSource;
63
- const errors = [...((_a = orderByIdQuery.error) !== null && _a !== void 0 ? _a : []), ...((_b = orderByExternalIdQuery.error) !== null && _b !== void 0 ? _b : []), ...((_c = listOrderSourcesQuery.error) !== null && _c !== void 0 ? _c : []), ...(refreshOrderSourceErrors !== null && refreshOrderSourceErrors !== void 0 ? refreshOrderSourceErrors : [])];
87
+ const isLoading = salesOrderByIdQuery.isInitialLoading || salesOrderByExternalIdQuery.isInitialLoading || listOrderSourcesQuery.isInitialLoading || isRefreshingOrderSource;
88
+ const errors = [...((_a = salesOrderByIdQuery.error) !== null && _a !== void 0 ? _a : []), ...((_b = salesOrderByExternalIdQuery.error) !== null && _b !== void 0 ? _b : []), ...((_c = listOrderSourcesQuery.error) !== null && _c !== void 0 ? _c : []), ...(refreshOrderSourceErrors !== null && refreshOrderSourceErrors !== void 0 ? refreshOrderSourceErrors : [])];
64
89
  return {
65
90
  errors: errors.length > 0 ? errors : undefined,
66
- isLoading,
91
+ isLoading: isLoading && errors.length === 0,
67
92
  salesOrder
68
93
  };
69
94
  };
@@ -2,14 +2,16 @@
2
2
 
3
3
  var _tslib = require('../_virtual/_tslib.cjs');
4
4
  var reactApi = require('@shipengine/react-api');
5
+ var insurance = require('../utilities/shipengine/insurance.cjs');
5
6
  var React = require('react');
6
7
  var elementsContextProvider = require('../elements-provider/elements-context-provider.cjs');
7
8
 
8
9
  const useManageFundingSourceInsurance = () => {
9
- var _a;
10
+ var _a, _b;
10
11
  const {
11
12
  globalFeatures: {
12
- enableParcelGuard
13
+ enableParcelGuard,
14
+ enableXCover
13
15
  }
14
16
  } = elementsContextProvider.useElements();
15
17
  const {
@@ -21,25 +23,12 @@ const useManageFundingSourceInsurance = () => {
21
23
  data: insuranceAcceptedTerms,
22
24
  isLoading: loadingInsuranceAcceptedTerms
23
25
  } = reactApi.useGetInsuranceFundingSourceAcceptedTerms({
24
- enabled: enableParcelGuard
26
+ enabled: enableParcelGuard || enableXCover
25
27
  });
26
28
  const insuranceProviderProfiles = React.useMemo(() => {
27
29
  var _a;
28
- return (_a = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.data) === null || _a === void 0 ? void 0 : _a.defaultFundingSourceProfile.optionalTerms.map(terms => {
29
- const providerLookup = {
30
- parcelguard_terms: "parcelguard"
31
- };
32
- const friendlyNameLookup = {
33
- parcelguard_terms: "ParcelGuard"
34
- };
35
- const provider = providerLookup[terms.termType];
36
- const friendlyName = friendlyNameLookup[terms.termType];
37
- return {
38
- friendlyName,
39
- provider,
40
- terms
41
- };
42
- });
30
+ const optionalTerms = (_a = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.data) === null || _a === void 0 ? void 0 : _a.defaultFundingSourceProfile.optionalTerms;
31
+ return insurance.groupTermsByProvider(optionalTerms);
43
32
  }, [fundingSourceMetadata]);
44
33
  const {
45
34
  mutateAsync: registerCarrier
@@ -79,12 +68,15 @@ const useManageFundingSourceInsurance = () => {
79
68
  }
80
69
  }), [fundingSources, insuranceProviderProfiles, registerCarrier]);
81
70
  const hasInsuranceToRegister = React.useMemo(() => {
82
- return enableParcelGuard &&
83
- // has insurance provider profiles but none have been accepted AND has a funding source
84
- !!(insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) && (insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms.length) === 0 && !!(fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources.length);
85
- }, [enableParcelGuard, insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length, insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms.length, fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources.length]);
71
+ var _a, _b;
72
+ const isProviderEnabled = insurance.getIsFundingSourceInsuranceProviderEnabledAndSupported(insuranceProviderProfiles, enableXCover, enableParcelGuard);
73
+ const hasProfiles = Boolean(insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length);
74
+ const hasNoAcceptedTerms = ((_b = (_a = insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0;
75
+ const hasFundingSources = Boolean(fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources.length);
76
+ return isProviderEnabled && hasProfiles && hasNoAcceptedTerms && hasFundingSources;
77
+ }, [insuranceProviderProfiles, enableXCover, enableParcelGuard, (_a = insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms) === null || _a === void 0 ? void 0 : _a.length, fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources.length]);
86
78
  return {
87
- fundingSourceCountryCode: (_a = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.data) === null || _a === void 0 ? void 0 : _a.defaultFundingSourceProfile.countryCode,
79
+ fundingSourceCountryCode: (_b = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.data) === null || _b === void 0 ? void 0 : _b.defaultFundingSourceProfile.countryCode,
88
80
  hasInsuranceToRegister,
89
81
  insuranceAcceptedTerms: insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms,
90
82
  insuranceProviderProfiles,
@@ -22,6 +22,8 @@ var selectLabelLayoutElement = require('./elements/select-label-layout/select-la
22
22
  var paymentMethodSettingsElement = require('./elements/payment-method-settings/payment-method-settings-element.cjs');
23
23
  var carrierServices = require('./workflows/carrier-services/carrier-services.cjs');
24
24
  var transactionHistoryElement = require('./elements/transaction-history/transaction-history-element.cjs');
25
+ var customsFormElement = require('./elements/customs-form/customs-form-element.cjs');
26
+ var customsFormTypes = require('./elements/customs-form/customs-form-types.cjs');
25
27
  var useAddressValidation = require('./hooks/use-address-validation.cjs');
26
28
  var useHelpers = require('./hooks/use-helpers.cjs');
27
29
  var useConfigureShipment = require('./hooks/use-configure-shipment.cjs');
@@ -77,6 +79,9 @@ exports.SelectLabelLayout = selectLabelLayoutElement;
77
79
  exports.PaymentMethodSettings = paymentMethodSettingsElement;
78
80
  exports.CarrierServices = carrierServices;
79
81
  exports.TransactionHistory = transactionHistoryElement;
82
+ exports.CustomsForm = customsFormElement;
83
+ exports.extractCustomsFormData = customsFormTypes.extractCustomsFormData;
84
+ exports.getDefaultCustomsFormValues = customsFormTypes.getDefaultCustomsFormValues;
80
85
  exports.useAddressValidation = useAddressValidation.useAddressValidation;
81
86
  exports.useHelpers = useHelpers.useHelpers;
82
87
  exports.useConfigureShipment = useConfigureShipment.useConfigureShipment;
@@ -248,7 +248,7 @@ var common = {
248
248
  parcelguard: "ParcelGuard",
249
249
  shipsurance: "Shipsurance",
250
250
  thirdParty: "Third Party",
251
- x_cover: "XCover"
251
+ xCover: "XCover"
252
252
  },
253
253
  loading: {
254
254
  accountSettings: "Loading account settings...",
@@ -3,12 +3,13 @@
3
3
  var listLabels = {
4
4
  "list-labels": {
5
5
  title: "List Labels",
6
+ none: "None",
6
7
  headers: {
7
8
  created: "Created Date",
8
9
  shipmentId: "Shipment ID",
9
10
  parcels: "Parcels",
10
11
  recipient: "Recipient",
11
- shipping: "Shipping",
12
+ service: "Service",
12
13
  shipDate: "Ship Date",
13
14
  status: "Label Status",
14
15
  trackingStatus: "Delivery Status",
@@ -7,7 +7,7 @@ var listShipments = {
7
7
  headers: {
8
8
  created: "Created Date",
9
9
  modified: "Modified Date",
10
- shipping: "Shipping",
10
+ service: "Service",
11
11
  shipmentId: "Shipment ID",
12
12
  parcels: "Parcels",
13
13
  recipient: "Recipient",
@@ -7,6 +7,8 @@ var manageWarehouses = {
7
7
  editWarehouse: "Edit Address",
8
8
  contactName: "Contact Name",
9
9
  "default": "Default",
10
+ forcedDefault: "This is your default Ship From Address",
11
+ forcedDefaultNew: "This will be your default Ship From Address",
10
12
  isDefault: "Set as default Ship From address",
11
13
  locationName: "Location Name",
12
14
  residentialAddress: "Residential Address",
@@ -93,7 +93,15 @@ var purchaseLabel = {
93
93
  rateSavings: "Save ${{amount}}",
94
94
  upsGroundSaverTermsAcknowledgement: "To start shipping with UPS Ground Saver, you are confirming that you have agreed to the <1>terms and conditions</1>",
95
95
  dhlExpressTermsAcknowledgement: "To start shipping with DHL, you are confirming that you have agreed to the <1>terms and conditions</1>",
96
- noRateService: "Rate and services will be billed based on carrier."
96
+ noRateService: "Rate and services will be billed based on carrier.",
97
+ rateAttributes: {
98
+ bestValue: "Best Value",
99
+ cheapest: "Cheapest",
100
+ fastest: "Fastest",
101
+ bestValueTooltip: "Lowest cost option arriving on a specified date within 4 days, with free carrier coverage up to $100 and a free dropoff option.",
102
+ cheapestTooltip: "Lowest cost option.",
103
+ fastestTooltip: "Fastest delivery option."
104
+ }
97
105
  },
98
106
  windsorFramework: {
99
107
  movementIndicator: "Movement Indicator",
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var version = "2.26.5";
3
+ var version = "2.28.0";
4
4
 
5
5
  exports.version = version;
@@ -28,6 +28,7 @@ const defaultFeatureFlags = {
28
28
  globalFeatures: {
29
29
  disableShadowDOM: false,
30
30
  enableParcelGuard: true,
31
+ enableXCover: false,
31
32
  isSandbox: false,
32
33
  poweredByShipEngine: true,
33
34
  showVatSettings: false,
@@ -50,7 +51,8 @@ const defaultFeatureFlags = {
50
51
  labelLayout: false,
51
52
  nicknameRate: true,
52
53
  requireDhlTermsAcknowledgement: false,
53
- saveRate: true
54
+ saveRate: true,
55
+ showMediaMail: false
54
56
  },
55
57
  shipmentForm: {
56
58
  addOns: true,
@@ -2,6 +2,7 @@
2
2
 
3
3
  var icon = require('../../assets/parcelguard/icon.svg.cjs');
4
4
  var logo = require('../../assets/parcelguard/logo.svg.cjs');
5
+ var logo$1 = require('../../assets/xcover/logo.svg.cjs');
5
6
 
6
7
  const USPS_CARRIER_CODES = ["usps", "stamps_com"];
7
8
  /**
@@ -59,6 +60,9 @@ const getLogoOrIconByCarrierCode = (carrierCode, type) => {
59
60
  if (carrierCode === "parcelguard") {
60
61
  return type === "logo" ? logo : icon;
61
62
  }
63
+ if (carrierCode === "xcover") {
64
+ return logo$1;
65
+ }
62
66
  const carrierCodeOverrides = {
63
67
  stamps_com: "stamps_com_wl",
64
68
  usps: "stamps_com_wl"
@@ -54,5 +54,8 @@ exports.isMetricWeightUnit = weight.isMetricWeightUnit;
54
54
  exports.isFlatRatePackageCode = _package.isFlatRatePackageCode;
55
55
  exports.getDefaultWarehouse = warehouses.getDefaultWarehouse;
56
56
  exports.getWarehouseById = warehouses.getWarehouseById;
57
+ exports.filterProfilesByAcceptedTerms = insurance.filterProfilesByAcceptedTerms;
57
58
  exports.getInsuranceProviderWithFriendlyName = insurance.getInsuranceProviderWithFriendlyName;
59
+ exports.getIsFundingSourceInsuranceProviderEnabledAndSupported = insurance.getIsFundingSourceInsuranceProviderEnabledAndSupported;
58
60
  exports.getIsInsuraceProviderAccepted = insurance.getIsInsuraceProviderAccepted;
61
+ exports.groupTermsByProvider = insurance.groupTermsByProvider;
@@ -12,6 +12,22 @@ var insuranceProviderMetadatas = require('../../data/insurance-provider-metadata
12
12
  const getInsuranceProviderWithFriendlyName = termType => {
13
13
  return insuranceProviderMetadatas.default[termType];
14
14
  };
15
+ /**
16
+ * @internal
17
+ *
18
+ * # Insurance Utilities - getIsFundingSourceInsuranceProviderEnabledAndSupported
19
+ *
20
+ * Determines if any insurance providers are enabled and supported based on feature flags and funding source data.
21
+ *
22
+ * @category Utilities
23
+ */
24
+ const getIsFundingSourceInsuranceProviderEnabledAndSupported = (insuranceProviders, xcoverEnabled, parcelguardEnabled) => {
25
+ if (!(insuranceProviders === null || insuranceProviders === void 0 ? void 0 : insuranceProviders.length)) return false;
26
+ const supportedProviders = insuranceProviders.map(p => p.provider);
27
+ if (xcoverEnabled && supportedProviders.includes("xcover")) return true;
28
+ if (parcelguardEnabled && supportedProviders.includes("parcelguard")) return true;
29
+ return false;
30
+ };
15
31
  /**
16
32
  * @internal
17
33
  *
@@ -22,6 +38,53 @@ const getInsuranceProviderWithFriendlyName = termType => {
22
38
  const getIsInsuraceProviderAccepted = (termType, acceptedTerms) => {
23
39
  return !!(acceptedTerms === null || acceptedTerms === void 0 ? void 0 : acceptedTerms.map(t => t.termType).includes(termType));
24
40
  };
41
+ /**
42
+ * @internal
43
+ *
44
+ * # Insurance Utilities - groupTermsByProvider
45
+ *
46
+ * Groups optional terms by insurance provider, creating InsuranceProviderProfile objects.
47
+ *
48
+ * @category Utilities
49
+ */
50
+ const groupTermsByProvider = optionalTerms => {
51
+ if (!optionalTerms) return [];
52
+ // Group terms by provider
53
+ const providerTermsMap = new Map();
54
+ optionalTerms.forEach(term => {
55
+ const providerInfo = getInsuranceProviderWithFriendlyName(term.termType);
56
+ if (providerInfo === null || providerInfo === void 0 ? void 0 : providerInfo.provider) {
57
+ const existingTerms = providerTermsMap.get(providerInfo.provider) || [];
58
+ providerTermsMap.set(providerInfo.provider, [...existingTerms, term]);
59
+ }
60
+ });
61
+ // Convert Map to InsuranceProviderProfile array
62
+ return Array.from(providerTermsMap.entries()).map(([, terms]) => {
63
+ const providerInfo = getInsuranceProviderWithFriendlyName(terms[0].termType);
64
+ return Object.assign(Object.assign({}, providerInfo), {
65
+ terms
66
+ });
67
+ });
68
+ };
69
+ /**
70
+ * @internal
71
+ *
72
+ * # Insurance Utilities - filterProfilesByAcceptedTerms
73
+ *
74
+ * Filters insurance provider profiles to exclude those that have already been accepted.
75
+ *
76
+ * @category Utilities
77
+ */
78
+ const filterProfilesByAcceptedTerms = (profiles, acceptedTerms) => {
79
+ if (!(acceptedTerms === null || acceptedTerms === void 0 ? void 0 : acceptedTerms.length)) return profiles;
80
+ const connectedTermTypes = new Set(acceptedTerms.map(t => t.termType));
81
+ return profiles.filter(profile => {
82
+ return !profile.terms.some(term => connectedTermTypes.has(term.termType));
83
+ });
84
+ };
25
85
 
86
+ exports.filterProfilesByAcceptedTerms = filterProfilesByAcceptedTerms;
26
87
  exports.getInsuranceProviderWithFriendlyName = getInsuranceProviderWithFriendlyName;
88
+ exports.getIsFundingSourceInsuranceProviderEnabledAndSupported = getIsFundingSourceInsuranceProviderEnabledAndSupported;
27
89
  exports.getIsInsuraceProviderAccepted = getIsInsuraceProviderAccepted;
90
+ exports.groupTermsByProvider = groupTermsByProvider;
@@ -107,12 +107,12 @@ const useConfirmationAndSubmissionStep = ({
107
107
  iovationBlackbox
108
108
  }) {
109
109
  const addressToRegister = address !== null && address !== void 0 ? address : defaultWarehouse.originAddress;
110
- // parcel guard check
111
- const insuranceProviders = globalFeatures.enableParcelGuard ? insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => ({
112
- acceptedTerms: [{
113
- termType: p.terms.termType,
114
- version: p.terms.version
115
- }],
110
+ // funding source insurance check
111
+ const insuranceProviders = globalFeatures.enableParcelGuard || globalFeatures.enableXCover ? insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.map(p => ({
112
+ acceptedTerms: p.terms.map(term => ({
113
+ termType: term.termType,
114
+ version: term.version
115
+ })),
116
116
  agreeToTerms: true,
117
117
  fundingSourceId,
118
118
  provider: p.provider
@@ -146,7 +146,7 @@ const useConfirmationAndSubmissionStep = ({
146
146
  console.error(error);
147
147
  throw error;
148
148
  }
149
- }), [registerCarrier, globalFeatures.enableParcelGuard]);
149
+ }), [globalFeatures.enableParcelGuard, globalFeatures.enableXCover, registerCarrier]);
150
150
  const onboardSeller = React.useCallback(({
151
151
  carrierProfiles,
152
152
  fundingSourceRequiredTerms,
@@ -205,7 +205,7 @@ const useConfirmationAndSubmissionStep = ({
205
205
  yield createHandleCarrierConnections({
206
206
  carrierProfiles,
207
207
  defaultWarehouse: warehouse,
208
- insuranceProviderProfiles: globalFeatures.enableParcelGuard ? insuranceProviderProfiles : undefined
208
+ insuranceProviderProfiles
209
209
  })(fundingSource.fundingSource.fundingSourceId, {
210
210
  iovationBlackbox
211
211
  });
@@ -215,7 +215,7 @@ const useConfirmationAndSubmissionStep = ({
215
215
  }
216
216
  }
217
217
  }
218
- }), [addSandboxCarriers, createFundingSource, createHandleCarrierConnections, createOrUpdateWarehouse, getToken, globalFeatures.enableParcelGuard, globalFeatures.isSandbox]);
218
+ }), [addSandboxCarriers, createFundingSource, createHandleCarrierConnections, createOrUpdateWarehouse, getToken, globalFeatures.isSandbox]);
219
219
  const updateExistingFundingSource = React.useCallback(({
220
220
  carrierProfiles,
221
221
  fundingSource,
@@ -45,7 +45,7 @@ const ShipFromAddressStep = ({
45
45
  }), jsxRuntime.jsx(warehouseForm.WarehouseForm, {
46
46
  onSubmit: onSubmit,
47
47
  requireEmail: true,
48
- shouldForceDefault: (pendingWarehouse === null || pendingWarehouse === void 0 ? void 0 : pendingWarehouse.isDefault) || (pendingShipFrom === null || pendingShipFrom === void 0 ? void 0 : pendingShipFrom.isDefault),
48
+ shouldForceDefault: true,
49
49
  submitButtonTitle: t("actions.continue"),
50
50
  useStrictSchema: true,
51
51
  warehouse: pendingWarehouse !== null && pendingWarehouse !== void 0 ? pendingWarehouse : pendingShipFrom
@@ -30,7 +30,8 @@ const TermsAgreementForm = ({
30
30
  } = reactI18next.useTranslation();
31
31
  const {
32
32
  globalFeatures: {
33
- enableParcelGuard
33
+ enableParcelGuard,
34
+ enableXCover
34
35
  }
35
36
  } = elementsContextProvider.useElements();
36
37
  const [showTerms, setShowTerms] = React.useState(false);
@@ -109,7 +110,7 @@ const TermsAgreementForm = ({
109
110
  }), carrierTerms.map((term, idx) => jsxRuntime.jsx(displayTerm.DisplayTerm, {
110
111
  terms: term
111
112
  }, idx))]
112
- }), enableParcelGuard && !!insuranceProviderTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
113
+ }), (enableParcelGuard || enableXCover) && !!insuranceProviderTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
113
114
  children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
114
115
  bold: true,
115
116
  variant: "body1",
@@ -22,13 +22,14 @@ const TermsAgreementStep = ({
22
22
  fundingSourceRequiredTerms,
23
23
  showStampsLogo = false
24
24
  }) => {
25
- var _a, _b, _c, _d, _e;
25
+ var _a, _b, _c, _d, _e, _f;
26
26
  const {
27
27
  t
28
28
  } = reactI18next.useTranslation("onboarding");
29
29
  const {
30
30
  globalFeatures: {
31
- enableParcelGuard
31
+ enableParcelGuard,
32
+ enableXCover
32
33
  }
33
34
  } = elementsContextProvider.useElements();
34
35
  const carrierFriendlyNames = useCarrierMetadata.useCarrierMetadata();
@@ -41,11 +42,12 @@ const TermsAgreementStep = ({
41
42
  };
42
43
  });
43
44
  const insuranceProviderTerms = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.flatMap(p => p.terms)) !== null && _a !== void 0 ? _a : [];
44
- const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _b !== void 0 ? _b : 0) > 0;
45
- const hasInsuranceToRegister = showParcelGuard && ((_c = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _c !== void 0 ? _c : 0) > 0;
45
+ const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0]) === null || _b === void 0 ? void 0 : _b.friendlyName) === "ParcelGuard";
46
+ const showXCover = enableXCover && ((_c = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles[0]) === null || _c === void 0 ? void 0 : _c.friendlyName) === "XCover";
47
+ const hasInsuranceToRegister = (showParcelGuard || showXCover) && ((_d = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _d !== void 0 ? _d : 0) > 0;
46
48
  const hasEnabledCarriersConfigurationError = !showStampsLogo && (!enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0);
47
- const hasAlreadyConnectedCarriers = ((_d = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _d !== void 0 ? _d : 0) > 0 && carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
48
- const hasCarriersToRegister = ((_e = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _e !== void 0 ? _e : 0) > 0 && carrierProfilesToRegister.length > 0;
49
+ const hasAlreadyConnectedCarriers = ((_e = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _e !== void 0 ? _e : 0) > 0 && carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
50
+ const hasCarriersToRegister = ((_f = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _f !== void 0 ? _f : 0) > 0 && carrierProfilesToRegister.length > 0;
49
51
  // Handle case where partner has not correctly enabled carriers and there is no insurance to register
50
52
  // Insurance does not get set in the same enabled carriers list and should bypass this check
51
53
  if (hasEnabledCarriersConfigurationError && !hasInsuranceToRegister) {
@@ -69,25 +69,10 @@ const useTermsAgreementStep = ({
69
69
  });
70
70
  }, [fundingSourceRequiredTerms, fundingSources, carriers, enabledCarrierProfiles]);
71
71
  const insuranceProviderProfiles = React.useMemo(() => {
72
- const insuranceProfiles = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultFundingSourceProfile.optionalTerms.map(terms => {
73
- return Object.assign(Object.assign({}, insurance.getInsuranceProviderWithFriendlyName(terms.termType)), {
74
- terms
75
- });
76
- });
77
- if (!insuranceProfiles) return [];
78
- // filter out insurance profiles that are already connected from insurance accepted terms
79
- const connectedInsuranceProfiles = insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms.map(terms => {
80
- return Object.assign(Object.assign({}, insurance.getInsuranceProviderWithFriendlyName(terms.termType)), {
81
- terms
82
- });
83
- });
84
- return insuranceProfiles.filter(profile => {
85
- const isConnected = connectedInsuranceProfiles === null || connectedInsuranceProfiles === void 0 ? void 0 : connectedInsuranceProfiles.some(c => c.terms.termType === profile.terms.termType);
86
- if (isConnected) {
87
- return false;
88
- }
89
- return true;
90
- });
72
+ const optionalTerms = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultFundingSourceProfile.optionalTerms;
73
+ const acceptedTerms = insuranceAcceptedTerms === null || insuranceAcceptedTerms === void 0 ? void 0 : insuranceAcceptedTerms.acceptedTerms;
74
+ const profiles = insurance.groupTermsByProvider(optionalTerms);
75
+ return insurance.filterProfilesByAcceptedTerms(profiles, acceptedTerms);
91
76
  }, [fundingSourceMetadata, insuranceAcceptedTerms]);
92
77
  const handleSubmitTermsAgreement = React.useCallback(() => {
93
78
  onStepComplete();
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+
3
+ var _path, _path2, _path3;
4
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
5
+ var SvgLogo = function SvgLogo(props) {
6
+ return /*#__PURE__*/React.createElement("svg", _extends({
7
+ width: 55,
8
+ height: 55,
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg"
11
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
12
+ d: "m37.192 29.2-4.853-8.145 4.622-8.135a.65.65 0 0 0 0-.598.525.525 0 0 0-.195-.222.567.567 0 0 0-.29-.089H30.41a.593.593 0 0 0-.283.082.554.554 0 0 0-.202.206l-1.735 3.118 2.96 4.994a1.402 1.402 0 0 1 0 1.426l-2.766 4.89 1.868 3.118c.047.081.115.15.198.198a.58.58 0 0 0 .276.078h6.053a.617.617 0 0 0 .293-.092.575.575 0 0 0 .205-.218.64.64 0 0 0 0-.61",
13
+ fill: "#FFE600"
14
+ })), _path2 || (_path2 = /*#__PURE__*/React.createElement("path", {
15
+ d: "m29.622 20.825-2.706-4.545-2.341-4.004a.555.555 0 0 0-.204-.2.593.593 0 0 0-.281-.076h-5.981a.579.579 0 0 0-.29.09.538.538 0 0 0-.196.22.64.64 0 0 0 0 .61l4.853 8.216-4.634 8.053a.618.618 0 0 0 0 .599c.044.09.11.17.194.23a.48.48 0 0 1 .121 0 .951.951 0 0 0 .17 0h6.066a.567.567 0 0 0 .288-.084.527.527 0 0 0 .197-.215l2.196-3.832 2.548-4.406a.63.63 0 0 0 0-.633",
16
+ fill: "#FFE600"
17
+ })), _path3 || (_path3 = /*#__PURE__*/React.createElement("path", {
18
+ d: "M2.703 40.333.147 36.31a.232.232 0 0 1-.005-.248.225.225 0 0 1 .223-.106h1.849a.269.269 0 0 1 .202.118l1.453 2.362 1.476-2.362a.259.259 0 0 1 .202-.118h1.849c.217 0 .334.19.217.354l-2.571 4.023 2.657 4.244a.23.23 0 0 1-.077.337.224.224 0 0 1-.125.025h-1.74a.284.284 0 0 1-.218-.118l-1.655-2.59-1.647 2.59a.299.299 0 0 1-.217.118H.264c-.218 0-.335-.197-.218-.362l2.657-4.244ZM13.828 35.973a4.095 4.095 0 0 1 2.987 1.156.238.238 0 0 1 0 .352l-.963 1.01a.226.226 0 0 1-.31 0 2.495 2.495 0 0 0-1.668-.635c-.67 0-1.312.269-1.785.747a2.561 2.561 0 0 0-.739 1.802c0 .676.266 1.324.74 1.802a2.511 2.511 0 0 0 1.784.747 2.622 2.622 0 0 0 1.652-.597.233.233 0 0 1 .319 0l.97 1.033a.262.262 0 0 1 0 .337 4.238 4.238 0 0 1-3.032 1.21 4.41 4.41 0 0 1-1.758-.288 4.443 4.443 0 0 1-1.506-.96 4.53 4.53 0 0 1 0-6.484c.433-.42.945-.746 1.506-.96a4.409 4.409 0 0 1 1.758-.287l.045.015ZM23.211 35.954a4.635 4.635 0 0 1 2.546.75 4.512 4.512 0 0 1 1.691 2.011c.35.82.443 1.724.269 2.596a4.47 4.47 0 0 1-1.247 2.305 4.6 4.6 0 0 1-2.34 1.236 4.653 4.653 0 0 1-2.645-.25 4.56 4.56 0 0 1-2.057-1.652 4.436 4.436 0 0 1 .553-5.674c.424-.418.927-.75 1.481-.977a4.638 4.638 0 0 1 1.75-.345Zm0 6.98c.504.004.998-.14 1.418-.414.42-.273.748-.662.942-1.119.194-.456.246-.96.149-1.445a2.483 2.483 0 0 0-.697-1.281 2.556 2.556 0 0 0-1.304-.684 2.583 2.583 0 0 0-1.472.146 2.53 2.53 0 0 0-1.14.926 2.464 2.464 0 0 0 .323 3.14 2.564 2.564 0 0 0 1.781.732ZM29.234 36.281a.219.219 0 0 1 .015-.225.23.23 0 0 1 .09-.078.24.24 0 0 1 .12-.022h1.737a.245.245 0 0 1 .216.14l2.153 4.646h.08l2.154-4.646a.251.251 0 0 1 .092-.1.262.262 0 0 1 .132-.04h1.73a.23.23 0 0 1 .217.095.213.213 0 0 1 .006.23l-4.098 8.52a.227.227 0 0 1-.086.101.238.238 0 0 1-.13.038h-.129a.246.246 0 0 1-.134-.037.235.235 0 0 1-.09-.102l-4.075-8.52ZM39.415 36.199a.25.25 0 0 1 .076-.171.263.263 0 0 1 .176-.074h5.48c.066 0 .13.026.177.072a.241.241 0 0 1 .074.173v1.39a.241.241 0 0 1-.074.173.255.255 0 0 1-.178.071h-3.66v1.58h3.01a.263.263 0 0 1 .177.073.249.249 0 0 1 .076.171v1.406a.242.242 0 0 1-.074.173.256.256 0 0 1-.178.072h-3.012v1.737h3.661c.067 0 .131.026.178.072a.24.24 0 0 1 .074.173v1.405a.24.24 0 0 1-.074.173.255.255 0 0 1-.178.072h-5.479a.264.264 0 0 1-.176-.074.25.25 0 0 1-.076-.17v-8.497ZM47.862 36.199c0-.065.026-.127.073-.173a.253.253 0 0 1 .176-.071h3.923a2.843 2.843 0 0 1 1.848.626c.519.42.866 1.007.979 1.656a2.69 2.69 0 0 1-.367 1.878A2.793 2.793 0 0 1 52.96 41.3l1.796 3.26a.24.24 0 0 1-.091.35.254.254 0 0 1-.134.028h-1.748a.262.262 0 0 1-.21-.118l-1.74-3.401h-.91v3.252a.258.258 0 0 1-.077.168.269.269 0 0 1-.172.076H48.11a.253.253 0 0 1-.176-.072.242.242 0 0 1-.073-.172v-8.473Zm4.027 3.59c.268-.014.521-.127.707-.318.185-.19.29-.442.292-.705a.975.975 0 0 0-.295-.688 1.019 1.019 0 0 0-.704-.289h-1.966v2h1.966Z",
19
+ fill: "#000"
20
+ })));
21
+ };
22
+
23
+ export { SvgLogo as default };
@@ -0,0 +1 @@
1
+ export { RateAttributeItem } from './rate-attribute-item.js';
@@ -0,0 +1,54 @@
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
+ import { useHoverableTooltip, Typography, Icon, IconSize, Tooltip } from '@shipengine/giger';
3
+ import { IconNames } from '@shipengine/giger-theme';
4
+ import { useRef } from 'react';
5
+ import { useTranslation } from 'react-i18next';
6
+ import { styles } from './rate-attribute-item.styles.js';
7
+
8
+ const RateAttributeItem = ({
9
+ attribute,
10
+ tooltipId
11
+ }) => {
12
+ const {
13
+ t
14
+ } = useTranslation("purchase-label");
15
+ const tooltipRef = useRef(null);
16
+ const {
17
+ opened
18
+ } = useHoverableTooltip(tooltipRef);
19
+ const rateAttributeMap = {
20
+ best_value: {
21
+ name: t("rates.rateAttributes.bestValue"),
22
+ description: t("rates.rateAttributes.bestValueTooltip")
23
+ },
24
+ cheapest: {
25
+ name: t("rates.rateAttributes.cheapest"),
26
+ description: t("rates.rateAttributes.cheapestTooltip")
27
+ },
28
+ fastest: {
29
+ name: t("rates.rateAttributes.fastest"),
30
+ description: t("rates.rateAttributes.fastestTooltip")
31
+ }
32
+ };
33
+ const rateAttribute = rateAttributeMap[attribute];
34
+ return jsxs("li", {
35
+ css: styles.attribute,
36
+ children: [jsx(Typography, {
37
+ component: "span",
38
+ variant: "small",
39
+ children: rateAttribute.name
40
+ }), jsx(Icon, {
41
+ css: styles.attributeIcon,
42
+ name: IconNames.INFO_FILLED,
43
+ ref: tooltipRef,
44
+ size: IconSize.SIZE_SMALL
45
+ }), tooltipRef.current && jsx(Tooltip, {
46
+ id: tooltipId,
47
+ isOpen: opened,
48
+ reference: tooltipRef.current,
49
+ children: rateAttribute.description
50
+ })]
51
+ });
52
+ };
53
+
54
+ export { RateAttributeItem };