@useinsider/guido 3.0.0-beta.7a5aecd → 3.0.0-beta.7d3a300

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 (50) hide show
  1. package/dist/components/organisms/onboarding/GenericOnboarding.vue.js +1 -1
  2. package/dist/components/organisms/onboarding/GenericOnboarding.vue2.js +1 -1
  3. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue.js +1 -1
  4. package/dist/components/organisms/onboarding/TextBlockOnboarding.vue2.js +2 -2
  5. package/dist/config/compiler/unsubscribeCompilerRules.js +14 -14
  6. package/dist/config/compiler/utils/recommendationCompilerUtils.js +29 -18
  7. package/dist/config/i18n/en/tooltips.json.js +2 -1
  8. package/dist/extensions/Blocks/Recommendation/block.js +4 -1
  9. package/dist/extensions/Blocks/Recommendation/constants/blockIds.js +1 -1
  10. package/dist/extensions/Blocks/Recommendation/constants/controlIds.js +1 -1
  11. package/dist/extensions/Blocks/Recommendation/constants/selectors.js +15 -12
  12. package/dist/extensions/Blocks/Recommendation/controls/cardComposition/index.js +693 -144
  13. package/dist/extensions/Blocks/Recommendation/controls/customAttribute/index.js +78 -0
  14. package/dist/extensions/Blocks/Recommendation/controls/layout/index.js +27 -24
  15. package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +96 -88
  16. package/dist/extensions/Blocks/Recommendation/controls/spacing/index.js +83 -81
  17. package/dist/extensions/Blocks/Recommendation/extension.js +18 -16
  18. package/dist/extensions/Blocks/Recommendation/recommendation.css.js +126 -2
  19. package/dist/extensions/Blocks/Recommendation/settingsPanel.js +124 -106
  20. package/dist/extensions/Blocks/Recommendation/store/recommendation.js +8 -7
  21. package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +63 -34
  22. package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +30 -33
  23. package/dist/extensions/Blocks/Recommendation/templates/index.js +8 -8
  24. package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +28 -13
  25. package/dist/extensions/Blocks/Recommendation/templates/list/template.js +25 -44
  26. package/dist/extensions/Blocks/Recommendation/templates/utils.js +62 -38
  27. package/dist/extensions/Blocks/Recommendation/utils/tagName.js +6 -6
  28. package/dist/extensions/Blocks/Unsubscribe/settingsPanel.js +16 -17
  29. package/dist/guido.css +1 -1
  30. package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +324 -218
  31. package/dist/package.json.js +1 -1
  32. package/dist/src/extensions/Blocks/Recommendation/block.d.ts +1 -0
  33. package/dist/src/extensions/Blocks/Recommendation/constants/blockIds.d.ts +2 -1
  34. package/dist/src/extensions/Blocks/Recommendation/constants/controlIds.d.ts +8 -1
  35. package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +1 -1
  36. package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +10 -0
  37. package/dist/src/extensions/Blocks/Recommendation/controls/cardComposition/index.d.ts +134 -44
  38. package/dist/src/extensions/Blocks/Recommendation/controls/customAttribute/index.d.ts +105 -0
  39. package/dist/src/extensions/Blocks/Recommendation/controls/index.d.ts +1 -0
  40. package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +2 -0
  41. package/dist/src/extensions/Blocks/Recommendation/store/recommendation.d.ts +1 -0
  42. package/dist/src/extensions/Blocks/Recommendation/templates/grid/elementRenderer.d.ts +1 -1
  43. package/dist/src/extensions/Blocks/Recommendation/templates/list/elementRenderer.d.ts +1 -1
  44. package/dist/src/extensions/Blocks/Recommendation/templates/list/template.d.ts +10 -4
  45. package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +37 -2
  46. package/dist/src/extensions/Blocks/Recommendation/utils/tagName.d.ts +3 -3
  47. package/dist/static/styles/components/button.css.js +13 -7
  48. package/dist/static/styles/components/narrow-panel.css.js +52 -0
  49. package/dist/static/styles/variables.css.js +3 -0
  50. package/package.json +3 -3
