@zonos/elements 1.3.263 → 1.3.265

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 (283) hide show
  1. package/dist/cjs/{cart-02a93797.js → cart-c325b9e4.js} +2 -1
  2. package/dist/cjs/{hasInclusivePrice-751ef38b.js → hasInclusivePrice-40358cb1.js} +1 -1
  3. package/dist/cjs/index.cjs.js +7 -7
  4. package/dist/cjs/{invoice-215b8d2b.js → invoice-ac9414df.js} +2 -2
  5. package/dist/cjs/{isCollectMobileTablet-0d909501.js → isCollectMobileTablet-92fa5e8f.js} +2 -2
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/{localization-68ebf7c6.js → localization-06cc0379.js} +15 -1
  8. package/dist/cjs/{paypal-f8a0cca3.js → paypal-b52e1f24.js} +2 -2
  9. package/dist/cjs/{placeTestOrder-ce734b60.js → placeTestOrder-d93a6f2b.js} +2 -2
  10. package/dist/cjs/{renderCheckoutCurrency-d163c1c4.js → renderCheckoutCurrency-1f521ea7.js} +2 -2
  11. package/dist/cjs/zonos-address-display_8.cjs.entry.js +19 -19
  12. package/dist/cjs/zonos-address_4.cjs.entry.js +8 -8
  13. package/dist/cjs/zonos-badge.cjs.entry.js +3 -3
  14. package/dist/cjs/zonos-button_3.cjs.entry.js +3 -3
  15. package/dist/cjs/zonos-card_5.cjs.entry.js +9 -9
  16. package/dist/cjs/zonos-cart-items_12.cjs.entry.js +98 -17
  17. package/dist/cjs/zonos-checkbox_2.cjs.entry.js +5 -5
  18. package/dist/cjs/zonos-checkout.cjs.entry.js +219 -60
  19. package/dist/cjs/zonos-collapse.cjs.entry.js +2 -2
  20. package/dist/cjs/zonos-collect-cart-items_3.cjs.entry.js +6 -6
  21. package/dist/cjs/zonos-collect-finish_6.cjs.entry.js +22 -20
  22. package/dist/cjs/zonos-collect.cjs.entry.js +4 -4
  23. package/dist/cjs/zonos-component.cjs.entry.js +1 -1
  24. package/dist/cjs/zonos-controller.cjs.entry.js +3 -3
  25. package/dist/cjs/zonos-country-flag.cjs.entry.js +1 -1
  26. package/dist/cjs/zonos-country-select_4.cjs.entry.js +13 -11
  27. package/dist/cjs/zonos-elements.cjs.js +1 -1
  28. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +6 -6
  29. package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
  30. package/dist/cjs/zonos-input.cjs.entry.js +4 -4
  31. package/dist/cjs/zonos-invoice-cart-items_2.cjs.entry.js +8 -8
  32. package/dist/cjs/zonos-invoice-finish_5.cjs.entry.js +17 -15
  33. package/dist/cjs/zonos-invoice.cjs.entry.js +4 -4
  34. package/dist/cjs/zonos-language-select_2.cjs.entry.js +5 -5
  35. package/dist/cjs/zonos-link.cjs.entry.js +1 -1
  36. package/dist/cjs/zonos-logo.cjs.entry.js +2 -2
  37. package/dist/cjs/zonos-store-credit.cjs.entry.js +3 -3
  38. package/dist/cjs/zonos-stripe-input.cjs.entry.js +4 -4
  39. package/dist/cjs/zonos-tooltip.cjs.entry.js +2 -2
  40. package/dist/cjs/zonos-v-stack.cjs.entry.js +2 -2
  41. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.css +9 -0
  42. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +15 -1
  43. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/zonos-checkout-footer.css +5 -0
  44. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-footer/zonos-checkout-footer.js +4 -2
  45. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +61 -0
  46. package/dist/collection/components/checkout/zonos-collect/zonos-collect-cart-items/zonos-collect-cart-items.js +1 -1
  47. package/dist/collection/components/checkout/zonos-collect/zonos-collect-finish/zonos-collect-finish.js +2 -2
  48. package/dist/collection/components/checkout/zonos-collect/zonos-collect-footer/zonos-collect-footer.css +5 -0
  49. package/dist/collection/components/checkout/zonos-collect/zonos-collect-footer/zonos-collect-footer.js +5 -3
  50. package/dist/collection/components/checkout/zonos-collect/zonos-collect-review/zonos-collect-review.js +3 -3
  51. package/dist/collection/components/checkout/zonos-collect/zonos-collect-subtotal/zonos-collect-subtotal.js +5 -5
  52. package/dist/collection/components/checkout/zonos-invoice/zonos-invoice-cart-items/zonos-invoice-cart-items.js +2 -2
  53. package/dist/collection/components/checkout/zonos-invoice/zonos-invoice-finish/zonos-invoice-finish.js +2 -2
  54. package/dist/collection/components/checkout/zonos-invoice/zonos-invoice-footer/zonos-invoice-footer.css +5 -0
  55. package/dist/collection/components/checkout/zonos-invoice/zonos-invoice-footer/zonos-invoice-footer.js +5 -3
  56. package/dist/collection/components/checkout/zonos-invoice/zonos-invoice-review/zonos-invoice-review.js +3 -3
  57. package/dist/collection/components/checkout/zonos-invoice/zonos-invoice-subtotal/zonos-invoice-subtotal.js +2 -2
  58. package/dist/collection/components/common/zonos-badge/zonos-badge.js +3 -3
  59. package/dist/collection/components/common/zonos-button/zonos-button.js +3 -3
  60. package/dist/collection/components/common/zonos-card/zonos-card.js +4 -4
  61. package/dist/collection/components/common/zonos-checkbox/zonos-checkbox.js +3 -3
  62. package/dist/collection/components/common/zonos-checkout-progress-tabs/zonos-checkout-progress-tabs.js +3 -3
  63. package/dist/collection/components/common/zonos-collapse/zonos-collapse.js +2 -2
  64. package/dist/collection/components/common/zonos-confirm-dialog/zonos-confirm-dialog.js +3 -3
  65. package/dist/collection/components/common/zonos-country-select/zonos-country-select.js +3 -3
  66. package/dist/collection/components/common/zonos-custom-message/zonos-custom-message.js +2 -2
  67. package/dist/collection/components/common/zonos-dialog/zonos-dialog.js +3 -3
  68. package/dist/collection/components/common/zonos-h-stack/zonos-h-stack.js +2 -2
  69. package/dist/collection/components/common/zonos-input/zonos-input.js +4 -4
  70. package/dist/collection/components/common/zonos-language-select/zonos-language-select.js +2 -2
  71. package/dist/collection/components/common/zonos-link/zonos-link.js +1 -1
  72. package/dist/collection/components/common/zonos-loading-overlay/zonos-loading-overlay.js +1 -1
  73. package/dist/collection/components/common/zonos-logo/zonos-logo.js +2 -2
  74. package/dist/collection/components/common/zonos-rest-state/zonos-rest-state.js +3 -3
  75. package/dist/collection/components/common/zonos-select-dialog-header/zonos-select-dialog-header.js +2 -2
  76. package/dist/collection/components/common/zonos-skeleton/zonos-skeleton.js +1 -1
  77. package/dist/collection/components/common/zonos-stripe-input/zonos-stripe-input.js +4 -4
  78. package/dist/collection/components/common/zonos-stripe-phone-input/zonos-stripe-phone-input.js +5 -5
  79. package/dist/collection/components/common/zonos-stripe-select/zonos-stripe-select.js +5 -5
  80. package/dist/collection/components/common/zonos-toggle/zonos-toggle.js +2 -2
  81. package/dist/collection/components/common/zonos-tooltip/zonos-tooltip.js +2 -2
  82. package/dist/collection/components/common/zonos-v-stack/zonos-v-stack.js +2 -2
  83. package/dist/collection/components/common/zonos-virtual-scroll/zonos-virtual-scroll.js +2 -2
  84. package/dist/collection/components/component-template/zonos-component/zonos-component.js +1 -1
  85. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.css +5 -0
  86. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.js +4 -2
  87. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.js +4 -4
  88. package/dist/collection/components/main/zonos-controller.js +1 -1
  89. package/dist/collection/components/paypal/zonos-paypal-payment.js +1 -1
  90. package/dist/collection/components/store/checkout/cart.js +1 -0
  91. package/dist/collection/components/stripe/zonos-address/zonos-address.js +2 -2
  92. package/dist/collection/components/stripe/zonos-custom-address/zonos-address-suggestions/zonos-address-suggestions.js +2 -2
  93. package/dist/collection/components/stripe/zonos-custom-address/zonos-custom-address.js +2 -2
  94. package/dist/collection/components/stripe/zonos-payment/zonos-payment.js +1 -1
  95. package/dist/collection/components/utils/checkout/bigcommerceStorefrontApi.js +1 -1
  96. package/dist/collection/components/utils/checkout/getBigCommerceCustomerAddresses.js +99 -0
  97. package/dist/collection/components/utils/hello/currencyConversion/currencyDisplay.js +15 -0
  98. package/dist/collection/components/utils/hello/currencyConversion/currencyFormat.js +1 -1
  99. package/dist/collection/components/utils/parseLinkedText.js +65 -0
  100. package/dist/esm/{cart-34b11708.js → cart-0625a766.js} +2 -1
  101. package/dist/esm/{hasInclusivePrice-dfb21fc9.js → hasInclusivePrice-afc0dd6e.js} +1 -1
  102. package/dist/esm/index.js +7 -7
  103. package/dist/esm/{invoice-6d8bdf21.js → invoice-0daa7f74.js} +2 -2
  104. package/dist/esm/{isCollectMobileTablet-85403c93.js → isCollectMobileTablet-8d3fb5f4.js} +2 -2
  105. package/dist/esm/loader.js +1 -1
  106. package/dist/esm/{localization-2e523b35.js → localization-ee06df70.js} +15 -1
  107. package/dist/esm/{paypal-d3b3d967.js → paypal-78c3572c.js} +2 -2
  108. package/dist/esm/{placeTestOrder-e1d6dfcd.js → placeTestOrder-18de7b6f.js} +2 -2
  109. package/dist/esm/{renderCheckoutCurrency-cc72a6c2.js → renderCheckoutCurrency-ba1702db.js} +2 -2
  110. package/dist/esm/zonos-address-display_8.entry.js +19 -19
  111. package/dist/esm/zonos-address_4.entry.js +8 -8
  112. package/dist/esm/zonos-badge.entry.js +3 -3
  113. package/dist/esm/zonos-button_3.entry.js +3 -3
  114. package/dist/esm/zonos-card_5.entry.js +9 -9
  115. package/dist/esm/zonos-cart-items_12.entry.js +98 -17
  116. package/dist/esm/zonos-checkbox_2.entry.js +5 -5
  117. package/dist/esm/zonos-checkout.entry.js +220 -61
  118. package/dist/esm/zonos-collapse.entry.js +2 -2
  119. package/dist/esm/zonos-collect-cart-items_3.entry.js +6 -6
  120. package/dist/esm/zonos-collect-finish_6.entry.js +22 -20
  121. package/dist/esm/zonos-collect.entry.js +4 -4
  122. package/dist/esm/zonos-component.entry.js +1 -1
  123. package/dist/esm/zonos-controller.entry.js +3 -3
  124. package/dist/esm/zonos-country-flag.entry.js +1 -1
  125. package/dist/esm/zonos-country-select_4.entry.js +13 -11
  126. package/dist/esm/zonos-elements.js +1 -1
  127. package/dist/esm/zonos-hello-dialog.entry.js +6 -6
  128. package/dist/esm/zonos-hello.entry.js +1 -1
  129. package/dist/esm/zonos-input.entry.js +4 -4
  130. package/dist/esm/zonos-invoice-cart-items_2.entry.js +8 -8
  131. package/dist/esm/zonos-invoice-finish_5.entry.js +17 -15
  132. package/dist/esm/zonos-invoice.entry.js +4 -4
  133. package/dist/esm/zonos-language-select_2.entry.js +5 -5
  134. package/dist/esm/zonos-link.entry.js +1 -1
  135. package/dist/esm/zonos-logo.entry.js +2 -2
  136. package/dist/esm/zonos-store-credit.entry.js +3 -3
  137. package/dist/esm/zonos-stripe-input.entry.js +4 -4
  138. package/dist/esm/zonos-tooltip.entry.js +2 -2
  139. package/dist/esm/zonos-v-stack.entry.js +2 -2
  140. package/dist/esm-es5/{cart-34b11708.js → cart-0625a766.js} +1 -1
  141. package/dist/esm-es5/{hasInclusivePrice-dfb21fc9.js → hasInclusivePrice-afc0dd6e.js} +1 -1
  142. package/dist/esm-es5/index.js +1 -1
  143. package/dist/esm-es5/{invoice-6d8bdf21.js → invoice-0daa7f74.js} +1 -1
  144. package/dist/esm-es5/{isCollectMobileTablet-85403c93.js → isCollectMobileTablet-8d3fb5f4.js} +1 -1
  145. package/dist/esm-es5/loader.js +1 -1
  146. package/dist/esm-es5/{localization-2e523b35.js → localization-ee06df70.js} +1 -1
  147. package/dist/esm-es5/{paypal-d3b3d967.js → paypal-78c3572c.js} +1 -1
  148. package/dist/esm-es5/{placeTestOrder-e1d6dfcd.js → placeTestOrder-18de7b6f.js} +1 -1
  149. package/dist/esm-es5/{renderCheckoutCurrency-cc72a6c2.js → renderCheckoutCurrency-ba1702db.js} +1 -1
  150. package/dist/esm-es5/zonos-address-display_8.entry.js +1 -1
  151. package/dist/esm-es5/zonos-address_4.entry.js +1 -1
  152. package/dist/esm-es5/zonos-badge.entry.js +1 -1
  153. package/dist/esm-es5/zonos-button_3.entry.js +1 -1
  154. package/dist/esm-es5/zonos-card_5.entry.js +1 -1
  155. package/dist/esm-es5/zonos-cart-items_12.entry.js +1 -1
  156. package/dist/esm-es5/zonos-checkbox_2.entry.js +1 -1
  157. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  158. package/dist/esm-es5/zonos-collapse.entry.js +1 -1
  159. package/dist/esm-es5/zonos-collect-cart-items_3.entry.js +1 -1
  160. package/dist/esm-es5/zonos-collect-finish_6.entry.js +1 -1
  161. package/dist/esm-es5/zonos-collect.entry.js +1 -1
  162. package/dist/esm-es5/zonos-component.entry.js +1 -1
  163. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  164. package/dist/esm-es5/zonos-country-flag.entry.js +1 -1
  165. package/dist/esm-es5/zonos-country-select_4.entry.js +1 -1
  166. package/dist/esm-es5/zonos-elements.js +1 -1
  167. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  168. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  169. package/dist/esm-es5/zonos-input.entry.js +1 -1
  170. package/dist/esm-es5/zonos-invoice-cart-items_2.entry.js +1 -1
  171. package/dist/esm-es5/zonos-invoice-finish_5.entry.js +1 -1
  172. package/dist/esm-es5/zonos-invoice.entry.js +1 -1
  173. package/dist/esm-es5/zonos-language-select_2.entry.js +1 -1
  174. package/dist/esm-es5/zonos-link.entry.js +1 -1
  175. package/dist/esm-es5/zonos-logo.entry.js +1 -1
  176. package/dist/esm-es5/zonos-store-credit.entry.js +1 -1
  177. package/dist/esm-es5/zonos-stripe-input.entry.js +1 -1
  178. package/dist/esm-es5/zonos-tooltip.entry.js +1 -1
  179. package/dist/esm-es5/zonos-v-stack.entry.js +1 -1
  180. package/dist/scripts/index.d.ts +6 -0
  181. package/dist/scripts/index.js +1 -1
  182. package/dist/scripts/loadZonos.js +1 -1
  183. package/dist/scripts/zonos.js +1 -1
  184. package/dist/types/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.d.ts +7 -0
  185. package/dist/types/components/checkout/zonos-checkout/zonos-checkout.d.ts +9 -0
  186. package/dist/types/components/store/checkout/cart.d.ts +5 -0
  187. package/dist/types/components/utils/checkout/bigcommerceStorefrontApi.d.ts +22 -11
  188. package/dist/types/components/utils/checkout/getBigCommerceCustomerAddresses.d.ts +26 -0
  189. package/dist/types/components/utils/parseLinkedText.d.ts +24 -0
  190. package/dist/types/types/checkout/CheckoutConfig.d.ts +6 -0
  191. package/dist/zonos-elements/index.esm.js +1 -1
  192. package/dist/zonos-elements/{p-17b6f9ff.system.entry.js → p-0529a06b.system.entry.js} +1 -1
  193. package/dist/zonos-elements/{p-155b4425.entry.js → p-0b4ba025.entry.js} +1 -1
  194. package/dist/zonos-elements/{p-c361d520.system.entry.js → p-0f9a04fe.system.entry.js} +1 -1
  195. package/dist/zonos-elements/{p-2b40fab2.entry.js → p-105b7ebe.entry.js} +1 -1
  196. package/dist/zonos-elements/{p-b1c76c38.system.entry.js → p-16948eea.system.entry.js} +1 -1
  197. package/dist/zonos-elements/{p-dc71be6f.system.entry.js → p-19a1cc70.system.entry.js} +1 -1
  198. package/dist/zonos-elements/p-1ce71a7d.entry.js +1 -0
  199. package/dist/zonos-elements/{p-5290d104.entry.js → p-1ed2827f.entry.js} +1 -1
  200. package/dist/zonos-elements/{p-5496e9ae.system.js → p-24aae506.system.js} +1 -1
  201. package/dist/zonos-elements/{p-92f40018.system.entry.js → p-2555ba6b.system.entry.js} +1 -1
  202. package/dist/zonos-elements/p-26374593.system.entry.js +1 -0
  203. package/dist/zonos-elements/{p-30b19a4e.system.entry.js → p-274a7c0e.system.entry.js} +1 -1
  204. package/dist/zonos-elements/{p-1b5d90ee.system.entry.js → p-281063f4.system.entry.js} +1 -1
  205. package/dist/zonos-elements/{p-fb87172c.entry.js → p-283ffaad.entry.js} +1 -1
  206. package/dist/zonos-elements/p-29b60bf3.system.js +1 -1
  207. package/dist/zonos-elements/{p-024a4af5.entry.js → p-30a0aed1.entry.js} +1 -1
  208. package/dist/zonos-elements/{p-e06936f4.entry.js → p-32ecece3.entry.js} +1 -1
  209. package/dist/zonos-elements/{p-de44cccd.system.entry.js → p-349bdc03.system.entry.js} +1 -1
  210. package/dist/zonos-elements/{p-adeaa7cf.entry.js → p-34dc7755.entry.js} +1 -1
  211. package/dist/zonos-elements/{p-c2b86522.js → p-3686190f.js} +1 -1
  212. package/dist/zonos-elements/{p-356b2068.js → p-37f47658.js} +1 -1
  213. package/dist/zonos-elements/{p-9c5cce08.system.entry.js → p-3a23ec5f.system.entry.js} +1 -1
  214. package/dist/zonos-elements/{p-562fbdab.js → p-3d6ce58a.js} +1 -1
  215. package/dist/zonos-elements/{p-2381985c.entry.js → p-3fbdb83f.entry.js} +1 -1
  216. package/dist/zonos-elements/{p-47a58a38.system.entry.js → p-407b49f1.system.entry.js} +1 -1
  217. package/dist/zonos-elements/p-41f2e301.entry.js +1 -0
  218. package/dist/zonos-elements/{p-926c33b1.system.entry.js → p-42518502.system.entry.js} +1 -1
  219. package/dist/zonos-elements/{p-6a11cccc.system.entry.js → p-4477556a.system.entry.js} +1 -1
  220. package/dist/zonos-elements/{p-45ceb26f.system.entry.js → p-4a4c3af1.system.entry.js} +1 -1
  221. package/dist/zonos-elements/{p-bccae0df.entry.js → p-4baa51ef.entry.js} +1 -1
  222. package/dist/zonos-elements/{p-96f8cea8.entry.js → p-5353cfa4.entry.js} +1 -1
  223. package/dist/zonos-elements/{p-5d32f10f.system.entry.js → p-5678c044.system.entry.js} +1 -1
  224. package/dist/zonos-elements/{p-a3936c44.system.entry.js → p-595e2a7d.system.entry.js} +1 -1
  225. package/dist/zonos-elements/{p-15161658.entry.js → p-59aa5785.entry.js} +1 -1
  226. package/dist/zonos-elements/{p-227a1ecc.system.js → p-59e16c6f.system.js} +1 -1
  227. package/dist/zonos-elements/{p-a076cf7f.system.js → p-62db5d7c.system.js} +1 -1
  228. package/dist/zonos-elements/{p-20e1a5a0.entry.js → p-66edcaa4.entry.js} +1 -1
  229. package/dist/zonos-elements/p-69e2a7dd.js +1 -0
  230. package/dist/zonos-elements/{p-b8710131.entry.js → p-6b9ad020.entry.js} +1 -1
  231. package/dist/zonos-elements/p-6ef88d96.system.entry.js +1 -0
  232. package/dist/zonos-elements/p-6f8abf4f.js +1 -0
  233. package/dist/zonos-elements/{p-7297f6bd.system.entry.js → p-72058aac.system.entry.js} +1 -1
  234. package/dist/zonos-elements/{p-501d16ad.system.entry.js → p-72833da8.system.entry.js} +1 -1
  235. package/dist/zonos-elements/{p-8331aa21.system.entry.js → p-79f3c227.system.entry.js} +1 -1
  236. package/dist/zonos-elements/{p-1f107c84.entry.js → p-7c312bc2.entry.js} +1 -1
  237. package/dist/zonos-elements/p-85cc83e5.system.entry.js +1 -0
  238. package/dist/zonos-elements/{p-0f3b9ed7.entry.js → p-86ed51fd.entry.js} +1 -1
  239. package/dist/zonos-elements/{p-4d0b8897.system.js → p-8753cb36.system.js} +1 -1
  240. package/dist/zonos-elements/p-8a01157e.system.entry.js +1 -0
  241. package/dist/zonos-elements/{p-7e313e45.entry.js → p-8a21ed2d.entry.js} +1 -1
  242. package/dist/zonos-elements/{p-191661c6.system.entry.js → p-90a19f4c.system.entry.js} +1 -1
  243. package/dist/zonos-elements/p-9b2d6f06.entry.js +1 -0
  244. package/dist/zonos-elements/{p-22a8b44b.system.js → p-9bd63d7a.system.js} +1 -1
  245. package/dist/zonos-elements/{p-60a391b8.system.js → p-a054c5eb.system.js} +1 -1
  246. package/dist/zonos-elements/{p-a50d095f.js → p-a52ddeb5.js} +1 -1
  247. package/dist/zonos-elements/{p-51c60875.system.entry.js → p-a5f5993f.system.entry.js} +1 -1
  248. package/dist/zonos-elements/{p-65ea8ae4.js → p-a901d002.js} +1 -1
  249. package/dist/zonos-elements/{p-73765370.system.entry.js → p-aaf9d8a4.system.entry.js} +1 -1
  250. package/dist/zonos-elements/{p-3ae1a543.entry.js → p-ac54de99.entry.js} +1 -1
  251. package/dist/zonos-elements/p-b32cd0c5.system.js +1 -0
  252. package/dist/zonos-elements/{p-f440cd53.entry.js → p-b4b23475.entry.js} +1 -1
  253. package/dist/zonos-elements/p-bb0ce525.entry.js +1 -0
  254. package/dist/zonos-elements/p-c3ee352b.entry.js +1 -0
  255. package/dist/zonos-elements/{p-07c228a7.entry.js → p-cc481c69.entry.js} +1 -1
  256. package/dist/zonos-elements/{p-4d776228.entry.js → p-d1ff24f5.entry.js} +1 -1
  257. package/dist/zonos-elements/p-d2b91bb9.entry.js +1 -0
  258. package/dist/zonos-elements/{p-1c1149ff.js → p-dfe45cfd.js} +1 -1
  259. package/dist/zonos-elements/{p-e0ea6e24.entry.js → p-e5582c35.entry.js} +1 -1
  260. package/dist/zonos-elements/{p-7dbac3ae.system.entry.js → p-e6cc5a25.system.entry.js} +1 -1
  261. package/dist/zonos-elements/{p-7b6e65d6.system.js → p-e755ab57.system.js} +1 -1
  262. package/dist/zonos-elements/p-e89a411c.system.entry.js +1 -0
  263. package/dist/zonos-elements/{p-bee55d71.entry.js → p-eaa79ed8.entry.js} +1 -1
  264. package/dist/zonos-elements/{p-25b5ac23.system.entry.js → p-ec6472c9.system.entry.js} +1 -1
  265. package/dist/zonos-elements/{p-b2d462f9.system.js → p-f4f71ae4.system.js} +1 -1
  266. package/dist/zonos-elements/{p-235ee1d3.entry.js → p-f9c715ad.entry.js} +1 -1
  267. package/dist/zonos-elements/{p-50a15e3d.system.entry.js → p-fb684748.system.entry.js} +1 -1
  268. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  269. package/package.json +1 -1
  270. package/dist/zonos-elements/p-06d8f294.entry.js +0 -1
  271. package/dist/zonos-elements/p-1fb6b787.entry.js +0 -1
  272. package/dist/zonos-elements/p-3baf98a0.system.entry.js +0 -1
  273. package/dist/zonos-elements/p-4039b72d.system.entry.js +0 -1
  274. package/dist/zonos-elements/p-5834833a.entry.js +0 -1
  275. package/dist/zonos-elements/p-5aa86f9c.entry.js +0 -1
  276. package/dist/zonos-elements/p-70c485df.js +0 -1
  277. package/dist/zonos-elements/p-79a7998f.system.entry.js +0 -1
  278. package/dist/zonos-elements/p-8603fb37.system.entry.js +0 -1
  279. package/dist/zonos-elements/p-97f0eda6.system.js +0 -1
  280. package/dist/zonos-elements/p-c4d057b0.js +0 -1
  281. package/dist/zonos-elements/p-cda0b441.entry.js +0 -1
  282. package/dist/zonos-elements/p-e4792f63.system.entry.js +0 -1
  283. package/dist/zonos-elements/p-fe5303d1.entry.js +0 -1
