@zonos/elements 1.3.18-alpha.0 → 1.3.18-alpha.1

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 (171) hide show
  1. package/dist/cjs/{cart-d25723e7.js → cart-95209ae8.js} +308 -8
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/{submitGtag-484eaf9d.js → submitGtag-9d60f3bb.js} +1 -1
  4. package/dist/cjs/zonos-address_8.cjs.entry.js +1 -1
  5. package/dist/cjs/zonos-card_2.cjs.entry.js +1 -1
  6. package/dist/cjs/{zonos-cart-items_9.cjs.entry.js → zonos-cart-items_10.cjs.entry.js} +114 -10
  7. package/dist/cjs/zonos-checkout.cjs.entry.js +4 -4
  8. package/dist/cjs/zonos-controller.cjs.entry.js +1 -1
  9. package/dist/cjs/zonos-country-flag.cjs.entry.js +1 -1
  10. package/dist/cjs/zonos-country-select_3.cjs.entry.js +1 -1
  11. package/dist/cjs/zonos-elements.cjs.js +1 -1
  12. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +1 -1
  13. package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
  14. package/dist/cjs/zonos-payment.cjs.entry.js +1 -1
  15. package/dist/collection/collection-manifest.json +1 -0
  16. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.js +2 -1
  17. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-restricted-items/assets/ChevronUpIcon.svg +23 -0
  18. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-restricted-items/assets/empty-item.jpeg +0 -0
  19. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-restricted-items/zonos-cart-restricted-items.css +105 -0
  20. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-restricted-items/zonos-cart-restricted-items.js +101 -0
  21. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +6 -3
  22. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.css +3 -0
  23. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.css +1 -1
  24. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +1 -1
  25. package/dist/collection/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.js +18 -2
  26. package/dist/collection/components/checkout/zonos-checkout/zonos-review/zonos-review.js +3 -2
  27. package/dist/collection/components/store/checkout/cart.js +55 -5
  28. package/dist/collection/components/store/checkout/stripe.js +6 -2
  29. package/dist/collection/components/store/hello/localization.js +1 -1
  30. package/dist/collection/components/store/translationStore/strings.arabic.js +12 -0
  31. package/dist/collection/components/store/translationStore/strings.base.js +12 -0
  32. package/dist/collection/components/store/translationStore/strings.chinese.js +12 -0
  33. package/dist/collection/components/store/translationStore/strings.danish.js +12 -0
  34. package/dist/collection/components/store/translationStore/strings.dutch.js +12 -0
  35. package/dist/collection/components/store/translationStore/strings.french.js +12 -0
  36. package/dist/collection/components/store/translationStore/strings.german.js +12 -0
  37. package/dist/collection/components/store/translationStore/strings.hebrew.js +12 -0
  38. package/dist/collection/components/store/translationStore/strings.indonesian.js +12 -0
  39. package/dist/collection/components/store/translationStore/strings.italian.js +12 -0
  40. package/dist/collection/components/store/translationStore/strings.japanese.js +12 -0
  41. package/dist/collection/components/store/translationStore/strings.korean.js +12 -0
  42. package/dist/collection/components/store/translationStore/strings.norwegian.js +12 -0
  43. package/dist/collection/components/store/translationStore/strings.polish.js +12 -0
  44. package/dist/collection/components/store/translationStore/strings.portuguese.js +12 -0
  45. package/dist/collection/components/store/translationStore/strings.russian.js +12 -0
  46. package/dist/collection/components/store/translationStore/strings.spanish.js +12 -0
  47. package/dist/collection/components/store/translationStore/strings.swedish.js +12 -0
  48. package/dist/collection/components/store/translationStore/strings.turkish.js +12 -0
  49. package/dist/collection/components/store/translationStore/strings.vietnamese.js +12 -0
  50. package/dist/collection/components/utils/api/prepCalculateLandedCost.js +1 -1
  51. package/dist/collection/components/utils/hello/currencyConversion/currencyDisplay.js +6 -1
  52. package/dist/collection/types/checkout/RestrictProduct.js +1 -0
  53. package/dist/collection/types/generated/graphql.customer.types.js +40 -0
  54. package/dist/collection/types/generated/graphql.frontend.types.js +1 -0
  55. package/dist/components/stripe.js +68 -9
  56. package/dist/components/submitGtag.js +1 -1
  57. package/dist/components/trackConversionEvent.js +1 -1
  58. package/dist/components/translationStore.js +240 -0
  59. package/dist/components/zonos-cart-items2.js +2 -1
  60. package/dist/components/zonos-cart-restricted-items.d.ts +11 -0
  61. package/dist/components/zonos-cart-restricted-items.js +6 -0
  62. package/dist/components/zonos-cart-restricted-items2.js +135 -0
  63. package/dist/components/zonos-cart-subtotal2.js +6 -3
  64. package/dist/components/zonos-checkout-finish2.js +1 -1
  65. package/dist/components/zonos-checkout-payment2.js +1 -1
  66. package/dist/components/zonos-checkout.js +27 -21
  67. package/dist/components/zonos-controller.js +1 -1
  68. package/dist/components/zonos-country-select2.js +1 -1
  69. package/dist/components/zonos-customer-info2.js +19 -3
  70. package/dist/components/zonos-hello-dialog2.js +1 -1
  71. package/dist/components/zonos-hello.js +1 -1
  72. package/dist/components/zonos-language-select2.js +1 -1
  73. package/dist/components/zonos-review2.js +3 -2
  74. package/dist/components/zonos-shipping2.js +1 -1
  75. package/dist/esm/{cart-02f5c2ea.js → cart-6448e883.js} +308 -9
  76. package/dist/esm/loader.js +1 -1
  77. package/dist/esm/{submitGtag-ba38e1ac.js → submitGtag-b7d369cd.js} +1 -1
  78. package/dist/esm/zonos-address_8.entry.js +1 -1
  79. package/dist/esm/zonos-card_2.entry.js +1 -1
  80. package/dist/esm/{zonos-cart-items_9.entry.js → zonos-cart-items_10.entry.js} +114 -11
  81. package/dist/esm/zonos-checkout.entry.js +4 -4
  82. package/dist/esm/zonos-controller.entry.js +1 -1
  83. package/dist/esm/zonos-country-flag.entry.js +1 -1
  84. package/dist/esm/zonos-country-select_3.entry.js +1 -1
  85. package/dist/esm/zonos-elements.js +1 -1
  86. package/dist/esm/zonos-hello-dialog.entry.js +1 -1
  87. package/dist/esm/zonos-hello.entry.js +1 -1
  88. package/dist/esm/zonos-payment.entry.js +1 -1
  89. package/dist/esm-es5/cart-6448e883.js +1 -0
  90. package/dist/esm-es5/loader.js +1 -1
  91. package/dist/esm-es5/{submitGtag-ba38e1ac.js → submitGtag-b7d369cd.js} +1 -1
  92. package/dist/esm-es5/zonos-address_8.entry.js +1 -1
  93. package/dist/esm-es5/zonos-card_2.entry.js +1 -1
  94. package/dist/esm-es5/zonos-cart-items_10.entry.js +1 -0
  95. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  96. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  97. package/dist/esm-es5/zonos-country-flag.entry.js +1 -1
  98. package/dist/esm-es5/zonos-country-select_3.entry.js +1 -1
  99. package/dist/esm-es5/zonos-elements.js +1 -1
  100. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  101. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  102. package/dist/esm-es5/zonos-payment.entry.js +1 -1
  103. package/dist/scripts/loadZonos.js +1 -1
  104. package/dist/scripts/zonos.js +1 -1
  105. package/dist/scripts/zonosBase.js +1 -1
  106. package/dist/types/components/checkout/zonos-checkout/zonos-cart-restricted-items/zonos-cart-restricted-items.d.ts +14 -0
  107. package/dist/types/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.d.ts +2 -0
  108. package/dist/types/components/store/checkout/cart.d.ts +38 -4
  109. package/dist/types/components/store/translationStore/strings.arabic.d.ts +12 -0
  110. package/dist/types/components/store/translationStore/strings.base.d.ts +12 -0
  111. package/dist/types/components/store/translationStore/strings.chinese.d.ts +12 -0
  112. package/dist/types/components/store/translationStore/strings.danish.d.ts +12 -0
  113. package/dist/types/components/store/translationStore/strings.dutch.d.ts +12 -0
  114. package/dist/types/components/store/translationStore/strings.french.d.ts +12 -0
  115. package/dist/types/components/store/translationStore/strings.german.d.ts +12 -0
  116. package/dist/types/components/store/translationStore/strings.hebrew.d.ts +12 -0
  117. package/dist/types/components/store/translationStore/strings.indonesian.d.ts +12 -0
  118. package/dist/types/components/store/translationStore/strings.italian.d.ts +12 -0
  119. package/dist/types/components/store/translationStore/strings.japanese.d.ts +12 -0
  120. package/dist/types/components/store/translationStore/strings.korean.d.ts +12 -0
  121. package/dist/types/components/store/translationStore/strings.norwegian.d.ts +12 -0
  122. package/dist/types/components/store/translationStore/strings.polish.d.ts +12 -0
  123. package/dist/types/components/store/translationStore/strings.portuguese.d.ts +12 -0
  124. package/dist/types/components/store/translationStore/strings.russian.d.ts +12 -0
  125. package/dist/types/components/store/translationStore/strings.spanish.d.ts +12 -0
  126. package/dist/types/components/store/translationStore/strings.swedish.d.ts +12 -0
  127. package/dist/types/components/store/translationStore/strings.turkish.d.ts +12 -0
  128. package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +12 -0
  129. package/dist/types/components/store/translationStore.d.ts +1 -1
  130. package/dist/types/components/utils/api/getLocaleMessages.d.ts +1 -1
  131. package/dist/types/components.d.ts +21 -0
  132. package/dist/types/scripts/zonosBase.d.ts +6 -1
  133. package/dist/types/types/checkout/RestrictProduct.d.ts +7 -0
  134. package/dist/types/types/generated/graphql.customer.types.d.ts +54 -0
  135. package/dist/types/types/generated/graphql.customer.types.ts +66 -1
  136. package/dist/types/types/generated/graphql.frontend.types.d.ts +2 -1
  137. package/dist/types/types/generated/graphql.frontend.types.ts +2 -1
  138. package/dist/zonos-elements/{p-6dec476d.system.entry.js → p-0759a84d.system.entry.js} +1 -1
  139. package/dist/zonos-elements/{p-47e00966.system.entry.js → p-0ee61fba.system.entry.js} +1 -1
  140. package/dist/zonos-elements/p-154aaf95.system.js +1 -1
  141. package/dist/zonos-elements/{p-239cc943.system.entry.js → p-2fc561ac.system.entry.js} +1 -1
  142. package/dist/zonos-elements/{p-cf0f8e32.entry.js → p-345503b7.entry.js} +1 -1
  143. package/dist/zonos-elements/{p-6ece23b9.entry.js → p-3be2e469.entry.js} +1 -1
  144. package/dist/zonos-elements/p-47c75f81.system.entry.js +1 -0
  145. package/dist/zonos-elements/{p-532995a4.system.entry.js → p-58f8cee7.system.entry.js} +1 -1
  146. package/dist/zonos-elements/{p-572a4de2.system.entry.js → p-61100d2e.system.entry.js} +1 -1
  147. package/dist/zonos-elements/{p-905d842b.entry.js → p-6ea746b9.entry.js} +1 -1
  148. package/dist/zonos-elements/{p-f124e659.system.entry.js → p-70c35519.system.entry.js} +1 -1
  149. package/dist/zonos-elements/{p-246133d3.entry.js → p-7b19cd96.entry.js} +1 -1
  150. package/dist/zonos-elements/{p-0265da6f.js → p-7cc730b0.js} +1 -1
  151. package/dist/zonos-elements/{p-57adc7f8.entry.js → p-7f48fafe.entry.js} +1 -1
  152. package/dist/zonos-elements/p-9c575a18.system.entry.js +1 -0
  153. package/dist/zonos-elements/{p-e0e66004.system.js → p-aaf1e517.system.js} +1 -1
  154. package/dist/zonos-elements/p-aff5f4ca.js +1 -0
  155. package/dist/zonos-elements/{p-f99eb5e7.entry.js → p-beca252d.entry.js} +1 -1
  156. package/dist/zonos-elements/{p-1ba4cf64.entry.js → p-c1f4bb4a.entry.js} +1 -1
  157. package/dist/zonos-elements/{p-5e33aab7.system.entry.js → p-c64eefdd.system.entry.js} +1 -1
  158. package/dist/zonos-elements/p-ca621143.entry.js +1 -0
  159. package/dist/zonos-elements/{p-0267a969.entry.js → p-dbee6587.entry.js} +1 -1
  160. package/dist/zonos-elements/{p-9da0562e.system.entry.js → p-e0706108.system.entry.js} +1 -1
  161. package/dist/zonos-elements/{p-54a32fd7.entry.js → p-e3335228.entry.js} +1 -1
  162. package/dist/zonos-elements/p-ef9cbb66.system.js +1 -0
  163. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  164. package/package.json +12 -12
  165. package/dist/esm-es5/cart-02f5c2ea.js +0 -1
  166. package/dist/esm-es5/zonos-cart-items_9.entry.js +0 -1
  167. package/dist/zonos-elements/p-168e5b5f.system.js +0 -1
  168. package/dist/zonos-elements/p-1b8082dd.entry.js +0 -1
  169. package/dist/zonos-elements/p-5d13795a.system.entry.js +0 -1
  170. package/dist/zonos-elements/p-981bf71a.js +0 -1
  171. package/dist/zonos-elements/p-ed7d251d.system.entry.js +0 -1
