@zonos/elements 1.3.80 → 1.3.82

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 (247) hide show
  1. package/dist/cjs/{CheckoutConfig-2fef694e.js → CheckoutConfig-850071ae.js} +1 -1
  2. package/dist/cjs/{cart-977c9d4c.js → cart-ba540c8e.js} +353 -69
  3. package/dist/cjs/{createCustomEvent-2b19361e.js → createCustomEvent-1fd24ad8.js} +2 -4
  4. package/dist/cjs/{handleFetch-661a8225.js → handleFetch-45e76490.js} +29 -1
  5. package/dist/cjs/index.cjs.js +9 -9
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/{paypal-3008c89e.js → paypal-6bbe55a7.js} +2 -2
  8. package/dist/cjs/zonos-address_8.cjs.entry.js +12 -12
  9. package/dist/cjs/zonos-badge.cjs.entry.js +44 -0
  10. package/dist/cjs/zonos-button_3.cjs.entry.js +3 -3
  11. package/dist/cjs/zonos-card.cjs.entry.js +4 -4
  12. package/dist/cjs/{zonos-badge_13.cjs.entry.js → zonos-cart-items_12.cjs.entry.js} +55 -70
  13. package/dist/cjs/zonos-checkout.cjs.entry.js +18 -6
  14. package/dist/cjs/zonos-component.cjs.entry.js +1 -1
  15. package/dist/cjs/zonos-controller.cjs.entry.js +3 -3
  16. package/dist/cjs/zonos-country-flag.cjs.entry.js +2 -2
  17. package/dist/cjs/zonos-country-select_4.cjs.entry.js +10 -10
  18. package/dist/cjs/zonos-elements.cjs.js +1 -1
  19. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +6 -6
  20. package/dist/cjs/zonos-hello.cjs.entry.js +2 -2
  21. package/dist/cjs/zonos-input.cjs.entry.js +4 -4
  22. package/dist/cjs/zonos-language-select_2.cjs.entry.js +6 -6
  23. package/dist/cjs/zonos-link.cjs.entry.js +1 -1
  24. package/dist/cjs/zonos-logo.cjs.entry.js +2 -2
  25. package/dist/cjs/zonos-notification_3.cjs.entry.js +5 -5
  26. package/dist/cjs/zonos-tooltip.cjs.entry.js +2 -2
  27. package/dist/cjs/zonos-v-stack.cjs.entry.js +2 -2
  28. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.js +1 -1
  29. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.css +10 -1
  30. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +73 -1
  31. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.js +5 -3
  32. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +15 -2
  33. package/dist/collection/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.js +8 -9
  34. package/dist/collection/components/common/zonos-badge/assets/RemoveLineIcon.svg +3 -0
  35. package/dist/collection/components/common/zonos-badge/zonos-badge.css +3 -0
  36. package/dist/collection/components/common/zonos-badge/zonos-badge.js +43 -3
  37. package/dist/collection/components/common/zonos-button/zonos-button.js +3 -3
  38. package/dist/collection/components/common/zonos-card/zonos-card.js +4 -4
  39. package/dist/collection/components/common/zonos-checkbox/zonos-checkbox.js +3 -3
  40. package/dist/collection/components/common/zonos-checkout-progress-tabs/zonos-checkout-progress-tabs.js +8 -7
  41. package/dist/collection/components/common/zonos-collapse/zonos-collapse.js +2 -2
  42. package/dist/collection/components/common/zonos-confirm-dialog/zonos-confirm-dialog.js +3 -3
  43. package/dist/collection/components/common/zonos-country-select/zonos-country-select.js +2 -2
  44. package/dist/collection/components/common/zonos-custom-message/zonos-custom-message.js +2 -2
  45. package/dist/collection/components/common/zonos-dialog/zonos-dialog.js +3 -3
  46. package/dist/collection/components/common/zonos-input/zonos-input.js +4 -4
  47. package/dist/collection/components/common/zonos-language-select/zonos-language-select.js +2 -2
  48. package/dist/collection/components/common/zonos-link/zonos-link.js +1 -1
  49. package/dist/collection/components/common/zonos-logo/zonos-logo.js +2 -2
  50. package/dist/collection/components/common/zonos-rest-state/zonos-rest-state.js +3 -3
  51. package/dist/collection/components/common/zonos-select-dialog-header/zonos-select-dialog-header.js +2 -2
  52. package/dist/collection/components/common/zonos-tooltip/zonos-tooltip.js +2 -2
  53. package/dist/collection/components/common/zonos-v-stack/zonos-v-stack.js +2 -2
  54. package/dist/collection/components/common/zonos-virtual-scroll/zonos-virtual-scroll.js +2 -2
  55. package/dist/collection/components/component-template/zonos-component/zonos-component.js +1 -1
  56. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.js +2 -2
  57. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.js +4 -4
  58. package/dist/collection/components/main/zonos-controller.js +1 -1
  59. package/dist/collection/components/paypal/zonos-paypal-payment.js +1 -1
  60. package/dist/collection/components/store/checkout/cart.js +17 -1
  61. package/dist/collection/components/store/checkout/stripe.js +120 -66
  62. package/dist/collection/components/store/hello/localization.js +2 -3
  63. package/dist/collection/components/store/translationStore/strings.arabic.js +9 -0
  64. package/dist/collection/components/store/translationStore/strings.base.js +9 -0
  65. package/dist/collection/components/store/translationStore/strings.chinese.js +9 -0
  66. package/dist/collection/components/store/translationStore/strings.danish.js +9 -0
  67. package/dist/collection/components/store/translationStore/strings.dutch.js +9 -0
  68. package/dist/collection/components/store/translationStore/strings.french.js +9 -0
  69. package/dist/collection/components/store/translationStore/strings.german.js +9 -0
  70. package/dist/collection/components/store/translationStore/strings.hebrew.js +9 -0
  71. package/dist/collection/components/store/translationStore/strings.indonesian.js +9 -0
  72. package/dist/collection/components/store/translationStore/strings.italian.js +9 -0
  73. package/dist/collection/components/store/translationStore/strings.japanese.js +9 -0
  74. package/dist/collection/components/store/translationStore/strings.korean.js +9 -0
  75. package/dist/collection/components/store/translationStore/strings.norwegian.js +9 -0
  76. package/dist/collection/components/store/translationStore/strings.polish.js +9 -0
  77. package/dist/collection/components/store/translationStore/strings.portuguese.js +9 -0
  78. package/dist/collection/components/store/translationStore/strings.russian.js +9 -0
  79. package/dist/collection/components/store/translationStore/strings.spanish.js +9 -0
  80. package/dist/collection/components/store/translationStore/strings.swedish.js +9 -0
  81. package/dist/collection/components/store/translationStore/strings.turkish.js +9 -0
  82. package/dist/collection/components/store/translationStore/strings.vietnamese.js +9 -0
  83. package/dist/collection/components/stripe/zonos-address/zonos-address.js +1 -1
  84. package/dist/collection/components/stripe/zonos-link-authentication/zonos-link-authentication.js +1 -1
  85. package/dist/collection/components/stripe/zonos-payment/zonos-payment.js +1 -1
  86. package/dist/collection/components/utils/api/prepCalculateLandedCost.js +22 -0
  87. package/dist/collection/components/utils/api/trackConversionEvent.js +0 -2
  88. package/dist/collection/components/utils/api/triggerBuildLandedCost.js +1 -0
  89. package/dist/collection/components/utils/handleFetch.js +1 -0
  90. package/dist/collection/components/utils/hello/currencyConversion/currencyFormat.js +1 -1
  91. package/dist/collection/components/utils/logging/log.js +26 -1
  92. package/dist/collection/components/utils/logging/sendErrorLog.js +2 -0
  93. package/dist/esm/{CheckoutConfig-c7954c2a.js → CheckoutConfig-c0ec120d.js} +1 -1
  94. package/dist/esm/{cart-414322dc.js → cart-7df78f9f.js} +351 -70
  95. package/dist/esm/{createCustomEvent-fcd6d294.js → createCustomEvent-fcec608e.js} +2 -4
  96. package/dist/esm/{handleFetch-80ecfb91.js → handleFetch-0133265e.js} +29 -2
  97. package/dist/esm/index.js +10 -10
  98. package/dist/esm/loader.js +1 -1
  99. package/dist/esm/{paypal-3fecd52f.js → paypal-a27aad03.js} +2 -2
  100. package/dist/esm/zonos-address_8.entry.js +12 -12
  101. package/dist/esm/zonos-badge.entry.js +40 -0
  102. package/dist/esm/zonos-button_3.entry.js +3 -3
  103. package/dist/esm/zonos-card.entry.js +4 -4
  104. package/dist/esm/{zonos-badge_13.entry.js → zonos-cart-items_12.entry.js} +57 -71
  105. package/dist/esm/zonos-checkout.entry.js +18 -6
  106. package/dist/esm/zonos-component.entry.js +1 -1
  107. package/dist/esm/zonos-controller.entry.js +3 -3
  108. package/dist/esm/zonos-country-flag.entry.js +2 -2
  109. package/dist/esm/zonos-country-select_4.entry.js +10 -10
  110. package/dist/esm/zonos-elements.js +1 -1
  111. package/dist/esm/zonos-hello-dialog.entry.js +6 -6
  112. package/dist/esm/zonos-hello.entry.js +2 -2
  113. package/dist/esm/zonos-input.entry.js +4 -4
  114. package/dist/esm/zonos-language-select_2.entry.js +6 -6
  115. package/dist/esm/zonos-link.entry.js +1 -1
  116. package/dist/esm/zonos-logo.entry.js +2 -2
  117. package/dist/esm/zonos-notification_3.entry.js +5 -5
  118. package/dist/esm/zonos-tooltip.entry.js +2 -2
  119. package/dist/esm/zonos-v-stack.entry.js +2 -2
  120. package/dist/esm-es5/{CheckoutConfig-c7954c2a.js → CheckoutConfig-c0ec120d.js} +1 -1
  121. package/dist/esm-es5/cart-7df78f9f.js +1 -0
  122. package/dist/esm-es5/{createCustomEvent-fcd6d294.js → createCustomEvent-fcec608e.js} +1 -1
  123. package/dist/esm-es5/handleFetch-0133265e.js +1 -0
  124. package/dist/esm-es5/index.js +1 -1
  125. package/dist/esm-es5/loader.js +1 -1
  126. package/dist/esm-es5/{paypal-3fecd52f.js → paypal-a27aad03.js} +1 -1
  127. package/dist/esm-es5/zonos-address_8.entry.js +1 -1
  128. package/dist/esm-es5/zonos-badge.entry.js +1 -0
  129. package/dist/esm-es5/zonos-button_3.entry.js +1 -1
  130. package/dist/esm-es5/zonos-card.entry.js +1 -1
  131. package/dist/esm-es5/zonos-cart-items_12.entry.js +1 -0
  132. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  133. package/dist/esm-es5/zonos-component.entry.js +1 -1
  134. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  135. package/dist/esm-es5/zonos-country-flag.entry.js +1 -1
  136. package/dist/esm-es5/zonos-country-select_4.entry.js +1 -1
  137. package/dist/esm-es5/zonos-elements.js +1 -1
  138. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  139. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  140. package/dist/esm-es5/zonos-input.entry.js +1 -1
  141. package/dist/esm-es5/zonos-language-select_2.entry.js +1 -1
  142. package/dist/esm-es5/zonos-link.entry.js +1 -1
  143. package/dist/esm-es5/zonos-logo.entry.js +1 -1
  144. package/dist/esm-es5/zonos-notification_3.entry.js +1 -1
  145. package/dist/esm-es5/zonos-tooltip.entry.js +1 -1
  146. package/dist/esm-es5/zonos-v-stack.entry.js +1 -1
  147. package/dist/scripts/index.d.ts +45 -0
  148. package/dist/scripts/index.js +1 -1
  149. package/dist/scripts/loadZonos.js +1 -1
  150. package/dist/scripts/zonos.js +1 -1
  151. package/dist/types/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.d.ts +12 -0
  152. package/dist/types/components/common/zonos-badge/zonos-badge.d.ts +9 -0
  153. package/dist/types/components/store/checkout/cart.d.ts +8 -1
  154. package/dist/types/components/store/checkout/stripe.d.ts +12 -2
  155. package/dist/types/components/store/translationStore/strings.arabic.d.ts +9 -0
  156. package/dist/types/components/store/translationStore/strings.base.d.ts +9 -0
  157. package/dist/types/components/store/translationStore/strings.chinese.d.ts +9 -0
  158. package/dist/types/components/store/translationStore/strings.danish.d.ts +9 -0
  159. package/dist/types/components/store/translationStore/strings.dutch.d.ts +9 -0
  160. package/dist/types/components/store/translationStore/strings.french.d.ts +9 -0
  161. package/dist/types/components/store/translationStore/strings.german.d.ts +9 -0
  162. package/dist/types/components/store/translationStore/strings.hebrew.d.ts +9 -0
  163. package/dist/types/components/store/translationStore/strings.indonesian.d.ts +9 -0
  164. package/dist/types/components/store/translationStore/strings.italian.d.ts +9 -0
  165. package/dist/types/components/store/translationStore/strings.japanese.d.ts +9 -0
  166. package/dist/types/components/store/translationStore/strings.korean.d.ts +9 -0
  167. package/dist/types/components/store/translationStore/strings.norwegian.d.ts +9 -0
  168. package/dist/types/components/store/translationStore/strings.polish.d.ts +9 -0
  169. package/dist/types/components/store/translationStore/strings.portuguese.d.ts +9 -0
  170. package/dist/types/components/store/translationStore/strings.russian.d.ts +9 -0
  171. package/dist/types/components/store/translationStore/strings.spanish.d.ts +9 -0
  172. package/dist/types/components/store/translationStore/strings.swedish.d.ts +9 -0
  173. package/dist/types/components/store/translationStore/strings.turkish.d.ts +9 -0
  174. package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +9 -0
  175. package/dist/types/components/store/translationStore.d.ts +1 -1
  176. package/dist/types/components/utils/api/triggerBuildLandedCost.d.ts +1 -0
  177. package/dist/types/components/utils/checkout/sortServiceLevelOptions.d.ts +3 -2
  178. package/dist/types/components/utils/logging/log.d.ts +2 -1
  179. package/dist/types/components.d.ts +34 -0
  180. package/dist/types/types/checkout/api/CalculateLandedCost.d.ts +2 -0
  181. package/dist/types/types/generated/graphql.internal.types.d.ts +12 -0
  182. package/dist/types/types/generated/graphql.internal.types.ts +9 -0
  183. package/dist/zonos-elements/index.esm.js +1 -1
  184. package/dist/zonos-elements/{p-0290df9c.entry.js → p-112a969c.entry.js} +1 -1
  185. package/dist/zonos-elements/{p-5170cefb.system.js → p-15651b06.system.js} +1 -1
  186. package/dist/zonos-elements/p-197c5707.system.js +1 -0
  187. package/dist/zonos-elements/p-1a92ff9a.system.entry.js +1 -0
  188. package/dist/zonos-elements/p-2024313c.js +1 -0
  189. package/dist/zonos-elements/{p-1e4f7997.system.entry.js → p-22e81fee.system.entry.js} +1 -1
  190. package/dist/zonos-elements/{p-f8dace42.system.entry.js → p-270cc182.system.entry.js} +1 -1
  191. package/dist/zonos-elements/{p-1047233d.entry.js → p-2c5e2163.entry.js} +1 -1
  192. package/dist/zonos-elements/{p-ced3aa4f.system.entry.js → p-2d2edb5a.system.entry.js} +1 -1
  193. package/dist/zonos-elements/p-2d2ff962.entry.js +1 -0
  194. package/dist/zonos-elements/{p-2a47d2cc.system.entry.js → p-38886017.system.entry.js} +1 -1
  195. package/dist/zonos-elements/{p-cce51fa5.system.entry.js → p-4097a25b.system.entry.js} +1 -1
  196. package/dist/zonos-elements/{p-41f42a5c.entry.js → p-42636c5a.entry.js} +1 -1
  197. package/dist/zonos-elements/{p-bbabc829.system.entry.js → p-43e2de45.system.entry.js} +1 -1
  198. package/dist/zonos-elements/{p-2d466263.system.js → p-4683797b.system.js} +1 -1
  199. package/dist/zonos-elements/{p-86bfda32.system.entry.js → p-4e06a2bb.system.entry.js} +1 -1
  200. package/dist/zonos-elements/{p-25633055.entry.js → p-58832515.entry.js} +1 -1
  201. package/dist/zonos-elements/{p-e68941ce.system.entry.js → p-59806a8e.system.entry.js} +1 -1
  202. package/dist/zonos-elements/{p-19fc5e11.system.entry.js → p-5d186fc7.system.entry.js} +1 -1
  203. package/dist/zonos-elements/{p-0a1db77d.system.entry.js → p-5d4bde9c.system.entry.js} +1 -1
  204. package/dist/zonos-elements/{p-f3fc05a8.entry.js → p-6a5d714a.entry.js} +1 -1
  205. package/dist/zonos-elements/{p-fca6f444.entry.js → p-6a83b682.entry.js} +1 -1
  206. package/dist/zonos-elements/p-85600e22.system.entry.js +1 -0
  207. package/dist/zonos-elements/{p-81cdd0d5.system.js → p-8c0ff373.system.js} +1 -1
  208. package/dist/zonos-elements/p-8dd38974.entry.js +1 -0
  209. package/dist/zonos-elements/p-8fd6ae63.js +1 -0
  210. package/dist/zonos-elements/{p-9c02a170.system.js → p-957b1c1b.system.js} +1 -1
  211. package/dist/zonos-elements/{p-7be7bd28.entry.js → p-997c8f07.entry.js} +1 -1
  212. package/dist/zonos-elements/{p-982aa677.entry.js → p-a4cdd4f2.entry.js} +1 -1
  213. package/dist/zonos-elements/p-aa899bf7.entry.js +1 -0
  214. package/dist/zonos-elements/{p-c2920074.js → p-acabfc47.js} +1 -1
  215. package/dist/zonos-elements/p-ad7ce197.js +1 -0
  216. package/dist/zonos-elements/{p-a3e2592b.system.entry.js → p-ae7526a2.system.entry.js} +1 -1
  217. package/dist/zonos-elements/{p-6de38759.entry.js → p-afad2fae.entry.js} +1 -1
  218. package/dist/zonos-elements/{p-166b3181.entry.js → p-b09c3702.entry.js} +1 -1
  219. package/dist/zonos-elements/{p-6b3fd741.js → p-b8e85bf5.js} +1 -1
  220. package/dist/zonos-elements/{p-72f0641d.entry.js → p-bf84416a.entry.js} +1 -1
  221. package/dist/zonos-elements/{p-a033685e.system.entry.js → p-c2b7b670.system.entry.js} +1 -1
  222. package/dist/zonos-elements/p-c78dd680.system.js +1 -1
  223. package/dist/zonos-elements/{p-c1400636.entry.js → p-cd17565d.entry.js} +1 -1
  224. package/dist/zonos-elements/{p-3d01ac9a.entry.js → p-cfd53396.entry.js} +1 -1
  225. package/dist/zonos-elements/p-cffe7cc8.system.entry.js +1 -0
  226. package/dist/zonos-elements/{p-f0d6f027.system.entry.js → p-d48f3bd3.system.entry.js} +1 -1
  227. package/dist/zonos-elements/{p-ba05f1d6.system.entry.js → p-d621f462.system.entry.js} +1 -1
  228. package/dist/zonos-elements/{p-4032de50.entry.js → p-df83e30b.entry.js} +1 -1
  229. package/dist/zonos-elements/p-e7eb0a92.system.js +1 -0
  230. package/dist/zonos-elements/{p-f4765417.entry.js → p-e93b511f.entry.js} +1 -1
  231. package/dist/zonos-elements/{p-747eed39.entry.js → p-ea68ee1f.entry.js} +1 -1
  232. package/dist/zonos-elements/{p-de93cc65.system.entry.js → p-f68c38d8.system.entry.js} +1 -1
  233. package/dist/zonos-elements/{p-d56f87ab.system.entry.js → p-f7bbdd0c.system.entry.js} +1 -1
  234. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  235. package/package.json +1 -1
  236. package/dist/esm-es5/cart-414322dc.js +0 -1
  237. package/dist/esm-es5/handleFetch-80ecfb91.js +0 -1
  238. package/dist/esm-es5/zonos-badge_13.entry.js +0 -1
  239. package/dist/zonos-elements/p-0f640802.system.js +0 -1
  240. package/dist/zonos-elements/p-2ec2e9d3.js +0 -1
  241. package/dist/zonos-elements/p-502d5e52.system.entry.js +0 -1
  242. package/dist/zonos-elements/p-75fd8895.js +0 -1
  243. package/dist/zonos-elements/p-a725574a.entry.js +0 -1
  244. package/dist/zonos-elements/p-acbec292.system.entry.js +0 -1
  245. package/dist/zonos-elements/p-c4957e35.system.js +0 -1
  246. package/dist/zonos-elements/p-d5818f0a.js +0 -1
  247. package/dist/zonos-elements/p-e6ec9f12.entry.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { c as createStore, z as zonosStore } from './zonosStore-0dc7a947.js';