@@ -1,18 +1,18 @@
1
1
  import { r as registerInstance, e as getAssetPath, h, a as Host, F as Fragment, d as createEvent, g as getElement } from './index-cfd394c8.js';
2
- import { d as cartStore, I as cartStoreHasOneEligibleItem, J as stripeStoreApplyPromoCode, K as stripeStoreRemovePromoCode, b as stripeStore, C as stripeStoreReset, c as stripeStoreRetrievePayment, t as trackConversionEvent, L as stripeStoreResetPromoCode, M as stripeStoreMessageBasedOnStatus, N as storeCreditStore, O as storeCreditStoreReset, x as storeCreditStoreCoversFullAmount, r as cartStoreNextStep, P as stripeStoreTranslateAddressToLatin, Q as extractName, D as cartStoreOnChange, R as stripeStoreAsyncAddressUpdate, H as cartStoreUpdateSelectedShippingOption, S as cartStoreGetShippingTransitInfo, T as cartStoreGetMethod, U as sortServiceLevelOptionsByAmount } from './cart-34b11708.js';
3
- import { t as translate, l as localizationStore, s as storageStore, c as localizationStoreOnChange } from './localization-2e523b35.js';
4
- import { r as renderCheckoutCurrency } from './renderCheckoutCurrency-cc72a6c2.js';
2
+ import { d as cartStore, I as cartStoreHasOneEligibleItem, J as stripeStoreApplyPromoCode, K as stripeStoreRemovePromoCode, b as stripeStore, C as stripeStoreReset, c as stripeStoreRetrievePayment, t as trackConversionEvent, L as stripeStoreResetPromoCode, M as stripeStoreMessageBasedOnStatus, N as storeCreditStore, O as storeCreditStoreReset, x as storeCreditStoreCoversFullAmount, r as cartStoreNextStep, P as stripeStoreTranslateAddressToLatin, Q as extractName, D as cartStoreOnChange, R as stripeStoreAsyncAddressUpdate, H as cartStoreUpdateSelectedShippingOption, S as cartStoreGetShippingTransitInfo, T as cartStoreGetMethod, U as sortServiceLevelOptionsByAmount } from './cart-0625a766.js';
3
+ import { t as translate, l as localizationStore, s as storageStore, c as localizationStoreOnChange } from './localization-ee06df70.js';
4
+ import { r as renderCheckoutCurrency } from './renderCheckoutCurrency-ba1702db.js';
5
5
  import { c as cleanHtmlMarkdown } from './cleanHtmlMarkdown-5f7856f2.js';