@@ -0,0 +1,105 @@
1
+ :host {
2
+ font-family: var(--font-family, Inter), Inter;
3
+ display: block;
4
+ white-space: normal;
5
+ }
6
+ :host * {
7
+ font-family: var(--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
+ overflow: auto;
36
+ position: relative;
37
+ }
38
+ :host zonos-banner {
39
+ margin-bottom: 12px;
40
+ }
41
+ :host .zonos--cart-title-collapse-trigger {
42
+ display: flex;
43
+ flex-direction: row;
44
+ gap: 24px;
45
+ align-items: center;
46
+ background: var(--zonos-elements-gray-0);
47
+ width: 100%;
48
+ border: none;
49
+ cursor: pointer;
50
+ margin-bottom: 16px;
51
+ position: sticky;
52
+ top: 0;
53
+ z-index: 1;
54
+ transition: 0.5s all ease;
55
+ }
56
+ :host .zonos--cart-title-collapse-trigger zonos-icon {
57
+ transition: transform 0.3s ease;
58
+ }
59
+ :host .zonos--cart-title-collapse-trigger.collapsed {
60
+ margin-bottom: 0;
61
+ }
62
+ :host .zonos--cart-title-collapse-trigger.collapsed zonos-icon {
63
+ transform: rotate(180deg);
64
+ }
65
+ :host .zonos--cart-title-collapse-trigger::before, :host .zonos--cart-title-collapse-trigger::after {
66
+ content: "";
67
+ display: block;
68
+ width: 80%;
69
+ height: 1px;
70
+ background-color: var(--zonos-elements-border-color);
71
+ flex-shrink: 1;
72
+ }
73
+ :host .zonos--cart-title-collapse-trigger .zonos--title-wrapper {
74
+ flex-grow: 1;
75
+ flex-shrink: 0;
76
+ display: inline-flex;
77
+ flex-direction: row;
78
+ gap: 8px;
79
+ align-items: center;
80
+ }
81
+ :host .zonos--cart-table {
82
+ opacity: 0.5;
83
+ width: 100%;
84
+ border: none;
85
+ border-collapse: collapse;
86
+ overflow: auto;
87
+ font-size: var(--zonos-elements-font-size-base);
88
+ }
89
+ :host .zonos--cart-table .zonos--column {
90
+ padding: 8px;
91
+ font-size: var(--zonos-elements-font-size-base);
92
+ }
93
+ :host .zonos--cart-table .zonos--column:last-child {
94
+ text-align: right;
95
+ }
96
+ :host .zonos--cart-table .zonos--column:first-child {
97
+ width: 60px;
98
+ }
99
+ :host img {
100
+ min-width: 40px;
101
+ }
102
+
103
+ :host(.collapsed) {
104
+ flex-shrink: 0;
105
+ }
@@ -0,0 +1,101 @@
1
+ import { getAssetPath, h, Host } from "@stencil/core";
2
+ import { cartStore, cartStoreHasOneEligibleItem, } from "../../../store/checkout/cart";
3
+ import { translate } from "../../../store/translationStore";
4
+ import { classes } from "../../../utils/classes";
5
+ import { formatCurrency } from "../../../utils/formatCurrency";
6
+ // eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
7
+ import ChevronUpIcon from "./assets/ChevronUpIcon.svg";
8
+ export class ZonosCartRestrictedItems {
9
+ constructor() {
10
+ this.hide = false;
11
+ this.errorImages = [];
12
+ this.internalCollapsed = true;
13
+ this.firstRender = true;
14
+ }
15
+ componentDidLoad() {
16
+ // Reset if it's first render
17
+ this.firstRender = true;
18
+ }
19
+ render() {
20
+ var _a;
21
+ const emptyItemImg = getAssetPath('./assets/empty-item.jpeg');
22
+ const rate = ((_a = cartStore.exchangeRate) === null || _a === void 0 ? void 0 : _a.rate) || 1;
23
+ const restrictedItemTotal = cartStore.restrictedItems.length;
24
+ if (this.hide || restrictedItemTotal === 0) {
25
+ // show nothing if the parent is collapsed or no restricted items
26
+ return null;
27
+ }
28
+ if (this.firstRender) {
29
+ // Auto expand if all items are restricted
30
+ this.internalCollapsed = cartStoreHasOneEligibleItem();
31
+ this.firstRender = false;
32
+ }
33
+ return (h(Host, { class: classes([
34
+ 'zonos--cart-restricted-items',
35
+ 'zonos--elements',
36
+ this.internalCollapsed && 'collapsed',
37
+ ]) }, h("button", { class: classes([
38
+ 'zonos--cart-title-collapse-trigger',
39
+ this.internalCollapsed && 'collapsed',
40
+ ]), onClick: () => {
41
+ this.internalCollapsed = !this.internalCollapsed;
42
+ } }, h("div", { class: "zonos--title-wrapper" }, h("zonos-text", { textColor: "red-600", type: "label" }, `${translate(this.internalCollapsed ? 'Show' : 'Hide')} ${restrictedItemTotal} ${translate('restricted items')}`), h("zonos-icon", { content: ChevronUpIcon, iconColor: "red-600" }))), h("zonos-collapse", { collapsed: this.internalCollapsed }, h("zonos-banner", { bannerTitle: translate('The following items are unable to be shipped to your country and are not included in your cart total.'), intent: "error" }), h("table", { class: "zonos--cart-table" }, h("tbody", null, cartStore.restrictedItems.map((item, index) => {
43
+ var _a, _b;
44
+ const itemImg = item.imageUrl;
45
+ return (h("tr", { class: "zonos--cart-item" }, h("td", { class: "zonos--column zonos--cart-item-image" }, itemImg && !this.errorImages.includes(itemImg) ? (h("img", { alt:
46
+ // Use matched item name if available
47
+ ((_a = item.matchedItem) === null || _a === void 0 ? void 0 : _a.name) ||
48
+ item.name ||
49
+ `Restricted item ${index + 1}`, onError: () => {
50
+ this.errorImages = [...this.errorImages, itemImg];
51
+ }, src: itemImg, style: {
52
+ 'min-width': '40px',
53
+ }, width: 40 })) : (h("img", { alt: item.name || `Restricted item ${index + 1}`, src: emptyItemImg, width: 40 }))), h("td", { class: "zonos--column zonos--cart-item-name" }, h("zonos-text", { type: "label" }, ((_b = item.matchedItem) === null || _b === void 0 ? void 0 : _b.name) || item.name), h("zonos-text", { type: "caption" }, item.restriction.reason)), h("td", { class: "zonos--column zonos--cart-item-price" }, h("zonos-text", { type: "semiBoldLabel" }, formatCurrency({
54
+ amount: item.amount * item.quantity * rate,
55
+ currency: cartStore.currency,
56
+ })))));
57
+ }))))));
58
+ }
59
+ static get is() { return "zonos-cart-restricted-items"; }
60
+ static get encapsulation() { return "shadow"; }
61
+ static get originalStyleUrls() {
62
+ return {
63
+ "$": ["zonos-cart-restricted-items.scss"]
64
+ };
65
+ }
66
+ static get styleUrls() {
67
+ return {
68
+ "$": ["zonos-cart-restricted-items.css"]
69
+ };
70
+ }
71
+ static get assetsDirs() { return ["assets"]; }
72
+ static get properties() {
73
+ return {
74
+ "hide": {
75
+ "type": "boolean",
76
+ "mutable": false,
77
+ "complexType": {
78
+ "original": "boolean",
79
+ "resolved": "boolean",
80
+ "references": {}
81
+ },
82
+ "required": false,
83
+ "optional": false,
84
+ "docs": {
85
+ "tags": [],
86
+ "text": "This is to hide the section when the parent collapse on mobile"
87
+ },
88
+ "attribute": "hide",
89
+ "reflect": false,
90
+ "defaultValue": "false"
91
+ }
92
+ };
93
+ }
94
+ static get states() {
95
+ return {
96
+ "errorImages": {},
97
+ "internalCollapsed": {},
98
+ "firstRender": {}
99
+ };
100
+ }
101
+ }
@@ -1,5 +1,5 @@
1
1
  import { Fragment, h, Host } from "@stencil/core";
2
- import { cartStore } from "../../../store/checkout/cart";
2
+ import { cartStore, cartStoreHasOneEligibleItem, } from "../../../store/checkout/cart";
3
3
  import { translate } from "../../../store/translationStore";
4
4
  import { formatCurrency } from "../../../utils/formatCurrency";
5
5
  // These assets neet to be in relative path as https://www.npmjs.com/package/stencil-inline-svg suggested
@@ -8,6 +8,9 @@ import InfoIcon from "./assets/InfoIcon.svg";
8
8
  export class ZonosCartSubtotal {
9
9
  render() {
10
10
  const showDutyTaxesInfo = cartStore.step === 'payment' || cartStore.step === 'shipping';
11
+ // Show 0 for subtotal and total when all items are restricted
12
+ const total = cartStoreHasOneEligibleItem() ? cartStore.total : 0;
13
+ const subtotal = cartStoreHasOneEligibleItem() ? cartStore.subtotal : 0;
11
14
  const renderShippingInfo = () => {
12
15
  if (!cartStore.selectedShippingOption) {
13
16
  return (h(Fragment, null, h("zonos-text", { class: "zonos--title", type: "semiBoldLabel" }, translate('Shipping')), h("zonos-text", { class: "zonos--caption", type: "caption" }, translate('No shipping method selected'))));
@@ -15,7 +18,7 @@ export class ZonosCartSubtotal {
15
18
  return (h(Fragment, null, h("zonos-text", { class: "zonos--title", type: "semiBoldLabel" }, cartStore.selectedShippingOption.displayName), cartStore.selectedShippingOptionTransitTime && (h("zonos-text", { class: "zonos--caption", type: "caption" }, cartStore.selectedShippingOptionTransitTime, ' ', translate('business days')))));
16
19
  };
17
20
  return (h(Host, { class: "zonos--cart-subtotal zonos--elements" }, h("table", { class: "zonos--cart-table" }, h("tr", { class: "zonos--row zonos--cart-subtotal" }, h("td", { class: "zonos--column" }), h("td", { class: "zonos--column zonos--cart-subtotal-title" }, h("zonos-text", { type: "semiBoldLabel" }, translate('Cart subtotal'))), h("td", { class: "zonos--column zonos--cart-subtotal-price" }, h("zonos-text", { type: "semiBoldLabel" }, formatCurrency({
18
- amount: cartStore.subtotal,
21
+ amount: subtotal,
19
22
  currency: cartStore.currency,
20
23
  })))), h("tr", { class: "zonos--row zonos--cart-shipping" }, h("td", { class: "zonos--column" }), h("td", { class: "zonos--column zonos--cart-subtotal-title" }, renderShippingInfo()), h("td", { class: "zonos--column zonos--cart-subtotal-price" }, cartStore.shipping
21
24
  ? formatCurrency({
@@ -28,7 +31,7 @@ export class ZonosCartSubtotal {
28
31
  currency: cartStore.currency,
29
32
  })
30
33
  : '-', cartStore.isSelectedShippingGuarantee && (h("zonos-badge", null, translate('Guaranteed'))))))), 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" }, h("zonos-text", { type: "semiBoldLabel" }, formatCurrency({
31
- amount: cartStore.total,
34
+ amount: total,
32
35
  currency: cartStore.currency,
33
36
  })))))));
