@useinsider/guido 2.1.0-beta.7ae6573 → 2.1.0-beta.7bbedc6
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.
- package/README.md +36 -0
- package/dist/@types/config/schemas.js +70 -65
- package/dist/components/Guido.vue.js +1 -1
- package/dist/components/Guido.vue2.js +69 -58
- package/dist/components/organisms/base/Toaster.vue.js +4 -4
- package/dist/components/organisms/base/Toaster.vue2.js +12 -9
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.js +5 -5
- package/dist/components/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue2.js +2 -2
- package/dist/composables/useBlocksConfig.js +26 -16
- package/dist/config/compiler/utils/recommendationCompilerUtils.js +22 -17
- package/dist/config/migrator/itemsBlockMigrator.js +101 -97
- package/dist/enums/defaults.js +8 -4
- package/dist/extensions/Blocks/Recommendation/block.js +24 -23
- package/dist/extensions/Blocks/Recommendation/constants/defaultConfig.js +27 -26
- package/dist/extensions/Blocks/Recommendation/constants/layout.js +6 -4
- package/dist/extensions/Blocks/Recommendation/constants/selectors.js +12 -10
- package/dist/extensions/Blocks/Recommendation/controls/main/index.js +11 -10
- package/dist/extensions/Blocks/Recommendation/controls/main/productLayout.js +87 -37
- package/dist/extensions/Blocks/Recommendation/controls/main/utils.js +138 -117
- package/dist/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.js +21 -0
- package/dist/extensions/Blocks/Recommendation/templates/grid/elementRenderer.js +25 -30
- package/dist/extensions/Blocks/Recommendation/templates/grid/template.js +27 -30
- package/dist/extensions/Blocks/Recommendation/templates/list/elementRenderer.js +20 -25
- package/dist/extensions/Blocks/Recommendation/templates/utils.js +31 -15
- package/dist/extensions/ModulesTabIcons/extension.js +17 -0
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +257 -187
- package/dist/services/stripoApi.js +20 -17
- package/dist/src/@types/config/schemas.d.ts +8 -0
- package/dist/src/composables/useConfig.d.ts +4 -0
- package/dist/src/enums/defaults.d.ts +4 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/index.d.ts +2 -2
- package/dist/src/extensions/Blocks/Recommendation/constants/layout.d.ts +6 -0
- package/dist/src/extensions/Blocks/Recommendation/constants/selectors.d.ts +4 -0
- package/dist/src/extensions/Blocks/Recommendation/controls/main/productLayout.d.ts +22 -4
- package/dist/src/extensions/Blocks/Recommendation/controls/main/utils.d.ts +9 -2
- package/dist/src/extensions/Blocks/Recommendation/controls/mobileLayout/cssRules.d.ts +29 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/grid/template.d.ts +1 -1
- package/dist/src/extensions/Blocks/Recommendation/templates/index.d.ts +2 -0
- package/dist/src/extensions/Blocks/Recommendation/templates/utils.d.ts +11 -2
- package/dist/src/extensions/Blocks/Recommendation/types/nodeConfig.d.ts +6 -0
- package/dist/src/extensions/ModulesTabIcons/extension.d.ts +2 -0
- package/dist/src/stores/config.d.ts +36 -0
- package/dist/static/styles/customEditorStyle.css.js +10 -9
- package/dist/static/templates/empty/index.html.js +74 -0
- package/dist/static/templates/empty/style.css.js +779 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DEFAULT_PRODUCTS_PER_ROW as
|
|
2
|
-
import { DEFAULT_CARD_COMPOSITION as
|
|
3
|
-
import { gridElementRenderer as
|
|
4
|
-
const
|
|
1
|
+
import { DEFAULT_PRODUCTS_PER_ROW as m, DEFAULT_MOBILE_CARDS_IN_ROW as I } from "../../constants/layout.js";
|
|
2
|
+
import { DEFAULT_CARD_COMPOSITION as _, spacer as E, getDefaultProducts as S, createBlockTemplate as A, DEFAULTS as b, DEFAULT_CARD_VISIBILITY as D } from "../utils.js";
|
|
3
|
+
import { gridElementRenderer as w, ATTRIBUTE_CELL_CLASS as C, DEFAULT_CELL_PADDING as f } from "./elementRenderer.js";
|
|
4
|
+
const O = `
|
|
5
5
|
<tr class="recommendation-product-row">
|
|
6
6
|
<td>
|
|
7
7
|
<table
|
|
@@ -18,7 +18,7 @@ const D = `
|
|
|
18
18
|
</table>
|
|
19
19
|
</td>
|
|
20
20
|
</tr>
|
|
21
|
-
`,
|
|
21
|
+
`, U = `
|
|
22
22
|
<tr
|
|
23
23
|
class="recommendation-attribute-row"
|
|
24
24
|
data-attribute-type="{-{-ATTR_TYPE-}-}"
|
|
@@ -27,43 +27,40 @@ const D = `
|
|
|
27
27
|
{-{-CELLS-}-}
|
|
28
28
|
</tr>
|
|
29
29
|
`;
|
|
30
|
-
function g(t, e, r,
|
|
31
|
-
const
|
|
32
|
-
return
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
return
|
|
30
|
+
function g(t, e, r, n = _) {
|
|
31
|
+
const c = (100 / e).toFixed(2), s = e - t.length, o = `<td class="${C}" style="padding: ${f};" width="${c}%"></td>`, i = s > 0 ? o.repeat(s) : "";
|
|
32
|
+
return n.filter((l) => r[l]).map((l) => {
|
|
33
|
+
const p = D[l] ?? !0, T = p ? "" : 'style="display: none;"', u = t.map((R) => {
|
|
34
|
+
const L = r[l];
|
|
35
|
+
return L(R).replace("<td", `<td width="${c}%"`);
|
|
36
36
|
}).join("");
|
|
37
|
-
return
|
|
37
|
+
return U.replace("{-{-ATTR_TYPE-}-}", l).replace("{-{-VISIBILITY-}-}", p ? "1" : "0").replace("{-{-DISPLAY_STYLE-}-}", T).replace("{-{-CELLS-}-}", u + i);
|
|
38
38
|
}).join("");
|
|
39
39
|
}
|
|
40
|
-
function P(t, e, r,
|
|
41
|
-
const
|
|
40
|
+
function P(t, e, r, n) {
|
|
41
|
+
const c = [];
|
|
42
42
|
for (let o = 0; o < t.length; o += e)
|
|
43
|
-
|
|
44
|
-
return
|
|
45
|
-
const
|
|
43
|
+
c.push(t.slice(o, o + e));
|
|
44
|
+
return c.map((o, i) => {
|
|
45
|
+
const a = g(
|
|
46
46
|
o,
|
|
47
47
|
e,
|
|
48
48
|
r,
|
|
49
|
-
|
|
50
|
-
), l =
|
|
51
|
-
return
|
|
49
|
+
n
|
|
50
|
+
), l = O.replace("{-{-ATTRIBUTE_ROWS-}-}", a);
|
|
51
|
+
return i > 0 ? E + l : l;
|
|
52
52
|
}).join("");
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return P(t, e,
|
|
54
|
+
function d(t, e, r) {
|
|
55
|
+
return P(t, e, w, r);
|
|
56
56
|
}
|
|
57
|
-
function
|
|
58
|
-
const e = t ? `ins-recommendation-v3-block-${t}` : void 0, r =
|
|
59
|
-
|
|
60
|
-
L
|
|
61
|
-
);
|
|
62
|
-
return r.replace("{-{-TITLE-}-}", _.TITLE).replace("{-{-PRODUCT_ROWS-}-}", c);
|
|
57
|
+
function W(t) {
|
|
58
|
+
const e = t ? `ins-recommendation-v3-block-${t}` : void 0, r = A("grid", e), n = S(), c = d(n, m), s = d(n, I);
|
|
59
|
+
return r.replace("{-{-TITLE-}-}", b.TITLE).replace("{-{-PRODUCT_ROWS-}-}", c).replace("{-{-MOBILE_PRODUCT_ROWS-}-}", s);
|
|
63
60
|
}
|
|
64
61
|
export {
|
|
65
|
-
|
|
62
|
+
W as getDefaultTemplate,
|
|
66
63
|
g as prepareGridAttributeRows,
|
|
67
64
|
P as prepareGridProductRows,
|
|
68
|
-
|
|
65
|
+
d as prepareProductRows
|
|
69
66
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
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
|
|
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
3
|
import { useRecommendationExtensionStore as T } from "../../store/recommendation.js";
|
|
4
4
|
import { formatPrice as _ } from "../../utils/priceFormatter.js";
|
|
5
5
|
import { sanitizeImageUrl as y } from "../utils.js";
|
|
@@ -14,14 +14,14 @@ function p() {
|
|
|
14
14
|
thousandSeparator: e.thousandSeparator
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
function
|
|
18
|
-
const n = p(), r = t[e],
|
|
17
|
+
function s(t, e = "price") {
|
|
18
|
+
const n = p(), r = t[e], a = (r == null ? void 0 : r[n.code]) ?? Object.values(r ?? {})[0] ?? 0;
|
|
19
19
|
return _({
|
|
20
|
-
price:
|
|
20
|
+
price: a,
|
|
21
21
|
currency: n
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
const
|
|
24
|
+
const $ = {
|
|
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
|
|
@@ -35,18 +35,13 @@ const P = {
|
|
|
35
35
|
data-visibility="1"
|
|
36
36
|
align="center"
|
|
37
37
|
valign="middle">
|
|
38
|
-
<
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
style="
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
alt="${t.name}"
|
|
46
|
-
style="max-width: 100%; max-height: 100%; object-fit: contain; display: block;"
|
|
47
|
-
class="adapt-img product-image">
|
|
48
|
-
</a>
|
|
49
|
-
</div>
|
|
38
|
+
<a target="_blank" href="${t.url}">
|
|
39
|
+
<img
|
|
40
|
+
src="${y(t.image_url)}"
|
|
41
|
+
alt="${t.name}"
|
|
42
|
+
style="display: block; max-width: 100%; height: auto;"
|
|
43
|
+
class="adapt-img product-image">
|
|
44
|
+
</a>
|
|
50
45
|
</td>
|
|
51
46
|
`,
|
|
52
47
|
/**
|
|
@@ -74,7 +69,7 @@ const P = {
|
|
|
74
69
|
esd-extension-block-id="${o.PRICE}"
|
|
75
70
|
align="left">
|
|
76
71
|
<p contenteditable="false" style="font-size: 16px; color: #333333; font-weight: bold; margin: 0;">
|
|
77
|
-
<strong>${
|
|
72
|
+
<strong>${s(t, "price")}</strong>
|
|
78
73
|
</p>
|
|
79
74
|
</td>
|
|
80
75
|
</tr>
|
|
@@ -91,7 +86,7 @@ const P = {
|
|
|
91
86
|
<p
|
|
92
87
|
contenteditable="false"
|
|
93
88
|
style="font-size: 14px; color: #999999; text-decoration: line-through; margin: 0;">
|
|
94
|
-
<strong>${
|
|
89
|
+
<strong>${s(t, "original_price")}</strong>
|
|
95
90
|
</p>
|
|
96
91
|
</td>
|
|
97
92
|
</tr>
|
|
@@ -99,7 +94,7 @@ const P = {
|
|
|
99
94
|
/**
|
|
100
95
|
* Omnibus price element - row for info cell table
|
|
101
96
|
*/
|
|
102
|
-
[
|
|
97
|
+
[m]: (t) => `
|
|
103
98
|
<tr>
|
|
104
99
|
<td
|
|
105
100
|
class="esd-block-text product-omnibus-price"
|
|
@@ -109,7 +104,7 @@ const P = {
|
|
|
109
104
|
align="left">
|
|
110
105
|
<p style="font-size: 12px; color: #666666; margin: 0;">
|
|
111
106
|
<span class="omnibus-text-before">Lowest 30-day price: </span>
|
|
112
|
-
<span class="omnibus-price-value">${
|
|
107
|
+
<span class="omnibus-price-value">${s(t, "original_price")}</span>
|
|
113
108
|
<span class="omnibus-text-after"></span>
|
|
114
109
|
</p>
|
|
115
110
|
</td>
|
|
@@ -118,9 +113,9 @@ const P = {
|
|
|
118
113
|
/**
|
|
119
114
|
* Omnibus discount element - row for info cell table
|
|
120
115
|
*/
|
|
121
|
-
[
|
|
122
|
-
var
|
|
123
|
-
const e = p(), n = ((
|
|
116
|
+
[u]: (t) => {
|
|
117
|
+
var i, c;
|
|
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%";
|
|
124
119
|
return `
|
|
125
120
|
<tr>
|
|
126
121
|
<td
|
|
@@ -170,5 +165,5 @@ const P = {
|
|
|
170
165
|
`
|
|
171
166
|
};
|
|
172
167
|
export {
|
|
173
|
-
|
|
168
|
+
$ as listElementRenderer
|
|
174
169
|
};
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { ATTR_PRODUCT_IMAGE as
|
|
2
|
-
const
|
|
1
|
+
import { ATTR_PRODUCT_IMAGE as n, ATTR_PRODUCT_NAME as o, ATTR_PRODUCT_OLD_PRICE as a, ATTR_PRODUCT_PRICE as c, ATTR_PRODUCT_OMNIBUS_PRICE as l, ATTR_PRODUCT_OMNIBUS_DISCOUNT as i, ATTR_PRODUCT_BUTTON as s } from "../constants/selectors.js";
|
|
2
|
+
const g = {
|
|
3
3
|
TITLE: "You May Also Like!"
|
|
4
4
|
}, u = [
|
|
5
|
-
|
|
5
|
+
n,
|
|
6
6
|
o,
|
|
7
|
+
a,
|
|
7
8
|
c,
|
|
8
9
|
l,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
i
|
|
10
|
+
i,
|
|
11
|
+
s
|
|
12
12
|
], b = {
|
|
13
|
-
[
|
|
13
|
+
[n]: !0,
|
|
14
14
|
[o]: !0,
|
|
15
|
-
[l]: !0,
|
|
16
15
|
[c]: !0,
|
|
17
|
-
[
|
|
18
|
-
[
|
|
19
|
-
[i]: !
|
|
16
|
+
[a]: !0,
|
|
17
|
+
[l]: !1,
|
|
18
|
+
[i]: !1,
|
|
19
|
+
[s]: !0
|
|
20
20
|
}, p = `
|
|
21
21
|
<tr>
|
|
22
22
|
<td class="spacer" style="height: 10px;"></td>
|
|
@@ -46,7 +46,7 @@ function D(t = 6) {
|
|
|
46
46
|
(e, r) => T(String(r + 1))
|
|
47
47
|
);
|
|
48
48
|
}
|
|
49
|
-
function
|
|
49
|
+
function O(t = "grid", e) {
|
|
50
50
|
const r = t === "list" ? `
|
|
51
51
|
data-layout="list"` : "";
|
|
52
52
|
return `
|
|
@@ -88,7 +88,8 @@ function A(t = "grid", e) {
|
|
|
88
88
|
<tr>
|
|
89
89
|
<td>
|
|
90
90
|
<table
|
|
91
|
-
class="ins-recommendation-product-container
|
|
91
|
+
class="ins-recommendation-product-container
|
|
92
|
+
ins-recommendation-desktop-container"
|
|
92
93
|
width="100%"
|
|
93
94
|
cellpadding="0"
|
|
94
95
|
cellspacing="0"
|
|
@@ -98,6 +99,21 @@ function A(t = "grid", e) {
|
|
|
98
99
|
</table>
|
|
99
100
|
</td>
|
|
100
101
|
</tr>
|
|
102
|
+
<tr>
|
|
103
|
+
<td>
|
|
104
|
+
<table
|
|
105
|
+
class="ins-recommendation-product-container
|
|
106
|
+
ins-recommendation-mobile-container"
|
|
107
|
+
width="100%"
|
|
108
|
+
cellpadding="0"
|
|
109
|
+
cellspacing="0"
|
|
110
|
+
border="0"
|
|
111
|
+
style="display: none;"
|
|
112
|
+
>
|
|
113
|
+
{-{-MOBILE_PRODUCT_ROWS-}-}
|
|
114
|
+
</table>
|
|
115
|
+
</td>
|
|
116
|
+
</tr>
|
|
101
117
|
</tbody>
|
|
102
118
|
</table>
|
|
103
119
|
</td>
|
|
@@ -107,11 +123,11 @@ function A(t = "grid", e) {
|
|
|
107
123
|
`;
|
|
108
124
|
}
|
|
109
125
|
export {
|
|
110
|
-
|
|
126
|
+
g as DEFAULTS,
|
|
111
127
|
u as DEFAULT_CARD_COMPOSITION,
|
|
112
128
|
b as DEFAULT_CARD_VISIBILITY,
|
|
113
129
|
d as PLACEHOLDER_IMAGE,
|
|
114
|
-
|
|
130
|
+
O as createBlockTemplate,
|
|
115
131
|
D as getDefaultProducts,
|
|
116
132
|
R as sanitizeImageUrl,
|
|
117
133
|
p as spacer
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ModuleFolderDefaults as n } from "../../enums/defaults.js";
|
|
2
|
+
import { ExtensionBuilder as t, BlocksPanel as r } from "../../node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js";
|
|
3
|
+
class u extends r {
|
|
4
|
+
getModulesTabIconName(o) {
|
|
5
|
+
const { key: e } = o, { SAVED_MODULES: l, DEFAULT_MODULES: s } = n;
|
|
6
|
+
if (e.includes(l))
|
|
7
|
+
return "user-profile";
|
|
8
|
+
if (e.includes(s))
|
|
9
|
+
return "modules";
|
|
10
|
+
if (e === "amp_modules")
|
|
11
|
+
return "mail-template";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const c = new t().withBlocksPanel(u).build();
|
|
15
|
+
export {
|
|
16
|
+
c as default
|
|
17
|
+
};
|
package/dist/guido.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{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-
|
|
1
|
+
.gap-16[data-v-6562e38c],.gap-16[data-v-1ccb6d4a]{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-17dd4d8b]{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-16abb398]{position:relative;width:100%;height:calc(100vh - 128px)}.guido-editor__container[data-v-16abb398]{width:100%;height:calc(100vh - 128px)}.guido-editor__no-header[data-v-16abb398]{height:calc(100vh - 75px)}[data-v-293f1c47] .in-breadcrumb-wrapper__links{cursor:pointer}.templates-wrapper[data-v-a86fc486]{gap:16px;grid-template-columns:repeat(3,1fr)}.templates-wrapper .template-wrapper[data-v-a86fc486]{cursor:pointer}.templates-wrapper .template-wrapper .template-container[data-v-a86fc486]{height:274px;padding:2px;transition:none}.templates-wrapper .template-wrapper .template-container.selected[data-v-a86fc486]{padding:1px}.templates-wrapper .template-wrapper .template-container .thumbnail[data-v-a86fc486]{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}
|