6
6
  import { c as classes } from './classes-0d95c529.js';
7
7
  import { z as zonosStore, h as zonosStoreOnChange, g as getZonosStoreTheme, f as zonosStoreFontFamily } from './zonosStore-9662b071.js';
8
- import { D as DUTY_KEY, T as TAXES_KEY, h as hasInclusivePrice } from './hasInclusivePrice-dfb21fc9.js';
9
- import { s as submitAnalytics, c as paypalStoreReset, a as paypalStore } from './paypal-d3b3d967.js';
8
+ import { D as DUTY_KEY, T as TAXES_KEY, h as hasInclusivePrice } from './hasInclusivePrice-afc0dd6e.js';
9
+ import { s as submitAnalytics, c as paypalStoreReset, a as paypalStore } from './paypal-78c3572c.js';
10
10
  import { h as handleFetch, s as sendErrorLog, j as jsonParse, g as getIsTestMode, i as isCheckoutMobile, a as getIsStagingMode } from './handleFetch-a844cac1.js';
11
11
  import { c as createCustomEvent } from './createCustomEvent-58159025.js';
12
12
  import { g as getBorderRadius } from './getBorderRadius-98c64be8.js';
13
13
  import { l as log, b as allLogs } from './VarianceTest-572cecf5.js';
14
14
  import { l as languages } from './ILanguage-cd6acb72.js';
15
- import { p as placeTestOrder } from './placeTestOrder-e1d6dfcd.js';
15
+ import { p as placeTestOrder } from './placeTestOrder-18de7b6f.js';
16
16
  import { i as isDarkColor } from './isDarkColor-0a8453e7.js';
17
17
  import { g as getContrastColor } from './getContrastColor-2340485f.js';
18
18
  import { i as isColorVariable } from './isColorVariable-0a94004f.js';
@@ -144,7 +144,73 @@ const ZonosCartRestrictedItems = class {
144
144
  };
145
145
  ZonosCartRestrictedItems.style = ZonosCartRestrictedItemsStyle0;
146
146
 
