@useinsider/guido 2.1.0-beta.2ad77c6 → 2.1.0-beta.2d0ecb3

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 (73) hide show
  1. package/dist/components/organisms/base/Toaster.vue.js +4 -4
  2. package/dist/components/organisms/base/Toaster.vue2.js +12 -9
  3. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
  4. package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
  5. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue.js +1 -1
  6. package/dist/components/organisms/unsubscribe/UnsubscribePageSelection.vue2.js +19 -19
  7. package/dist/composables/useRecommendation.js +9 -9
  8. package/dist/composables/useStripo.js +25 -23
  9. package/dist/composables/useVersionHistoryApi.js +1 -1
  10. package/dist/config/compiler/utils/recommendationCompilerUtils.js +1 -1
  11. package/dist/config/i18n/en/index.js +11 -0
  12. package/dist/config/i18n/en/labels.json.js +7 -0
  13. package/dist/config/i18n/en/toasters.json.js +56 -0
  14. package/dist/config/i18n/en/tooltips.json.js +82 -0
  15. package/dist/config/i18n/index.js +7 -0
  16. package/dist/config/migrator/itemsBlockMigrator.js +65 -64
  17. package/dist/config/migrator/recommendationMigrator.js +1 -1
  18. package/dist/extensions/Blocks/Recommendation/block.js +1 -1
  19. package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +36 -33
  20. package/dist/extensions/Blocks/Recommendation/constants/layout.js +16 -14
  21. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +15 -13
  22. package/dist/extensions/Blocks/Recommendation/controls/button/index.js +9 -9
  23. package/dist/extensions/Blocks/Recommendation/controls/image/index.js +1 -1
  24. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +41 -29
  25. package/dist/extensions/Blocks/Recommendation/controls/main/algorithm.js +16 -16
  26. package/dist/extensions/Blocks/Recommendation/controls/main/currency.js +30 -32
  27. package/dist/extensions/Blocks/Recommendation/controls/main/index.js +173 -102
  28. package/dist/extensions/Blocks/Recommendation/controls/main/locale.js +9 -9
  29. package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +46 -38
  30. package/dist/extensions/Blocks/Recommendation/controls/main/shuffle.js +16 -16
  31. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +291 -217
  32. package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +14 -14
  33. package/dist/extensions/Blocks/Recommendation/controls/name/index.js +10 -10
  34. package/dist/extensions/Blocks/Recommendation/controls/name/textTrim.js +5 -5
  35. package/dist/extensions/Blocks/Recommendation/controls/oldPrice/index.js +14 -14
  36. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/index.js +9 -9
  37. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textAfter.js +3 -3
  38. package/dist/extensions/Blocks/Recommendation/controls/omnibusDiscount/textBefore.js +1 -1
  39. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/index.js +9 -9
  40. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textAfter.js +3 -3
  41. package/dist/extensions/Blocks/Recommendation/controls/omnibusPrice/textBefore.js +3 -3
  42. package/dist/extensions/Blocks/Recommendation/controls/price/index.js +3 -3
  43. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +223 -99
  44. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +94 -53
  45. package/dist/extensions/Blocks/Recommendation/templates/grid/migration.js +1 -1
  46. package/dist/extensions/Blocks/Recommendation/templates/utils.js +32 -32
  47. package/dist/extensions/Blocks/Unsubscribe/block.js +29 -29
  48. package/dist/extensions/Blocks/Unsubscribe/control.js +12 -9
  49. package/dist/extensions/Blocks/Unsubscribe/elements/preview.js +13 -11
  50. package/dist/extensions/Blocks/Unsubscribe/styles.css.js +31 -1
  51. package/dist/guido.css +1 -1
  52. package/dist/src/config/i18n/en/index.d.ts +1 -0
  53. package/dist/src/config/i18n/index.d.ts +16 -0
  54. package/dist/src/extensions/Blocks/Recommendation/constants/defaultConfig.d.ts +6 -0
  55. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +3 -3
  56. package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -2
  57. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +8 -1
  58. package/dist/src/extensions/Blocks/Recommendation/controls/main/index.d.ts +33 -10
  59. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +27 -14
  60. package/dist/src/extensions/Blocks/Recommendation/controls/spacing/index.d.ts +50 -17
  61. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -0
  62. package/dist/src/extensions/Blocks/Recommendation/templates/grid/migration.d.ts +1 -1
  63. package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +4 -2
  64. package/dist/src/extensions/Blocks/Recommendation/templates/list/migration.d.ts +1 -1
  65. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +1 -1
  66. package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +8 -0
  67. package/dist/src/extensions/Blocks/Unsubscribe/control.d.ts +1 -0
  68. package/dist/static/styles/components/notification.css.js +18 -0
  69. package/dist/static/styles/components/tools.css.js +6 -2
  70. package/dist/static/styles/customEditorStyle.css.js +50 -23
  71. package/dist/static/styles/variables.css.js +2 -0
  72. package/dist/stores/unsubscribe.js +37 -34
  73. package/package.json +1 -1
