@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
@@ -0,0 +1,25 @@
1
+ import { createStyles, scopeTheme } from '../../../../../utilities/styles.js';
2
+
3
+ const borderRadius = "7px";
4
+ const styles = createStyles({
5
+ attribute: theme => ({
6
+ color: scopeTheme(theme).palette.white,
7
+ padding: `2px ${scopeTheme(theme).spacing()}px`,
8
+ backgroundColor: scopeTheme(theme).palette.info.main,
9
+ display: "flex",
10
+ alignItems: "center",
11
+ ":first-of-type": {
12
+ borderTopLeftRadius: borderRadius,
13
+ borderBottomRightRadius: borderRadius
14
+ },
15
+ ":not(:first-of-type)": {
16
+ borderBottomLeftRadius: borderRadius,
17
+ borderBottomRightRadius: borderRadius
18
+ }
19
+ }),
20
+ attributeIcon: theme => ({
21
+ marginLeft: scopeTheme(theme).spacing(0.5)
22
+ })
23
+ });
24
+
25
+ export { styles };
@@ -6,6 +6,7 @@ import { useMemo } from 'react';
6
6
  import { useTranslation, Trans } from 'react-i18next';
7
7
  import { ServiceCardContainer, ServiceCardHeader, ServiceCardFooter } from '../../../service-card/service-card.js';
8
8
  import { styles } from './rate-card.styles.js';
9
+ import { RateAttributeItem } from './rate-attribute-item/rate-attribute-item.js';
9
10
  import { ServicePoints } from '../../../service-points/service-points.js';
10
11
 
