@brunoalz/smartgesti-site-editor 1.5.2 → 1.6.0
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/dist/editor/LandingPageEditor.d.ts.map +1 -1
- package/dist/editor/LandingPageEditor.js +199 -185
- package/dist/editor/LandingPageEditor.js.map +1 -1
- package/dist/editor/PropertyEditor/VariationSelector.d.ts +1 -1
- package/dist/editor/PropertyEditor/VariationSelector.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/VariationSelector.js +262 -93
- package/dist/editor/PropertyEditor/VariationSelector.js.map +1 -1
- package/dist/engine/export/exporters/layout/GridExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/layout/GridExporter.js +47 -31
- package/dist/engine/export/exporters/layout/GridExporter.js.map +1 -1
- package/dist/engine/export/exporters/layout/StackExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/layout/StackExporter.js +17 -16
- package/dist/engine/export/exporters/layout/StackExporter.js.map +1 -1
- package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts.map +1 -1
- package/dist/engine/export/exporters/sections/BlogPostExporters.js +246 -186
- package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -1
- package/dist/engine/plugins/builtin/blog/manifest.d.ts.map +1 -1
- package/dist/engine/plugins/builtin/blog/manifest.js +65 -47
- package/dist/engine/plugins/builtin/blog/manifest.js.map +1 -1
- package/dist/engine/presets/blogVariations.d.ts +51 -0
- package/dist/engine/presets/blogVariations.d.ts.map +1 -0
- package/dist/engine/presets/blogVariations.js +267 -0
- package/dist/engine/presets/blogVariations.js.map +1 -0
- package/dist/engine/registry/blocks/layout/grid.d.ts.map +1 -1
- package/dist/engine/registry/blocks/layout/grid.js +84 -42
- package/dist/engine/registry/blocks/layout/grid.js.map +1 -1
- package/dist/engine/registry/blocks/layout/stack.d.ts.map +1 -1
- package/dist/engine/registry/blocks/layout/stack.js +14 -13
- package/dist/engine/registry/blocks/layout/stack.js.map +1 -1
- package/dist/engine/registry/blocks/sections/blogCategoryFilter.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/blogCategoryFilter.js +62 -5
- package/dist/engine/registry/blocks/sections/blogCategoryFilter.js.map +1 -1
- package/dist/engine/registry/blocks/sections/blogPostDetail.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/blogPostDetail.js +16 -4
- package/dist/engine/registry/blocks/sections/blogPostDetail.js.map +1 -1
- package/dist/engine/registry/blocks/sections/blogRecentPosts.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/blogRecentPosts.js +62 -5
- package/dist/engine/registry/blocks/sections/blogRecentPosts.js.map +1 -1
- package/dist/engine/registry/blocks/sections/blogSearchBar.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/blogSearchBar.js +23 -1
- package/dist/engine/registry/blocks/sections/blogSearchBar.js.map +1 -1
- package/dist/engine/registry/blocks/sections/blogTagCloud.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/blogTagCloud.js +63 -6
- package/dist/engine/registry/blocks/sections/blogTagCloud.js.map +1 -1
- package/dist/engine/render/renderers/layout/GridRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/layout/GridRenderer.js +51 -18
- package/dist/engine/render/renderers/layout/GridRenderer.js.map +1 -1
- package/dist/engine/render/renderers/layout/StackRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/layout/StackRenderer.js +30 -25
- package/dist/engine/render/renderers/layout/StackRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/BlogCategoryFilterRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/BlogCategoryFilterRenderer.js +157 -132
- package/dist/engine/render/renderers/sections/BlogCategoryFilterRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js +17 -17
- package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.js +168 -136
- package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/BlogSearchBarRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/BlogSearchBarRenderer.js +59 -102
- package/dist/engine/render/renderers/sections/BlogSearchBarRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.js +158 -122
- package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.js.map +1 -1
- package/dist/engine/schema/siteDocument.d.ts +57 -1
- package/dist/engine/schema/siteDocument.d.ts.map +1 -1
- package/dist/engine/schema/siteDocument.js.map +1 -1
- package/dist/engine/shared/hoverEffects/colorUtils.d.ts +2 -1
- package/dist/engine/shared/hoverEffects/colorUtils.d.ts.map +1 -1
- package/dist/engine/shared/hoverEffects/colorUtils.js +16 -12
- package/dist/engine/shared/hoverEffects/colorUtils.js.map +1 -1
- package/dist/engine/shared/widgetStyles.d.ts +9 -0
- package/dist/engine/shared/widgetStyles.d.ts.map +1 -0
- package/dist/engine/shared/widgetStyles.js +13 -0
- package/dist/engine/shared/widgetStyles.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -71
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import { cn as
|
|
4
|
-
import { heroVariationIds as
|
|
5
|
-
import { navbarVariationIds as
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { jsxs as v, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import p from "react";
|
|
3
|
+
import { cn as b } from "../../utils/cn.js";
|
|
4
|
+
import { heroVariationIds as f, heroVariations as y } from "../../engine/presets/heroVariations.js";
|
|
5
|
+
import { navbarVariationIds as h, navbarVariations as x } from "../../engine/presets/navbarVariations.js";
|
|
6
|
+
import { blogPostCardVariations as E, blogPostCardVariationIds as C, blogPostDetailVariations as P, blogPostDetailVariationIds as R, blogCategoryFilterVariations as T, blogCategoryFilterVariationIds as V, blogSearchBarVariations as I, blogSearchBarVariationIds as _, blogRecentPostsVariations as S, blogRecentPostsVariationIds as k, blogTagCloudVariations as w, blogTagCloudVariationIds as B } from "../../engine/presets/blogVariations.js";
|
|
7
|
+
function r(s, o) {
|
|
8
|
+
return s[o] !== void 0 ? { [o]: s[o] } : {};
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
+
function A(s, o) {
|
|
11
|
+
const a = {};
|
|
12
|
+
for (const e of o)
|
|
13
|
+
s[e] !== void 0 && (a[e] = s[e]);
|
|
14
|
+
return a;
|
|
15
|
+
}
|
|
16
|
+
const G = {
|
|
10
17
|
// Variant e variation
|
|
11
18
|
variation: void 0,
|
|
12
19
|
variant: "centered",
|
|
@@ -60,7 +67,7 @@ const y = {
|
|
|
60
67
|
imageGridPreset: "four-equal",
|
|
61
68
|
imageGridImages: [],
|
|
62
69
|
imageGridGap: 8
|
|
63
|
-
},
|
|
70
|
+
}, O = {
|
|
64
71
|
variation: void 0,
|
|
65
72
|
layout: "expanded",
|
|
66
73
|
floating: !1,
|
|
@@ -91,93 +98,255 @@ const y = {
|
|
|
91
98
|
buttonHoverIntensity: 50,
|
|
92
99
|
buttonHoverOverlay: "none",
|
|
93
100
|
buttonHoverIconName: "arrow-right"
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
101
|
+
}, N = {
|
|
102
|
+
variation: void 0,
|
|
103
|
+
variant: "default",
|
|
104
|
+
showImage: !0,
|
|
105
|
+
showCategory: !0,
|
|
106
|
+
showDate: !0,
|
|
107
|
+
showAuthor: !1,
|
|
108
|
+
showReadingTime: !1
|
|
109
|
+
}, H = {
|
|
110
|
+
variation: void 0,
|
|
111
|
+
authorVariant: "inline",
|
|
112
|
+
showFeaturedImage: !0,
|
|
113
|
+
showAuthor: !0,
|
|
114
|
+
showDate: !0,
|
|
115
|
+
showTags: !0,
|
|
116
|
+
showReadingTime: !0,
|
|
117
|
+
contentMaxWidth: "720px"
|
|
118
|
+
}, g = {
|
|
119
|
+
variation: void 0,
|
|
120
|
+
variant: void 0,
|
|
121
|
+
borderRadius: "0.75rem",
|
|
122
|
+
shadow: "none",
|
|
123
|
+
showCount: !0,
|
|
124
|
+
showAll: !0,
|
|
125
|
+
showThumbnail: !0,
|
|
126
|
+
showDate: !0,
|
|
127
|
+
showCategory: !1,
|
|
128
|
+
showIcon: !0,
|
|
129
|
+
filterCategories: !1,
|
|
130
|
+
filterTags: !1,
|
|
131
|
+
filterDate: !1,
|
|
132
|
+
// Hover effects
|
|
133
|
+
linkColor: void 0,
|
|
134
|
+
linkHoverColor: void 0,
|
|
135
|
+
linkHoverEffect: "background",
|
|
136
|
+
linkHoverIntensity: 50
|
|
137
|
+
}, L = [
|
|
138
|
+
"title",
|
|
139
|
+
"excerpt",
|
|
140
|
+
"image",
|
|
141
|
+
"date",
|
|
142
|
+
"category",
|
|
143
|
+
"authorName",
|
|
144
|
+
"authorAvatar",
|
|
145
|
+
"readingTime",
|
|
146
|
+
"linkHref",
|
|
147
|
+
"linkText"
|
|
148
|
+
], D = [
|
|
149
|
+
"title",
|
|
150
|
+
"content",
|
|
151
|
+
"featuredImage",
|
|
152
|
+
"date",
|
|
153
|
+
"category",
|
|
154
|
+
"readingTime",
|
|
155
|
+
"tags",
|
|
156
|
+
"authorName",
|
|
157
|
+
"authorAvatar",
|
|
158
|
+
"authorBio"
|
|
159
|
+
], F = [
|
|
160
|
+
"title",
|
|
161
|
+
"categories",
|
|
162
|
+
"activeCategory",
|
|
163
|
+
"allLabel",
|
|
164
|
+
"filterUrl"
|
|
165
|
+
], K = [
|
|
166
|
+
"placeholder",
|
|
167
|
+
"searchUrl"
|
|
168
|
+
], W = [
|
|
169
|
+
"title",
|
|
170
|
+
"count",
|
|
171
|
+
"posts"
|
|
172
|
+
], z = [
|
|
173
|
+
"title",
|
|
174
|
+
"tags"
|
|
175
|
+
];
|
|
176
|
+
function u({
|
|
177
|
+
variationIds: s,
|
|
178
|
+
variations: o,
|
|
179
|
+
currentVariation: a,
|
|
180
|
+
resetProps: e,
|
|
181
|
+
preserveKeys: i,
|
|
182
|
+
props: n,
|
|
183
|
+
onUpdate: l
|
|
184
|
+
}) {
|
|
185
|
+
return /* @__PURE__ */ v("div", { className: "space-y-2", children: [
|
|
186
|
+
/* @__PURE__ */ t("h4", { className: "text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide", children: "Variações" }),
|
|
187
|
+
/* @__PURE__ */ t("div", { className: "grid grid-cols-2 gap-2", children: s.map((c) => {
|
|
188
|
+
const d = o[c];
|
|
189
|
+
return /* @__PURE__ */ t(
|
|
190
|
+
"button",
|
|
191
|
+
{
|
|
192
|
+
type: "button",
|
|
193
|
+
onClick: () => {
|
|
194
|
+
const m = {
|
|
195
|
+
...e,
|
|
196
|
+
...d.defaultProps,
|
|
197
|
+
...A(n, i)
|
|
198
|
+
};
|
|
199
|
+
l(m);
|
|
200
|
+
},
|
|
201
|
+
className: b(
|
|
202
|
+
"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all",
|
|
203
|
+
a === c ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700"
|
|
204
|
+
),
|
|
205
|
+
children: /* @__PURE__ */ t("span", { className: "text-xs font-medium text-gray-800 dark:text-gray-100", children: d.name })
|
|
206
|
+
},
|
|
207
|
+
c
|
|
208
|
+
);
|
|
209
|
+
}) })
|
|
210
|
+
] });
|
|
211
|
+
}
|
|
212
|
+
const X = p.memo(function({ block: o, onUpdate: a }) {
|
|
213
|
+
const e = o.props, i = e.variation;
|
|
214
|
+
return o.type === "hero" ? /* @__PURE__ */ v("div", { className: "space-y-2", children: [
|
|
215
|
+
/* @__PURE__ */ t("h4", { className: "text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide", children: "Variações" }),
|
|
216
|
+
/* @__PURE__ */ t("div", { className: "grid grid-cols-2 gap-2", children: f.map((n) => {
|
|
217
|
+
const l = y[n];
|
|
218
|
+
return /* @__PURE__ */ t(
|
|
219
|
+
"button",
|
|
220
|
+
{
|
|
221
|
+
type: "button",
|
|
222
|
+
onClick: () => {
|
|
223
|
+
const d = {
|
|
224
|
+
...G,
|
|
225
|
+
...l.defaultProps,
|
|
226
|
+
...r(e, "title"),
|
|
227
|
+
...r(e, "subtitle"),
|
|
228
|
+
...r(e, "description"),
|
|
229
|
+
...r(e, "badge"),
|
|
230
|
+
...r(e, "primaryButton"),
|
|
231
|
+
...r(e, "secondaryButton"),
|
|
232
|
+
...r(e, "image"),
|
|
233
|
+
...r(e, "imageGridEnabled"),
|
|
234
|
+
...r(e, "imageGridPreset"),
|
|
235
|
+
...r(e, "imageGridImages"),
|
|
236
|
+
...r(e, "imageGridGap"),
|
|
237
|
+
...r(e, "carouselImages"),
|
|
238
|
+
...r(e, "carouselInterval"),
|
|
239
|
+
...r(e, "carouselTransition")
|
|
240
|
+
};
|
|
241
|
+
a(d);
|
|
136
242
|
},
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
l(s);
|
|
166
|
-
},
|
|
167
|
-
className: u(
|
|
168
|
-
"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all",
|
|
169
|
-
d === a ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700"
|
|
170
|
-
),
|
|
171
|
-
children: /* @__PURE__ */ t("span", { className: "text-xs font-medium text-gray-800 dark:text-gray-100", children: i.name })
|
|
243
|
+
className: b(
|
|
244
|
+
"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all",
|
|
245
|
+
i === n ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700"
|
|
246
|
+
),
|
|
247
|
+
children: /* @__PURE__ */ t("span", { className: "text-xs font-medium text-gray-800 dark:text-gray-100", children: l.name })
|
|
248
|
+
},
|
|
249
|
+
n
|
|
250
|
+
);
|
|
251
|
+
}) })
|
|
252
|
+
] }) : o.type === "navbar" ? /* @__PURE__ */ v("div", { className: "space-y-2", children: [
|
|
253
|
+
/* @__PURE__ */ t("h4", { className: "text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide", children: "Variações" }),
|
|
254
|
+
/* @__PURE__ */ t("div", { className: "grid grid-cols-2 gap-2", children: h.map((n) => {
|
|
255
|
+
const l = x[n];
|
|
256
|
+
return /* @__PURE__ */ t(
|
|
257
|
+
"button",
|
|
258
|
+
{
|
|
259
|
+
type: "button",
|
|
260
|
+
onClick: () => {
|
|
261
|
+
const d = {
|
|
262
|
+
...O,
|
|
263
|
+
...l.defaultProps,
|
|
264
|
+
...r(e, "logo"),
|
|
265
|
+
...r(e, "logoText"),
|
|
266
|
+
...r(e, "logoHeight"),
|
|
267
|
+
...r(e, "links"),
|
|
268
|
+
...r(e, "ctaButton")
|
|
269
|
+
};
|
|
270
|
+
a(d);
|
|
172
271
|
},
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
272
|
+
className: b(
|
|
273
|
+
"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all",
|
|
274
|
+
i === n ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700"
|
|
275
|
+
),
|
|
276
|
+
children: /* @__PURE__ */ t("span", { className: "text-xs font-medium text-gray-800 dark:text-gray-100", children: l.name })
|
|
277
|
+
},
|
|
278
|
+
n
|
|
279
|
+
);
|
|
280
|
+
}) })
|
|
281
|
+
] }) : o.type === "blogPostCard" ? /* @__PURE__ */ t(
|
|
282
|
+
u,
|
|
283
|
+
{
|
|
284
|
+
variationIds: C,
|
|
285
|
+
variations: E,
|
|
286
|
+
currentVariation: i,
|
|
287
|
+
resetProps: N,
|
|
288
|
+
preserveKeys: L,
|
|
289
|
+
props: e,
|
|
290
|
+
onUpdate: a
|
|
291
|
+
}
|
|
292
|
+
) : o.type === "blogPostDetail" ? /* @__PURE__ */ t(
|
|
293
|
+
u,
|
|
294
|
+
{
|
|
295
|
+
variationIds: R,
|
|
296
|
+
variations: P,
|
|
297
|
+
currentVariation: i,
|
|
298
|
+
resetProps: H,
|
|
299
|
+
preserveKeys: D,
|
|
300
|
+
props: e,
|
|
301
|
+
onUpdate: a
|
|
302
|
+
}
|
|
303
|
+
) : o.type === "blogCategoryFilter" ? /* @__PURE__ */ t(
|
|
304
|
+
u,
|
|
305
|
+
{
|
|
306
|
+
variationIds: V,
|
|
307
|
+
variations: T,
|
|
308
|
+
currentVariation: i,
|
|
309
|
+
resetProps: g,
|
|
310
|
+
preserveKeys: F,
|
|
311
|
+
props: e,
|
|
312
|
+
onUpdate: a
|
|
313
|
+
}
|
|
314
|
+
) : o.type === "blogSearchBar" ? /* @__PURE__ */ t(
|
|
315
|
+
u,
|
|
316
|
+
{
|
|
317
|
+
variationIds: _,
|
|
318
|
+
variations: I,
|
|
319
|
+
currentVariation: i,
|
|
320
|
+
resetProps: g,
|
|
321
|
+
preserveKeys: K,
|
|
322
|
+
props: e,
|
|
323
|
+
onUpdate: a
|
|
324
|
+
}
|
|
325
|
+
) : o.type === "blogRecentPosts" ? /* @__PURE__ */ t(
|
|
326
|
+
u,
|
|
327
|
+
{
|
|
328
|
+
variationIds: k,
|
|
329
|
+
variations: S,
|
|
330
|
+
currentVariation: i,
|
|
331
|
+
resetProps: g,
|
|
332
|
+
preserveKeys: W,
|
|
333
|
+
props: e,
|
|
334
|
+
onUpdate: a
|
|
335
|
+
}
|
|
336
|
+
) : o.type === "blogTagCloud" ? /* @__PURE__ */ t(
|
|
337
|
+
u,
|
|
338
|
+
{
|
|
339
|
+
variationIds: B,
|
|
340
|
+
variations: w,
|
|
341
|
+
currentVariation: i,
|
|
342
|
+
resetProps: g,
|
|
343
|
+
preserveKeys: z,
|
|
344
|
+
props: e,
|
|
345
|
+
onUpdate: a
|
|
346
|
+
}
|
|
347
|
+
) : null;
|
|
179
348
|
});
|
|
180
349
|
export {
|
|
181
|
-
|
|
350
|
+
X as VariationSelector
|
|
182
351
|
};
|
|
183
352
|
//# sourceMappingURL=VariationSelector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariationSelector.js","sources":["../../../src/editor/PropertyEditor/VariationSelector.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Block } from \"../../engine\";\nimport {\n heroVariations,\n heroVariationIds,\n} from \"../../engine/presets/heroVariations\";\nimport {\n navbarVariations,\n navbarVariationIds,\n} from \"../../engine/presets/navbarVariations\";\n\ninterface VariationSelectorProps {\n block: Block;\n onUpdate: (updates: Record<string, any>) => void;\n}\n\n/**\n * Helper para preservar um valor se ele existir (não undefined)\n */\nfunction preserveIfDefined(obj: Record<string, any>, key: string): Record<string, any> {\n return obj[key] !== undefined ? { [key]: obj[key] } : {};\n}\n\n/**\n * Props visuais do Hero que DEVEM ser resetadas ao trocar de variação\n * para evitar \"vazamento\" de estilos entre variações\n */\nconst HERO_VISUAL_PROPS_TO_RESET: Record<string, any> = {\n // Variant e variation\n variation: undefined,\n variant: \"centered\",\n // Layout\n align: \"center\",\n contentPosition: \"center\",\n contentSpacing: \"default\",\n blockGap: \"default\",\n minHeight: \"70vh\",\n contentMaxWidth: \"700px\",\n paddingY: undefined,\n // Background & Overlay\n background: undefined,\n overlay: false,\n overlayColor: undefined,\n // Typography colors (legacy)\n titleColor: undefined,\n subtitleColor: undefined,\n descriptionColor: undefined,\n // Typography config (novo sistema)\n titleTypography: undefined,\n subtitleTypography: undefined,\n descriptionTypography: undefined,\n // Badge styling\n badgeColor: undefined,\n badgeTextColor: undefined,\n // Image styling\n imageRadius: 16,\n imageShadow: \"lg\",\n imagePosition: \"right\",\n // Button styling\n buttonSize: \"md\",\n primaryButtonVariant: \"solid\",\n primaryButtonColor: undefined,\n primaryButtonTextColor: undefined,\n primaryButtonRadius: 8,\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: undefined,\n secondaryButtonTextColor: undefined,\n secondaryButtonRadius: 8,\n // Button hover\n buttonHoverEffect: \"scale\",\n buttonHoverIntensity: 50,\n buttonHoverOverlay: \"none\",\n buttonHoverIconName: \"arrow-right\",\n // Decorative\n showWave: false,\n waveColor: \"rgba(255,255,255,0.1)\",\n // Image Grid\n imageGridEnabled: false,\n imageGridPreset: \"four-equal\",\n imageGridImages: [],\n imageGridGap: 8,\n};\n\n/**\n * Props visuais da Navbar que DEVEM ser resetadas ao trocar de variação\n */\nconst NAVBAR_VISUAL_PROPS_TO_RESET: Record<string, any> = {\n variation: undefined,\n layout: \"expanded\",\n floating: false,\n sticky: true,\n // Aparência\n bg: \"#ffffff\",\n opacity: 100,\n blurOpacity: 0,\n borderRadius: 0,\n shadow: \"sm\",\n // Borda\n borderPosition: \"none\",\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n // Links\n linkColor: \"#374151\",\n linkHoverColor: \"#2563eb\",\n linkFontSize: \"md\",\n linkHoverEffect: \"background\",\n linkHoverIntensity: 50,\n // Botão\n buttonVariant: \"solid\",\n buttonColor: \"#2563eb\",\n buttonTextColor: \"#ffffff\",\n buttonBorderRadius: 8,\n buttonSize: \"md\",\n buttonHoverEffect: \"darken\",\n buttonHoverIntensity: 50,\n buttonHoverOverlay: \"none\",\n buttonHoverIconName: \"arrow-right\",\n};\n\n/**\n * Componente para selecionar variações de Hero e Navbar\n * Preserva props customizadas ao trocar variação\n */\nexport const VariationSelector = React.memo(function VariationSelector({ block, onUpdate }: VariationSelectorProps) {\n // Hero variations\n if (block.type === \"hero\") {\n const props = block.props as Record<string, any>;\n const currentVariation = props.variation;\n\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide\">\n Variações\n </h4>\n <div className=\"grid grid-cols-2 gap-2\">\n {heroVariationIds.map((id) => {\n const v = heroVariations[id];\n const isActive = currentVariation === id;\n return (\n <button\n key={id}\n type=\"button\"\n onClick={() => {\n // IMPORTANTE: Ao trocar variação:\n // 1. Primeiro RESETA todas as props visuais para valores padrão\n // 2. Depois aplica os defaults da nova variação\n // 3. Por fim preserva o conteúdo do usuário\n\n const newProps = {\n // 1. RESET: Limpa todas as props visuais para evitar vazamento\n ...HERO_VISUAL_PROPS_TO_RESET,\n\n // 2. Aplica os defaults da nova variação\n ...v.defaultProps,\n\n // 3. Preserva APENAS o conteúdo editado pelo usuário\n ...preserveIfDefined(props, \"title\"),\n ...preserveIfDefined(props, \"subtitle\"),\n ...preserveIfDefined(props, \"description\"),\n ...preserveIfDefined(props, \"badge\"),\n ...preserveIfDefined(props, \"primaryButton\"),\n ...preserveIfDefined(props, \"secondaryButton\"),\n ...preserveIfDefined(props, \"image\"),\n\n // 4. Preserva configuração da Image Grid\n ...preserveIfDefined(props, \"imageGridEnabled\"),\n ...preserveIfDefined(props, \"imageGridPreset\"),\n ...preserveIfDefined(props, \"imageGridImages\"),\n ...preserveIfDefined(props, \"imageGridGap\"),\n\n // 5. Preserva configuração do Carousel\n ...preserveIfDefined(props, \"carouselImages\"),\n ...preserveIfDefined(props, \"carouselInterval\"),\n ...preserveIfDefined(props, \"carouselTransition\"),\n };\n\n onUpdate(newProps);\n }}\n className={cn(\n \"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all\",\n isActive\n ? \"border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\n : \"border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700\",\n )}\n >\n <span className=\"text-xs font-medium text-gray-800 dark:text-gray-100\">\n {v.name}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n // Navbar variations\n if (block.type === \"navbar\") {\n const props = block.props as Record<string, any>;\n const currentVariation = props.variation;\n\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide\">\n Variações\n </h4>\n <div className=\"grid grid-cols-2 gap-2\">\n {navbarVariationIds.map((id) => {\n const v = navbarVariations[id];\n const isActive = currentVariation === id;\n return (\n <button\n key={id}\n type=\"button\"\n onClick={() => {\n // IMPORTANTE: Ao trocar variação:\n // 1. Primeiro RESETA todas as props visuais para valores padrão\n // 2. Depois aplica os defaults da nova variação\n // 3. Por fim preserva o conteúdo do usuário\n\n const newProps = {\n // 1. RESET: Limpa todas as props visuais para evitar vazamento\n ...NAVBAR_VISUAL_PROPS_TO_RESET,\n\n // 2. Aplica os defaults da nova variação\n ...v.defaultProps,\n\n // 3. Preserva APENAS o conteúdo editado pelo usuário\n ...preserveIfDefined(props, \"logo\"),\n ...preserveIfDefined(props, \"logoText\"),\n ...preserveIfDefined(props, \"logoHeight\"),\n ...preserveIfDefined(props, \"links\"),\n ...preserveIfDefined(props, \"ctaButton\"),\n };\n\n onUpdate(newProps);\n }}\n className={cn(\n \"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all\",\n isActive\n ? \"border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\n : \"border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700\",\n )}\n >\n <span className=\"text-xs font-medium text-gray-800 dark:text-gray-100\">\n {v.name}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n return null;\n});\n"],"names":["preserveIfDefined","obj","key","HERO_VISUAL_PROPS_TO_RESET","NAVBAR_VISUAL_PROPS_TO_RESET","VariationSelector","React","block","onUpdate","props","currentVariation","jsxs","jsx","heroVariationIds","id","v","heroVariations","newProps","cn","navbarVariationIds","navbarVariations"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VariationSelector.js","sources":["../../../src/editor/PropertyEditor/VariationSelector.tsx"],"sourcesContent":["import React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Block } from \"../../engine\";\nimport {\n heroVariations,\n heroVariationIds,\n} from \"../../engine/presets/heroVariations\";\nimport {\n navbarVariations,\n navbarVariationIds,\n} from \"../../engine/presets/navbarVariations\";\nimport {\n blogPostCardVariations,\n blogPostCardVariationIds,\n blogPostDetailVariations,\n blogPostDetailVariationIds,\n blogCategoryFilterVariations,\n blogCategoryFilterVariationIds,\n blogSearchBarVariations,\n blogSearchBarVariationIds,\n blogRecentPostsVariations,\n blogRecentPostsVariationIds,\n blogTagCloudVariations,\n blogTagCloudVariationIds,\n} from \"../../engine/presets/blogVariations\";\n\ninterface VariationSelectorProps {\n block: Block;\n onUpdate: (updates: Record<string, any>) => void;\n}\n\n/**\n * Helper para preservar um valor se ele existir (não undefined)\n */\nfunction preserveIfDefined(obj: Record<string, any>, key: string): Record<string, any> {\n return obj[key] !== undefined ? { [key]: obj[key] } : {};\n}\n\n/**\n * Preserva múltiplas props de uma vez\n */\nfunction preserveMany(obj: Record<string, any>, keys: string[]): Record<string, any> {\n const result: Record<string, any> = {};\n for (const key of keys) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * Props visuais do Hero que DEVEM ser resetadas ao trocar de variação\n * para evitar \"vazamento\" de estilos entre variações\n */\nconst HERO_VISUAL_PROPS_TO_RESET: Record<string, any> = {\n // Variant e variation\n variation: undefined,\n variant: \"centered\",\n // Layout\n align: \"center\",\n contentPosition: \"center\",\n contentSpacing: \"default\",\n blockGap: \"default\",\n minHeight: \"70vh\",\n contentMaxWidth: \"700px\",\n paddingY: undefined,\n // Background & Overlay\n background: undefined,\n overlay: false,\n overlayColor: undefined,\n // Typography colors (legacy)\n titleColor: undefined,\n subtitleColor: undefined,\n descriptionColor: undefined,\n // Typography config (novo sistema)\n titleTypography: undefined,\n subtitleTypography: undefined,\n descriptionTypography: undefined,\n // Badge styling\n badgeColor: undefined,\n badgeTextColor: undefined,\n // Image styling\n imageRadius: 16,\n imageShadow: \"lg\",\n imagePosition: \"right\",\n // Button styling\n buttonSize: \"md\",\n primaryButtonVariant: \"solid\",\n primaryButtonColor: undefined,\n primaryButtonTextColor: undefined,\n primaryButtonRadius: 8,\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: undefined,\n secondaryButtonTextColor: undefined,\n secondaryButtonRadius: 8,\n // Button hover\n buttonHoverEffect: \"scale\",\n buttonHoverIntensity: 50,\n buttonHoverOverlay: \"none\",\n buttonHoverIconName: \"arrow-right\",\n // Decorative\n showWave: false,\n waveColor: \"rgba(255,255,255,0.1)\",\n // Image Grid\n imageGridEnabled: false,\n imageGridPreset: \"four-equal\",\n imageGridImages: [],\n imageGridGap: 8,\n};\n\n/**\n * Props visuais da Navbar que DEVEM ser resetadas ao trocar de variação\n */\nconst NAVBAR_VISUAL_PROPS_TO_RESET: Record<string, any> = {\n variation: undefined,\n layout: \"expanded\",\n floating: false,\n sticky: true,\n // Aparência\n bg: \"#ffffff\",\n opacity: 100,\n blurOpacity: 0,\n borderRadius: 0,\n shadow: \"sm\",\n // Borda\n borderPosition: \"none\",\n borderWidth: 1,\n borderColor: \"#e5e7eb\",\n // Links\n linkColor: \"#374151\",\n linkHoverColor: \"#2563eb\",\n linkFontSize: \"md\",\n linkHoverEffect: \"background\",\n linkHoverIntensity: 50,\n // Botão\n buttonVariant: \"solid\",\n buttonColor: \"#2563eb\",\n buttonTextColor: \"#ffffff\",\n buttonBorderRadius: 8,\n buttonSize: \"md\",\n buttonHoverEffect: \"darken\",\n buttonHoverIntensity: 50,\n buttonHoverOverlay: \"none\",\n buttonHoverIconName: \"arrow-right\",\n};\n\n// ---------------------------------------------------------------------------\n// Blog visual props to reset\n// ---------------------------------------------------------------------------\n\nconst BLOG_POST_CARD_VISUAL_RESET: Record<string, any> = {\n variation: undefined,\n variant: \"default\",\n showImage: true,\n showCategory: true,\n showDate: true,\n showAuthor: false,\n showReadingTime: false,\n};\n\nconst BLOG_POST_DETAIL_VISUAL_RESET: Record<string, any> = {\n variation: undefined,\n authorVariant: \"inline\",\n showFeaturedImage: true,\n showAuthor: true,\n showDate: true,\n showTags: true,\n showReadingTime: true,\n contentMaxWidth: \"720px\",\n};\n\nconst BLOG_WIDGET_VISUAL_RESET: Record<string, any> = {\n variation: undefined,\n variant: undefined,\n borderRadius: \"0.75rem\",\n shadow: \"none\",\n showCount: true,\n showAll: true,\n showThumbnail: true,\n showDate: true,\n showCategory: false,\n showIcon: true,\n filterCategories: false,\n filterTags: false,\n filterDate: false,\n // Hover effects\n linkColor: undefined,\n linkHoverColor: undefined,\n linkHoverEffect: \"background\",\n linkHoverIntensity: 50,\n};\n\n// ---------------------------------------------------------------------------\n// User-content fields to preserve (per block type)\n// ---------------------------------------------------------------------------\n\nconst BLOG_POST_CARD_PRESERVE = [\n \"title\", \"excerpt\", \"image\", \"date\", \"category\",\n \"authorName\", \"authorAvatar\", \"readingTime\",\n \"linkHref\", \"linkText\",\n];\n\nconst BLOG_POST_DETAIL_PRESERVE = [\n \"title\", \"content\", \"featuredImage\", \"date\", \"category\",\n \"readingTime\", \"tags\", \"authorName\", \"authorAvatar\", \"authorBio\",\n];\n\nconst BLOG_CATEGORY_FILTER_PRESERVE = [\n \"title\", \"categories\", \"activeCategory\", \"allLabel\", \"filterUrl\",\n];\n\nconst BLOG_SEARCH_BAR_PRESERVE = [\n \"placeholder\", \"searchUrl\",\n];\n\nconst BLOG_RECENT_POSTS_PRESERVE = [\n \"title\", \"count\", \"posts\",\n];\n\nconst BLOG_TAG_CLOUD_PRESERVE = [\n \"title\", \"tags\",\n];\n\n// ---------------------------------------------------------------------------\n// Generic variation grid renderer\n// ---------------------------------------------------------------------------\n\nfunction VariationGrid({\n variationIds,\n variations,\n currentVariation,\n resetProps,\n preserveKeys,\n props,\n onUpdate,\n}: {\n variationIds: string[];\n variations: Record<string, { id: string; name: string; defaultProps: Record<string, any> }>;\n currentVariation: string | undefined;\n resetProps: Record<string, any>;\n preserveKeys: string[];\n props: Record<string, any>;\n onUpdate: (updates: Record<string, any>) => void;\n}) {\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide\">\n Variações\n </h4>\n <div className=\"grid grid-cols-2 gap-2\">\n {variationIds.map((id) => {\n const v = variations[id];\n const isActive = currentVariation === id;\n return (\n <button\n key={id}\n type=\"button\"\n onClick={() => {\n const newProps = {\n ...resetProps,\n ...v.defaultProps,\n ...preserveMany(props, preserveKeys),\n };\n onUpdate(newProps);\n }}\n className={cn(\n \"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all\",\n isActive\n ? \"border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\n : \"border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700\",\n )}\n >\n <span className=\"text-xs font-medium text-gray-800 dark:text-gray-100\">\n {v.name}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\n/**\n * Componente para selecionar variações de blocos\n * Preserva props customizadas ao trocar variação\n */\nexport const VariationSelector = React.memo(function VariationSelector({ block, onUpdate }: VariationSelectorProps) {\n const props = block.props as Record<string, any>;\n const currentVariation = props.variation;\n\n // Hero variations\n if (block.type === \"hero\") {\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide\">\n Variações\n </h4>\n <div className=\"grid grid-cols-2 gap-2\">\n {heroVariationIds.map((id) => {\n const v = heroVariations[id];\n const isActive = currentVariation === id;\n return (\n <button\n key={id}\n type=\"button\"\n onClick={() => {\n const newProps = {\n ...HERO_VISUAL_PROPS_TO_RESET,\n ...v.defaultProps,\n ...preserveIfDefined(props, \"title\"),\n ...preserveIfDefined(props, \"subtitle\"),\n ...preserveIfDefined(props, \"description\"),\n ...preserveIfDefined(props, \"badge\"),\n ...preserveIfDefined(props, \"primaryButton\"),\n ...preserveIfDefined(props, \"secondaryButton\"),\n ...preserveIfDefined(props, \"image\"),\n ...preserveIfDefined(props, \"imageGridEnabled\"),\n ...preserveIfDefined(props, \"imageGridPreset\"),\n ...preserveIfDefined(props, \"imageGridImages\"),\n ...preserveIfDefined(props, \"imageGridGap\"),\n ...preserveIfDefined(props, \"carouselImages\"),\n ...preserveIfDefined(props, \"carouselInterval\"),\n ...preserveIfDefined(props, \"carouselTransition\"),\n };\n onUpdate(newProps);\n }}\n className={cn(\n \"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all\",\n isActive\n ? \"border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\n : \"border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700\",\n )}\n >\n <span className=\"text-xs font-medium text-gray-800 dark:text-gray-100\">\n {v.name}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n // Navbar variations\n if (block.type === \"navbar\") {\n return (\n <div className=\"space-y-2\">\n <h4 className=\"text-xs font-semibold text-gray-600 dark:text-gray-400 uppercase tracking-wide\">\n Variações\n </h4>\n <div className=\"grid grid-cols-2 gap-2\">\n {navbarVariationIds.map((id) => {\n const v = navbarVariations[id];\n const isActive = currentVariation === id;\n return (\n <button\n key={id}\n type=\"button\"\n onClick={() => {\n const newProps = {\n ...NAVBAR_VISUAL_PROPS_TO_RESET,\n ...v.defaultProps,\n ...preserveIfDefined(props, \"logo\"),\n ...preserveIfDefined(props, \"logoText\"),\n ...preserveIfDefined(props, \"logoHeight\"),\n ...preserveIfDefined(props, \"links\"),\n ...preserveIfDefined(props, \"ctaButton\"),\n };\n onUpdate(newProps);\n }}\n className={cn(\n \"flex items-center gap-2 p-2 rounded-lg border-2 text-left transition-all\",\n isActive\n ? \"border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\n : \"border-gray-200 dark:border-gray-600 hover:border-blue-300 dark:hover:border-blue-700\",\n )}\n >\n <span className=\"text-xs font-medium text-gray-800 dark:text-gray-100\">\n {v.name}\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n // Blog Post Card variations\n if (block.type === \"blogPostCard\") {\n return (\n <VariationGrid\n variationIds={blogPostCardVariationIds}\n variations={blogPostCardVariations}\n currentVariation={currentVariation}\n resetProps={BLOG_POST_CARD_VISUAL_RESET}\n preserveKeys={BLOG_POST_CARD_PRESERVE}\n props={props}\n onUpdate={onUpdate}\n />\n );\n }\n\n // Blog Post Detail variations\n if (block.type === \"blogPostDetail\") {\n return (\n <VariationGrid\n variationIds={blogPostDetailVariationIds}\n variations={blogPostDetailVariations}\n currentVariation={currentVariation}\n resetProps={BLOG_POST_DETAIL_VISUAL_RESET}\n preserveKeys={BLOG_POST_DETAIL_PRESERVE}\n props={props}\n onUpdate={onUpdate}\n />\n );\n }\n\n // Blog Category Filter variations\n if (block.type === \"blogCategoryFilter\") {\n return (\n <VariationGrid\n variationIds={blogCategoryFilterVariationIds}\n variations={blogCategoryFilterVariations}\n currentVariation={currentVariation}\n resetProps={BLOG_WIDGET_VISUAL_RESET}\n preserveKeys={BLOG_CATEGORY_FILTER_PRESERVE}\n props={props}\n onUpdate={onUpdate}\n />\n );\n }\n\n // Blog Search Bar variations\n if (block.type === \"blogSearchBar\") {\n return (\n <VariationGrid\n variationIds={blogSearchBarVariationIds}\n variations={blogSearchBarVariations}\n currentVariation={currentVariation}\n resetProps={BLOG_WIDGET_VISUAL_RESET}\n preserveKeys={BLOG_SEARCH_BAR_PRESERVE}\n props={props}\n onUpdate={onUpdate}\n />\n );\n }\n\n // Blog Recent Posts variations\n if (block.type === \"blogRecentPosts\") {\n return (\n <VariationGrid\n variationIds={blogRecentPostsVariationIds}\n variations={blogRecentPostsVariations}\n currentVariation={currentVariation}\n resetProps={BLOG_WIDGET_VISUAL_RESET}\n preserveKeys={BLOG_RECENT_POSTS_PRESERVE}\n props={props}\n onUpdate={onUpdate}\n />\n );\n }\n\n // Blog Tag Cloud variations\n if (block.type === \"blogTagCloud\") {\n return (\n <VariationGrid\n variationIds={blogTagCloudVariationIds}\n variations={blogTagCloudVariations}\n currentVariation={currentVariation}\n resetProps={BLOG_WIDGET_VISUAL_RESET}\n preserveKeys={BLOG_TAG_CLOUD_PRESERVE}\n props={props}\n onUpdate={onUpdate}\n />\n );\n }\n\n return null;\n});\n"],"names":["preserveIfDefined","obj","key","preserveMany","keys","result","HERO_VISUAL_PROPS_TO_RESET","NAVBAR_VISUAL_PROPS_TO_RESET","BLOG_POST_CARD_VISUAL_RESET","BLOG_POST_DETAIL_VISUAL_RESET","BLOG_WIDGET_VISUAL_RESET","BLOG_POST_CARD_PRESERVE","BLOG_POST_DETAIL_PRESERVE","BLOG_CATEGORY_FILTER_PRESERVE","BLOG_SEARCH_BAR_PRESERVE","BLOG_RECENT_POSTS_PRESERVE","BLOG_TAG_CLOUD_PRESERVE","VariationGrid","variationIds","variations","currentVariation","resetProps","preserveKeys","props","onUpdate","jsxs","jsx","id","v","newProps","cn","VariationSelector","React","block","heroVariationIds","heroVariations","navbarVariationIds","navbarVariations","blogPostCardVariationIds","blogPostCardVariations","blogPostDetailVariationIds","blogPostDetailVariations","blogCategoryFilterVariationIds","blogCategoryFilterVariations","blogSearchBarVariationIds","blogSearchBarVariations","blogRecentPostsVariationIds","blogRecentPostsVariations","blogTagCloudVariationIds","blogTagCloudVariations"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridExporter.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/layout/GridExporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS1D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,GAC7F,MAAM,
|
|
1
|
+
{"version":3,"file":"GridExporter.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/layout/GridExporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAS1D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,GAC7F,MAAM,CA6GR"}
|
|
@@ -1,37 +1,53 @@
|
|
|
1
|
-
import { dataBlockIdAttr as
|
|
2
|
-
import { generateGridId as
|
|
3
|
-
import { resolveResponsiveColumns as
|
|
4
|
-
function
|
|
5
|
-
const {
|
|
6
|
-
|
|
1
|
+
import { dataBlockIdAttr as w } from "../../shared/htmlHelpers.js";
|
|
2
|
+
import { generateGridId as H } from "../../shared/idGenerator.js";
|
|
3
|
+
import { resolveResponsiveColumns as O, generateResponsiveGridStyles as R, BREAKPOINTS as T } from "../../shared/responsiveGridHelper.js";
|
|
4
|
+
function N(o, I, k, B, l) {
|
|
5
|
+
const {
|
|
6
|
+
cols: n = 2,
|
|
7
|
+
colTemplate: u,
|
|
8
|
+
gap: c = "2.5rem",
|
|
9
|
+
maxWidth: m,
|
|
10
|
+
padding: s,
|
|
11
|
+
paddingTop: $,
|
|
12
|
+
paddingBottom: h,
|
|
13
|
+
contentPosition: f = "center",
|
|
14
|
+
bg: d,
|
|
15
|
+
bgImage: t,
|
|
16
|
+
bgOverlay: G,
|
|
17
|
+
bgOverlayColor: z = "rgba(0,0,0,0.5)",
|
|
18
|
+
bgGradient: a,
|
|
19
|
+
children: P = []
|
|
20
|
+
} = o.props;
|
|
21
|
+
if (!l)
|
|
7
22
|
throw new Error("exportGrid requires renderChild function");
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const r = H(o.id || ""), v = P.map((g) => l(g, I + 1, k, B)).join(""), i = [
|
|
24
|
+
"display: grid",
|
|
25
|
+
`gap: ${c}`,
|
|
26
|
+
"box-sizing: border-box",
|
|
27
|
+
"width: 100%"
|
|
28
|
+
];
|
|
29
|
+
m && (i.push(`max-width: ${m}`), f === "left" ? i.push("margin-right: auto") : f === "right" ? i.push("margin-left: auto") : (i.push("margin-left: auto"), i.push("margin-right: auto"))), s && (i.push(`padding-left: ${s}`), i.push(`padding-right: ${s}`)), $ && i.push(`padding-top: ${$}`), h && i.push(`padding-bottom: ${h}`);
|
|
30
|
+
const b = i.join("; "), S = d || t || a;
|
|
31
|
+
let p = "";
|
|
32
|
+
if (u)
|
|
33
|
+
p = `
|
|
34
|
+
#${r} { grid-template-columns: 1fr; }
|
|
35
|
+
@media (min-width: ${T.md}) {
|
|
36
|
+
#${r} { grid-template-columns: ${u}; }
|
|
37
|
+
}`.trim();
|
|
38
|
+
else {
|
|
39
|
+
const g = O(n, 1, 2, typeof n == "number" ? n : 2);
|
|
40
|
+
p = R(r, g, c).mediaQueries;
|
|
26
41
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
),
|
|
32
|
-
|
|
42
|
+
const y = `<style>${p}</style>`, j = `<div id="${r}" ${w(o.id)} style="${b}">${v}</div>`;
|
|
43
|
+
if (!S)
|
|
44
|
+
return `${y}${j}`;
|
|
45
|
+
const e = ["width: 100%", "position: relative"];
|
|
46
|
+
d && e.push(`background-color: ${d}`), t && (e.push(`background-image: url(${t})`), e.push("background-size: cover"), e.push("background-position: center"), e.push("background-repeat: no-repeat")), a && !t && e.push(`background: ${a}`);
|
|
47
|
+
const C = e.join("; "), x = t && G ? `<div style="position:absolute;inset:0;background-color:${z};z-index:0;"></div>` : "", E = x ? " position: relative; z-index: 1;" : "";
|
|
48
|
+
return `${y}<div style="${C}">${x}<div id="${r}" ${w(o.id)} style="${b};${E}">${v}</div></div>`;
|
|
33
49
|
}
|
|
34
50
|
export {
|
|
35
|
-
|
|
51
|
+
N as exportGrid
|
|
36
52
|
};
|
|
37
53
|
//# sourceMappingURL=GridExporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridExporter.js","sources":["../../../../../src/engine/export/exporters/layout/GridExporter.ts"],"sourcesContent":["/**\n * Grid Block Exporter\n *
|
|
1
|
+
{"version":3,"file":"GridExporter.js","sources":["../../../../../src/engine/export/exporters/layout/GridExporter.ts"],"sourcesContent":["/**\n * Grid Block Exporter\n * Full-width outer wrapper for background effects (color, image, gradient, overlay)\n * Inner grid constrained by maxWidth\n * Responsive: colTemplate collapses to 1fr on mobile\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { dataBlockIdAttr } from \"../../shared/htmlHelpers\";\nimport { generateGridId } from \"../../shared/idGenerator\";\nimport {\n resolveResponsiveColumns,\n generateResponsiveGridStyles,\n BREAKPOINTS,\n} from \"../../shared/responsiveGridHelper\";\n\nexport function exportGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n cols = 2,\n colTemplate,\n gap = \"2.5rem\",\n maxWidth,\n padding,\n paddingTop,\n paddingBottom,\n contentPosition = \"center\",\n bg,\n bgImage,\n bgOverlay,\n bgOverlayColor = \"rgba(0,0,0,0.5)\",\n bgGradient,\n children = [],\n } = (block as any).props;\n\n if (!renderChild) {\n throw new Error(\"exportGrid requires renderChild function\");\n }\n\n const gridId = generateGridId(block.id || \"\");\n\n const childrenHtml = children\n .map((c: Block) => renderChild(c, depth + 1, basePath, theme))\n .join(\"\");\n\n // Inner grid styles\n const gridParts: string[] = [\n \"display: grid\",\n `gap: ${gap}`,\n \"box-sizing: border-box\",\n \"width: 100%\",\n ];\n\n if (maxWidth) {\n gridParts.push(`max-width: ${maxWidth}`);\n if (contentPosition === \"left\") {\n gridParts.push(\"margin-right: auto\");\n } else if (contentPosition === \"right\") {\n gridParts.push(\"margin-left: auto\");\n } else {\n gridParts.push(\"margin-left: auto\");\n gridParts.push(\"margin-right: auto\");\n }\n }\n if (padding) {\n gridParts.push(`padding-left: ${padding}`);\n gridParts.push(`padding-right: ${padding}`);\n }\n if (paddingTop) {\n gridParts.push(`padding-top: ${paddingTop}`);\n }\n if (paddingBottom) {\n gridParts.push(`padding-bottom: ${paddingBottom}`);\n }\n\n const gridInlineStyle = gridParts.join(\"; \");\n\n // Check if we need an outer wrapper\n const hasBgEffects = bg || bgImage || bgGradient;\n\n // Media queries for responsive columns\n let mediaQueries = \"\";\n if (colTemplate) {\n mediaQueries = `\n #${gridId} { grid-template-columns: 1fr; }\n @media (min-width: ${BREAKPOINTS.md}) {\n #${gridId} { grid-template-columns: ${colTemplate}; }\n }`.trim();\n } else {\n const responsiveConfig = resolveResponsiveColumns(cols, 1, 2, typeof cols === \"number\" ? cols : 2);\n const result = generateResponsiveGridStyles(gridId, responsiveConfig, gap);\n mediaQueries = result.mediaQueries;\n }\n\n const styleBlock = `<style>${mediaQueries}</style>`;\n const gridHtml = `<div id=\"${gridId}\" ${dataBlockIdAttr(block.id)} style=\"${gridInlineStyle}\">${childrenHtml}</div>`;\n\n if (!hasBgEffects) {\n return `${styleBlock}${gridHtml}`;\n }\n\n // Full-width wrapper for background effects\n const wrapperParts: string[] = [\"width: 100%\", \"position: relative\"];\n if (bg) {\n wrapperParts.push(`background-color: ${bg}`);\n }\n if (bgImage) {\n wrapperParts.push(`background-image: url(${bgImage})`);\n wrapperParts.push(\"background-size: cover\");\n wrapperParts.push(\"background-position: center\");\n wrapperParts.push(\"background-repeat: no-repeat\");\n }\n if (bgGradient && !bgImage) {\n wrapperParts.push(`background: ${bgGradient}`);\n }\n const wrapperStyle = wrapperParts.join(\"; \");\n\n // Overlay\n const overlayHtml = bgImage && bgOverlay\n ? `<div style=\"position:absolute;inset:0;background-color:${bgOverlayColor};z-index:0;\"></div>`\n : \"\";\n\n // If overlay, grid needs z-index\n const gridZIndex = overlayHtml ? \" position: relative; z-index: 1;\" : \"\";\n\n return `${styleBlock}<div style=\"${wrapperStyle}\">${overlayHtml}<div id=\"${gridId}\" ${dataBlockIdAttr(block.id)} style=\"${gridInlineStyle};${gridZIndex}\">${childrenHtml}</div></div>`;\n}\n"],"names":["exportGrid","block","depth","basePath","theme","renderChild","cols","colTemplate","gap","maxWidth","padding","paddingTop","paddingBottom","contentPosition","bg","bgImage","bgOverlay","bgOverlayColor","bgGradient","children","gridId","generateGridId","childrenHtml","c","gridParts","gridInlineStyle","hasBgEffects","mediaQueries","BREAKPOINTS","responsiveConfig","resolveResponsiveColumns","generateResponsiveGridStyles","styleBlock","gridHtml","dataBlockIdAttr","wrapperParts","wrapperStyle","overlayHtml","gridZIndex"],"mappings":";;;AAiBO,SAASA,EACdC,GACAC,GACAC,GACAC,GACAC,GACQ;AACR,QAAM;AAAA,IACJ,MAAAC,IAAO;AAAA,IACP,aAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,IAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAC,IAAiB;AAAA,IACjB,YAAAC;AAAA,IACA,UAAAC,IAAW,CAAA;AAAA,EAAC,IACTlB,EAAc;AAEnB,MAAI,CAACI;AACH,UAAM,IAAI,MAAM,0CAA0C;AAG5D,QAAMe,IAASC,EAAepB,EAAM,MAAM,EAAE,GAEtCqB,IAAeH,EAClB,IAAI,CAACI,MAAalB,EAAYkB,GAAGrB,IAAQ,GAAGC,GAAUC,CAAK,CAAC,EAC5D,KAAK,EAAE,GAGJoB,IAAsB;AAAA,IAC1B;AAAA,IACA,QAAQhB,CAAG;AAAA,IACX;AAAA,IACA;AAAA,EAAA;AAGF,EAAIC,MACFe,EAAU,KAAK,cAAcf,CAAQ,EAAE,GACnCI,MAAoB,SACtBW,EAAU,KAAK,oBAAoB,IAC1BX,MAAoB,UAC7BW,EAAU,KAAK,mBAAmB,KAElCA,EAAU,KAAK,mBAAmB,GAClCA,EAAU,KAAK,oBAAoB,KAGnCd,MACFc,EAAU,KAAK,iBAAiBd,CAAO,EAAE,GACzCc,EAAU,KAAK,kBAAkBd,CAAO,EAAE,IAExCC,KACFa,EAAU,KAAK,gBAAgBb,CAAU,EAAE,GAEzCC,KACFY,EAAU,KAAK,mBAAmBZ,CAAa,EAAE;AAGnD,QAAMa,IAAkBD,EAAU,KAAK,IAAI,GAGrCE,IAAeZ,KAAMC,KAAWG;AAGtC,MAAIS,IAAe;AACnB,MAAIpB;AACF,IAAAoB,IAAe;AAAA,OACZP,CAAM;AAAA,yBACYQ,EAAY,EAAE;AAAA,SAC9BR,CAAM,6BAA6Bb,CAAW;AAAA,OAChD,KAAA;AAAA,OACE;AACL,UAAMsB,IAAmBC,EAAyBxB,GAAM,GAAG,GAAG,OAAOA,KAAS,WAAWA,IAAO,CAAC;AAEjG,IAAAqB,IADeI,EAA6BX,GAAQS,GAAkBrB,CAAG,EACnD;AAAA,EACxB;AAEA,QAAMwB,IAAa,UAAUL,CAAY,YACnCM,IAAW,YAAYb,CAAM,KAAKc,EAAgBjC,EAAM,EAAE,CAAC,WAAWwB,CAAe,KAAKH,CAAY;AAE5G,MAAI,CAACI;AACH,WAAO,GAAGM,CAAU,GAAGC,CAAQ;AAIjC,QAAME,IAAyB,CAAC,eAAe,oBAAoB;AACnE,EAAIrB,KACFqB,EAAa,KAAK,qBAAqBrB,CAAE,EAAE,GAEzCC,MACFoB,EAAa,KAAK,yBAAyBpB,CAAO,GAAG,GACrDoB,EAAa,KAAK,wBAAwB,GAC1CA,EAAa,KAAK,6BAA6B,GAC/CA,EAAa,KAAK,8BAA8B,IAE9CjB,KAAc,CAACH,KACjBoB,EAAa,KAAK,eAAejB,CAAU,EAAE;AAE/C,QAAMkB,IAAeD,EAAa,KAAK,IAAI,GAGrCE,IAActB,KAAWC,IAC3B,0DAA0DC,CAAc,wBACxE,IAGEqB,IAAaD,IAAc,qCAAqC;AAEtE,SAAO,GAAGL,CAAU,eAAeI,CAAY,KAAKC,CAAW,YAAYjB,CAAM,KAAKc,EAAgBjC,EAAM,EAAE,CAAC,WAAWwB,CAAe,IAAIa,CAAU,KAAKhB,CAAY;AAC1K;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackExporter.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/layout/StackExporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAK1D,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,GAC7F,MAAM,
|
|
1
|
+
{"version":3,"file":"StackExporter.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/layout/StackExporter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAK1D,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,GAC7F,MAAM,CAyER"}
|