@shipengine/elements 2.24.1 → 2.26.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 (300) hide show
  1. package/README.md +187 -6
  2. package/dist/cjs/components/display-term/display-term.cjs +13 -4
  3. package/dist/cjs/components/field/credit-card-input/credit-card-input.cjs +46 -29
  4. package/dist/cjs/components/field/rate-select/rate-card/rate-card.cjs +29 -5
  5. package/dist/cjs/components/field/rate-select/rate-card/rate-card.styles.cjs +8 -3
  6. package/dist/cjs/components/field/rate-select/rate-select.cjs +26 -5
  7. package/dist/cjs/components/forms/address-form/address-form-schema.cjs +3 -3
  8. package/dist/cjs/components/forms/edit-billing-form/edit-billing-form.cjs +57 -4
  9. package/dist/cjs/components/grid-controller/error-banner/error-banner.cjs +74 -0
  10. package/dist/cjs/components/{error-display/error-display.styles.cjs → grid-controller/error-banner/error-banner.styles.cjs} +8 -4
  11. package/dist/cjs/components/grid-controller/error-banner/index.cjs +7 -0
  12. package/dist/cjs/components/grid-controller/grid-controller.cjs +49 -3
  13. package/dist/cjs/components/grid-controller/grid-controller.styles.cjs +11 -1
  14. package/dist/cjs/components/history/history-card/history-card.cjs +1 -1
  15. package/dist/cjs/components/history/history-card-extension/history-card-extension.cjs +0 -1
  16. package/dist/cjs/components/service-card/service-card.cjs +4 -4
  17. package/dist/cjs/components/service-card/service-card.styles.cjs +5 -2
  18. package/dist/cjs/components/service-point-display/service-point-display.cjs +1 -36
  19. package/dist/cjs/components/service-point-display/service-point-display.styles.cjs +0 -12
  20. package/dist/cjs/components/shipment-not-found-error/index.cjs +7 -0
  21. package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.cjs +40 -0
  22. package/dist/cjs/components/shipment-not-found-error/shipment-not-found-error.styles.cjs +24 -0
  23. package/dist/cjs/components/suspend-purchase/suspend-purchase.cjs +11 -3
  24. package/dist/cjs/components/ups-terms-disclosure/index.cjs +7 -0
  25. package/dist/cjs/components/ups-terms-disclosure/ups-terms-disclosure.cjs +35 -0
  26. package/dist/cjs/elements/labels-grid/hooks/use-labels-grid.cjs +45 -5
  27. package/dist/cjs/elements/labels-grid/labels-grid.cjs +24 -6
  28. package/dist/cjs/elements/purchase-label/components/rate-form/rate-form.cjs +13 -3
  29. package/dist/cjs/elements/purchase-label/components/rate-form/rate-schema.cjs +7 -2
  30. package/dist/cjs/elements/purchase-label/components/rate-form/rate-view.cjs +2 -0
  31. package/dist/cjs/elements/purchase-label/hooks/use-rate-options.cjs +31 -2
  32. package/dist/cjs/elements/purchase-label/hooks/use-rates-form.cjs +14 -18
  33. package/dist/cjs/elements/purchase-label/hooks/use-request-rates.cjs +20 -20
  34. package/dist/cjs/elements/purchase-label/purchase-label.cjs +4 -1
  35. package/dist/cjs/elements/shipment-summary/components/label-display/label-card.cjs +16 -31
  36. package/dist/cjs/elements/shipment-summary/components/label-display/label-card.styles.cjs +0 -19
  37. package/dist/cjs/elements/shipment-summary/components/label-display/paperless-label-display.cjs +54 -0
  38. package/dist/cjs/elements/shipment-summary/components/label-display/paperless-label-display.styles.cjs +27 -0
  39. package/dist/cjs/elements/shipments-grid/hooks/use-shipments-grid.cjs +41 -3
  40. package/dist/cjs/elements/shipments-grid/shipments-grid.cjs +18 -3
  41. package/dist/cjs/features/manage-carriers/hooks/use-list-funding-source-carriers.cjs +9 -10
  42. package/dist/cjs/features/manage-carriers/manage-carriers-row/manage-carriers-row.cjs +6 -1
  43. package/dist/cjs/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.cjs +3 -3
  44. package/dist/cjs/features/payment-method-settings/payment-method-settings.cjs +56 -18
  45. package/dist/cjs/hooks/use-configure-shipment.cjs +32 -11
  46. package/dist/cjs/hooks/use-helpers.cjs +4 -1
  47. package/dist/cjs/index.cjs +15 -12
  48. package/dist/cjs/locales/en/account-settings.json.cjs +6 -0
  49. package/dist/cjs/locales/en/common.json.cjs +2 -0
  50. package/dist/cjs/locales/en/grid-controller.json.cjs +13 -0
  51. package/dist/cjs/locales/en/index.cjs +2 -1
  52. package/dist/cjs/locales/en/onboarding.json.cjs +5 -0
  53. package/dist/cjs/locales/en/purchase-label.json.cjs +5 -3
  54. package/dist/cjs/package.json.cjs +1 -1
  55. package/dist/cjs/utilities/address.cjs +29 -0
  56. package/dist/cjs/utilities/files.cjs +35 -0
  57. package/dist/cjs/utilities/formatString.cjs +9 -0
  58. package/dist/cjs/utilities/index.cjs +5 -0
  59. package/dist/cjs/utilities/money.cjs +14 -0
  60. package/dist/cjs/utilities/rate-warning-messages.cjs +25 -0
  61. package/dist/cjs/utilities/shipengine/warehouses.cjs +2 -1
  62. package/dist/cjs/workflows/connect-external-carrier/connect-external-carrier.cjs +7 -3
  63. package/dist/cjs/workflows/label-workflow/label-workflow.cjs +11 -3
  64. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/confirmation-and-submission-step.cjs +1 -1
  65. package/dist/cjs/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.cjs +17 -1
  66. package/dist/cjs/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.cjs +4 -1
  67. package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.cjs +18 -11
  68. package/dist/cjs/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.cjs +0 -3
  69. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.cjs +36 -12
  70. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.cjs +10 -4
  71. package/dist/cjs/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.cjs +12 -12
  72. package/dist/esm/components/display-term/display-term.js +14 -5
  73. package/dist/esm/components/field/credit-card-input/credit-card-input.js +47 -30
  74. package/dist/esm/components/field/rate-select/rate-card/rate-card.js +30 -6
  75. package/dist/esm/components/field/rate-select/rate-card/rate-card.styles.js +8 -3
  76. package/dist/esm/components/field/rate-select/rate-select.js +26 -5
  77. package/dist/esm/components/forms/address-form/address-form-schema.js +3 -3
  78. package/dist/esm/components/forms/edit-billing-form/edit-billing-form.js +58 -5
  79. package/dist/esm/components/grid-controller/error-banner/error-banner.js +72 -0
  80. package/dist/esm/components/{error-display/error-display.styles.js → grid-controller/error-banner/error-banner.styles.js} +8 -4
  81. package/dist/esm/components/grid-controller/error-banner/index.js +1 -0
  82. package/dist/esm/components/grid-controller/grid-controller.js +51 -5
  83. package/dist/esm/components/grid-controller/grid-controller.styles.js +11 -1
  84. package/dist/esm/components/history/history-card/history-card.js +1 -1
  85. package/dist/esm/components/history/history-card-extension/history-card-extension.js +0 -1
  86. package/dist/esm/components/service-card/service-card.js +4 -4
  87. package/dist/esm/components/service-card/service-card.styles.js +5 -2
  88. package/dist/esm/components/service-point-display/service-point-display.js +2 -37
  89. package/dist/esm/components/service-point-display/service-point-display.styles.js +0 -12
  90. package/dist/esm/components/shipment-not-found-error/index.js +1 -0
  91. package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.js +38 -0
  92. package/dist/esm/components/shipment-not-found-error/shipment-not-found-error.styles.js +22 -0
  93. package/dist/esm/components/suspend-purchase/suspend-purchase.js +11 -3
  94. package/dist/esm/components/ups-terms-disclosure/index.js +1 -0
  95. package/dist/esm/components/ups-terms-disclosure/ups-terms-disclosure.js +33 -0
  96. package/dist/esm/elements/labels-grid/hooks/use-labels-grid.js +46 -6
  97. package/dist/esm/elements/labels-grid/labels-grid.js +24 -6
  98. package/dist/esm/elements/purchase-label/components/rate-form/rate-form.js +14 -4
  99. package/dist/esm/elements/purchase-label/components/rate-form/rate-schema.js +7 -2
  100. package/dist/esm/elements/purchase-label/components/rate-form/rate-view.js +2 -0
  101. package/dist/esm/elements/purchase-label/hooks/use-rate-options.js +31 -2
  102. package/dist/esm/elements/purchase-label/hooks/use-rates-form.js +14 -18
  103. package/dist/esm/elements/purchase-label/hooks/use-request-rates.js +20 -20
  104. package/dist/esm/elements/purchase-label/purchase-label.js +4 -1
  105. package/dist/esm/elements/shipment-summary/components/label-display/label-card.js +18 -33
  106. package/dist/esm/elements/shipment-summary/components/label-display/label-card.styles.js +0 -19
  107. package/dist/esm/elements/shipment-summary/components/label-display/paperless-label-display.js +52 -0
  108. package/dist/esm/elements/shipment-summary/components/label-display/paperless-label-display.styles.js +25 -0
  109. package/dist/esm/elements/shipments-grid/hooks/use-shipments-grid.js +42 -4
  110. package/dist/esm/elements/shipments-grid/shipments-grid.js +18 -3
  111. package/dist/esm/features/manage-carriers/hooks/use-list-funding-source-carriers.js +9 -10
  112. package/dist/esm/features/manage-carriers/manage-carriers-row/manage-carriers-row.js +7 -2
  113. package/dist/esm/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.js +3 -3
  114. package/dist/esm/features/payment-method-settings/payment-method-settings.js +57 -19
  115. package/dist/esm/hooks/use-configure-shipment.js +33 -12
  116. package/dist/esm/hooks/use-helpers.js +4 -1
  117. package/dist/esm/index.js +1 -0
  118. package/dist/esm/locales/en/account-settings.json.js +6 -0
  119. package/dist/esm/locales/en/common.json.js +2 -0
  120. package/dist/esm/locales/en/grid-controller.json.js +11 -0
  121. package/dist/esm/locales/en/index.js +2 -1
  122. package/dist/esm/locales/en/onboarding.json.js +5 -0
  123. package/dist/esm/locales/en/purchase-label.json.js +5 -3
  124. package/dist/esm/package.json.js +1 -1
  125. package/dist/esm/utilities/address.js +26 -0
  126. package/dist/esm/utilities/files.js +32 -0
  127. package/dist/esm/utilities/formatString.js +9 -1
  128. package/dist/esm/utilities/index.js +2 -0
  129. package/dist/esm/utilities/money.js +14 -1
  130. package/dist/esm/utilities/rate-warning-messages.js +23 -0
  131. package/dist/esm/utilities/shipengine/warehouses.js +2 -1
  132. package/dist/esm/workflows/connect-external-carrier/connect-external-carrier.js +7 -3
  133. package/dist/esm/workflows/label-workflow/label-workflow.js +11 -3
  134. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/confirmation-and-submission-step.js +1 -1
  135. package/dist/esm/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.js +17 -1
  136. package/dist/esm/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.js +4 -1
  137. package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.js +18 -11
  138. package/dist/esm/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.js +0 -3
  139. package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.js +37 -13
  140. package/dist/esm/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.js +10 -4
  141. package/dist/esm/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.js +12 -12
  142. package/dist/types/components/display-term/display-term.d.ts +3 -3
  143. package/dist/types/components/display-term/display-term.d.ts.map +1 -1
  144. package/dist/types/components/field/credit-card-input/credit-card-input.d.ts.map +1 -1
  145. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts +4 -2
  146. package/dist/types/components/field/rate-select/rate-card/rate-card.d.ts.map +1 -1
  147. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts +7 -2
  148. package/dist/types/components/field/rate-select/rate-card/rate-card.styles.d.ts.map +1 -1
  149. package/dist/types/components/field/rate-select/rate-select.d.ts +1 -0
  150. package/dist/types/components/field/rate-select/rate-select.d.ts.map +1 -1
  151. package/dist/types/components/forms/address-form/address-form-schema.d.ts.map +1 -1
  152. package/dist/types/components/forms/edit-billing-form/edit-billing-form.d.ts +2 -1
  153. package/dist/types/components/forms/edit-billing-form/edit-billing-form.d.ts.map +1 -1
  154. package/dist/types/components/grid-controller/error-banner/error-banner.d.ts +10 -0
  155. package/dist/types/components/grid-controller/error-banner/error-banner.d.ts.map +1 -0
  156. package/dist/types/components/grid-controller/error-banner/error-banner.styles.d.ts +24 -0
  157. package/dist/types/components/grid-controller/error-banner/error-banner.styles.d.ts.map +1 -0
  158. package/dist/types/components/grid-controller/error-banner/index.d.ts +2 -0
  159. package/dist/types/components/grid-controller/error-banner/index.d.ts.map +1 -0
  160. package/dist/types/components/grid-controller/grid-controller.d.ts +8 -1
  161. package/dist/types/components/grid-controller/grid-controller.d.ts.map +1 -1
  162. package/dist/types/components/grid-controller/grid-controller.styles.d.ts +10 -0
  163. package/dist/types/components/grid-controller/grid-controller.styles.d.ts.map +1 -1
  164. package/dist/types/components/history/history-card-extension/history-card-extension.d.ts.map +1 -1
  165. package/dist/types/components/service-card/service-card.d.ts +1 -1
  166. package/dist/types/components/service-card/service-card.d.ts.map +1 -1
  167. package/dist/types/components/service-card/service-card.styles.d.ts +4 -1
  168. package/dist/types/components/service-card/service-card.styles.d.ts.map +1 -1
  169. package/dist/types/components/service-point-display/service-point-display.d.ts.map +1 -1
  170. package/dist/types/components/service-point-display/service-point-display.styles.d.ts +0 -12
  171. package/dist/types/components/service-point-display/service-point-display.styles.d.ts.map +1 -1
  172. package/dist/types/components/shipment-not-found-error/index.d.ts +2 -0
  173. package/dist/types/components/shipment-not-found-error/index.d.ts.map +1 -0
  174. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts +6 -0
  175. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.d.ts.map +1 -0
  176. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.styles.d.ts +19 -0
  177. package/dist/types/components/shipment-not-found-error/shipment-not-found-error.styles.d.ts.map +1 -0
  178. package/dist/types/components/suspend-purchase/suspend-purchase.d.ts +4 -2
  179. package/dist/types/components/suspend-purchase/suspend-purchase.d.ts.map +1 -1
  180. package/dist/types/components/ups-terms-disclosure/index.d.ts +2 -0
  181. package/dist/types/components/ups-terms-disclosure/index.d.ts.map +1 -0
  182. package/dist/types/components/ups-terms-disclosure/ups-terms-disclosure.d.ts +2 -0
  183. package/dist/types/components/ups-terms-disclosure/ups-terms-disclosure.d.ts.map +1 -0
  184. package/dist/types/elements/labels-grid/hooks/use-labels-grid.d.ts +7 -2
  185. package/dist/types/elements/labels-grid/hooks/use-labels-grid.d.ts.map +1 -1
  186. package/dist/types/elements/labels-grid/labels-grid.d.ts +29 -3
  187. package/dist/types/elements/labels-grid/labels-grid.d.ts.map +1 -1
  188. package/dist/types/elements/manage-carriers/manage-carriers.d.ts +23 -1
  189. package/dist/types/elements/manage-carriers/manage-carriers.d.ts.map +1 -1
  190. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts +23 -1
  191. package/dist/types/elements/manage-external-carriers/manage-external-carriers.d.ts.map +1 -1
  192. package/dist/types/elements/manage-funding/manage-funding-element.d.ts +23 -1
  193. package/dist/types/elements/manage-funding/manage-funding-element.d.ts.map +1 -1
  194. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts +23 -1
  195. package/dist/types/elements/manage-warehouses/manage-warehouses.d.ts.map +1 -1
  196. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts +23 -1
  197. package/dist/types/elements/payment-method-settings/payment-method-settings-element.d.ts.map +1 -1
  198. package/dist/types/elements/purchase-label/components/rate-form/rate-form.d.ts +1 -1
  199. package/dist/types/elements/purchase-label/components/rate-form/rate-form.d.ts.map +1 -1
  200. package/dist/types/elements/purchase-label/components/rate-form/rate-schema.d.ts +10 -1
  201. package/dist/types/elements/purchase-label/components/rate-form/rate-schema.d.ts.map +1 -1
  202. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts +2 -1
  203. package/dist/types/elements/purchase-label/components/rate-form/rate-view.d.ts.map +1 -1
  204. package/dist/types/elements/purchase-label/hooks/use-rate-options.d.ts.map +1 -1
  205. package/dist/types/elements/purchase-label/hooks/use-rates-form.d.ts +2 -2
  206. package/dist/types/elements/purchase-label/hooks/use-rates-form.d.ts.map +1 -1
  207. package/dist/types/elements/purchase-label/hooks/use-request-rates.d.ts.map +1 -1
  208. package/dist/types/elements/purchase-label/purchase-label.d.ts +23 -1
  209. package/dist/types/elements/purchase-label/purchase-label.d.ts.map +1 -1
  210. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts +23 -1
  211. package/dist/types/elements/select-label-layout/select-label-layout-element.d.ts.map +1 -1
  212. package/dist/types/elements/shipment-summary/components/label-display/label-card.d.ts.map +1 -1
  213. package/dist/types/elements/shipment-summary/components/label-display/label-card.styles.d.ts +0 -19
  214. package/dist/types/elements/shipment-summary/components/label-display/label-card.styles.d.ts.map +1 -1
  215. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.d.ts +8 -0
  216. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.d.ts.map +1 -0
  217. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.styles.d.ts +22 -0
  218. package/dist/types/elements/shipment-summary/components/label-display/paperless-label-display.styles.d.ts.map +1 -0
  219. package/dist/types/elements/shipment-summary/shipment-summary.d.ts +23 -1
  220. package/dist/types/elements/shipment-summary/shipment-summary.d.ts.map +1 -1
  221. package/dist/types/elements/shipments-grid/hooks/use-shipments-grid.d.ts +6 -1
  222. package/dist/types/elements/shipments-grid/hooks/use-shipments-grid.d.ts.map +1 -1
  223. package/dist/types/elements/shipments-grid/shipments-grid.d.ts +32 -2
  224. package/dist/types/elements/shipments-grid/shipments-grid.d.ts.map +1 -1
  225. package/dist/types/elements/theme-creator/theme-creator.d.ts +23 -1
  226. package/dist/types/elements/theme-creator/theme-creator.d.ts.map +1 -1
  227. package/dist/types/elements/transaction-history/transaction-history-element.d.ts +23 -1
  228. package/dist/types/elements/transaction-history/transaction-history-element.d.ts.map +1 -1
  229. package/dist/types/elements/unit-settings/unit-settings-element.d.ts +23 -1
  230. package/dist/types/elements/unit-settings/unit-settings-element.d.ts.map +1 -1
  231. package/dist/types/elements/vat-settings/vat-settings-element.d.ts +23 -1
  232. package/dist/types/elements/vat-settings/vat-settings-element.d.ts.map +1 -1
  233. package/dist/types/elements/void-label/void-label.d.ts +23 -1
  234. package/dist/types/elements/void-label/void-label.d.ts.map +1 -1
  235. package/dist/types/features/manage-carriers/hooks/use-list-funding-source-carriers.d.ts.map +1 -1
  236. package/dist/types/features/manage-carriers/manage-carriers-row/manage-carriers-row.d.ts.map +1 -1
  237. package/dist/types/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.d.ts +3 -2
  238. package/dist/types/features/manage-carriers/register-funding-source-carrier-form/register-funding-source-carrier-form.d.ts.map +1 -1
  239. package/dist/types/features/payment-method-settings/payment-method-settings.d.ts.map +1 -1
  240. package/dist/types/hooks/use-configure-shipment.d.ts +1 -0
  241. package/dist/types/hooks/use-configure-shipment.d.ts.map +1 -1
  242. package/dist/types/hooks/use-helpers.d.ts +2 -0
  243. package/dist/types/hooks/use-helpers.d.ts.map +1 -1
  244. package/dist/types/index.d.ts +1 -1
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/locales/en/index.d.ts +23 -1
  247. package/dist/types/locales/en/index.d.ts.map +1 -1
  248. package/dist/types/types/index.d.ts +5 -4
  249. package/dist/types/types/index.d.ts.map +1 -1
  250. package/dist/types/types/rates.d.ts +1 -0
  251. package/dist/types/types/rates.d.ts.map +1 -1
  252. package/dist/types/types/terms-with-disclosure.d.ts +7 -0
  253. package/dist/types/types/terms-with-disclosure.d.ts.map +1 -0
  254. package/dist/types/utilities/address.d.ts +21 -0
  255. package/dist/types/utilities/address.d.ts.map +1 -0
  256. package/dist/types/utilities/feature-flags/types.d.ts +5 -1
  257. package/dist/types/utilities/feature-flags/types.d.ts.map +1 -1
  258. package/dist/types/utilities/files.d.ts +12 -0
  259. package/dist/types/utilities/files.d.ts.map +1 -0
  260. package/dist/types/utilities/formatString.d.ts +8 -0
  261. package/dist/types/utilities/formatString.d.ts.map +1 -1
  262. package/dist/types/utilities/index.d.ts +2 -0
  263. package/dist/types/utilities/index.d.ts.map +1 -1
  264. package/dist/types/utilities/money.d.ts +6 -0
  265. package/dist/types/utilities/money.d.ts.map +1 -1
  266. package/dist/types/utilities/rate-warning-messages.d.ts +15 -0
  267. package/dist/types/utilities/rate-warning-messages.d.ts.map +1 -0
  268. package/dist/types/workflows/account-settings/account-settings.d.ts +23 -1
  269. package/dist/types/workflows/account-settings/account-settings.d.ts.map +1 -1
  270. package/dist/types/workflows/carrier-services/carrier-services.d.ts +23 -1
  271. package/dist/types/workflows/carrier-services/carrier-services.d.ts.map +1 -1
  272. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts +23 -1
  273. package/dist/types/workflows/connect-external-carrier/connect-external-carrier.d.ts.map +1 -1
  274. package/dist/types/workflows/label-workflow/label-workflow.d.ts +23 -1
  275. package/dist/types/workflows/label-workflow/label-workflow.d.ts.map +1 -1
  276. package/dist/types/workflows/onboarding/components/confirmation-and-submission-step/use-confirmation-and-submission-step.d.ts.map +1 -1
  277. package/dist/types/workflows/onboarding/components/onboarding-wizard/onboarding-wizard.d.ts.map +1 -1
  278. package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts +4 -2
  279. package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.d.ts.map +1 -1
  280. package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.d.ts +0 -3
  281. package/dist/types/workflows/onboarding/components/terms-agreement-form/terms-agreement-form.styles.d.ts.map +1 -1
  282. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts +3 -1
  283. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.d.ts.map +1 -1
  284. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.d.ts +8 -2
  285. package/dist/types/workflows/onboarding/components/terms-agreement-step/terms-agreement-step.styles.d.ts.map +1 -1
  286. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts +1 -0
  287. package/dist/types/workflows/onboarding/components/terms-agreement-step/use-terms-agreement-step.d.ts.map +1 -1
  288. package/dist/types/workflows/onboarding/onboarding.d.ts +23 -1
  289. package/dist/types/workflows/onboarding/onboarding.d.ts.map +1 -1
  290. package/package.json +3 -3
  291. package/dist/cjs/components/error-display/error-display.cjs +0 -34
  292. package/dist/cjs/components/error-display/index.cjs +0 -7
  293. package/dist/esm/components/error-display/error-display.js +0 -32
  294. package/dist/esm/components/error-display/index.js +0 -1
  295. package/dist/types/components/error-display/error-display.d.ts +0 -7
  296. package/dist/types/components/error-display/error-display.d.ts.map +0 -1
  297. package/dist/types/components/error-display/error-display.styles.d.ts +0 -20
  298. package/dist/types/components/error-display/error-display.styles.d.ts.map +0 -1
  299. package/dist/types/components/error-display/index.d.ts +0 -2
  300. package/dist/types/components/error-display/index.d.ts.map +0 -1