147
- const zonosCartSubtotalCss = ":host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host .zonos--cart-table{width:100%;border:none;border-collapse:collapse;overflow:auto;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column{padding:20px 8px;vertical-align:top}:host .zonos--cart-table .zonos--column:last-child{text-align:right}:host .zonos--cart-table .zonos--column:first-child{width:60px}:host .zonos--title-with-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}:host .zonos--cart-subtotal-title,:host .zonos--cart-subtotal-price,:host .zonos--cart-promo-code-col{border-bottom:1px solid var(--zonos-elements-gray-200)}:host .zonos--cart-duty-tax-price{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:end;align-items:flex-end;gap:5px}:host .zonos--cart-subtotal-price{text-align:right}:host .zonos--cart-subtotal-price zonos-text{white-space:nowrap}:host .zonos--cart-subtotal-price zonos-text,:host .zonos--cart-pay-total zonos-text{white-space:nowrap}:host .zonos--cart-promo-code-input-wrapper{display:-ms-flexbox;display:flex;gap:16px;-ms-flex-align:center;align-items:center}:host .zonos--cart-promo-code-input{-ms-flex:1;flex:1}";
147
+ // Markdown URL allows a single level of balanced `(...)` (e.g.
148
+ // `https://example.com/foo_(v2)`); anything deeper is rare in real-world URLs
149
+ // and we'd rather not write a recursive grammar. Bare URLs match greedily up
150
+ // to whitespace and rely on `BARE_URL_TRAILING_PUNCT` to peel off sentence
151
+ // punctuation.
152
+ const LINK_REGEX = /\[([^\]]+)\]\((https?:\/\/(?:[^\s()]|\([^\s()]*\))+)\)|(https?:\/\/[^\s]+)/g;
153
+ // Trailing characters that look like sentence punctuation rather than part of
154
+ // a URL. Stripped from bare URL matches so `Visit https://example.com.` keeps
155
+ // the period out of the link. `)` is intentionally excluded — Wikipedia-style
156
+ // URLs (e.g. `https://example.com/foo_(v2)`) embed balanced parens, and we
157
+ // don't want to break those.
158
+ const BARE_URL_TRAILING_PUNCT = /[.,;:!?\]}"']+$/;
159
+ /**
160
+ * Parse a string into an ordered list of plain-text and link segments.
161
+ *
162
+ * Supports Markdown-style links `[text](url)` and bare `https?://` URLs.
163
+ * Anything else is returned as a plain text segment so callers can render it
164
+ * as text (never `innerHTML`) — this is what keeps merchant-provided strings
165
+ * safe from HTML injection in [[customMessage]] banners.
166
+ *
167
+ * @example
168
+ * parseLinkedText('Visit [docs](https://example.com)')
169
+ * // [
170
+ * // { type: 'text', value: 'Visit ' },
171
+ * // { type: 'link', href: 'https://example.com', text: 'docs' },
172
+ * // ]
173
+ */
174
+ const parseLinkedText = (input) => {
175
+ var _a, _b;
176
+ const segments = [];
177
+ // Reset the shared regex state in case a previous call left a lastIndex.
178
+ LINK_REGEX.lastIndex = 0;
179
+ let lastIndex = 0;
180
+ let match;
181
+ while ((match = LINK_REGEX.exec(input)) !== null) {
182
+ if (match.index > lastIndex) {
183
+ segments.push({
184
+ type: 'text',
185
+ value: input.slice(lastIndex, match.index),
186
+ });
187
+ }
188
+ const [, mdText, mdUrl, plainUrl] = match;
189
+ // One of the alternations matched: either a markdown link (mdText + mdUrl)
190
+ // or a bare URL (plainUrl). Use the URL as both href and display text for
191
+ // bare URLs.
192
+ if (mdUrl && mdText) {
193
+ segments.push({ href: mdUrl, text: mdText, type: 'link' });
194
+ }
195
+ else if (plainUrl) {
196
+ const trailing = (_b = (_a = plainUrl.match(BARE_URL_TRAILING_PUNCT)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : '';
197
+ const url = trailing
198
+ ? plainUrl.slice(0, plainUrl.length - trailing.length)
199
+ : plainUrl;
200
+ segments.push({ href: url, text: url, type: 'link' });
201
+ if (trailing) {
202
+ segments.push({ type: 'text', value: trailing });
203
+ }
204
+ }
205
+ lastIndex = LINK_REGEX.lastIndex;
206
+ }
207
+ if (lastIndex < input.length) {
208
+ segments.push({ type: 'text', value: input.slice(lastIndex) });
209
+ }
210
+ return segments;
211
+ };
212
+
213
+ const zonosCartSubtotalCss = ":host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host .zonos--cart-table{width:100%;border:none;border-collapse:collapse;overflow:auto;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column{padding:20px 8px;vertical-align:top}:host .zonos--cart-table .zonos--column:last-child{text-align:right}:host .zonos--cart-table .zonos--column:first-child{width:60px}:host .zonos--title-with-icon{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}:host .zonos--cart-subtotal-title,:host .zonos--cart-subtotal-price,:host .zonos--cart-promo-code-col{border-bottom:1px solid var(--zonos-elements-gray-200)}:host .zonos--cart-duty-tax-price{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:end;align-items:flex-end;gap:5px}:host .zonos--cart-subtotal-price{text-align:right}:host .zonos--cart-subtotal-price zonos-text{white-space:nowrap}:host .zonos--cart-subtotal-price zonos-text,:host .zonos--cart-pay-total zonos-text{white-space:nowrap}:host .zonos--cart-promo-code-input-wrapper{display:-ms-flexbox;display:flex;gap:16px;-ms-flex-align:center;align-items:center}:host .zonos--cart-promo-code-input{-ms-flex:1;flex:1}:host .zonos--cart-custom-message .zonos--column:last-child{padding:0 8px;width:auto;text-align:left}:host .zonos--cart-custom-message zonos-banner{padding:12px;border-radius:var(--zonos-elements-radius-6)}";
148
214
  const ZonosCartSubtotalStyle0 = zonosCartSubtotalCss;
149
215
 
150
216
  const ZonosCartSubtotal = class {
@@ -173,6 +239,19 @@ const ZonosCartSubtotal = class {
173
239
  }
174
240
  return null;
175
241
  };
242
+ /**
243
+ * Render a single merchant-provided message line. Segments come from
244
+ * [[parseLinkedText]] and are emitted as VNodes (never `innerHTML`) so
245
+ * untrusted strings can't inject HTML.
246
+ */
247
+ this.renderMessageLine = (line) => parseLinkedText(line).map(segment => segment.type === 'link' ? (h("zonos-link", { href: segment.href, rel: "noopener noreferrer", target: "_blank" }, segment.text)) : (segment.value));
248
+ this.renderCustomMessage = () => {
249
+ const messageLines = cartStore.customMessage.filter(line => !!line.trim());
250
+ if (!messageLines.length) {
251
+ return null;
252
+ }
253
+ return (h("tr", { class: "zonos--row zonos--cart-custom-message" }, h("td", { class: "zonos--column" }), h("td", { class: "zonos--column", colSpan: 2 }, h("zonos-banner", { intent: "info" }, h("zonos-text", { type: "boldLabel" }, messageLines.map((line, idx) => (h(Fragment, null, idx > 0 && h("br", null), this.renderMessageLine(line)))))))));
254
+ };
176
255
  this.getCartSubtotalSubtitle = () => {
177
256
  const inclusivePriceType = this.getInclusivePriceType();
178
257
  if (inclusivePriceType === 'DUTY_AND_FEE') {
@@ -302,7 +381,7 @@ const ZonosCartSubtotal = class {
302
381
  }))))), h("tr", { class: "zonos--row zonos--cart-pay-total" }, h("td", { class: "zonos--column" }), h("td", { class: "zonos--column" }, h("zonos-text", { class: "zonos--title", type: "semiBoldLabel" }, translate('Order total'))), h("td", { class: "zonos--column zonos--cart-total-price" }, h("zonos-text", { type: "semiBoldLabel" }, renderCheckoutCurrency({
303
382
  amount: total,
304
383
  isForeign: true,
305
- })))))));
384
+ })))), this.renderCustomMessage())));
306
385
  }
307
386
  static get assetsDirs() { return ["assets"]; }
308
387
  };
@@ -909,6 +988,8 @@ const ZonosCheckoutFinish = class {
909
988
  };
910
989
  ZonosCheckoutFinish.style = ZonosCheckoutFinishStyle0;
911
990
 
991
+ const ChevronDownIcon$1 = `<svg color="var(--zonos-elements-gray-400)" fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="https://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M6.293 9.293a1 1 0 0 1 1.414 0L12 13.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-4.93 4.93a1.1 1.1 0 0 1-1.555 0l-4.93-4.93a1 1 0 0 1 0-1.414Z" fill="currentColor" fill-rule="evenodd"></path></svg>`;
992
+
912
993
  const Globe = `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" color="var(--zonos-elements-gray-1000)" xmlns="http://www.w3.org/2000/svg">
913
994
  <path fill-rule="evenodd" clip-rule="evenodd" d="M20 12C20 16.4183 16.4183 20 12 20C7.58172 20 4 16.4183 4 12C4 7.58172 7.58172 4 12 4C16.4183 4 20 7.58172 20 12ZM11.4709 5.80634C11.7686 5.53723 11.9541 5.5 12 5.5C12.0459 5.5 12.2314 5.53723 12.5291 5.80634C12.8115 6.06164 13.1289 6.46913 13.4271 7.03651C13.9505 8.03191 14.3838 9.46098 14.48 11.25H9.51996C9.61624 9.46098 10.0495 8.03191 10.5729 7.03651C10.8711 6.46913 11.1885 6.06164 11.4709 5.80634ZM8.01802 11.25C8.11591 9.23031 8.60319 7.55958 9.24516 6.33849C9.29983 6.23451 9.35585 6.13335 9.41312 6.03514C7.32916 6.94017 5.81218 8.90533 5.5428 11.25H8.01802ZM5.5428 12.75H8.01802C8.11591 14.7697 8.60319 16.4404 9.24516 17.6615C9.29983 17.7655 9.35585 17.8666 9.41312 17.9649C7.32916 17.0598 5.81218 15.0947 5.5428 12.75ZM9.51996 12.75H14.48C14.3838 14.539 13.9505 15.9681 13.4271 16.9635C13.1289 17.5309 12.8115 17.9384 12.5291 18.1937C12.2314 18.4628 12.0459 18.5 12 18.5C11.9541 18.5 11.7686 18.4628 11.4709 18.1937C11.1885 17.9384 10.8711 17.5309 10.5729 16.9635C10.0495 15.9681 9.61624 14.539 9.51996 12.75ZM15.982 12.75C15.8841 14.7697 15.3968 16.4404 14.7548 17.6615C14.7002 17.7655 14.6441 17.8666 14.5869 17.9649C16.6708 17.0598 18.1878 15.0947 18.4572 12.75H15.982ZM18.4572 11.25C18.1878 8.90533 16.6708 6.94017 14.5869 6.03514C14.6441 6.13335 14.7002 6.23451 14.7548 6.33849C15.3968 7.55958 15.8841 9.23031 15.982 11.25H18.4572Z" fill="currentColor"/>
914
995
  </svg>
@@ -926,7 +1007,7 @@ const ZonosIconDark = `<svg width="408" height="112" viewBox="0 0 408 112" fill=
926
1007
  </svg>