@@ -20,30 +20,30 @@ const n = `.esd-x,
20
20
  }
21
21
  .ins-product-cart ue-node-actions,
22
22
  /* Horizontal layout - hide for info, image, and button cells */
23
- .ins-recommendation-v3-block-v2 .product-info-cell ue-node-actions,
24
- .ins-recommendation-v3-block-v2 .product-info-cell ue-node-panel,
25
- .ins-recommendation-v3-block-v2 .product-image-cell ue-node-actions,
26
- .ins-recommendation-v3-block-v2 .product-image-cell ue-node-panel,
27
- .ins-recommendation-v3-block-v2 .button-cell ue-node-actions,
28
- .ins-recommendation-v3-block-v2 .button-cell ue-node-panel,
23
+ .recommendation-block-v2 .product-info-cell ue-node-actions,
24
+ .recommendation-block-v2 .product-info-cell ue-node-panel,
25
+ .recommendation-block-v2 .product-image-cell ue-node-actions,
26
+ .recommendation-block-v2 .product-image-cell ue-node-panel,
27
+ .recommendation-block-v2 .button-cell ue-node-actions,
28
+ .recommendation-block-v2 .button-cell ue-node-panel,
29
29
  /* Vertical layout - hide for product-card-segment inner cells */
30
- .ins-recommendation-v3-block-v2 .product-card-segment ue-node-actions,
31
- .ins-recommendation-v3-block-v2 .product-card-segment ue-node-panel,
30
+ .recommendation-block-v2 .product-card-segment ue-node-actions,
31
+ .recommendation-block-v2 .product-card-segment ue-node-panel,
32
32
  /* Hide for specific product attribute cells in both layouts */
33
- .ins-recommendation-v3-block-v2 .product-image ue-node-actions,
34
- .ins-recommendation-v3-block-v2 .product-image ue-node-panel,
35
- .ins-recommendation-v3-block-v2 .product-name ue-node-actions,
36
- .ins-recommendation-v3-block-v2 .product-name ue-node-panel,
37
- .ins-recommendation-v3-block-v2 .product-price ue-node-actions,
38
- .ins-recommendation-v3-block-v2 .product-price ue-node-panel,
39
- .ins-recommendation-v3-block-v2 .product-old-price ue-node-actions,
40
- .ins-recommendation-v3-block-v2 .product-old-price ue-node-panel,
41
- .ins-recommendation-v3-block-v2 .product-omnibus-price ue-node-actions,
42
- .ins-recommendation-v3-block-v2 .product-omnibus-price ue-node-panel,
43
- .ins-recommendation-v3-block-v2 .product-omnibus-discount ue-node-actions,
44
- .ins-recommendation-v3-block-v2 .product-omnibus-discount ue-node-panel,
45
- .ins-recommendation-v3-block-v2 .product-button ue-node-actions,
46
- .ins-recommendation-v3-block-v2 .product-button ue-node-panel {
33
+ .recommendation-block-v2 .product-image ue-node-actions,
34
+ .recommendation-block-v2 .product-image ue-node-panel,
35
+ .recommendation-block-v2 .product-name ue-node-actions,
36
+ .recommendation-block-v2 .product-name ue-node-panel,
37
+ .recommendation-block-v2 .product-price ue-node-actions,
38
+ .recommendation-block-v2 .product-price ue-node-panel,
39
+ .recommendation-block-v2 .product-old-price ue-node-actions,
40
+ .recommendation-block-v2 .product-old-price ue-node-panel,
41
+ .recommendation-block-v2 .product-omnibus-price ue-node-actions,
42
+ .recommendation-block-v2 .product-omnibus-price ue-node-panel,
43
+ .recommendation-block-v2 .product-omnibus-discount ue-node-actions,
44
+ .recommendation-block-v2 .product-omnibus-discount ue-node-panel,
45
+ .recommendation-block-v2 .product-button ue-node-actions,
46
+ .recommendation-block-v2 .product-button ue-node-panel {
47
47
  display: none !important;
48
48
  }
49
49
 
@@ -52,7 +52,7 @@ const n = `.esd-x,
52
52
  display: none;
53
53
  }
54
54
 
55
- /* Mobile layout: when Stripo mobile mode is active, swap containers */
55
+ /* Mobile layout: when Stripo mobile mode is active, swap containers (grid layout only) */
56
56
  .ue-mobile-mode .ins-recommendation-desktop-container {
57
57
  display: none !important;
58
58
  }