@@ -46,6 +46,7 @@ const Component = _a => {
46
46
  data: accountSettings
47
47
  } = reactApi.useGetAccountSettings();
48
48
  const {
49
+ createNewShipmentForNotFound,
49
50
  shipment: shipment$1,
50
51
  salesOrder,
51
52
  isLoading: isConfiguringShipment,
@@ -59,19 +60,24 @@ const Component = _a => {
59
60
  useWarehouses: (_b = propFeatures === null || propFeatures === void 0 ? void 0 : propFeatures.shipmentForm) === null || _b === void 0 ? void 0 : _b.useWarehouses,
60
61
  warehouseId
61
62
  }));
63
+ // Track if we have a shipment_not_found error to avoid reusing the bad shipment ID
64
+ const hasShipmentNotFoundError = configureShipmentErrors === null || configureShipmentErrors === void 0 ? void 0 : configureShipmentErrors.some(error => error.message === "shipment_not_found");
65
+ const shipmentId = _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : undefined;
62
66
  const {
63
67
  data: insuranceAccount,
64
68
  isInitialLoading: insuranceIsLoading
65
69
  } = reactApi.useGetInsuranceAccount((shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.insuranceProvider) === reactApi.SE.InsuranceProviderType.SHIPSURANCE ? reactApi.SE.InsuranceProviderType.SHIPSURANCE : undefined);
