@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
@@ -20,12 +20,13 @@ const RateSelect = _a => {
20
20
  nicknameFeature,
21
21
  preferredServiceCodes,
22
22
  onClick,
23
+ onPaperlessAcknowledgementChange,
23
24
  onSelectServicePoint,
24
25
  isLoading,
25
26
  mapViewEnabled,
26
27
  showVatFeatures
27
28
  } = _a,
28
- fieldProps = __rest(_a, ["nicknameFeature", "preferredServiceCodes", "onClick", "onSelectServicePoint", "isLoading", "mapViewEnabled", "showVatFeatures"]);
29
+ fieldProps = __rest(_a, ["nicknameFeature", "preferredServiceCodes", "onClick", "onPaperlessAcknowledgementChange", "onSelectServicePoint", "isLoading", "mapViewEnabled", "showVatFeatures"]);
29
30
  // The calculated cost of the selected rate
30
31
  const [selectedRateCost, setSelectedRateCost] = useState();
31
32
  return jsx(RateSelectController, Object.assign({}, fieldProps, {
@@ -48,17 +49,37 @@ const RateSelect = _a => {
48
49
  isPreferredRate: preferredServiceCodes && preferredServiceCodes.includes(option.serviceCode),
49
50
  key: option.rateId,
50
51
  onClick: rateId => {
52
+ var _a;
51
53
  onClick === null || onClick === void 0 ? void 0 : onClick(rateId);
52
- field.onChange({
53
- isAcknowledged: !option.requiresAcknowledgement,
54
- rateId
55
- });
54
+ // if the rate supports "label_and_paperless" display scheme, use it by default
55
+ if ((_a = option.paperlessDisplaySchemes) === null || _a === void 0 ? void 0 : _a.includes("label_and_paperless")) {
56
+ field.onChange({
57
+ usePaperlessLabel: true,
58
+ labelDisplayScheme: "label_and_paperless",
59
+ isAcknowledged: !option.requiresAcknowledgement,
60
+ rateId
61
+ });
62
+ } else {
63
+ field.onChange({
64
+ isAcknowledged: !option.requiresAcknowledgement,
65
+ rateId
66
+ });
67
+ }
56
68
  setSelectedRateCost(getTotalRateAmount(option));
57
69
  },
58
70
  onClickAcknowledgement: isAcknowledged => field.onChange(Object.assign(Object.assign({}, field.value), {
59
71
  isAcknowledged
60
72
  })),
73
+ onPaperlessAcknowledgementChange: (usePaperless, labelDisplayScheme) => {
74
+ field.onChange(Object.assign(Object.assign({}, field.value), {
75
+ usePaperlessLabel: usePaperless,
76
+ labelDisplayScheme
77
+ }));
78
+ onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(usePaperless, labelDisplayScheme);
79
+ },
61
80
  onSelectServicePoint: onSelectServicePoint,
81
+ paperlessDisplaySchemes: option.paperlessDisplaySchemes,
82
+ paperlessLabelChecked: field.value.usePaperlessLabel,
62
83
  rateDetails: option.rateDetails,
63
84
  selected: option.rateId === field.value.rateId,
64
85
  selectedRateCost: selectedRateCost,
@@ -4,12 +4,12 @@ import { usStateCodes, postalCodeRegex, addressNameRegex } from '../../../consta
4
4
  import { extendZod } from '../../../extensions/zod.js';
5
5
 
6
6
  extendZod();
7
- const refineName = n => n.match(/^[a-zA-Z']/);
8
7
  const refineNameStrict = n => n.match(addressNameRegex);
9
8
  const shipToAddressSchema = addressSchema.refine(schema => {
10
- return refineName(schema.name);
9
+ // KEEP THIS STRICT, USPS REQUIRES 2 CHARACTERS FOR FIRST AND LAST NAME
10
+ return refineNameStrict(schema.name);
11
11
  }, {
12
- message: "schemaErrors.invalidAddressName",
12
+ message: "schemaErrors.invalidAddressNameStrict",
13
13
  path: ["name"]
14
14
  }).refine(schema => !schema.phone || isValidPhoneNumber(schema.phone, schema.countryCode), {
15
15
  message: "schemaErrors.notAValidPhoneNumber",
@@ -1,4 +1,5 @@
1
- import { jsx, jsxs } from '@emotion/react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
2
+ import { useToggle } from '../../../hooks/use-toggle.js';
2
3
  import { Grid, GridChild, Typography, Button, ButtonVariant, ButtonColor } from '@shipengine/giger';
3
4
  import { formLogger } from '../../../utilities/form-logger.js';
4
5
  import { validationResolver } from '../../../utilities/validation.js';
@@ -8,19 +9,38 @@ import { BillingFields } from '../wallet-form/billing-fields.js';
8
9
  import { styles } from './edit-billing-form.styles.js';
9
10
  import { getWalletSchema } from '../wallet-form/wallet-schema.js';
10
11
  import { AddressFields } from '../address-form/address-fields.js';
12
+ import { AddressDisplay } from '../../address-display/address-display.js';
13
+ import { LinkAction } from '../../link-action/link-action.js';
11
14
  import { ButtonGroup } from '../../button-group/button-group.js';
12
15
  import { SubmitButton } from '../../field/submit-button/submit-button.js';
13
16
 
14
17
  const EditBillingForm = ({
15
18
  onCancel,
16
19
  onSubmit,
17
- isLoading
20
+ isLoading,
21
+ billingInfo
18
22
  }) => {
23
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
19
24
  const {
20
25
  t
21
26
  } = useTranslation();
27
+ const [editBillingInfo, toggleEditBillingInfo] = useToggle(false);
22
28
  const form = useForm({
23
- resolver: validationResolver(getWalletSchema("emailRequired", "blackboxOptional"), ["creditCard"])
29
+ resolver: validationResolver(getWalletSchema("emailRequired", "blackboxOptional"), ["creditCard"]),
30
+ defaultValues: {
31
+ address: {
32
+ name: (_a = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.fullName) !== null && _a !== void 0 ? _a : "",
33
+ companyName: (_b = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.company) !== null && _b !== void 0 ? _b : "",
34
+ addressLine1: (_c = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.addressLine1) !== null && _c !== void 0 ? _c : "",
35
+ addressLine2: (_d = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.addressLine2) !== null && _d !== void 0 ? _d : "",
36
+ cityLocality: (_e = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.cityLocality) !== null && _e !== void 0 ? _e : "",
37
+ stateProvince: (_f = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.stateProvince) !== null && _f !== void 0 ? _f : "",
38
+ postalCode: (_g = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.postalCode) !== null && _g !== void 0 ? _g : "",
39
+ countryCode: billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.countryCode,
40
+ email: (_h = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.email) !== null && _h !== void 0 ? _h : "",
41
+ phone: (_j = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.phone) !== null && _j !== void 0 ? _j : ""
42
+ }
43
+ }
24
44
  });
25
45
  const handleSubmit = form.handleSubmit(values => {
26
46
  const {
@@ -57,14 +77,47 @@ const EditBillingForm = ({
57
77
  variant: "subtitle1",
58
78
  children: t("register-wallet:settings.billing.subtitleBilling")
59
79
  })
60
- }), jsx(GridChild, {
80
+ }), billingInfo && !editBillingInfo && jsxs(Fragment, {
81
+ children: [jsx(GridChild, {
82
+ colSpan: 9,
83
+ children: jsx(AddressDisplay, {
84
+ address: Object.assign(Object.assign({}, billingInfo), {
85
+ name: billingInfo.fullName,
86
+ companyName: billingInfo.company
87
+ })
88
+ })
89
+ }), jsx(GridChild, {
90
+ colSpan: 3,
91
+ css: {
92
+ textAlign: "right"
93
+ },
94
+ children: jsx(LinkAction, {
95
+ css: {
96
+ alignSelf: "end"
97
+ },
98
+ onClick: () => {
99
+ toggleEditBillingInfo(true);
100
+ form.reset({
101
+ address: Object.assign(Object.assign({}, billingInfo), {
102
+ name: billingInfo.fullName,
103
+ companyName: billingInfo.company,
104
+ countryCode: billingInfo.countryCode
105
+ })
106
+ }, {
107
+ keepDirtyValues: true
108
+ });
109
+ },
110
+ title: t("actions.edit")
111
+ })
112
+ })]
113
+ }), !billingInfo || editBillingInfo ? jsx(GridChild, {
61
114
  colSpan: 12,
62
115
  children: jsx(AddressFields, {
63
116
  form: form,
64
117
  formatFieldName: fieldName => `address.${fieldName}`,
65
118
  optionalFields: ["addressLine2"]
66
119
  })
67
- }), jsx(GridChild, {
120
+ }) : null, jsx(GridChild, {
68
121
  colSpan: 12,
69
122
  children: jsxs(ButtonGroup, {
70
123
  justify: "end",
@@ -0,0 +1,72 @@
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
+ import { Icon, Typography } from '@shipengine/giger';
3
+ import { IconNames } from '@shipengine/giger-theme';
4
+ import { useState, useRef, useEffect } from 'react';
5
+ import SvgReload from '../../../assets/reload.svg.js';
6
+ import { styles } from './error-banner.styles.js';
7
+ import { Label } from '../../history/history-card/label/label.js';
8
+ import { LinkAction } from '../../link-action/link-action.js';
9
+
10
+ // This component is a temporary solution to handle error display, design is working to improve more error patterns to display
11
+ const ErrorBanner = ({
12
+ labelText,
13
+ linkTitle,
14
+ onClick,
15
+ showReloadIcon,
16
+ duration,
17
+ onDurationEnd
18
+ }) => {
19
+ const [isVisible, setIsVisible] = useState(true);
20
+ const timerRef = useRef(null);
21
+ // Set up the timer when the component mounts or duration changes
22
+ useEffect(() => {
23
+ if (duration && duration > 0) {
24
+ // Clear any existing timer
25
+ if (timerRef.current) clearTimeout(timerRef.current);
26
+ // Set up a new timer to hide the component after the specified duration
27
+ timerRef.current = setTimeout(() => {
28
+ setIsVisible(false);
29
+ // Call the onDurationEnd callback if provided
30
+ if (onDurationEnd) {
31
+ onDurationEnd();
32
+ }
33
+ }, duration);
34
+ }
35
+ // Clean up the timer when the component unmounts or duration changes
36
+ return () => {
37
+ if (timerRef.current) clearTimeout(timerRef.current);
38
+ };
39
+ }, [duration, onDurationEnd]);
40
+ if (!isVisible) return null;
41
+ return jsxs("div", {
42
+ css: styles.errorContainer,
43
+ children: [showReloadIcon && jsx(SvgReload, {
44
+ height: 24,
45
+ width: 24
46
+ }), linkTitle && !labelText && !onClick && jsxs("div", {
47
+ css: styles.errorContent,
48
+ children: [jsx(Icon, {
49
+ name: IconNames.ALERT
50
+ }), jsx(Typography, {
51
+ component: "p",
52
+ variant: "body2",
53
+ children: linkTitle
54
+ })]
55
+ }), linkTitle && labelText && onClick && jsx(Label, {
56
+ spacing: 0,
57
+ text: labelText !== null && labelText !== void 0 ? labelText : "",
58
+ textProps: {
59
+ css: styles.errorHeading
60
+ },
61
+ variant: "subtitle",
62
+ children: jsx(LinkAction, {
63
+ css: styles.errorCTA,
64
+ isBold: false,
65
+ onClick: onClick,
66
+ title: linkTitle
67
+ })
68
+ })]
69
+ });
70
+ };
71
+
72
+ export { ErrorBanner };
@@ -1,13 +1,11 @@
1
- import { createStyles, scopeTheme } from '../../utilities/styles.js';
1
+ import { createStyles, scopeTheme } from '../../../utilities/styles.js';
2
2
 
3
3
  const styles = createStyles({
4
4
  errorContainer: theme => ({
5
5
  alignItems: "center",
6
- backgroundColor: scopeTheme(theme).palette.gray.ultraLight,
6
+ backgroundColor: scopeTheme(theme).palette.error.light,
7
7
  display: "flex",
8
8
  flexDirection: "column",
9
- paddingBottom: scopeTheme(theme).spacing(2),
10
- paddingTop: scopeTheme(theme).spacing(2),
11
9
  rowGap: scopeTheme(theme).spacing(1)
12
10
  }),
13
11
  errorCTA: theme => ({
@@ -17,6 +15,12 @@ const styles = createStyles({
17
15
  }),
18
16
  errorHeading: theme => ({
19
17
  fontSize: scopeTheme(theme).typography.fontSize.S
18
+ }),
19
+ errorContent: theme => ({
20
+ display: "flex",
21
+ alignItems: "center",
22
+ gap: scopeTheme(theme).spacing(),
23
+ color: scopeTheme(theme).palette.error.main
20
24
  })
21
25
  });
22
26
 
@@ -0,0 +1 @@
1
+ export { ErrorBanner } from './error-banner.js';
@@ -1,8 +1,13 @@
1
- import { jsx, jsxs } from '@emotion/react/jsx-runtime';
2
- import { TableRow, TableBodyCell, Skeleton, SkeletonVariant, SkeletonAnimation, Table, TableBody, Checkbox, TableHeader, TableHeaderRow, TableHeaderCell, TableFooter } from '@shipengine/giger';
1
+ import { jsx, jsxs, Fragment } from '@emotion/react/jsx-runtime';
2
+ import { TableRow, TableBodyCell, Skeleton, SkeletonVariant, SkeletonAnimation, Button, ButtonVariant, IconTooltip, IconSize, Icon, Table, TableBody, Checkbox, TableHeader, TableHeaderRow, TableHeaderCell, TableFooter } from '@shipengine/giger';
3
+ import { IconNames } from '@shipengine/giger-theme';
3
4
  import { useState, useMemo, useCallback } from 'react';
5
+ import { useTranslation } from 'react-i18next';
4
6
  import { styles } from './grid-controller.styles.js';
7
+ import { ErrorBanner } from './error-banner/error-banner.js';
5
8
 
9
+ const LIMIT_GRID_ITEMS_EXPORT = 10000;
10
+ const ERROR_DISPLAY_DURATION = 7000;
6
11
  /**
7
12
  * @internal
8
13
  *
@@ -20,10 +25,23 @@ const GridController = ({
20
25
  isLoading = false,
21
26
  useCheckboxes = false,
22
27
  filters,
23
- emptyContent
28
+ emptyContent,
29
+ showExportCSV = false,
30
+ onClickExportCSV,
31
+ totalAmountGridItems,
32
+ hasTrackingStatusFilter,
33
+ hasExportCSVError = false,
34
+ isExportCSVLoading = false,
35
+ onExportErrorDurationEnd
24
36
  }) => {
25
37
  var _a, _b, _c;
26
38
  const [isChecked, setIsChecked] = useState((_a = data === null || data === void 0 ? void 0 : data.map(() => false)) !== null && _a !== void 0 ? _a : []);
39
+ const {
40
+ t
41
+ } = useTranslation(["common", "grid-controller"]);
42
+ const dataAvailable = !!data.length;
43
+ const isItemsOverExportLimit = !!((totalAmountGridItems !== null && totalAmountGridItems !== void 0 ? totalAmountGridItems : 0) > LIMIT_GRID_ITEMS_EXPORT);
44
+ const isDisableExportButton = isItemsOverExportLimit || !dataAvailable;
27
45
  const columnHeaderContents = useMemo(() => columns.map(column => column.headerContent), [columns]);
28
46
  const loadingRows = useMemo(() => {
29
47
  const items = [];
@@ -63,8 +81,36 @@ const GridController = ({
63
81
  css: styles.wrapper,
64
82
  children: [filters && jsx("div", {
65
83
  css: styles.filters,
66
- children: filters
67
- }), data.length === 0 && emptyContent ? emptyContent : jsx(Table, {
84
+ children: jsxs(Fragment, {
85
+ children: [filters, showExportCSV && !hasTrackingStatusFilter && jsxs(Button, {
86
+ bold: false,
87
+ css: styles.button,
88
+ disabled: isItemsOverExportLimit || !dataAvailable || hasExportCSVError,
89
+ isLoading: isExportCSVLoading && !isDisableExportButton,
90
+ onClick: onClickExportCSV,
91
+ type: "button",
92
+ variant: ButtonVariant.FILLED,
93
+ children: [isItemsOverExportLimit ? jsx(IconTooltip, {
94
+ css: styles.iconTooltip,
95
+ icon: IconNames.DOWNLOAD,
96
+ size: IconSize.SIZE_MEDIUM,
97
+ children: jsx("div", {
98
+ children: t("grid-controller:showExportCSV.limit-error", {
99
+ LIMIT_GRID_ITEMS_EXPORT: new Intl.NumberFormat().format(LIMIT_GRID_ITEMS_EXPORT)
100
+ })
101
+ })
102
+ }) : jsx(Icon, {
103
+ css: styles.iconTooltip,
104
+ name: IconNames.UPLOAD,
105
+ size: IconSize.SIZE_MEDIUM
106
+ }), t("grid-controller:showExportCSV.button")]
107
+ })]
108
+ })
109
+ }), hasExportCSVError && !isDisableExportButton && jsx(ErrorBanner, {
110
+ duration: ERROR_DISPLAY_DURATION,
111
+ linkTitle: t("grid-controller:showExportCSV.generic-error-message"),
112
+ onDurationEnd: onExportErrorDurationEnd
113
+ }), !dataAvailable && emptyContent ? emptyContent : jsx(Table, {
68
114
  "data-testid": "grid",
69
115
  footer: footerContent && !isLoading && jsx(TableFooter, {
70
116
  css: styles.tableFooter,
@@ -5,10 +5,17 @@ const styles = createStyles({
5
5
  width: scopeTheme(theme).spacing(6)
6
6
  }),
7
7
  filters: theme => ({
8
+ display: "flex",
8
9
  backgroundColor: scopeTheme(theme).palette.white,
9
10
  borderBottom: `1px solid ${scopeTheme(theme).palette.gray[200]}`,
10
11
  padding: scopeTheme(theme).spacing()
11
12
  }),
13
+ button: () => ({
14
+ marginLeft: "auto"
15
+ }),
16
+ iconTooltip: theme => ({
17
+ marginRight: scopeTheme(theme).spacing()
18
+ }),
12
19
  skeletonTableRow: () => ({
13
20
  height: "68px"
14
21
  }),
@@ -28,7 +35,10 @@ const styles = createStyles({
28
35
  wrapper: theme => Object.assign({
29
36
  height: "auto",
30
37
  overflow: "hidden"
31
- }, scopeTheme(theme).getComponentOverride("Table"))
38
+ }, scopeTheme(theme).getComponentOverride("Table")),
39
+ filtersWrapper: () => ({
40
+ display: "flex"
41
+ })
32
42
  });
33
43
 
34
44
  export { styles };
@@ -6,8 +6,8 @@ import { useMemo } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import SvgFunding from '../../../assets/funding.svg.js';
8
8
  import { styles } from './history-card.styles.js';
9
- import { Label } from './label/label.js';
10
9
  import { useElements } from '../../../elements-provider/elements-context-provider.js';
10
+ import { Label } from './label/label.js';
11
11
 
12
12
  const HistoryCard = ({
13
13
  transaction,
@@ -29,7 +29,6 @@ import { Spacer } from '../../spacer/spacer.js';
29
29
  // </div>
30
30
  // );
31
31
  //
32
- // const ErrorState = () => <ErrorDisplay />;
33
32
  //
34
33
  // // replace type call with its se version - lmnt-936
35
34
  // const SuccessState = ({ adjustment }: { adjustment: WalletAdjustment }) => {
@@ -64,7 +64,7 @@ const ServiceCardHeader = ({
64
64
  children: line1
65
65
  }), line2 && jsx(Typography, {
66
66
  children: line2
67
- }), line3 && jsx(Typography, {
67
+ }), line3 && jsx("div", {
68
68
  children: line3
69
69
  })]
70
70
  }), jsx("div", {
@@ -79,15 +79,15 @@ const ServiceCardHeader = ({
79
79
  };
80
80
  const ServiceCardFooter = ({
81
81
  children,
82
- messages
82
+ messages = []
83
83
  }) => {
84
84
  return jsxs("div", {
85
85
  "data-testid": "service-card-footer",
86
86
  children: [jsx(Divider, {
87
87
  css: styles.divider
88
88
  }), jsxs("section", {
89
- css: styles.footer,
90
- children: [messages && jsx("ul", {
89
+ css: styles.footerStyles,
90
+ children: [messages.length > 0 && jsx("ul", {
91
91
  css: [styles.footerList, messages.length > 1 && styles.footerListWithMultipleMessages],
92
92
  children: messages.map((m, index) => jsxs("li", {
93
93
  css: styles.footerListItem,
@@ -14,8 +14,11 @@ const styles = createStyles({
14
14
  opacity: 0.3,
15
15
  width: `calc(100% - ${scopeTheme(theme).spacing(4)}px)`
16
16
  }),
17
- footer: theme => ({
18
- padding: scopeTheme(theme).spacing(2)
17
+ footerStyles: theme => ({
18
+ padding: scopeTheme(theme).spacing(2),
19
+ display: "flex",
20
+ flexDirection: "column",
21
+ gap: scopeTheme(theme).spacing(2)
19
22
  }),
20
23
  footerList: {
21
24
  listStyle: "none"
@@ -1,17 +1,9 @@
1
1
  import { jsxs, jsx, Fragment } from '@emotion/react/jsx-runtime';
2
- import { Icon, IconSize, Typography, Link } from '@shipengine/giger';
3
- import { IconNames } from '@shipengine/giger-theme';
4
- import { useState, useEffect } from 'react';
2
+ import { Typography, Link } from '@shipengine/giger';
5
3
  import { useTranslation } from 'react-i18next';
6
4
  import { OperatingHoursDisplay } from './operating-hours.js';
7
5
  import { styles } from './service-point-display.styles.js';
8
6
 
9
- /* https://auctane.atlassian.net/browse/ENGINE-7329
10
- * For iteration one we would hardcode services for which it will be available (in the future this data will be in the registry. We will change hardcoding then)
11
- * carriersWithPaperless and servicesWithPaperless are hardcoded for iteration one
12
- */
13
- const carriersWithPaperless = "hermes";
14
- const servicesWithPaperless = ["hermes_domestic_parcelshop_dropoff", "hermes_domestic_parcelshop_dropoff_next_day", "hermes_postable", "hermes_postable_next_day"];
15
7
  const formatDistance = meters => {
16
8
  return meters < 1000 ? "< 1 km" : `${parseFloat((meters / 1000).toFixed(1))} km`;
17
9
  };
@@ -25,36 +17,9 @@ const ServicePointDisplay = ({
25
17
  const {
26
18
  t
27
19
  } = useTranslation("purchase-label");
28
- const [isFilteredServicesWithPaperless, setIsFilteredServicesWithPaperless] = useState(false);
29
- /* https://auctane.atlassian.net/browse/ENGINE-7329
30
- * For iteration one we would hardcode services for which it will be available (in the future this data will be in the registry. We will change hardcoding then)
31
- */
32
- useEffect(() => {
33
- if (carriersWithPaperless === servicePoint.carrierCode) {
34
- const filteredServicesWithPaperless = servicePoint.serviceCodes.map(serviceCode => {
35
- return servicesWithPaperless.filter(service => service === serviceCode);
36
- }).length > 0;
37
- setIsFilteredServicesWithPaperless(filteredServicesWithPaperless);
38
- }
39
- }, [servicePoint.carrierCode, servicePoint.serviceCodes]);
40
20
  return jsxs("div", {
41
21
  css: styles.container,
42
- children: [isFilteredServicesWithPaperless && jsxs("section", {
43
- css: styles.paperlessWrapper,
44
- children: [jsx(Icon, {
45
- css: styles.paperlessIcon,
46
- name: IconNames.PRINTER,
47
- size: IconSize.SIZE_MEDIUM
48
- }), jsx(Icon, {
49
- css: styles.paperlessIcon,
50
- name: IconNames.SCAN_QR,
51
- size: IconSize.SIZE_MEDIUM
52
- }), jsx(Typography, {
53
- css: styles.paperlessText,
54
- variant: "small",
55
- children: t("servicePoints.paperless")
56
- })]
57
- }), jsx("div", {
22
+ children: [jsx("div", {
58
23
  css: styles.getSelectedStyles(),
59
24
  children: jsx(Typography, {
60
25
  bold: true,
@@ -17,18 +17,6 @@ const styles = createStyles({
17
17
  gap: scopeTheme(theme).spacing(1),
18
18
  justifyContent: "space-between"
19
19
  }),
20
- paperlessIcon: theme => ({
21
- color: scopeTheme(theme).palette.gray[600],
22
- paddingRight: "4px"
23
- }),
24
- paperlessText: theme => ({
25
- color: scopeTheme(theme).palette.gray[600],
26
- paddingLeft: scopeTheme(theme).spacing(0.5)
27
- }),
28
- paperlessWrapper: () => ({
29
- display: "flex",
30
- marginBottom: "12px"
31
- }),
32
20
  selectButton: theme => ({
33
21
  backgroundColor: scopeTheme(theme).palette.primary.main,
34
22
  borderRadius: scopeTheme(theme).borderRadius.S,
@@ -0,0 +1 @@
1
+ export { ShipmentNotFoundError } from './shipment-not-found-error.js';
@@ -0,0 +1,38 @@
1
+ import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
+ import { Icon, IconSize, Button } from '@shipengine/giger';
3
+ import { IconNames } from '@shipengine/giger-theme';
4
+ import { useTranslation } from 'react-i18next';
5
+ import { styles } from './shipment-not-found-error.styles.js';
6
+
7
+ const ShipmentNotFoundError = ({
8
+ shipmentId,
9
+ onCreateNewShipment
10
+ }) => {
11
+ const {
12
+ t
13
+ } = useTranslation(["common", "purchase-label"]);
14
+ return jsxs("div", {
15
+ css: styles.container,
16
+ children: [jsx("div", {
17
+ css: styles.iconContainer,
18
+ children: jsx(Icon, {
19
+ name: IconNames.CANCEL,
20
+ size: IconSize.SIZE_LARGE
21
+ })
22
+ }), jsx("div", {
23
+ css: styles.message,
24
+ children: t("common:errorMessages.shipmentNotFound", {
25
+ id: shipmentId
26
+ })
27
+ }), jsx(Button, {
28
+ "data-testid": "create-new-shipment",
29
+ onClick: () => {
30
+ void (onCreateNewShipment === null || onCreateNewShipment === void 0 ? void 0 : onCreateNewShipment());
31
+ },
32
+ type: "button",
33
+ children: t("purchase-label:actions.createNewShipment")
34
+ })]
35
+ });
36
+ };
37
+
38
+ export { ShipmentNotFoundError };
@@ -0,0 +1,22 @@
1
+ import { createStyles, scopeTheme } from '../../utilities/styles.js';
2
+
3
+ const styles = createStyles({
4
+ container: {
5
+ alignItems: "center",
6
+ display: "flex",
7
+ flexDirection: "column",
8
+ height: "100%",
9
+ justifyContent: "center",
10
+ textAlign: "center",
11
+ width: "100%"
12
+ },
13
+ iconContainer: theme => ({
14
+ color: scopeTheme(theme).palette.error.main,
15
+ marginBottom: scopeTheme(theme).spacing(2)
16
+ }),
17
+ message: theme => ({
18
+ marginBottom: scopeTheme(theme).spacing(2)
19
+ })
20
+ });
21
+
22
+ export { styles };
@@ -1,12 +1,15 @@
1
1
  import { jsx } from '@emotion/react/jsx-runtime';
2
2
  import { useTranslation } from 'react-i18next';
3
+ import { ShipmentNotFoundError } from '../shipment-not-found-error/shipment-not-found-error.js';
3
4
  import { Loader } from '../loader/loader.js';
4
5
 
5
6
  const SuspendPurchase = ({
6
7
  children,
7
8
  errors,
8
9
  isLoading,
9
- data
10
+ data,
11
+ onCreateNewShipment,
12
+ shipmentId
10
13
  }) => {
11
14
  const {
12
15
  t
@@ -15,7 +18,7 @@ const SuspendPurchase = ({
15
18
  message: t("loading.shipment")
16
19
  });
17
20
  if (errors) {
18
- errors.forEach(error => {
21
+ for (const error of errors) {
19
22
  switch (error.message) {
20
23
  case "no_carriers":
21
24
  throw new Error(t("common:errorMessages.incompleteLabelPurchaseRequirements", {
@@ -31,8 +34,13 @@ const SuspendPurchase = ({
31
34
  }));
32
35
  case "label_purchased":
33
36
  throw new Error(t("common:errorMessages.labelHasBeenPurchased"));
37
+ case "shipment_not_found":
38
+ return jsx(ShipmentNotFoundError, {
39
+ onCreateNewShipment: onCreateNewShipment,
40
+ shipmentId: shipmentId
41
+ });
34
42
  }
35
- });
43
+ }
36
44
  throw new Error(errors.map(e => e.message).join(", "));
37
45
  }
38
46
  if (!data) throw new Error("errorMessages.unableToLoad.shipment");
@@ -0,0 +1 @@
1
+ export { UPSTermsDisclosure } from './ups-terms-disclosure.js';