@zonos/elements 1.3.5 → 1.3.6

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 (403) hide show
  1. package/dist/cjs/ILanguage-d247b45b.js +26 -0
  2. package/dist/cjs/app-globals-3a1e7e63.js +5 -0
  3. package/dist/cjs/{cart-c1b0915c.js → cart-b8bbf22d.js} +62 -19
  4. package/dist/cjs/{getBorderRadius-cd7ef574.js → getBorderRadius-b252096d.js} +8 -4
  5. package/dist/cjs/index.cjs.js +0 -21
  6. package/dist/cjs/{isDarkColor-5eda1323.js → isDarkColor-168002d6.js} +1 -1
  7. package/dist/cjs/loader.cjs.js +5 -3
  8. package/dist/cjs/{localization-d43e1540.js → localization-2c9f5765.js} +366 -1
  9. package/dist/cjs/{submitGtag-bd6e9b42.js → submitGtag-792fe45d.js} +2 -2
  10. package/dist/cjs/zonos-address_4.cjs.entry.js +289 -0
  11. package/dist/cjs/zonos-badge_2.cjs.entry.js +57 -0
  12. package/dist/cjs/zonos-banner.cjs.entry.js +4 -9
  13. package/dist/cjs/{zonos-button_2.cjs.entry.js → zonos-button_3.cjs.entry.js} +42 -15
  14. package/dist/cjs/zonos-card_2.cjs.entry.js +26 -14
  15. package/dist/cjs/{zonos-cart-items_10.cjs.entry.js → zonos-cart-items_9.cjs.entry.js} +75 -84
  16. package/dist/cjs/zonos-checkout.cjs.entry.js +12 -13
  17. package/dist/cjs/zonos-component.cjs.entry.js +2 -2
  18. package/dist/cjs/zonos-controller.cjs.entry.js +7 -7
  19. package/dist/cjs/zonos-country-flag.cjs.entry.js +40 -0
  20. package/dist/cjs/{zonos-country-flag_4.cjs.entry.js → zonos-country-select_3.cjs.entry.js} +29 -55
  21. package/dist/cjs/zonos-elements.cjs.js +6 -4
  22. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +13 -8
  23. package/dist/cjs/zonos-hello.cjs.entry.js +3 -3
  24. package/dist/cjs/zonos-logo.cjs.entry.js +32 -0
  25. package/dist/cjs/zonos-notification.cjs.entry.js +5 -6
  26. package/dist/cjs/zonos-payment.cjs.entry.js +7 -7
  27. package/dist/cjs/zonos-select-dialog-header_2.cjs.entry.js +45 -0
  28. package/dist/cjs/zonos-shipping-rich-radio.cjs.entry.js +4 -4
  29. package/dist/cjs/zonos-text.cjs.entry.js +4 -6
  30. package/dist/cjs/{zonosStore-b88b5671.js → zonosStore-5d94dabb.js} +1 -1
  31. package/dist/collection/collection-manifest.json +6 -1
  32. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +1 -1
  33. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.js +5 -5
  34. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/assets/chevronDownIcon.svg +1 -0
  35. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/assets/globe.svg +3 -0
  36. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/assets/zonosIcon.svg +5 -0
  37. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/zonos-checkout-footer.css +126 -0
  38. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/zonos-checkout-footer.js +60 -0
  39. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.js +1 -1
  40. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.css +12 -21
  41. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +4 -5
  42. package/dist/collection/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.css +9 -0
  43. package/dist/collection/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.js +12 -4
  44. package/dist/collection/components/checkout/zonos-checkout/zonos-review/zonos-review.js +3 -3
  45. package/dist/collection/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.js +1 -1
  46. package/dist/collection/components/common/zonos-badge/zonos-badge.js +7 -26
  47. package/dist/collection/components/common/zonos-banner/zonos-banner.js +2 -25
  48. package/dist/collection/components/common/zonos-button/zonos-button.css +18 -0
  49. package/dist/collection/components/common/zonos-button/zonos-button.js +9 -28
  50. package/dist/collection/components/common/zonos-card/zonos-card.js +2 -20
  51. package/dist/collection/components/common/zonos-checkbox/zonos-checkbox.css +82 -0
  52. package/dist/collection/components/common/zonos-checkbox/zonos-checkbox.js +218 -0
  53. package/dist/collection/components/common/zonos-collapse/zonos-collapse.js +2 -2
  54. package/dist/collection/components/common/zonos-country-flag/zonos-country-flag.js +1 -20
  55. package/dist/collection/components/common/zonos-country-select/assets/greenCheckDuotone.svg +4 -0
  56. package/dist/collection/components/common/zonos-country-select/zonos-country-select.css +11 -10
  57. package/dist/collection/components/common/zonos-country-select/zonos-country-select.js +7 -11
  58. package/dist/collection/components/common/zonos-custom-message/zonos-custom-message.js +2 -2
  59. package/dist/collection/components/common/zonos-dialog/zonos-dialog.js +3 -3
  60. package/dist/collection/components/common/zonos-icon/zonos-icon.js +4 -4
  61. package/dist/collection/components/common/zonos-language-select/assets/greenCheckDuotone.svg +4 -0
  62. package/dist/collection/components/common/zonos-language-select/zonos-language-select.css +61 -0
  63. package/dist/collection/components/common/zonos-language-select/zonos-language-select.js +58 -0
  64. package/dist/collection/components/common/zonos-logo/zonos-logo.js +2 -21
  65. package/dist/collection/components/common/zonos-notification/zonos-notification.js +3 -26
  66. package/dist/collection/components/common/zonos-select-dialog-header/assets/removeIcon.svg +1 -0
  67. package/dist/collection/components/common/zonos-select-dialog-header/zonos-select-dialog-header.css +45 -0
  68. package/dist/collection/components/common/zonos-select-dialog-header/zonos-select-dialog-header.js +68 -0
  69. package/dist/collection/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.js +1 -1
  70. package/dist/collection/components/common/zonos-spinner/zonos-spinner.js +4 -4
  71. package/dist/collection/components/common/zonos-text/zonos-text.js +4 -24
  72. package/dist/collection/components/common/zonos-tooltip/zonos-tooltip.css +55 -0
  73. package/dist/collection/components/common/zonos-tooltip/zonos-tooltip.js +72 -0
  74. package/dist/collection/components/common/zonos-v-stack/zonos-v-stack.js +2 -21
  75. package/dist/collection/components/component-template/zonos-component/zonos-component.js +1 -1
  76. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/assets/globe.svg +3 -0
  77. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.css +10 -0
  78. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.js +27 -5
  79. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.css +16 -2
  80. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.js +11 -5
  81. package/dist/collection/components/main/zonos-controller.js +1 -1
  82. package/dist/collection/components/store/checkout/stripe.js +28 -7
  83. package/dist/collection/components/store/hello/localization.js +5 -1
  84. package/dist/collection/components/store/translationStore/strings.arabic.js +18 -0
  85. package/dist/collection/components/store/translationStore/strings.base.js +18 -0
  86. package/dist/collection/components/store/translationStore/strings.chinese.js +18 -0
  87. package/dist/collection/components/store/translationStore/strings.danish.js +18 -0
  88. package/dist/collection/components/store/translationStore/strings.dutch.js +18 -0
  89. package/dist/collection/components/store/translationStore/strings.french.js +18 -0
  90. package/dist/collection/components/store/translationStore/strings.german.js +18 -0
  91. package/dist/collection/components/store/translationStore/strings.hebrew.js +18 -0
  92. package/dist/collection/components/store/translationStore/strings.indonesian.js +18 -0
  93. package/dist/collection/components/store/translationStore/strings.italian.js +18 -0
  94. package/dist/collection/components/store/translationStore/strings.japanese.js +18 -0
  95. package/dist/collection/components/store/translationStore/strings.korean.js +18 -0
  96. package/dist/collection/components/store/translationStore/strings.norwegian.js +18 -0
  97. package/dist/collection/components/store/translationStore/strings.polish.js +18 -0
  98. package/dist/collection/components/store/translationStore/strings.portuguese.js +18 -0
  99. package/dist/collection/components/store/translationStore/strings.russian.js +18 -0
  100. package/dist/collection/components/store/translationStore/strings.spanish.js +18 -0
  101. package/dist/collection/components/store/translationStore/strings.swedish.js +18 -0
  102. package/dist/collection/components/store/translationStore/strings.turkish.js +18 -0
  103. package/dist/collection/components/store/translationStore/strings.vietnamese.js +18 -0
  104. package/dist/collection/components/stripe/zonos-address/zonos-address.js +63 -24
  105. package/dist/collection/components/stripe/zonos-link-authentication/zonos-link-authentication.js +1 -1
  106. package/dist/collection/components/stripe/zonos-payment/zonos-payment.js +1 -1
  107. package/dist/collection/components/utils/api/prepCalculateLandedCost.js +19 -1
  108. package/dist/collection/components/utils/api/triggerBuildLandedCost.js +11 -5
  109. package/dist/collection/components/utils/getBorderRadius.js +7 -3
  110. package/dist/collection/types/ILanguage.js +22 -0
  111. package/dist/collection/types/generated/graphql.customer.types.js +13 -0
  112. package/dist/collection/types/index.js +0 -1
  113. package/dist/collection/types/styles/Color.js +9 -0
  114. package/dist/components/ILanguage.js +24 -0
  115. package/dist/components/getBorderRadius.js +7 -3
  116. package/dist/components/index.js +0 -1
  117. package/dist/components/isDarkColor.js +1 -1
  118. package/dist/components/localization.js +365 -1
  119. package/dist/components/{cart.js → stripe.js} +273 -228
  120. package/dist/components/submitGtag.js +1 -1
  121. package/dist/components/zonos-address2.js +65 -26
  122. package/dist/components/zonos-badge2.js +8 -10
  123. package/dist/components/zonos-banner2.js +3 -9
  124. package/dist/components/zonos-button2.js +10 -12
  125. package/dist/components/zonos-card2.js +3 -5
  126. package/dist/components/zonos-cart-items2.js +1 -1
  127. package/dist/components/zonos-cart-subtotal2.js +14 -8
  128. package/dist/components/zonos-checkbox.d.ts +11 -0
  129. package/dist/components/zonos-checkbox.js +6 -0
  130. package/dist/components/zonos-checkbox2.js +87 -0
  131. package/dist/components/zonos-checkout-finish2.js +3 -3
  132. package/dist/components/zonos-checkout-footer.d.ts +11 -0
  133. package/dist/components/zonos-checkout-footer.js +6 -0
  134. package/dist/components/zonos-checkout-footer2.js +109 -0
  135. package/dist/components/zonos-checkout-payment2.js +2 -2
  136. package/dist/components/zonos-checkout.js +75 -52
  137. package/dist/components/zonos-collapse2.js +3 -3
  138. package/dist/components/zonos-component.js +1 -1
  139. package/dist/components/zonos-controller.js +4 -4
  140. package/dist/components/zonos-country-flag2.js +3 -5
  141. package/dist/components/zonos-country-select2.js +26 -19
  142. package/dist/components/zonos-custom-message2.js +3 -3
  143. package/dist/components/zonos-customer-info2.js +30 -10
  144. package/dist/components/zonos-dialog2.js +4 -4
  145. package/dist/components/zonos-hello-dialog-footer2.js +23 -10
  146. package/dist/components/zonos-hello-dialog2.js +41 -23
  147. package/dist/components/zonos-hello.js +31 -19
  148. package/dist/components/zonos-icon2.js +4 -4
  149. package/dist/components/zonos-language-select.d.ts +11 -0
  150. package/dist/components/zonos-language-select.js +6 -0
  151. package/dist/components/zonos-language-select2.js +87 -0
  152. package/dist/components/zonos-link-authentication2.js +2 -2
  153. package/dist/components/zonos-logo.js +44 -1
  154. package/dist/components/zonos-notification2.js +4 -6
  155. package/dist/components/zonos-payment2.js +2 -2
  156. package/dist/components/zonos-review2.js +4 -4
  157. package/dist/components/zonos-select-dialog-header.d.ts +11 -0
  158. package/dist/components/zonos-select-dialog-header.js +6 -0
  159. package/dist/components/zonos-select-dialog-header2.js +71 -0
  160. package/dist/components/zonos-shipping-rich-radio2.js +2 -2
  161. package/dist/components/zonos-shipping2.js +2 -2
  162. package/dist/components/zonos-spinner2.js +3 -3
  163. package/dist/components/zonos-text2.js +4 -7
  164. package/dist/components/zonos-tooltip.d.ts +11 -0
  165. package/dist/components/zonos-tooltip.js +6 -0
  166. package/dist/components/zonos-tooltip2.js +48 -0
  167. package/dist/components/zonos-v-stack2.js +4 -6
  168. package/dist/components/zonosStore.js +1 -1
  169. package/dist/esm/ILanguage-97790bee.js +24 -0
  170. package/dist/esm/app-globals-0f993ce5.js +3 -0
  171. package/dist/esm/{cart-7e7c7585.js → cart-bc3bb22e.js} +63 -18
  172. package/dist/esm/getBorderRadius-e9736f7e.js +20 -0
  173. package/dist/esm/index.js +1 -6
  174. package/dist/esm/{isDarkColor-8696cb70.js → isDarkColor-e982fa09.js} +1 -1
  175. package/dist/esm/loader.js +6 -4
  176. package/dist/esm/{localization-5d83fde2.js → localization-d8f6453b.js} +366 -2
  177. package/dist/esm/{submitGtag-776c5e10.js → submitGtag-bebe2cb0.js} +2 -2
  178. package/dist/esm/zonos-address_4.entry.js +282 -0
  179. package/dist/esm/zonos-badge_2.entry.js +52 -0
  180. package/dist/esm/zonos-banner.entry.js +4 -9
  181. package/dist/esm/{zonos-button_2.entry.js → zonos-button_3.entry.js} +42 -16
  182. package/dist/esm/zonos-card_2.entry.js +26 -14
  183. package/dist/esm/{zonos-cart-items_10.entry.js → zonos-cart-items_9.entry.js} +75 -83
  184. package/dist/esm/zonos-checkout.entry.js +12 -13
  185. package/dist/esm/zonos-component.entry.js +2 -2
  186. package/dist/esm/zonos-controller.entry.js +7 -7
  187. package/dist/esm/zonos-country-flag.entry.js +36 -0
  188. package/dist/esm/{zonos-country-flag_4.entry.js → zonos-country-select_3.entry.js} +30 -55
  189. package/dist/esm/zonos-elements.js +7 -5
  190. package/dist/esm/zonos-hello-dialog.entry.js +13 -8
  191. package/dist/esm/zonos-hello.entry.js +3 -3
  192. package/dist/esm/zonos-logo.entry.js +28 -0
  193. package/dist/esm/zonos-notification.entry.js +5 -6
  194. package/dist/esm/zonos-payment.entry.js +7 -7
  195. package/dist/esm/zonos-select-dialog-header_2.entry.js +40 -0
  196. package/dist/esm/zonos-shipping-rich-radio.entry.js +4 -4
  197. package/dist/esm/zonos-text.entry.js +4 -6
  198. package/dist/esm/{zonosStore-e59617f8.js → zonosStore-e6c7be3a.js} +1 -1
  199. package/dist/esm-es5/ILanguage-97790bee.js +1 -0
  200. package/dist/esm-es5/app-globals-0f993ce5.js +1 -0
  201. package/dist/esm-es5/cart-bc3bb22e.js +1 -0
  202. package/dist/esm-es5/getBorderRadius-e9736f7e.js +1 -0
  203. package/dist/esm-es5/index.js +0 -1
  204. package/dist/esm-es5/{isDarkColor-8696cb70.js → isDarkColor-e982fa09.js} +1 -1
  205. package/dist/esm-es5/loader.js +1 -1
  206. package/dist/esm-es5/localization-d8f6453b.js +1 -0
  207. package/dist/esm-es5/{submitGtag-776c5e10.js → submitGtag-bebe2cb0.js} +1 -1
  208. package/dist/esm-es5/zonos-address_4.entry.js +1 -0
  209. package/dist/esm-es5/zonos-badge_2.entry.js +1 -0
  210. package/dist/esm-es5/zonos-banner.entry.js +1 -1
  211. package/dist/esm-es5/zonos-button_3.entry.js +1 -0
  212. package/dist/esm-es5/zonos-card_2.entry.js +1 -1
  213. package/dist/esm-es5/zonos-cart-items_9.entry.js +1 -0
  214. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  215. package/dist/esm-es5/zonos-component.entry.js +1 -1
  216. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  217. package/dist/esm-es5/zonos-country-flag.entry.js +1 -0
  218. package/dist/esm-es5/zonos-country-select_3.entry.js +1 -0
  219. package/dist/esm-es5/zonos-elements.js +1 -1
  220. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  221. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  222. package/dist/esm-es5/zonos-logo.entry.js +1 -0
  223. package/dist/esm-es5/zonos-notification.entry.js +1 -1
  224. package/dist/esm-es5/zonos-payment.entry.js +1 -1
  225. package/dist/esm-es5/zonos-select-dialog-header_2.entry.js +1 -0
  226. package/dist/esm-es5/zonos-shipping-rich-radio.entry.js +1 -1
  227. package/dist/esm-es5/zonos-text.entry.js +1 -1
  228. package/dist/esm-es5/{zonosStore-e59617f8.js → zonosStore-e6c7be3a.js} +1 -1
  229. package/dist/scripts/insertTranslations.js +1 -0
  230. package/dist/scripts/loadZonos.js +1 -1
  231. package/dist/scripts/zonos.js +1 -1
  232. package/dist/scripts/zonosBase.js +1 -1
  233. package/dist/types/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.d.ts +2 -1
  234. package/dist/types/components/checkout/zonos-checkout/zonos-checkout-footer/zonos-checkout-footer.d.ts +7 -0
  235. package/dist/types/components/common/zonos-badge/zonos-badge.d.ts +1 -5
  236. package/dist/types/components/common/zonos-banner/zonos-banner.d.ts +0 -4
  237. package/dist/types/components/common/zonos-button/zonos-button.d.ts +1 -5
  238. package/dist/types/components/common/zonos-card/zonos-card.d.ts +0 -4
  239. package/dist/types/components/common/zonos-checkbox/zonos-checkbox.d.ts +42 -0
  240. package/dist/types/components/common/zonos-country-flag/zonos-country-flag.d.ts +0 -4
  241. package/dist/types/components/common/zonos-country-select/zonos-country-select.d.ts +1 -1
  242. package/dist/types/components/common/zonos-icon/zonos-icon.d.ts +1 -1
  243. package/dist/types/components/common/zonos-language-select/zonos-language-select.d.ts +9 -0
  244. package/dist/types/components/common/zonos-logo/zonos-logo.d.ts +0 -4
  245. package/dist/types/components/common/zonos-notification/zonos-notification.d.ts +0 -4
  246. package/dist/types/components/common/zonos-select-dialog-header/zonos-select-dialog-header.d.ts +12 -0
  247. package/dist/types/components/common/zonos-spinner/zonos-spinner.d.ts +1 -1
  248. package/dist/types/components/common/zonos-text/zonos-text.d.ts +1 -5
  249. package/dist/types/components/common/zonos-tooltip/zonos-tooltip.d.ts +12 -0
  250. package/dist/types/components/common/zonos-v-stack/zonos-v-stack.d.ts +0 -4
  251. package/dist/types/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.d.ts +5 -0
  252. package/dist/types/components/hello/zonos-hello-dialog/zonos-hello-dialog.d.ts +2 -0
  253. package/dist/types/components/store/checkout/stripe.d.ts +8 -0
  254. package/dist/types/components/store/hello/localization.d.ts +2 -1
  255. package/dist/types/components/store/translationStore/strings.arabic.d.ts +18 -0
  256. package/dist/types/components/store/translationStore/strings.base.d.ts +18 -0
  257. package/dist/types/components/store/translationStore/strings.chinese.d.ts +18 -0
  258. package/dist/types/components/store/translationStore/strings.danish.d.ts +18 -0
  259. package/dist/types/components/store/translationStore/strings.dutch.d.ts +18 -0
  260. package/dist/types/components/store/translationStore/strings.french.d.ts +18 -0
  261. package/dist/types/components/store/translationStore/strings.german.d.ts +18 -0
  262. package/dist/types/components/store/translationStore/strings.hebrew.d.ts +18 -0
  263. package/dist/types/components/store/translationStore/strings.indonesian.d.ts +18 -0
  264. package/dist/types/components/store/translationStore/strings.italian.d.ts +18 -0
  265. package/dist/types/components/store/translationStore/strings.japanese.d.ts +18 -0
  266. package/dist/types/components/store/translationStore/strings.korean.d.ts +18 -0
  267. package/dist/types/components/store/translationStore/strings.norwegian.d.ts +18 -0
  268. package/dist/types/components/store/translationStore/strings.polish.d.ts +18 -0
  269. package/dist/types/components/store/translationStore/strings.portuguese.d.ts +18 -0
  270. package/dist/types/components/store/translationStore/strings.russian.d.ts +18 -0
  271. package/dist/types/components/store/translationStore/strings.spanish.d.ts +18 -0
  272. package/dist/types/components/store/translationStore/strings.swedish.d.ts +18 -0
  273. package/dist/types/components/store/translationStore/strings.turkish.d.ts +18 -0
  274. package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +18 -0
  275. package/dist/types/components/stripe/zonos-address/zonos-address.d.ts +3 -0
  276. package/dist/types/components/utils/api/getLocaleMessages.d.ts +1 -1
  277. package/dist/types/components/utils/api/triggerBuildLandedCost.d.ts +18 -2
  278. package/dist/types/components/utils/changeDeepProperty.d.ts +1 -1
  279. package/dist/types/components/utils/changeDeepPropertyAtIndex.d.ts +1 -1
  280. package/dist/types/components/utils/getBorderRadius.d.ts +1 -1
  281. package/dist/types/components.d.ts +242 -116
  282. package/dist/types/types/ILanguage.d.ts +81 -0
  283. package/dist/types/types/checkout/CheckoutConfig.d.ts +3 -3
  284. package/dist/types/types/checkout/api/CalculateLandedCostRequest.d.ts +13 -0
  285. package/dist/types/types/generated/graphql.customer.types.d.ts +16 -4
  286. package/dist/types/types/generated/graphql.customer.types.ts +21 -4
  287. package/dist/types/types/generated/graphql.frontend.types.d.ts +6 -6
  288. package/dist/types/types/generated/graphql.frontend.types.ts +14 -4
  289. package/dist/types/types/index.d.ts +1 -1
  290. package/dist/types/types/styles/Color.d.ts +2 -0
  291. package/dist/zonos-elements/index.esm.js +0 -1
  292. package/dist/zonos-elements/{p-626b5a52.system.entry.js → p-00d63df1.system.entry.js} +1 -1
  293. package/dist/zonos-elements/p-04f63cea.entry.js +1 -0
  294. package/dist/zonos-elements/{p-120df5be.system.entry.js → p-06652d87.system.entry.js} +1 -1
  295. package/dist/zonos-elements/p-066c5893.system.js +1 -0
  296. package/dist/zonos-elements/p-0c7480a5.entry.js +1 -0
  297. package/dist/zonos-elements/p-16ad90ca.js +1 -0
  298. package/dist/zonos-elements/p-16b74c31.system.js +1 -0
  299. package/dist/zonos-elements/{p-0024f8c2.js → p-17550a10.js} +1 -1
  300. package/dist/zonos-elements/p-1d16a6fb.js +1 -0
  301. package/dist/zonos-elements/p-1ea68e3b.entry.js +1 -0
  302. package/dist/zonos-elements/{p-28d7b75d.entry.js → p-1ed530cc.entry.js} +1 -1
  303. package/dist/zonos-elements/p-289c8b1a.system.entry.js +1 -0
  304. package/dist/zonos-elements/{p-eb631432.system.entry.js → p-2a00c270.system.entry.js} +1 -1
  305. package/dist/zonos-elements/{p-be23cc91.system.entry.js → p-32bca9c8.system.entry.js} +1 -1
  306. package/dist/zonos-elements/p-37f53a79.entry.js +1 -0
  307. package/dist/zonos-elements/p-394cf1cf.js +1 -0
  308. package/dist/zonos-elements/{p-af910392.js → p-3ef27745.js} +1 -1
  309. package/dist/zonos-elements/{p-18e09138.system.entry.js → p-458fd100.system.entry.js} +1 -1
  310. package/dist/zonos-elements/{p-e8da4463.js → p-47fac33f.js} +1 -1
  311. package/dist/zonos-elements/p-49a764e9.system.entry.js +1 -0
  312. package/dist/zonos-elements/p-4fafb2a5.system.entry.js +1 -0
  313. package/dist/zonos-elements/p-4fb71a93.js +1 -0
  314. package/dist/zonos-elements/{p-dc09ca69.system.js → p-50287643.system.js} +1 -1
  315. package/dist/zonos-elements/p-50ea2036.system.js +1 -0
  316. package/dist/zonos-elements/p-5276c61b.system.entry.js +1 -0
  317. package/dist/zonos-elements/p-56ba5cbf.system.js +1 -0
  318. package/dist/zonos-elements/{p-5a0264e8.system.entry.js → p-5a113c3d.system.entry.js} +1 -1
  319. package/dist/zonos-elements/p-6308b347.entry.js +1 -0
  320. package/dist/zonos-elements/p-63d1b1fe.entry.js +1 -0
  321. package/dist/zonos-elements/p-7347ee7c.system.entry.js +1 -0
  322. package/dist/zonos-elements/p-7a6144b1.entry.js +1 -0
  323. package/dist/zonos-elements/p-7dd8e8ba.system.entry.js +1 -0
  324. package/dist/zonos-elements/p-8c26a080.system.js +1 -0
  325. package/dist/zonos-elements/p-96aabe02.entry.js +1 -0
  326. package/dist/zonos-elements/p-9cbbf261.system.entry.js +1 -0
  327. package/dist/zonos-elements/p-a33745e9.entry.js +1 -0
  328. package/dist/zonos-elements/{p-aca66e4b.entry.js → p-a4de3fb2.entry.js} +1 -1
  329. package/dist/zonos-elements/p-a682fd38.system.entry.js +1 -0
  330. package/dist/zonos-elements/p-abe7524f.system.js +1 -0
  331. package/dist/zonos-elements/{p-73174d0c.system.entry.js → p-b81a0577.system.entry.js} +1 -1
  332. package/dist/zonos-elements/p-ba1a111a.system.entry.js +1 -0
  333. package/dist/zonos-elements/p-ba43275e.entry.js +1 -0
  334. package/dist/zonos-elements/p-bd6a2095.entry.js +1 -0
  335. package/dist/zonos-elements/{p-f82e000f.system.entry.js → p-c4321084.system.entry.js} +1 -1
  336. package/dist/zonos-elements/{p-b58d2231.entry.js → p-cdf114a2.entry.js} +1 -1
  337. package/dist/zonos-elements/p-d5ae3cbb.system.entry.js +1 -0
  338. package/dist/zonos-elements/p-d5d7c8f5.entry.js +1 -0
  339. package/dist/zonos-elements/p-dd7729fd.system.entry.js +1 -0
  340. package/dist/zonos-elements/p-de339fb6.entry.js +1 -0
  341. package/dist/zonos-elements/p-e1255160.js +1 -0
  342. package/dist/zonos-elements/p-e8a9bc56.entry.js +1 -0
  343. package/dist/zonos-elements/{p-7f68c103.system.js → p-e99d79d9.system.js} +1 -1
  344. package/dist/zonos-elements/p-ec25f180.entry.js +1 -0
  345. package/dist/zonos-elements/{p-ead79548.system.js → p-f49dfd06.system.js} +1 -1
  346. package/dist/zonos-elements/{p-31fa76da.entry.js → p-f6f5f644.entry.js} +1 -1
  347. package/dist/zonos-elements/p-fcc4f140.system.js +1 -0
  348. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  349. package/dist/zonos-elements/zonos-elements.js +1 -1
  350. package/package.json +17 -18
  351. package/dist/cjs/zonos-address_2.cjs.entry.js +0 -161
  352. package/dist/cjs/zonos-badge.cjs.entry.js +0 -38
  353. package/dist/cjs/zonos-icon.cjs.entry.js +0 -35
  354. package/dist/collection/components/common/zonos-country-select/assets/arrowLeftBlue.svg +0 -1
  355. package/dist/components/zonos-logo2.js +0 -48
  356. package/dist/esm/getBorderRadius-9e4cb3b1.js +0 -16
  357. package/dist/esm/zonos-address_2.entry.js +0 -156
  358. package/dist/esm/zonos-badge.entry.js +0 -34
  359. package/dist/esm/zonos-icon.entry.js +0 -31
  360. package/dist/esm-es5/cart-7e7c7585.js +0 -1
  361. package/dist/esm-es5/getBorderRadius-9e4cb3b1.js +0 -1
  362. package/dist/esm-es5/localization-5d83fde2.js +0 -1
  363. package/dist/esm-es5/zonos-address_2.entry.js +0 -1
  364. package/dist/esm-es5/zonos-badge.entry.js +0 -1
  365. package/dist/esm-es5/zonos-button_2.entry.js +0 -1
  366. package/dist/esm-es5/zonos-cart-items_10.entry.js +0 -1
  367. package/dist/esm-es5/zonos-country-flag_4.entry.js +0 -1
  368. package/dist/esm-es5/zonos-icon.entry.js +0 -1
  369. package/dist/zonos-elements/p-027abb50.entry.js +0 -1
  370. package/dist/zonos-elements/p-09c5dc1b.system.entry.js +0 -1
  371. package/dist/zonos-elements/p-1156ae5d.system.entry.js +0 -1
  372. package/dist/zonos-elements/p-12ecf765.system.js +0 -1
  373. package/dist/zonos-elements/p-174239da.system.js +0 -1
  374. package/dist/zonos-elements/p-1c00ffea.system.entry.js +0 -1
  375. package/dist/zonos-elements/p-21793192.entry.js +0 -1
  376. package/dist/zonos-elements/p-2589a038.system.entry.js +0 -1
  377. package/dist/zonos-elements/p-3319e4db.entry.js +0 -1
  378. package/dist/zonos-elements/p-357f0c61.entry.js +0 -1
  379. package/dist/zonos-elements/p-410045c5.system.entry.js +0 -1
  380. package/dist/zonos-elements/p-4d0861e9.system.js +0 -1
  381. package/dist/zonos-elements/p-54ef8ff3.entry.js +0 -1
  382. package/dist/zonos-elements/p-6444a4b9.entry.js +0 -1
  383. package/dist/zonos-elements/p-65f4af1a.system.entry.js +0 -1
  384. package/dist/zonos-elements/p-661bc488.entry.js +0 -1
  385. package/dist/zonos-elements/p-6c47083f.entry.js +0 -1
  386. package/dist/zonos-elements/p-6d454281.entry.js +0 -1
  387. package/dist/zonos-elements/p-7748735d.entry.js +0 -1
  388. package/dist/zonos-elements/p-78886ed6.system.entry.js +0 -1
  389. package/dist/zonos-elements/p-8ebc0b64.js +0 -1
  390. package/dist/zonos-elements/p-a6f2e282.system.js +0 -1
  391. package/dist/zonos-elements/p-b035f9e5.system.js +0 -1
  392. package/dist/zonos-elements/p-b1ffb37b.entry.js +0 -1
  393. package/dist/zonos-elements/p-bd02a65c.entry.js +0 -1
  394. package/dist/zonos-elements/p-bea31a7b.system.entry.js +0 -1
  395. package/dist/zonos-elements/p-cfe4a318.js +0 -1
  396. package/dist/zonos-elements/p-e4a2a1b0.system.entry.js +0 -1
  397. package/dist/zonos-elements/p-f2733cc7.js +0 -1
  398. package/dist/zonos-elements/p-f342e7c7.entry.js +0 -1
  399. /package/dist/cjs/{index-3ead02fe.js → index-72767498.js} +0 -0
  400. /package/dist/esm/{index-81a199ef.js → index-b5be4dc3.js} +0 -0
  401. /package/dist/esm-es5/{index-81a199ef.js → index-b5be4dc3.js} +0 -0
  402. /package/dist/zonos-elements/{p-4d8545e1.js → p-58127116.js} +0 -0
  403. /package/dist/zonos-elements/{p-4d39efb6.system.js → p-d1ab0823.system.js} +0 -0