66
70
  const {
67
71
  data: labelsResponse,
68
- isLoading: isLabelsLoading,
72
+ isFetching: isLabelsLoading,
69
73
  error: listLabelsErrors,
70
74
  refetch: refetchLabels
71
75
  } = reactApi.useListLabels({
72
- enabled: _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId),
76
+ enabled:
77
+ // Don't enable if we have a shipment_not_found error (avoid reusing bad ID)
78
+ hasShipmentNotFoundError ? false : _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId),
73
79
  queryFnParams: {
74
- shipmentId: _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId
80
+ shipmentId: (shipment$1 === null || shipment$1 === void 0 ? void 0 : shipment$1.shipmentId) || (!hasShipmentNotFoundError ? shipmentId : undefined)
75
81
  }
76
82
  });
77
83
  /**
@@ -175,6 +181,8 @@ const Component = _a => {
175
181
  data: shipment$1 || salesOrder,
176
182
  errors: errors.length ? errors : undefined,
177
183
  isLoading: isLabelsLoading || isConfiguringShipment || insuranceIsLoading,
184
+ onCreateNewShipment: createNewShipmentForNotFound,
185
+ shipmentId: shipmentId,
178
186
  children: element && getElement(element)
179
187
  });
180
188
  };
@@ -73,7 +73,7 @@ const ConfirmationAndSubmissionStep = ({
73
73
  }),
74
74
  children: [jsxRuntime.jsx(ccProviderLogo.CcProviderLogo, {
75
75
  provider: provider,
76
- width: 36
76
+ width: 56
77
77
  }), jsxRuntime.jsx(giger.Typography, {
78
78
  variant: "body2",
79
79
  children: `**** **** **** ${last4 !== null && last4 !== void 0 ? last4 : "****"}`
@@ -1,10 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var _tslib = require('../../../../_virtual/_tslib.cjs');
4
+ var useScrubErrors = require('../../../../hooks/use-scrub-errors.cjs');
4
5
  var reactApi = require('@shipengine/react-api');
5
6
  var checks = require('../../../../utilities/checks.cjs');
6
7
  var warehouses = require('../../../../utilities/shipengine/warehouses.cjs');
7
8
  var React = require('react');
9
+ var reactI18next = require('react-i18next');
8
10
  var useManageWarehouses = require('../../../../features/manage-warehouses/use-manage-warehouses.cjs');
9
11
  var elementsContextProvider = require('../../../../elements-provider/elements-context-provider.cjs');
10
12
 
@@ -15,6 +17,9 @@ const useConfirmationAndSubmissionStep = ({
15
17
  globalFeatures,
16
18
  getToken
17
19
  } = elementsContextProvider.useElements();
20
+ const {
21
+ t
22
+ } = reactI18next.useTranslation();
18
23
  const [isSubmittingOnboarding, setIsSubmittingOnboarding] = React.useState(false);
19
24
  const {
20
25
  createWarehouse,
@@ -35,6 +40,15 @@ const useConfirmationAndSubmissionStep = ({
35
40
  mutateAsync: createFundingSource,
36
41
  reset: resetCreateFundingSource
37
42
  } = reactApi.useCreateFundingSource();
43
+ const displayableCreateFundingSourceErrors = useScrubErrors.useScrubErrors({
44
+ errors: createFundingSourceErrors !== null && createFundingSourceErrors !== void 0 ? createFundingSourceErrors : undefined,
45
+ predicate: React.useCallback(e => e.message.includes("An unexpected error occurred."), []),
46
+ scrubber: React.useCallback(() => {
47
+ return `${t("common:errorMessages.fundingSourceCreationFailed", {
48
+ email: globalFeatures.supportEmailAddress
49
+ })} `;
50
+ }, [globalFeatures.supportEmailAddress, t])
51
+ });
38
52
  const {
39
53
  error: updatePaymentMethodErrors,
40
54
  isLoading: isUpdatingPaymentMethod,
@@ -296,7 +310,9 @@ const useConfirmationAndSubmissionStep = ({
296
310
  setIsSubmittingOnboarding(false);
297
311
  }), [onboardSeller, updateExistingFundingSource, onStepComplete, createFundingSourceErrors, registerCarrierErrors, updatePaymentMethodErrors, updateWarehouseErrors]);
298
312
  return {
299
- createFundingSourceErrors,
313
+ createFundingSourceErrors: displayableCreateFundingSourceErrors === null || displayableCreateFundingSourceErrors === void 0 ? void 0 : displayableCreateFundingSourceErrors.map(message => ({
314
+ message
315
+ })),
300
316
  createOnboardingSubmissionHandler,
301
317
  isLoading: {
302
318
  connectingCarriers: isRegisteringCarriers,
@@ -61,6 +61,7 @@ const OnboardingWizard = ({
61
61
  isLoadingTermsAgreementStep,
62
62
  fundingSourceRequiredTerms,
63
63
  fundingSourceMetadata,
64
+ hasFreeStampsConnected,
64
65
  handleSubmitTermsAgreement,
65
66
  refetchCarriers,
66
67
  refetchFundingSources,
@@ -167,8 +168,10 @@ const OnboardingWizard = ({
167
168
  return jsxRuntime.jsx(termsAgreementStep.TermsAgreementStep, {
168
169
  carrierProfilesToRegister: carrierProfilesToRegister,
169
170
  enabledCarrierProfiles: enabledCarrierProfiles,
171
+ fundingSourceRequiredTerms: fundingSourceRequiredTerms,
170
172
  insuranceProviderProfiles: insuranceProviderProfiles,
171
- onSubmit: handleSubmitTermsAgreement
173
+ onSubmit: handleSubmitTermsAgreement,
174
+ showStampsLogo: hasFreeStampsConnected
172
175
  });
173
176
  },
174
177
  label: t("onboarding:stepLabel.termsAgreement")
@@ -20,6 +20,7 @@ var submitButton = require('../../../../components/field/submit-button/submit-bu
20
20
  const TermsAgreementForm = ({
21
21
  carrierTerms,
22
22
  hideTerms,
23
+ requiredTerms = [],
23
24
  insuranceProviderTerms,
24
25
  isSubmitDisabled,
25
26
  onSubmit
@@ -87,32 +88,38 @@ const TermsAgreementForm = ({
87
88
  variant: "body1",
88
89
  children: t("terms.shipEngineTitle")
89
90
  }), jsxRuntime.jsx(displayTerm.DisplayTerm, {
90
- term: {
91
+ terms: {
91
92
  links: [{
92
93
  link: "https://www.shipengine.com/terms-of-service/",
93
- locale: "en-US",
94
- title: t("onboarding:termsAndAgreementLinkText.shipEngineToS")
94
+ title: "ShipEngine Terms of Service",
95
+ locale: "en-US"
95
96
  }, {
96
- link: "https://auctane.com/legal/privacy-policy/",
97
- locale: "en-US",
98
- title: t("onboarding:termsAndAgreementLinkText.auctanePrivacyPolicy")
97
+ link: "https://www.auctane.com/terms-of-service/",
98
+ title: "Auctane Terms of Service",
99
+ locale: "en-US"
100
+ }, {
101
+ link: "https://www.stamps.com/wallet-terms-of-service/",
102
+ title: "Stamps Wallet Terms of Service",
103
+ locale: "en-US"
99
104
  }]
100
105
  }
101
- }), !!carrierTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
106
+ }), requiredTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
107
+ terms: term
108
+ }, term.termType)), !!carrierTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
102
109
  children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
103
110
  bold: true,
104
111
  variant: "body1",
105
112
  children: t("terms.carriersTitle")
106
- }), carrierTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
107
- term: term
108
- }, term.termType))]
113
+ }), carrierTerms.map((term, idx) => jsxRuntime.jsx(displayTerm.DisplayTerm, {
114
+ terms: term
115
+ }, idx))]
109
116
  }), enableParcelGuard && !!insuranceProviderTerms.length && jsxRuntime.jsxs(jsxRuntime.Fragment, {
110
117
  children: [jsxRuntime.jsx(spacer.Spacer, {}), jsxRuntime.jsx(giger.Typography, {
111
118
  bold: true,
112
119
  variant: "body1",
113
120
  children: t("terms.insuranceProvidersTitle")
114
121
  }), insuranceProviderTerms.map(term => jsxRuntime.jsx(displayTerm.DisplayTerm, {
115
- term: term
122
+ terms: term
116
123
  }, term.termType))]
117
124
  })]
118
125
  }), jsxRuntime.jsx(buttonGroup.ButtonGroup, {
@@ -15,9 +15,6 @@ const styles = styles$1.createStyles({
15
15
  display: "inline-flex",
16
16
  fontWeight: styles$1.scopeTheme(theme).typography.fontWeight.normal
17
17
  }),
18
- fullWidth: {
19
- width: "100%"
20
- },
21
18
  termsWell: theme => ({
22
19
  backgroundColor: styles$1.scopeTheme(theme).palette.gray.ultraLight,
23
20
  marginBottom: styles$1.scopeTheme(theme).spacing(6),
@@ -8,15 +8,19 @@ var termsAgreementStep_styles = require('./terms-agreement-step.styles.cjs');
8
8
  var termsAgreementForm = require('../terms-agreement-form/terms-agreement-form.cjs');
9
9
  var useCarrierMetadata = require('../../../../features/manage-carriers/hooks/use-carrier-metadata.cjs');
10
10
  var elementsContextProvider = require('../../../../elements-provider/elements-context-provider.cjs');
11
+ var upsTermsDisclosure = require('../../../../components/ups-terms-disclosure/ups-terms-disclosure.cjs');
11
12
  var spacer = require('../../../../components/spacer/spacer.cjs');
12
13
  var stepHeader = require('../step-header/step-header.cjs');
14
+ var carrierIcon = require('../../../../components/carrier-icon/carrier-icon.cjs');
13
15
  var carrierLogo = require('../../../../components/carrier-logo/carrier-logo.cjs');
14
16
 
15
17
  const TermsAgreementStep = ({
16
18
  carrierProfilesToRegister,
17
19
  insuranceProviderProfiles,
18
20
  onSubmit,
19
- enabledCarrierProfiles
21
+ enabledCarrierProfiles,
22
+ fundingSourceRequiredTerms,
23
+ showStampsLogo = false
20
24
  }) => {
21
25
  var _a, _b, _c, _d, _e;
22
26
  const {
@@ -29,11 +33,17 @@ const TermsAgreementStep = ({
29
33
  } = elementsContextProvider.useElements();
30
34
  const carrierFriendlyNames = useCarrierMetadata.useCarrierMetadata();
31
35
  const hideTerms = carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
32
- const carrierTerms = carrierProfilesToRegister.flatMap(c => c.requiredTerms);
36
+ const carrierTerms = carrierProfilesToRegister.map(c => {
37
+ const disclosure = c.carrierCode === "ups_walleted" ? jsxRuntime.jsx(upsTermsDisclosure.UPSTermsDisclosure, {}) : undefined;
38
+ return {
39
+ links: c.requiredTerms.flatMap(term => term.links),
40
+ disclosure
41
+ };
42
+ });
33
43
  const insuranceProviderTerms = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.flatMap(p => p.terms)) !== null && _a !== void 0 ? _a : [];
34
44
  const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _b !== void 0 ? _b : 0) > 0;
35
45
  const hasInsuranceToRegister = showParcelGuard && ((_c = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _c !== void 0 ? _c : 0) > 0;
36
- const hasEnabledCarriersConfigurationError = !enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0;
46
+ const hasEnabledCarriersConfigurationError = !showStampsLogo && (!enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0);
37
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;
38
48
  const hasCarriersToRegister = ((_e = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _e !== void 0 ? _e : 0) > 0 && carrierProfilesToRegister.length > 0;
39
49
  // Handle case where partner has not correctly enabled carriers and there is no insurance to register
@@ -48,20 +58,33 @@ const TermsAgreementStep = ({
48
58
  children: t("errors.noCarriers.subtitle")
49
59
  });
50
60
  }
51
- const renderCarrierLogos = () => {
52
- if (!carrierProfilesToRegister.length) return null;
53
- return carrierProfilesToRegister.map(p => {
61
+ const renderCarrierIcons = () => {
62
+ var _a;
63
+ const stampsCarrierProfile = {
64
+ carrierCode: "stamps_com",
65
+ carrierName: (_a = carrierFriendlyNames["stamps_com"]) === null || _a === void 0 ? void 0 : _a.name
66
+ };
67
+ let carriersToDisplay;
68
+ // kind of a goofy way to just display stamps/usps logo without sending it in the payload to register
69
+ // we don't want to register stamps as a carrier if it's not being used as the primary payment method
70
+ if (showStampsLogo) {
71
+ carriersToDisplay = [stampsCarrierProfile, ...carrierProfilesToRegister];
72
+ } else {
73
+ carriersToDisplay = carrierProfilesToRegister;
74
+ }
75
+ return carriersToDisplay.map(p => {
54
76
  var _a;
55
- return jsxRuntime.jsx(carrierLogo.CarrierLogo, {
77
+ return jsxRuntime.jsx(carrierIcon.CarrierIcon, {
56
78
  carrierCode: p.carrierCode,
57
79
  carrierName: ((_a = carrierFriendlyNames[p.carrierCode]) === null || _a === void 0 ? void 0 : _a.name) || p.carrierCode,
58
- size: "lg"
80
+ size: giger.IconSize.SIZE_EXTRA_LARGE
59
81
  }, p.carrierCode);
60
82
  });
61
83
  };
62
84
  const renderInsuranceLogos = () => {
63
85
  if (!hasInsuranceToRegister) return null;
64
- return jsxRuntime.jsxs(jsxRuntime.Fragment, {
86
+ return jsxRuntime.jsxs("div", {
87
+ css: termsAgreementStep_styles.styles.insuranceLogosContainer,
65
88
  children: [hasCarriersToRegister && jsxRuntime.jsx(giger.Icon, {
66
89
  css: termsAgreementStep_styles.styles.plus,
67
90
  name: gigerTheme.IconNames.PLUS,
@@ -87,13 +110,13 @@ const TermsAgreementStep = ({
87
110
  }), jsxRuntime.jsx(spacer.Spacer, {
88
111
  multiplier: 4
89
112
  })]
90
- }), (hasCarriersToRegister || hasInsuranceToRegister) && jsxRuntime.jsxs(jsxRuntime.Fragment, {
113
+ }), (hasCarriersToRegister || hasInsuranceToRegister || showStampsLogo) && jsxRuntime.jsxs(jsxRuntime.Fragment, {
91
114
  children: [jsxRuntime.jsx(stepHeader.StepHeader, {
92
115
  subtitle: t("termsAgreement.subtitle"),
93
116
  title: t("termsAgreement.title")
94
117
  }), jsxRuntime.jsxs("div", {
95
118
  css: termsAgreementStep_styles.styles.carrierLogos,
96
- children: [renderCarrierLogos(), renderInsuranceLogos()]
119
+ children: [renderCarrierIcons(), renderInsuranceLogos()]
97
120
  })]
98
121
  }), jsxRuntime.jsx("div", {
99
122
  css: termsAgreementStep_styles.styles.fullWidth,
@@ -101,7 +124,8 @@ const TermsAgreementStep = ({
101
124
  carrierTerms: carrierTerms,
102
125
  hideTerms: hideTerms,
103
126
  insuranceProviderTerms: insuranceProviderTerms,
104
- onSubmit: onSubmit
127
+ onSubmit: onSubmit,
128
+ requiredTerms: fundingSourceRequiredTerms
105
129
  })
106
130
  })]
107
131
  });
@@ -9,7 +9,8 @@ const styles = styles$1.createStyles({
9
9
  flexWrap: "wrap",
10
10
  gap: styles$1.scopeTheme(theme).spacing(1),
11
11
  justifyContent: "center",
12
- padding: `${styles$1.scopeTheme(theme).spacing(3)}px 0`
12
+ alignItems: "center",
13
+ padding: `${styles$1.scopeTheme(theme).spacing(2)}px 0`
13
14
  }),
14
15
  container: theme => ({
15
16
  alignItems: "center",
@@ -22,9 +23,14 @@ const styles = styles$1.createStyles({
22
23
  fullWidth: {
23
24
  width: "100%"
24
25
  },
25
- plus: () => ({
26
- alignItems: "center",
27
- display: "flex"
26
+ plus: theme => ({
27
+ alignSelf: "center",
28
+ paddingBottom: styles$1.scopeTheme(theme).spacing(1)
29
+ }),
30
+ insuranceLogosContainer: theme => ({
31
+ display: "flex",
32
+ gap: styles$1.scopeTheme(theme).spacing(1),
33
+ paddingTop: styles$1.scopeTheme(theme).spacing(1)
28
34
  })
29
35
  });
30
36
 
@@ -34,26 +34,25 @@ const useTermsAgreementStep = ({
34
34
  const fundingSourceRegion = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultRegionProfile.countryCode;
35
35
  const fundingSourceCarrierProfiles = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultRegionProfile.carrierProfiles;
36
36
  const carrierProfilesFilteredByRegion = carrier.filterFundingSourceCarriers(fundingSourceCarrierProfiles, fundingSourceRegion);
37
+ const hasFreeStampsConnected = carriers === null || carriers === void 0 ? void 0 : carriers.some(c => c.carrierCode === "stamps_com" && c.fundingSourceId === null);
37
38
  // filter carrier profiles based on enabled carriers
38
- const enabledCarrierProfiles = carrierProfilesFilteredByRegion === null || carrierProfilesFilteredByRegion === void 0 ? void 0 : carrierProfilesFilteredByRegion.filter(c => enabledCarriers.includes(c.carrierCode));
39
+ const enabledCarrierProfiles = carrierProfilesFilteredByRegion === null || carrierProfilesFilteredByRegion === void 0 ? void 0 : carrierProfilesFilteredByRegion.filter(c => {
40
+ if (c.carrierCode === "stamps_com" && hasFreeStampsConnected) {
41
+ // if stamps_com is connected as a free account, we don't want to show it in the list of carriers to register. The funding source creation will convert it to a walleted carrier as the default carrier.
42
+ return false;
43
+ }
44
+ // filter out carriers that are not enabled by the feature flag
45
+ return enabledCarriers.includes(c.carrierCode);
46
+ });
39
47
  const carrierProfilesToRegister = React.useMemo(() => {
40
48
  if (!enabledCarrierProfiles) return [];
41
- // add Stamps/USPS carrier ToS from funding source terms
42
- const carrierProfiles = enabledCarrierProfiles.map(c => {
43
- if (c.carrierCode === "stamps_com" && fundingSourceRequiredTerms) {
44
- return Object.assign(Object.assign({}, c), {
45
- requiredTerms: [...fundingSourceRequiredTerms, ...c.requiredTerms]
46
- });
47
- }
48
- return c;
49
- });
50
49
  // handle existing funding source
51
50
  const {
52
51
  fundingSourceId
53
52
  } = (fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources[0]) || {};
54
- if (!fundingSourceId || !carriers) return carrierProfiles;
53
+ if (!fundingSourceId || !carriers) return enabledCarrierProfiles;
55
54
  const connectedCarriers = carriers.filter(c => c.fundingSourceId === fundingSourceId);
56
- return carrierProfiles.filter(profile => {
55
+ return enabledCarrierProfiles.filter(profile => {
57
56
  // filter out carriers that are already connected
58
57
  const isConnected = connectedCarriers.some(c => c.carrierCode === profile.carrierCode && c.fundingSourceId === fundingSourceId);
59
58
  // if stamps_com is enabled, and usps is connected to the funding source,
@@ -100,6 +99,7 @@ const useTermsAgreementStep = ({
100
99
  carrierProfilesToRegister,
101
100
  enabledCarrierProfiles,
102
101
  fundingSourceMetadata,
102
+ hasFreeStampsConnected,
103
103
  fundingSourceRequiredTerms,
104
104
  fundingSources,
105
105
  handleSubmitTermsAgreement,
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from '@emotion/react/jsx-runtime';
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
2
  import { Link, Icon, IconSize } from '@shipengine/giger';
3
3
  import { IconNames } from '@shipengine/giger-theme';
4
4
  import { encode } from 'js-base64';
@@ -6,14 +6,23 @@ import { useTranslation } from 'react-i18next';
6
6
  import { styles } from './display-term.styles.js';
7
7
 
8
8
  const DisplayTerm = ({
9
- term
9
+ terms
10
10
  }) => {
11
11
  const {
12
12
  t
13
13
  } = useTranslation();
14
- return jsx("ul", {
14
+ const {
15
+ links,
16
+ disclosure
17
+ } = terms;
18
+ return jsxs("ul", {
15
19
  css: styles.container,
16
- children: term.links.map(({
20
+ children: [disclosure && jsx("li", {
21
+ css: {
22
+ listStyle: "none"
23
+ },
24
+ children: disclosure
25
+ }), links.map(({
17
26
  link,
18
27
  title
19
28
  }) => jsx("li", {
@@ -31,7 +40,7 @@ const DisplayTerm = ({
31
40
  size: IconSize.SIZE_SMALL
32
41
  })]
33
42
  })
34
- }, title))
43
+ }, title))]
35
44
  });
36
45
  };
37
46
 
@@ -1,42 +1,59 @@
1
1
  import { __rest } from '../../../_virtual/_tslib.js';
2
2
  import { jsx } from '@emotion/react/jsx-runtime';
3
3
  import { Input } from '@shipengine/giger';
4
- import { formatCreditCardNumber } from '../../../utilities/money.js';
4
+ import { formatCreditCardNumber, maskCreditCardNumber } from '../../../utilities/money.js';
5
+ import { useState } from 'react';
5
6
  import { createFieldController } from '../create-field-controller.js';
6
7
  import { styles } from '../field.styles.js';
7
8
 
8
9
  const CreditCardInputController = createFieldController();
9
10
  const transform = {
10
- in: v => v ? formatCreditCardNumber(v) : "",
11
+ in: (v, isFocused) => {
12
+ if (!v) return "";
13
+ return isFocused ? formatCreditCardNumber(v) : maskCreditCardNumber(v);
14
+ },
11
15
  out: event => event.target.value === "" ? null : event.target.value.replace(/\s/g, "")
12
16
  };
13
- const CreditCardInput = fieldProps => jsx(CreditCardInputController, Object.assign({}, fieldProps, {
14
- children: _a => {
15
- var {
16
- onChange,
17
- value
18
- } = _a,
19
- creditCardInputProps = __rest(_a, ["onChange", "value"]);
20
- return jsx("div", {
21
- css: styles.overrideStyles,
22
- children: jsx(Input, Object.assign({}, creditCardInputProps, {
23
- onChange: e => {
24
- // Amex allows 15 digits, all others allow 16
25
- if (e.target.value.replace(/\s/g, "").length > 16) {
26
- e.preventDefault();
27
- } else {
28
- onChange(transform.out(e));
29
- }
30
- },
31
- onKeyDown: e => {
32
- // Prevent non-numeric characters
33
- if (!/^([0-9]|Backspace|Delete|Enter|Tab)$/i.test(e.key)) e.preventDefault();
34
- },
35
- type: "text",
36
- value: transform.in(value)
37
- }))
38
- });
39
- }
40
- }));
17
+ const CreditCardInput = fieldProps => {
18
+ const [isFocused, setIsFocused] = useState(false);
19
+ return jsx(CreditCardInputController, Object.assign({}, fieldProps, {
20
+ children: _a => {
21
+ var {
22
+ onChange,
23
+ value
24
+ } = _a,
25
+ creditCardInputProps = __rest(_a, ["onChange", "value"]);
26
+ return jsx("div", {
27
+ css: styles.overrideStyles,
28
+ children: jsx(Input, Object.assign({}, creditCardInputProps, {
29
+ onBlur: () => {
30
+ var _a;
31
+ setIsFocused(false);
32
+ (_a = creditCardInputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(creditCardInputProps);
33
+ },
34
+ onChange: e => {
35
+ // Amex allows 15 digits, all others allow 16
36
+ if (e.target.value.replace(/\s/g, "").length > 16) {
37
+ e.preventDefault();
38
+ } else {
39
+ onChange(transform.out(e));
40
+ }
41
+ },
42
+ onFocus: e => {
43
+ var _a;
44
+ setIsFocused(true);
45
+ (_a = creditCardInputProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(creditCardInputProps, e);
46
+ },
47
+ onKeyDown: e => {
48
+ // Prevent non-numeric characters
49
+ if (!/^([0-9]|Backspace|Delete|Enter|Tab)$/i.test(e.key)) e.preventDefault();
50
+ },
51
+ type: "text",
52
+ value: transform.in(value, isFocused)
53
+ }))
54
+ });
55
+ }
56
+ }));
57
+ };
41
58
 
42
59
  export { CreditCardInput };
@@ -1,5 +1,5 @@
1
1
  import { jsxs, jsx, Fragment } from '@emotion/react/jsx-runtime';
2
- import { Icon, IconSize, Divider, Checkbox, Link } from '@shipengine/giger';
2
+ import { Icon, IconSize, Typography, Divider, Checkbox, Link } from '@shipengine/giger';
3
3
  import { IconNames } from '@shipengine/giger-theme';
4
4
  import { getTotalRateAmount } from '../../../../utilities/rates.js';
5
5
  import { useMemo } from 'react';
@@ -82,6 +82,7 @@ const RateCard = ({
82
82
  messages,
83
83
  onClick,
84
84
  onClickAcknowledgement,
85
+ onPaperlessAcknowledgementChange,
85
86
  onSelectServicePoint,
86
87
  otherAmount,
87
88
  rateId,
@@ -99,7 +100,9 @@ const RateCard = ({
99
100
  selectedRateCost,
100
101
  servicePoints,
101
102
  mapViewEnabled,
102
- rateDetails
103
+ rateDetails,
104
+ paperlessDisplaySchemes,
105
+ paperlessLabelChecked = false
103
106
  }) => {
104
107
  /* TODO: ENGINE-7366: TODO Remove showVatSettings flag once this is fully in production */