@@ -1,10 +1,10 @@
1
1
  import { RecommendationBlockId as o } from "../../constants/blockIds.js";
2
- import { ATTR_PRODUCT_BUTTON as l, ATTR_PRODUCT_IMAGE as d, ATTR_PRODUCT_OMNIBUS_DISCOUNT as u, ATTR_PRODUCT_OMNIBUS_PRICE as m, ATTR_PRODUCT_OLD_PRICE as g, ATTR_PRODUCT_PRICE as f, ATTR_PRODUCT_NAME as x } from "../../constants/selectors.js";
3
- import { useRecommendationExtensionStore as T } from "../../store/recommendation.js";
4
- import { formatPrice as _ } from "../../utils/priceFormatter.js";
5
- import { sanitizeImageUrl as y } from "../utils.js";
2
+ import { ATTR_PRODUCT_ATTR as u, ATTR_PRODUCT_BUTTON as l, ATTR_PRODUCT_IMAGE as d, ATTR_PRODUCT_OMNIBUS_DISCOUNT as m, ATTR_PRODUCT_OMNIBUS_PRICE as g, ATTR_PRODUCT_OLD_PRICE as f, ATTR_PRODUCT_PRICE as T, ATTR_PRODUCT_NAME as x } from "../../constants/selectors.js";
3
+ import { useRecommendationExtensionStore as _ } from "../../store/recommendation.js";
4
+ import { formatPrice as R } from "../../utils/priceFormatter.js";
5
+ import { sanitizeImageUrl as C, CUSTOM_CELL_HTML as y } from "../utils.js";
6
6
  function p() {
7
- const t = T(), { currencySettings: e } = t.recommendationConfigs;
7
+ const t = _(), { currencySettings: e } = t.recommendationConfigs;
8
8
  return {
9
9
  code: e.value,
10
10
  symbol: e.symbol,
@@ -16,12 +16,12 @@ function p() {
16
16
  }
17
17
  function s(t, e = "price") {
18
18
  const n = p(), r = t[e], a = (r == null ? void 0 : r[n.code]) ?? Object.values(r ?? {})[0] ?? 0;
19
- return _({
19
+ return R({
20
20
  price: a,
21
21
  currency: n
22
22
  });
23
23
  }
24
- const $ = {
24
+ const I = {
25
25
  /**
26
26
  * Image cell - left column (120px fixed width)
27
27
  * Has recommendation-attribute-row class and data attributes for Card Composition control
@@ -37,7 +37,7 @@ const $ = {
37
37
  valign="middle">
38
38
  <a target="_blank" href="${t.url}">
39
39
  <img
40
- src="${y(t.image_url)}"
40
+ src="${C(t.image_url)}"
41
41
  alt="${t.name}"
42
42
  style="display: block; max-width: 100%; height: auto;"
43
43
  class="adapt-img product-image">
@@ -62,7 +62,7 @@ const $ = {
62
62
  /**
63
63
  * Price element - row for info cell table
64
64
  */
65
- [f]: (t) => `
65
+ [T]: (t) => `
66
66
  <tr>
67
67
  <td
68
68
  class="esd-block-text product-price"
@@ -77,7 +77,7 @@ const $ = {
77
77
  /**
78
78
  * Old price element - row for info cell table
79
79
  */
80
- [g]: (t) => `
80
+ [f]: (t) => `
81
81
  <tr>
82
82
  <td
83
83
  class="esd-block-text product-old-price"
@@ -94,7 +94,7 @@ const $ = {
94
94
  /**
95
95
  * Omnibus price element - row for info cell table
96
96
  */
97
- [m]: (t) => `
97
+ [g]: (t) => `
98
98
  <tr>
99
99
  <td
100
100
  class="esd-block-text product-omnibus-price"
@@ -113,7 +113,7 @@ const $ = {
113
113
  /**
114
114
  * Omnibus discount element - row for info cell table
115
115
  */
116
- [u]: (t) => {
116
+ [m]: (t) => {
117
117
  var i, c;
118
118
  const e = p(), n = ((i = t.original_price) == null ? void 0 : i[e.code]) ?? Object.values(t.original_price ?? {})[0] ?? 0, r = ((c = t.price) == null ? void 0 : c[e.code]) ?? Object.values(t.price ?? {})[0] ?? 0, a = n > 0 ? Math.round((n - r) / n * 100) : 0, b = a > 0 ? `-${a}%` : "0%";
119
119
  return `
@@ -162,8 +162,23 @@ const $ = {
162
162
  </a>
163
163
  </span>
164
164
  </td>
165
+ `,
166
+ /**
167
+ * Custom attribute row template — same tr-td structure as Name, Price, etc.
168
+ * Used by `buildElementRenderer` for `customAttr:*` composition entries.
169
+ */
170
+ [y]: (t, e) => `
171
+ <tr>
172
+ <td
173
+ ${u}="product_attribute.${t}"
174
+ class="esd-block-text product-custom-attribute"
175
+ esd-extension-block-id="${o.CUSTOM_ATTRIBUTE}"
176
+ align="left">
177
+ <p contenteditable="false" style="font-size: 12px; color: #666666; margin: 0;">${e}</p>
178
+ </td>
179
+ </tr>
165
180
  `
166
181
  };
167
182
  export {
168
- $ as listElementRenderer
183
+ I as listElementRenderer
169
184
  };
@@ -1,6 +1,13 @@
1
- import { ATTR_PRODUCT_IMAGE as E, ATTR_PRODUCT_NAME as l, ATTR_PRODUCT_OLD_PRICE as c, ATTR_PRODUCT_PRICE as a, ATTR_PRODUCT_OMNIBUS_PRICE as d, ATTR_PRODUCT_OMNIBUS_DISCOUNT as T, ATTR_PRODUCT_BUTTON as N } from "../../constants/selectors.js";
2
- import { spacer as $, DEFAULT_CARD_VISIBILITY as o } from "../utils.js";
3
- import { listElementRenderer as e } from "./elementRenderer.js";
1
+ import { ATTR_PRODUCT_IMAGE as i, ATTR_PRODUCT_BUTTON as d } from "../../constants/selectors.js";
2
+ import { DEFAULT_CARD_COMPOSITION as u, spacer as m, buildElementRenderer as C, DEFAULT_CARD_VISIBILITY as b } from "../utils.js";
3
+ import { listElementRenderer as T } from "./elementRenderer.js";
4
+ function R(r, n, t) {
5
+ const l = t ? "" : ' style="display: none;"', o = r.replace(/<tr>/, "").replace(/<\/tr>/, "");
6
+ return `<tr
7
+ class="recommendation-attribute-row"
8
+ data-attribute-type="${n}"
9
+ data-visibility="${t ? "1" : "0"}"${l}>${o}</tr>`;
10
+ }
4
11
  const f = `
5
12
  <tr class="recommendation-product-row">
6
13
  <td style="padding: 0 5px;">
@@ -19,55 +26,29 @@ const f = `
19
26
  </td>
20
27
  </tr>
21
28
  `;
22
- function V(t) {
23
- const r = e[E](t), s = o[l], i = o[c], R = o[a], C = o[d], b = o[T], n = (w, A, p) => {
24
- const I = p ? "" : ' style="display: none;"', g = w.replace(/<tr>/, "").replace(/<\/tr>/, "");
25
- return `<tr
26
- class="recommendation-attribute-row"
27
- data-attribute-type="${A}"
28
- data-visibility="${p ? "1" : "0"}"${I}>${g}</tr>`;
29
- }, m = n(
30
- e[l](t),
31
- l,
32
- s
33
- ), _ = n(
34
- e[c](t),
35
- c,
36
- i
37
- ), O = n(
38
- e[a](t),
39
- a,
40
- R
41
- ), P = n(
42
- e[d](t),
43
- d,
44
- C
45
- ), u = n(
46
- e[T](t),
47
- T,
48
- b
49
- ), D = `
29
+ function y(r, n = u) {
30
+ const t = C(T, n), l = t[i](r), a = `
50
31
  <td class="product-info-cell" valign="middle" style="padding: 15px;">
51
32
  <table cellpadding="0" cellspacing="0" role="presentation" width="100%">
52
33
  <tbody>
53
- ${m}
54
- ${_}
55
- ${O}
56
- ${P}
57
- ${u}
34
+ ${n.filter((e) => e !== i && e !== d).filter((e) => t[e]).map((e) => {
35
+ const p = b[e] ?? !0;
36
+ return R(t[e](r), e, p);
37
+ }).join(`
38
+ `)}
58
39
  </tbody>
59
40
  </table>
60
41
  </td>
61
- `, U = e[N](t), y = r + D + U;
62
- return f.replace("{-{-PRODUCT_CONTENT-}-}", y);
42
+ `, c = t[d](r), s = l + a + c;
43
+ return f.replace("{-{-PRODUCT_CONTENT-}-}", s);
63
44
  }
64
- function M(t) {
65
- return t.map((r, s) => {
66
- const i = V(r);
67
- return s > 0 ? $ + i : i;
45
+ function w(r, n) {
46
+ return r.map((t, l) => {
47
+ const o = y(t, n);
48
+ return l > 0 ? m + o : o;
68
49
  }).join("");
69
50
  }
70
51
  export {
71
- V as getListProductCard,
72
- M as prepareProductRows
52
+ y as getListProductCard,
53
+ w as prepareProductRows
73
54
  };
@@ -1,34 +1,55 @@
1
- import { ATTR_PRODUCT_IMAGE as o, ATTR_PRODUCT_NAME as s, ATTR_PRODUCT_OLD_PRICE as r, ATTR_PRODUCT_PRICE as l, ATTR_PRODUCT_OMNIBUS_PRICE as i, ATTR_PRODUCT_OMNIBUS_DISCOUNT as a, ATTR_PRODUCT_BUTTON as c } from "../constants/selectors.js";
2
- const C = {
1
+ import { ATTR_PRODUCT_IMAGE as m, ATTR_PRODUCT_NAME as p, ATTR_PRODUCT_OLD_PRICE as T, ATTR_PRODUCT_PRICE as u, ATTR_PRODUCT_OMNIBUS_PRICE as _, ATTR_PRODUCT_OMNIBUS_DISCOUNT as b, ATTR_PRODUCT_BUTTON as g, ATTR_CUSTOM_PREFIX as d } from "../constants/selectors.js";
2
+ function R(t) {
3
+ return t.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
4
+ }
5
+ const O = Symbol("customCellHtml");
6
+ function f(t, e) {
7
+ const n = t[O];
8
+ if (!n)
9
+ return { ...t };
10
+ const r = { ...t };
11
+ return e.filter((o) => o.startsWith(d) && !r[o]).forEach((o) => {
12
+ const s = o.substring(d.length), l = R(s);
13
+ r[o] = (i) => {
14
+ var a;
15
+ const c = (a = i.product_attributes) == null ? void 0 : a[s];
16
+ return n(
17
+ s,
18
+ c != null ? String(c) : l
19
+ );
20
+ };
21
+ }), r;
22
+ }
23
+ const h = {
3
24
  TITLE: "You May Also Like!"
4
- }, D = [
5
- o,
6
- s,
7
- r,
8
- l,
9
- i,
10
- a,
11
- c
12
- ], O = {
13
- [o]: !0,
14
- [s]: !0,
15
- [l]: !0,
16
- [r]: !0,
17
- [i]: !1,
18
- [a]: !1,
19
- [c]: !0
20
- }, m = `
25
+ }, I = [
26
+ m,
27
+ p,
28
+ T,
29
+ u,
30
+ _,
31
+ b,
32
+ g
33
+ ], P = {
34
+ [m]: !0,
35
+ [p]: !0,
36
+ [u]: !0,
37
+ [T]: !0,
38
+ [_]: !1,
39
+ [b]: !1,
40
+ [g]: !0
41
+ }, U = `
21
42
  <tr>
22
43
  <td class="spacer" style="height: 10px;"></td>
23
44
  </tr>
24
- `, d = "https://email-static.useinsider.com/stripo/modules/email-recommendation-v3/assets/images/image-placeholder.png";
25
- function U(t) {
26
- return !t || typeof t != "string" || t.trim() === "" ? d : t.startsWith("http://") ? t.replace("http://", "https://") : t;
45
+ `, C = "https://email-static.useinsider.com/stripo/modules/email-recommendation-v3/assets/images/image-placeholder.png";
46
+ function E(t) {
47
+ return !t || typeof t != "string" || t.trim() === "" ? C : t.startsWith("http://") ? t.replace("http://", "https://") : t;
27
48
  }
28
- function T(t) {
49
+ function D(t) {
29
50
  return {
30
51
  name: "Product Name",
31
- image_url: d,
52
+ image_url: C,
32
53
  price: { USD: 18 },
33
54
  original_price: { USD: 20 },
34
55
  discount: { USD: 2 },
@@ -40,19 +61,19 @@ function T(t) {
40
61
  category: []
41
62
  };
42
63
  }
43
- function A(t = 6) {
64
+ function S(t = 6) {
44
65
  return Array.from(
45
66
  { length: t },
46
- (e, n) => T(String(n + 1))
67
+ (e, n) => D(String(n + 1))
47
68
  );
48
69
  }
49
- function I(t = "grid", e) {
70
+ function y(t = "grid", e) {
50
71
  const n = t === "list" ? `
51
- data-layout="list"` : "", p = e ? ` ${e}` : "";
72
+ data-layout="list"` : "", r = e ? ` ${e}` : "";
52
73
  return `
53
74
  <td
54
75
  align="left"
55
- class="${`recommendation-block-v2 esd-block-recommendation-v3-block es-p20${t === "list" ? " es-m-p0 ins-recommendation-list-layout" : ""}${p}`}"${n}>
76
+ class="${`recommendation-block-v2 esd-block-recommendation-v3-block es-p20${t === "list" ? " es-m-p0 ins-recommendation-list-layout" : ""}${r}`}"${n}>
56
77
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
57
78
  <tr>
58
79
  <td align="center">
@@ -84,7 +105,7 @@ function I(t = "grid", e) {
84
105
  </table>
85
106
  </td>
86
107
  </tr>
87
- ${m}
108
+ ${U}
88
109
  <tr>
89
110
  <td>
90
111
  <table
@@ -123,12 +144,15 @@ function I(t = "grid", e) {
123
144
  `;
124
145
  }
125
146
  export {
126
- C as DEFAULTS,
127
- D as DEFAULT_CARD_COMPOSITION,
128
- O as DEFAULT_CARD_VISIBILITY,
129
- d as PLACEHOLDER_IMAGE,
130
- I as createBlockTemplate,
131
- A as getDefaultProducts,
132
- U as sanitizeImageUrl,
133
- m as spacer
147
+ O as CUSTOM_CELL_HTML,
148
+ h as DEFAULTS,
149
+ I as DEFAULT_CARD_COMPOSITION,
150
+ P as DEFAULT_CARD_VISIBILITY,
151
+ C as PLACEHOLDER_IMAGE,
152
+ f as buildElementRenderer,
153
+ y as createBlockTemplate,
154
+ S as getDefaultProducts,
155
+ E as sanitizeImageUrl,
156
+ U as spacer,
157
+ R as toDisplayName
134
158
  };
@@ -1,10 +1,10 @@
1
1
  function a(t) {
2
2
  return typeof t == "object" && t !== null && "tagName" in t && typeof t.tagName == "string";
3
3
  }
4
- function r(t) {
4
+ function n(t) {
5
5
  return typeof t == "object" && t !== null && "getTagName" in t && typeof t.getTagName == "function";
6
6
  }
7
- function n(t) {
7
+ function r(t) {
8
8
  return typeof t == "object" && t !== null && "getStyle" in t && typeof t.getStyle == "function";
9
9
  }
10
10
  function u(t) {
@@ -14,13 +14,13 @@ function g(t) {
14
14
  return typeof t == "object" && t !== null && "tagName" in t && t.tagName === "TD";
15
15
  }
16
16
  function p(t, e) {
17
- return !t || !n(t) ? null : t.getStyle(e);
17
+ return !t || !r(t) ? null : t.getStyle(e);
18
18
  }
19
19
  function N(t) {
20
- return !t || !u(t) ? null : t.parent();
20
+ return !t || !u(t) ? null : t.parent() ?? null;
21
21
  }
22
22
  function l(t, e = "UNKNOWN") {
23
- return t ? a(t) ? t.tagName.toUpperCase() : r(t) ? t.getTagName().toUpperCase() : e : e;
23
+ return t ? a(t) ? t.tagName.toUpperCase() : n(t) ? t.getTagName().toUpperCase() : e : e;
24
24
  }
25
25
  const f = /* @__PURE__ */ new Set(["TD", "BLOCK_IMAGE", "BLOCK_BUTTON"]);
26
26
  function i(t) {
@@ -36,7 +36,7 @@ function s(t) {
36
36
  export {
37
37
  s as getTableDisplayValue,
38
38
  l as getTagName,
39
- n as hasGetStyle,
39
+ r as hasGetStyle,
40
40
  u as hasParent,
41
41
  c as isTableCellNode,
42
42
  i as isTableCellTag,
@@ -1,35 +1,34 @@
1
- import { SettingsPanelRegistry as e, SettingsPanelTab as N, SettingsTab as t, TextControls as O } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
1
+ import { SettingsPanelRegistry as e, SettingsPanelTab as O, SettingsTab as t, TextControls as N } from "../../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
2
2
  import { UNSUBSCRIBE_BLOCK_ID as I } from "./block.js";
3
3
  import { UNSUBSCRIBE_CONTROL_ID as _ } from "./control.js";
4
- class R extends e {
4
+ class o extends e {
5
5
  registerBlockControls(T) {
6
6
  T[I] = [
7
- new N(
7
+ new O(
8
8
  t.SETTINGS,
9
9
  [
10
10
  _,
11
- O.FORMAT,
12
- O.ALIGN,
13
- O.LINE_HEIGHT,
14
- O.DIRECTION,
15
- O.INTERNAL_INDENTS,
16
- O.HIDDEN_NODE
11
+ N.FORMAT,
12
+ N.ALIGN,
13
+ N.LINE_HEIGHT,
14
+ N.DIRECTION,
15
+ N.INTERNAL_INDENTS,
16
+ N.HIDDEN_NODE
17
17
  ]
18
18
  ),
19
- new N(
19
+ new O(
20
20
  t.STYLES,
21
21
  [
22
- O.TEXT_BLOCK_BACKGROUND_COLOR,
23
- O.FONT_FAMILY,
24
- O.FONT_SIZE,
25
- O.FONT_COLOR,
26
- O.FONT_BACKGROUND_COLOR,
27
- O.LINKS_COLOR
22
+ N.TEXT_BLOCK_BACKGROUND_COLOR,
23
+ N.FONT_FAMILY,
24
+ N.FONT_SIZE,
25
+ N.FONT_COLOR,
26
+ N.FONT_BACKGROUND_COLOR
28
27
  ]
29
28
  )
30
29
  ];
31
30
  }
32
31
  }
33
32
  export {
34
- R as SettingsPanel
33
+ o as SettingsPanel
35
34
  };
package/dist/guido.css CHANGED
@@ -1 +1 @@
1
- .gap-16[data-v-3b53a736],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-cd76c125] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-079d2bf7] .in-progress-wrapper__progress p span:last-child{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.editor-actions[data-v-acff76a8]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-a26d7792]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-a26d7792]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-a26d7792]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-df672485]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-df672485]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-df672485]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-df672485]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-df672485]{object-fit:cover;transform:scale(1)}[data-v-43c617a7] .guido__verion-history-view-option-selection-desktop svg,[data-v-43c617a7] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-43c617a7] .in-segments-wrapper__button_selected,[data-v-43c617a7] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-988f8da6]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-988f8da6]{min-height:504px}.iframe-wrapper[data-v-e0424e99]{width:258px}.iframe-scaled[data-v-e0424e99]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-d3c52b44] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-a408dcea] .vueperslides__bullets{pointer-events:none!important}[data-v-a408dcea] .vueperslides__parallax-wrapper{height:110px!important}
1
+ .gap-16[data-v-3b53a736],.gap-16[data-v-0e1b0c54]{gap:16px}[data-v-cd76c125] .in-button-v2__wrapper{line-height:0}[data-v-22226124] .in-segments-wrapper__button_selected,[data-v-22226124] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb;color:#0010ac;border-color:#0010ac}[data-v-079d2bf7] .in-progress-wrapper__progress p span:last-child{display:none!important}.view-options-wrapper[data-v-195ab6d4]{position:relative;display:inline-block}.new-tag[data-v-195ab6d4]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-195ab6d4] .guido__view-option-selection-desktop svg,[data-v-195ab6d4] .guido__view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-195ab6d4] .in-segments-wrapper__button_selected,[data-v-195ab6d4] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-195ab6d4] .in-tooltip-wrapper__icon{cursor:pointer}.editor-toolbar[data-v-173c3a40]{gap:4px}.version-history-item[data-v-ee4b9c3f]{flex-basis:200px}.version-history[data-v-64c52560]{gap:8px}.version-history__toolbar[data-v-64c52560]{gap:4px}.view-options-wrapper[data-v-d405ca59]{position:relative;display:inline-block}.new-tag[data-v-d405ca59]{position:absolute;top:-8px;right:-16px;z-index:10}[data-v-d405ca59] .guido__verion-history-view-option-selection-desktop svg,[data-v-d405ca59] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-d405ca59] .in-segments-wrapper__button_selected,[data-v-d405ca59] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}[data-v-d405ca59] .in-tooltip-wrapper__icon{cursor:pointer}.editor-actions[data-v-acff76a8]{gap:4px}.header-wrapper[data-v-5c02dcc7]{min-width:1000px}.guido-loading__wrapper[data-v-07c4b2d8]{height:100%;top:75px!important;bottom:0!important}.guido-editor__wrapper[data-v-a26d7792]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-a26d7792]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-a26d7792]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-df672485]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-df672485]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-df672485]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-df672485]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-df672485]{object-fit:cover;transform:scale(1)}[data-v-43c617a7] .guido__verion-history-view-option-selection-desktop svg,[data-v-43c617a7] .guido__verion-history-view-option-selection-mobile svg{margin:0 0 0 2px}[data-v-43c617a7] .in-segments-wrapper__button_selected,[data-v-43c617a7] .in-segments-wrapper__button_selected:hover{background-color:#dae1fb}.error-list[data-v-c3fd5d4b]{gap:16px}.desktop-browser-header[data-v-d86c5af5]{height:79px;min-height:79px}.desktop-browser-header__left[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:378px}.desktop-browser-header__center[data-v-d86c5af5]{height:79px;background-repeat:repeat-x;background-size:auto 100%;background-position:left top}.desktop-browser-header__right[data-v-d86c5af5]{-webkit-user-drag:none;height:79px;width:112px}.desktop-preview[data-v-988f8da6]{min-width:602px;height:70vh;min-height:583px;border-radius:10px}.desktop-preview iframe[data-v-988f8da6]{min-height:504px}.iframe-wrapper[data-v-e0424e99]{width:258px}.iframe-scaled[data-v-e0424e99]{width:320px;height:124.0310077519%;transform:scale(.80625);transform-origin:top left}.cropped-text[data-v-eb3d05d7]{width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-preview-wrapper__phone[data-v-3f472f96]{width:282px}.mobile-preview-wrapper__phone img[data-v-3f472f96]{object-fit:cover;border-radius:44px}.mobile-preview-wrapper__content[data-v-3f472f96]{width:258px;height:450px;left:12px}[data-v-29b9af29] .vueperslides__bullets,[data-v-dd1a237a] .vueperslides__bullets{pointer-events:none!important}[data-v-dd1a237a] .vueperslides__parallax-wrapper{height:110px!important}[data-v-d073b1dc] .vueperslides__bullets{pointer-events:none!important}[data-v-d073b1dc] .vueperslides__parallax-wrapper{height:110px!important}