11
12
  const getDeliveryDaysLabel = deliveryDays => {
@@ -85,6 +86,7 @@ const RateCard = ({
85
86
  onPaperlessAcknowledgementChange,
86
87
  onSelectServicePoint,
87
88
  otherAmount,
89
+ rateAttributes,
88
90
  rateId,
89
91
  requiresAcknowledgement,
90
92
  rateAcknowledgementMessage,
@@ -160,47 +162,56 @@ const RateCard = ({
160
162
  className: className,
161
163
  onClick: onRateCardClick,
162
164
  selected: selected,
163
- children: [isPreferredRate && jsx("section", {
164
- "aria-label": "Rate Savings",
165
- css: styles.rateSavingsSection,
166
- children: rateSavings ? jsx("div", {
167
- css: styles.rateSavings,
168
- children: t("purchase-label:rates.rateSavings", {
169
- amount: rateSavings
170
- })
171
- }) : selected ? jsx("div", {
172
- css: styles.rateSavings,
173
- children: jsx(Icon, {
174
- name: IconNames.CHECK_MARK,
175
- size: IconSize.SIZE_SMALL
176
- })
177
- }) : null
178
- }), jsx(ServiceCardHeader, {
179
- carrierCode: carrierCode,
180
- carrierFriendlyName: carrierFriendlyName,
181
- costBreakdownProps: costBreakdownCommonProps,
182
- rateDetailsProps: showRateDetails ? {
183
- rateDetails
184
- } : undefined,
185
- rightContentCss: Object.assign({}, (isPreferredRate && rateSavings || selected && isPreferredRate) && {
186
- paddingTop: "1rem"
187
- }),
188
- serviceInfo: {
189
- line1: carrierNickname,
190
- line2: getDeliveryDaysLabel(deliveryDays),
191
- line3: paperlessDisplaySchemes && paperlessDisplaySchemes.length > 0 ? jsxs("div", {
192
- "aria-label": t("purchase-label:paperlessAvailable"),
193
- css: styles.paperlessText,
194
- children: [jsx(Icon, {
195
- name: IconNames.SCAN_QR,
196
- size: IconSize.SIZE_MEDIUM
197
- }), jsx(Typography, {
198
- variant: "small",
199
- children: t("purchase-label:paperlessAvailable")
200
- })]
201
- }) : undefined,
202
- type: serviceType
203
- }
165
+ children: [!!(rateAttributes === null || rateAttributes === void 0 ? void 0 : rateAttributes.length) && jsx("ul", {
166
+ css: styles.attributeList,
167
+ children: rateAttributes.map((attr, index) => jsx(RateAttributeItem, {
168
+ attribute: attr,
169
+ tooltipId: `rate-attribute-tooltip-${rateId}-${index}`
170
+ }, attr))
171
+ }), jsxs("div", {
172
+ children: [isPreferredRate && jsx("section", {
173
+ "aria-label": "Rate Savings",
174
+ css: styles.rateSavingsSection,
175
+ children: rateSavings ? jsx("div", {
176
+ css: styles.rateSavings,
177
+ children: t("purchase-label:rates.rateSavings", {
178
+ amount: rateSavings
179
+ })
180
+ }) : selected ? jsx("div", {
181
+ css: styles.rateSavings,
182
+ children: jsx(Icon, {
183
+ name: IconNames.CHECK_MARK,
184
+ size: IconSize.SIZE_SMALL
185
+ })
186
+ }) : null
187
+ }), jsx(ServiceCardHeader, {
188
+ carrierCode: carrierCode,
189
+ carrierFriendlyName: carrierFriendlyName,
190
+ costBreakdownProps: costBreakdownCommonProps,
191
+ hasRateAttributes: !!(rateAttributes === null || rateAttributes === void 0 ? void 0 : rateAttributes.length),
192
+ rateDetailsProps: showRateDetails ? {
193
+ rateDetails
194
+ } : undefined,
195
+ rightContentCss: Object.assign({}, (isPreferredRate && rateSavings || selected && isPreferredRate) && {
196
+ paddingTop: "1rem"
197
+ }),
198
+ serviceInfo: {
199
+ line1: carrierNickname,
200
+ line2: getDeliveryDaysLabel(deliveryDays),
201
+ line3: paperlessDisplaySchemes && paperlessDisplaySchemes.length > 0 ? jsxs("div", {
202
+ "aria-label": t("purchase-label:paperlessAvailable"),
203
+ css: styles.paperlessText,
204
+ children: [jsx(Icon, {
205
+ name: IconNames.SCAN_QR,
206
+ size: IconSize.SIZE_MEDIUM
207
+ }), jsx(Typography, {
208
+ variant: "small",
209
+ children: t("purchase-label:paperlessAvailable")
210
+ })]
211
+ }) : undefined,
212
+ type: serviceType
213
+ }
214
+ })]
204
215
  }), servicePoints && jsxs(Fragment, {
205
216
  children: [jsx(Divider, {
206
217
  css: styles.divider
@@ -229,7 +240,7 @@ const RateCard = ({
229
240
  "data-testid": "paperless-acknowledgement",
230
241
  label: t("purchase-label:usePaperlessLabel"),
231
242
  onChange: e => {
232
- onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(e.target.checked, "qr_code");
243
+ onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(e.target.checked, e.target.checked ? "qr_code" : "label");
233
244
  }
234
245
  })]
235
246
  })]
@@ -6,6 +6,10 @@ const styles = createStyles({
6
6
  color: scopeTheme(theme).palette.gray.main,
7
7
  display: "flex"
8
8
  }),
9
+ attributeList: theme => ({
10
+ display: "flex",
11
+ gap: scopeTheme(theme).spacing(0.5)
12
+ }),
9
13
  divider: theme => ({
10
14
  borderColor: scopeTheme(theme).palette.primary.main,
11
15
  margin: "0 auto",
@@ -15,6 +15,37 @@ const optionWithEnabledData = option => {
15
15
  const optionWithEnabledData = __rest(option, ["carrierNickname"]);
16
16
  return optionWithEnabledData;
17
17
  };
18
+ /**
19
+ * Helper function to determine the priority of a rate attribute
20
+ * Priority order: best_value (0) > cheapest (1) > fastest (2) > none (3)
21
+ */
22
+ const getAttributePriority = rateAttributes => {
23
+ if (!rateAttributes) return 3;
24
+ if (rateAttributes.includes("best_value")) return 0;
25
+ if (rateAttributes.includes("cheapest")) return 1;
26
+ if (rateAttributes.includes("fastest")) return 2;
27
+ return 3;
28
+ };
29
+ /**
30
+ * Sorts rates by their attributes, placing rates with special attributes first
31
+ * Sort order: best_value > cheapest > fastest > remaining rates
32
+ */
33
+ const sortRatesByAttributes = rates => {
34
+ const ratesWithAttributes = rates.filter(rate => {
35
+ var _a;
36
+ return !!((_a = rate.rateAttributes) === null || _a === void 0 ? void 0 : _a.length);
37
+ });
38
+ const ratesWithoutAttributes = rates.filter(rate => {
39
+ var _a;
40
+ return !((_a = rate.rateAttributes) === null || _a === void 0 ? void 0 : _a.length);
41
+ });
42
+ ratesWithAttributes.sort((a, b) => {
43
+ const priorityA = getAttributePriority(a.rateAttributes);
44
+ const priorityB = getAttributePriority(b.rateAttributes);
45
+ return priorityA - priorityB;
46
+ });
47
+ return [...ratesWithAttributes, ...ratesWithoutAttributes];
48
+ };
18
49
  const RateSelect = _a => {
19
50
  var {
20
51
  nicknameFeature,
@@ -35,58 +66,58 @@ const RateSelect = _a => {
35
66
  options
36
67
  } = _a,
37
68
  field = __rest(_a, ["options"]);
69
+ // Sort rates by attributes: best_value > cheapest > fastest > remaining
70
+ const sortedOptions = options ? sortRatesByAttributes(options) : [];
38
71
  return jsx("div", {
39
72
  "aria-label": "Rate Selection",
40
73
  role: "radiogroup",
41
- children: options === null || options === void 0 ? void 0 : options.map(option => {
42
- return createElement(RateCard, Object.assign({
43
- mapViewEnabled: mapViewEnabled
44
- }, optionWithEnabledData(option), {
45
- carrierNickname: nicknameFeature ? option.carrierNickname || `ID: ${option.carrierId}` : undefined,
46
- css: styles.rateCardOptionStyles,
47
- isAcknowledged: field.value.isAcknowledged,
48
- isLoading: isLoading,
49
- isPreferredRate: preferredServiceCodes && preferredServiceCodes.includes(option.serviceCode),
50
- key: option.rateId,
51
- onClick: rateId => {
52
- var _a;
53
- onClick === null || onClick === void 0 ? void 0 : onClick(rateId);
54
- // if the rate supports "label_and_paperless" display scheme, use it by default
55
- if ((_a = option.paperlessDisplaySchemes) === null || _a === void 0 ? void 0 : _a.includes("label_and_paperless")) {
56
- field.onChange({
57
- usePaperlessLabel: true,
58
- labelDisplayScheme: "label_and_paperless",
59
- isAcknowledged: !option.requiresAcknowledgement,
60
- rateId
61
- });
62
- } else {
63
- field.onChange({
64
- isAcknowledged: !option.requiresAcknowledgement,
65
- rateId
66
- });
67
- }
68
- setSelectedRateCost(getTotalRateAmount(option));
69
- },
70
- onClickAcknowledgement: isAcknowledged => field.onChange(Object.assign(Object.assign({}, field.value), {
71
- isAcknowledged
72
- })),
73
- onPaperlessAcknowledgementChange: (usePaperless, labelDisplayScheme) => {
74
- field.onChange(Object.assign(Object.assign({}, field.value), {
75
- usePaperlessLabel: usePaperless,
76
- labelDisplayScheme
77
- }));
78
- onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(usePaperless, labelDisplayScheme);
79
- },
80
- onSelectServicePoint: onSelectServicePoint,
81
- paperlessDisplaySchemes: option.paperlessDisplaySchemes,
82
- paperlessLabelChecked: field.value.usePaperlessLabel,
83
- rateDetails: option.rateDetails,
84
- selected: option.rateId === field.value.rateId,
85
- selectedRateCost: selectedRateCost,
86
- servicePoints: option.servicePoints,
87
- showVatFeatures: showVatFeatures
88
- }));
89
- })
74
+ children: sortedOptions.map(option => createElement(RateCard, Object.assign({
75
+ mapViewEnabled: mapViewEnabled
76
+ }, optionWithEnabledData(option), {
77
+ carrierNickname: nicknameFeature ? option.carrierNickname || `ID: ${option.carrierId}` : undefined,
78
+ css: styles.rateCardOptionStyles,
79
+ isAcknowledged: field.value.isAcknowledged,
80
+ isLoading: isLoading,
81
+ isPreferredRate: preferredServiceCodes && preferredServiceCodes.includes(option.serviceCode),
82
+ key: option.rateId,
83
+ onClick: rateId => {
84
+ var _a;
85
+ onClick === null || onClick === void 0 ? void 0 : onClick(rateId);
86
+ // if the rate supports "label_and_paperless" display scheme, use it by default
87
+ if ((_a = option.paperlessDisplaySchemes) === null || _a === void 0 ? void 0 : _a.includes("label_and_paperless")) {
88
+ field.onChange({
89
+ usePaperlessLabel: true,
90
+ labelDisplayScheme: "label_and_paperless",
91
+ isAcknowledged: !option.requiresAcknowledgement,
92
+ rateId
93
+ });
94
+ } else {
95
+ field.onChange({
96
+ isAcknowledged: !option.requiresAcknowledgement,
97
+ rateId
98
+ });
99
+ }
100
+ setSelectedRateCost(getTotalRateAmount(option));
101
+ },
102
+ onClickAcknowledgement: isAcknowledged => field.onChange(Object.assign(Object.assign({}, field.value), {
103
+ isAcknowledged
104
+ })),
105
+ onPaperlessAcknowledgementChange: (usePaperless, labelDisplayScheme) => {
106
+ field.onChange(Object.assign(Object.assign({}, field.value), {
107
+ usePaperlessLabel: usePaperless,
108
+ labelDisplayScheme
109
+ }));
110
+ onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(usePaperless, labelDisplayScheme);
111
+ },
112
+ onSelectServicePoint: onSelectServicePoint,
113
+ paperlessDisplaySchemes: option.paperlessDisplaySchemes,
114
+ paperlessLabelChecked: field.value.usePaperlessLabel,
115
+ rateDetails: option.rateDetails,
116
+ selected: option.rateId === field.value.rateId,
117
+ selectedRateCost: selectedRateCost,
118
+ servicePoints: option.servicePoints,
119
+ showVatFeatures: showVatFeatures
120
+ })))
90
121
  });
91
122
  }
92
123
  }));
@@ -71,7 +71,7 @@ const RegisterFundingSourceInsuranceForm = ({
71
71
  children: [t(`sections.insuranceProviders.${insuranceProviderProfile === null || insuranceProviderProfile === void 0 ? void 0 : insuranceProviderProfile.provider}.terms`), jsxs(Link, {
72
72
  "aria-label": "Opens in a new tab",
73
73
  css: styles.termsLink,
74
- href: insuranceProviderProfile === null || insuranceProviderProfile === void 0 ? void 0 : insuranceProviderProfile.terms.links[0].link,
74
+ href: insuranceProviderProfile === null || insuranceProviderProfile === void 0 ? void 0 : insuranceProviderProfile.terms[0].links[0].link,
75
75
  isExternal: true,
76
76
  rel: "noreferrer",
77
77
  target: "_blank",
@@ -97,13 +97,22 @@ const WarehouseForm = ({
97
97
  form: form,
98
98
  formatFieldName: fieldName => `originAddress.${fieldName}`,
99
99
  optionalFields: ["addressLine2", ...(requireEmail ? [] : ["email"])]
100
- }), !shouldForceDefault && jsx(CheckboxInput, {
100
+ }), !shouldForceDefault ? jsx(CheckboxInput, {
101
101
  ariaLabel: "Is Default Warehouse",
102
102
  checkboxLabel: t("manage-warehouses:isDefault"),
103
103
  control: form.control,
104
104
  form: formId,
105
105
  label: "isDefault",
106
106
  name: "isDefault"
107
+ }) : jsx(CheckboxInput, {
108
+ ariaLabel: "Is Default Warehouse",
109
+ checkboxLabel: warehouse ? t("manage-warehouses:forcedDefault") : t("manage-warehouses:forcedDefaultNew"),
110
+ control: form.control,
111
+ defaultValue: true,
112
+ disabled: true,
113
+ form: formId,
114
+ label: "isDefault",
115
+ name: "isDefault"
107
116
  }), jsx(CheckboxInput, {
108
117
  ariaLabel: "Return To Address Is Different",
109
118
  checkboxLabel: t("manage-warehouses:returnToAddressIsDifferent"),
@@ -35,7 +35,8 @@ const ServiceCardHeader = ({
35
35
  rateDetailsProps,
36
36
  costBreakdownProps,
37
37
  rightContentCss,
38
- voided
38
+ voided,
39
+ hasRateAttributes
39
40
  }) => {
40
41
  const {
41
42
  type,
@@ -46,7 +47,7 @@ const ServiceCardHeader = ({
46
47
  return jsxs("div", {
47
48
  "data-testid": "service-card-header",
48
49
  children: [jsxs("section", {
49
- css: styles.section,
50
+ css: styles.getSectionStyles(hasRateAttributes),
50
51
  children: [carrierCode && jsx("div", {
51
52
  css: styles.carrierImage,
52
53
  children: jsx(CarrierIcon, {
@@ -45,12 +45,14 @@ const styles = createStyles({
45
45
  headerChildren: theme => ({
46
46
  padding: `${scopeTheme(theme).spacing(0)}px ${scopeTheme(theme).spacing(2)}px ${scopeTheme(theme).spacing(2)}px ${scopeTheme(theme).spacing(2)}px`
47
47
  }),
48
- section: theme => ({
48
+ getSectionStyles: hasRateAttributes => theme => Object.assign({
49
49
  alignItems: "flex-start",
50
50
  display: "flex",
51
51
  flexDirection: "row",
52
52
  flexWrap: "nowrap",
53
- padding: scopeTheme(theme).spacing(2)
53
+ padding: scopeTheme(theme).spacing(1.5)
54
+ }, hasRateAttributes && {
55
+ paddingTop: scopeTheme(theme).spacing(0.75)
54
56
  }),
55
57
  serviceInfo: theme => ({
56
58
  display: "flex",
@@ -2,13 +2,18 @@ var parcelguard_terms = {
2
2
  friendlyName: "ParcelGuard",
3
3
  provider: "parcelguard"
4
4
  };
5
- var x_cover_terms = {
5
+ var xcover_terms = {
6
6
  friendlyName: "XCover",
7
- provider: "x_cover"
7
+ provider: "xcover"
8
+ };
9
+ var xcover_information = {
10
+ friendlyName: "XCover",
11
+ provider: "xcover"
8
12
  };
9
13
  var _insuranceProviderMetadata = {
10
14
  parcelguard_terms: parcelguard_terms,
11
- x_cover_terms: x_cover_terms
15
+ xcover_terms: xcover_terms,
16
+ xcover_information: xcover_information
12
17
  };
13
18
 
14
- export { _insuranceProviderMetadata as default, parcelguard_terms, x_cover_terms };
19
+ export { _insuranceProviderMetadata as default, parcelguard_terms, xcover_information, xcover_terms };