@@ -1,16 +1,243 @@
1
- import { z as zonosStore, c as createStore } from './zonosStore.js';
2
- import { h as handleFetch, l as logError, a as log, b as localizationStore, t as translate } from './localization.js';
1
+ import { c as createStore, z as zonosStore } from './zonosStore.js';
2
+ import { b as log, l as logError, t as translate, a as localizationStore, h as handleFetch } from './localization.js';
3
3
  import { i as isDarkColor } from './isDarkColor.js';
4
4
  import { g as getBorderRadius } from './getBorderRadius.js';
5
5
 
6
+ const formatDate = ({ date, formatOptions = { day: 'numeric', weekday: 'long', year: 'numeric' }, }) => {
7
+ // format date to Thursday 3, 2023
8
+ return new Intl.DateTimeFormat('en-US', formatOptions).format(date);
9
+ };
10
+
11
+ const getDaysDifference = (targetDate) => {
12
+ const currentDate = new Date();
13
+ const timeDifference = targetDate.getTime() - currentDate.getTime();
14
+ const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); // Convert milliseconds to days
15
+ return daysDifference;
16
+ };
17
+
18
+ const { onChange: onChange$1, reset: reset$1, state: cartStore, } = createStore(() => ({
19
+ checkoutSessionId: sessionStorage.getItem('zonos--checkout-session-id') || null,
20
+ currency: 'USD',
21
+ dutiesTaxFees: 0,
22
+ error: null,
23
+ exchangeRate: null,
24
+ isSelectedShippingAboveDeminimis: false,
25
+ isSelectedShippingGuarantee: false,
26
+ items: [],
27
+ landedCostData: null,
28
+ selectedLandedCost: null,
29
+ selectedShippingOption: null,
30
+ selectedShippingOptionExpectedDate: '',
31
+ selectedShippingOptionTransitTime: '',
32
+ shipping: 0,
33
+ shippingData: null,
34
+ step: 'customer-info',
35
+ subtotal: 0,
36
+ total: 0,
37
+ }));
38
+ /**
39
+ * Format shipping transit info to be displayed on UI
40
+ * @returns
41
+ * - expectedDate: Thursday, Aug 12
42
+ * - maxTransit: 5
43
+ * - minTransit: 3
44
+ */
45
+ const cartStoreGetShippingTransitInfo = (item) => {
46
+ const minTransit = item.minTransitAt
47
+ ? getDaysDifference(new Date(item.minTransitAt))
48
+ : '';
49
+ const maxTransit = item.maxTransitAt
50
+ ? getDaysDifference(new Date(item.maxTransitAt))
51
+ : '';
52
+ const expectedDate = item.minTransitAt
53
+ ? formatDate({
54
+ date: new Date(item.minTransitAt),
55
+ })
56
+ : '';
57
+ return {
58
+ expectedDate,
59
+ maxTransit,
60
+ minTransit,
61
+ };
62
+ };
63
+ const cartStoreReset = () => {
64
+ sessionStorage.removeItem('zonos--checkout-session-id');
65
+ // reset cart store
66
+ reset$1();
67
+ };
68
+ const cartStoreUpdateToErrorState = ({ messages, title, }) => {
69
+ cartStoreReset();
70
+ stripeStoreReset();
71
+ cartStore.step = 'error';
72
+ cartStore.error = {
73
+ messages,
74
+ title,
75
+ };
76
+ };
77
+ const cartStoreApplySubtotals = (subtotals) => {
78
+ // update exchange rate so we can use it to display cart items
79
+ cartStore.exchangeRate = subtotals.exchangeRate;
80
+ cartStore.dutiesTaxFees = subtotals.landedCostTotal;
81
+ cartStore.subtotal = subtotals.items;
82
+ cartStore.total = subtotals.total;
83
+ cartStore.currency = subtotals.presentmentCurrencyCode;
84
+ };
85
+ const cartStoreReCalculateTotal = async ({ currency, itemsAmount, landedCostId, }) => {
86
+ if (landedCostId && cartStore.selectedLandedCost) {
87
+ // update cart total right away if we have landed cost id to avoid order total flickering
88
+ const subtotals = cartStore.selectedLandedCost.subtotals;
89
+ cartStoreApplySubtotals(subtotals);
90
+ log('Exchange rate updated for cart items (landed cost subtotal)', 'info', cartStore.exchangeRate);
91
+ }
92
+ // update checkout session
93
+ if (!cartStore.checkoutSessionId) {
94
+ logError('Could not update cart total without checkout session id');
95
+ return false;
96
+ }
97
+ const { json } = await stripeStoreUpdateCheckoutSession({
98
+ currency,
99
+ id: cartStore.checkoutSessionId,
100
+ itemsAmount,
101
+ landedCostId,
102
+ presentmentCountryCode: localizationStore.selectedCountryCode,
103
+ });
104
+ if (!json) {
105
+ // do nothing if we can't get checkout session
106
+ logError('Error occurs when updating checkout session');
107
+ cartStoreUpdateToErrorState({
108
+ messages: [
109
+ translate("There's been an error updating your checkout session. Please reload and try again or contact support if the error persists"),
110
+ ],
111
+ title: translate('Error updating Checkout'),
112
+ });
113
+ return false;
114
+ }
115
+ if (!landedCostId) {
116
+ // This is when first open the checkout modal and we just want to get info from the old cart session.
117
+ // use subtotals from checkout session to update cart total
118
+ cartStoreApplySubtotals(json.checkoutSessionUpdate.subtotals);
119
+ log('Exchange rate updated for cart items (checkout session update)', 'info', cartStore.exchangeRate);
120
+ }
121
+ return true;
122
+ };
123
+ const cartStoreUpdateSelectedShippingOption = async (selectedShippingOption) => {
124
+ var _a, _b, _c, _d, _e;
125
+ cartStore.selectedShippingOption = selectedShippingOption;
126
+ // update shipping transit info
127
+ const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(cartStore.selectedShippingOption);
128
+ cartStore.selectedShippingOptionExpectedDate = expectedDate;
129
+ cartStore.selectedShippingOptionTransitTime =
130
+ minTransit && maxTransit
131
+ ? `${minTransit}-${maxTransit}`
132
+ : `${minTransit || maxTransit}`;
133
+ const selectedLandedCost = (_a = cartStore.landedCostData) === null || _a === void 0 ? void 0 : _a.find(checkoutSessionPresentment => {
134
+ var _a, _b, _c;
135
+ return ((_b = (_a = checkoutSessionPresentment.landedCost) === null || _a === void 0 ? void 0 : _a.shipmentRating) === null || _b === void 0 ? void 0 : _b.id) ===
136
+ ((_c = cartStore.selectedShippingOption) === null || _c === void 0 ? void 0 : _c.id);
137
+ });
138
+ // save selected landed cost for later use
139
+ cartStore.selectedLandedCost = selectedLandedCost || null;
140
+ if (!selectedLandedCost) {
141
+ // do nothing if we can't find landed cost for selected shipping option
142
+ return false;
143
+ }
144
+ // update shipping value and dutiesTaxFees on selectedShippingOption change
145
+ cartStore.shipping = selectedLandedCost.subtotals.shipping;
146
+ // update deminimis status
147
+ const isGuarantee = ((_b = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _b === void 0 ? void 0 : _b.landedCostGuaranteeCode) === 'ZONOS';
148
+ // one item in deminimis with type of duty and tax has threshold value is "ABOVE"
149
+ const isAboveDeminimis = !!((_d = (_c = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _c === void 0 ? void 0 : _c.deMinimis) === null || _d === void 0 ? void 0 : _d.find(item => ['DUTY', 'TAX'].includes(item.type) && item.threshold === 'ABOVE'));
150
+ cartStore.isSelectedShippingAboveDeminimis = isAboveDeminimis;
151
+ cartStore.isSelectedShippingGuarantee = isGuarantee;
152
+ // update session with selected landed cost
153
+ const updateCalulateStatus = await cartStoreReCalculateTotal({
154
+ landedCostId: (_e = selectedLandedCost.landedCost) === null || _e === void 0 ? void 0 : _e.id,
155
+ });
156
+ return updateCalulateStatus;
157
+ };
158
+ onChange$1('checkoutSessionId', () => {
159
+ if (!cartStore.checkoutSessionId) {
160
+ sessionStorage.removeItem('zonos--checkout-session-id');
161
+ return;
162
+ }
163
+ sessionStorage.setItem('zonos--checkout-session-id', cartStore.checkoutSessionId);
164
+ });
165
+ const cartStoreUpdateItems = async (items) => {
166
+ var _a;
167
+ cartStore.items = items;
168
+ const currency = (_a = items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode;
169
+ const total = items.reduce((amt, item) => {
170
+ return amt + item.amount * item.quantity;
171
+ }, 0);
172
+ if (!currency || !total) {
173
+ // do nothing if we can't get currency or total
174
+ return;
175
+ }
176
+ cartStore.currency = currency;
177
+ // set loading state here because this is first load checkout session when we already have checkout session id stored
178
+ stripeStore.isFetchingSession = true;
179
+ await cartStoreReCalculateTotal({
180
+ currency: currency,
181
+ itemsAmount: total,
182
+ });
183
+ stripeStore.isFetchingSession = false;
184
+ };
185
+ const cartStoreResetSelectedShippingOption = () => {
186
+ cartStore.selectedShippingOption = null;
187
+ cartStore.isSelectedShippingAboveDeminimis = false;
188
+ cartStore.isSelectedShippingGuarantee = false;
189
+ cartStore.selectedShippingOptionExpectedDate = '';
190
+ cartStore.selectedShippingOptionTransitTime = '';
191
+ cartStore.shipping = 0;
192
+ };
193
+ const cartStoreNextStep = () => {
194
+ if (cartStore.step === 'customer-info') {
195
+ cartStore.step = 'shipping';
196
+ }
197
+ else if (cartStore.step === 'shipping') {
198
+ cartStore.step = 'payment';
199
+ }
200
+ else if (cartStore.step === 'payment') {
201
+ cartStore.step = 'finish';
202
+ }
203
+ };
204
+ const cartStorePreviousStep = () => {
205
+ if (cartStore.step === 'payment') {
206
+ cartStore.step = 'shipping';
207
+ }
208
+ else if (cartStore.step === 'shipping') {
209
+ cartStore.step = 'customer-info';
210
+ // reset selected shipping option
211
+ cartStoreResetSelectedShippingOption();
212
+ }
213
+ };
214
+
6
215
  const prepCalculateLandedCost = () => {
7
216
  // maybe we don't need email now for prefetch the landed cost
8
217
  const stripeLinkData = stripeStore.stripeLinkEventData;
9
218
  const stripeAddressData = stripeStore.stripeAddressEventData;
10
- if (!stripeAddressData || !stripeAddressData.complete) {
219
+ const stripeBillingAddressData = stripeStore.stripeShippingSameAsBilling
220
+ ? stripeStore.stripeAddressEventData
221
+ : stripeStore.stripeBillingAddressEventData;
222
+ if (!(stripeAddressData === null || stripeAddressData === void 0 ? void 0 : stripeAddressData.complete) || !(stripeBillingAddressData === null || stripeBillingAddressData === void 0 ? void 0 : stripeBillingAddressData.complete)) {
11
223
  throw new Error('Missing stripe address data');
12
224
  }
13
225
  return {
226
+ billingAddress: {
227
+ addressLine1: stripeBillingAddressData.value.address.line1,
228
+ addressLine2: stripeBillingAddressData.value.address.line2 || '',
229
+ city: stripeBillingAddressData.value.address.city,
230
+ country: stripeBillingAddressData.value.address.country,
231
+ postalCode: stripeBillingAddressData.value.address.postal_code,
232
+ state: stripeBillingAddressData.value.address.state,
233
+ },
234
+ billingContact: {
235
+ // firstName and lastName should be valid now since stripe only mark
236
+ // the address as complete when both fields are filled.
237
+ firstName: stripeBillingAddressData.value.firstName || '',
238
+ lastName: stripeBillingAddressData.value.lastName || '',
239
+ phone: stripeBillingAddressData.value.phone || '',
240
+ },
14
241
  checkoutSessionId: cartStore.checkoutSessionId || '',
15
242
  contact: {
16
243
  email: (stripeLinkData === null || stripeLinkData === void 0 ? void 0 : stripeLinkData.value.email) || '',
@@ -33,11 +260,17 @@ const prepCalculateLandedCost = () => {
33
260
  };
34
261
 
35
262
  const triggerBuildLandedCost = async (buildLandedCost) => {
36
- var _a;
263
+ var _a, _b, _c, _d;
37
264
  const data = prepCalculateLandedCost();
38
- const landedCost = await buildLandedCost(data.checkoutSessionId, data.contact, data.shippingAddress);
39
- if (!landedCost) {
40
- throw new Error('Failed to build landed cost');
265
+ const landedCost = await buildLandedCost({
266
+ billingAddress: data.billingAddress,
267
+ billingContact: data.billingContact,
268
+ checkoutSessionId: data.checkoutSessionId,
269
+ contact: data.contact,
270
+ shippingAddress: data.shippingAddress,
271
+ });
272
+ if (!landedCost || ((_a = landedCost.errors) === null || _a === void 0 ? void 0 : _a.length)) {
273
+ throw new Error(`Failed to build landed cost: ${((_c = (_b = landedCost === null || landedCost === void 0 ? void 0 : landedCost.errors) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.message) || 'Unknown error'}`);
41
274
  }
42
275
  // Validate the landed cost object to make sure the returned value from buildLandedCost has a valid schema
43
276
  const { errors, json } = await handleFetch(`${"https://v1.route.js.zonos.com"}/api/zonos-elements/validate-landed-cost`, {
@@ -48,7 +281,7 @@ const triggerBuildLandedCost = async (buildLandedCost) => {
48
281
  method: 'POST',
49
282
  });
50
283
  if (!json || errors.length) {
51
- throw new Error(`Invalid landed cost object: ${((_a = errors.find(Boolean)) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error'}`);
284
+ throw new Error(`Invalid landed cost object: ${((_d = errors.find(Boolean)) === null || _d === void 0 ? void 0 : _d.message) || 'Unknown error'}`);
52
285
  }
53
286
  return landedCost;
54
287
  };
@@ -112,7 +345,7 @@ const defaultVariable = ({ borderStyle, theme, }) => {
112
345
  }
113
346
  };
114
347
 
115
- const { onChange: onChange$1, reset: reset$1, state: stripeStore, } = createStore(() => ({
348
+ const { onChange, reset, state: stripeStore, } = createStore(() => ({
116
349
  clientSecret: sessionStorage.getItem('zonos--client-secret') || null,
117
350
  fetchingLandedCostAbordController: null,
118
351
  isFetchingLandedCost: false,
@@ -122,13 +355,17 @@ const { onChange: onChange$1, reset: reset$1, state: stripeStore, } = createStor
122
355
  stripeAddressEventData: null,
123
356
  stripeAddressUsedWhenFetchingLC: null,
124
357
  stripeBillingAddressElement: null,
358
+ stripeBillingAddressEventData: null,
359
+ stripeBillingAddressUsedWhenFetchingLC: null,
125
360
  stripeElements: null,
361
+ stripeElementsForBillingAddress: null,
126
362
  stripeElementsOptions: null,
127
363
  stripeLinkElement: null,
128
364
  stripeLinkEventData: null,
129
365
  stripeLinkUsedWhenFetchingLC: null,
130
366
  stripePaymentElement: null,
131
367
  stripePaymentEventData: null,
368
+ stripeShippingSameAsBilling: true,
132
369
  }));
133
370
  const getStripeOptions = ({ clientSecret, overrideBorderRaidus, overridePrimaryColor, overrideSecondaryColor, overrideTheme, }) => {
134
371
  const primaryColor = overridePrimaryColor || zonosStore.appearance.colorPrimary;
@@ -154,7 +391,7 @@ const getStripeOptions = ({ clientSecret, overrideBorderRaidus, overridePrimaryC
154
391
  };
155
392
  };
156
393
  const initStripeElements = async (props) => {
157
- var _a;
394
+ var _a, _b;
158
395
  const clientSecret = stripeStore.clientSecret;
159
396
  if (!stripeStore.stripe) {
160
397
  log('Skip. Stripe is not initialized');
@@ -171,17 +408,24 @@ const initStripeElements = async (props) => {
171
408
  // compare with the previous options to see if we need to update
172
409
  const isSameOptions = JSON.stringify(stripeOptions) ===
173
410
  JSON.stringify(stripeStore.stripeElementsOptions);
174
- if (!stripeStore.stripeElements) {
411
+ if (!stripeStore.stripeElements ||
412
+ !stripeStore.stripeElementsForBillingAddress) {
175
413
  // init stripe elements if it doesn't exist
176
414
  stripeStore.stripeElements = (_a = stripeStore.stripe) === null || _a === void 0 ? void 0 : _a.elements(stripeOptions);
177
415
  // save stripe elements options for later comparison
178
416
  stripeStore.stripeElementsOptions = stripeOptions;
179
417
  log('Stripe elements initialized');
418
+ // init stripe elements for billing address
419
+ stripeStore.stripeElementsForBillingAddress =
420
+ (_b = stripeStore.stripe) === null || _b === void 0 ? void 0 : _b.elements(stripeOptions);
421
+ log('Stripe elements for billing address initialized');
180
422
  return;
181
423
  }
182
424
  if (!isSameOptions) {
183
425
  // update elements with new option if it already exists
184
426
  stripeStore.stripeElements.update(stripeOptions);
427
+ // update elements for stripe billing address
428
+ stripeStore.stripeElementsForBillingAddress.update(stripeOptions);
185
429
  // save stripe elements options for later comparison
186
430
  stripeStore.stripeElementsOptions = stripeOptions;
187
431
  }
@@ -192,7 +436,7 @@ const stripeStoreReset = () => {
192
436
  // clean clientSecret so that we can start the new one.
193
437
  sessionStorage.removeItem('zonos--client-secret');
194
438
  // cleanup stripe elements
195
- reset$1();
439
+ reset();
196
440
  // set stripe back to window.Zonos.stripe
197
441
  stripeStore.stripe = window.Zonos.stripe;
198
442
  };
@@ -201,7 +445,7 @@ const stripeStoreReset = () => {
201
445
  * Purpose is to resend the request if the info used when fetching landed cost is different from the current info
202
446
  */
203
447
  const isPrefetchInfoOutdated = () => {
204
- var _a, _b, _c, _d;
448
+ var _a, _b, _c, _d, _e, _f;
205
449
  const hasAbortController = stripeStore.fetchingLandedCostAbordController;
206
450
  if (!hasAbortController) {
207
451
  // if there is no abort controller, this is a new request
@@ -211,26 +455,36 @@ const isPrefetchInfoOutdated = () => {
211
455
  JSON.stringify((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.value);
212
456
  const isAddressDataDirty = JSON.stringify((_c = stripeStore.stripeAddressUsedWhenFetchingLC) === null || _c === void 0 ? void 0 : _c.value) !==
213
457
  JSON.stringify((_d = stripeStore.stripeAddressEventData) === null || _d === void 0 ? void 0 : _d.value);
214
- return isLinkDataDirty || isAddressDataDirty;
458
+ const isBillingAddressDataDirty = !stripeStore.stripeShippingSameAsBilling &&
459
+ JSON.stringify((_e = stripeStore.stripeBillingAddressEventData) === null || _e === void 0 ? void 0 : _e.value) !==
460
+ JSON.stringify((_f = stripeStore.stripeBillingAddressUsedWhenFetchingLC) === null || _f === void 0 ? void 0 : _f.value);
461
+ return isLinkDataDirty || isAddressDataDirty || isBillingAddressDataDirty;
215
462
  };
216
463
  const stripeStorePrefetchLandedCost = async () => {
217
- var _a, _b, _c, _d;
464
+ var _a, _b, _c, _d, _e, _f;
218
465
  const stripeAddressReady = !!((_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.complete);
219
466
  const stripeLinkReady = !!((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.complete);
467
+ const stripeBillingAddressReady = stripeStore.stripeShippingSameAsBilling
468
+ ? !!((_c = stripeStore.stripeLinkEventData) === null || _c === void 0 ? void 0 : _c.complete)
469
+ : !!((_d = stripeStore.stripeBillingAddressEventData) === null || _d === void 0 ? void 0 : _d.complete);
220
470
  const shouldRefetch = isPrefetchInfoOutdated();
221
471
  if (shouldRefetch) {
222
472
  // if the info used when fetching landed cost is different from the current info, abort the previous request
223
- (_c = stripeStore.fetchingLandedCostAbordController) === null || _c === void 0 ? void 0 : _c.abort();
473
+ (_e = stripeStore.fetchingLandedCostAbordController) === null || _e === void 0 ? void 0 : _e.abort();
224
474
  stripeStore.fetchingLandedCostAbordController = null;
225
475
  }
226
476
  // only fetch if we are not fetching or we need to refetch
227
477
  if (stripeAddressReady &&
228
478
  stripeLinkReady &&
479
+ stripeBillingAddressReady &&
229
480
  (shouldRefetch || !stripeStore.isFetchingLandedCost)) {
230
481
  stripeStore.isFetchingLandedCost = true;
231
482
  if (stripeStore.stripeAddressEventData) {
232
483
  stripeStore.stripeAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeAddressEventData);
233
484
  }
485
+ if (stripeStore.stripeBillingAddressEventData) {
486
+ stripeStore.stripeBillingAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeBillingAddressEventData);
487
+ }
234
488
  if (stripeStore.stripeLinkEventData) {
235
489
  stripeStore.stripeLinkUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeLinkEventData);
236
490
  }
@@ -246,7 +500,7 @@ const stripeStorePrefetchLandedCost = async () => {
246
500
  cartStore.shippingData =
247
501
  (shipmentRatingCalculateWorkflow === null || shipmentRatingCalculateWorkflow === void 0 ? void 0 : shipmentRatingCalculateWorkflow.filter(Boolean)) || null;
248
502
  // apply new subtotal and total, this is mainly to show items in the presentment currency
249
- const firstLandedCostData = (_d = cartStore.landedCostData) === null || _d === void 0 ? void 0 : _d.find(Boolean);
503
+ const firstLandedCostData = (_f = cartStore.landedCostData) === null || _f === void 0 ? void 0 : _f.find(Boolean);
250
504
  const subtotals = !!firstLandedCostData
251
505
  ? firstLandedCostData.subtotals
252
506
  : null;
@@ -415,7 +669,7 @@ const stripeStoreUpdateCheckoutSession = async ({ currency, id, itemsAmount, lan
415
669
  }
416
670
  return { errors: [], json };
417
671
  };
418
- onChange$1('clientSecret', clientSecret => {
672
+ onChange('clientSecret', clientSecret => {
419
673
  // update stripe elements when client secret changes
420
674
  if (clientSecret && stripeStore.stripe) {
421
675
  sessionStorage.setItem('zonos--client-secret', clientSecret);
@@ -425,213 +679,4 @@ onChange$1('clientSecret', clientSecret => {
425
679
  }
426
680
  });
427
681
 
428
- const formatDate = ({ date, formatOptions = { day: 'numeric', weekday: 'long', year: 'numeric' }, }) => {
429
- // format date to Thursday 3, 2023
430
- return new Intl.DateTimeFormat('en-US', formatOptions).format(date);
431
- };
432
-
433
- const getDaysDifference = (targetDate) => {
434
- const currentDate = new Date();
435
- const timeDifference = targetDate.getTime() - currentDate.getTime();
436
- const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); // Convert milliseconds to days
437
- return daysDifference;
438
- };
439
-
440
- const { onChange, reset, state: cartStore, } = createStore(() => ({
441
- checkoutSessionId: sessionStorage.getItem('zonos--checkout-session-id') || null,
442
- currency: 'USD',
443
- dutiesTaxFees: 0,
444
- error: null,
445
- exchangeRate: null,
446
- isSelectedShippingAboveDeminimis: false,
447
- isSelectedShippingGuarantee: false,
448
- items: [],
449
- landedCostData: null,
450
- selectedLandedCost: null,
451
- selectedShippingOption: null,
452
- selectedShippingOptionExpectedDate: '',
453
- selectedShippingOptionTransitTime: '',
454
- shipping: 0,
455
- shippingData: null,
456
- step: 'customer-info',
457
- subtotal: 0,
458
- total: 0,
459
- }));
460
- /**
461
- * Format shipping transit info to be displayed on UI
462
- * @returns
463
- * - expectedDate: Thursday, Aug 12
464
- * - maxTransit: 5
465
- * - minTransit: 3
466
- */
467
- const cartStoreGetShippingTransitInfo = (item) => {
468
- const minTransit = item.minTransitAt
469
- ? getDaysDifference(new Date(item.minTransitAt))
470
- : '';
471
- const maxTransit = item.maxTransitAt
472
- ? getDaysDifference(new Date(item.maxTransitAt))
473
- : '';
474
- const expectedDate = item.minTransitAt
475
- ? formatDate({
476
- date: new Date(item.minTransitAt),
477
- })
478
- : '';
479
- return {
480
- expectedDate,
481
- maxTransit,
482
- minTransit,
483
- };
484
- };
485
- const cartStoreReset = () => {
486
- sessionStorage.removeItem('zonos--checkout-session-id');
487
- // reset cart store
488
- reset();
489
- };
490
- const cartStoreUpdateToErrorState = ({ messages, title, }) => {
491
- cartStoreReset();
492
- stripeStoreReset();
493
- cartStore.step = 'error';
494
- cartStore.error = {
495
- messages,
496
- title,
497
- };
498
- };
499
- const cartStoreApplySubtotals = (subtotals) => {
500
- // update exchange rate so we can use it to display cart items
501
- cartStore.exchangeRate = subtotals.exchangeRate;
502
- cartStore.dutiesTaxFees = subtotals.landedCostTotal;
503
- cartStore.subtotal = subtotals.items;
504
- cartStore.total = subtotals.total;
505
- cartStore.currency = subtotals.presentmentCurrencyCode;
506
- };
507
- const cartStoreReCalculateTotal = async ({ currency, itemsAmount, landedCostId, }) => {
508
- if (landedCostId && cartStore.selectedLandedCost) {
509
- // update cart total right away if we have landed cost id to avoid order total flickering
510
- const subtotals = cartStore.selectedLandedCost.subtotals;
511
- cartStoreApplySubtotals(subtotals);
512
- log('Exchange rate updated for cart items (landed cost subtotal)', 'info', cartStore.exchangeRate);
513
- }
514
- // update checkout session
515
- if (!cartStore.checkoutSessionId) {
516
- logError('Could not update cart total without checkout session id');
517
- return false;
518
- }
519
- const { json } = await stripeStoreUpdateCheckoutSession({
520
- currency,
521
- id: cartStore.checkoutSessionId,
522
- itemsAmount,
523
- landedCostId,
524
- presentmentCountryCode: localizationStore.selectedCountryCode,
525
- });
526
- if (!json) {
527
- // do nothing if we can't get checkout session
528
- logError('Error occurs when updating checkout session');
529
- cartStoreUpdateToErrorState({
530
- messages: [
531
- translate("There's been an error updating your checkout session. Please reload and try again or contact support if the error persists"),
532
- ],
533
- title: translate('Error updating Checkout'),
534
- });
535
- return false;
536
- }
537
- if (!landedCostId) {
538
- // This is when first open the checkout modal and we just want to get info from the old cart session.
539
- // use subtotals from checkout session to update cart total
540
- cartStoreApplySubtotals(json.checkoutSessionUpdate.subtotals);
541
- log('Exchange rate updated for cart items (checkout session update)', 'info', cartStore.exchangeRate);
542
- }
543
- return true;
544
- };
545
- const cartStoreUpdateSelectedShippingOption = async (selectedShippingOption) => {
546
- var _a, _b, _c, _d, _e;
547
- cartStore.selectedShippingOption = selectedShippingOption;
548
- // update shipping transit info
549
- const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(cartStore.selectedShippingOption);
550
- cartStore.selectedShippingOptionExpectedDate = expectedDate;
551
- cartStore.selectedShippingOptionTransitTime =
552
- minTransit && maxTransit
553
- ? `${minTransit}-${maxTransit}`
554
- : `${minTransit || maxTransit}`;
555
- const selectedLandedCost = (_a = cartStore.landedCostData) === null || _a === void 0 ? void 0 : _a.find(checkoutSessionPresentment => {
556
- var _a, _b, _c;
557
- return ((_b = (_a = checkoutSessionPresentment.landedCost) === null || _a === void 0 ? void 0 : _a.shipmentRating) === null || _b === void 0 ? void 0 : _b.id) ===
558
- ((_c = cartStore.selectedShippingOption) === null || _c === void 0 ? void 0 : _c.id);
559
- });
560
- // save selected landed cost for later use
561
- cartStore.selectedLandedCost = selectedLandedCost || null;
562
- if (!selectedLandedCost) {
563
- // do nothing if we can't find landed cost for selected shipping option
564
- return false;
565
- }
566
- // update shipping value and dutiesTaxFees on selectedShippingOption change
567
- cartStore.shipping = selectedLandedCost.subtotals.shipping;
568
- // update deminimis status
569
- const isGuarantee = ((_b = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _b === void 0 ? void 0 : _b.landedCostGuaranteeCode) === 'ZONOS';
570
- // one item in deminimis with type of duty and tax has threshold value is "ABOVE"
571
- const isAboveDeminimis = !!((_d = (_c = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _c === void 0 ? void 0 : _c.deMinimis) === null || _d === void 0 ? void 0 : _d.find(item => ['DUTY', 'TAX'].includes(item.type) && item.threshold === 'ABOVE'));
572
- cartStore.isSelectedShippingAboveDeminimis = isAboveDeminimis;
573
- cartStore.isSelectedShippingGuarantee = isGuarantee;
574
- // update session with selected landed cost
575
- const updateCalulateStatus = await cartStoreReCalculateTotal({
576
- landedCostId: (_e = selectedLandedCost.landedCost) === null || _e === void 0 ? void 0 : _e.id,
577
- });
578
- return updateCalulateStatus;
579
- };
580
- onChange('checkoutSessionId', () => {
581
- if (!cartStore.checkoutSessionId) {
582
- sessionStorage.removeItem('zonos--checkout-session-id');
583
- return;
584
- }
585
- sessionStorage.setItem('zonos--checkout-session-id', cartStore.checkoutSessionId);
586
- });
587
- const cartStoreUpdateItems = async (items) => {
588
- var _a;
589
- cartStore.items = items;
590
- const currency = (_a = items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode;
591
- const total = items.reduce((amt, item) => {
592
- return amt + item.amount * item.quantity;
593
- }, 0);
594
- if (!currency || !total) {
595
- // do nothing if we can't get currency or total
596
- return;
597
- }
598
- cartStore.currency = currency;
599
- // set loading state here because this is first load checkout session when we already have checkout session id stored
600
- stripeStore.isFetchingSession = true;
601
- await cartStoreReCalculateTotal({
602
- currency: currency,
603
- itemsAmount: total,
604
- });
605
- stripeStore.isFetchingSession = false;
606
- };
607
- const cartStoreResetSelectedShippingOption = () => {
608
- cartStore.selectedShippingOption = null;
609
- cartStore.isSelectedShippingAboveDeminimis = false;
610
- cartStore.isSelectedShippingGuarantee = false;
611
- cartStore.selectedShippingOptionExpectedDate = '';
612
- cartStore.selectedShippingOptionTransitTime = '';
613
- cartStore.shipping = 0;
614
- };
615
- const cartStoreNextStep = () => {
616
- if (cartStore.step === 'customer-info') {
617
- cartStore.step = 'shipping';
618
- }
619
- else if (cartStore.step === 'shipping') {
620
- cartStore.step = 'payment';
621
- }
622
- else if (cartStore.step === 'payment') {
623
- cartStore.step = 'finish';
624
- }
625
- };
626
- const cartStorePreviousStep = () => {
627
- if (cartStore.step === 'payment') {
628
- cartStore.step = 'shipping';
629
- }
630
- else if (cartStore.step === 'shipping') {
631
- cartStore.step = 'customer-info';
632
- // reset selected shipping option
633
- cartStoreResetSelectedShippingOption();
634
- }
635
- };
636
-
637
- export { cartStoreApplySubtotals as a, cartStoreGetShippingTransitInfo as b, cartStore as c, cartStoreNextStep as d, cartStorePreviousStep as e, cartStoreReCalculateTotal as f, cartStoreReset as g, cartStoreUpdateItems as h, cartStoreUpdateSelectedShippingOption as i, cartStoreUpdateToErrorState as j, stripeStorePrefetchLandedCost as k, initStripeElements as l, stripeStoreInitCheckoutSession as m, stripeStoreConfirmPayment as n, stripeStoreReset as o, stripeStoreRetrievePayment as p, stripeStore as s };
682
+ export { stripeStorePrefetchLandedCost as a, cartStoreUpdateItems as b, cartStore as c, cartStoreReset as d, stripeStoreInitCheckoutSession as e, cartStoreUpdateToErrorState as f, cartStoreNextStep as g, stripeStoreConfirmPayment as h, initStripeElements as i, stripeStoreReset as j, cartStorePreviousStep as k, stripeStoreRetrievePayment as l, cartStoreUpdateSelectedShippingOption as m, cartStoreGetShippingTransitInfo as n, stripeStore as s };
@@ -1,5 +1,5 @@
1
1
  import { z as zonosStore } from './zonosStore.js';
2
- import { a as log } from './localization.js';
2
+ import { b as log } from './localization.js';
3
3
 
4
4
  /**
5
5
  * Submit a gtag event if the gtag function is available.