2
- import { h as handleFetch, a as logError, l as log, f as fallbackApiList, j as jsonParse } from './handleFetch-80ecfb91.js';
2
+ import { h as handleFetch, a as logError, l as log, f as fallbackApiList, j as jsonParse } from './handleFetch-0133265e.js';
3
3
  import { i as isDarkColor } from './isDarkColor-b3afa948.js';
4
4
  import { g as getBorderRadius } from './getBorderRadius-cff1e39b.js';
5
5
 
@@ -13,6 +13,9 @@ const stringsArabic = {
13
13
  'Above de minimis threshold for': {
14
14
  value: 'أعلى من الحد الأدنى لـ',
15
15
  },
16
+ 'Add promotional code': {
17
+ value: 'أضف رمز ترويجي',
18
+ },
16
19
  Address: {
17
20
  value: 'العنوان',
18
21
  },
@@ -25,6 +28,9 @@ const stringsArabic = {
25
28
  'An unexpected error occurred when processing PayPal order.': {
26
29
  value: 'حدث خطأ غير متوقع عند معالجة طلب PayPal.',
27
30
  },
31
+ Apply: {
32
+ value: 'تطبيق',
33
+ },
28
34
  'Are you sure?': {
29
35
  value: 'هل أنت متأكد؟',
30
36
  },
@@ -127,6 +133,9 @@ const stringsArabic = {
127
133
  Hide: {
128
134
  value: 'اخفِ',
129
135
  },
136
+ 'Invalid promo code': {
137
+ value: 'رمز ترويجي غير صالح',
138
+ },
130
139
  'Keep shopping': {
131
140
  value: 'متابعة التسوق',
132
141
  },
@@ -382,6 +391,9 @@ const stringsBase = {
382
391
  'Above de minimis threshold for': {
383
392
  value: 'Above de minimis threshold for',
384
393
  },
394
+ 'Add promotional code': {
395
+ value: 'Add promotional code',
396
+ },
385
397
  Address: {
386
398
  value: 'Address',
387
399
  },
@@ -394,6 +406,9 @@ const stringsBase = {
394
406
  'An unexpected error occurred when processing PayPal order.': {
395
407
  value: 'An unexpected error occurred when processing PayPal order.',
396
408
  },
409
+ Apply: {
410
+ value: 'Apply',
411
+ },
397
412
  'Are you sure?': {
398
413
  value: 'Are you sure?',
399
414
  },
@@ -496,6 +511,9 @@ const stringsBase = {
496
511
  Hide: {
497
512
  value: 'Hide',
498
513
  },
514
+ 'Invalid promo code': {
515
+ value: 'Invalid promo code',
516
+ },
499
517
  'Keep shopping': {
500
518
  value: 'Keep shopping',
501
519
  },
@@ -751,6 +769,9 @@ const stringsChinese = {
751
769
  'Above de minimis threshold for': {
752
770
  value: '超过最低征税门槛',
753
771
  },
772
+ 'Add promotional code': {
773
+ value: '添加促销代码',
774
+ },
754
775
  Address: {
755
776
  value: '地址',
756
777
  },
@@ -763,6 +784,9 @@ const stringsChinese = {
763
784
  'An unexpected error occurred when processing PayPal order.': {
764
785
  value: '处理PayPal订单时发生意外错误。',
765
786
  },
787
+ Apply: {
788
+ value: '应用',
789
+ },
766
790
  'Are you sure?': {
767
791
  value: '你确定吗?',
768
792
  },
@@ -865,6 +889,9 @@ const stringsChinese = {
865
889
  Hide: {
866
890
  value: '隐藏',
867
891
  },
892
+ 'Invalid promo code': {
893
+ value: '无效的促销代码',
894
+ },
868
895
  'Keep shopping': {
869
896
  value: '继续购物',
870
897
  },
@@ -1120,6 +1147,9 @@ const stringsDanish = {
1120
1147
  'Above de minimis threshold for': {
1121
1148
  value: 'Over de minimis-grænsen for',
1122
1149
  },
1150
+ 'Add promotional code': {
1151
+ value: 'Tilføj kampagnekode',
1152
+ },
1123
1153
  Address: {
1124
1154
  value: 'Adresse',
1125
1155
  },
@@ -1132,6 +1162,9 @@ const stringsDanish = {
1132
1162
  'An unexpected error occurred when processing PayPal order.': {
1133
1163
  value: 'Der opstod en uventet fejl ved behandling af PayPal-ordren.',
1134
1164
  },
1165
+ Apply: {
1166
+ value: 'Anvend',
1167
+ },
1135
1168
  'Are you sure?': {
1136
1169
  value: 'Er du sikker?',
1137
1170
  },
@@ -1234,6 +1267,9 @@ const stringsDanish = {
1234
1267
  Hide: {
1235
1268
  value: 'Skjul',
1236
1269
  },
1270
+ 'Invalid promo code': {
1271
+ value: 'Ugyldig kampagnekode',
1272
+ },
1237
1273
  'Keep shopping': {
1238
1274
  value: 'Fortsæt med at handle',
1239
1275
  },
@@ -1489,6 +1525,9 @@ const stringsDutch = {
1489
1525
  'Above de minimis threshold for': {
1490
1526
  value: 'Boven de minimale drempel voor',
1491
1527
  },
1528
+ 'Add promotional code': {
1529
+ value: 'Promotiecode toevoegen',
1530
+ },
1492
1531
  Address: {
1493
1532
  value: 'Adres',
1494
1533
  },
@@ -1501,6 +1540,9 @@ const stringsDutch = {
1501
1540
  'An unexpected error occurred when processing PayPal order.': {
1502
1541
  value: 'Er is een onverwachte fout opgetreden bij het verwerken van de PayPal-bestelling.',
1503
1542
  },
1543
+ Apply: {
1544
+ value: 'Toepassen',
1545
+ },
1504
1546
  'Are you sure?': {
1505
1547
  value: 'Weet je het zeker?',
1506
1548
  },
@@ -1603,6 +1645,9 @@ const stringsDutch = {
1603
1645
  Hide: {
1604
1646
  value: 'Verbergen',
1605
1647
  },
1648
+ 'Invalid promo code': {
1649
+ value: 'Ongeldige promotiecode',
1650
+ },
1606
1651
  'Keep shopping': {
1607
1652
  value: 'Blijf winkelen',
1608
1653
  },
@@ -1858,6 +1903,9 @@ const stringsFrench = {
1858
1903
  'Above de minimis threshold for': {
1859
1904
  value: 'Au-dessus du seuil de minimis pour',
1860
1905
  },
1906
+ 'Add promotional code': {
1907
+ value: 'Ajouter un code promotionnel',
1908
+ },
1861
1909
  Address: {
1862
1910
  value: 'Adresse',
1863
1911
  },
@@ -1870,6 +1918,9 @@ const stringsFrench = {
1870
1918
  'An unexpected error occurred when processing PayPal order.': {
1871
1919
  value: "Une erreur inattendue s'est produite lors du traitement de la commande PayPal.",
1872
1920
  },
1921
+ Apply: {
1922
+ value: 'Appliquer',
1923
+ },
1873
1924
  'Are you sure?': {
1874
1925
  value: 'Es-tu sûr?',
1875
1926
  },
@@ -1972,6 +2023,9 @@ const stringsFrench = {
1972
2023
  Hide: {
1973
2024
  value: 'Cacher',
1974
2025
  },
2026
+ 'Invalid promo code': {
2027
+ value: 'Code promotionnel invalide',
2028
+ },
1975
2029
  'Keep shopping': {
1976
2030
  value: 'Continuer à faire du shopping',
1977
2031
  },
@@ -2227,6 +2281,9 @@ const stringsGerman = {
2227
2281
  'Above de minimis threshold for': {
2228
2282
  value: 'Über der Mindestgrenze für',
2229
2283
  },
2284
+ 'Add promotional code': {
2285
+ value: 'Promo-Code hinzufügen',
2286
+ },
2230
2287
  Address: {
2231
2288
  value: 'Adresse',
2232
2289
  },
@@ -2239,6 +2296,9 @@ const stringsGerman = {
2239
2296
  'An unexpected error occurred when processing PayPal order.': {
2240
2297
  value: 'Beim Verarbeiten der PayPal-Bestellung ist ein unerwarteter Fehler aufgetreten.',
2241
2298
  },
2299
+ Apply: {
2300
+ value: 'Anwenden',
2301
+ },
2242
2302
  'Are you sure?': {
2243
2303
  value: 'Bist du sicher?',
2244
2304
  },
@@ -2341,6 +2401,9 @@ const stringsGerman = {
2341
2401
  Hide: {
2342
2402
  value: 'Verstecken',
2343
2403
  },
2404
+ 'Invalid promo code': {
2405
+ value: 'Ungültiger Promo-Code',
2406
+ },
2344
2407
  'Keep shopping': {
2345
2408
  value: 'Einkauf fortsetzen',
2346
2409
  },
@@ -2596,6 +2659,9 @@ const stringsHebrew = {
2596
2659
  'Above de minimis threshold for': {
2597
2660
  value: 'מעל סף המינימום עבור',
2598
2661
  },
2662
+ 'Add promotional code': {
2663
+ value: 'הוסף קוד מבצע',
2664
+ },
2599
2665
  Address: {
2600
2666
  value: 'כתובת',
2601
2667
  },
@@ -2608,6 +2674,9 @@ const stringsHebrew = {
2608
2674
  'An unexpected error occurred when processing PayPal order.': {
2609
2675
  value: 'אירעה שגיאה בלתי צפויה בעת עיבוד הזמנת PayPal.',
2610
2676
  },
2677
+ Apply: {
2678
+ value: 'החל',
2679
+ },
2611
2680
  'Are you sure?': {
2612
2681
  value: 'אתה בטוח?',
2613
2682
  },
@@ -2710,6 +2779,9 @@ const stringsHebrew = {
2710
2779
  Hide: {
2711
2780
  value: 'הסתר',
2712
2781
  },
2782
+ 'Invalid promo code': {
2783
+ value: 'קוד מבצע לא תקף',
2784
+ },
2713
2785
  'Keep shopping': {
2714
2786
  value: 'המשך בקנייה',
2715
2787
  },
@@ -2965,6 +3037,9 @@ const stringsIndonesian = {
2965
3037
  'Above de minimis threshold for': {
2966
3038
  value: 'Di atas ambang batas de minimis untuk',
2967
3039
  },
3040
+ 'Add promotional code': {
3041
+ value: 'Tambahkan kode promosi',
3042
+ },
2968
3043
  Address: {
2969
3044
  value: 'Alamat',
2970
3045
  },
@@ -2977,6 +3052,9 @@ const stringsIndonesian = {
2977
3052
  'An unexpected error occurred when processing PayPal order.': {
2978
3053
  value: 'Terjadi kesalahan tak terduga saat memproses pesanan PayPal.',
2979
3054
  },
3055
+ Apply: {
3056
+ value: 'Terapkan',
3057
+ },
2980
3058
  'Are you sure?': {
2981
3059
  value: 'Apakah Anda yakin?',
2982
3060
  },
@@ -3079,6 +3157,9 @@ const stringsIndonesian = {
3079
3157
  Hide: {
3080
3158
  value: 'Sembunyikan',
3081
3159
  },
3160
+ 'Invalid promo code': {
3161
+ value: 'Kode promo tidak valid',
3162
+ },
3082
3163
  'Keep shopping': {
3083
3164
  value: 'Lanjut belanja',
3084
3165
  },
@@ -3334,6 +3415,9 @@ const stringsItalian = {
3334
3415
  'Above de minimis threshold for': {
3335
3416
  value: 'Sopra la soglia di minimis per',
3336
3417
  },
3418
+ 'Add promotional code': {
3419
+ value: 'Aggiungi codice promozionale',
3420
+ },
3337
3421
  Address: {
3338
3422
  value: 'Indirizzo',
3339
3423
  },
@@ -3346,6 +3430,9 @@ const stringsItalian = {
3346
3430
  'An unexpected error occurred when processing PayPal order.': {
3347
3431
  value: "Si è verificato un errore imprevisto durante l'elaborazione dell'ordine PayPal.",
3348
3432
  },
3433
+ Apply: {
3434
+ value: 'Applica',
3435
+ },
3349
3436
  'Are you sure?': {
3350
3437
  value: 'Sei sicuro?',
3351
3438
  },
@@ -3448,6 +3535,9 @@ const stringsItalian = {
3448
3535
  Hide: {
3449
3536
  value: 'Nascondi',
3450
3537
  },
3538
+ 'Invalid promo code': {
3539
+ value: 'Codice promozionale non valido',
3540
+ },
3451
3541
  'Keep shopping': {
3452
3542
  value: 'Continua gli acquisti',
3453
3543
  },
@@ -3703,6 +3793,9 @@ const stringsJapanese = {
3703
3793
  'Above de minimis threshold for': {
3704
3794
  value: 'デミニマスの閾値を超える',
3705
3795
  },
3796
+ 'Add promotional code': {
3797
+ value: 'プロモーションコードを追加',
3798
+ },
3706
3799
  Address: {
3707
3800
  value: '住所',
3708
3801
  },
@@ -3715,6 +3808,9 @@ const stringsJapanese = {
3715
3808
  'An unexpected error occurred when processing PayPal order.': {
3716
3809
  value: 'PayPal注文の処理中に予期しないエラーが発生しました。',
3717
3810
  },
3811
+ Apply: {
3812
+ value: '適用',
3813
+ },
3718
3814
  'Are you sure?': {
3719
3815
  value: '本気ですか?',
3720
3816
  },
@@ -3817,6 +3913,9 @@ const stringsJapanese = {
3817
3913
  Hide: {
3818
3914
  value: '隠す',
3819
3915
  },
3916
+ 'Invalid promo code': {
3917
+ value: '無効なプロモーションコード',
3918
+ },
3820
3919
  'Keep shopping': {
3821
3920
  value: '買い物を続ける',
3822
3921
  },
@@ -4072,6 +4171,9 @@ const stringsKorean = {
4072
4171
  'Above de minimis threshold for': {
4073
4172
  value: '최소 임계값을 초과하여',
4074
4173
  },
4174
+ 'Add promotional code': {
4175
+ value: '프로모션 코드 추가',
4176
+ },
4075
4177
  Address: {
4076
4178
  value: '주소',
4077
4179
  },
@@ -4084,6 +4186,9 @@ const stringsKorean = {
4084
4186
  'An unexpected error occurred when processing PayPal order.': {
4085
4187
  value: 'PayPal 주문을 처리하는 중에 예기치 않은 오류가 발생했습니다.',
4086
4188
  },
4189
+ Apply: {
4190
+ value: '적용',
4191
+ },
4087
4192
  'Are you sure?': {
4088
4193
  value: '확실합니까?',
4089
4194
  },
@@ -4186,6 +4291,9 @@ const stringsKorean = {
4186
4291
  Hide: {
4187
4292
  value: '숨기다',
4188
4293
  },
4294
+ 'Invalid promo code': {
4295
+ value: '유효하지 않은 프로모션 코드',
4296
+ },
4189
4297
  'Keep shopping': {
4190
4298
  value: '쇼핑 계속하기',
4191
4299
  },
@@ -4441,6 +4549,9 @@ const stringsNorwegian = {
4441
4549
  'Above de minimis threshold for': {
4442
4550
  value: 'Over minstegrensen for',
4443
4551
  },
4552
+ 'Add promotional code': {
4553
+ value: 'Legg til kampanjekode',
4554
+ },
4444
4555
  Address: {
4445
4556
  value: 'Adresse',
4446
4557
  },
@@ -4453,6 +4564,9 @@ const stringsNorwegian = {
4453
4564
  'An unexpected error occurred when processing PayPal order.': {
4454
4565
  value: 'En uventet feil oppstod ved behandling av PayPal-bestillingen.',
4455
4566
  },
4567
+ Apply: {
4568
+ value: 'Bruk',
4569
+ },
4456
4570
  'Are you sure?': {
4457
4571
  value: 'Er du sikker?',
4458
4572
  },
@@ -4555,6 +4669,9 @@ const stringsNorwegian = {
4555
4669
  Hide: {
4556
4670
  value: 'Gjem',
4557
4671
  },
4672
+ 'Invalid promo code': {
4673
+ value: 'Ugyldig kampanjekode',
4674
+ },
4558
4675
  'Keep shopping': {
4559
4676
  value: 'Fortsett å handle',
4560
4677
  },
@@ -4810,6 +4927,9 @@ const stringsPolish = {
4810
4927
  'Above de minimis threshold for': {
4811
4928
  value: 'Powyżej progu minimis dla',
4812
4929
  },
4930
+ 'Add promotional code': {
4931
+ value: 'Dodaj kod promocyjny',
4932
+ },
4813
4933
  Address: {
4814
4934
  value: 'Adres',
4815
4935
  },
@@ -4822,6 +4942,9 @@ const stringsPolish = {
4822
4942
  'An unexpected error occurred when processing PayPal order.': {
4823
4943
  value: 'Wystąpił nieoczekiwany błąd podczas przetwarzania zamówienia PayPal.',
4824
4944
  },
4945
+ Apply: {
4946
+ value: 'Zastosuj',
4947
+ },
4825
4948
  'Are you sure?': {
4826
4949
  value: 'Jesteś pewien?',
4827
4950
  },
@@ -4924,6 +5047,9 @@ const stringsPolish = {
4924
5047
  Hide: {
4925
5048
  value: 'Ukryj',
4926
5049
  },
5050
+ 'Invalid promo code': {
5051
+ value: 'Nieprawidłowy kod promocyjny',
5052
+ },
4927
5053
  'Keep shopping': {
4928
5054
  value: 'Kontynuuj zakupy',
4929
5055
  },
@@ -5179,6 +5305,9 @@ const stringsPortuguese = {
5179
5305
  'Above de minimis threshold for': {
5180
5306
  value: 'Acima do limite de isenção para',
5181
5307
  },
5308
+ 'Add promotional code': {
5309
+ value: 'Adicionar código promocional',
5310
+ },
5182
5311
  Address: {
5183
5312
  value: 'Endereço',
5184
5313
  },
@@ -5191,6 +5320,9 @@ const stringsPortuguese = {
5191
5320
  'An unexpected error occurred when processing PayPal order.': {
5192
5321
  value: 'Ocorreu um erro inesperado ao processar o pedido do PayPal.',
5193
5322
  },
5323
+ Apply: {
5324
+ value: 'Aplicar',
5325
+ },
5194
5326
  'Are you sure?': {
5195
5327
  value: 'Você tem certeza?',
5196
5328
  },
@@ -5293,6 +5425,9 @@ const stringsPortuguese = {
5293
5425
  Hide: {
5294
5426
  value: 'Esconder',
5295
5427
  },
5428
+ 'Invalid promo code': {
5429
+ value: 'Código promocional inválido',
5430
+ },
5296
5431
  'Keep shopping': {
5297
5432
  value: 'Continuar comprando',
5298
5433
  },
@@ -5548,6 +5683,9 @@ const stringsRussian = {
5548
5683
  'Above de minimis threshold for': {
5549
5684
  value: 'Выше минимального порога для',
5550
5685
  },
5686
+ 'Add promotional code': {
5687
+ value: 'Добавить промокод',
5688
+ },
5551
5689
  Address: {
5552
5690
  value: 'Адрес',
5553
5691
  },
@@ -5560,6 +5698,9 @@ const stringsRussian = {
5560
5698
  'An unexpected error occurred when processing PayPal order.': {
5561
5699
  value: 'Произошла непредвиденная ошибка при обработке заказа PayPal.',
5562
5700
  },
5701
+ Apply: {
5702
+ value: 'Применить',
5703
+ },
5563
5704
  'Are you sure?': {
5564
5705
  value: 'Вы уверены?',
5565
5706
  },
@@ -5662,6 +5803,9 @@ const stringsRussian = {
5662
5803
  Hide: {
5663
5804
  value: 'Скрыть',
5664
5805
  },
5806
+ 'Invalid promo code': {
5807
+ value: 'Недействительный промокод',
5808
+ },
5665
5809
  'Keep shopping': {
5666
5810
  value: 'Продолжить покупки',
5667
5811
  },
@@ -5917,6 +6061,9 @@ const stringsSpanish = {
5917
6061
  'Above de minimis threshold for': {
5918
6062
  value: 'Por encima del umbral mínimo para',
5919
6063
  },
6064
+ 'Add promotional code': {
6065
+ value: 'Agregar código promocional',
6066
+ },
5920
6067
  Address: {
5921
6068
  value: 'Dirección',
5922
6069
  },
@@ -5929,6 +6076,9 @@ const stringsSpanish = {
5929
6076
  'An unexpected error occurred when processing PayPal order.': {
5930
6077
  value: 'Se produjo un error inesperado al procesar el pedido de PayPal.',
5931
6078
  },
6079
+ Apply: {
6080
+ value: 'Aplicar',
6081
+ },
5932
6082
  'Are you sure?': {
5933
6083
  value: '¿Estás seguro?',
5934
6084
  },
@@ -6031,6 +6181,9 @@ const stringsSpanish = {
6031
6181
  Hide: {
6032
6182
  value: 'Ocultar',
6033
6183
  },
6184
+ 'Invalid promo code': {
6185
+ value: 'Código promocional no válido',
6186
+ },
6034
6187
  'Keep shopping': {
6035
6188
  value: 'Seguir comprando',
6036
6189
  },
@@ -6286,6 +6439,9 @@ const stringsSwedish = {
6286
6439
  'Above de minimis threshold for': {
6287
6440
  value: 'Över minimibeloppet för',
6288
6441
  },
6442
+ 'Add promotional code': {
6443
+ value: 'Lägg till kampanjkod',
6444
+ },
6289
6445
  Address: {
6290
6446
  value: 'Adress',
6291
6447
  },
@@ -6298,6 +6454,9 @@ const stringsSwedish = {
6298
6454
  'An unexpected error occurred when processing PayPal order.': {
6299
6455
  value: 'Ett oväntat fel inträffade vid bearbetning av PayPal-beställningen.',
6300
6456
  },
6457
+ Apply: {
6458
+ value: 'Tillämpa',
6459
+ },
6301
6460
  'Are you sure?': {
6302
6461
  value: 'Är du säker?',
6303
6462
  },
@@ -6400,6 +6559,9 @@ const stringsSwedish = {
6400
6559
  Hide: {
6401
6560
  value: 'Dölj',
6402
6561
  },
6562
+ 'Invalid promo code': {
6563
+ value: 'Ogiltig kampanjkod',
6564
+ },
6403
6565
  'Keep shopping': {
6404
6566
  value: 'Fortsätt handla',
6405
6567
  },
@@ -6655,6 +6817,9 @@ const stringsTurkish = {
6655
6817
  'Above de minimis threshold for': {
6656
6818
  value: 'Minimum sınırın üzerinde',
6657
6819
  },
6820
+ 'Add promotional code': {
6821
+ value: 'Promosyon kodu ekle',
6822
+ },
6658
6823
  Address: {
6659
6824
  value: 'Adres',
6660
6825
  },
@@ -6667,6 +6832,9 @@ const stringsTurkish = {
6667
6832
  'An unexpected error occurred when processing PayPal order.': {
6668
6833
  value: 'PayPal siparişi işlenirken beklenmedik bir hata oluştu.',
6669
6834
  },
6835
+ Apply: {
6836
+ value: 'Uygula',
6837
+ },
6670
6838
  'Are you sure?': {
6671
6839
  value: 'Emin misiniz?',
6672
6840
  },
@@ -6769,6 +6937,9 @@ const stringsTurkish = {
6769
6937
  Hide: {
6770
6938
  value: 'Sakla',
6771
6939
  },
6940
+ 'Invalid promo code': {
6941
+ value: 'Geçersiz promosyon kodu',
6942
+ },
6772
6943
  'Keep shopping': {
6773
6944
  value: 'Alışverişe devam et',
6774
6945
  },
@@ -7024,6 +7195,9 @@ const stringsVietnamese = {
7024
7195
  'Above de minimis threshold for': {
7025
7196
  value: 'Vượt ngưỡng miễn thuế đối với',
7026
7197
  },
7198
+ 'Add promotional code': {
7199
+ value: 'Thêm mã khuyến mãi',
7200
+ },
7027
7201
  Address: {
7028
7202
  value: 'Địa chỉ',
7029
7203
  },
@@ -7036,6 +7210,9 @@ const stringsVietnamese = {
7036
7210
  'An unexpected error occurred when processing PayPal order.': {
7037
7211
  value: 'Đã xảy ra lỗi bất ngờ khi xử lý đơn hàng PayPal.',
7038
7212
  },
7213
+ Apply: {
7214
+ value: 'Áp dụng',
7215
+ },
7039
7216
  'Are you sure?': {
7040
7217
  value: 'Bạn có chắc không?',
7041
7218
  },
@@ -7138,6 +7315,9 @@ const stringsVietnamese = {
7138
7315
  Hide: {
7139
7316
  value: 'Ẩn',
7140
7317
  },
7318
+ 'Invalid promo code': {
7319
+ value: 'Mã khuyến mãi không hợp lệ',
7320
+ },
7141
7321
  'Keep shopping': {
7142
7322
  value: 'Tiếp tục mua sắm',
7143
7323
  },
@@ -7673,7 +7853,7 @@ const currencyFormat = ({ amount, currency, }) => {
7673
7853
  const { targetFormat } = exchangeRate || {};
7674
7854
  if (!targetFormat || !exchangeRate) {
7675
7855
  // Return the amount as a string if no exchange rate is available
7676
- return `${amount.toString()} ${targetCurrency}`;
7856
+ return `${amount.toFixed(2)} ${targetCurrency}`;
7677
7857
  }
7678
7858
  const minimumFractionDigits = targetFormat.scale || 2;
7679
7859
  const isIE = window.navigator.userAgent.indexOf('MSIE ') !== -1;
@@ -8033,7 +8213,7 @@ const initLocalizationStore = async () => {
8033
8213
  initHelloCountryList(allCountries || {});
8034
8214
  const { country, locale } = localization;
8035
8215
  // update selected country code in store
8036
- void localizationStoreUpdateSelectedCountryCode(country);
8216
+ localizationStoreUpdateSelectedCountryCode(country);
8037
8217
  // use locale from params if it exists, otherwise use locale from localization
8038
8218
  const overrideLocale = getOverrideLocale();
8039
8219
  localizationStore.selectedLocale = overrideLocale || locale || 'en';
@@ -8048,10 +8228,9 @@ const initLocalizationStore = async () => {
8048
8228
  if (!localizationStore.selectedCountryCode &&
8049
8229
  devSites.some(site => window.location.origin.includes(site))) {
8050
8230
  // update selected country code in store
8051
- void localizationStoreUpdateSelectedCountryCode('US');
8231
+ localizationStoreUpdateSelectedCountryCode('US');
8052
8232
  }
8053
8233
  localizationStore.localizationLoaded = true;
8054
- void getCustomMessages();
8055
8234
  };
8056
8235
  const updateCheckoutSessionLanguage = async () => {
8057
8236
  if (!cartStore.checkoutSessionId) {
@@ -8155,6 +8334,17 @@ const prepCartCalculateLandedCost = (cartId) => {
8155
8334
  lastName: shippingLastName,
8156
8335
  phone: translatedShippingAddress.phone,
8157
8336
  },
8337
+ landedCostAdjustments: cartStore.promoCode
8338
+ ? [
8339
+ {
8340
+ amount: 0,
8341
+ productId: null,
8342
+ promoCode: cartStore.promoCode,
8343
+ sku: null,
8344
+ type: 'PROMO_CODE',
8345
+ },
8346
+ ]
8347
+ : [],
8158
8348
  shippingAddress: {
8159
8349
  addressLine1: translatedShippingAddress.line1,
8160
8350
  addressLine2: translatedShippingAddress.line2,
@@ -8214,6 +8404,17 @@ const prepCalculateLandedCost = () => {
8214
8404
  phone: translatedShippingAddress.phone,
8215
8405
  },
8216
8406
  items: cartStore.items,
8407
+ landedCostAdjustments: cartStore.promoCode
8408
+ ? [
8409
+ {
8410
+ amount: 0,
8411
+ productId: null,
8412
+ promoCode: cartStore.promoCode,
8413
+ sku: null,
8414
+ type: 'PROMO_CODE',
8415
+ },
8416
+ ]
8417
+ : [],
8217
8418
  shippingAddress: {
8218
8419
  addressLine1: translatedShippingAddress.line1,
8219
8420
  addressLine2: translatedShippingAddress.line2,
@@ -8233,6 +8434,7 @@ const triggerBuildLandedCost = async (buildLandedCost) => {
8233
8434
  billingContact: data.billingContact,
8234
8435
  checkoutSessionId: data.checkoutSessionId,
8235
8436
  contact: data.contact,
8437
+ landedCostAdjustments: data.landedCostAdjustments,
8236
8438
  shippingAddress: data.shippingAddress,
8237
8439
  zonosApiRoute: fallbackApiList['vercel'],
8238
8440
  });
@@ -8428,6 +8630,16 @@ const buildTranslateRequest = ({ addressInvalidCharactersList, billingAddressInv
8428
8630
  };
8429
8631
  };
8430
8632
 
8633
+ /**
8634
+ * Sorts service levels with lower cost first
8635
+ */
8636
+ const sortServiceLevelOptions = (serviceLevels) => {
8637
+ const sortedServiceLevels = serviceLevels.sort((a, b) => {
8638
+ return a.amount - b.amount;
8639
+ });
8640
+ return sortedServiceLevels;
8641
+ };
8642
+
8431
8643
  const addressRuleStyle = ({ theme, }) => {
8432
8644
  const defaultStyle = {
8433
8645
  '.AccordionItem': {
@@ -8636,8 +8848,42 @@ const isPrefetchInfoOutdated = () => {
8636
8848
  // if landed cost data is not available, we need to fetch it
8637
8849
  !cartStore.landedCostData || isAddressOutdated || isTotalAmountChanged);
8638
8850
  };
8639
- const stripeStorePrefetchLandedCost = async () => {
8640
- var _a, _b, _c, _d, _e, _f;
8851
+ const stripeCalculateLandedCost = async () => {
8852
+ const abortController = new AbortController();
8853
+ stripeStore.fetchingLandedCostAbortController = abortController;
8854
+ // Reset cart items to non-restricted state and restricted item list
8855
+ cartStoreResetCartItems();
8856
+ const { checkoutSessionWorkflow, itemCreateWorkflow, landedCostCalculateWorkflow, shipmentRatingCalculateWorkflow, } = await calculateLandedCostNormalized(abortController);
8857
+ cartStore.shippingData = sortServiceLevelOptions((shipmentRatingCalculateWorkflow === null || shipmentRatingCalculateWorkflow === void 0 ? void 0 : shipmentRatingCalculateWorkflow.filter(Boolean)) || []);
8858
+ // check and update cart items with restrictions
8859
+ cartStoreCheckItemRestrictions(itemCreateWorkflow);
8860
+ // reset abort controller after we are done
8861
+ stripeStore.fetchingLandedCostAbortController = null;
8862
+ // update cart store with landed cost info
8863
+ cartStore.landedCostData =
8864
+ (checkoutSessionWorkflow === null || checkoutSessionWorkflow === void 0 ? void 0 : checkoutSessionWorkflow.map(checkoutSession => {
8865
+ const foundLandedCost = landedCostCalculateWorkflow === null || landedCostCalculateWorkflow === void 0 ? void 0 : landedCostCalculateWorkflow.find(item => (item === null || item === void 0 ? void 0 : item.id) === checkoutSession.landedCostId);
8866
+ if (!foundLandedCost) {
8867
+ return null;
8868
+ }
8869
+ return Object.assign(Object.assign({}, checkoutSession), { landedCost: foundLandedCost });
8870
+ }).filter(Boolean)) || [];
8871
+ // update adjustmentTotal
8872
+ // highlight promocode input error if promocode is applied but no adjustment applied in landed cost
8873
+ const isInvalidPromoCode = cartStore.promoCodeApplied &&
8874
+ !cartStore.landedCostData.find(item => {
8875
+ var _a;
8876
+ return (_a = item.landedCost.appliedAdjustments) === null || _a === void 0 ? void 0 : _a.find(_item => _item.type === 'PROMO_CODE');
8877
+ });
8878
+ cartStore.promoCodeError = isInvalidPromoCode;
8879
+ // When promocode is valid, set promoCode to session storage so if user close the modal, we can still reapply for them
8880
+ if (!isInvalidPromoCode) {
8881
+ sessionStorage.setItem('promoCode', cartStore.promoCode);
8882
+ }
8883
+ };
8884
+ const stripeStorePrefetchLandedCost = async (params) => {
8885
+ var _a, _b, _c, _d, _e, _f, _g;
8886
+ const applyingPromocode = !!(params === null || params === void 0 ? void 0 : params.applyingPromocode);
8641
8887
  const stripeAddressReady = !!((_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.complete);
8642
8888
  const stripeLinkReady = !!((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.complete);
8643
8889
  const stripeBillingAddressReady = stripeStore.stripeShippingSameAsBilling
@@ -8649,68 +8895,87 @@ const stripeStorePrefetchLandedCost = async () => {
8649
8895
  (_e = stripeStore.fetchingLandedCostAbortController) === null || _e === void 0 ? void 0 : _e.abort();
8650
8896
  stripeStore.fetchingLandedCostAbortController = null;
8651
8897
  }
8652
- // only fetch if we are not fetching or we need to refetch
8653
- if (stripeAddressReady &&
8654
- stripeLinkReady &&
8655
- stripeBillingAddressReady &&
8656
- shouldRefetch) {
8657
- stripeStore.isFetchingLandedCost = true;
8658
- if (stripeStore.stripeAddressEventData) {
8659
- stripeStore.stripeAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeAddressEventData);
8660
- }
8661
- if (stripeStore.stripeBillingAddressEventData) {
8662
- stripeStore.stripeBillingAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeBillingAddressEventData);
8663
- }
8664
- if (stripeStore.stripeLinkEventData) {
8665
- stripeStore.stripeLinkUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeLinkEventData);
8666
- }
8667
- try {
8668
- const abortController = new AbortController();
8669
- stripeStore.fetchingLandedCostAbortController = abortController;
8670
- // Reset cart items to non-restricted state and restricted item list
8671
- cartStoreResetCartItems();
8672
- const { checkoutSessionWorkflow, itemCreateWorkflow, landedCostCalculateWorkflow, shipmentRatingCalculateWorkflow, } = await calculateLandedCostNormalized(abortController);
8673
- // reset abort controller after we are done
8674
- stripeStore.fetchingLandedCostAbortController = null;
8675
- // update cart store with landed cost info
8676
- cartStore.landedCostData =
8677
- (checkoutSessionWorkflow === null || checkoutSessionWorkflow === void 0 ? void 0 : checkoutSessionWorkflow.map(checkoutSession => {
8678
- const foundLandedCost = landedCostCalculateWorkflow === null || landedCostCalculateWorkflow === void 0 ? void 0 : landedCostCalculateWorkflow.find(item => (item === null || item === void 0 ? void 0 : item.id) === checkoutSession.landedCostId);
8679
- if (!foundLandedCost) {
8680
- return null;
8681
- }
8682
- return Object.assign(Object.assign({}, checkoutSession), { landedCost: foundLandedCost });
8683
- }).filter(Boolean)) || [];
8684
- cartStore.shippingData =
8685
- (shipmentRatingCalculateWorkflow === null || shipmentRatingCalculateWorkflow === void 0 ? void 0 : shipmentRatingCalculateWorkflow.filter(Boolean)) || [];
8686
- // apply new subtotal and total, this is mainly to show items in the presentment currency
8687
- const firstLandedCostData = (_f = cartStore.landedCostData) === null || _f === void 0 ? void 0 : _f.find(Boolean);
8688
- const subtotals = !!firstLandedCostData
8689
- ? firstLandedCostData.subtotals
8690
- : null;
8691
- // check and update cart items with restrictions
8692
- cartStoreCheckItemRestrictions(itemCreateWorkflow);
8693
- if (subtotals) {
8694
- // prefetch landed cost will not update shipping and taxes since we haven't selected shipping method yet
8695
- cartStoreApplySubtotals({
8696
- adjustments: subtotals.adjustments,
8697
- exchangeRate: subtotals.exchangeRate,
8698
- items: subtotals.items,
8699
- landedCostTotal: 0,
8700
- presentmentCurrencyCode: subtotals.presentmentCurrencyCode,
8701
- shipping: 0,
8702
- total: subtotals.items,
8703
- });
8704
- }
8705
- }
8706
- catch (err) {
8707
- // default to empty array if we failed to fetch landed cost, so we can show the error message
8708
- cartStore.landedCostData = [];
8709
- cartStore.shippingData = [];
8710
- logError(err);
8898
+ // Do not fetch if we are not ready or data is not outdated
8899
+ if ((!shouldRefetch && !applyingPromocode) ||
8900
+ !stripeAddressReady ||
8901
+ !stripeLinkReady ||
8902
+ !stripeBillingAddressReady) {
8903
+ return;
8904
+ }
8905
+ stripeStore.isFetchingLandedCost = true;
8906
+ if (stripeStore.stripeAddressEventData) {
8907
+ stripeStore.stripeAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeAddressEventData);
8908
+ }
8909
+ if (stripeStore.stripeBillingAddressEventData) {
8910
+ stripeStore.stripeBillingAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeBillingAddressEventData);
8911
+ }
8912
+ if (stripeStore.stripeLinkEventData) {
8913
+ stripeStore.stripeLinkUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeLinkEventData);
8914
+ }
8915
+ try {
8916
+ // Reset cart items to non-restricted state and restricted item list
8917
+ cartStoreResetCartItems();
8918
+ // fetch and apply landed cost
8919
+ await stripeCalculateLandedCost();
8920
+ // This is the cheapest service level since we already sorted them after fetching landed cost
8921
+ const cheapestServiceLevel = (_f = cartStore.shippingData) === null || _f === void 0 ? void 0 : _f.find(Boolean);
8922
+ // Landed cost that matches with service level
8923
+ const matchLandedCost = (_g = cartStore.landedCostData) === null || _g === void 0 ? void 0 : _g.find(x => x.landedCost.shipmentRating.id === (cheapestServiceLevel === null || cheapestServiceLevel === void 0 ? void 0 : cheapestServiceLevel.id));
8924
+ // apply new subtotal and total, this is mainly to show items in the presentment currency
8925
+ const subtotals = !!matchLandedCost ? matchLandedCost.subtotals : null;
8926
+ if (subtotals) {
8927
+ // prefetch landed cost will not update shipping and taxes since we haven't selected shipping method yet
8928
+ cartStoreApplySubtotals({
8929
+ adjustments: subtotals.adjustments,
8930
+ exchangeRate: subtotals.exchangeRate,
8931
+ items: subtotals.items,
8932
+ landedCostTotal: subtotals.landedCostTotal,
8933
+ presentmentCurrencyCode: subtotals.presentmentCurrencyCode,
8934
+ shipping: subtotals.shipping,
8935
+ total: subtotals.total,
8936
+ });
8711
8937
  }
8712
- stripeStore.isFetchingLandedCost = false;
8713
8938
  }
8939
+ catch (err) {
8940
+ // default to empty array if we failed to fetch landed cost, so we can show the error message
8941
+ cartStore.landedCostData = [];
8942
+ cartStore.shippingData = [];
8943
+ logError(err);
8944
+ }
8945
+ stripeStore.isFetchingLandedCost = false;
8946
+ };
8947
+ const stripeStoreApplyPromoCode = async () => {
8948
+ var _a, _b;
8949
+ await stripeStorePrefetchLandedCost({
8950
+ applyingPromocode: true,
8951
+ });
8952
+ // Go back to shipping step if we are in payment step so user can reselect shipping method
8953
+ if (cartStore.step === 'payment') {
8954
+ cartStorePreviousStep();
8955
+ }
8956
+ // This is the cheapest service level since we already sorted them after fetching landed cost
8957
+ const cheapestServiceLevel = (_a = cartStore.shippingData) === null || _a === void 0 ? void 0 : _a.find(Boolean);
8958
+ // Landed cost that matches with service level
8959
+ const matchLandedCost = (_b = cartStore.landedCostData) === null || _b === void 0 ? void 0 : _b.find(x => x.landedCost.id === (cheapestServiceLevel === null || cheapestServiceLevel === void 0 ? void 0 : cheapestServiceLevel.id));
8960
+ if (!cheapestServiceLevel || !matchLandedCost) {
8961
+ return;
8962
+ }
8963
+ await cartStoreUpdateSelectedShippingOption(cheapestServiceLevel, matchLandedCost.landedCostId);
8964
+ };
8965
+ const stripeStoreResetPromoCode = () => {
8966
+ cartStore.promoCode = '';
8967
+ sessionStorage.removeItem('promoCode');
8968
+ // reset promocode error state
8969
+ cartStore.promoCodeError = false;
8970
+ cartStore.promoCodeApplied = false;
8971
+ };
8972
+ const stripeStoreRemovePromoCode = async () => {
8973
+ // Go back to shipping step if we are in payment step so user can reselect shipping method
8974
+ if (cartStore.step === 'payment') {
8975
+ cartStorePreviousStep();
8976
+ }
8977
+ stripeStoreResetPromoCode();
8978
+ await stripeStoreApplyPromoCode();
8714
8979
  };
8715
8980
  const stripeStoreMessageBasedOnStatus = (status) => {
8716
8981
  let messages = [];
@@ -8845,7 +9110,7 @@ const stripeStoreInitCheckoutSession = async () => {
8845
9110
  });
8846
9111
  stripeStore.isFetchingSession = false;
8847
9112
  if (errors.length || !json) {
8848
- logError('Error occured when creating checkout session', JSON.stringify(errors, null, 2));
9113
+ logError('Error occurred when creating checkout session', JSON.stringify(errors, null, 2));
8849
9114
  return false;
8850
9115
  }
8851
9116
  const result = json.checkoutSessionCreate;
@@ -8994,7 +9259,7 @@ const stripeStoreTranslateAddressToLatin = async ({ addressInvalidCharactersList
8994
9259
  : {},
8995
9260
  billingAddress: !stripeStore.stripeShippingSameAsBilling
8996
9261
  ? buildTranslatedAddress({
8997
- currentAddress: Object.assign(Object.assign({}, billingAddress), { name: (_d = stripeStore.stripeBillingAddressEventData) === null || _d === void 0 ? void 0 : _d.value.name }) || {},
9262
+ currentAddress: Object.assign(Object.assign({}, billingAddress), { name: (_d = stripeStore.stripeBillingAddressEventData) === null || _d === void 0 ? void 0 : _d.value.name }),
8998
9263
  translatedAddressResult: json.billingAddress || null,
8999
9264
  })
9000
9265
  : {},
@@ -9028,6 +9293,10 @@ const { onChange, reset, state: cartStore, } = createStore(() => ({
9028
9293
  isSelectedShippingGuarantee: false,
9029
9294
  items: [],
9030
9295
  landedCostData: null,
9296
+ promoCode: sessionStorage.getItem('promoCode') || '',
9297
+ // When user clicked applied button, save promocode into session storage for later use. So if session has promocode, applied button is clicked
9298
+ promoCodeApplied: !!sessionStorage.getItem('promoCode'),
9299
+ promoCodeError: false,
9031
9300
  restrictedItems: [],
9032
9301
  selectedLandedCost: null,
9033
9302
  selectedShippingOption: null,
@@ -9311,6 +9580,18 @@ const cartStoreResetSelectedShippingOption = () => {
9311
9580
  // reset total to subtotal
9312
9581
  cartStore.total = cartStore.subtotal;
9313
9582
  };
9583
+ const cartStorePreviousStep = () => {
9584
+ if (cartStore.step === 'shipping') {
9585
+ cartStore.step = 'customer-info';
9586
+ // set shipping step to done
9587
+ cartStore.tabItems = Object.assign(Object.assign({}, cartStore.tabItems), { 'customer-info': Object.assign(Object.assign({}, cartStore.tabItems.shipping), { isDone: false }) });
9588
+ }
9589
+ else if (cartStore.step === 'payment') {
9590
+ cartStore.step = 'shipping';
9591
+ // set shipping step to done
9592
+ cartStore.tabItems = Object.assign(Object.assign({}, cartStore.tabItems), { shipping: Object.assign(Object.assign({}, cartStore.tabItems.shipping), { isDone: false }) });
9593
+ }
9594
+ };
9314
9595
  const cartStoreNextStep = () => {
9315
9596
  if (cartStore.step === 'customer-info') {
9316
9597
  cartStore.step = 'shipping';
@@ -9332,4 +9613,4 @@ const cartStoreResetTabItems = () => {
9332
9613
  cartStoreResetSelectedShippingOption();
9333
9614
  };
9334
9615
 
9335
- export { setZCountryUrlParam as A, currencyDisplay as B, currencyConvertAndFormat as C, currencyConvert as D, currencyFormat as E, cartStoreHasOneEligibleItem as F, stripeStoreRetrievePayment as G, stripeStoreMessageBasedOnStatus as H, stripeStoreTranslateAddressToLatin as I, cartStoreUpdateSelectedShippingOption as J, cartStoreGetShippingTransitInfo as K, localizationStoreUpdateSelectedLocale as L, localizationStoreUpdateSelectedCountryCode as a, stripeStoreCleanupDomesticShippingSession as b, stripeStoreSaveDomesticShippingSession as c, cartStore as d, cartStoreUpdateItems as e, cartStoreReset as f, cartStoreResetTabItems as g, cartStoreClearCheckoutInterval as h, initStripeElements as i, stripeStore as j, stripeStoreInitCheckoutSession as k, localizationStore as l, cartStoreStartCheckoutInterval as m, cartStoreUpdateToErrorState as n, cartStoreSetCheckoutSession as o, stripeStorePrefetchLandedCost as p, cartStoreNextStep as q, stripeStoreHandleInventoryCheck as r, stripeStoreGetDomesticShippingSession as s, translate as t, stripeStoreConfirmPayment as u, stripeStoreReset as v, localizationStoreOnUpdate as w, isValidSelector as x, initLocalizationStore as y, getZCountryUrlParam as z };
9616
+ export { setZCountryUrlParam as A, currencyDisplay as B, currencyConvertAndFormat as C, currencyConvert as D, currencyFormat as E, cartStoreHasOneEligibleItem as F, stripeStoreApplyPromoCode as G, stripeStoreRemovePromoCode as H, stripeStoreRetrievePayment as I, stripeStoreMessageBasedOnStatus as J, stripeStoreResetPromoCode as K, stripeStoreTranslateAddressToLatin as L, cartStoreUpdateSelectedShippingOption as M, cartStoreGetShippingTransitInfo as N, localizationStoreUpdateSelectedLocale as O, localizationStoreUpdateSelectedCountryCode as a, stripeStoreCleanupDomesticShippingSession as b, stripeStoreSaveDomesticShippingSession as c, cartStore as d, cartStoreUpdateItems as e, cartStoreReset as f, cartStoreResetTabItems as g, cartStoreClearCheckoutInterval as h, initStripeElements as i, stripeStore as j, stripeStoreInitCheckoutSession as k, localizationStore as l, cartStoreStartCheckoutInterval as m, cartStoreUpdateToErrorState as n, cartStoreSetCheckoutSession as o, stripeStorePrefetchLandedCost as p, cartStoreNextStep as q, stripeStoreHandleInventoryCheck as r, stripeStoreGetDomesticShippingSession as s, translate as t, stripeStoreConfirmPayment as u, stripeStoreReset as v, localizationStoreOnUpdate as w, isValidSelector as x, initLocalizationStore as y, getZCountryUrlParam as z };