105
108
  const showRateDetails = showVatFeatures && rateDetails && rateDetails.length > 0;
@@ -143,7 +146,8 @@ const RateCard = ({
143
146
  return undefined;
144
147
  }
145
148
  }, [confirmationAmount, insuranceAmount, isPreferredRate, otherAmount, selectedRateCost, shippingAmount, taxAmount]);
146
- const hasFooterData = !!(rateMessages === null || rateMessages === void 0 ? void 0 : rateMessages.length) || requiresAcknowledgement;
149
+ const requiresPaperlessAcknowledgement = paperlessDisplaySchemes === null || paperlessDisplaySchemes === void 0 ? void 0 : paperlessDisplaySchemes.includes("qr_code");
150
+ const hasFooterData = !!(rateMessages === null || rateMessages === void 0 ? void 0 : rateMessages.length) || requiresAcknowledgement || requiresPaperlessAcknowledgement;
147
151
  const costBreakdownCommonProps = {
148
152
  confirmationAmount,
149
153
  insuranceAmount,
@@ -184,6 +188,17 @@ const RateCard = ({
184
188
  serviceInfo: {
185
189
  line1: carrierNickname,
186
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,
187
202
  type: serviceType
188
203
  }
189
204
  }), servicePoints && jsxs(Fragment, {
@@ -198,16 +213,25 @@ const RateCard = ({
198
213
  rateSelected: selected,
199
214
  servicePoints: servicePoints
200
215
  })]
201
- }), selected && hasFooterData && jsx(ServiceCardFooter, {
216
+ }), selected && hasFooterData && jsxs(ServiceCardFooter, {
202
217
  messages: rateMessages,
203
- children: requiresAcknowledgement && onClickAcknowledgement && jsx(Checkbox, {
218
+ children: [requiresAcknowledgement && onClickAcknowledgement && jsx(Checkbox, {
204
219
  "aria-required": true,
205
220
  checked: isAcknowledged,
206
221
  css: styles.acknowledgment,
207
222
  "data-testid": "rate-acknowledgement",
208
223
  label: rateAcknowledgementMessage ? getPreferredRateAcknowledgementLabel(rateAcknowledgementMessage) : getAcknowledgementLabel(serviceCode, packageType),
209
224
  onChange: e => onClickAcknowledgement(e.target.checked)
210
- })
225
+ }), requiresPaperlessAcknowledgement && jsx(Checkbox, {
226
+ "aria-required": true,
227
+ checked: paperlessLabelChecked,
228
+ css: styles.acknowledgment,
229
+ "data-testid": "paperless-acknowledgement",
230
+ label: t("purchase-label:usePaperlessLabel"),
231
+ onChange: e => {
232
+ onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(e.target.checked, "qr_code");
233
+ }
234
+ })]
211
235
  })]
212
236
  });
213
237
  };
@@ -3,10 +3,8 @@ import { scopeTheme, createStyles } from '../../../../utilities/styles.js';
3
3
  const getRateCardFirstLineSize = theme => `${scopeTheme(theme).spacing(3.25)}px`;
4
4
  const styles = createStyles({
5
5
  acknowledgment: theme => ({
6
- alignItems: "center",
7
6
  color: scopeTheme(theme).palette.gray.main,
8
- display: "flex",
9
- paddingTop: scopeTheme(theme).spacing(1.5)
7
+ display: "flex"
10
8
  }),
11
9
  divider: theme => ({
12
10
  borderColor: scopeTheme(theme).palette.primary.main,
@@ -27,6 +25,13 @@ const styles = createStyles({
27
25
  position: "absolute",
28
26
  right: 0,
29
27
  top: 0
28
+ }),
29
+ paperlessText: theme => ({
30
+ display: "flex",
31
+ gap: scopeTheme(theme).spacing(0.25),
32
+ paddingTop: scopeTheme(theme).spacing(0.5),
33
+ color: scopeTheme(theme).palette.gray[600],
34
+ alignItems: "center"
30
35
  })
31
36
  });
32
37