@zonos/elements 1.3.249 → 1.3.251

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 (244) hide show
  1. package/dist/cjs/{cart-eca56521.js → cart-77640463.js} +318 -19
  2. package/dist/cjs/{hasInclusivePrice-e7d67b45.js → hasInclusivePrice-e93c64fd.js} +1 -1
  3. package/dist/cjs/index.cjs.js +7 -7
  4. package/dist/cjs/{invoice-918f2c2b.js → invoice-211ef96c.js} +2 -2
  5. package/dist/cjs/{isCollectMobileTablet-89911215.js → isCollectMobileTablet-14fb5ab4.js} +2 -2
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/{localization-878ef681.js → localization-be7afc1b.js} +780 -0
  8. package/dist/cjs/{paypal-6acca678.js → paypal-c61ef042.js} +29 -2
  9. package/dist/cjs/{placeTestOrder-f1c1e939.js → placeTestOrder-0f7477c8.js} +2 -2
  10. package/dist/cjs/{renderCheckoutCurrency-d9590e81.js → renderCheckoutCurrency-1ac02803.js} +2 -2
  11. package/dist/cjs/{zonos-address-display_9.cjs.entry.js → zonos-address-display_8.cjs.entry.js} +3 -79
  12. package/dist/cjs/zonos-address_4.cjs.entry.js +2 -2
  13. package/dist/cjs/zonos-card_5.cjs.entry.js +3 -3
  14. package/dist/cjs/zonos-cart-items_12.cjs.entry.js +74 -20
  15. package/dist/cjs/zonos-checkbox_2.cjs.entry.js +113 -0
  16. package/dist/cjs/zonos-checkout.cjs.entry.js +79 -4
  17. package/dist/cjs/zonos-collect-cart-items_3.cjs.entry.js +2 -2
  18. package/dist/cjs/zonos-collect-finish_6.cjs.entry.js +6 -6
  19. package/dist/cjs/zonos-collect.cjs.entry.js +4 -4
  20. package/dist/cjs/zonos-controller.cjs.entry.js +2 -2
  21. package/dist/cjs/zonos-country-flag.cjs.entry.js +1 -1
  22. package/dist/cjs/zonos-country-select_4.cjs.entry.js +1 -1
  23. package/dist/cjs/zonos-elements.cjs.js +1 -1
  24. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +2 -2
  25. package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
  26. package/dist/cjs/zonos-invoice-cart-items_2.cjs.entry.js +4 -4
  27. package/dist/cjs/zonos-invoice-finish_5.cjs.entry.js +6 -6
  28. package/dist/cjs/zonos-invoice.cjs.entry.js +4 -4
  29. package/dist/cjs/zonos-language-select_2.cjs.entry.js +1 -1
  30. package/dist/cjs/zonos-store-credit.cjs.entry.js +113 -0
  31. package/dist/collection/collection-manifest.json +1 -0
  32. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +3 -0
  33. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.js +49 -4
  34. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.js +18 -10
  35. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/assets/StoreCreditIcon.svg +3 -0
  36. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/zonos-store-credit.css +139 -0
  37. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/zonos-store-credit.js +137 -0
  38. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +81 -3
  39. package/dist/collection/components/common/zonos-stripe-phone-input/zonos-stripe-phone-input.js +1 -1
  40. package/dist/collection/components/main/zonos-controller.js +1 -1
  41. package/dist/collection/components/store/checkout/cart.js +62 -4
  42. package/dist/collection/components/store/checkout/paypal.js +28 -0
  43. package/dist/collection/components/store/checkout/storeCredit.js +237 -0
  44. package/dist/collection/components/store/checkout/stripe.js +2 -1
  45. package/dist/collection/components/store/translationStore/strings.arabic.js +39 -0
  46. package/dist/collection/components/store/translationStore/strings.base.js +39 -0
  47. package/dist/collection/components/store/translationStore/strings.chinese.js +39 -0
  48. package/dist/collection/components/store/translationStore/strings.danish.js +39 -0
  49. package/dist/collection/components/store/translationStore/strings.dutch.js +39 -0
  50. package/dist/collection/components/store/translationStore/strings.french.js +39 -0
  51. package/dist/collection/components/store/translationStore/strings.german.js +39 -0
  52. package/dist/collection/components/store/translationStore/strings.hebrew.js +39 -0
  53. package/dist/collection/components/store/translationStore/strings.indonesian.js +39 -0
  54. package/dist/collection/components/store/translationStore/strings.italian.js +39 -0
  55. package/dist/collection/components/store/translationStore/strings.japanese.js +39 -0
  56. package/dist/collection/components/store/translationStore/strings.korean.js +39 -0
  57. package/dist/collection/components/store/translationStore/strings.norwegian.js +39 -0
  58. package/dist/collection/components/store/translationStore/strings.polish.js +39 -0
  59. package/dist/collection/components/store/translationStore/strings.portuguese.js +39 -0
  60. package/dist/collection/components/store/translationStore/strings.russian.js +39 -0
  61. package/dist/collection/components/store/translationStore/strings.spanish.js +39 -0
  62. package/dist/collection/components/store/translationStore/strings.swedish.js +39 -0
  63. package/dist/collection/components/store/translationStore/strings.turkish.js +39 -0
  64. package/dist/collection/components/store/translationStore/strings.vietnamese.js +39 -0
  65. package/dist/collection/types/generated/graphql.internal.types.js +589 -0
  66. package/dist/esm/{cart-efb30253.js → cart-394c9ddb.js} +309 -21
  67. package/dist/esm/{hasInclusivePrice-565ddbe5.js → hasInclusivePrice-f0322e1c.js} +1 -1
  68. package/dist/esm/index.js +7 -7
  69. package/dist/esm/{invoice-0e462fcc.js → invoice-5ae81ae5.js} +2 -2
  70. package/dist/esm/{isCollectMobileTablet-0bcba25a.js → isCollectMobileTablet-15b668d6.js} +2 -2
  71. package/dist/esm/loader.js +1 -1
  72. package/dist/esm/{localization-c1aff677.js → localization-0ebc8356.js} +780 -0
  73. package/dist/esm/{paypal-06b67be0.js → paypal-b6fa3ec3.js} +29 -2
  74. package/dist/esm/{placeTestOrder-6c9a6c8a.js → placeTestOrder-5756cbc3.js} +2 -2
  75. package/dist/esm/{renderCheckoutCurrency-910fea67.js → renderCheckoutCurrency-5f3e06ea.js} +2 -2
  76. package/dist/esm/{zonos-address-display_9.entry.js → zonos-address-display_8.entry.js} +4 -79
  77. package/dist/esm/zonos-address_4.entry.js +2 -2
  78. package/dist/esm/zonos-card_5.entry.js +3 -3
  79. package/dist/esm/zonos-cart-items_12.entry.js +74 -20
  80. package/dist/esm/zonos-checkbox_2.entry.js +108 -0
  81. package/dist/esm/zonos-checkout.entry.js +79 -4
  82. package/dist/esm/zonos-collect-cart-items_3.entry.js +2 -2
  83. package/dist/esm/zonos-collect-finish_6.entry.js +6 -6
  84. package/dist/esm/zonos-collect.entry.js +4 -4
  85. package/dist/esm/zonos-controller.entry.js +2 -2
  86. package/dist/esm/zonos-country-flag.entry.js +1 -1
  87. package/dist/esm/zonos-country-select_4.entry.js +1 -1
  88. package/dist/esm/zonos-elements.js +1 -1
  89. package/dist/esm/zonos-hello-dialog.entry.js +2 -2
  90. package/dist/esm/zonos-hello.entry.js +1 -1
  91. package/dist/esm/zonos-invoice-cart-items_2.entry.js +4 -4
  92. package/dist/esm/zonos-invoice-finish_5.entry.js +6 -6
  93. package/dist/esm/zonos-invoice.entry.js +4 -4
  94. package/dist/esm/zonos-language-select_2.entry.js +1 -1
  95. package/dist/esm/zonos-store-credit.entry.js +109 -0
  96. package/dist/esm-es5/cart-394c9ddb.js +1 -0
  97. package/dist/esm-es5/{hasInclusivePrice-565ddbe5.js → hasInclusivePrice-f0322e1c.js} +1 -1
  98. package/dist/esm-es5/index.js +1 -1
  99. package/dist/esm-es5/{invoice-0e462fcc.js → invoice-5ae81ae5.js} +1 -1
  100. package/dist/esm-es5/{isCollectMobileTablet-0bcba25a.js → isCollectMobileTablet-15b668d6.js} +1 -1
  101. package/dist/esm-es5/loader.js +1 -1
  102. package/dist/esm-es5/localization-0ebc8356.js +1 -0
  103. package/dist/esm-es5/{paypal-06b67be0.js → paypal-b6fa3ec3.js} +2 -2
  104. package/dist/esm-es5/{placeTestOrder-6c9a6c8a.js → placeTestOrder-5756cbc3.js} +1 -1
  105. package/dist/esm-es5/{renderCheckoutCurrency-910fea67.js → renderCheckoutCurrency-5f3e06ea.js} +1 -1
  106. package/dist/esm-es5/zonos-address-display_8.entry.js +1 -0
  107. package/dist/esm-es5/zonos-address_4.entry.js +1 -1
  108. package/dist/esm-es5/zonos-card_5.entry.js +1 -1
  109. package/dist/esm-es5/zonos-cart-items_12.entry.js +1 -1
  110. package/dist/esm-es5/zonos-checkbox_2.entry.js +1 -0
  111. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  112. package/dist/esm-es5/zonos-collect-cart-items_3.entry.js +1 -1
  113. package/dist/esm-es5/zonos-collect-finish_6.entry.js +1 -1
  114. package/dist/esm-es5/zonos-collect.entry.js +1 -1
  115. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  116. package/dist/esm-es5/zonos-country-flag.entry.js +1 -1
  117. package/dist/esm-es5/zonos-country-select_4.entry.js +1 -1
  118. package/dist/esm-es5/zonos-elements.js +1 -1
  119. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  120. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  121. package/dist/esm-es5/zonos-invoice-cart-items_2.entry.js +1 -1
  122. package/dist/esm-es5/zonos-invoice-finish_5.entry.js +1 -1
  123. package/dist/esm-es5/zonos-invoice.entry.js +1 -1
  124. package/dist/esm-es5/zonos-language-select_2.entry.js +1 -1
  125. package/dist/esm-es5/zonos-store-credit.entry.js +1 -0
  126. package/dist/scripts/index.d.ts +68 -1
  127. package/dist/scripts/index.js +1 -1
  128. package/dist/scripts/loadZonos.js +1 -1
  129. package/dist/scripts/zonos.js +1 -1
  130. package/dist/types/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.d.ts +1 -0
  131. package/dist/types/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-store-credit/zonos-store-credit.d.ts +17 -0
  132. package/dist/types/components/checkout/zonos-checkout/zonos-checkout.d.ts +5 -0
  133. package/dist/types/components/store/checkout/cart.d.ts +8 -1
  134. package/dist/types/components/store/checkout/storeCredit.d.ts +111 -0
  135. package/dist/types/components/store/checkout/stripe.d.ts +1 -1
  136. package/dist/types/components/store/translationStore/strings.arabic.d.ts +39 -0
  137. package/dist/types/components/store/translationStore/strings.base.d.ts +39 -0
  138. package/dist/types/components/store/translationStore/strings.chinese.d.ts +39 -0
  139. package/dist/types/components/store/translationStore/strings.danish.d.ts +39 -0
  140. package/dist/types/components/store/translationStore/strings.dutch.d.ts +39 -0
  141. package/dist/types/components/store/translationStore/strings.french.d.ts +39 -0
  142. package/dist/types/components/store/translationStore/strings.german.d.ts +39 -0
  143. package/dist/types/components/store/translationStore/strings.hebrew.d.ts +39 -0
  144. package/dist/types/components/store/translationStore/strings.indonesian.d.ts +39 -0
  145. package/dist/types/components/store/translationStore/strings.italian.d.ts +39 -0
  146. package/dist/types/components/store/translationStore/strings.japanese.d.ts +39 -0
  147. package/dist/types/components/store/translationStore/strings.korean.d.ts +39 -0
  148. package/dist/types/components/store/translationStore/strings.norwegian.d.ts +39 -0
  149. package/dist/types/components/store/translationStore/strings.polish.d.ts +39 -0
  150. package/dist/types/components/store/translationStore/strings.portuguese.d.ts +39 -0
  151. package/dist/types/components/store/translationStore/strings.russian.d.ts +39 -0
  152. package/dist/types/components/store/translationStore/strings.spanish.d.ts +39 -0
  153. package/dist/types/components/store/translationStore/strings.swedish.d.ts +39 -0
  154. package/dist/types/components/store/translationStore/strings.turkish.d.ts +39 -0
  155. package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +39 -0
  156. package/dist/types/components.d.ts +21 -0
  157. package/dist/types/types/checkout/api/CheckoutSession.d.ts +9 -1
  158. package/dist/types/types/generated/graphql.internal.types.d.ts +713 -4
  159. package/dist/types/types/generated/graphql.internal.types.ts +956 -4
  160. package/dist/types/types/utils/ZonosSettings.d.ts +4 -0
  161. package/dist/zonos-elements/index.esm.js +1 -1
  162. package/dist/zonos-elements/{p-1f1bf95c.system.entry.js → p-07ca3347.system.entry.js} +1 -1
  163. package/dist/zonos-elements/p-09d7a5cb.system.js +18 -0
  164. package/dist/zonos-elements/p-0af96b5b.system.entry.js +1 -0
  165. package/dist/zonos-elements/{p-9c64ca98.system.entry.js → p-0da3cc62.system.entry.js} +1 -1
  166. package/dist/zonos-elements/p-0dd5a4b8.system.js +1 -0
  167. package/dist/zonos-elements/{p-4d4b7faa.entry.js → p-1162b685.entry.js} +1 -1
  168. package/dist/zonos-elements/{p-4d081ce8.entry.js → p-11d6de1a.entry.js} +1 -1
  169. package/dist/zonos-elements/p-1282495f.system.js +1 -0
  170. package/dist/zonos-elements/p-13041752.js +1 -0
  171. package/dist/zonos-elements/{p-1b5f89d5.system.js → p-27fad55a.system.js} +1 -1
  172. package/dist/zonos-elements/p-29b60bf3.system.js +1 -1
  173. package/dist/zonos-elements/p-29f7950c.js +17 -0
  174. package/dist/zonos-elements/p-2b118454.js +1 -0
  175. package/dist/zonos-elements/{p-26718a78.entry.js → p-2bdc2206.entry.js} +1 -1
  176. package/dist/zonos-elements/{p-b360ee5b.entry.js → p-2c2e5ee6.entry.js} +1 -1
  177. package/dist/zonos-elements/{p-bd004403.system.js → p-2c9c750e.system.js} +1 -1
  178. package/dist/zonos-elements/{p-c9e3bc98.system.js → p-321e7920.system.js} +1 -1
  179. package/dist/zonos-elements/p-3d757163.entry.js +1 -0
  180. package/dist/zonos-elements/{p-456c0e52.js → p-4f23732f.js} +1 -1
  181. package/dist/zonos-elements/{p-321d2963.js → p-57b27c60.js} +1 -1
  182. package/dist/zonos-elements/{p-6d37f669.entry.js → p-615b5d13.entry.js} +1 -1
  183. package/dist/zonos-elements/p-620ba943.js +1 -0
  184. package/dist/zonos-elements/p-785111e7.entry.js +1 -0
  185. package/dist/zonos-elements/p-7b294762.system.entry.js +1 -0
  186. package/dist/zonos-elements/p-7fde2d8a.entry.js +1 -0
  187. package/dist/zonos-elements/p-8abeab5a.entry.js +1 -0
  188. package/dist/zonos-elements/{p-4a395eea.system.entry.js → p-8dfa0bb8.system.entry.js} +1 -1
  189. package/dist/zonos-elements/{p-06e2bc14.entry.js → p-8efb79ab.entry.js} +1 -1
  190. package/dist/zonos-elements/p-8f1ab25c.system.entry.js +1 -0
  191. package/dist/zonos-elements/{p-358dfb9e.entry.js → p-920d9189.entry.js} +1 -1
  192. package/dist/zonos-elements/p-92d91395.system.entry.js +1 -0
  193. package/dist/zonos-elements/{p-b9a4430c.entry.js → p-95f7f2a0.entry.js} +1 -1
  194. package/dist/zonos-elements/{p-f31fbbf0.entry.js → p-97fb5ad5.entry.js} +1 -1
  195. package/dist/zonos-elements/{p-bc6b33fa.entry.js → p-9ff90151.entry.js} +1 -1
  196. package/dist/zonos-elements/{p-4c087a8e.system.entry.js → p-a0ac3ca2.system.entry.js} +1 -1
  197. package/dist/zonos-elements/{p-09110bb7.system.entry.js → p-a1e23675.system.entry.js} +1 -1
  198. package/dist/zonos-elements/{p-36bea5d5.system.entry.js → p-a5adc047.system.entry.js} +1 -1
  199. package/dist/zonos-elements/{p-101226f3.system.entry.js → p-a5fb864a.system.entry.js} +1 -1
  200. package/dist/zonos-elements/{p-54c95926.entry.js → p-a95ac160.entry.js} +1 -1
  201. package/dist/zonos-elements/p-ac353826.js +1 -0
  202. package/dist/zonos-elements/{p-b589f621.system.entry.js → p-b37a85f0.system.entry.js} +1 -1
  203. package/dist/zonos-elements/{p-302b7105.system.entry.js → p-b49b8da4.system.entry.js} +1 -1
  204. package/dist/zonos-elements/{p-8d1efd7b.entry.js → p-bdaf2a38.entry.js} +1 -1
  205. package/dist/zonos-elements/{p-3ad2a9a3.system.entry.js → p-c1ae7391.system.entry.js} +1 -1
  206. package/dist/zonos-elements/{p-a75b3efc.system.entry.js → p-c2121663.system.entry.js} +1 -1
  207. package/dist/zonos-elements/{p-c87d3d50.system.js → p-c52b917b.system.js} +1 -1
  208. package/dist/zonos-elements/{p-0a2abbab.system.entry.js → p-c6047442.system.entry.js} +1 -1
  209. package/dist/zonos-elements/p-ca19a10a.js +1 -0
  210. package/dist/zonos-elements/p-cf69bcc4.system.js +1 -0
  211. package/dist/zonos-elements/{p-3ece0f96.system.entry.js → p-d65cfa9b.system.entry.js} +1 -1
  212. package/dist/zonos-elements/{p-5eaa0de1.entry.js → p-d8610393.entry.js} +1 -1
  213. package/dist/zonos-elements/p-daaaa8f1.system.entry.js +1 -0
  214. package/dist/zonos-elements/{p-8a424412.entry.js → p-efa69c89.entry.js} +1 -1
  215. package/dist/zonos-elements/p-fbccfa3e.system.js +1 -0
  216. package/dist/zonos-elements/{p-079bc009.system.entry.js → p-fce715f1.system.entry.js} +1 -1
  217. package/dist/zonos-elements/p-fe6cc354.entry.js +1 -0
  218. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  219. package/package.json +1 -1
  220. package/dist/cjs/zonos-toggle.cjs.entry.js +0 -35
  221. package/dist/esm/zonos-toggle.entry.js +0 -31
  222. package/dist/esm-es5/cart-efb30253.js +0 -1
  223. package/dist/esm-es5/localization-c1aff677.js +0 -1
  224. package/dist/esm-es5/zonos-address-display_9.entry.js +0 -1
  225. package/dist/esm-es5/zonos-toggle.entry.js +0 -1
  226. package/dist/zonos-elements/p-096182f0.system.js +0 -1
  227. package/dist/zonos-elements/p-0aeba2c7.system.js +0 -1
  228. package/dist/zonos-elements/p-127e0395.js +0 -17
  229. package/dist/zonos-elements/p-197d9b23.system.entry.js +0 -1
  230. package/dist/zonos-elements/p-25dd58f8.system.entry.js +0 -1
  231. package/dist/zonos-elements/p-445072f8.js +0 -1
  232. package/dist/zonos-elements/p-507f00d2.js +0 -1
  233. package/dist/zonos-elements/p-5fd0cd66.system.js +0 -1
  234. package/dist/zonos-elements/p-661cd4ce.system.entry.js +0 -1
  235. package/dist/zonos-elements/p-777e0a81.entry.js +0 -1
  236. package/dist/zonos-elements/p-7e77b055.system.entry.js +0 -1
  237. package/dist/zonos-elements/p-80524eac.entry.js +0 -1
  238. package/dist/zonos-elements/p-8b206982.system.js +0 -1
  239. package/dist/zonos-elements/p-9eea270b.entry.js +0 -1
  240. package/dist/zonos-elements/p-c4e358f2.js +0 -1
  241. package/dist/zonos-elements/p-cda52300.js +0 -1
  242. package/dist/zonos-elements/p-d233ef0d.entry.js +0 -1
  243. package/dist/zonos-elements/p-f8f7d491.js +0 -1
  244. package/dist/zonos-elements/p-fc0aa91e.system.js +0 -18
