@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
@@ -0,0 +1,26 @@
1
+ import { usStates, countries } from '../constants/shipengine/address.js';
2
+
3
+ /**
4
+ * Returns a simplified list of countries for use in dropdowns and forms.
5
+ *
6
+ * @returns Array of country objects with name and code properties
7
+ */
8
+ const getCountries = () => {
9
+ return countries.map(country => ({
10
+ name: country.name,
11
+ code: country.code
12
+ }));
13
+ };
14
+ /**
15
+ * Returns a simplified list of US states for use in dropdowns and forms.
16
+ *
17
+ * @returns Array of US state objects with name and code properties
18
+ */
19
+ const getUsStates = () => {
20
+ return usStates.map(state => ({
21
+ name: state.name,
22
+ code: state.code
23
+ }));
24
+ };
25
+
26
+ export { getCountries, getUsStates };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Creates a local file from an AxiosResponse containing a blob.
3
+ */
4
+ const createLocalFileFromBlobResponse = (type, {
5
+ data: blob
6
+ }) => {
7
+ const url = URL.createObjectURL(new Blob([blob], {
8
+ type: blob.type
9
+ }));
10
+ const fileName = type === "label" ? "labels-download" : "shipments-download";
11
+ triggerDownload(url, fileName);
12
+ };
13
+ /**
14
+ * Triggers the download of the sent URL.
15
+ * @param {string} url - The URL for the download.
16
+ * @param {string} filename - The filename for the download.
17
+ */
18
+ const triggerDownload = (url, filename) => {
19
+ const downloadLink = createInvisibleAnchor(url, filename);
20
+ document.body.appendChild(downloadLink);
21
+ downloadLink.click();
22
+ document.body.removeChild(downloadLink);
23
+ };
24
+ const createInvisibleAnchor = (url, filename) => {
25
+ const downloadLink = document.createElement("a");
26
+ downloadLink.setAttribute("href", url);
27
+ downloadLink.setAttribute("download", filename);
28
+ downloadLink.style.display = "none";
29
+ return downloadLink;
30
+ };
31
+
32
+ export { createLocalFileFromBlobResponse, triggerDownload };
@@ -17,5 +17,13 @@ const replaceSpacesWithDashes = str => str === null || str === void 0 ? void 0 :
17
17
  const addSpaceBetweenWords = str => str.replace(/([a-z])([A-Z])/g, "$1 $2") // add space if there is a lowercase letter followed by an uppercase letter
18
18
  .replace(/(?<=[a-zA-Z])(\d)/g, " $1") // add space if there is a letter followed by a number
19
19
  .trim();
20
+ /**
21
+ * Converts a string from camelCase or PascalCase to snake_case
22
+ *
23
+ * @example
24
+ * toSnakeCase("helloWorld") // returns "hello_world"
25
+ * toSnakeCase("HelloWorld") // returns "hello_world"
26
+ */
27
+ const toSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
20
28
 
21
- export { addSpaceBetweenWords, capitalizeFirstLetter, capitalizeFirstLetterOfEachWord, pascalize, replaceSpacesWithDashes };
29
+ export { addSpaceBetweenWords, capitalizeFirstLetter, capitalizeFirstLetterOfEachWord, pascalize, replaceSpacesWithDashes, toSnakeCase };
@@ -1,3 +1,5 @@
1
1
  export { createStyles, scopeTheme } from './styles.js';
2
2
  export { getSellerIdFromToken, isOnboarded, validateShipFromAddress } from './checks.js';
3
+ export { createLocalFileFromBlobResponse } from './files.js';
4
+ export { getCountries, getUsStates } from './address.js';
3
5
  export { getDefaultFeatures } from './feature-flags/feature-flags.js';
@@ -36,6 +36,19 @@ const calculateTotal = (...values) => {
36
36
  return value ? total + ((_a = value.amount) !== null && _a !== void 0 ? _a : 0) : total;
37
37
  }, 0);
38
38
  };