@@ -60,6 +60,33 @@ const n = `.esd-x,
60
60
  .ue-mobile-mode .ins-recommendation-mobile-container {
61
61
  display: table !important;
62
62
  }
63
+
64
+ /* List layout: keep desktop container visible in mobile mode (list rows are inherently responsive)
65
+ Uses class selector instead of [data-layout="list"] for Gmail compatibility */
66
+ .ue-mobile-mode .ins-recommendation-list-layout .ins-recommendation-desktop-container {
67
+ display: table !important;
68
+ }
69
+
70
+ .ue-mobile-mode .ins-recommendation-list-layout .ins-recommendation-mobile-container {
71
+ display: none !important;
72
+ }
73
+
74
+ /* List layout mobile: reduce image and button width for better text readability */
75
+ .ue-mobile-mode .ins-recommendation-list-layout .product-image-cell {
76
+ width: 80px !important;
77
+ }
78
+
79
+ .ue-mobile-mode .ins-recommendation-list-layout .product-image-cell img {
80
+ max-width: 80px !important;
81
+ }
82
+
83
+ .ue-mobile-mode .ins-recommendation-list-layout .button-cell {
84
+ width: 80px !important;
85
+ }
86
+
87
+ .ue-mobile-mode .ins-recommendation-list-layout .product-info-cell {
88
+ padding: 5px 8px !important;
89
+ }
63
90
  `;