@@ -1,6 +1,7 @@
1
1
  import { Fragment, h, Host, } from "@stencil/core";
2
2
  import { cartStore } from "../../../store/checkout/cart";
3
3
  import { paypalStore, paypalStoreReset, } from "../../../store/checkout/paypal";
4
+ import { storeCreditStore, storeCreditStoreReset, } from "../../../store/checkout/storeCredit";
4
5
  import { stripeStore, stripeStoreMessageBasedOnStatus, stripeStoreReset, stripeStoreResetPromoCode, stripeStoreRetrievePayment, } from "../../../store/checkout/stripe";
5
6
  import { storageStore } from "../../../store/storageStore";
6
7
  import { translate } from "../../../store/translationStore";
@@ -431,6 +432,47 @@ export class ZonosCheckoutFinish {
431
432
  paypalStoreReset();
432
433
  storageStore.checkoutSessionId = null;
433
434
  };
435
+ this.checkStoreCreditOrderStatus = async () => {
436
+ // show success message right away when order id is already created
437
+ this.isLoading = false;
438
+ if (storeCreditStore.orderIdCreated) {
439
+ const checkoutSessionId = storageStore.checkoutSessionId;
440
+ submitGtag({
441
+ event: 'zonos-checkout-success',
442
+ metadata: this.buildPurchaseMetadata({
443
+ checkoutSessionId: checkoutSessionId || '',
444
+ }),
445
+ });
446
+ submitGtag({
447
+ event: 'purchase',
448
+ metadata: this.buildPurchaseMetadata({
449
+ checkoutSessionId: checkoutSessionId || '',
450
+ }),
451
+ });
452
+ void trackConversionEvent({
453
+ checkoutSessionId,
454
+ eventName: 'checkout_orderCompleted',
455
+ });
456
+ this.notificationType = 'success';
457
+ this.notificationTitle = translate("You're all set!");
458
+ this.notificationMessages =
459
+ stripeStoreMessageBasedOnStatus('succeeded').messages;
460
+ // override title if notification type is success
461
+ this.useOverrideSuccessNotification();
462
+ const successEvent = createCustomEvent('zonos-checkout-success', {
463
+ message: 'Zonos Checkout successfully processed order',
464
+ });
465
+ document.dispatchEvent(successEvent);
466
+ // wait this to finish before resetting store and checkout session id
467
+ await this.handleSuccessBehavior();
468
+ }
469
+ // reset stores when checkout is finished
470
+ stripeStoreResetPromoCode();
471
+ stripeStoreReset();
472
+ paypalStoreReset();
473
+ storeCreditStoreReset();
474
+ storageStore.checkoutSessionId = null;
475
+ };
434
476
  this.closeClickHandler = () => {
435
477
  this.closeClick.emit();
436
478
  };