927
1008
  `;
928
1009
 
929
- const zonosCheckoutFooterCss = ":host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{position:absolute;bottom:-50px;left:0;right:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;z-index:2}:host .zonos--checkout-footer{width:calc(90vw - 22px);gap:16px;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:12px;padding-left:0;-ms-flex-align:center;align-items:center}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:24px}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper .zonos--checkout-footer-logo{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-align:center;align-items:center}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper .zonos--checkout-footer-logo a{line-height:0}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper a{text-decoration:none}:host .zonos--checkout-footer zonos-button button.outline{outline:1px solid var(--zonos-elements-gray-800)}:host .zonos--checkout-footer .zonos--checkout-locale-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px;position:relative}@media (max-width: 400px){:host .zonos--checkout-footer .zonos--checkout-locale-wrapper{gap:4px}}:host .zonos--checkout-footer .zonos--checkout-footer-dialog{position:absolute;bottom:36px;left:var(--language-dialog-left);background:var(--zonos-elements-surface-color);-webkit-box-shadow:var(--zonos-elements-v3-shadow-xl);box-shadow:var(--zonos-elements-v3-shadow-xl);border-radius:var(--zonos-elements-radius-12);width:360px;max-width:100vw;max-height:500px;z-index:2147483011;overflow:auto;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:bottom left;transform-origin:bottom left;opacity:0;-webkit-transition:opacity 0.3s ease-out, -webkit-transform 0.3s ease-out;transition:opacity 0.3s ease-out, -webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out, opacity 0.3s ease-out;transition:transform 0.3s ease-out, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out;-ms-scroll-chaining:none;overscroll-behavior:contain}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar{width:10px}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-track{background:var(--zonos-elements-gray-50)}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-thumb{border-radius:10px;background:#cccccc;border:3px solid transparent;background-clip:content-box}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-thumb:hover{background:#d6d6d6}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-track{border-top-right-radius:var(--zonos-elements-radius-12);border-bottom-right-radius:var(--zonos-elements-radius-12)}:host .zonos--checkout-footer .zonos--checkout-footer-dialog.zonos--checkout-footer-dialog-open{opacity:1;-webkit-transform:scale(1);transform:scale(1)}:host(.mobile){-ms-flex-direction:column;flex-direction:column;gap:32px;background:var(--zonos-elements-gray-0);position:relative;padding-top:24px;bottom:0}:host(.mobile) .zonos--checkout-footer{-ms-flex-direction:column;flex-direction:column;gap:4px}:host(.mobile) .zonos--checkout-locale-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.mobile) .zonos--checkout-footer-icon-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.mobile) .zonos--checkout-footer-dialog{position:fixed;left:0;right:0;bottom:0;-webkit-transform-origin:bottom center;transform-origin:bottom center;width:100vw}";
1010
+ const zonosCheckoutFooterCss = ":host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{position:absolute;bottom:-50px;left:0;right:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;z-index:2}:host .zonos--checkout-footer{width:calc(90vw - 22px);gap:16px;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:12px;padding-left:0;-ms-flex-align:center;align-items:center}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:24px}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper .zonos--checkout-footer-logo{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-align:center;align-items:center}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper .zonos--checkout-footer-logo a{line-height:0}:host .zonos--checkout-footer .zonos--checkout-footer-icon-wrapper a{text-decoration:none}:host .zonos--checkout-footer zonos-button button.outline{outline:1px solid var(--zonos-elements-gray-800)}:host .zonos--checkout-footer .zonos--checkout-locale-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px;position:relative}@media (max-width: 400px){:host .zonos--checkout-footer .zonos--checkout-locale-wrapper{gap:4px}}:host .zonos--checkout-footer .zonos--checkout-locale-wrapper .zonos--checkout-locale-label{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;gap:4px}:host .zonos--checkout-footer .zonos--checkout-footer-dialog{position:absolute;bottom:36px;left:var(--language-dialog-left);background:var(--zonos-elements-surface-color);-webkit-box-shadow:var(--zonos-elements-v3-shadow-xl);box-shadow:var(--zonos-elements-v3-shadow-xl);border-radius:var(--zonos-elements-radius-12);width:360px;max-width:100vw;max-height:500px;z-index:2147483011;overflow:auto;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:bottom left;transform-origin:bottom left;opacity:0;-webkit-transition:opacity 0.3s ease-out, -webkit-transform 0.3s ease-out;transition:opacity 0.3s ease-out, -webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out, opacity 0.3s ease-out;transition:transform 0.3s ease-out, opacity 0.3s ease-out, -webkit-transform 0.3s ease-out;-ms-scroll-chaining:none;overscroll-behavior:contain}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar{width:10px}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-track{background:var(--zonos-elements-gray-50)}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-thumb{border-radius:10px;background:#cccccc;border:3px solid transparent;background-clip:content-box}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-thumb:hover{background:#d6d6d6}:host .zonos--checkout-footer .zonos--checkout-footer-dialog::-webkit-scrollbar-track{border-top-right-radius:var(--zonos-elements-radius-12);border-bottom-right-radius:var(--zonos-elements-radius-12)}:host .zonos--checkout-footer .zonos--checkout-footer-dialog.zonos--checkout-footer-dialog-open{opacity:1;-webkit-transform:scale(1);transform:scale(1)}:host(.mobile){-ms-flex-direction:column;flex-direction:column;gap:32px;background:var(--zonos-elements-gray-0);position:relative;padding-top:24px;bottom:0}:host(.mobile) .zonos--checkout-footer{-ms-flex-direction:column;flex-direction:column;gap:4px}:host(.mobile) .zonos--checkout-locale-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.mobile) .zonos--checkout-footer-icon-wrapper{-ms-flex-direction:column;flex-direction:column}:host(.mobile) .zonos--checkout-footer-dialog{position:fixed;left:0;right:0;bottom:0;-webkit-transform-origin:bottom center;transform-origin:bottom center;width:100vw}";
930
1011
  const ZonosCheckoutFooterStyle0 = zonosCheckoutFooterCss;
931
1012
 
932
1013
  const ZonosCheckoutFooter = class {
@@ -958,10 +1039,10 @@ const ZonosCheckoutFooter = class {
958
1039
  const languageLabel = (_a = languages.find(x => x.code === localizationStore.selectedLocale)) === null || _a === void 0 ? void 0 : _a.label;
959
1040
  // reverse color when on desktop. With the coversheet backdrop, the color should be white
960
1041
  const colorDesktop = this.dataTheme === 'LIGHT' && !this.mobile ? 'gray-0' : 'gray-1000';
961
- return (h(Host, { key: '2200a14517d5d1dd81b68ecfb60ab6a691ebe581', class: classes(['zonos--elements', this.isMobile && 'mobile']) }, h("div", { key: 'bc77f1ea299fa151ba9d4628653d6a3800856e85', class: "zonos--checkout-footer" }, h("div", { key: 'e2e9f901e3546a48ba88aca9c0f422785d32f78d', class: "zonos--checkout-locale-wrapper" }, h("zonos-button", { key: '60df35f860aa3c59bfa6f470adab3c882301c529', buttonColor: colorDesktop, class: "zonos--checkout-footer-language-button", icon: h("zonos-icon", { "aria-label": "Language select", content: Globe, iconColor: colorDesktop }), onClick: () => this.toggleLanguageDialog(), variant: "subtle" }, languageLabel), h("div", { key: '3d4acf669d35fcbf4364fb56f7a18bb3a8f61e1b', class: classes([
1042
+ return (h(Host, { key: '608a64c8e871bc0544cb80b719c9e11d441e2909', class: classes(['zonos--elements', this.isMobile && 'mobile']) }, h("div", { key: '37e6da358ce729c118128d9fae97efed127d83b9', class: "zonos--checkout-footer" }, h("div", { key: 'd42eb447dd73073debd6c0d48b766ce31f995b32', class: "zonos--checkout-locale-wrapper" }, h("zonos-button", { key: '3a61cc1647aa2e74d0e1fd5534ae9ff66446ba7a', buttonColor: colorDesktop, class: "zonos--checkout-footer-language-button", icon: h("zonos-icon", { "aria-label": "Language select", content: Globe, iconColor: colorDesktop }), onClick: () => this.toggleLanguageDialog(), variant: "subtle" }, h("span", { key: '28bfc7ed3b75c9724e951177914f2d874fff27fe', class: "zonos--checkout-locale-label" }, languageLabel, h("zonos-icon", { key: 'b082108bcc0b5dded10136056fa1426bb6adda8e', "aria-hidden": "true", class: "zonos--checkout-locale-chevron", content: ChevronDownIcon$1, iconColor: colorDesktop, size: 18 }))), h("div", { key: 'ddccc795078e5eb55b25cbe5d5a6bf502579cded', class: classes([
962
1043
  'zonos--checkout-footer-dialog',
963
1044
  this.showLanguageDialog && 'zonos--checkout-footer-dialog-open',
964
- ]) }, h("zonos-language-select", { key: '5b32a3d11a725c7af0c358acf9a15c6ec17201ac', handleOnClose: () => this.toggleLanguageDialog() }))), h("div", { key: 'f678c6d76ad122ccbd3e18e6fa9deacd9ec76b93', class: "zonos--checkout-footer-icon-wrapper" }, h("a", { key: '08cc72da5cbc00bd927828ae1df960a80604519c', href: "https://zonos.com/docs/legal/zonos-privacy-policy", target: "_blank" }, h("zonos-text", { key: 'df8d1727117c28c694c8450d5268895f67b23dff', textColor: colorDesktop }, "Privacy policy")), h("div", { key: 'c75b73f3bd573aa2bdd60b7fd05e6b06c8ee8d62', class: "zonos--checkout-footer-logo" }, h("zonos-text", { key: 'b57bf8ed2b6498f9cd64d7ab066625376642abda', textColor: colorDesktop }, "Powered by"), h("a", { key: 'cd12e10b1e4acd43fea371aad6d74ee8a89f1fbe', href: "https://zonos.com", target: "_blank", title: "Zonos website" }, h("zonos-icon", { key: '06465fba84c0c05e330779f522fdcabed817d5de', autoHeight: true, content: ZonosIconDark, size: 108 })))))));
1045
+ ]) }, h("zonos-language-select", { key: 'c38f3ebb835b15cbfbe624507c0addb8622f65e6', handleOnClose: () => this.toggleLanguageDialog() }))), h("div", { key: 'b4862df1b1f4a27071ad4291891b968d016c7024', class: "zonos--checkout-footer-icon-wrapper" }, h("a", { key: 'ac15fc57811b44fbe9d6c032f02660bb41bd40f9', href: "https://zonos.com/docs/legal/zonos-privacy-policy", target: "_blank" }, h("zonos-text", { key: 'dc954edc4349a90c41b54348516c6922fe6c5e56', textColor: colorDesktop }, "Privacy policy")), h("div", { key: 'f8d5136948a871718cbd73f982b229c8ea46bbf8', class: "zonos--checkout-footer-logo" }, h("zonos-text", { key: '2e3542d9d2ddd78ba855858b93ccdeca47269962', textColor: colorDesktop }, "Powered by"), h("a", { key: '240abfbd5b86c5d0068cb20305ab3bb39abf22b5', href: "https://zonos.com", target: "_blank", title: "Zonos website" }, h("zonos-icon", { key: '7d5fe50373919e4bc22da89b00915e607eb1b9df', autoHeight: true, content: ZonosIconDark, size: 108 })))))));
965
1046
  }
966
1047
  get el() { return getElement(this); }
967
1048
  static get watchers() { return {
@@ -1269,17 +1350,17 @@ const ZonosCheckoutProgressTabs = class {
1269
1350
  color: labelSelectedColor,
1270
1351
  })
1271
1352
  : labelSelectedColor;
1272
- return (h(Host, { key: 'f7ea289329f5f1e5fd1a5fdbd790b581de1666d3', class: "zonos--elements", style: {
1353
+ return (h(Host, { key: '425c77b4ab1b9a29ada76644a60c2c6f54fa2e28', class: "zonos--elements", style: {
1273
1354
  '--zonos--color': contrastLabelColor,
1274
1355
  '--zonos--progress-percent': this.getTotalSuccessStep(),
1275
- } }, h("div", { key: 'c071c27dee5b5ddf7b59cddd6de668b1bd72df2a', class: "zonos--tab-wrapper" }, Object.values(cartStore.tabItems).map((tab, index) => {
1356
+ } }, h("div", { key: 'd8e13a57521242f597c8b8adf7c6f304b3a9d3ce', class: "zonos--tab-wrapper" }, Object.values(cartStore.tabItems).map((tab, index) => {
1276
1357
  const isSelected = tab.value === selectedStep;
1277
1358
  return (h("button", { "aria-label": `Tab ${tab.label}`, class: classes([
1278
1359
  'zonos--tab-item',
1279
1360
  tab.value === selectedStep && 'selected',
1280
1361
  tab.isDone && 'done',
1281
1362
  ]), disabled: !this.isTabClickable(tab.value), key: tab.value, onClick: () => this.setTabSelected(tab.value) }, h("div", { class: "zonos--tab-index" }, h("zonos-text", { class: "zonos--tab-index-label", textColor: isSelected ? contrastLabelColor : 'gray-1000', type: "label" }, index + 1), h("zonos-icon", { class: "zonos--tab-index-done-icon", content: TabCheckmark, iconColor: isSelected ? contrastLabelColor : 'gray-1000' })), h("zonos-text", { textColor: isSelected ? contrastLabelColor : 'gray-1000', type: "label" }, translate(tab.label))));
1282
- })), h("div", { key: '9c332b9053d57a05d8db19d179696a8261a1ac94', class: "zonos--tab-progress" }, h("div", { key: '3b303b4dd931e4a1d030ecc62cbbabd232354636', class: "zonos--progress-bar-fill" }))));
1363
+ })), h("div", { key: '9461341c83a92c810a3cf02f3828610732eecfe2', class: "zonos--tab-progress" }, h("div", { key: '142824930f5a8a6ef4fdafc7b39d9a96aa518cff', class: "zonos--progress-bar-fill" }))));
1283
1364
  }
1284
1365
  static get assetsDirs() { return ["assets"]; }
1285
1366
  get ele() { return getElement(this); }
@@ -1992,11 +2073,11 @@ const ZonosRestState = class {
1992
2073
  }
1993
2074
  render() {
1994
2075
  const imageUrl = this.getImageRestState();
1995
- return (h(Host, { key: 'c39228c5a45be0c27fc805859ba896f346f4c7bb', class: classes(['zonos--elements zonos--restState']), style: {
2076
+ return (h(Host, { key: '70b8901469cba98007780b2dc6cceaa61f96d8ac', class: classes(['zonos--elements zonos--restState']), style: {
1996
2077
  '--zonos--font-family': zonosStoreFontFamily(),
1997
- } }, h("div", { key: '466d38527c50fac57c85b29b6d501139a55c652c', class: "zonos--restState-image" }, h("img", { key: '233348dc1fe72c37ac3485dc4ae577b02d44d0cc', alt: this.restStateType, onError: () => {
2078
+ } }, h("div", { key: '7903d837e37c843a55aee6211cc2071add4f5a05', class: "zonos--restState-image" }, h("img", { key: 'dee0733ab529b004f53d1d69a29a07d7a44a3eea', alt: this.restStateType, onError: () => {
1998
2079
  this.isErrorImageLoad = true;
1999
- }, src: imageUrl })), h("div", { key: '0ead09005b4a4e59fcbe5b673ef206d09c6f344f', class: "content" }, h("zonos-text", { key: '2f6d50f5562ab86918755b2d20aeab1ba170e0d1', class: "title", type: "boldSubheader" }, this.restStateTitle), h("zonos-text", { key: '9304b2421ac05dea5e8567666dc3fd5c279bf6dd', class: "subtitle" }, this.restStateSubtitle)), h("div", { key: '00323cff6ad4b67a5af980dcbfce5cb0c59150c4', class: "action" }, h("slot", { key: '256fc2f99f345d0302d6fa4467b22558723dae7b' }))));
2080
+ }, src: imageUrl })), h("div", { key: '612e7d71d5e6bd2e0c37d7c6595b35ea5ca416dd', class: "content" }, h("zonos-text", { key: 'c28379a4b4546afa6b323986c092c9538aa66b65', class: "title", type: "boldSubheader" }, this.restStateTitle), h("zonos-text", { key: '309e2e9c5086d0c84ccbe6c695d657d9f8e16da0', class: "subtitle" }, this.restStateSubtitle)), h("div", { key: '7fb9586682d221a311598ee8d294c6daede33e96', class: "action" }, h("slot", { key: '87959654a7a3c9c621d633a492627d53ff561fd4' }))));
2000
2081
  }
2001
2082
  static get assetsDirs() { return ["assets"]; }
2002
2083
  };
@@ -68,14 +68,14 @@ const ZonosCheckbox = class {
68
68
  customRoundRadius: '4px',
69
69
  overrideBorderStyle: this.borderStyle,
70
70
  });
71
- return (h(Host, { key: 'a3db8981598a3703228e7c54bfd8350da718f744', class: classes(['zonos--elements zonos--checkbox']), style: {
71
+ return (h(Host, { key: 'b72500a3ead1362eebf6cd90fc60fddbade0bccf', class: classes(['zonos--elements zonos--checkbox']), style: {
72
72
  '--zonos--background-color': backgroundColor,
73
73
  '--zonos--border-radius': borderStyle,
74
74
  '--zonos--font-family': zonosStoreFontFamily(),
75
75
  '--zonos--size': `${this.size}px`,
76
- } }, h("label", { key: '6abc998d8a2338fd188e561ce38af6f351e87d93', class: classes([this.isDisabled && 'disabled']), htmlFor: this.inputId }, h("input", { key: 'a2b3bc99d562f0ddc3337093597d962a28fe7006', checked: this.isChecked, disabled: this.isDisabled, hidden: true, id: this.inputId, onChange: e => {
76
+ } }, h("label", { key: '3a5104fa8f2b3874108f27732df0aee9d4bebbd6', class: classes([this.isDisabled && 'disabled']), htmlFor: this.inputId }, h("input", { key: 'aea12725ffa80d01c7fe1753d637f6e94e1d0fad', checked: this.isChecked, disabled: this.isDisabled, hidden: true, id: this.inputId, onChange: e => {
77
77
  this.checkboxSelected.emit(e.target.checked);
78
- }, type: "checkbox" }), h("span", { key: '4ff30adc1de3f679a62ac4bdc23c89c7fbd70862', class: "checkmark-container" }, h("svg", { key: 'c235768b91c19a2edf0d5ed1d416e6b58be4f9eb', class: "checkmark", color: checkmarkColor, fill: "none", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: '67e8a36292f8f4fe226709acdd08579d2092b836', "clip-rule": "evenodd", d: "M17.456 7.404a.75.75 0 0 1 .14 1.052l-6.5 8.5a.75.75 0 0 1-1.126.074l-4-4a.75.75 0 0 1 1.06-1.06l3.395 3.394 5.98-7.82a.75.75 0 0 1 1.05-.14Z", fill: "currentColor", "fill-rule": "evenodd" }))), this.label && (h("zonos-text", { key: '9fdd82641973e8870e55117992ca26f1e585c801', size: this.fontSize }, this.label)))));
78
+ }, type: "checkbox" }), h("span", { key: '807f1b1b8acf88793abe74d329c8ffd81a450d9b', class: "checkmark-container" }, h("svg", { key: '18bec57b0554f70704f5c53e57a5929a48165f44', class: "checkmark", color: checkmarkColor, fill: "none", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'd98ba6681c05d63e242518b332b7d3292e19d39e', "clip-rule": "evenodd", d: "M17.456 7.404a.75.75 0 0 1 .14 1.052l-6.5 8.5a.75.75 0 0 1-1.126.074l-4-4a.75.75 0 0 1 1.06-1.06l3.395 3.394 5.98-7.82a.75.75 0 0 1 1.05-.14Z", fill: "currentColor", "fill-rule": "evenodd" }))), this.label && (h("zonos-text", { key: 'f540e55464dd67bf513cf6a77b078c7492945b50', size: this.fontSize }, this.label)))));
79
79
  }
80
80
  };
81
81
  ZonosCheckbox.style = ZonosCheckboxStyle0;
@@ -93,9 +93,9 @@ const ZonosToggle = class {
93
93
  this.options = [];
94
94
  }
95
95
  render() {
96
- return (h(Host, { key: '220dcc3ef8685ea09db761d7a42a00a7309caa70', class: classes(['zonos--elements zonos--toggle']), style: {
96
+ return (h(Host, { key: 'a69d1282e442b2cc5b24df68ee41c452b02fb022', class: classes(['zonos--elements zonos--toggle']), style: {
97
97
  '--zonos--font-family': zonosStoreFontFamily(),
98
- } }, h("div", { key: 'fa54f818b15ff33d88dc08a1df370ca9be17ff71', class: "wrapper" }, this.options.map(option => {
98
+ } }, h("div", { key: 'a0fff3107e8d9a98d3ff323379c6e39bee294eca', class: "wrapper" }, this.options.map(option => {
99
99
  const selected = option.value === this.value;
100
100
  return (h("button", { class: classes(['zonos--option', selected && 'selected']), key: option.value, onClick: () => {
101
101
  this.toggleChanged.emit(option.value);
@@ -1,10 +1,10 @@
1
1
  import { r as registerInstance, h, F as Fragment, a as Host } from './index-cfd394c8.js';
2
- import { s as stripeStoreGetDomesticShippingSession, a as stripeStoreSaveDomesticShippingSession, b as stripeStore, i as initStripeElements, c as stripeStoreRetrievePayment, d as cartStore, e as cartStoreUpdateItems, f as cartStoreReset, g as cartStoreResetTabItems, h as cartStoreClearCheckoutInterval, j as stripeStoreInitCheckoutSession, k as stripeStoreGetPaymentIntent, l as cartStoreStartCheckoutInterval, t as trackConversionEvent, m as getCheckoutSessionBody, n as cartStoreUpdateToErrorState, o as stripeStoreCleanupDomesticShippingSession, p as cartStoreSetCheckoutSession, q as stripeStorePrefetchLandedCost, r as cartStoreNextStep, u as stripeStoreUpdateCheckoutSessionBaseCurrency, v as stripeStoreHandleInventoryCheck, w as storeCreditStoreApplyCredit, x as storeCreditStoreCoversFullAmount, y as validateCheckoutSession, z as storeCreditStoreCreateOrder, A as stripeStoreConfirmPayment, B as stripeStoreHandleInventoryRefund, C as stripeStoreReset, D as cartStoreOnChange, E as stripeStoreOnChange, F as storeCreditStoreGetEffectiveAmount } from './cart-34b11708.js';
3
- import { p as paypalStoreHasPaypalEnabled, s as submitAnalytics, a as paypalStore, b as paypalInitScript } from './paypal-d3b3d967.js';
4
- import { f as filterValidTests, l as localizationStore, a as localizationStoreUpdateSelectedCountryCode, g as getZCountryUrlParam, s as storageStore, V as VARIANT_TEST_KEY_EXPIRATION, b as storageStoreSetEnabledVariantTestKeys, t as translate, c as localizationStoreOnChange, d as currencyFormat } from './localization-2e523b35.js';
2
+ import { s as stripeStoreGetDomesticShippingSession, a as stripeStoreSaveDomesticShippingSession, b as stripeStore, i as initStripeElements, c as stripeStoreRetrievePayment, d as cartStore, e as cartStoreUpdateItems, f as cartStoreReset, g as cartStoreResetTabItems, h as cartStoreClearCheckoutInterval, j as stripeStoreInitCheckoutSession, k as stripeStoreGetPaymentIntent, l as cartStoreStartCheckoutInterval, t as trackConversionEvent, m as getCheckoutSessionBody, n as cartStoreUpdateToErrorState, o as stripeStoreCleanupDomesticShippingSession, p as cartStoreSetCheckoutSession, q as stripeStorePrefetchLandedCost, r as cartStoreNextStep, u as stripeStoreUpdateCheckoutSessionBaseCurrency, v as stripeStoreHandleInventoryCheck, w as storeCreditStoreApplyCredit, x as storeCreditStoreCoversFullAmount, y as validateCheckoutSession, z as storeCreditStoreCreateOrder, A as stripeStoreConfirmPayment, B as stripeStoreHandleInventoryRefund, C as stripeStoreReset, D as cartStoreOnChange, E as stripeStoreOnChange, F as storeCreditStoreGetEffectiveAmount } from './cart-0625a766.js';
3
+ import { p as paypalStoreHasPaypalEnabled, s as submitAnalytics, a as paypalStore, b as paypalInitScript } from './paypal-78c3572c.js';
4
+ import { f as filterValidTests, l as localizationStore, a as localizationStoreUpdateSelectedCountryCode, g as getZCountryUrlParam, s as storageStore, V as VARIANT_TEST_KEY_EXPIRATION, b as storageStoreSetEnabledVariantTestKeys, t as translate, c as localizationStoreOnChange, d as currencyFormat } from './localization-ee06df70.js';
5
5
  import { z as zonosStore, g as getZonosStoreTheme, m as mergeConfig } from './zonosStore-9662b071.js';
6
6
  import { b as buildCartItemsByTempCart } from './buildCartItemsByTempCart-a117f75d.js';
7
- import { h as handleFetch, g as getIsTestMode, l as logError, j as jsonParse, b as getAdditionalLogMetadata, s as sendErrorLog, a as getIsStagingMode, i as isCheckoutMobile } from './handleFetch-a844cac1.js';
7
+ import { h as handleFetch, l as logError, g as getIsTestMode, j as jsonParse, b as getAdditionalLogMetadata, s as sendErrorLog, a as getIsStagingMode, i as isCheckoutMobile } from './handleFetch-a844cac1.js';
8
8
  import { u as updateCheckoutSessionAttributes } from './updateCheckoutSessionAttributes-da7fdd37.js';
9
9
  import { l as log, g as getElapsedTime, b as allLogs } from './VarianceTest-572cecf5.js';
10
10
  import { _ as _getIsValidCartId, c as checkoutHiddenBtnSelector, a as checkoutHiddenInternationalBtnSelector, d as domesticRedirectedBtnSelector, g as getAbandonedCartRenewTokenValue } from './CheckoutConfig-724d7bae.js';
@@ -93,6 +93,63 @@ const buildCartUrl = ({ cartId, checkoutSessionId, customerAddress1, customerAdd
93
93
  return `${hostedCheckoutUrl}?${urlParams.toString()}`;
94
94
  };
95
95
 
96
+ /**
97
+ * Fetch the checkout/cart ID from the BigCommerce Storefront Cart API.
98
+ * The `/checkout` page URL does not include the checkout ID, so we
99
+ * retrieve it from `/api/storefront/cart` which returns the active cart(s).
100
+ */
101
+ const fetchCheckoutId = async () => {
102
+ var _a, _b;
103
+ try {
104
+ const response = await fetch('/api/storefront/cart', {
105
+ credentials: 'same-origin',
106
+ headers: {
107
+ Accept: 'application/json',
108
+ },
109
+ });
110
+ if (!response.ok) {
111
+ log(`Failed to fetch BigCommerce cart: ${String(response.status)}`, 'error');
112
+ return null;
113
+ }
114
+ const carts = (await response.json());
115
+ return (_b = (_a = carts === null || carts === void 0 ? void 0 : carts[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;
116
+ }
117
+ catch (error) {
118
+ logError('Error fetching BigCommerce cart data', error);
119
+ return null;
120
+ }
121
+ };
122
+ /**
123
+ * Fetch checkout data from the BigCommerce Storefront API.
124
+ * This API is cookie-authenticated (same-origin), so no token is needed.
125
+ */
126
+ const fetchBigCommerceCheckout = async (checkoutId) => {
127
+ try {
128
+ const response = await fetch(`/api/storefront/checkouts/${checkoutId}?include=customer.customerGroup,customer.addresses`, {
129
+ credentials: 'same-origin',
130
+ headers: {
131
+ Accept: 'application/json',
132
+ 'Content-Type': 'application/json',
133
+ },
134
+ });
135
+ if (!response.ok) {
136
+ log(`Failed to fetch BigCommerce checkout: ${String(response.status)}`, 'error');
137
+ return null;
138
+ }
139
+ return (await response.json());
140
+ }
141
+ catch (error) {
142
+ logError('Error fetching BigCommerce checkout data', error);
143
+ return null;
144
+ }
145
+ };
146
+ /**
147
+ * Whether the BigCommerce shopper is already logged in. We key off the
148
+ * customer's numeric `id` since the storefront API populates it only for
149
+ * authenticated sessions (guest checkouts have an empty `customer` object).
150
+ */
151
+ const isBigCommerceCustomerLoggedIn = (checkout) => { var _a; return !!((_a = checkout === null || checkout === void 0 ? void 0 : checkout.customer) === null || _a === void 0 ? void 0 : _a.id); };
152
+
96
153
  /**
97
154
  * The query flag that BigCommerce carries back to `cart.php` after the
98
155
  * shopper logs in. When present, Zonos-elements knows to resume the
@@ -180,63 +237,6 @@ const buildBigcommerceRedirectUrl = (pathname) => {
180
237
  return url.toString();
181
238
  };
182
239
 
183
- /**
184
- * Fetch the checkout/cart ID from the BigCommerce Storefront Cart API.
185
- * The `/checkout` page URL does not include the checkout ID, so we
186
- * retrieve it from `/api/storefront/cart` which returns the active cart(s).
187
- */
188
- const fetchCheckoutId = async () => {
189
- var _a, _b;
190
- try {
191
- const response = await fetch('/api/storefront/cart', {
192
- credentials: 'same-origin',
193
- headers: {
194
- Accept: 'application/json',
195
- },
196
- });
197
- if (!response.ok) {
198
- log(`Failed to fetch BigCommerce cart: ${String(response.status)}`, 'error');
199
- return null;
200
- }
201
- const carts = (await response.json());
202
- return (_b = (_a = carts === null || carts === void 0 ? void 0 : carts[0]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;
203
- }
204
- catch (error) {
205
- logError('Error fetching BigCommerce cart data', error);
206
- return null;
207
- }
208
- };
209
- /**
210
- * Fetch checkout data from the BigCommerce Storefront API.
211
- * This API is cookie-authenticated (same-origin), so no token is needed.
212
- */
213
- const fetchBigCommerceCheckout = async (checkoutId) => {
214
- try {
215
- const response = await fetch(`/api/storefront/checkouts/${checkoutId}?include=customer.customerGroup`, {
216
- credentials: 'same-origin',
217
- headers: {
218
- Accept: 'application/json',
219
- 'Content-Type': 'application/json',
220
- },
221
- });
222
- if (!response.ok) {
223
- log(`Failed to fetch BigCommerce checkout: ${String(response.status)}`, 'error');
224
- return null;
225
- }
226
- return (await response.json());
227
- }
228
- catch (error) {
229
- logError('Error fetching BigCommerce checkout data', error);
230
- return null;
231
- }
232
- };
233
- /**
234
- * Whether the BigCommerce shopper is already logged in. We key off the
235
- * customer's numeric `id` since the storefront API populates it only for
236
- * authenticated sessions (guest checkouts have an empty `customer` object).
237
- */
238
- const isBigCommerceCustomerLoggedIn = (checkout) => { var _a; return !!((_a = checkout === null || checkout === void 0 ? void 0 : checkout.customer) === null || _a === void 0 ? void 0 : _a.id); };
239
-
240
240
  const DEFAULT_RESULT = {
241
241
  customerGroupId: null,
242
242
  shouldBypass: false,
@@ -610,6 +610,106 @@ const fixBigCommerceLoginCreateAccountLink = () => {
610
610
  setTimeout(() => observer.disconnect(), 10000);
611
611
  };
612
612
 
613
+ const toContactOption = (address, email) => {
614
+ // Skip entries missing the fields the address form treats as required.
615
+ if (!address.address1 || !address.countryCode) {
616
+ return null;
617
+ }
618
+ const name = [address.firstName, address.lastName]
619
+ .filter(Boolean)
620
+ .join(' ')
621
+ .trim();
622
+ return {
623
+ address: {
624
+ city: address.city || '',
625
+ country: address.countryCode,
626
+ line1: address.address1,
627
+ line2: address.address2 || '',
628
+ postal_code: address.postalCode || '',
629
+ // Prefer the ISO subdivision code when present so it round-trips through
630
+ // Stripe; fall back to the human-readable state name.
631
+ state: address.stateOrProvinceCode || address.stateOrProvince || '',
632
+ },
633
+ email,
634
+ name,
635
+ phone: address.phone || '',
636
+ };
637
+ };
638
+ const dedupKey = (option) => [
639
+ option.address.line1,
640
+ option.address.line2 || '',
641
+ option.address.postal_code,
642
+ option.address.country,
643
+ ]
644
+ .join('|')
645
+ .toLowerCase();
646
+ /**
647
+ * Extract a logged-in BigCommerce shopper's known addresses from a Storefront
648
+ * API checkout response and convert them into the shape that `zonos-address`
649
+ * consumes (`StripeStoreContactOption[]`).
650
+ *
651
+ * Combines the saved address book (`customer.addresses`) with any address
652
+ * already attached to the active checkout's consignments, so a shopper who
653
+ * just selected a one-off shipping address on BC native checkout still sees
654
+ * that address in the international checkout's address picker. Deduplicates
655
+ * by line1 + line2 + postal code + country.
656
+ *
657
+ * Callers must supply `isShippable` so addresses outside the merchant's
658
+ * shipping zones are filtered out — international checkout can't fulfill
659
+ * them and showing them would just confuse the shopper. The optional
660
+ * `selectedCountryCode` floats addresses in that country to the top of the
661
+ * list so the shopper's current destination is the default choice.
662
+ *
663
+ * Returns an empty list for guest sessions (no `customer.id`) or when the
664
+ * checkout response is missing the relevant includes.
665
+ */
666
+ const getBigCommerceCustomerAddresses = (checkout, options) => {
667
+ var _a, _b, _c, _d;
668
+ if (!((_a = checkout === null || checkout === void 0 ? void 0 : checkout.customer) === null || _a === void 0 ? void 0 : _a.id)) {
669
+ return [];
670
+ }
671
+ const { isShippable, selectedCountryCode } = options;
672
+ const email = checkout.customer.email || '';
673
+ const consignmentAddresses = (_c = (_b = checkout.consignments) === null || _b === void 0 ? void 0 : _b.flatMap(consignment => consignment.shippingAddress ? [consignment.shippingAddress] : [])) !== null && _c !== void 0 ? _c : [];
674
+ const savedAddresses = (_d = checkout.customer.addresses) !== null && _d !== void 0 ? _d : [];
675
+ const seen = new Set();
676
+ const result = [];
677
+ // Iterate saved addresses first so the dedup key for an address present in
678
+ // both lists keeps the saved-book version (which carries an `id` and is the
679
+ // shopper's canonical entry).
680
+ for (const address of [...savedAddresses, ...consignmentAddresses]) {
681
+ const option = toContactOption(address, email);
682
+ if (!option) {
683
+ continue;
684
+ }
685
+ if (!isShippable(option.address.country)) {
686
+ continue;
687
+ }
688
+ const key = dedupKey(option);
689
+ if (seen.has(key)) {
690
+ continue;
691
+ }
692
+ seen.add(key);
693
+ result.push(option);
694
+ }
695
+ if (!selectedCountryCode) {
696
+ return result;
697
+ }
698
+ // Stable-sort the survivors so addresses matching the currently-selected
699
+ // country come first while everything else keeps its original order.
700
+ return result
701
+ .map((option, index) => ({ index, option }))
702
+ .sort((a, b) => {
703
+ const aMatches = a.option.address.country === selectedCountryCode;
704
+ const bMatches = b.option.address.country === selectedCountryCode;
705
+ if (aMatches === bMatches) {
706
+ return a.index - b.index;
707
+ }
708
+ return aMatches ? -1 : 1;
709
+ })
710
+ .map(entry => entry.option);
711
+ };
712
+
613
713
  const isDisabledCountry = (showLog = true) => {
614
714
  if (!localizationStore.localizationLoaded) {
615
715
  return true;
@@ -1514,6 +1614,51 @@ const ZonosCheckout = class {
1514
1614
  settlementAmount: total,
1515
1615
  };
1516
1616
  };
1617
+ /**
1618
+ * For BigCommerce stores with a logged-in shopper, seed
1619
+ * `defaultCustomerProfileAddress` from the BC Storefront API so the
1620
+ * `zonos-address` picker prefills the shopper's saved address book without
1621
+ * forcing them to retype anything. Skips when an address has already been
1622
+ * prefilled by another path (Stripe customer profile, merchant-provided
1623
+ * `defaultAddress`, or the BC redirect's session-storage handoff).
1624
+ */
1625
+ this.prefillBigCommerceCustomerAddresses = async () => {
1626
+ if (!window.Zonos.isBigCommerce) {
1627
+ return;
1628
+ }
1629
+ if (this.defaultCustomerProfileAddress.length) {
1630
+ return;
1631
+ }
1632
+ const hasManualDefault = (Array.isArray(this.defaultAddress) && this.defaultAddress.length > 0) ||
1633
+ (!Array.isArray(this.defaultAddress) &&
1634
+ typeof this.defaultAddress === 'object' &&
1635
+ this.defaultAddress !== null);
1636
+ if (hasManualDefault) {
1637
+ return;
1638
+ }
1639
+ const checkoutId = await fetchCheckoutId();
1640
+ if (!checkoutId) {
1641
+ return;
1642
+ }
1643
+ const checkout = await fetchBigCommerceCheckout(checkoutId);
1644
+ if (!isBigCommerceCustomerLoggedIn(checkout)) {
1645
+ return;
1646
+ }
1647
+ const addresses = getBigCommerceCustomerAddresses(checkout, {
1648
+ isShippable: countryCode => isShippableCountry(false, countryCode),
1649
+ selectedCountryCode: localizationStore.selectedCountryCode || undefined,
1650
+ });
1651
+ if (!addresses.length) {
1652
+ return;
1653
+ }
1654
+ // Re-check after the awaits — another prefill path may have populated state
1655
+ // while we were waiting on the network.
1656
+ if (this.defaultCustomerProfileAddress.length) {
1657
+ return;
1658
+ }
1659
+ this.defaultCustomerProfileAddress = addresses;
1660
+ log(`Prefilled ${String(addresses.length)} BigCommerce customer address(es) for logged-in shopper`, 'info');
1661
+ };
1517
1662
  this.getDefaultAddress = () => {
1518
1663
  // If checkout customer is authenticated, use the address from the customer profile
1519
1664
  if (this.defaultCustomerProfileAddress.length) {
@@ -1653,6 +1798,9 @@ const ZonosCheckout = class {
1653
1798
  // if createCartId is provided, use it to build cart. Merchant will provide create a cart from their server side and give the cart id to us.
1654
1799
  if (typeof zonosStore.checkoutSettings.createCartId === 'function') {
1655
1800
  log('"createCartId" is provided, start building cart');
1801
+ // Reset before awaiting the merchant callback so a stale banner from a
1802
+ // previous open is not visible while the network call is in flight.
1803
+ cartStore.customMessage = [];
1656
1804
  const cartIdResult = await zonosStore.checkoutSettings.createCartId();
1657
1805
  let cartId;
1658
1806
  if (typeof cartIdResult === 'object') {
@@ -1662,6 +1810,12 @@ const ZonosCheckout = class {
1662
1810
  this.useShippingDataFromCreateCartId(cartIdResult.shippingData);
1663
1811
  cartStore.customerAuthenticationToken =
1664
1812
  cartIdResult.customerAuthenticationToken || null;
1813
+ // Normalize against misbehaving merchant callbacks: only accept an
1814
+ // array of strings, drop everything else so a bad value can't crash
1815
+ // the renderer (`.filter(...)` would throw on non-arrays).
1816
+ cartStore.customMessage = Array.isArray(cartIdResult.customMessage)
1817
+ ? cartIdResult.customMessage.filter((line) => typeof line === 'string')
1818
+ : [];
1665
1819
  }
1666
1820
  else {
1667
1821
  cartId = cartIdResult;
@@ -2200,6 +2354,11 @@ const ZonosCheckout = class {
2200
2354
  // resume flag, auto-open the international checkout. Strip the flag
2201
2355
  // from the URL so a refresh doesn't keep re-triggering the dialog.
2202
2356
  this.handleBigcommerceInternationalResumeFlag();
2357
+ // For BigCommerce + logged-in shopper, prefetch the saved address book
2358
+ // (`customer.addresses` include) so the international checkout's address
2359
+ // picker is populated by the time the shopper opens it. Fire-and-forget —
2360
+ // the prefill itself guards against overwriting other prefill sources.
2361
+ void this.prefillBigCommerceCustomerAddresses();
2203
2362
  // check if bigcommerce, if user enters the shipping address that's in the shipping zone at bigcommerce checkout
2204
2363
  watchImmediateBigcommerceDomesticCheckoutRedirect({
2205
2364
  domesticRedirectedBtnSelector: domesticRedirectedBtnSelector,
@@ -53,10 +53,10 @@ const ZonosCollapse = class {
53
53
  // set overflow to hidden to prevent content from showing when collapsed
54
54
  this.el.style.overflow = 'hidden';
55
55
  }
56
- return (h(Host, { key: '4fb230dfc4aa850c90c8cfbaf59da8d5043a4a89', class: 'zonos--elements zonos--collapse', style: {
56
+ return (h(Host, { key: '3e88dfbb76bc891e26c8b25729719b3bdc7e4087', class: 'zonos--elements zonos--collapse', style: {
57
57
  '--zonos--font-family': zonosStoreFontFamily(),
58
58
  height: this.getElementHeight(),
59
- } }, h("div", { key: '766542489d4a47d87ac2a2e2b7d62ec99272386a' }, h("iframe", { key: 'd2e33a342c9001bf4be3a478a068e0713a88bac5', class: "height-change-listener", tabindex: "-1", title: "collapse-height-change-listener" }), h("slot", { key: '566b3f4a214fc43cb9642895a716dc69e95ff9ef' }))));
59
+ } }, h("div", { key: '3304ccae3cf01ee2100f10e0e4751bb1ea709d00' }, h("iframe", { key: 'c7af721e790b0b7cea8a5345403d485c8ed0dae4', class: "height-change-listener", tabindex: "-1", title: "collapse-height-change-listener" }), h("slot", { key: 'be37b54db2a486750777edf71ff1001e4589f80a' }))));
60
60
  }
61
61
  get el() { return getElement(this); }
62
62
  };