39
+ /**
40
+ * @internal
41
+ *
42
+ * # Money Utils - maskCreditCardNumber
43
+ */
44
+ const maskCreditCardNumber = cc => {
45
+ const sanitizedCC = cc.replace(/\s/g, "");
46
+ if (!sanitizedCC || sanitizedCC.length < 15 || sanitizedCC.length > 16) {
47
+ return cc;
48
+ }
49
+ const maskedCCNumber = "*".repeat(sanitizedCC.length - 4) + sanitizedCC.slice(-4);
50
+ return maskedCCNumber.replace(/(.{4})/g, "$1 ").trim();
51
+ };
39
52
  /**
40
53
  * @internal
41
54
  *
@@ -94,4 +107,4 @@ const getCurrencySymbolFromString = currency => {
94
107
  return currencySymbol;
95
108
  };
96
109
 
97
- export { calculateTotal, currencySymbol, formatCreditCardNumber, formatExpiration, formatMoney, getCurrencyFromString, getCurrencySymbolFromString };
110
+ export { calculateTotal, currencySymbol, formatCreditCardNumber, formatExpiration, formatMoney, getCurrencyFromString, getCurrencySymbolFromString, maskCreditCardNumber };
@@ -0,0 +1,23 @@
1
+ import rateMessages from '../data/rate-messages.json.js';
2
+
3
+ /**
4
+ * Builds warning messages for a rate by combining messages from different sources:
5
+ * 1. Messages for serviceCode:shipDay combination
6
+ * 2. Messages for serviceCode:packageType combination
7
+ * 3. Messages for serviceCode only
8
+ * 4. Existing warning messages from the rate
9
+ */
10
+ const buildRateWarningMessages = ({
11
+ serviceCode,
12
+ packageType,
13
+ shipDay,
14
+ existingWarningMessages = []
15
+ }) => {
16
+ const keys = [shipDay && `${serviceCode}:${shipDay}`, packageType && `${serviceCode}:${packageType}`, serviceCode].filter(Boolean);
17
+ return [...keys.flatMap(key => {
18
+ var _a;
19
+ return (_a = rateMessages[key]) !== null && _a !== void 0 ? _a : [];
20
+ }), ...existingWarningMessages];
21
+ };
22
+
23
+ export { buildRateWarningMessages };
@@ -1,5 +1,6 @@
1
1
  const getDefaultWarehouse = warehouses => {
2
- return warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.isDefault);
2
+ var _a;
3
+ return (_a = warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.isDefault)) !== null && _a !== void 0 ? _a : warehouses === null || warehouses === void 0 ? void 0 : warehouses[0];
3
4
  };