64
91
  export {
65
92
  n as default
@@ -10,6 +10,7 @@ const o = `:host {
10
10
  --guido-color-gray-1: #F0F0F0;
11
11
  --guido-color-gray-0: #F9F9F9;
12
12
  --guido-color-neutral-800: #222938;
13
+ --guido-color-neutral-700: #2C3546;
13
14
  --guido-color-neutral-200: #DCDFE6;
14
15
  --guido-color-neutral-100: #EFF2F4;
15
16
  --guido-color-danger-300: #e84342;
@@ -25,6 +26,7 @@ const o = `:host {
25
26
  --guido-color-border-onpage-message-error: var(--guido-color-danger-500);
26
27
  --guido-color-background-toaster-success: #128745;
27
28
  --guido-color-background-toaster-error: var(--guido-color-danger-500);
29
+ --guido-color-background-toaster-info: var(--guido-color-neutral-700);
28
30
  --guido-color-background-toaster-warn: #D37400;
29
31
  }
30
32
  `;
@@ -1,39 +1,40 @@
1
- import { TYPE_COLLECTIONS as i, PAGE_TYPES as a } from "../enums/unsubscribe.js";
2
- import { useUnsubscribeApi as r } from "../services/unsubscribeApi.js";
3
- import { defineStore as d } from "pinia";
4
- const p = () => ({
1
+ import { TYPE_COLLECTIONS as i, PAGE_TYPES as p } from "../enums/unsubscribe.js";
2
+ import { useUnsubscribeApi as d } from "../services/unsubscribeApi.js";
3
+ import { defineStore as h } from "pinia";
4
+ let o = null;
5
+ const r = () => ({
5
6
  templates: [],
6
7
  selectedTemplates: {},
7
8
  selectedUnsubscribePages: [],
8
- selectedCollectionType: a.GLOBAL_UNSUBSCRIBE,
9
- activeType: a.GLOBAL_UNSUBSCRIBE,
9
+ selectedCollectionType: p.GLOBAL_UNSUBSCRIBE,
10
+ activeType: p.GLOBAL_UNSUBSCRIBE,
10
11
  pageSelectionUpdateStatus: !1,
11
12
  pageSelectionDrawerStatus: !1,
12
13
  typeSelectionDrawerStatus: !1,
13
14
  isGlobalUnsubscribeDisabled: !1,
14
15
  isSubscriptionPreferencesCenterDisabled: !1
15
- }), g = d("guidoUnsubscribe", {
16
- state: () => p(),
16
+ }), b = h("guidoUnsubscribe", {
17
+ state: () => r(),
17
18
  getters: {
18
19
  getSelectedCollection: (e) => i[e.selectedCollectionType],
19
20
  getSelectedTemplateByActiveType: (e) => e.selectedTemplates[e.activeType],
20
21
  getTemplatesByActiveType: (e) => e.templates.filter((t) => t.type === e.activeType),
21
22
  getThumbnailByTemplateId: (e) => (t) => {
22
- var c;
23
- return ((c = e.templates.find((s) => s.id === t)) == null ? void 0 : c.thumbnail) ?? "";
23
+ var l;
24
+ return ((l = e.templates.find((s) => s.id === t)) == null ? void 0 : l.thumbnail) ?? "";
24
25
  },
25
26
  getSelectedUnsubscribePagesByCollection: (e) => (t) => {
26
- const c = i[t];
27
- if (!c)
27
+ const l = i[t];
28
+ if (!l)
28
29
  return [];
29
30
  const s = /* @__PURE__ */ new Map();
30
31
  e.templates.forEach((n) => {
31
32
  s.set(n.id, n.type);
32
33
  });
33
- const l = new Set(c);
34
+ const c = new Set(l);
34
35
  return e.selectedUnsubscribePages.filter((n) => {
35
- const o = s.get(n);
36
- return o !== void 0 && l.has(o);
36
+ const a = s.get(n);
37
+ return a !== void 0 && c.has(a);
37
38
  });
38
39
  },
39
40
  isActiveTypeFirstInCollection: (e) => {
@@ -47,7 +48,7 @@ const p = () => ({
47
48
  hasTemplatesByCollectionType: (e) => {
48
49
  const t = {};
49
50
  return i[e.selectedCollectionType].forEach((s) => {
50
- t[s] = e.templates.some((l) => l.type === s);
51
+ t[s] = e.templates.some((c) => c.type === s);
51
52
  }), t;
52
53
  },
53
54
  unsubscribePagesStatus: (e) => e.selectedUnsubscribePages.length > 0
@@ -56,29 +57,31 @@ const p = () => ({
56
57
  $reset() {
57
58
  const { templates: e, selectedUnsubscribePages: t } = this;
58
59
  Object.assign(this, {
59
- ...p(),
60
+ ...r(),
60
61
  templates: e,
61
62
  selectedUnsubscribePages: t
62
63
  });
63
64
  },
64
65
  async fetchTemplates() {
65
- if (this.templates.length)
66
- return;
67
- const { getUnsubscribePages: e } = r(), t = await e();
68
- this.templates = t;
66
+ this.templates.length || (o || (o = (async () => {
67
+ const { getUnsubscribePages: e } = d();
68
+ this.templates = await e();
69
+ })().finally(() => {
70
+ o = null;
71
+ })), await o);
69
72
  },
70
73
  setCollection(e) {
71
74
  this.selectedCollectionType = e;
72
75
  const t = i[e];
73
76
  if (t && t.length > 0) {
74
77
  [this.activeType] = t;
75
- const c = { ...this.selectedTemplates };
78
+ const l = { ...this.selectedTemplates };
76
79
  t.forEach((s) => {
77
- if (!c[s]) {
78
- const l = this.templates.find((n) => n.type === s);
79
- l && (c[s] = l.id);
80
+ if (!l[s]) {
81
+ const c = this.templates.find((n) => n.type === s);
82
+ c && (l[s] = c.id);
80
83
  }
81
- }), this.selectedTemplates = c;
84
+ }), this.selectedTemplates = l;
82
85
  }
83
86
  },
84
87
  setCollectionWithoutAutoSelection(e) {
@@ -101,17 +104,17 @@ const p = () => ({
101
104
  t >= 0 && (this.activeType = this.getSelectedCollection[t]);
102
105
  },
103
106
  loadSelectedTemplates(e) {
104
- const t = new Map(this.templates.map((s) => [s.id, s.type])), c = { ...this.selectedTemplates };
107
+ const t = new Map(this.templates.map((s) => [s.id, s.type])), l = { ...this.selectedTemplates };
105
108
  e.forEach((s) => {
106
- const l = t.get(s);
107
- l !== void 0 && (c[l] = s);
108
- }), this.selectedTemplates = c;
109
+ const c = t.get(s);
110
+ c !== void 0 && (l[c] = s);
111
+ }), this.selectedTemplates = l;
109
112
  },
110
113
  getSelectedTemplatesByCollection(e) {
111
- const t = i[e], c = [];
114
+ const t = i[e], l = [];
112
115
  return t.forEach((s) => {
113
- this.selectedTemplates[s] && c.push(this.selectedTemplates[s]);
114
- }), c;
116
+ this.selectedTemplates[s] && l.push(this.selectedTemplates[s]);
117
+ }), l;
115
118
  },
116
119
  addUnsubscribePages(e) {
117
120
  const t = /* @__PURE__ */ new Set([...this.selectedUnsubscribePages, ...e]);
@@ -125,5 +128,5 @@ const p = () => ({
125
128
  }
126
129
  });
127
130
  export {
128
- g as useUnsubscribeStore
131
+ b as useUnsubscribeStore
129
132
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@useinsider/guido",
3
- "version": "2.1.0-beta.2ad77c6",
3
+ "version": "2.1.0-beta.2d0ecb3",
4
4
  "description": "Guido is a Vue + TypeScript wrapper for Email Plugin. Easily embed the email editor in your Vue applications.",
5
5
  "main": "./dist/guido.umd.cjs",
6
6
  "module": "./dist/library.js",