@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
package/README.md CHANGED
@@ -1,15 +1,196 @@
1
1
  <!-- README for NPM; the one for GitHub is in .github directory. -->
2
2
 
3
- ## Usage
3
+ ## Creating a New Element
4
4
 
5
- Visit [our documentation page](https://www.shipengine.com/docs/elements/elements-guide/) to learn how to get started with ShipEngine Elements.
5
+ ShipEngine Elements is a collection of React components that provide shipping functionality through a standardized interface.
6
+ This guide provides the essential steps for creating new elements in the ShipEngine Elements library.
6
7
 
7
- ## Installation
8
+ ## Element Architecture
8
9
 
9
- ```bash
10
- npm install @shipengine/elements
10
+ Each element is composed of:
11
+
12
+ - **Component**: Your main React component logic
13
+ - **createElement Wrapper**: Provides error boundaries, i18n, and styling
14
+ - **Element Provider**: Manages global state and configuration
15
+
16
+ ## File Structure
17
+
18
+ ```
19
+ libs/elements/src/elements/new-element/
20
+ ├── index.ts # Export file
21
+ ├── new-element.tsx # Main element file
22
+ ├── __stories__/ # Storybook stories
23
+ │ └── new-element.stories.tsx
24
+ └── __tests__/ # Jest tests
25
+ └── new-element.test.tsx
11
26
  ```
12
27
 
28
+ ## Step-by-Step Guide
29
+
30
+ ### 1. Create the Directory Structure
31
+
13
32
  ```bash
14
- yarn add @shipengine/elements
33
+ mkdir -p libs/elements/src/elements/new-element/{__stories__,__tests__}
34
+ ```
35
+
36
+ ### 2. Create the Main Element File
37
+
38
+ **`libs/elements/src/elements/new-element/new-element.tsx`**
39
+
40
+ ```tsx
41
+ import { ErrorFallback } from "@components/error-fallback";
42
+ import { Button, Typography } from "@shipengine/giger";
43
+ import { useTranslation } from "react-i18next";
44
+
45
+ import { createElement } from "../../create-element";
46
+ import { en } from "../../locales";
47
+
48
+ /**
49
+ * Props for the NewElement component
50
+ */
51
+ export type NewElementProps = {
52
+ /**
53
+ * Optional title to display
54
+ */
55
+ title?: string;
56
+
57
+ /**
58
+ * Callback function when action is performed
59
+ */
60
+ onClick?: (value: any) => void;
61
+ };
62
+
63
+ /**
64
+ * # NewElement Component
65
+ *
66
+ * Brief description of what this element does and its purpose.
67
+ */
68
+ export const Component = ({ title = "New Element Title", onClick }: NewElementProps) => {
69
+ const { t } = useTranslation();
70
+
71
+ const handleOnClick = () => {
72
+ const value = { name: "ShipEngine Elements" };
73
+ onClick?.(value);
74
+ };
75
+
76
+ return (
77
+ <div>
78
+ <Typography variant="h2">{title}</Typography>
79
+
80
+ <Typography variant="body1">{t("description")}</Typography>
81
+
82
+ <Button onClick={handleOnClick}>{t("actionButton")}</Button>
83
+ </div>
84
+ );
85
+ };
86
+
87
+ /**
88
+ * # NewElement Element
89
+ *
90
+ * The registered element that can be used directly in applications.
91
+ */
92
+ export const Element = createElement(Component, ErrorFallback, {
93
+ css: {
94
+ height: "100%",
95
+ maxWidth: "800px",
96
+ minWidth: "440px",
97
+ width: "100%",
98
+ },
99
+ resources: { en },
100
+ });
101
+
102
+ export type ElementProps = React.ComponentProps<typeof Element>;
103
+ ```
104
+
105
+ ### 3. Create the Index File
106
+
107
+ **`libs/elements/src/elements/new-element/index.ts`**
108
+
109
+ ```ts
110
+ export * as NewElement from "./new-element";
111
+ export type { NewElementProps } from "./new-element";
112
+ ```
113
+
114
+ ### 4. Add Localization Resources
115
+
116
+ **`libs/elements/src/locales/en/new-element.json`**
117
+
118
+ ```json
119
+ {
120
+ "description": "This is a new Element!",
121
+ "actionButton": "Continue"
122
+ }
123
+ ```
124
+
125
+ ### 5. Create Storybook Stories
126
+
127
+ **`libs/elements/src/elements/new-element/__stories__/new-element.stories.tsx`**
128
+
129
+ ```tsx
130
+ import type { Meta, StoryObj } from "@storybook/react";
131
+
132
+ import { NewElement } from "../new-element";
133
+
134
+ const meta: Meta<typeof NewElement.Element> = {
135
+ title: "Elements/NewElement",
136
+ component: NewElement.Element,
137
+ parameters: {
138
+ layout: "centered",
139
+ },
140
+ tags: ["autodocs"],
141
+ };
142
+
143
+ export default meta;
144
+ type Story = StoryObj<typeof meta>;
145
+
146
+ export const Default: Story = {
147
+ args: {
148
+ title: "Default Example",
149
+ },
150
+ };
151
+
152
+ export const CustomTitle: Story = {
153
+ args: {
154
+ title: "Custom Element Title",
155
+ },
156
+ };
157
+ ```
158
+
159
+ ### 7. Update Package Exports
160
+
161
+ Add your new element to **`libs/elements/package.json`** exports:
162
+
163
+ ```json
164
+ {
165
+ "exports": {
166
+ "./new-element": {
167
+ "source": "./src/elements/new-element/index.ts",
168
+ "import": {
169
+ "types": "./dist/types/elements/new-element/index.d.ts",
170
+ "default": "./dist/esm/elements/new-element/index.js"
171
+ },
172
+ "require": {
173
+ "types": "./dist/types/elements/new-element/index.d.ts",
174
+ "default": "./dist/cjs/elements/new-element/index.cjs"
175
+ }
176
+ }
177
+ }
178
+ }
15
179
  ```
180
+
181
+ ### 8. Update Main Index File
182
+
183
+ Add your element to **`libs/elements/src/index.ts`**:
184
+
185
+ ```ts
186
+ export * from "./elements/new-element";
187
+ ```
188
+
189
+ ## Best Practices
190
+
191
+ - Use TypeScript with proper type definitions
192
+ - Include JSDoc comments where appropriate
193
+ - Write unit tests for functionality
194
+ - Use i18 translation strings for all user-facing text
195
+ - Follow existing code patterns for consistency
196
+ - Test with Storybook during development
@@ -8,14 +8,23 @@ var reactI18next = require('react-i18next');
8
8
  var displayTerm_styles = require('./display-term.styles.cjs');
9
9
 
10
10
  const DisplayTerm = ({
11
- term
11
+ terms
12
12
  }) => {
13
13
  const {
14
14
  t
15
15
  } = reactI18next.useTranslation();
16
- return jsxRuntime.jsx("ul", {
16
+ const {
17
+ links,
18
+ disclosure
19
+ } = terms;
20
+ return jsxRuntime.jsxs("ul", {
17
21
  css: displayTerm_styles.styles.container,
18
- children: term.links.map(({
22
+ children: [disclosure && jsxRuntime.jsx("li", {
23
+ css: {
24
+ listStyle: "none"
25
+ },
26
+ children: disclosure
27
+ }), links.map(({
19
28
  link,
20
29
  title
21
30
  }) => jsxRuntime.jsx("li", {
@@ -33,7 +42,7 @@ const DisplayTerm = ({
33
42
  size: giger.IconSize.SIZE_SMALL
34
43
  })]
35
44
  })
36
- }, title))
45
+ }, title))]
37
46
  });
38
47
  };
39
48
 
@@ -4,41 +4,58 @@ var _tslib = require('../../../_virtual/_tslib.cjs');
4
4
  var jsxRuntime = require('@emotion/react/jsx-runtime');
5
5
  var giger = require('@shipengine/giger');
6
6
  var money = require('../../../utilities/money.cjs');
7
+ var React = require('react');
7
8
  var createFieldController = require('../create-field-controller.cjs');
8
9
  var field_styles = require('../field.styles.cjs');
9
10
 
10
11
  const CreditCardInputController = createFieldController.createFieldController();
11
12
  const transform = {
12
- in: v => v ? money.formatCreditCardNumber(v) : "",
13
+ in: (v, isFocused) => {
14
+ if (!v) return "";
15
+ return isFocused ? money.formatCreditCardNumber(v) : money.maskCreditCardNumber(v);
16
+ },
13
17
  out: event => event.target.value === "" ? null : event.target.value.replace(/\s/g, "")
14
18
  };
15
- const CreditCardInput = fieldProps => jsxRuntime.jsx(CreditCardInputController, Object.assign({}, fieldProps, {
16
- children: _a => {
17
- var {
18
- onChange,
19
- value
20
- } = _a,
21
- creditCardInputProps = _tslib.__rest(_a, ["onChange", "value"]);
22
- return jsxRuntime.jsx("div", {
23
- css: field_styles.styles.overrideStyles,
24
- children: jsxRuntime.jsx(giger.Input, Object.assign({}, creditCardInputProps, {
25
- onChange: e => {
26
- // Amex allows 15 digits, all others allow 16
27
- if (e.target.value.replace(/\s/g, "").length > 16) {
28
- e.preventDefault();
29
- } else {
30
- onChange(transform.out(e));
31
- }
32
- },
33
- onKeyDown: e => {
34
- // Prevent non-numeric characters
35
- if (!/^([0-9]|Backspace|Delete|Enter|Tab)$/i.test(e.key)) e.preventDefault();
36
- },
37
- type: "text",
38
- value: transform.in(value)
39
- }))
40
- });
41
- }
42
- }));
19
+ const CreditCardInput = fieldProps => {
20
+ const [isFocused, setIsFocused] = React.useState(false);
21
+ return jsxRuntime.jsx(CreditCardInputController, Object.assign({}, fieldProps, {
22
+ children: _a => {
23
+ var {
24
+ onChange,
25
+ value
26
+ } = _a,
27
+ creditCardInputProps = _tslib.__rest(_a, ["onChange", "value"]);
28
+ return jsxRuntime.jsx("div", {
29
+ css: field_styles.styles.overrideStyles,
30
+ children: jsxRuntime.jsx(giger.Input, Object.assign({}, creditCardInputProps, {
31
+ onBlur: () => {
32
+ var _a;
33
+ setIsFocused(false);
34
+ (_a = creditCardInputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(creditCardInputProps);
35
+ },
36
+ onChange: e => {
37
+ // Amex allows 15 digits, all others allow 16
38
+ if (e.target.value.replace(/\s/g, "").length > 16) {
39
+ e.preventDefault();
40
+ } else {
41
+ onChange(transform.out(e));
42
+ }
43
+ },
44
+ onFocus: e => {
45
+ var _a;
46
+ setIsFocused(true);
47
+ (_a = creditCardInputProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(creditCardInputProps, e);
48
+ },
49
+ onKeyDown: e => {
50
+ // Prevent non-numeric characters
51
+ if (!/^([0-9]|Backspace|Delete|Enter|Tab)$/i.test(e.key)) e.preventDefault();
52
+ },
53
+ type: "text",
54
+ value: transform.in(value, isFocused)
55
+ }))
56
+ });
57
+ }
58
+ }));
59
+ };
43
60
 
44
61
  exports.CreditCardInput = CreditCardInput;
@@ -84,6 +84,7 @@ const RateCard = ({
84
84
  messages,
85
85
  onClick,
86
86
  onClickAcknowledgement,
87
+ onPaperlessAcknowledgementChange,
87
88
  onSelectServicePoint,
88
89
  otherAmount,
89
90
  rateId,
@@ -101,7 +102,9 @@ const RateCard = ({
101
102
  selectedRateCost,
102
103
  servicePoints: servicePoints$1,
103
104
  mapViewEnabled,
104
- rateDetails
105
+ rateDetails,
106
+ paperlessDisplaySchemes,
107
+ paperlessLabelChecked = false
105
108
  }) => {
106
109
  /* TODO: ENGINE-7366: TODO Remove showVatSettings flag once this is fully in production */
107
110
  const showRateDetails = showVatFeatures && rateDetails && rateDetails.length > 0;
@@ -145,7 +148,8 @@ const RateCard = ({
145
148
  return undefined;
146
149
  }
147
150
  }, [confirmationAmount, insuranceAmount, isPreferredRate, otherAmount, selectedRateCost, shippingAmount, taxAmount]);
148
- const hasFooterData = !!(rateMessages === null || rateMessages === void 0 ? void 0 : rateMessages.length) || requiresAcknowledgement;
151
+ const requiresPaperlessAcknowledgement = paperlessDisplaySchemes === null || paperlessDisplaySchemes === void 0 ? void 0 : paperlessDisplaySchemes.includes("qr_code");
152
+ const hasFooterData = !!(rateMessages === null || rateMessages === void 0 ? void 0 : rateMessages.length) || requiresAcknowledgement || requiresPaperlessAcknowledgement;
149
153
  const costBreakdownCommonProps = {
150
154
  confirmationAmount,
151
155
  insuranceAmount,
@@ -186,6 +190,17 @@ const RateCard = ({
186
190
  serviceInfo: {
187
191
  line1: carrierNickname,
188
192
  line2: getDeliveryDaysLabel(deliveryDays),
193
+ line3: paperlessDisplaySchemes && paperlessDisplaySchemes.length > 0 ? jsxRuntime.jsxs("div", {
194
+ "aria-label": t("purchase-label:paperlessAvailable"),
195
+ css: rateCard_styles.styles.paperlessText,
196
+ children: [jsxRuntime.jsx(giger.Icon, {
197
+ name: gigerTheme.IconNames.SCAN_QR,
198
+ size: giger.IconSize.SIZE_MEDIUM
199
+ }), jsxRuntime.jsx(giger.Typography, {
200
+ variant: "small",
201
+ children: t("purchase-label:paperlessAvailable")
202
+ })]
203
+ }) : undefined,
189
204
  type: serviceType
190
205
  }
191
206
  }), servicePoints$1 && jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -200,16 +215,25 @@ const RateCard = ({
200
215
  rateSelected: selected,
201
216
  servicePoints: servicePoints$1
202
217
  })]
203
- }), selected && hasFooterData && jsxRuntime.jsx(serviceCard.ServiceCardFooter, {
218
+ }), selected && hasFooterData && jsxRuntime.jsxs(serviceCard.ServiceCardFooter, {
204
219
  messages: rateMessages,
205
- children: requiresAcknowledgement && onClickAcknowledgement && jsxRuntime.jsx(giger.Checkbox, {
220
+ children: [requiresAcknowledgement && onClickAcknowledgement && jsxRuntime.jsx(giger.Checkbox, {
206
221
  "aria-required": true,
207
222
  checked: isAcknowledged,
208
223
  css: rateCard_styles.styles.acknowledgment,
209
224
  "data-testid": "rate-acknowledgement",
210
225
  label: rateAcknowledgementMessage ? getPreferredRateAcknowledgementLabel(rateAcknowledgementMessage) : getAcknowledgementLabel(serviceCode, packageType),
211
226
  onChange: e => onClickAcknowledgement(e.target.checked)
212
- })
227
+ }), requiresPaperlessAcknowledgement && jsxRuntime.jsx(giger.Checkbox, {
228
+ "aria-required": true,
229
+ checked: paperlessLabelChecked,
230
+ css: rateCard_styles.styles.acknowledgment,
231
+ "data-testid": "paperless-acknowledgement",
232
+ label: t("purchase-label:usePaperlessLabel"),
233
+ onChange: e => {
234
+ onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(e.target.checked, "qr_code");
235
+ }
236
+ })]
213
237
  })]
214
238
  });
215
239
  };
@@ -5,10 +5,8 @@ var styles$1 = require('../../../../utilities/styles.cjs');
5
5
  const getRateCardFirstLineSize = theme => `${styles$1.scopeTheme(theme).spacing(3.25)}px`;
6
6
  const styles = styles$1.createStyles({
7
7
  acknowledgment: theme => ({
8
- alignItems: "center",
9
8
  color: styles$1.scopeTheme(theme).palette.gray.main,
10
- display: "flex",
11
- paddingTop: styles$1.scopeTheme(theme).spacing(1.5)
9
+ display: "flex"
12
10
  }),
13
11
  divider: theme => ({
14
12
  borderColor: styles$1.scopeTheme(theme).palette.primary.main,
@@ -29,6 +27,13 @@ const styles = styles$1.createStyles({
29
27
  position: "absolute",
30
28
  right: 0,
31
29
  top: 0
30
+ }),
31
+ paperlessText: theme => ({
32
+ display: "flex",
33
+ gap: styles$1.scopeTheme(theme).spacing(0.25),
34
+ paddingTop: styles$1.scopeTheme(theme).spacing(0.5),
35
+ color: styles$1.scopeTheme(theme).palette.gray[600],
36
+ alignItems: "center"
32
37
  })
33
38
  });
34
39
 
@@ -22,12 +22,13 @@ const RateSelect = _a => {
22
22
  nicknameFeature,
23
23
  preferredServiceCodes,
24
24
  onClick,
25
+ onPaperlessAcknowledgementChange,
25
26
  onSelectServicePoint,
26
27
  isLoading,
27
28
  mapViewEnabled,
28
29
  showVatFeatures
29
30
  } = _a,
30
- fieldProps = _tslib.__rest(_a, ["nicknameFeature", "preferredServiceCodes", "onClick", "onSelectServicePoint", "isLoading", "mapViewEnabled", "showVatFeatures"]);
31
+ fieldProps = _tslib.__rest(_a, ["nicknameFeature", "preferredServiceCodes", "onClick", "onPaperlessAcknowledgementChange", "onSelectServicePoint", "isLoading", "mapViewEnabled", "showVatFeatures"]);
31
32
  // The calculated cost of the selected rate
32
33
  const [selectedRateCost, setSelectedRateCost] = React.useState();
33
34
  return jsxRuntime.jsx(RateSelectController, Object.assign({}, fieldProps, {
@@ -50,17 +51,37 @@ const RateSelect = _a => {
50
51
  isPreferredRate: preferredServiceCodes && preferredServiceCodes.includes(option.serviceCode),
51
52
  key: option.rateId,
52
53
  onClick: rateId => {
54
+ var _a;
53
55
  onClick === null || onClick === void 0 ? void 0 : onClick(rateId);
54
- field.onChange({
55
- isAcknowledged: !option.requiresAcknowledgement,
56
- rateId
57
- });
56
+ // if the rate supports "label_and_paperless" display scheme, use it by default
57
+ if ((_a = option.paperlessDisplaySchemes) === null || _a === void 0 ? void 0 : _a.includes("label_and_paperless")) {
58
+ field.onChange({
59
+ usePaperlessLabel: true,
60
+ labelDisplayScheme: "label_and_paperless",
61
+ isAcknowledged: !option.requiresAcknowledgement,
62
+ rateId
63
+ });
64
+ } else {
65
+ field.onChange({
66
+ isAcknowledged: !option.requiresAcknowledgement,
67
+ rateId
68
+ });
69
+ }
58
70
  setSelectedRateCost(rates.getTotalRateAmount(option));
59
71
  },
60
72
  onClickAcknowledgement: isAcknowledged => field.onChange(Object.assign(Object.assign({}, field.value), {
61
73
  isAcknowledged
62
74
  })),
75
+ onPaperlessAcknowledgementChange: (usePaperless, labelDisplayScheme) => {
76
+ field.onChange(Object.assign(Object.assign({}, field.value), {
77
+ usePaperlessLabel: usePaperless,
78
+ labelDisplayScheme
79
+ }));
80
+ onPaperlessAcknowledgementChange === null || onPaperlessAcknowledgementChange === void 0 ? void 0 : onPaperlessAcknowledgementChange(usePaperless, labelDisplayScheme);
81
+ },
63
82
  onSelectServicePoint: onSelectServicePoint,
83
+ paperlessDisplaySchemes: option.paperlessDisplaySchemes,
84
+ paperlessLabelChecked: field.value.usePaperlessLabel,
64
85
  rateDetails: option.rateDetails,
65
86
  selected: option.rateId === field.value.rateId,
66
87
  selectedRateCost: selectedRateCost,
@@ -6,12 +6,12 @@ var address = require('../../../constants/shipengine/address.cjs');
6
6
  var zod = require('../../../extensions/zod.cjs');
7
7
 
8
8
  zod.extendZod();
9
- const refineName = n => n.match(/^[a-zA-Z']/);
10
9
  const refineNameStrict = n => n.match(address.addressNameRegex);
11
10
  const shipToAddressSchema = addressSchema.addressSchema.refine(schema => {
12
- return refineName(schema.name);
11
+ // KEEP THIS STRICT, USPS REQUIRES 2 CHARACTERS FOR FIRST AND LAST NAME
12
+ return refineNameStrict(schema.name);
13
13
  }, {
14
- message: "schemaErrors.invalidAddressName",
14
+ message: "schemaErrors.invalidAddressNameStrict",
15
15
  path: ["name"]
16
16
  }).refine(schema => !schema.phone || min.isValidPhoneNumber(schema.phone, schema.countryCode), {
17
17
  message: "schemaErrors.notAValidPhoneNumber",
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('@emotion/react/jsx-runtime');
4
+ var useToggle = require('../../../hooks/use-toggle.cjs');
4
5
  var giger = require('@shipengine/giger');
5
6
  var formLogger = require('../../../utilities/form-logger.cjs');
6
7
  var validation = require('../../../utilities/validation.cjs');
@@ -10,19 +11,38 @@ var billingFields = require('../wallet-form/billing-fields.cjs');
10
11
  var editBillingForm_styles = require('./edit-billing-form.styles.cjs');
11
12
  var walletSchema = require('../wallet-form/wallet-schema.cjs');
12
13
  var addressFields = require('../address-form/address-fields.cjs');
14
+ var addressDisplay = require('../../address-display/address-display.cjs');
15
+ var linkAction = require('../../link-action/link-action.cjs');
13
16
  var buttonGroup = require('../../button-group/button-group.cjs');
14
17
  var submitButton = require('../../field/submit-button/submit-button.cjs');
15
18
 
16
19
  const EditBillingForm = ({
17
20
  onCancel,
18
21
  onSubmit,
19
- isLoading
22
+ isLoading,
23
+ billingInfo
20
24
  }) => {
25
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
21
26
  const {
22
27
  t
23
28
  } = reactI18next.useTranslation();
29
+ const [editBillingInfo, toggleEditBillingInfo] = useToggle.useToggle(false);
24
30
  const form = reactHookForm.useForm({
25
- resolver: validation.validationResolver(walletSchema.getWalletSchema("emailRequired", "blackboxOptional"), ["creditCard"])
31
+ resolver: validation.validationResolver(walletSchema.getWalletSchema("emailRequired", "blackboxOptional"), ["creditCard"]),
32
+ defaultValues: {
33
+ address: {
34
+ name: (_a = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.fullName) !== null && _a !== void 0 ? _a : "",
35
+ companyName: (_b = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.company) !== null && _b !== void 0 ? _b : "",
36
+ addressLine1: (_c = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.addressLine1) !== null && _c !== void 0 ? _c : "",
37
+ addressLine2: (_d = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.addressLine2) !== null && _d !== void 0 ? _d : "",
38
+ cityLocality: (_e = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.cityLocality) !== null && _e !== void 0 ? _e : "",
39
+ stateProvince: (_f = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.stateProvince) !== null && _f !== void 0 ? _f : "",
40
+ postalCode: (_g = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.postalCode) !== null && _g !== void 0 ? _g : "",
41
+ countryCode: billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.countryCode,
42
+ email: (_h = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.email) !== null && _h !== void 0 ? _h : "",
43
+ phone: (_j = billingInfo === null || billingInfo === void 0 ? void 0 : billingInfo.phone) !== null && _j !== void 0 ? _j : ""
44
+ }
45
+ }
26
46
  });
27
47
  const handleSubmit = form.handleSubmit(values => {
28
48
  const {
@@ -59,14 +79,47 @@ const EditBillingForm = ({
59
79
  variant: "subtitle1",
60
80
  children: t("register-wallet:settings.billing.subtitleBilling")
61
81
  })
62
- }), jsxRuntime.jsx(giger.GridChild, {
82
+ }), billingInfo && !editBillingInfo && jsxRuntime.jsxs(jsxRuntime.Fragment, {
83
+ children: [jsxRuntime.jsx(giger.GridChild, {
84
+ colSpan: 9,
85
+ children: jsxRuntime.jsx(addressDisplay.AddressDisplay, {
86
+ address: Object.assign(Object.assign({}, billingInfo), {
87
+ name: billingInfo.fullName,
88
+ companyName: billingInfo.company
89
+ })
90
+ })
91
+ }), jsxRuntime.jsx(giger.GridChild, {
92
+ colSpan: 3,
93
+ css: {
94
+ textAlign: "right"
95
+ },
96
+ children: jsxRuntime.jsx(linkAction.LinkAction, {
97
+ css: {
98
+ alignSelf: "end"
99
+ },
100
+ onClick: () => {
101
+ toggleEditBillingInfo(true);
102
+ form.reset({
103
+ address: Object.assign(Object.assign({}, billingInfo), {
104
+ name: billingInfo.fullName,
105
+ companyName: billingInfo.company,
106
+ countryCode: billingInfo.countryCode
107
+ })
108
+ }, {
109
+ keepDirtyValues: true
110
+ });
111
+ },
112
+ title: t("actions.edit")
113
+ })
114
+ })]
115
+ }), !billingInfo || editBillingInfo ? jsxRuntime.jsx(giger.GridChild, {
63
116
  colSpan: 12,
64
117
  children: jsxRuntime.jsx(addressFields.AddressFields, {
65
118
  form: form,
66
119
  formatFieldName: fieldName => `address.${fieldName}`,
67
120
  optionalFields: ["addressLine2"]
68
121
  })
69
- }), jsxRuntime.jsx(giger.GridChild, {
122
+ }) : null, jsxRuntime.jsx(giger.GridChild, {
70
123
  colSpan: 12,
71
124
  children: jsxRuntime.jsxs(buttonGroup.ButtonGroup, {
72
125
  justify: "end",
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
4
+ var giger = require('@shipengine/giger');
5
+ var gigerTheme = require('@shipengine/giger-theme');
6
+ var React = require('react');
7
+ var reload = require('../../../assets/reload.svg.cjs');
8
+ var errorBanner_styles = require('./error-banner.styles.cjs');
9
+ var label = require('../../history/history-card/label/label.cjs');
10
+ var linkAction = require('../../link-action/link-action.cjs');
11
+
12
+ // This component is a temporary solution to handle error display, design is working to improve more error patterns to display
13
+ const ErrorBanner = ({
14
+ labelText,
15
+ linkTitle,
16
+ onClick,
17
+ showReloadIcon,
18
+ duration,
19
+ onDurationEnd
20
+ }) => {
21
+ const [isVisible, setIsVisible] = React.useState(true);
22
+ const timerRef = React.useRef(null);
23
+ // Set up the timer when the component mounts or duration changes
24
+ React.useEffect(() => {
25
+ if (duration && duration > 0) {
26
+ // Clear any existing timer
27
+ if (timerRef.current) clearTimeout(timerRef.current);
28
+ // Set up a new timer to hide the component after the specified duration
29
+ timerRef.current = setTimeout(() => {
30
+ setIsVisible(false);
31
+ // Call the onDurationEnd callback if provided
32
+ if (onDurationEnd) {
33
+ onDurationEnd();
34
+ }
35
+ }, duration);
36
+ }
37
+ // Clean up the timer when the component unmounts or duration changes
38
+ return () => {
39
+ if (timerRef.current) clearTimeout(timerRef.current);
40
+ };
41
+ }, [duration, onDurationEnd]);
42
+ if (!isVisible) return null;
43
+ return jsxRuntime.jsxs("div", {
44
+ css: errorBanner_styles.styles.errorContainer,
45
+ children: [showReloadIcon && jsxRuntime.jsx(reload, {
46
+ height: 24,
47
+ width: 24
48
+ }), linkTitle && !labelText && !onClick && jsxRuntime.jsxs("div", {
49
+ css: errorBanner_styles.styles.errorContent,
50
+ children: [jsxRuntime.jsx(giger.Icon, {
51
+ name: gigerTheme.IconNames.ALERT
52
+ }), jsxRuntime.jsx(giger.Typography, {
53
+ component: "p",
54
+ variant: "body2",
55
+ children: linkTitle
56
+ })]
57
+ }), linkTitle && labelText && onClick && jsxRuntime.jsx(label.Label, {
58
+ spacing: 0,
59
+ text: labelText !== null && labelText !== void 0 ? labelText : "",
60
+ textProps: {
61
+ css: errorBanner_styles.styles.errorHeading
62
+ },
63
+ variant: "subtitle",
64
+ children: jsxRuntime.jsx(linkAction.LinkAction, {
65
+ css: errorBanner_styles.styles.errorCTA,
66
+ isBold: false,
67
+ onClick: onClick,
68
+ title: linkTitle
69
+ })
70
+ })]
71
+ });
72
+ };
73
+
74
+ exports.ErrorBanner = ErrorBanner;