4
5
  const getWarehouseById = (warehouseId, warehouses) => {
5
6
  return warehouses === null || warehouses === void 0 ? void 0 : warehouses.find(w => w.warehouseId === warehouseId);
@@ -64,7 +64,7 @@ const Component = ({
64
64
  refetch: refetchSchema
65
65
  } = useGetCarrierConnectionForm({
66
66
  carrierName: selectedCarrier !== null && selectedCarrier !== void 0 ? selectedCarrier : "apicode-dummy-carrier",
67
- enabled: false
67
+ enabled: !!selectedCarrier
68
68
  });
69
69
  useEffect(() => {
70
70
  if (selectedCarrier && needsRefetch) {
@@ -131,7 +131,9 @@ const Component = ({
131
131
  const updatedSchema = Object.assign({}, schema);
132
132
  // camelize required fields, as casing varies between carriers
133
133
  if (updatedSchema.required && Array.isArray(updatedSchema.required)) {
134
- updatedSchema.required = updatedSchema.required.map(humps.camelize);
134
+ updatedSchema.required = updatedSchema.required.map(item => {
135
+ return typeof item === "string" ? humps.camelize(item) : item;
136
+ });
135
137
  }
136
138
  // camelize property keys
137
139
  // fail safe to ensure schema properties and required array match in the event the camelizeKeys from shipengine/js-api isn't consistent
@@ -153,7 +155,9 @@ const Component = ({
153
155
  const updatedUiSchema = Object.assign({}, uiSchemaClone);
154
156
  // add nickname to ui:order and camelize the values to ensure consistency with jsonSchema properties and required array
155
157
  if (!hasNicknameProperty && updatedUiSchema["ui:order"]) {
156
- updatedUiSchema["ui:order"] = [...updatedUiSchema["ui:order"], "nickname"].map(humps.camelize);
158
+ // ui:order is typically an array of strings, but apparently can also be an array of arrays of strings, so we need to recursively camelize the items
159
+ const camelizeUIOrderItem = item => typeof item === "string" ? humps.camelize(item) : item.map(i => humps.camelize(i));
160
+ updatedUiSchema["ui:order"] = [...updatedUiSchema["ui:order"], "nickname"].map(camelizeUIOrderItem);
157
161
  }
158
162
  return updatedUiSchema;
159
163
  }, [uiSchema, hasNicknameProperty]);
@@ -44,6 +44,7 @@ const Component = _a => {
44
44
  data: accountSettings
45
45
  } = useGetAccountSettings();
46
46
  const {
47
+ createNewShipmentForNotFound,
47
48
  shipment,
48
49
  salesOrder,
49
50
  isLoading: isConfiguringShipment,
@@ -57,19 +58,24 @@ const Component = _a => {
57
58
  useWarehouses: (_b = propFeatures === null || propFeatures === void 0 ? void 0 : propFeatures.shipmentForm) === null || _b === void 0 ? void 0 : _b.useWarehouses,
58
59
  warehouseId
59
60
  }));
61
+ // Track if we have a shipment_not_found error to avoid reusing the bad shipment ID
62
+ const hasShipmentNotFoundError = configureShipmentErrors === null || configureShipmentErrors === void 0 ? void 0 : configureShipmentErrors.some(error => error.message === "shipment_not_found");
63
+ const shipmentId = _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : undefined;
60
64
  const {
61
65
  data: insuranceAccount,
62
66
  isInitialLoading: insuranceIsLoading
63
67
  } = useGetInsuranceAccount((shipment === null || shipment === void 0 ? void 0 : shipment.insuranceProvider) === SE.InsuranceProviderType.SHIPSURANCE ? SE.InsuranceProviderType.SHIPSURANCE : undefined);
64
68
  const {
65
69
  data: labelsResponse,
66
- isLoading: isLabelsLoading,
70
+ isFetching: isLabelsLoading,
67
71
  error: listLabelsErrors,
68
72
  refetch: refetchLabels
69
73
  } = useListLabels({
70
- enabled: _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment === null || shipment === void 0 ? void 0 : shipment.shipmentId),
74
+ enabled:
75
+ // Don't enable if we have a shipment_not_found error (avoid reusing bad ID)
76
+ hasShipmentNotFoundError ? false : _multiplexedId && "shipmentId" in _multiplexedId ? true : !!(shipment === null || shipment === void 0 ? void 0 : shipment.shipmentId),
71
77
  queryFnParams: {
72
- shipmentId: _multiplexedId && "shipmentId" in _multiplexedId ? _multiplexedId.shipmentId : shipment === null || shipment === void 0 ? void 0 : shipment.shipmentId
78
+ shipmentId: (shipment === null || shipment === void 0 ? void 0 : shipment.shipmentId) || (!hasShipmentNotFoundError ? shipmentId : undefined)
73
79
  }
74
80
  });
75
81
  /**
@@ -173,6 +179,8 @@ const Component = _a => {
173
179
  data: shipment || salesOrder,
174
180
  errors: errors.length ? errors : undefined,
175
181
  isLoading: isLabelsLoading || isConfiguringShipment || insuranceIsLoading,
182
+ onCreateNewShipment: createNewShipmentForNotFound,
183
+ shipmentId: shipmentId,
176
184
  children: element && getElement(element)
177
185
  });
178
186
  };
@@ -71,7 +71,7 @@ const ConfirmationAndSubmissionStep = ({
71
71
  }),
72
72
  children: [jsx(CcProviderLogo, {
73
73
  provider: provider,
74
- width: 36
74
+ width: 56
75
75
  }), jsx(Typography, {
76
76
  variant: "body2",
77
77
  children: `**** **** **** ${last4 !== null && last4 !== void 0 ? last4 : "****"}`
@@ -1,8 +1,10 @@
1
1
  import { __awaiter } from '../../../../_virtual/_tslib.js';
2
+ import { useScrubErrors } from '../../../../hooks/use-scrub-errors.js';
2
3
  import { useAddSandboxCarriers, useCreateFundingSource, useUpdateFundingSource, useRegisterCarrier } from '@shipengine/react-api';
3
4
  import { getSellerIdFromToken } from '../../../../utilities/checks.js';
4
5
  import { getDefaultWarehouse } from '../../../../utilities/shipengine/warehouses.js';
5
6
  import { useState, useCallback } from 'react';
7
+ import { useTranslation } from 'react-i18next';
6
8
  import { useManageWarehouses } from '../../../../features/manage-warehouses/use-manage-warehouses.js';
7
9
  import { useElements } from '../../../../elements-provider/elements-context-provider.js';
8
10
 
@@ -13,6 +15,9 @@ const useConfirmationAndSubmissionStep = ({
13
15
  globalFeatures,
14
16
  getToken
15
17
  } = useElements();
18
+ const {
19
+ t
20
+ } = useTranslation();
16
21
  const [isSubmittingOnboarding, setIsSubmittingOnboarding] = useState(false);
17
22
  const {
18
23
  createWarehouse,
@@ -33,6 +38,15 @@ const useConfirmationAndSubmissionStep = ({
33
38
  mutateAsync: createFundingSource,
34
39
  reset: resetCreateFundingSource
35
40
  } = useCreateFundingSource();
41
+ const displayableCreateFundingSourceErrors = useScrubErrors({
42
+ errors: createFundingSourceErrors !== null && createFundingSourceErrors !== void 0 ? createFundingSourceErrors : undefined,
43
+ predicate: useCallback(e => e.message.includes("An unexpected error occurred."), []),
44
+ scrubber: useCallback(() => {
45
+ return `${t("common:errorMessages.fundingSourceCreationFailed", {
46
+ email: globalFeatures.supportEmailAddress
47
+ })} `;
48
+ }, [globalFeatures.supportEmailAddress, t])
49
+ });
36
50
  const {
37
51
  error: updatePaymentMethodErrors,
38
52
  isLoading: isUpdatingPaymentMethod,
@@ -294,7 +308,9 @@ const useConfirmationAndSubmissionStep = ({
294
308
  setIsSubmittingOnboarding(false);
295
309
  }), [onboardSeller, updateExistingFundingSource, onStepComplete, createFundingSourceErrors, registerCarrierErrors, updatePaymentMethodErrors, updateWarehouseErrors]);
296
310
  return {
297
- createFundingSourceErrors,
311
+ createFundingSourceErrors: displayableCreateFundingSourceErrors === null || displayableCreateFundingSourceErrors === void 0 ? void 0 : displayableCreateFundingSourceErrors.map(message => ({
312
+ message
313
+ })),
298
314
  createOnboardingSubmissionHandler,
299
315
  isLoading: {
300
316
  connectingCarriers: isRegisteringCarriers,
@@ -59,6 +59,7 @@ const OnboardingWizard = ({
59
59
  isLoadingTermsAgreementStep,
60
60
  fundingSourceRequiredTerms,
61
61
  fundingSourceMetadata,
62
+ hasFreeStampsConnected,
62
63
  handleSubmitTermsAgreement,
63
64
  refetchCarriers,
64
65
  refetchFundingSources,
@@ -165,8 +166,10 @@ const OnboardingWizard = ({
165
166
  return jsx(TermsAgreementStep, {
166
167
  carrierProfilesToRegister: carrierProfilesToRegister,
167
168
  enabledCarrierProfiles: enabledCarrierProfiles,
169
+ fundingSourceRequiredTerms: fundingSourceRequiredTerms,
168
170
  insuranceProviderProfiles: insuranceProviderProfiles,
169
- onSubmit: handleSubmitTermsAgreement
171
+ onSubmit: handleSubmitTermsAgreement,
172
+ showStampsLogo: hasFreeStampsConnected
170
173
  });
171
174
  },
172
175
  label: t("onboarding:stepLabel.termsAgreement")
@@ -18,6 +18,7 @@ import { SubmitButton } from '../../../../components/field/submit-button/submit-
18
18
  const TermsAgreementForm = ({
19
19
  carrierTerms,
20
20
  hideTerms,
21
+ requiredTerms = [],
21
22
  insuranceProviderTerms,
22
23
  isSubmitDisabled,
23
24
  onSubmit
@@ -85,32 +86,38 @@ const TermsAgreementForm = ({
85
86
  variant: "body1",
86
87
  children: t("terms.shipEngineTitle")
87
88
  }), jsx(DisplayTerm, {
88
- term: {
89
+ terms: {
89
90
  links: [{
90
91
  link: "https://www.shipengine.com/terms-of-service/",
91
- locale: "en-US",
92
- title: t("onboarding:termsAndAgreementLinkText.shipEngineToS")
92
+ title: "ShipEngine Terms of Service",
93
+ locale: "en-US"
93
94
  }, {
94
- link: "https://auctane.com/legal/privacy-policy/",
95
- locale: "en-US",
96
- title: t("onboarding:termsAndAgreementLinkText.auctanePrivacyPolicy")
95
+ link: "https://www.auctane.com/terms-of-service/",
96
+ title: "Auctane Terms of Service",
97
+ locale: "en-US"
98
+ }, {
99
+ link: "https://www.stamps.com/wallet-terms-of-service/",
100
+ title: "Stamps Wallet Terms of Service",
101
+ locale: "en-US"
97
102
  }]
98
103
  }
99
- }), !!carrierTerms.length && jsxs(Fragment, {
104
+ }), requiredTerms.map(term => jsx(DisplayTerm, {
105
+ terms: term
106
+ }, term.termType)), !!carrierTerms.length && jsxs(Fragment, {
100
107
  children: [jsx(Spacer, {}), jsx(Typography, {
101
108
  bold: true,
102
109
  variant: "body1",
103
110
  children: t("terms.carriersTitle")
104
- }), carrierTerms.map(term => jsx(DisplayTerm, {
105
- term: term
106
- }, term.termType))]
111
+ }), carrierTerms.map((term, idx) => jsx(DisplayTerm, {
112
+ terms: term
113
+ }, idx))]
107
114
  }), enableParcelGuard && !!insuranceProviderTerms.length && jsxs(Fragment, {
108
115
  children: [jsx(Spacer, {}), jsx(Typography, {
109
116
  bold: true,
110
117
  variant: "body1",
111
118
  children: t("terms.insuranceProvidersTitle")
112
119
  }), insuranceProviderTerms.map(term => jsx(DisplayTerm, {
113
- term: term
120
+ terms: term
114
121
  }, term.termType))]
115
122
  })]
116
123
  }), jsx(ButtonGroup, {
@@ -13,9 +13,6 @@ const styles = createStyles({
13
13
  display: "inline-flex",
14
14
  fontWeight: scopeTheme(theme).typography.fontWeight.normal
15
15
  }),
16
- fullWidth: {
17
- width: "100%"
18
- },
19
16
  termsWell: theme => ({
20
17
  backgroundColor: scopeTheme(theme).palette.gray.ultraLight,
21
18
  marginBottom: scopeTheme(theme).spacing(6),
@@ -1,20 +1,24 @@
1
1
  import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
2
- import { InlineNotification, NotificationType, Icon, IconSize } from '@shipengine/giger';
2
+ import { InlineNotification, NotificationType, IconSize, Icon } from '@shipengine/giger';
3
3
  import { IconNames } from '@shipengine/giger-theme';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { styles } from './terms-agreement-step.styles.js';
6
6
  import { TermsAgreementForm } from '../terms-agreement-form/terms-agreement-form.js';
7
7
  import { useCarrierMetadata } from '../../../../features/manage-carriers/hooks/use-carrier-metadata.js';
8
8
  import { useElements } from '../../../../elements-provider/elements-context-provider.js';
9
+ import { UPSTermsDisclosure } from '../../../../components/ups-terms-disclosure/ups-terms-disclosure.js';
9
10
  import { Spacer } from '../../../../components/spacer/spacer.js';
10
11
  import { StepHeader } from '../step-header/step-header.js';
12
+ import { CarrierIcon } from '../../../../components/carrier-icon/carrier-icon.js';
11
13
  import { CarrierLogo } from '../../../../components/carrier-logo/carrier-logo.js';
12
14
 
13
15
  const TermsAgreementStep = ({
14
16
  carrierProfilesToRegister,
15
17
  insuranceProviderProfiles,
16
18
  onSubmit,
17
- enabledCarrierProfiles
19
+ enabledCarrierProfiles,
20
+ fundingSourceRequiredTerms,
21
+ showStampsLogo = false
18
22
  }) => {
19
23
  var _a, _b, _c, _d, _e;
20
24
  const {
@@ -27,11 +31,17 @@ const TermsAgreementStep = ({
27
31
  } = useElements();
28
32
  const carrierFriendlyNames = useCarrierMetadata();
29
33
  const hideTerms = carrierProfilesToRegister.length === 0 && (insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) === 0;
30
- const carrierTerms = carrierProfilesToRegister.flatMap(c => c.requiredTerms);
34
+ const carrierTerms = carrierProfilesToRegister.map(c => {
35
+ const disclosure = c.carrierCode === "ups_walleted" ? jsx(UPSTermsDisclosure, {}) : undefined;
36
+ return {
37
+ links: c.requiredTerms.flatMap(term => term.links),
38
+ disclosure
39
+ };
40
+ });
31
41
  const insuranceProviderTerms = (_a = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.flatMap(p => p.terms)) !== null && _a !== void 0 ? _a : [];
32
42
  const showParcelGuard = enableParcelGuard && ((_b = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _b !== void 0 ? _b : 0) > 0;
33
43
  const hasInsuranceToRegister = showParcelGuard && ((_c = insuranceProviderProfiles === null || insuranceProviderProfiles === void 0 ? void 0 : insuranceProviderProfiles.length) !== null && _c !== void 0 ? _c : 0) > 0;
34
- const hasEnabledCarriersConfigurationError = !enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0;
44
+ const hasEnabledCarriersConfigurationError = !showStampsLogo && (!enabledCarrierProfiles || (enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) === 0);
35
45
  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;
36
46
  const hasCarriersToRegister = ((_e = enabledCarrierProfiles === null || enabledCarrierProfiles === void 0 ? void 0 : enabledCarrierProfiles.length) !== null && _e !== void 0 ? _e : 0) > 0 && carrierProfilesToRegister.length > 0;
37
47
  // Handle case where partner has not correctly enabled carriers and there is no insurance to register
@@ -46,20 +56,33 @@ const TermsAgreementStep = ({
46
56
  children: t("errors.noCarriers.subtitle")
47
57
  });
48
58
  }
49
- const renderCarrierLogos = () => {
50
- if (!carrierProfilesToRegister.length) return null;
51
- return carrierProfilesToRegister.map(p => {
59
+ const renderCarrierIcons = () => {
60
+ var _a;
61
+ const stampsCarrierProfile = {
62
+ carrierCode: "stamps_com",
63
+ carrierName: (_a = carrierFriendlyNames["stamps_com"]) === null || _a === void 0 ? void 0 : _a.name
64
+ };
65
+ let carriersToDisplay;
66
+ // kind of a goofy way to just display stamps/usps logo without sending it in the payload to register
67
+ // we don't want to register stamps as a carrier if it's not being used as the primary payment method
68
+ if (showStampsLogo) {
69
+ carriersToDisplay = [stampsCarrierProfile, ...carrierProfilesToRegister];
70
+ } else {
71
+ carriersToDisplay = carrierProfilesToRegister;
72
+ }
73
+ return carriersToDisplay.map(p => {
52
74
  var _a;
53
- return jsx(CarrierLogo, {
75
+ return jsx(CarrierIcon, {
54
76
  carrierCode: p.carrierCode,
55
77
  carrierName: ((_a = carrierFriendlyNames[p.carrierCode]) === null || _a === void 0 ? void 0 : _a.name) || p.carrierCode,
56
- size: "lg"
78
+ size: IconSize.SIZE_EXTRA_LARGE
57
79
  }, p.carrierCode);
58
80
  });
59
81
  };
60
82
  const renderInsuranceLogos = () => {
61
83
  if (!hasInsuranceToRegister) return null;
62
- return jsxs(Fragment, {
84
+ return jsxs("div", {
85
+ css: styles.insuranceLogosContainer,
63
86
  children: [hasCarriersToRegister && jsx(Icon, {
64
87
  css: styles.plus,
65
88
  name: IconNames.PLUS,
@@ -85,13 +108,13 @@ const TermsAgreementStep = ({
85
108
  }), jsx(Spacer, {
86
109
  multiplier: 4
87
110
  })]
88
- }), (hasCarriersToRegister || hasInsuranceToRegister) && jsxs(Fragment, {
111
+ }), (hasCarriersToRegister || hasInsuranceToRegister || showStampsLogo) && jsxs(Fragment, {
89
112
  children: [jsx(StepHeader, {
90
113
  subtitle: t("termsAgreement.subtitle"),
91
114
  title: t("termsAgreement.title")
92
115
  }), jsxs("div", {
93
116
  css: styles.carrierLogos,
94
- children: [renderCarrierLogos(), renderInsuranceLogos()]
117
+ children: [renderCarrierIcons(), renderInsuranceLogos()]
95
118
  })]
96
119
  }), jsx("div", {
97
120
  css: styles.fullWidth,
@@ -99,7 +122,8 @@ const TermsAgreementStep = ({
99
122
  carrierTerms: carrierTerms,
100
123
  hideTerms: hideTerms,
101
124
  insuranceProviderTerms: insuranceProviderTerms,
102
- onSubmit: onSubmit
125
+ onSubmit: onSubmit,
126
+ requiredTerms: fundingSourceRequiredTerms
103
127
  })
104
128
  })]
105
129
  });
@@ -7,7 +7,8 @@ const styles = createStyles({
7
7
  flexWrap: "wrap",
8
8
  gap: scopeTheme(theme).spacing(1),
9
9
  justifyContent: "center",
10
- padding: `${scopeTheme(theme).spacing(3)}px 0`
10
+ alignItems: "center",
11
+ padding: `${scopeTheme(theme).spacing(2)}px 0`
11
12
  }),
12
13
  container: theme => ({
13
14
  alignItems: "center",
@@ -20,9 +21,14 @@ const styles = createStyles({
20
21
  fullWidth: {
21
22
  width: "100%"
22
23
  },
23
- plus: () => ({
24
- alignItems: "center",
25
- display: "flex"
24
+ plus: theme => ({
25
+ alignSelf: "center",
26
+ paddingBottom: scopeTheme(theme).spacing(1)
27
+ }),
28
+ insuranceLogosContainer: theme => ({
29
+ display: "flex",
30
+ gap: scopeTheme(theme).spacing(1),
31
+ paddingTop: scopeTheme(theme).spacing(1)
26
32
  })
27
33
  });
28
34
 
@@ -32,26 +32,25 @@ const useTermsAgreementStep = ({
32
32
  const fundingSourceRegion = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultRegionProfile.countryCode;
33
33
  const fundingSourceCarrierProfiles = fundingSourceMetadata === null || fundingSourceMetadata === void 0 ? void 0 : fundingSourceMetadata.defaultRegionProfile.carrierProfiles;
34
34
  const carrierProfilesFilteredByRegion = filterFundingSourceCarriers(fundingSourceCarrierProfiles, fundingSourceRegion);
35
+ const hasFreeStampsConnected = carriers === null || carriers === void 0 ? void 0 : carriers.some(c => c.carrierCode === "stamps_com" && c.fundingSourceId === null);
35
36
  // filter carrier profiles based on enabled carriers
36
- const enabledCarrierProfiles = carrierProfilesFilteredByRegion === null || carrierProfilesFilteredByRegion === void 0 ? void 0 : carrierProfilesFilteredByRegion.filter(c => enabledCarriers.includes(c.carrierCode));
37
+ const enabledCarrierProfiles = carrierProfilesFilteredByRegion === null || carrierProfilesFilteredByRegion === void 0 ? void 0 : carrierProfilesFilteredByRegion.filter(c => {
38
+ if (c.carrierCode === "stamps_com" && hasFreeStampsConnected) {
39
+ // 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.
40
+ return false;
41
+ }
42
+ // filter out carriers that are not enabled by the feature flag
43
+ return enabledCarriers.includes(c.carrierCode);
44
+ });
37
45
  const carrierProfilesToRegister = useMemo(() => {
38
46
  if (!enabledCarrierProfiles) return [];
39
- // add Stamps/USPS carrier ToS from funding source terms
40
- const carrierProfiles = enabledCarrierProfiles.map(c => {
41
- if (c.carrierCode === "stamps_com" && fundingSourceRequiredTerms) {
42
- return Object.assign(Object.assign({}, c), {
43
- requiredTerms: [...fundingSourceRequiredTerms, ...c.requiredTerms]
44
- });
45
- }
46
- return c;
47
- });
48
47
  // handle existing funding source
49
48
  const {
50
49
  fundingSourceId
51
50
  } = (fundingSources === null || fundingSources === void 0 ? void 0 : fundingSources[0]) || {};
52
- if (!fundingSourceId || !carriers) return carrierProfiles;
51
+ if (!fundingSourceId || !carriers) return enabledCarrierProfiles;
53
52
  const connectedCarriers = carriers.filter(c => c.fundingSourceId === fundingSourceId);
54
- return carrierProfiles.filter(profile => {
53
+ return enabledCarrierProfiles.filter(profile => {
55
54
  // filter out carriers that are already connected
56
55
  const isConnected = connectedCarriers.some(c => c.carrierCode === profile.carrierCode && c.fundingSourceId === fundingSourceId);
57
56
  // if stamps_com is enabled, and usps is connected to the funding source,
@@ -98,6 +97,7 @@ const useTermsAgreementStep = ({
98
97
  carrierProfilesToRegister,
99
98
  enabledCarrierProfiles,
100
99
  fundingSourceMetadata,
100
+ hasFreeStampsConnected,
101
101
  fundingSourceRequiredTerms,
102
102
  fundingSources,
103
103
  handleSubmitTermsAgreement,
@@ -1,6 +1,6 @@
1
- import type { SE } from "@shipengine/js-api";
1
+ import type { TermsWithDisclosure } from "@types";
2
2
  export type DisplayTermProps = {
3
- term: Pick<SE.MetadataRequiredTerm, "links">;
3
+ terms: TermsWithDisclosure;
4
4
  };
5
- export declare const DisplayTerm: ({ term }: DisplayTermProps) => import("@emotion/react/jsx-runtime").JSX.Element;
5
+ export declare const DisplayTerm: ({ terms }: DisplayTermProps) => import("@emotion/react/jsx-runtime").JSX.Element;
6
6
  //# sourceMappingURL=display-term.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"display-term.d.ts","sourceRoot":"","sources":["../../../../src/components/display-term/display-term.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAM7C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,UAAU,gBAAgB,qDAuBrD,CAAC"}
1
+ {"version":3,"file":"display-term.d.ts","sourceRoot":"","sources":["../../../../src/components/display-term/display-term.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAMlD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,mBAAmB,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,WAAW,gBAAgB,qDA2BtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"credit-card-input.d.ts","sourceRoot":"","sources":["../../../../../src/components/field/credit-card-input/credit-card-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAIxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAYlE,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAwB7D,CAAC"}
1
+ {"version":3,"file":"credit-card-input.d.ts","sourceRoot":"","sources":["../../../../../src/components/field/credit-card-input/credit-card-input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAKxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAgBlE,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,gBAAgB,CAoC7D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { WithCommonProps } from "@shipengine/giger";
2
- import type { ServicePoint } from "@shipengine/react-api";
2
+ import type { LabelDisplayScheme, ServicePoint } from "@shipengine/react-api";
3
3
  import type { RateOption } from "@types";
4
4
  export type RateCardProps = Partial<RateOption> & WithCommonProps<{
5
5
  isAcknowledged?: boolean;
@@ -8,10 +8,12 @@ export type RateCardProps = Partial<RateOption> & WithCommonProps<{
8
8
  mapViewEnabled?: boolean;
9
9
  onClick?: (rateId: string) => void;
10
10
  onClickAcknowledgement?: (isAcknowledged: boolean) => void;
11
+ onPaperlessAcknowledgementChange?: (usePaperless?: boolean, labelDisplayScheme?: LabelDisplayScheme) => void;
11
12
  onSelectServicePoint?: (servicePoint?: ServicePoint) => void;
12
13
  selected?: boolean;
13
14
  selectedRateCost?: number;
14
15
  showVatFeatures?: boolean;
16
+ paperlessLabelChecked?: boolean;
15
17
  }>;
16
- export declare const RateCard: ({ carrierCode, carrierFriendlyName, carrierNickname, className, confirmationAmount, deliveryDays, insuranceAmount, isAcknowledged, messages, onClick, onClickAcknowledgement, onSelectServicePoint, otherAmount, rateId, requiresAcknowledgement, rateAcknowledgementMessage, selected, serviceCode, packageType, serviceType, shippingAmount, taxAmount, showVatFeatures, isLoading: servicePointsLoading, isPreferredRate, selectedRateCost, servicePoints, mapViewEnabled, rateDetails, }: RateCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
18
+ export declare const RateCard: ({ carrierCode, carrierFriendlyName, carrierNickname, className, confirmationAmount, deliveryDays, insuranceAmount, isAcknowledged, messages, onClick, onClickAcknowledgement, onPaperlessAcknowledgementChange, onSelectServicePoint, otherAmount, rateId, requiresAcknowledgement, rateAcknowledgementMessage, selected, serviceCode, packageType, serviceType, shippingAmount, taxAmount, showVatFeatures, isLoading: servicePointsLoading, isPreferredRate, selectedRateCost, servicePoints, mapViewEnabled, rateDetails, paperlessDisplaySchemes, paperlessLabelChecked, }: RateCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
17
19
  //# sourceMappingURL=rate-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAuC,UAAU,EAAE,MAAM,QAAQ,CAAC;AA4F9E,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,GAC7C,eAAe,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC,CAAC;AAEL,eAAO,MAAM,QAAQ,GAAI,8dA8BtB,aAAa,qDA0If,CAAC"}
1
+ {"version":3,"file":"rate-card.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,KAAK,EAAuC,UAAU,EAAE,MAAM,QAAQ,CAAC;AA2F9E,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,GAC7C,eAAe,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,sBAAsB,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,gCAAgC,CAAC,EAAE,CACjC,YAAY,CAAC,EAAE,OAAO,EACtB,kBAAkB,CAAC,EAAE,kBAAkB,KACpC,IAAI,CAAC;IACV,oBAAoB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC,CAAC;AAEL,eAAO,MAAM,QAAQ,GAAI,gjBAiCtB,aAAa,qDAkKf,CAAC"}
@@ -2,10 +2,8 @@ import type { Theme } from "@emotion/react";
2
2
  export declare const getRateCardFirstLineSize: (theme: Theme) => string;
3
3
  export declare const styles: {
4
4
  acknowledgment: (theme: import("../../../../../typings/emotion").ScopedGigerTheme) => {
5
- alignItems: string;
6
5
  color: string;
7
6
  display: string;
8
- paddingTop: number;
9
7
  };
10
8
  divider: (theme: import("../../../../../typings/emotion").ScopedGigerTheme) => {
11
9
  borderColor: string;
@@ -27,5 +25,12 @@ export declare const styles: {
27
25
  right: number;
28
26
  top: number;
29
27
  };
28
+ paperlessText: (theme: import("../../../../../typings/emotion").ScopedGigerTheme) => {
29
+ display: string;
30
+ gap: number;
31
+ paddingTop: number;
32
+ color: string;
33
+ alignItems: string;
34
+ };
30
35
  };
31
36
  //# sourceMappingURL=rate-card.styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rate-card.styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,WAA2C,CAAC;AAEjG,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BjB,CAAC"}
1
+ {"version":3,"file":"rate-card.styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/field/rate-select/rate-card/rate-card.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,eAAO,MAAM,wBAAwB,GAAI,OAAO,KAAK,WAA2C,CAAC;AAEjG,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCjB,CAAC"}