@@ -463,6 +505,9 @@ export class ZonosCheckoutFinish {
463
505
  if (cartStore.isStagingMode) {
464
506
  void this.checkStagingOrderStatus();
465
507
  }
508
+ else if (storeCreditStore.orderIdCreated) {
509
+ void this.checkStoreCreditOrderStatus();
510
+ }
466
511
  else if (paypalStore.orderIdCreated) {
467
512
  void this.checkPaypalPaymentStatus();
468
513
  }
@@ -472,11 +517,11 @@ export class ZonosCheckoutFinish {
472
517
  }
473
518
  render() {
474
519
  const isTestMode = getIsTestMode();
475
- return (h(Host, { key: '80a543fca5dbc63dde41806702b2f6dd4fa849ab', class: "zonos--checkout-finish zonos--elements", style: {
520
+ return (h(Host, { key: 'c74f250bac797f8c000bac4892bc5ab56c0867bb', class: "zonos--checkout-finish zonos--elements", style: {
476
521
  '--zonos--border-radius': getBorderRadius({
477
522
  overrideBorderStyle: this.borderRadius,
478
523
  }),
479
- } }, !this.isLoading && (h("div", { key: '6cab293041902e156563f37db6f0e77caaeeaaf9', class: "zonos--finish-details" }, h("div", { key: '6bf32844fa9d38eae6e9f337e56b7918e49bf793', class: "zonos--group" }, this.notificationType === 'success' ? (h("zonos-icon", { "aria-label": "Order success", content: SuccessIcon, iconColor: 'blue-800', size: 50 })) : (h("zonos-icon", { "aria-label": "Order failed", content: RemoveIcon, iconColor: 'red-800', size: 50 })), h("zonos-text", { key: 'bf13e59b7bc2380609ffba879fa2b1d8c5d9a9e0', class: "zonos--title", type: "semiBoldSubheader" }, this.notificationTitle), h("zonos-text", { key: 'c246affb94a9799e0c556affb73b2ebfb69a9c7f', class: "zonos--subtitle", textColor: "gray-600" }, this.notificationMessages.map(message => (h(Fragment, null, message, h("br", null))))), this.shouldRenderCloseButtonForRedirectBehavior() && (h("zonos-button", { key: '61fa4fa0e09c0ce2905281b2696f42172c7a2bcd',
524
+ } }, !this.isLoading && (h("div", { key: '5ee705381b0246f5035f512c9d19beba6dc33d4f', class: "zonos--finish-details" }, h("div", { key: '1d1a54d8f73535aaada32601c5e771c9fd381104', class: "zonos--group" }, this.notificationType === 'success' ? (h("zonos-icon", { "aria-label": "Order success", content: SuccessIcon, iconColor: 'blue-800', size: 50 })) : (h("zonos-icon", { "aria-label": "Order failed", content: RemoveIcon, iconColor: 'red-800', size: 50 })), h("zonos-text", { key: '68c898ee87166d08bd52702ae8f9bfe51c393076', class: "zonos--title", type: "semiBoldSubheader" }, this.notificationTitle), h("zonos-text", { key: '98b6eaff782fe34a8dbd258e4c7d0c81c3577bcc', class: "zonos--subtitle", textColor: "gray-600" }, this.notificationMessages.map(message => (h(Fragment, null, message, h("br", null))))), this.shouldRenderCloseButtonForRedirectBehavior() && (h("zonos-button", { key: 'ccc5e7973b2e962e22ac56dcad6e33b048621036',
480
525
  // Only show loading spinner if it's not an error notification
481
526
  loading: this.isWaitingToRedirect &&
482
527
  this.notificationType !== 'error', onClick: () => {
@@ -488,9 +533,9 @@ export class ZonosCheckoutFinish {
488
533
  }
489
534
  this.closeClickHandler();
490
535
  }, size: "md", variant: "primary" }, translate('Close'))), !window.Zonos.isLegacyCheckout &&
491
- this.shouldRenderKeepShoppingButton() && (h("zonos-button", { key: '9227d7832ed477be556cb6d59c644a74c293c740', onClick: () => this.closeClickHandler(), size: "md", variant: "primary" }, this.notificationActionText))), isTestMode &&
536
+ this.shouldRenderKeepShoppingButton() && (h("zonos-button", { key: 'cd30bc010f2a3e935d9b80e56389581a9150b021', onClick: () => this.closeClickHandler(), size: "md", variant: "primary" }, this.notificationActionText))), isTestMode &&
492
537
  cartStore.step === 'finish' &&
493
- this.notificationType === 'success' && (h("div", { key: '9107be1ef7895b0a5e3fe0a985036a11de7011d3', class: "zonos--finish-button-wrapper" }, h("zonos-button", { key: 'b0de8743bea8dd9ac7099bd5b77811f80d80a380', backgroundColor: "gray-0", buttonColor: "gray-1000", onClick: () => this.closeClickHandler(), size: "lg", variant: "outline" }, "New test cart"), h("zonos-button", { key: 'f90749b9af4c17eac554efb6d3d12cc41ac6e3c8', onClick: () => {
538
+ this.notificationType === 'success' && (h("div", { key: '458809f316ac5129efbc7fe90d1549c042d477af', class: "zonos--finish-button-wrapper" }, h("zonos-button", { key: 'dcf0c595cb119a731c34c1aff09960db8a1fb251', backgroundColor: "gray-0", buttonColor: "gray-1000", onClick: () => this.closeClickHandler(), size: "lg", variant: "outline" }, "New test cart"), h("zonos-button", { key: '76d55870370b4906970b3e2109617ba2230eee7e', onClick: () => {
494
539
  const isZonosDashboard = window.location.hostname.includes('dashboard.zonos.com');
495
540
  this.redirectToUrl(isZonosDashboard
496
541
  ? '/orders/all'
@@ -1,6 +1,7 @@
1
1
  import { Fragment, h, Host, } from "@stencil/core";
2
2
  import { cartStore, cartStoreNextStep, } from "../../../store/checkout/cart";
3
3
  import { paypalStore } from "../../../store/checkout/paypal";
4
+ import { storeCreditStore, storeCreditStoreCoversFullAmount, } from "../../../store/checkout/storeCredit";
4
5
  import { stripeStore } from "../../../store/checkout/stripe";
5
6
  import { storageStore } from "../../../store/storageStore";
6
7
  import { translate } from "../../../store/translationStore";
@@ -52,7 +53,8 @@ export class ZonosCheckoutPayment {
52
53
  */
53
54
  this.continueClickHandler = async ({ currencyCode, }) => {
54
55
  var _a, _b;
55
- if (!this.handleValidate()) {
56
+ // Skip Stripe payment validation when store credit covers the full order
57
+ if (!storeCreditStoreCoversFullAmount() && !this.handleValidate()) {
56
58
  this.showErrorBanner = true;
57
59
  // Attempt to submit the form so the missing input error will be shown in Stripe
58
60
  void ((_a = stripeStore.stripeElements) === null || _a === void 0 ? void 0 : _a.submit());
@@ -143,6 +145,7 @@ export class ZonosCheckoutPayment {
143
145
  const isTestMode = getIsTestMode();
144
146
  const isStagingMode = cartStore.isStagingMode || getIsStagingMode();
145
147
  const isPaypalTabSelected = ((_a = stripeStore.stripePaymentEventData) === null || _a === void 0 ? void 0 : _a.value.type) === 'external_paypal';
148
+ const storeCreditCoversFullOrder = storeCreditStoreCoversFullAmount();
146
149
  const renderPayment = () => {
147
150
  if (isStagingMode) {
148
151
  const { colorPrimary } = zonosStore.appearance;
@@ -158,7 +161,9 @@ export class ZonosCheckoutPayment {
158
161
  variant: this.submitBtnType }, translate('Place test order')))));
159
162
  }
160
163
  return (h(Fragment, null, this.showErrorBanner && (h("zonos-banner", { class: "zonos--error-banner", intent: "error" }, translate('Missing required fields. Make sure all fields are completed.'))), this.hasStripePaymentError && (h("zonos-banner", { class: "zonos--payment-error-banner", intent: "error" }, stripeStore.customErrorMessage ||
161
- translate("We couldn't complete your payment. Please verify the payment details and try again."))), paypalStore.paypalErrorMessage && (h("zonos-banner", { class: "zonos--payment-error-banner", intent: "error" }, paypalStore.paypalErrorMessage)), h("zonos-payment", null), h("div", { class: "zonos--group-btn" }, !isPaypalTabSelected && (h(Fragment, null, h("zonos-button", { backgroundColor: this.submitBtnColor, bold: true, isDisabled: this.continueLoading &&
164
+ translate("We couldn't complete your payment. Please verify the payment details and try again."))), paypalStore.paypalErrorMessage && (h("zonos-banner", { class: "zonos--payment-error-banner", intent: "error" }, paypalStore.paypalErrorMessage)), cartStore.customerAuthenticationToken &&
165
+ storeCreditStore.availableBalance != null &&
166
+ storeCreditStore.availableBalance > 0 && (h("zonos-store-credit", null)), storeCreditCoversFullOrder ? (h("zonos-banner", { intent: "info" }, translate('Store credit covers your full order'))) : (h("zonos-payment", null)), h("div", { class: "zonos--group-btn" }, (!isPaypalTabSelected || storeCreditCoversFullOrder) && (h(Fragment, null, h("zonos-button", { backgroundColor: this.submitBtnColor, bold: true, isDisabled: this.continueLoading &&
162
167
  stripeStore.checkoutSettlementCurrency === 'USD', loading: this.continueLoading &&
163
168
  stripeStore.checkoutSettlementCurrency !== 'USD', onClick: async () => {
164
169
  if (!cartStore.checkoutSession) {
@@ -171,22 +176,25 @@ export class ZonosCheckoutPayment {
171
176
  });
172
177
  }, size: "lg",
173
178
  // use primary type when on mobile mode
174
- variant: this.submitBtnType }, translate('Pay [orderTotal]', {
175
- orderTotal: renderCheckoutCurrency({
176
- amount: cartStore.total,
177
- isForeign: true,
178
- }),
179
- })), stripeStore.shouldRenderPayInUsdButton && (h("zonos-button", { class: "zonos--pay-in-base-currency-btn", isDisabled: this.continueLoading &&
179
+ variant: this.submitBtnType }, storeCreditCoversFullOrder
180
+ ? translate('Place order')
181
+ : translate('Pay [orderTotal]', {
182
+ orderTotal: renderCheckoutCurrency({
183
+ amount: cartStore.total,
184
+ isForeign: true,
185
+ }),
186
+ })), !storeCreditCoversFullOrder &&
187
+ stripeStore.shouldRenderPayInUsdButton && (h("zonos-button", { class: "zonos--pay-in-base-currency-btn", isDisabled: this.continueLoading &&
180
188
  stripeStore.checkoutSettlementCurrency !== 'USD', loading: this.continueLoading &&
181
189
  stripeStore.checkoutSettlementCurrency === 'USD', onClick: async () => {
182
190
  await this.continueClickHandler({
183
191
  currencyCode: 'USD',
184
192
  });
185
- }, size: "lg", variant: "subtle" }, translate('Click to pay in USD'))))), h("zonos-paypal-payment", { onPaypalSessionDone: ({ detail: { orderId } }) => {
193
+ }, size: "lg", variant: "subtle" }, translate('Click to pay in USD'))))), !storeCreditCoversFullOrder && (h("zonos-paypal-payment", { onPaypalSessionDone: ({ detail: { orderId } }) => {
186
194
  this.paypalSessionDone.emit(orderId);
187
195
  }, onPaypalSessionFail: () => this.paypalSessionFailed.emit(), style: {
188
196
  display: isPaypalTabSelected ? 'block' : 'none',
189
- } })), isTestMode && (h("zonos-card", { backgroundColor: "gray-100", borderRadius: 12, class: "zonos--test-cards" }, h("zonos-v-stack", { spacing: 16 }, h("div", null, h("zonos-text", { type: "semiBoldLabel" }, translate('Test cards')), h("zonos-text", { textColor: "gray-700" }, translate('Click to copy the card number. Use any future expiration date and three number CVC.'))), h("zonos-button", { icon: h("zonos-icon", { content: CheckmarkLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4242424242424242') }, translate('Success'), " (****4242)"), h("zonos-button", { icon: h("zonos-icon", { content: RemoveLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4000000000000002') }, translate('Failure'), " (****0002)")), h("zonos-notification", null)))));
197
+ } }))), isTestMode && (h("zonos-card", { backgroundColor: "gray-100", borderRadius: 12, class: "zonos--test-cards" }, h("zonos-v-stack", { spacing: 16 }, h("div", null, h("zonos-text", { type: "semiBoldLabel" }, translate('Test cards')), h("zonos-text", { textColor: "gray-700" }, translate('Click to copy the card number. Use any future expiration date and three number CVC.'))), h("zonos-button", { icon: h("zonos-icon", { content: CheckmarkLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4242424242424242') }, translate('Success'), " (****4242)"), h("zonos-button", { icon: h("zonos-icon", { content: RemoveLineIcon }), justifyContent: "flex-start", onClick: () => this.copyCardToClipboard('4000000000000002') }, translate('Failure'), " (****0002)")), h("zonos-notification", null)))));
190
198
  };
191
199
  return (h(Host, { class: "zonos--checkout-payment zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Payment method')), renderPayment())));
192
200
  }
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" aria-hidden="true">
2
+ <path fill="currentColor" fill-rule="evenodd" d="M4 5a3 3 0 0 0-3 3v8a3 3 0 0 0 3 3h16a3 3 0 0 0 3-3V8a3 3 0 0 0-3-3H4Zm16 2H4a1 1 0 0 0-1 1v1h18V8a1 1 0 0 0-1-1ZM2 11h20v3a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-3Zm6 4.5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H9a1 1 0 0 1-1-1Z" clip-rule="evenodd"/>
3
+ </svg>
@@ -0,0 +1,139 @@
1
+ :host {
2
+ font-family: var(--zonos--font-family, Inter), Inter;
3
+ display: block;
4
+ white-space: normal;
5
+ }
6
+ :host * {
7
+ font-family: var(--zonos--font-family, Inter), Inter;
8
+ }
9
+ :host img {
10
+ max-width: 100%;
11
+ }
12
+ :host dl,
13
+ :host dd,
14
+ :host h1,
15
+ :host h2,
16
+ :host h3,
17
+ :host h4,
18
+ :host h5,
19
+ :host h6,
20
+ :host hr,
21
+ :host figure,
22
+ :host p,
23
+ :host pre {
24
+ margin: 0;
25
+ }
26
+
27
+ /* All sets of variable are here */
28
+ /* smooth font rendering */
29
+ :host {
30
+ -moz-osx-font-smoothing: grayscale;
31
+ -webkit-font-smoothing: antialiased;
32
+ }
33
+
34
+ :host {
35
+ display: block;
36
+ margin-bottom: var(--zonos-elements-font-size-xl);
37
+ }
38
+ :host .zonos--store-credit-container {
39
+ background: linear-gradient(180deg, var(--zonos-elements-gray-0) 0%, var(--zonos-elements-gray-50) 100%);
40
+ border: 1px solid var(--zonos-elements-gray-200);
41
+ border-radius: var(--zonos--border-radius, var(--zonos-elements-radius-8));
42
+ box-shadow: var(--zonos-elements-v3-shadow-base);
43
+ overflow: hidden;
44
+ padding: 0;
45
+ position: relative;
46
+ }
47
+ :host .zonos--store-credit-container::before {
48
+ background: var(--zonos--primary-color, var(--zonos-elements-gray-400));
49
+ content: "";
50
+ height: 3px;
51
+ left: 0;
52
+ position: absolute;
53
+ right: 0;
54
+ top: 0;
55
+ }
56
+ :host .zonos--store-credit-header {
57
+ padding: var(--zonos-elements-radius-12) var(--zonos-elements-font-size-l) 0;
58
+ }
59
+ :host .zonos--store-credit-title-row {
60
+ align-items: center;
61
+ display: flex;
62
+ justify-content: space-between;
63
+ }
64
+ :host .zonos--store-credit-title-left {
65
+ align-items: center;
66
+ display: flex;
67
+ gap: var(--zonos-elements-font-size-s);
68
+ }
69
+ :host .zonos--store-credit-title-icon {
70
+ align-items: center;
71
+ background: color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 14%, transparent);
72
+ border-radius: calc(var(--zonos--border-radius, var(--zonos-elements-radius-8)) * 0.75);
73
+ display: flex;
74
+ flex-shrink: 0;
75
+ height: 22px;
76
+ justify-content: center;
77
+ width: 22px;
78
+ }
79
+ :host .zonos--store-credit-balance-badge {
80
+ background: color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 8%, var(--zonos-elements-gray-50));
81
+ border: 1px solid color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 22%, var(--zonos-elements-gray-200));
82
+ border-radius: calc(var(--zonos--border-radius, var(--zonos-elements-radius-8)) * 0.65);
83
+ padding: 2px var(--zonos-elements-font-size-s);
84
+ }
85
+ :host .zonos--store-credit-content {
86
+ display: flex;
87
+ flex-direction: column;
88
+ gap: var(--zonos-elements-font-size-s);
89
+ padding: var(--zonos-elements-font-size-s) var(--zonos-elements-font-size-l) var(--zonos-elements-radius-12);
90
+ }
91
+ :host .zonos--store-credit-checkbox {
92
+ align-items: center;
93
+ display: flex;
94
+ }
95
+ :host .zonos--store-credit-options {
96
+ display: flex;
97
+ flex-direction: column;
98
+ gap: var(--zonos-elements-font-size-s);
99
+ }
100
+ :host .zonos--store-credit-toggle-row {
101
+ display: flex;
102
+ }
103
+ :host .zonos--store-credit-custom-amount {
104
+ max-width: 240px;
105
+ }
106
+ :host .zonos--store-credit-custom-amount-row {
107
+ align-items: flex-end;
108
+ display: flex;
109
+ gap: var(--zonos-elements-font-size-s);
110
+ }
111
+ :host .zonos--store-credit-custom-amount-row zonos-input {
112
+ flex: 1;
113
+ }
114
+ :host .zonos--store-credit-error {
115
+ margin-top: 2px;
116
+ }
117
+ :host .zonos--store-credit-summary {
118
+ background: color-mix(in srgb, var(--zonos--primary-color, var(--zonos-elements-gray-400)) 6%, var(--zonos-elements-gray-50));
119
+ border-radius: calc(var(--zonos--border-radius, var(--zonos-elements-radius-8)) * 0.65);
120
+ padding: var(--zonos-elements-radius-10) var(--zonos-elements-font-size-s);
121
+ }
122
+ :host .zonos--store-credit-empty {
123
+ align-items: center;
124
+ display: flex;
125
+ flex-direction: column;
126
+ gap: var(--zonos-elements-font-size-s);
127
+ padding: var(--zonos-elements-font-size-xl) var(--zonos-elements-font-size-l) 22px;
128
+ text-align: center;
129
+ }
130
+ :host .zonos--store-credit-empty-icon {
131
+ align-items: center;
132
+ background: var(--zonos-elements-gray-100);
133
+ border-radius: 50%;
134
+ display: flex;
135
+ height: 52px;
136
+ justify-content: center;
137
+ opacity: 0.95;
138
+ width: 52px;
139
+ }
@@ -0,0 +1,137 @@
1
+ import { Fragment, h, Host, } from "@stencil/core";
2
+ import { cartStoreUpdateStoreCredit } from "../../../../store/checkout/cart";
3
+ import { storeCreditStore, storeCreditStoreGetEffectiveAmount, storeCreditStoreRefreshBalance, storeCreditStoreSetAmount, storeCreditStoreSetEnabled, storeCreditStoreSetUseFullBalance, } from "../../../../store/checkout/storeCredit";
4
+ import { translate } from "../../../../store/translationStore";
5
+ import { zonosStore, zonosStoreFontFamily, } from "../../../../store/zonosStore";
6
+ import { renderCheckoutCurrency } from "../../../../utils/checkout/renderCheckoutCurrency";
7
+ import { getBorderRadius } from "../../../../utils/getBorderRadius";
8
+ // eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
9
+ import StoreCreditIcon from "./assets/StoreCreditIcon.svg";
10
+ const AMOUNT_MODE_FULL = 'full';
11
+ const AMOUNT_MODE_CUSTOM = 'custom';
12
+ export class ZonosStoreCredit {
13
+ constructor() {
14
+ /**
15
+ * Whether the component is enabled
16
+ */
17
+ this.enabled = true;
18
+ /**
19
+ * Local state for custom amount input
20
+ */
21
+ this.customAmountInput = '';
22
+ this.handleUseStoreCreditChange = (checked) => {
23
+ storeCreditStoreSetEnabled(checked);
24
+ if (checked) {
25
+ // Enable store credit usage with full balance by default
26
+ storeCreditStoreSetUseFullBalance(true);
27
+ }
28
+ void cartStoreUpdateStoreCredit();
29
+ };
30
+ this.handleAmountModeChange = (mode) => {
31
+ const isFullBalance = mode === AMOUNT_MODE_FULL;
32
+ storeCreditStoreSetUseFullBalance(isFullBalance);
33
+ if (!isFullBalance) {
34
+ this.customAmountInput = '';
35
+ }
36
+ void cartStoreUpdateStoreCredit();
37
+ };
38
+ this.handleCustomAmountChange = (value) => {
39
+ this.customAmountInput = value;
40
+ // Clear error when user types
41
+ storeCreditStore.error = null;
42
+ };
43
+ this.handleApplyCustomAmount = () => {
44
+ const amount = parseFloat(this.customAmountInput);
45
+ if (!isNaN(amount) && amount > 0) {
46
+ storeCreditStoreSetAmount(amount);
47
+ }
48
+ else {
49
+ storeCreditStoreSetAmount(null);
50
+ }
51
+ if (!storeCreditStore.error) {
52
+ void cartStoreUpdateStoreCredit();
53
+ }
54
+ };
55
+ }
56
+ async componentWillLoad() {
57
+ await storeCreditStoreRefreshBalance();
58
+ }
59
+ render() {
60
+ if (!this.enabled) {
61
+ return null;
62
+ }
63
+ const { colorPrimary } = zonosStore.appearance;
64
+ const borderRadius = getBorderRadius({});
65
+ const availableBalance = storeCreditStore.availableBalance;
66
+ const hasBalance = availableBalance !== null && availableBalance > 0;
67
+ const isUsingStoreCredit = storeCreditStore.isEnabled;
68
+ const useFullBalance = storeCreditStore.useFullBalance;
69
+ const error = storeCreditStore.error;
70
+ const effectiveAmount = storeCreditStoreGetEffectiveAmount();
71
+ const formattedBalance = renderCheckoutCurrency({
72
+ amount: availableBalance !== null && availableBalance !== void 0 ? availableBalance : 0,
73
+ isForeign: true,
74
+ });
75
+ return (h(Host, { class: "zonos--elements zonos--store-credit", style: {
76
+ '--zonos--border-radius': borderRadius,
77
+ '--zonos--font-family': zonosStoreFontFamily(),
78
+ '--zonos--primary-color': colorPrimary,
79
+ } }, h("div", { class: "zonos--store-credit-container" }, h("div", { class: "zonos--store-credit-header" }, h("div", { class: "zonos--store-credit-title-row" }, h("div", { class: "zonos--store-credit-title-left" }, h("div", { "aria-hidden": "true", class: "zonos--store-credit-title-icon" }, h("zonos-icon", { content: StoreCreditIcon, iconColor: 'gray-500', size: 22 })), h("zonos-text", { type: "semiBoldLabel" }, translate('Store credit'))), hasBalance && (h("div", { class: "zonos--store-credit-balance-badge" }, h("zonos-text", { textColor: "gray-600", type: "caption" }, formattedBalance))))), h(Fragment, null, hasBalance ? (h("div", { class: "zonos--store-credit-content" }, h("div", { class: "zonos--store-credit-checkbox" }, h("zonos-checkbox", { isChecked: isUsingStoreCredit, label: translate('Use store credit'), onCheckboxSelected: e => this.handleUseStoreCreditChange(e.detail), size: 16 })), isUsingStoreCredit && (h("div", { class: "zonos--store-credit-options" }, h("div", { class: "zonos--store-credit-toggle-row" }, h("zonos-toggle", { onToggleChanged: e => this.handleAmountModeChange(e.detail), options: [
80
+ {
81
+ label: translate('Apply full balance'),
82
+ value: AMOUNT_MODE_FULL,
83
+ },
84
+ {
85
+ label: translate('Enter amount'),
86
+ value: AMOUNT_MODE_CUSTOM,
87
+ },
88
+ ], value: useFullBalance ? AMOUNT_MODE_FULL : AMOUNT_MODE_CUSTOM })), !useFullBalance && (h("div", { class: "zonos--store-credit-custom-amount" }, h("div", { class: "zonos--store-credit-custom-amount-row" }, h("zonos-input", { inputLabel: translate('Enter amount'), inputValue: this.customAmountInput, isError: !!error, onInputChange: e => this.handleCustomAmountChange(e.detail) }), h("zonos-button", { onClick: this.handleApplyCustomAmount, size: "sm", variant: "primary" }, translate('Apply'))))), error && (h("div", { class: "zonos--store-credit-error" }, h("zonos-text", { textColor: "red-600", type: "caption" }, error))), h("div", { class: "zonos--store-credit-summary" }, h("zonos-text", { textColor: "gray-800", type: "semiBoldLabel" }, translate('Amount to apply: [amount]', {
89
+ amount: renderCheckoutCurrency({
90
+ amount: effectiveAmount,
91
+ isForeign: true,
92
+ }),
93
+ }))))))) : (h("div", { class: "zonos--store-credit-empty" }, h("div", { "aria-hidden": "true", class: "zonos--store-credit-empty-icon" }, h("zonos-icon", { content: StoreCreditIcon, iconColor: "gray-500", size: 28 })), h("zonos-text", { textColor: "gray-600", type: "caption" }, translate('No store credit available'))))))));
94
+ }
95
+ static get is() { return "zonos-store-credit"; }
96
+ static get encapsulation() { return "shadow"; }
97
+ static get originalStyleUrls() {
98
+ return {
99
+ "$": ["zonos-store-credit.scss"]
100
+ };
101
+ }
102
+ static get styleUrls() {
103
+ return {
104
+ "$": ["zonos-store-credit.css"]
105
+ };
106
+ }
107
+ static get properties() {
108
+ return {
109
+ "enabled": {
110
+ "type": "boolean",
111
+ "mutable": false,
112
+ "complexType": {
113
+ "original": "boolean",
114
+ "resolved": "boolean",
115
+ "references": {}
116
+ },
117
+ "required": false,
118
+ "optional": false,
119
+ "docs": {
120
+ "tags": [],
121
+ "text": "Whether the component is enabled"
122
+ },
123
+ "getter": false,
124
+ "setter": false,
125
+ "attribute": "enabled",
126
+ "reflect": false,
127
+ "defaultValue": "true"
128
+ }
129
+ };
130
+ }
131
+ static get states() {
132
+ return {
133
+ "customAmountInput": {}
134
+ };
135
+ }
136
+ static get elementRef() { return "el"; }
137
+ }
@@ -1,7 +1,8 @@
1
1
  import { Fragment, h, Host, } from "@stencil/core";
2
2
  import { cartStore, cartStoreClearCheckoutInterval, cartStoreNextStep, cartStoreOnChange, cartStoreReset, cartStoreResetTabItems, cartStoreSetCheckoutSession, cartStoreStartCheckoutInterval, cartStoreUpdateItems, cartStoreUpdateToErrorState, } from "../../store/checkout/cart";
3
3
  import { paypalInitScript, paypalStore, paypalStoreHasPaypalEnabled, } from "../../store/checkout/paypal";
4
- import { getCheckoutSessionBody, initStripeElements, stripeStore, stripeStoreCleanupDomesticShippingSession, stripeStoreConfirmPayment, stripeStoreGetPaymentIntent, stripeStoreHandleInventoryCheck, stripeStoreHandleInventoryRefund, stripeStoreInitCheckoutSession, stripeStorePrefetchLandedCost, stripeStoreReset, stripeStoreRetrievePayment, stripeStoreUpdateCheckoutSessionBaseCurrency, } from "../../store/checkout/stripe";
4
+ import { storeCreditStoreApplyCredit, storeCreditStoreCoversFullAmount, storeCreditStoreCreateOrder, storeCreditStoreGetEffectiveAmount, } from "../../store/checkout/storeCredit";
5
+ import { getCheckoutSessionBody, initStripeElements, stripeStore, stripeStoreCleanupDomesticShippingSession, stripeStoreConfirmPayment, stripeStoreGetPaymentIntent, stripeStoreHandleInventoryCheck, stripeStoreHandleInventoryRefund, stripeStoreInitCheckoutSession, stripeStoreOnChange, stripeStorePrefetchLandedCost, stripeStoreReset, stripeStoreRetrievePayment, stripeStoreUpdateCheckoutSessionBaseCurrency, } from "../../store/checkout/stripe";
5
6
  import { localizationStore, localizationStoreOnChange, } from "../../store/hello/localization";
6
7
  import { storageStore, storageStoreSetEnabledVariantTestKeys, VARIANT_TEST_KEY_EXPIRATION, } from "../../store/storageStore";
7
8
  import { translate } from "../../store/translationStore";
@@ -36,6 +37,7 @@ import { sendLoadNativeCheckoutLog } from "../../utils/logging/sendLoadNativeChe
36
37
  import { mergeConfig } from "../../utils/mergeConfig";
37
38
  import { styles } from "../../utils/styles";
38
39
  import { submitGtag } from "../../utils/submitGtag";
40
+ import { validateCheckoutSession } from "../../utils/validateCheckoutSession";
39
41
  import { filterExpiredTests } from "../../utils/varianceTest/filterExpiredTests";
40
42
  import { getSelectedTestVariant } from "../../utils/varianceTest/getSelectedTestVariant";
41
43
  import { isTestEnabled } from "../../utils/varianceTest/isTestEnabl";
@@ -138,6 +140,11 @@ export class ZonosCheckout {
138
140
  * Whether or not the domestic checkout dialog should be shown
139
141
  */
140
142
  this.detectedDomesticCheckoutDialogOpen = false;
143
+ /**
144
+ * Whether or not the redirect to domestic checkout dialog should be shown.
145
+ * This is for BigCommerce stores when the user selects a domestic country in the international checkout.
146
+ */
147
+ this.redirectToDomesticCheckoutDialogOpen = false;
141
148
  /**
142
149
  * Client secret value
143
150
  */
@@ -1232,6 +1239,55 @@ export class ZonosCheckout {
1232
1239
  this.submitLoading = false;
1233
1240
  return;
1234
1241
  }
1242
+ // Apply store credit if customer has selected an amount
1243
+ const storeCreditAmount = storeCreditStoreGetEffectiveAmount();
1244
+ if (storeCreditAmount > 0) {
1245
+ const storeCreditResult = await storeCreditStoreApplyCredit();
1246
+ if (!storeCreditResult.success) {
1247
+ stripeStore.hasPaymentError = true;
1248
+ stripeStore.customErrorMessage =
1249
+ storeCreditResult.error ||
1250
+ translate('Unable to apply store credit. Please try again.');
1251
+ this.submitLoading = false;
1252
+ return;
1253
+ }
1254
+ }
1255
+ // If store credit covers the full order, create order directly without payment
1256
+ if (storeCreditStoreCoversFullAmount()) {
1257
+ try {
1258
+ // Validate checkout session (landed cost ID, etc.) before creating order
1259
+ const checkoutSessionStatus = await validateCheckoutSession();
1260
+ if (!checkoutSessionStatus.valid) {
1261
+ stripeStore.hasPaymentError = true;
1262
+ stripeStore.customErrorMessage = checkoutSessionStatus.errorMessage;
1263
+ this.submitLoading = false;
1264
+ return;
1265
+ }
1266
+ const orderResult = await storeCreditStoreCreateOrder();
1267
+ if (!orderResult.success) {
1268
+ stripeStore.hasPaymentError = true;
1269
+ stripeStore.customErrorMessage =
1270
+ orderResult.error ||
1271
+ translate('Unable to place order with store credit. Please try again.');
1272
+ this.submitLoading = false;
1273
+ return;
1274
+ }
1275
+ cartStoreNextStep();
1276
+ cartStoreClearCheckoutInterval();
1277
+ }
1278
+ catch (err) {
1279
+ logError(err);
1280
+ submitGtag({
1281
+ event: 'zonos-checkout-payment-fail',
1282
+ metadata: {
1283
+ checkoutSessionId: storageStore.checkoutSessionId,
1284
+ },
1285
+ });
1286
+ stripeStore.hasPaymentError = true;
1287
+ }
1288
+ this.submitLoading = false;
1289
+ return;
1290
+ }
1235
1291
  try {
1236
1292
  await stripeStoreConfirmPayment();
1237
1293
  cartStoreNextStep();
@@ -1423,6 +1479,27 @@ export class ZonosCheckout {
1423
1479
  this.shouldShowFedexShippingConsentDialog = true;
1424
1480
  }
1425
1481
  }),
1482
+ stripeStoreOnChange('stripeAddressEventData', addressEventData => {
1483
+ var _a;
1484
+ // For BigCommerce stores: redirect to domestic checkout when user selects a domestic country
1485
+ // Only redirect when the store's native currency is USD and the feature is enabled
1486
+ if (!window.Zonos.isBigCommerce ||
1487
+ !addressEventData ||
1488
+ this.redirectToDomesticCheckoutDialogOpen ||
1489
+ !((_a = zonosStore.genericSettings) === null || _a === void 0 ? void 0 : _a.isBigcommerceDomesticCheckoutRedirectEnabled) ||
1490
+ zonosStore.sourceCurrency !== 'USD') {
1491
+ return;
1492
+ }
1493
+ const shippingCountry = addressEventData.value.address.country;
1494
+ if (shippingCountry &&
1495
+ zonosStore.disabledCountries.includes(shippingCountry)) {
1496
+ this.redirectToDomesticCheckoutDialogOpen = true;
1497
+ log(`Domestic country ${shippingCountry} selected in international checkout, redirecting to BigCommerce domestic checkout`, 'info');
1498
+ setTimeout(() => {
1499
+ window.location.href = '/checkout';
1500
+ }, 2000);
1501
+ }
1502
+ }),
1426
1503
  ];
1427
1504
  // Initialize test keys
1428
1505
  this.initializeTestKeys();
@@ -1530,7 +1607,7 @@ export class ZonosCheckout {
1530
1607
  this.isMobile && 'mobile',
1531
1608
  this.isIframed && 'iframed',
1532
1609
  this.hiddenMode && 'hidden-mode',
1533
- ]) }, this.preview ? (renderContent()) : (h("zonos-dialog", { borderStyle: style, class: "zonos--checkout-dialog", "data-theme": rightSideTheme, height: "980px", isLoading: dialogLoading, mobile: this.isMobile, noBodyPadding: true, noBorder: true, noClickOutside: true, noCloseButton: true, onCloseDialog: () => this.closeDialogHandler(), open: this.open, width: "1200px" }, renderContent())), h("zonos-dialog", { isLoading: true, loadingText: translate('You will be redirected to international checkout shortly.'), loadingTitle: translate('We detected that you are shipping to an international address.'), noClickOutside: true, noCloseButton: true, open: this.detectedDomesticCheckoutDialogOpen, width: "450px" }), h("zonos-confirm-dialog", { class: "zonos--close-confirm-dialog", dialogCancelBtnText: translate("Don't close"), dialogConfirmBtnText: translate('Close'), dialogIntent: "warn", dialogOpen: this.confirmDialogOpen, dialogSubtitle: translate('Would you like to close checkout and return to the site?'), dialogTitle: translate('Are you sure?'), onCancelClicked: () => {
1610
+ ]) }, this.preview ? (renderContent()) : (h("zonos-dialog", { borderStyle: style, class: "zonos--checkout-dialog", "data-theme": rightSideTheme, height: "980px", isLoading: dialogLoading, mobile: this.isMobile, noBodyPadding: true, noBorder: true, noClickOutside: true, noCloseButton: true, onCloseDialog: () => this.closeDialogHandler(), open: this.open, width: "1200px" }, renderContent())), h("zonos-dialog", { isLoading: true, loadingText: translate('You will be redirected to international checkout shortly.'), loadingTitle: translate('We detected that you are shipping to an international address.'), noClickOutside: true, noCloseButton: true, open: this.detectedDomesticCheckoutDialogOpen, width: "450px" }), h("zonos-dialog", { isLoading: true, loadingText: translate('You will be redirected to domestic checkout shortly.'), loadingTitle: translate('We detected that you are shipping to a domestic address.'), noClickOutside: true, noCloseButton: true, open: this.redirectToDomesticCheckoutDialogOpen, width: "450px" }), h("zonos-confirm-dialog", { class: "zonos--close-confirm-dialog", dialogCancelBtnText: translate("Don't close"), dialogConfirmBtnText: translate('Close'), dialogIntent: "warn", dialogOpen: this.confirmDialogOpen, dialogSubtitle: translate('Would you like to close checkout and return to the site?'), dialogTitle: translate('Are you sure?'), onCancelClicked: () => {
1534
1611
  this.confirmDialogOpen = false;
1535
1612
  },
1536
1613
  // Mark user selected confirm to close the dialog
@@ -1767,6 +1844,7 @@ export class ZonosCheckout {
1767
1844
  "placedOrderInfo": {},
1768
1845
  "shouldShowFedexShippingConsentDialog": {},
1769
1846
  "detectedDomesticCheckoutDialogOpen": {},
1847
+ "redirectToDomesticCheckoutDialogOpen": {},
1770
1848
  "clientSecret": {},
1771
1849
  "stripeCustomerSessionClientSecret": {}
1772
1850
  };
@@ -1842,7 +1920,7 @@ export class ZonosCheckout {
1842
1920
  "signature": "(session: CheckoutSessionDetailsFragment) => Promise<void>",
1843
1921
  "parameters": [{
1844
1922
  "name": "session",
1845
- "type": "{ cartId: string | null; clientSecret: string; completedAt: string | null; customerProfile: { email: string | null; locations: { administrativeArea: string; countryCode: CountryCode; email: string | null; line1: string; line2: string | null; phone: string | null; name: string | null; locality: string; postalCode: string; }[] | null; name: string | null; } | null; customerSessionClientSecret: string | null; id: string; landedCost: { amountSubtotals: { discounts: number | null; duties: number; fees: number; items: number; landedCostTotal: number; shipping: number; taxes: number; } | null; appliedAdjustments: { adjustment: { name: string | null; source: AdjustmentSource | null; } | null; amount: number; type: LandedCostAdjustmentType | null; item: { amount: number; } | null; }[] | null; currencyCode: CurrencyCode; deMinimis: { type: DeMinimisType; threshold: DeMinimisThreshold; method: IncotermCode; note: string; formula: string; }[]; duties: { amount: number; currencyCode: CurrencyCode; }[]; fees: { amount: number; currencyCode: CurrencyCode; }[]; landedCostGuaranteeCode: LandedCostGuaranteeCode; id: string; method: IncotermCode; remittance: { amount: number; description: string; }[]; rootId: string; shipmentRating: { amount: number; currencyCode: CurrencyCode; displayName: string; id: string; shippingProfile: { serviceLevel: { code: string; }; transitTime: { guaranteedDelivery: string | null; max: number | null; min: number | null; type: TransitTypeCode | null; } | null; } | null; }; taxes: { amount: number; currencyCode: CurrencyCode; }[]; } | null; metadata: ({ key: string; value: string; } | null)[] | null; organizationId: string; references: { inclusivePriceConfigurationId: string | null; } | null; subtotals: { adjustments: number; duties: number; exchangeRate: { id: string; rate: number; sourceCurrencyCode: CurrencyCode; targetCurrencyCode: CurrencyCode; type: ExchangeRateType; }; fees: number; items: number; landedCostTotal: number; presentmentCurrencyCode: CurrencyCode; shipping: number; taxes: number; total: number; }; varianceTestResults: { selectedVariantKey: string; testKey: string; }[] | null; }",
1923
+ "type": "{ cartId: string | null; clientSecret: string; completedAt: string | null; customerProfile: { email: string | null; locations: { administrativeArea: string; countryCode: CountryCode; email: string | null; line1: string; line2: string | null; name: string | null; phone: string | null; locality: string; postalCode: string; }[] | null; name: string | null; storeCreditBalance: number | null; } | null; customerSessionClientSecret: string | null; id: string; landedCost: { amountSubtotals: { discounts: number | null; duties: number; fees: number; items: number; landedCostTotal: number; shipping: number; taxes: number; } | null; appliedAdjustments: { adjustment: { name: string | null; source: AdjustmentSource | null; } | null; amount: number; type: LandedCostAdjustmentType | null; item: { amount: number; } | null; }[] | null; currencyCode: CurrencyCode; deMinimis: { type: DeMinimisType; threshold: DeMinimisThreshold; method: IncotermCode; note: string; formula: string; }[]; duties: { amount: number; currencyCode: CurrencyCode; }[]; fees: { amount: number; currencyCode: CurrencyCode; }[]; landedCostGuaranteeCode: LandedCostGuaranteeCode; id: string; method: IncotermCode; remittance: { amount: number; description: string; }[]; rootId: string; shipmentRating: { amount: number; currencyCode: CurrencyCode; displayName: string; id: string; shippingProfile: { serviceLevel: { code: string; }; transitTime: { guaranteedDelivery: string | null; max: number | null; min: number | null; type: TransitTypeCode | null; } | null; } | null; }; taxes: { amount: number; currencyCode: CurrencyCode; }[]; } | null; metadata: ({ key: string; value: string; } | null)[] | null; organizationId: string; references: { inclusivePriceConfigurationId: string | null; } | null; subtotals: { adjustments: number; duties: number; exchangeRate: { id: string; rate: number; sourceCurrencyCode: CurrencyCode; targetCurrencyCode: CurrencyCode; type: ExchangeRateType; }; fees: number; items: number; landedCostTotal: number; presentmentCurrencyCode: CurrencyCode; shipping: number; storeCredit: number; taxes: number; total: number; }; varianceTestResults: { selectedVariantKey: string; testKey: string; }[] | null; }",
1846
1924
  "docs": ""
1847
1925
  }],
1848
1926
  "references": {
@@ -259,7 +259,7 @@ export class ZonosStripePhoneInput {
259
259
  "mutable": false,
260
260
  "complexType": {
261
261
  "original": "GenericZonosSettings['countryFields'] | null",
262
- "resolved": "null | undefined | { AD: CountryFields; AE: CountryFields; AF: CountryFields; AG: CountryFields; AI: CountryFields; AL: CountryFields; AM: CountryFields; AO: CountryFields; AQ: CountryFields; AR: CountryFields; AS: CountryFields; AT: CountryFields; AU: CountryFields; AW: CountryFields; AX: CountryFields; AZ: CountryFields; BA: CountryFields; BB: CountryFields; BD: CountryFields; BE: CountryFields; BF: CountryFields; BG: CountryFields; BH: CountryFields; BI: CountryFields; BJ: CountryFields; BL: CountryFields; BM: CountryFields; BN: CountryFields; BO: CountryFields; BQ: CountryFields; BR: CountryFields; BS: CountryFields; BT: CountryFields; BV: CountryFields; BW: CountryFields; BY: CountryFields; BZ: CountryFields; CA: CountryFields; CC: CountryFields; CD: CountryFields; CF: CountryFields; CG: CountryFields; CH: CountryFields; CI: CountryFields; CK: CountryFields; CL: CountryFields; CM: CountryFields; CN: CountryFields; CO: CountryFields; CR: CountryFields; CU: CountryFields; CV: CountryFields; CW: CountryFields; CX: CountryFields; CY: CountryFields; CZ: CountryFields; DE: CountryFields; DJ: CountryFields; DK: CountryFields; DM: CountryFields; DO: CountryFields; DZ: CountryFields; EC: CountryFields; EE: CountryFields; EG: CountryFields; EH: CountryFields; ER: CountryFields; ES: CountryFields; ET: CountryFields; FI: CountryFields; FJ: CountryFields; FK: CountryFields; FM: CountryFields; FO: CountryFields; FR: CountryFields; GA: CountryFields; GB: CountryFields; GD: CountryFields; GE: CountryFields; GF: CountryFields; GG: CountryFields; GH: CountryFields; GI: CountryFields; GL: CountryFields; GM: CountryFields; GN: CountryFields; GP: CountryFields; GQ: CountryFields; GR: CountryFields; GS: CountryFields; GT: CountryFields; GU: CountryFields; GW: CountryFields; GY: CountryFields; HK: CountryFields; HM: CountryFields; HN: CountryFields; HR: CountryFields; HT: CountryFields; HU: CountryFields; IC: CountryFields; ID: CountryFields; IE: CountryFields; IL: CountryFields; IM: CountryFields; IN: CountryFields; IO: CountryFields; IQ: CountryFields; IR: CountryFields; IS: CountryFields; IT: CountryFields; JE: CountryFields; JM: CountryFields; JO: CountryFields; JP: CountryFields; KE: CountryFields; KG: CountryFields; KH: CountryFields; KI: CountryFields; KM: CountryFields; KN: CountryFields; KP: CountryFields; KR: CountryFields; KW: CountryFields; KY: CountryFields; KZ: CountryFields; LA: CountryFields; LB: CountryFields; LC: CountryFields; LI: CountryFields; LK: CountryFields; LR: CountryFields; LS: CountryFields; LT: CountryFields; LU: CountryFields; LV: CountryFields; LY: CountryFields; MA: CountryFields; MC: CountryFields; MD: CountryFields; ME: CountryFields; MF: CountryFields; MG: CountryFields; MH: CountryFields; MK: CountryFields; ML: CountryFields; MM: CountryFields; MN: CountryFields; MO: CountryFields; MP: CountryFields; MQ: CountryFields; MR: CountryFields; MS: CountryFields; MT: CountryFields; MU: CountryFields; MV: CountryFields; MW: CountryFields; MX: CountryFields; MY: CountryFields; MZ: CountryFields; NA: CountryFields; NC: CountryFields; NE: CountryFields; NF: CountryFields; NG: CountryFields; NI: CountryFields; NL: CountryFields; NO: CountryFields; NP: CountryFields; NR: CountryFields; NU: CountryFields; NZ: CountryFields; OM: CountryFields; PA: CountryFields; PE: CountryFields; PF: CountryFields; PG: CountryFields; PH: CountryFields; PK: CountryFields; PL: CountryFields; PM: CountryFields; PN: CountryFields; PR: CountryFields; PS: CountryFields; PT: CountryFields; PW: CountryFields; PY: CountryFields; QA: CountryFields; RE: CountryFields; RO: CountryFields; RS: CountryFields; RU: CountryFields; RW: CountryFields; SA: CountryFields; SB: CountryFields; SC: CountryFields; SD: CountryFields; SE: CountryFields; SG: CountryFields; SH: CountryFields; SI: CountryFields; SJ: CountryFields; SK: CountryFields; SL: CountryFields; SM: CountryFields; SN: CountryFields; SO: CountryFields; SR: CountryFields; SS: CountryFields; ST: CountryFields; SV: CountryFields; SX: CountryFields; SY: CountryFields; SZ: CountryFields; TC: CountryFields; TD: CountryFields; TF: CountryFields; TG: CountryFields; TH: CountryFields; TJ: CountryFields; TK: CountryFields; TL: CountryFields; TM: CountryFields; TN: CountryFields; TO: CountryFields; TR: CountryFields; TT: CountryFields; TV: CountryFields; TW: CountryFields; TZ: CountryFields; UA: CountryFields; UG: CountryFields; UM: CountryFields; US: CountryFields; UY: CountryFields; UZ: CountryFields; VA: CountryFields; VC: CountryFields; VE: CountryFields; VG: CountryFields; VI: CountryFields; VN: CountryFields; VU: CountryFields; WF: CountryFields; WS: CountryFields; YE: CountryFields; YT: CountryFields; ZA: CountryFields; ZM: CountryFields; ZW: CountryFields; }",
262
+ "resolved": "null | undefined | { CC: CountryFields; TO: CountryFields; AD: CountryFields; AE: CountryFields; AF: CountryFields; AG: CountryFields; AI: CountryFields; AL: CountryFields; AM: CountryFields; AO: CountryFields; AQ: CountryFields; AR: CountryFields; AS: CountryFields; AT: CountryFields; AU: CountryFields; AW: CountryFields; AX: CountryFields; AZ: CountryFields; BA: CountryFields; BB: CountryFields; BD: CountryFields; BE: CountryFields; BF: CountryFields; BG: CountryFields; BH: CountryFields; BI: CountryFields; BJ: CountryFields; BL: CountryFields; BM: CountryFields; BN: CountryFields; BO: CountryFields; BQ: CountryFields; BR: CountryFields; BS: CountryFields; BT: CountryFields; BV: CountryFields; BW: CountryFields; BY: CountryFields; BZ: CountryFields; CA: CountryFields; CD: CountryFields; CF: CountryFields; CG: CountryFields; CH: CountryFields; CI: CountryFields; CK: CountryFields; CL: CountryFields; CM: CountryFields; CN: CountryFields; CO: CountryFields; CR: CountryFields; CU: CountryFields; CV: CountryFields; CW: CountryFields; CX: CountryFields; CY: CountryFields; CZ: CountryFields; DE: CountryFields; DJ: CountryFields; DK: CountryFields; DM: CountryFields; DO: CountryFields; DZ: CountryFields; EC: CountryFields; EE: CountryFields; EG: CountryFields; EH: CountryFields; ER: CountryFields; ES: CountryFields; ET: CountryFields; FI: CountryFields; FJ: CountryFields; FK: CountryFields; FM: CountryFields; FO: CountryFields; FR: CountryFields; GA: CountryFields; GB: CountryFields; GD: CountryFields; GE: CountryFields; GF: CountryFields; GG: CountryFields; GH: CountryFields; GI: CountryFields; GL: CountryFields; GM: CountryFields; GN: CountryFields; GP: CountryFields; GQ: CountryFields; GR: CountryFields; GS: CountryFields; GT: CountryFields; GU: CountryFields; GW: CountryFields; GY: CountryFields; HK: CountryFields; HM: CountryFields; HN: CountryFields; HR: CountryFields; HT: CountryFields; HU: CountryFields; IC: CountryFields; ID: CountryFields; IE: CountryFields; IL: CountryFields; IM: CountryFields; IN: CountryFields; IO: CountryFields; IQ: CountryFields; IR: CountryFields; IS: CountryFields; IT: CountryFields; JE: CountryFields; JM: CountryFields; JO: CountryFields; JP: CountryFields; KE: CountryFields; KG: CountryFields; KH: CountryFields; KI: CountryFields; KM: CountryFields; KN: CountryFields; KP: CountryFields; KR: CountryFields; KW: CountryFields; KY: CountryFields; KZ: CountryFields; LA: CountryFields; LB: CountryFields; LC: CountryFields; LI: CountryFields; LK: CountryFields; LR: CountryFields; LS: CountryFields; LT: CountryFields; LU: CountryFields; LV: CountryFields; LY: CountryFields; MA: CountryFields; MC: CountryFields; MD: CountryFields; ME: CountryFields; MF: CountryFields; MG: CountryFields; MH: CountryFields; MK: CountryFields; ML: CountryFields; MM: CountryFields; MN: CountryFields; MO: CountryFields; MP: CountryFields; MQ: CountryFields; MR: CountryFields; MS: CountryFields; MT: CountryFields; MU: CountryFields; MV: CountryFields; MW: CountryFields; MX: CountryFields; MY: CountryFields; MZ: CountryFields; NA: CountryFields; NC: CountryFields; NE: CountryFields; NF: CountryFields; NG: CountryFields; NI: CountryFields; NL: CountryFields; NO: CountryFields; NP: CountryFields; NR: CountryFields; NU: CountryFields; NZ: CountryFields; OM: CountryFields; PA: CountryFields; PE: CountryFields; PF: CountryFields; PG: CountryFields; PH: CountryFields; PK: CountryFields; PL: CountryFields; PM: CountryFields; PN: CountryFields; PR: CountryFields; PS: CountryFields; PT: CountryFields; PW: CountryFields; PY: CountryFields; QA: CountryFields; RE: CountryFields; RO: CountryFields; RS: CountryFields; RU: CountryFields; RW: CountryFields; SA: CountryFields; SB: CountryFields; SC: CountryFields; SD: CountryFields; SE: CountryFields; SG: CountryFields; SH: CountryFields; SI: CountryFields; SJ: CountryFields; SK: CountryFields; SL: CountryFields; SM: CountryFields; SN: CountryFields; SO: CountryFields; SR: CountryFields; SS: CountryFields; ST: CountryFields; SV: CountryFields; SX: CountryFields; SY: CountryFields; SZ: CountryFields; TC: CountryFields; TD: CountryFields; TF: CountryFields; TG: CountryFields; TH: CountryFields; TJ: CountryFields; TK: CountryFields; TL: CountryFields; TM: CountryFields; TN: CountryFields; TR: CountryFields; TT: CountryFields; TV: CountryFields; TW: CountryFields; TZ: CountryFields; UA: CountryFields; UG: CountryFields; UM: CountryFields; US: CountryFields; UY: CountryFields; UZ: CountryFields; VA: CountryFields; VC: CountryFields; VE: CountryFields; VG: CountryFields; VI: CountryFields; VN: CountryFields; VU: CountryFields; WF: CountryFields; WS: CountryFields; YE: CountryFields; YT: CountryFields; ZA: CountryFields; ZM: CountryFields; ZW: CountryFields; }",
263
263
  "references": {
264
264
  "GenericZonosSettings": {
265
265
  "location": "import",