34
37
  }
@@ -68,6 +68,9 @@
68
68
  :host zonos-button {
69
69
  box-shadow: 0 0 1px 0 var(--zonos-elements-gray-600);
70
70
  }
71
+ :host zonos-button {
72
+ box-shadow: 0 0 1px 0 var(--zonos-elements-gray-600);
73
+ }
71
74
  :host .zonos--group-btn {
72
75
  position: sticky;
73
76
  display: flex;
@@ -161,7 +161,7 @@
161
161
  @media (max-width: 768px) {
162
162
  :host(.mobile) .zonos--content .zonos--left,
163
163
  :host(.mobile) .zonos--content .zonos--right {
164
- padding-bottom: 0px;
164
+ padding-bottom: 0;
165
165
  }
166
166
  }
167
167
  :host(.mobile) .zonos--content .zonos--left {
@@ -480,7 +480,7 @@ export class ZonosCheckout {
480
480
  } }), h("zonos-collapse", {
481
481
  // only collapsible on mobile
482
482
  collapsed: this.collapseReviewMobile && this.isMobile
483
- }, h("zonos-cart-items", null), this.isMobile && (h("zonos-v-stack", { spacing: 16 }, h("zonos-cart-subtotal", null), h("zonos-custom-message", { class: "zonos--checkout-default-message", icon: MessageIcon, message: defaultMessage }))))), !this.isMobile && (h("zonos-v-stack", { spacing: 16 }, h("zonos-cart-subtotal", null), h("zonos-custom-message", { class: "zonos--checkout-default-message", icon: MessageIcon, message: defaultMessage }))))))), (cartStore.step === 'finish' || cartStore.step === 'error') && (h("div", { class: "zonos--done", "data-theme": rightSideTheme }, h("div", { class: "zonos--header" }, renderLogo(), h("zonos-button", { class: "zonos--close-button", icon: h("zonos-icon", { "aria-label": "Close checkout dialog", content: RemoveIcon }), noBackground: true, onClick: () => this.handleFinishClick(), theme: rightSideTheme })), h("zonos-checkout-finish", { borderRadius: style, onCloseClick: () => this.handleFinishClick(), overrideNotification: cartStore.step === 'error' && !!cartStore.error
483
+ }, h("zonos-cart-items", null), this.isMobile && (h("zonos-v-stack", { spacing: 16 }, h("zonos-cart-subtotal", null), h("zonos-custom-message", { class: "zonos--checkout-default-message", icon: MessageIcon, message: defaultMessage }))))), h("zonos-cart-restricted-items", null), !this.isMobile && (h("zonos-v-stack", { spacing: 16 }, h("zonos-cart-subtotal", null), h("zonos-custom-message", { class: "zonos--checkout-default-message", icon: MessageIcon, message: defaultMessage }))))))), (cartStore.step === 'finish' || cartStore.step === 'error') && (h("div", { class: "zonos--done", "data-theme": rightSideTheme }, h("div", { class: "zonos--header" }, renderLogo(), h("zonos-button", { class: "zonos--close-button", icon: h("zonos-icon", { "aria-label": "Close checkout dialog", content: RemoveIcon }), noBackground: true, onClick: () => this.handleFinishClick(), theme: rightSideTheme })), h("zonos-checkout-finish", { borderRadius: style, onCloseClick: () => this.handleFinishClick(), overrideNotification: cartStore.step === 'error' && !!cartStore.error
484
484
  ? Object.assign(Object.assign({}, cartStore.error), { type: 'error' }) : undefined, storybookForceStatus: this.storybookPaymentStatusOverride }))), h("zonos-checkout-footer", { "data-theme": rightSideTheme, mobile: this.isMobile,
485
485
  /**
486
486
  * For this component, use slot instead of passing JSX through prop of other component. Because
@@ -115,6 +115,8 @@ export class ZonosCustomerInfo {
115
115
  this.isMobile = false;
116
116
  this.defaultAddress = null;
117
117
  this.showErrorBanner = false;
118
+ this.shippingCountry = '';
119
+ this.isCheckingForRestrictedItems = false;
118
120
  this.isValidatingAddress = false;
119
121
  this.invalidShippingCharacterList = null;
120
122
  this.invalidBillingCharacterList = null;
@@ -146,10 +148,22 @@ export class ZonosCustomerInfo {
146
148
  return invalidList;
147
149
  }
148
150
  render() {
149
- var _a;
151
+ var _a, _b;
150
152
  if (!stripeStore.stripeElements) {
151
153
  return null;
152
154
  }
155
+ // init the shipping country when shipping address is available
156
+ if (!this.shippingCountry && stripeStore.stripeAddressEventData) {
157
+ this.shippingCountry =
158
+ (_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.value.address.country;
159
+ }
160
+ if (stripeStore.stripeAddressEventData &&
161
+ this.shippingCountry !==
162
+ stripeStore.stripeAddressEventData.value.address.country) {
163
+ // reset the shipping country if it's different from the current shipping address
164
+ this.shippingCountry =
165
+ stripeStore.stripeAddressEventData.value.address.country;
166
+ }
153
167
  const showBilling = !stripeStore.stripeShippingSameAsBilling;
154
168
  // Get theme for the update dialog, inherit from the theme, no from this component theme
155
169
  const theme = getZonosStoreTheme(zonosStore.appearance.theme);
@@ -157,7 +171,7 @@ export class ZonosCustomerInfo {
157
171
  if (this.showErrorBanner) {
158
172
  this.showErrorBanner = !this.handleValidate();
159
173
  }
160
- return (h(Host, { class: "zonos--customer-info zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Customer information')), this.showErrorBanner && (h("zonos-banner", { class: "zonos--error-banner", intent: "error" }, translate('Missing required fields. Make sure all fields are completed.'))), h("zonos-link-authentication", { defaultEmail: (_a = this.defaultAddress) === null || _a === void 0 ? void 0 : _a.email, titleText: translate('Contact') }), h("zonos-address", { defaultAddress: this.defaultAddress, titleText: translate('Address'), type: "shipping" }), h("zonos-checkbox", { class: "zonos--shipping-same-as-billing-cbx", isChecked: stripeStore.stripeShippingSameAsBilling, label: translate('Shipping address same as billing'), onCheckboxSelected: e => {
174
+ return (h(Host, { class: "zonos--customer-info zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Customer information')), this.showErrorBanner && (h("zonos-banner", { class: "zonos--error-banner", intent: "error" }, translate('Missing required fields. Make sure all fields are completed.'))), h("zonos-link-authentication", { defaultEmail: (_b = this.defaultAddress) === null || _b === void 0 ? void 0 : _b.email, titleText: translate('Contact') }), h("zonos-address", { defaultAddress: this.defaultAddress, titleText: translate('Address'), type: "shipping" }), h("zonos-checkbox", { class: "zonos--shipping-same-as-billing-cbx", isChecked: stripeStore.stripeShippingSameAsBilling, label: translate('Shipping address same as billing'), onCheckboxSelected: e => {
161
175
  stripeStore.stripeShippingSameAsBilling = e.detail;
162
176
  } }), h("zonos-collapse", { collapsed: !showBilling }, h("zonos-address", { defaultAddress: this.defaultAddress, titleText: translate('Billing address'), type: "billing" })), h("div", { class: "zonos--group-btn" }, h("zonos-button", { backgroundColor: this.submitBtnColor, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
163
177
  // use primary type when on mobile mode
@@ -288,6 +302,8 @@ export class ZonosCustomerInfo {
288
302
  static get states() {
289
303
  return {
290
304
  "showErrorBanner": {},
305
+ "shippingCountry": {},
306
+ "isCheckingForRestrictedItems": {},
291
307
  "isValidatingAddress": {},
292
308
  "invalidShippingCharacterList": {},
293
309
  "invalidBillingCharacterList": {},
@@ -1,5 +1,5 @@
1
1
  import { h, Host } from "@stencil/core";
2
- import { cartStore } from "../../../store/checkout/cart";
2
+ import { cartStore, cartStoreHasOneEligibleItem, } from "../../../store/checkout/cart";
3
3
  import { translate } from "../../../store/translationStore";
4
4
  import { zonosStore } from "../../../store/zonosStore";
5
5
  import { isCheckoutMobile } from "../../../utils/checkout/isCheckoutMobile";
@@ -23,6 +23,7 @@ export class ZonosReview {
23
23
  this.isMobile = isCheckoutMobile(this.mobile);
24
24
  }
25
25
  render() {
26
+ const total = cartStoreHasOneEligibleItem() ? cartStore.total : 0;
26
27
  const titleTextType = this.isMobile ? 'boldSubheader' : 'semiBoldLabel';
27
28
  const totalTextType = this.isMobile
28
29
  ? 'boldSubheader'
@@ -42,7 +43,7 @@ export class ZonosReview {
42
43
  'zonos--review zonos--elements',
43
44
  this.isMobile && 'mobile',
44
45
  ]) }, h("div", { class: "zonos--title" }, h("zonos-text", { textColor: titleTextColor, type: titleTextType }, translate('Pay'), " ", zonosStore.organizationName), renderCollapseIcon()), h("div", { class: "zonos--total-pay" }, h("zonos-text", { type: totalTextType }, formatCurrency({
45
- amount: cartStore.total,
46
+ amount: total,
46
47
  currency: cartStore.currency,
47
48
  })))));
48
49
  }
@@ -17,6 +17,7 @@ const { onChange, reset, state: cartStore, } = createStore(() => ({
17
17
  isSelectedShippingGuarantee: false,
18
18
  items: [],
19
19
  landedCostData: null,
20
+ restrictedItems: [],
20
21
  selectedLandedCost: null,
21
22
  selectedShippingOption: null,
22
23
  selectedShippingOptionExpectedDate: '',
@@ -73,6 +74,39 @@ const cartStoreGetShippingTransitInfo = (item) => {
73
74
  minTransit,
74
75
  };
75
76
  };
77
+ const getMatchItem = ({ item1, item2, }) => {
78
+ if (!item1 || !item2) {
79
+ return false;
80
+ }
81
+ return ((item2.sku && item1.sku && item1.sku === item2.sku) ||
82
+ (item2.description &&
83
+ item1.description &&
84
+ item1.description === item2.description) ||
85
+ (item1.name && item2.name && item1.name === item2.name));
86
+ };
87
+ /**
88
+ * Check and set restricted items in cart
89
+ */
90
+ const cartStoreCheckItemRestrictions = (itemsWorkflow) => {
91
+ log('Checking item restrictions');
92
+ const mappedRestrictedItems = itemsWorkflow
93
+ .map(item => {
94
+ if (!item.restriction) {
95
+ return null;
96
+ }
97
+ const { restriction } = item;
98
+ const matchedItem = cartStore.items.find(x => getMatchItem({ item1: x, item2: item }));
99
+ return Object.assign(Object.assign({ matchedItem }, item), { restriction });
100
+ })
101
+ .filter(Boolean);
102
+ cartStore.restrictedItems = mappedRestrictedItems;
103
+ // remove items that are restricted from cart
104
+ cartStore.items = cartStore.items.map(item => (Object.assign(Object.assign({}, item), { isRestricted: !!mappedRestrictedItems.find(x => getMatchItem({ item1: x, item2: item })) })));
105
+ return {
106
+ cartItems: cartStore.items,
107
+ restrictedItems: mappedRestrictedItems,
108
+ };
109
+ };
76
110
  const cartStoreReset = () => {
77
111
  sessionStorage.removeItem('zonos--checkout-session-id');
78
112
  // reset cart store
@@ -95,6 +129,16 @@ const cartStoreApplySubtotals = (subtotals) => {
95
129
  cartStore.total = subtotals.total;
96
130
  cartStore.currency = subtotals.presentmentCurrencyCode;
97
131
  };
132
+ /**
133
+ * Detect if there are any items in cart that are not restricted and have positive amount, exclude negative amount items
134
+ */
135
+ const cartStoreHasOneEligibleItem = () => {
136
+ // filter all items with positive amount
137
+ const checkItems = cartStore.items.filter(item => item.amount > 0);
138
+ // only check restricted status for items with positive amount
139
+ // if there is no item restricted found => all items are restricted
140
+ return !!checkItems.find(item => !item.isRestricted);
141
+ };
98
142
  const cartStoreReCalculateTotal = async ({ currency, itemsAmount, landedCostId, }) => {
99
143
  if (landedCostId && cartStore.selectedLandedCost) {
100
144
  // update cart total right away if we have landed cost id to avoid order total flickering
@@ -175,11 +219,17 @@ onChange('checkoutSessionId', () => {
175
219
  }
176
220
  sessionStorage.setItem('zonos--checkout-session-id', cartStore.checkoutSessionId);
177
221
  });
178
- const cartStoreUpdateItems = async (items) => {
222
+ const getCartItemToUse = (items) => items.map(item => (Object.assign(Object.assign({}, item), { isRestricted: false })));
223
+ const cartStoreResetCartItems = () => {
224
+ // mark all items as not restricted
225
+ cartStore.items = cartStore.items.map(item => (Object.assign(Object.assign({}, item), { isRestricted: false })));
226
+ cartStore.restrictedItems = [];
227
+ };
228
+ const cartStoreUpdateItems = async (cartItems) => {
179
229
  var _a;
180
- cartStore.items = items;
181
- const currency = (_a = items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode;
182
- const total = items.reduce((amt, item) => {
230
+ cartStore.items = getCartItemToUse(cartItems);
231
+ const currency = (_a = cartItems.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode;
232
+ const total = cartItems.reduce((amt, item) => {
183
233
  return amt + item.amount * item.quantity;
184
234
  }, 0);
185
235
  if (!currency || !total) {
@@ -226,4 +276,4 @@ const cartStoreResetTabItems = () => {
226
276
  cartStore.tabItems = Object.assign(Object.assign({}, cartStore.tabItems), { 'customer-info': Object.assign(Object.assign({}, cartStore.tabItems['customer-info']), { isDone: false }), payment: Object.assign(Object.assign({}, cartStore.tabItems.payment), { isDone: false }), shipping: Object.assign(Object.assign({}, cartStore.tabItems.shipping), { isDone: false }) });
227
277
  cartStoreResetSelectedShippingOption();
228
278
  };
229
- export { cartStore, cartStoreApplySubtotals, cartStoreGetShippingTransitInfo, cartStoreNextStep, cartStoreReCalculateTotal, cartStoreReset, cartStoreResetTabItems, cartStoreUpdateItems, cartStoreUpdateSelectedShippingOption, cartStoreUpdateToErrorState, };
279
+ export { cartStore, cartStoreApplySubtotals, cartStoreCheckItemRestrictions, cartStoreGetShippingTransitInfo, cartStoreHasOneEligibleItem, cartStoreNextStep, cartStoreReCalculateTotal, cartStoreReset, cartStoreResetCartItems, cartStoreResetTabItems, cartStoreUpdateItems, cartStoreUpdateSelectedShippingOption, cartStoreUpdateToErrorState, };
@@ -1,5 +1,5 @@
1
1
  import { createStore } from "@stencil/store";
2
- import { cartStore, cartStoreApplySubtotals, } from "./cart";
2
+ import { cartStore, cartStoreApplySubtotals, cartStoreCheckItemRestrictions, cartStoreResetCartItems, } from "./cart";
3
3
  import { localizationStore } from "../hello/localization";
4
4
  import { translate } from "../translationStore";
5
5
  import { zonosStore } from "../zonosStore";
@@ -193,7 +193,9 @@ const stripeStorePrefetchLandedCost = async () => {
193
193
  try {
194
194
  const abortController = new AbortController();
195
195
  stripeStore.fetchingLandedCostAbordController = abortController;
196
- const { checkoutSessionWorkflow, landedCostCalculateWorkflow, shipmentRatingCalculateWorkflow, } = await calculateLandedCost(abortController);
196
+ // Reset cart items to non-restricted state and restricted item list
197
+ cartStoreResetCartItems();
198
+ const { checkoutSessionWorkflow, itemCreateWorkflow, landedCostCalculateWorkflow, shipmentRatingCalculateWorkflow, } = await calculateLandedCost(abortController);
197
199
  // reset abort controller after we are done
198
200
  stripeStore.fetchingLandedCostAbordController = null;
199
201
  // update cart store with landed cost info
@@ -212,6 +214,8 @@ const stripeStorePrefetchLandedCost = async () => {
212
214
  const subtotals = !!firstLandedCostData
213
215
  ? firstLandedCostData.subtotals
214
216
  : null;
217
+ // check and update cart items with restrictions
218
+ cartStoreCheckItemRestrictions(itemCreateWorkflow);
215
219
  if (subtotals) {
216
220
  // prefetch landed cost will not update shipping and taxes since we haven't selected shipping method yet
217
221
  cartStoreApplySubtotals({
@@ -134,7 +134,7 @@ const initLocalizationStore = async () => {
134
134
  const overrideLocale = getOverrideLocale();
135
135
  localizationStore.selectedLocale = overrideLocale || locale || 'en';
136
136
  translationStoreUpdateLanguage(localizationStore.selectedLocale);
137
- const devSites = ['dev.elements', 'dev.dashboard'];
137
+ const devSites = ['dev.storybook.elements', 'dev.elements', 'dev.dashboard'];
138
138
  // If the country code is not set, set it to the US for development (vercel can't get geo country in dev)
139
139
  if (!localizationStore.selectedCountryCode &&
140
140
  devSites.some(site => window.location.origin.includes(site))) {
@@ -86,6 +86,9 @@ export const stringsArabic = {
86
86
  Guaranteed: {
87
87
  value: 'مضمون',
88
88
  },
89
+ Hide: {
90
+ value: 'اخفِ',
91
+ },
89
92
  'Keep shopping': {
90
93
  value: 'متابعة التسوق',
91
94
  },
@@ -182,6 +185,9 @@ export const stringsArabic = {
182
185
  'Shipping method': {
183
186
  value: 'طريقة الشحن',
184
187
  },
188
+ Show: {
189
+ value: 'عرض',
190
+ },
185
191
  'Something went wrong.': {
186
192
  value: 'حدث خطأ ما.',
187
193
  },
@@ -197,6 +203,9 @@ export const stringsArabic = {
197
203
  'Taxes will apply to all orders': {
198
204
  value: 'ستنطبق الضرائب على جميع الطلبات',
199
205
  },
206
+ 'The following items are unable to be shipped to your country and are not included in your cart total.': {
207
+ value: 'العناصر التالية لا يمكن شحنها إلى بلدك ولا تُضاف إلى إجمالي سلة مشترياتك.',
208
+ },
200
209
  "There's been an error creating your checkout session. Please reload and try again or contact support if the error persists": {
201
210
  value: 'حدث خطأ في إنشاء جلسة الخروج الخاصة بك. يرجى إعادة التحميل والمحاولة مرة أخرى أو الاتصال بالدعم إذا استمر الخطأ',
202
211
  },
@@ -245,6 +254,9 @@ export const stringsArabic = {
245
254
  'duty free': {
246
255
  value: 'معفى من الرسوم',
247
256
  },
257
+ 'restricted items': {
258
+ value: 'عناصر مقيدة',
259
+ },
248
260
  'tax free': {
249
261
  value: 'معفى من الضرائب',
250
262
  },
@@ -86,6 +86,9 @@ export const stringsBase = {
86
86
  Guaranteed: {
87
87
  value: 'Guaranteed',
88
88
  },
89
+ Hide: {
90
+ value: 'Hide',
91
+ },
89
92
  'Keep shopping': {
90
93
  value: 'Keep shopping',
91
94
  },
@@ -182,6 +185,9 @@ export const stringsBase = {
182
185
  'Shipping method': {
183
186
  value: 'Shipping method',
184
187
  },
188
+ Show: {
189
+ value: 'Show',
190
+ },
185
191
  'Something went wrong.': {
186
192
  value: 'Something went wrong.',
187
193
  },
@@ -197,6 +203,9 @@ export const stringsBase = {
197
203
  'Taxes will apply to all orders': {
198
204
  value: 'Taxes will apply to all orders',
199
205
  },
206
+ 'The following items are unable to be shipped to your country and are not included in your cart total.': {
207
+ value: 'The following items are unable to be shipped to your country and are not included in your cart total.',
208
+ },
200
209
  "There's been an error creating your checkout session. Please reload and try again or contact support if the error persists": {
201
210
  value: "There's been an error creating your checkout session. Please reload and try again or contact support if the error persists",
202
211
  },
@@ -245,6 +254,9 @@ export const stringsBase = {
245
254
  'duty free': {
246
255
  value: 'duty free',
247
256
  },
257
+ 'restricted items': {
258
+ value: 'restricted items',
259
+ },
248
260
  'tax free': {
249
261
  value: 'tax free',
250
262
  },
@@ -86,6 +86,9 @@ export const stringsChinese = {
86
86
  Guaranteed: {
87
87
  value: '保证',
88
88
  },
89
+ Hide: {
90
+ value: '隐藏',
91
+ },
89
92
  'Keep shopping': {
90
93
  value: '继续购物',
91
94
  },
@@ -182,6 +185,9 @@ export const stringsChinese = {
182
185
  'Shipping method': {
183
186
  value: '运输方式',
184
187
  },
188
+ Show: {
189
+ value: '显示',
190
+ },
185
191
  'Something went wrong.': {
186
192
  value: '出了些问题。',
187
193
  },
@@ -197,6 +203,9 @@ export const stringsChinese = {
197
203
  'Taxes will apply to all orders': {
198
204
  value: '税款将适用于所有订单',
199
205
  },
206
+ 'The following items are unable to be shipped to your country and are not included in your cart total.': {
207
+ value: '以下商品无法运送至您的国家,并且不包括在您购物车的总额中。',
208
+ },
200
209
  "There's been an error creating your checkout session. Please reload and try again or contact support if the error persists": {
201
210
  value: '创建您的结账会话时出现错误。如果错误仍然存在,请重新加载页面并重试,或联系支持',
202
211
  },
@@ -245,6 +254,9 @@ export const stringsChinese = {
245
254
  'duty free': {
246
255
  value: '免征关税',
247
256
  },
257
+ 'restricted items': {
258
+ value: '限制物品',
259
+ },
248
260
  'tax free': {
249
261
  value: '免税',
250
262
  },
@@ -86,6 +86,9 @@ export const stringsDanish = {
86
86
  Guaranteed: {
87
87
  value: 'Garanteret',
88
88
  },
89
+ Hide: {
90
+ value: 'Skjul',
91
+ },
89
92
  'Keep shopping': {
90
93
  value: 'Fortsæt med at handle',
91
94
  },
@@ -182,6 +185,9 @@ export const stringsDanish = {
182
185
  'Shipping method': {
183
186
  value: 'Leveringsmetode',
184
187
  },
188
+ Show: {
189
+ value: 'Vis',
190
+ },
185
191
  'Something went wrong.': {
186
192
  value: 'Noget gik galt.',
187
193
  },
@@ -197,6 +203,9 @@ export const stringsDanish = {
197
203
  'Taxes will apply to all orders': {
198
204
  value: 'Skatter vil gælde for alle ordrer',
199
205
  },
206
+ 'The following items are unable to be shipped to your country and are not included in your cart total.': {
207
+ value: 'De følgende varer kan ikke sendes til dit land og er ikke inkluderet i din kurvs total.',
208
+ },
200
209
  "There's been an error creating your checkout session. Please reload and try again or contact support if the error persists": {
201
210
  value: 'Der opstod en fejl under oprettelsen af din betalingssession. Genindlæs venligst og prøv igen eller kontakt support, hvis fejlen fortsætter',
202
211
  },
@@ -245,6 +254,9 @@ export const stringsDanish = {
245
254
  'duty free': {
246
255
  value: 'toldfrit',
247
256
  },
257
+ 'restricted items': {
258
+ value: 'begrænsede genstande',
259
+ },
248
260
  'tax free': {
249
261
  value: 'skattefrit',
250
262
  },