@brunoalz/smartgesti-site-editor 1.2.0 → 1.3.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.
Files changed (74) hide show
  1. package/dist/editor/BlockSelector.js +5 -2
  2. package/dist/editor/BlockSelector.js.map +1 -1
  3. package/dist/editor/LandingPageEditor.d.ts.map +1 -1
  4. package/dist/editor/LandingPageEditor.js +163 -151
  5. package/dist/editor/LandingPageEditor.js.map +1 -1
  6. package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts.map +1 -1
  7. package/dist/editor/PropertyEditor/BlockPropertyEditor.js +86 -48
  8. package/dist/editor/PropertyEditor/BlockPropertyEditor.js.map +1 -1
  9. package/dist/engine/export/exporters/sections/AdminSectionExporters.d.ts +6 -0
  10. package/dist/engine/export/exporters/sections/AdminSectionExporters.d.ts.map +1 -0
  11. package/dist/engine/export/exporters/sections/AdminSectionExporters.js +157 -0
  12. package/dist/engine/export/exporters/sections/AdminSectionExporters.js.map +1 -0
  13. package/dist/engine/export/exporters/sections/index.d.ts.map +1 -1
  14. package/dist/engine/export/exporters/sections/index.js +37 -33
  15. package/dist/engine/export/exporters/sections/index.js.map +1 -1
  16. package/dist/engine/index.js +98 -95
  17. package/dist/engine/index.js.map +1 -1
  18. package/dist/engine/preview/Preview.d.ts.map +1 -1
  19. package/dist/engine/preview/Preview.js +165 -160
  20. package/dist/engine/preview/Preview.js.map +1 -1
  21. package/dist/engine/registry/blocks/sections/aboutSection.d.ts +3 -0
  22. package/dist/engine/registry/blocks/sections/aboutSection.d.ts.map +1 -0
  23. package/dist/engine/registry/blocks/sections/aboutSection.js +117 -0
  24. package/dist/engine/registry/blocks/sections/aboutSection.js.map +1 -0
  25. package/dist/engine/registry/blocks/sections/contactSection.d.ts +3 -0
  26. package/dist/engine/registry/blocks/sections/contactSection.d.ts.map +1 -0
  27. package/dist/engine/registry/blocks/sections/contactSection.js +118 -0
  28. package/dist/engine/registry/blocks/sections/contactSection.js.map +1 -0
  29. package/dist/engine/registry/blocks/sections/index.d.ts +3 -0
  30. package/dist/engine/registry/blocks/sections/index.d.ts.map +1 -1
  31. package/dist/engine/registry/blocks/sections/productShowcase.d.ts +3 -0
  32. package/dist/engine/registry/blocks/sections/productShowcase.d.ts.map +1 -0
  33. package/dist/engine/registry/blocks/sections/productShowcase.js +108 -0
  34. package/dist/engine/registry/blocks/sections/productShowcase.js.map +1 -0
  35. package/dist/engine/render/renderers/sections/AboutSectionRenderer.d.ts +3 -0
  36. package/dist/engine/render/renderers/sections/AboutSectionRenderer.d.ts.map +1 -0
  37. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js +246 -0
  38. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js.map +1 -0
  39. package/dist/engine/render/renderers/sections/ContactSectionRenderer.d.ts +3 -0
  40. package/dist/engine/render/renderers/sections/ContactSectionRenderer.d.ts.map +1 -0
  41. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js +287 -0
  42. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js.map +1 -0
  43. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.d.ts +3 -0
  44. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.d.ts.map +1 -0
  45. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js +287 -0
  46. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js.map +1 -0
  47. package/dist/engine/render/renderers/sections/index.js +26 -20
  48. package/dist/engine/render/renderers/sections/index.js.map +1 -1
  49. package/dist/engine/schema/siteDocument.d.ts +96 -2
  50. package/dist/engine/schema/siteDocument.d.ts.map +1 -1
  51. package/dist/engine/schema/siteDocument.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +109 -106
  55. package/dist/index.js.map +1 -1
  56. package/dist/shared/schema.d.ts +1 -1
  57. package/dist/shared/schema.d.ts.map +1 -1
  58. package/dist/shared/schema.js +7 -4
  59. package/dist/shared/schema.js.map +1 -1
  60. package/dist/shared/templates/index.d.ts +2 -0
  61. package/dist/shared/templates/index.d.ts.map +1 -1
  62. package/dist/shared/templates/index.js +42 -23
  63. package/dist/shared/templates/index.js.map +1 -1
  64. package/dist/shared/templates/smartgesti-admin.d.ts +3 -0
  65. package/dist/shared/templates/smartgesti-admin.d.ts.map +1 -0
  66. package/dist/shared/templates/smartgesti-admin.js +426 -0
  67. package/dist/shared/templates/smartgesti-admin.js.map +1 -0
  68. package/dist/utils/blockIcons.d.ts.map +1 -1
  69. package/dist/utils/blockIcons.js +3 -0
  70. package/dist/utils/blockIcons.js.map +1 -1
  71. package/dist/viewer/LandingPageViewer.d.ts.map +1 -1
  72. package/dist/viewer/LandingPageViewer.js +66 -65
  73. package/dist/viewer/LandingPageViewer.js.map +1 -1
  74. package/package.json +1 -1
@@ -0,0 +1,246 @@
1
+ import { jsx as e, jsxs as t, Fragment as C } from "react/jsx-runtime";
2
+ import { generateButtonHoverStyles as W, generateButtonOverlayCSS as w, getButtonHoverKeyframes as z } from "../../../shared/hoverEffects/buttonHover.js";
3
+ function I(n) {
4
+ const {
5
+ title: o,
6
+ subtitle: l,
7
+ description: d,
8
+ secondaryDescription: s,
9
+ image: m,
10
+ achievements: g = [],
11
+ primaryButton: c,
12
+ variant: f = "image-left",
13
+ bg: v,
14
+ stats: b = [],
15
+ buttonHoverEffect: x = "none",
16
+ buttonHoverIntensity: B = 50,
17
+ buttonHoverOverlay: p = "none",
18
+ buttonHoverIconName: k = "arrow-right"
19
+ } = n.props, H = f === "centered", h = f === "image-right", u = `[data-block-id="${n.id}"]`;
20
+ let i = "";
21
+ if (x !== "none") {
22
+ const r = W({
23
+ effect: x,
24
+ intensity: B,
25
+ buttonColor: "#6366f1",
26
+ variant: "solid"
27
+ });
28
+ r.base && (i += `${u} .sg-about__btn--primary { ${r.base} }`), i += `${u} .sg-about__btn--primary:hover { ${r.hover} }`, i += z();
29
+ }
30
+ p && p !== "none" && (i += w(`${u} .sg-about__btn--primary`, {
31
+ overlay: p,
32
+ primaryColor: "#6366f1",
33
+ iconName: k,
34
+ textColor: "#fff"
35
+ }));
36
+ const S = i.length > 0, _ = {
37
+ display: "inline-block",
38
+ padding: "0.75rem 1.5rem",
39
+ backgroundColor: "var(--sg-primary)",
40
+ color: "var(--sg-primary-text)",
41
+ borderRadius: "var(--sg-button-radius, 0.5rem)",
42
+ textDecoration: "none",
43
+ fontWeight: 500,
44
+ position: "relative",
45
+ overflow: "hidden",
46
+ transition: "all 0.2s ease"
47
+ }, y = c ? /* @__PURE__ */ e(
48
+ "a",
49
+ {
50
+ href: c.href || "#",
51
+ className: "sg-about__btn sg-about__btn--primary",
52
+ style: _,
53
+ children: c.text
54
+ }
55
+ ) : null;
56
+ return H ? /* @__PURE__ */ t(C, { children: [
57
+ S && /* @__PURE__ */ e("style", { children: i }),
58
+ /* @__PURE__ */ e(
59
+ "section",
60
+ {
61
+ "data-block-id": n.id,
62
+ style: {
63
+ padding: "var(--sg-section-padding-md, 4rem 0)",
64
+ backgroundColor: v || "var(--sg-bg)"
65
+ },
66
+ children: /* @__PURE__ */ t("div", { style: { maxWidth: "800px", margin: "0 auto", padding: "0 1rem", textAlign: "center" }, children: [
67
+ l && /* @__PURE__ */ e(
68
+ "span",
69
+ {
70
+ "data-block-group": "Conteúdo",
71
+ style: {
72
+ display: "inline-block",
73
+ padding: "0.25rem 0.75rem",
74
+ backgroundColor: "var(--sg-primary)",
75
+ color: "#fff",
76
+ borderRadius: "9999px",
77
+ fontSize: "0.75rem",
78
+ fontWeight: 600,
79
+ textTransform: "uppercase",
80
+ letterSpacing: "0.05em",
81
+ marginBottom: "0.75rem"
82
+ },
83
+ children: l
84
+ }
85
+ ),
86
+ o && /* @__PURE__ */ e("h2", { style: { fontSize: "var(--sg-heading-h2)", marginBottom: "1rem" }, children: o }),
87
+ m && /* @__PURE__ */ e("div", { "data-block-group": "Mídia", style: { margin: "2rem 0" }, children: /* @__PURE__ */ e(
88
+ "img",
89
+ {
90
+ src: m,
91
+ alt: o || "About",
92
+ style: {
93
+ width: "100%",
94
+ borderRadius: "var(--sg-card-radius, 0.75rem)",
95
+ objectFit: "cover"
96
+ }
97
+ }
98
+ ) }),
99
+ d && /* @__PURE__ */ e("p", { style: { color: "var(--sg-muted-text)", fontSize: "1.125rem", lineHeight: 1.7, marginBottom: "1rem" }, children: d }),
100
+ s && /* @__PURE__ */ e("p", { style: { color: "var(--sg-muted-text)", lineHeight: 1.7, marginBottom: "1.5rem" }, children: s }),
101
+ g.length > 0 && /* @__PURE__ */ e("div", { style: { display: "inline-flex", flexDirection: "column", gap: "0.5rem", textAlign: "left", marginBottom: "1.5rem" }, children: g.map((r, a) => /* @__PURE__ */ t("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" }, children: [
102
+ /* @__PURE__ */ e("span", { style: { color: "#10b981", fontWeight: 700 }, children: "✓" }),
103
+ /* @__PURE__ */ e("span", { children: r.text })
104
+ ] }, a)) }),
105
+ y && /* @__PURE__ */ e("div", { children: y })
106
+ ] })
107
+ },
108
+ n.id
109
+ )
110
+ ] }) : /* @__PURE__ */ t(C, { children: [
111
+ S && /* @__PURE__ */ e("style", { children: i }),
112
+ /* @__PURE__ */ e(
113
+ "section",
114
+ {
115
+ "data-block-id": n.id,
116
+ style: {
117
+ padding: "var(--sg-section-padding-md, 4rem 0)",
118
+ backgroundColor: v || "var(--sg-bg)"
119
+ },
120
+ children: /* @__PURE__ */ t(
121
+ "div",
122
+ {
123
+ style: {
124
+ maxWidth: "1200px",
125
+ margin: "0 auto",
126
+ padding: "0 1rem",
127
+ display: "flex",
128
+ gap: "3rem",
129
+ alignItems: "center",
130
+ flexDirection: h ? "row-reverse" : "row"
131
+ },
132
+ children: [
133
+ /* @__PURE__ */ t("div", { "data-block-group": "Mídia", style: { flex: "1 1 50%", position: "relative" }, children: [
134
+ m ? /* @__PURE__ */ e(
135
+ "img",
136
+ {
137
+ src: m,
138
+ alt: o || "About",
139
+ style: {
140
+ width: "100%",
141
+ borderRadius: "var(--sg-card-radius, 0.75rem)",
142
+ objectFit: "cover"
143
+ }
144
+ }
145
+ ) : /* @__PURE__ */ e(
146
+ "div",
147
+ {
148
+ style: {
149
+ width: "100%",
150
+ height: "400px",
151
+ backgroundColor: "var(--sg-surface)",
152
+ borderRadius: "var(--sg-card-radius, 0.75rem)",
153
+ display: "flex",
154
+ alignItems: "center",
155
+ justifyContent: "center",
156
+ fontSize: "1rem",
157
+ color: "var(--sg-muted-text)"
158
+ },
159
+ children: "Adicione uma imagem"
160
+ }
161
+ ),
162
+ b.length > 0 && /* @__PURE__ */ e(
163
+ "div",
164
+ {
165
+ style: {
166
+ position: "absolute",
167
+ bottom: "-1rem",
168
+ right: h ? "auto" : "-1rem",
169
+ left: h ? "-1rem" : "auto",
170
+ display: "flex",
171
+ gap: "0.5rem"
172
+ },
173
+ children: b.map((r, a) => /* @__PURE__ */ t(
174
+ "div",
175
+ {
176
+ style: {
177
+ backgroundColor: "var(--sg-primary)",
178
+ color: "#fff",
179
+ padding: "0.75rem 1rem",
180
+ borderRadius: "var(--sg-card-radius, 0.75rem)",
181
+ textAlign: "center",
182
+ boxShadow: "0 4px 12px rgba(0,0,0,0.15)",
183
+ minWidth: "80px"
184
+ },
185
+ children: [
186
+ /* @__PURE__ */ e("div", { style: { fontSize: "1.5rem", fontWeight: 700 }, children: r.value }),
187
+ /* @__PURE__ */ e("div", { style: { fontSize: "0.7rem", opacity: 0.9 }, children: r.label })
188
+ ]
189
+ },
190
+ a
191
+ ))
192
+ }
193
+ )
194
+ ] }),
195
+ /* @__PURE__ */ t("div", { "data-block-group": "Conteúdo", style: { flex: "1 1 50%" }, children: [
196
+ l && /* @__PURE__ */ e(
197
+ "span",
198
+ {
199
+ style: {
200
+ display: "inline-block",
201
+ padding: "0.25rem 0.75rem",
202
+ backgroundColor: "var(--sg-primary)",
203
+ color: "#fff",
204
+ borderRadius: "9999px",
205
+ fontSize: "0.75rem",
206
+ fontWeight: 600,
207
+ textTransform: "uppercase",
208
+ letterSpacing: "0.05em",
209
+ marginBottom: "0.75rem"
210
+ },
211
+ children: l
212
+ }
213
+ ),
214
+ o && /* @__PURE__ */ e("h2", { style: { fontSize: "var(--sg-heading-h2)", marginBottom: "1rem" }, children: o }),
215
+ d && /* @__PURE__ */ e("p", { style: { color: "var(--sg-muted-text)", lineHeight: 1.7, marginBottom: "1rem" }, children: d }),
216
+ s && /* @__PURE__ */ e("p", { style: { color: "var(--sg-muted-text)", lineHeight: 1.7, marginBottom: "1.5rem" }, children: s }),
217
+ g.length > 0 && /* @__PURE__ */ e("ul", { style: { listStyle: "none", padding: 0, margin: "0 0 1.5rem 0" }, children: g.map((r, a) => /* @__PURE__ */ t(
218
+ "li",
219
+ {
220
+ style: {
221
+ display: "flex",
222
+ alignItems: "center",
223
+ gap: "0.5rem",
224
+ marginBottom: "0.5rem"
225
+ },
226
+ children: [
227
+ /* @__PURE__ */ e("span", { style: { color: "#10b981", fontWeight: 700 }, children: "✓" }),
228
+ /* @__PURE__ */ e("span", { children: r.text })
229
+ ]
230
+ },
231
+ a
232
+ )) }),
233
+ y
234
+ ] })
235
+ ]
236
+ }
237
+ )
238
+ },
239
+ n.id
240
+ )
241
+ ] });
242
+ }
243
+ export {
244
+ I as renderAboutSection
245
+ };
246
+ //# sourceMappingURL=AboutSectionRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AboutSectionRenderer.js","sources":["../../../../../src/engine/render/renderers/sections/AboutSectionRenderer.tsx"],"sourcesContent":["/**\n * AboutSection Renderer\n * Renderiza seção sobre com imagem, texto, achievements e stats\n */\n\nimport React from \"react\";\nimport {\n generateButtonHoverStyles,\n generateButtonOverlayCSS,\n getButtonHoverKeyframes,\n type ButtonHoverEffect,\n type ButtonHoverOverlay,\n} from \"../../../shared/hoverEffects\";\n\nexport function renderAboutSection(block: any): React.ReactNode {\n const {\n title,\n subtitle,\n description,\n secondaryDescription,\n image,\n achievements = [],\n primaryButton,\n variant = \"image-left\",\n bg,\n stats = [],\n buttonHoverEffect = \"none\",\n buttonHoverIntensity = 50,\n buttonHoverOverlay = \"none\",\n buttonHoverIconName = \"arrow-right\",\n } = block.props;\n\n const isCentered = variant === \"centered\";\n const isReversed = variant === \"image-right\";\n\n // Generate hover CSS\n const scope = `[data-block-id=\"${block.id}\"]`;\n let hoverCss = \"\";\n\n if (buttonHoverEffect !== \"none\") {\n const result = generateButtonHoverStyles({\n effect: buttonHoverEffect as ButtonHoverEffect,\n intensity: buttonHoverIntensity,\n buttonColor: \"#6366f1\",\n variant: \"solid\",\n });\n if (result.base) {\n hoverCss += `${scope} .sg-about__btn--primary { ${result.base} }`;\n }\n hoverCss += `${scope} .sg-about__btn--primary:hover { ${result.hover} }`;\n hoverCss += getButtonHoverKeyframes();\n }\n\n if (buttonHoverOverlay && buttonHoverOverlay !== \"none\") {\n hoverCss += generateButtonOverlayCSS(`${scope} .sg-about__btn--primary`, {\n overlay: buttonHoverOverlay as ButtonHoverOverlay,\n primaryColor: \"#6366f1\",\n iconName: buttonHoverIconName,\n textColor: \"#fff\",\n });\n }\n\n const hasHover = hoverCss.length > 0;\n const btnStyle: React.CSSProperties = {\n display: \"inline-block\",\n padding: \"0.75rem 1.5rem\",\n backgroundColor: \"var(--sg-primary)\",\n color: \"var(--sg-primary-text)\",\n borderRadius: \"var(--sg-button-radius, 0.5rem)\",\n textDecoration: \"none\",\n fontWeight: 500,\n position: \"relative\",\n overflow: \"hidden\",\n transition: \"all 0.2s ease\",\n };\n\n const buttonElement = primaryButton ? (\n <a\n href={primaryButton.href || \"#\"}\n className=\"sg-about__btn sg-about__btn--primary\"\n style={btnStyle}\n >\n {primaryButton.text}\n </a>\n ) : null;\n\n if (isCentered) {\n return (\n <>\n {hasHover && <style>{hoverCss}</style>}\n <section\n key={block.id}\n data-block-id={block.id}\n style={{\n padding: \"var(--sg-section-padding-md, 4rem 0)\",\n backgroundColor: bg || \"var(--sg-bg)\",\n }}\n >\n <div style={{ maxWidth: \"800px\", margin: \"0 auto\", padding: \"0 1rem\", textAlign: \"center\" }}>\n {subtitle && (\n <span\n data-block-group=\"Conteúdo\"\n style={{\n display: \"inline-block\",\n padding: \"0.25rem 0.75rem\",\n backgroundColor: \"var(--sg-primary)\",\n color: \"#fff\",\n borderRadius: \"9999px\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n marginBottom: \"0.75rem\",\n }}\n >\n {subtitle}\n </span>\n )}\n {title && (\n <h2 style={{ fontSize: \"var(--sg-heading-h2)\", marginBottom: \"1rem\" }}>{title}</h2>\n )}\n {image && (\n <div data-block-group=\"Mídia\" style={{ margin: \"2rem 0\" }}>\n <img\n src={image}\n alt={title || \"About\"}\n style={{\n width: \"100%\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n objectFit: \"cover\",\n }}\n />\n </div>\n )}\n {description && (\n <p style={{ color: \"var(--sg-muted-text)\", fontSize: \"1.125rem\", lineHeight: 1.7, marginBottom: \"1rem\" }}>\n {description}\n </p>\n )}\n {secondaryDescription && (\n <p style={{ color: \"var(--sg-muted-text)\", lineHeight: 1.7, marginBottom: \"1.5rem\" }}>\n {secondaryDescription}\n </p>\n )}\n {achievements.length > 0 && (\n <div style={{ display: \"inline-flex\", flexDirection: \"column\", gap: \"0.5rem\", textAlign: \"left\", marginBottom: \"1.5rem\" }}>\n {achievements.map((a: any, i: number) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" }}>\n <span style={{ color: \"#10b981\", fontWeight: 700 }}>✓</span>\n <span>{a.text}</span>\n </div>\n ))}\n </div>\n )}\n {buttonElement && <div>{buttonElement}</div>}\n </div>\n </section>\n </>\n );\n }\n\n return (\n <>\n {hasHover && <style>{hoverCss}</style>}\n <section\n key={block.id}\n data-block-id={block.id}\n style={{\n padding: \"var(--sg-section-padding-md, 4rem 0)\",\n backgroundColor: bg || \"var(--sg-bg)\",\n }}\n >\n <div\n style={{\n maxWidth: \"1200px\",\n margin: \"0 auto\",\n padding: \"0 1rem\",\n display: \"flex\",\n gap: \"3rem\",\n alignItems: \"center\",\n flexDirection: isReversed ? \"row-reverse\" : \"row\",\n }}\n >\n {/* Image side */}\n <div data-block-group=\"Mídia\" style={{ flex: \"1 1 50%\", position: \"relative\" }}>\n {image ? (\n <img\n src={image}\n alt={title || \"About\"}\n style={{\n width: \"100%\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n objectFit: \"cover\",\n }}\n />\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"400px\",\n backgroundColor: \"var(--sg-surface)\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"1rem\",\n color: \"var(--sg-muted-text)\",\n }}\n >\n Adicione uma imagem\n </div>\n )}\n {/* Floating stats */}\n {stats.length > 0 && (\n <div\n style={{\n position: \"absolute\",\n bottom: \"-1rem\",\n right: isReversed ? \"auto\" : \"-1rem\",\n left: isReversed ? \"-1rem\" : \"auto\",\n display: \"flex\",\n gap: \"0.5rem\",\n }}\n >\n {stats.map((stat: any, i: number) => (\n <div\n key={i}\n style={{\n backgroundColor: \"var(--sg-primary)\",\n color: \"#fff\",\n padding: \"0.75rem 1rem\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n textAlign: \"center\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.15)\",\n minWidth: \"80px\",\n }}\n >\n <div style={{ fontSize: \"1.5rem\", fontWeight: 700 }}>{stat.value}</div>\n <div style={{ fontSize: \"0.7rem\", opacity: 0.9 }}>{stat.label}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Content side */}\n <div data-block-group=\"Conteúdo\" style={{ flex: \"1 1 50%\" }}>\n {subtitle && (\n <span\n style={{\n display: \"inline-block\",\n padding: \"0.25rem 0.75rem\",\n backgroundColor: \"var(--sg-primary)\",\n color: \"#fff\",\n borderRadius: \"9999px\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n marginBottom: \"0.75rem\",\n }}\n >\n {subtitle}\n </span>\n )}\n {title && (\n <h2 style={{ fontSize: \"var(--sg-heading-h2)\", marginBottom: \"1rem\" }}>{title}</h2>\n )}\n {description && (\n <p style={{ color: \"var(--sg-muted-text)\", lineHeight: 1.7, marginBottom: \"1rem\" }}>\n {description}\n </p>\n )}\n {secondaryDescription && (\n <p style={{ color: \"var(--sg-muted-text)\", lineHeight: 1.7, marginBottom: \"1.5rem\" }}>\n {secondaryDescription}\n </p>\n )}\n {achievements.length > 0 && (\n <ul style={{ listStyle: \"none\", padding: 0, margin: \"0 0 1.5rem 0\" }}>\n {achievements.map((a: any, i: number) => (\n <li\n key={i}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n marginBottom: \"0.5rem\",\n }}\n >\n <span style={{ color: \"#10b981\", fontWeight: 700 }}>✓</span>\n <span>{a.text}</span>\n </li>\n ))}\n </ul>\n )}\n {buttonElement}\n </div>\n </div>\n </section>\n </>\n );\n}\n"],"names":["renderAboutSection","block","title","subtitle","description","secondaryDescription","image","achievements","primaryButton","variant","bg","stats","buttonHoverEffect","buttonHoverIntensity","buttonHoverOverlay","buttonHoverIconName","isCentered","isReversed","scope","hoverCss","result","generateButtonHoverStyles","getButtonHoverKeyframes","generateButtonOverlayCSS","hasHover","btnStyle","buttonElement","jsx","jsxs","Fragment","a","i","stat"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ export declare function renderContactSection(block: any): React.ReactNode;
3
+ //# sourceMappingURL=ContactSectionRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactSectionRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/render/renderers/sections/ContactSectionRenderer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAiB1B,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,SAAS,CA+ShE"}
@@ -0,0 +1,287 @@
1
+ import { jsxs as t, jsx as r, Fragment as y } from "react/jsx-runtime";
2
+ import { generateButtonHoverStyles as B, generateButtonOverlayCSS as w, getButtonHoverKeyframes as _ } from "../../../shared/hoverEffects/buttonHover.js";
3
+ const I = {
4
+ mail: "✉",
5
+ phone: "📞",
6
+ "map-pin": "📍",
7
+ clock: "🕐",
8
+ globe: "🌐"
9
+ };
10
+ function H(n) {
11
+ const {
12
+ title: i,
13
+ subtitle: a,
14
+ description: d,
15
+ contactInfo: g = [],
16
+ formTitle: p,
17
+ formFields: x = [],
18
+ submitText: S = "Enviar",
19
+ variant: u = "split",
20
+ bg: b,
21
+ buttonHoverEffect: h = "none",
22
+ buttonHoverIntensity: C = 50,
23
+ buttonHoverOverlay: s = "none",
24
+ buttonHoverIconName: k = "arrow-right"
25
+ } = n.props, z = u === "form-only", l = u === "stacked", c = `[data-block-id="${n.id}"]`;
26
+ let o = "";
27
+ if (h !== "none") {
28
+ const e = B({
29
+ effect: h,
30
+ intensity: C,
31
+ buttonColor: "#6366f1",
32
+ variant: "solid"
33
+ });
34
+ e.base && (o += `${c} .sg-contact__btn--submit { ${e.base} }`), o += `${c} .sg-contact__btn--submit:hover { ${e.hover} }`, o += _();
35
+ }
36
+ s && s !== "none" && (o += w(`${c} .sg-contact__btn--submit`, {
37
+ overlay: s,
38
+ primaryColor: "#6366f1",
39
+ iconName: k,
40
+ textColor: "#fff"
41
+ }));
42
+ const v = o.length > 0, f = /* @__PURE__ */ t(
43
+ "div",
44
+ {
45
+ style: {
46
+ backgroundColor: "var(--sg-surface)",
47
+ borderRadius: "var(--sg-card-radius, 0.75rem)",
48
+ padding: "2rem",
49
+ boxShadow: "var(--sg-card-shadow)"
50
+ },
51
+ children: [
52
+ p && /* @__PURE__ */ r("h3", { style: { fontSize: "1.25rem", fontWeight: 600, marginBottom: "1.5rem" }, children: p }),
53
+ /* @__PURE__ */ t(
54
+ "form",
55
+ {
56
+ onSubmit: (e) => e.preventDefault(),
57
+ style: { display: "flex", flexDirection: "column", gap: "1rem" },
58
+ children: [
59
+ x.map((e, m) => /* @__PURE__ */ t("div", { children: [
60
+ e.label && /* @__PURE__ */ t(
61
+ "label",
62
+ {
63
+ style: {
64
+ display: "block",
65
+ fontSize: "0.875rem",
66
+ fontWeight: 500,
67
+ marginBottom: "0.375rem",
68
+ color: "var(--sg-text)"
69
+ },
70
+ children: [
71
+ e.label,
72
+ e.required && /* @__PURE__ */ r("span", { style: { color: "#ef4444" }, children: " *" })
73
+ ]
74
+ }
75
+ ),
76
+ e.type === "textarea" ? /* @__PURE__ */ r(
77
+ "textarea",
78
+ {
79
+ name: e.name,
80
+ placeholder: e.placeholder,
81
+ required: e.required,
82
+ rows: 4,
83
+ style: {
84
+ width: "100%",
85
+ padding: "0.625rem 0.75rem",
86
+ border: "1px solid var(--sg-border)",
87
+ borderRadius: "var(--sg-button-radius, 0.5rem)",
88
+ fontSize: "0.875rem",
89
+ backgroundColor: "var(--sg-bg)",
90
+ color: "var(--sg-text)",
91
+ resize: "vertical",
92
+ boxSizing: "border-box"
93
+ }
94
+ }
95
+ ) : /* @__PURE__ */ r(
96
+ "input",
97
+ {
98
+ type: e.type || "text",
99
+ name: e.name,
100
+ placeholder: e.placeholder,
101
+ required: e.required,
102
+ style: {
103
+ width: "100%",
104
+ padding: "0.625rem 0.75rem",
105
+ border: "1px solid var(--sg-border)",
106
+ borderRadius: "var(--sg-button-radius, 0.5rem)",
107
+ fontSize: "0.875rem",
108
+ backgroundColor: "var(--sg-bg)",
109
+ color: "var(--sg-text)",
110
+ boxSizing: "border-box"
111
+ }
112
+ }
113
+ )
114
+ ] }, m)),
115
+ /* @__PURE__ */ r(
116
+ "button",
117
+ {
118
+ type: "submit",
119
+ className: "sg-contact__btn sg-contact__btn--submit",
120
+ style: {
121
+ padding: "0.75rem 1.5rem",
122
+ backgroundColor: "var(--sg-primary)",
123
+ color: "var(--sg-primary-text)",
124
+ border: "none",
125
+ borderRadius: "var(--sg-button-radius, 0.5rem)",
126
+ fontWeight: 500,
127
+ cursor: "pointer",
128
+ fontSize: "1rem",
129
+ position: "relative",
130
+ overflow: "hidden",
131
+ transition: "all 0.2s ease"
132
+ },
133
+ children: S
134
+ }
135
+ )
136
+ ]
137
+ }
138
+ )
139
+ ]
140
+ }
141
+ );
142
+ return z ? /* @__PURE__ */ t(y, { children: [
143
+ v && /* @__PURE__ */ r("style", { children: o }),
144
+ /* @__PURE__ */ r(
145
+ "section",
146
+ {
147
+ "data-block-id": n.id,
148
+ style: {
149
+ padding: "var(--sg-section-padding-md, 4rem 0)",
150
+ backgroundColor: b || "var(--sg-bg)"
151
+ },
152
+ children: /* @__PURE__ */ t("div", { style: { maxWidth: "600px", margin: "0 auto", padding: "0 1rem" }, children: [
153
+ (i || a) && /* @__PURE__ */ t("div", { "data-block-group": "Conteúdo", style: { textAlign: "center", marginBottom: "2rem" }, children: [
154
+ a && /* @__PURE__ */ r(
155
+ "span",
156
+ {
157
+ style: {
158
+ display: "inline-block",
159
+ padding: "0.25rem 0.75rem",
160
+ backgroundColor: "var(--sg-primary)",
161
+ color: "#fff",
162
+ borderRadius: "9999px",
163
+ fontSize: "0.75rem",
164
+ fontWeight: 600,
165
+ textTransform: "uppercase",
166
+ letterSpacing: "0.05em",
167
+ marginBottom: "0.75rem"
168
+ },
169
+ children: a
170
+ }
171
+ ),
172
+ i && /* @__PURE__ */ r("h2", { style: { fontSize: "var(--sg-heading-h2)", marginBottom: "0.5rem" }, children: i }),
173
+ d && /* @__PURE__ */ r("p", { style: { color: "var(--sg-muted-text)" }, children: d })
174
+ ] }),
175
+ /* @__PURE__ */ r("div", { "data-block-group": "Formulário", children: f })
176
+ ] })
177
+ },
178
+ n.id
179
+ )
180
+ ] }) : /* @__PURE__ */ t(y, { children: [
181
+ v && /* @__PURE__ */ r("style", { children: o }),
182
+ /* @__PURE__ */ r(
183
+ "section",
184
+ {
185
+ "data-block-id": n.id,
186
+ style: {
187
+ padding: "var(--sg-section-padding-md, 4rem 0)",
188
+ backgroundColor: b || "var(--sg-bg)"
189
+ },
190
+ children: /* @__PURE__ */ t("div", { style: { maxWidth: "1200px", margin: "0 auto", padding: "0 1rem" }, children: [
191
+ (i || a) && /* @__PURE__ */ t("div", { "data-block-group": "Conteúdo", style: { textAlign: "center", marginBottom: "3rem" }, children: [
192
+ a && /* @__PURE__ */ r(
193
+ "span",
194
+ {
195
+ style: {
196
+ display: "inline-block",
197
+ padding: "0.25rem 0.75rem",
198
+ backgroundColor: "var(--sg-primary)",
199
+ color: "#fff",
200
+ borderRadius: "9999px",
201
+ fontSize: "0.75rem",
202
+ fontWeight: 600,
203
+ textTransform: "uppercase",
204
+ letterSpacing: "0.05em",
205
+ marginBottom: "0.75rem"
206
+ },
207
+ children: a
208
+ }
209
+ ),
210
+ i && /* @__PURE__ */ r("h2", { style: { fontSize: "var(--sg-heading-h2)", marginBottom: "0.5rem" }, children: i }),
211
+ d && /* @__PURE__ */ r("p", { style: { color: "var(--sg-muted-text)" }, children: d })
212
+ ] }),
213
+ /* @__PURE__ */ t(
214
+ "div",
215
+ {
216
+ style: {
217
+ display: "flex",
218
+ gap: "3rem",
219
+ flexDirection: l ? "column" : "row",
220
+ alignItems: l ? "stretch" : "flex-start"
221
+ },
222
+ children: [
223
+ g.length > 0 && /* @__PURE__ */ r(
224
+ "div",
225
+ {
226
+ "data-block-group": "Info",
227
+ style: {
228
+ flex: l ? "1" : "1 1 40%",
229
+ display: "flex",
230
+ flexDirection: "column",
231
+ gap: "1rem"
232
+ },
233
+ children: g.map((e, m) => /* @__PURE__ */ t(
234
+ "div",
235
+ {
236
+ style: {
237
+ display: "flex",
238
+ alignItems: "flex-start",
239
+ gap: "1rem",
240
+ padding: "1.25rem",
241
+ backgroundColor: "var(--sg-surface)",
242
+ borderRadius: "var(--sg-card-radius, 0.75rem)",
243
+ boxShadow: "var(--sg-card-shadow)"
244
+ },
245
+ children: [
246
+ /* @__PURE__ */ r(
247
+ "div",
248
+ {
249
+ style: {
250
+ width: "2.5rem",
251
+ height: "2.5rem",
252
+ backgroundColor: "var(--sg-primary)",
253
+ borderRadius: "0.5rem",
254
+ display: "flex",
255
+ alignItems: "center",
256
+ justifyContent: "center",
257
+ color: "#fff",
258
+ flexShrink: 0,
259
+ fontSize: "1.25rem"
260
+ },
261
+ children: I[e.icon || ""] || "📧"
262
+ }
263
+ ),
264
+ /* @__PURE__ */ t("div", { children: [
265
+ /* @__PURE__ */ r("div", { style: { fontWeight: 600, fontSize: "0.875rem", marginBottom: "0.25rem" }, children: e.label }),
266
+ /* @__PURE__ */ r("div", { style: { color: "var(--sg-muted-text)", fontSize: "0.875rem" }, children: e.value })
267
+ ] })
268
+ ]
269
+ },
270
+ m
271
+ ))
272
+ }
273
+ ),
274
+ /* @__PURE__ */ r("div", { "data-block-group": "Formulário", style: { flex: l ? "1" : "1 1 60%" }, children: f })
275
+ ]
276
+ }
277
+ )
278
+ ] })
279
+ },
280
+ n.id
281
+ )
282
+ ] });
283
+ }
284
+ export {
285
+ H as renderContactSection
286
+ };
287
+ //# sourceMappingURL=ContactSectionRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContactSectionRenderer.js","sources":["../../../../../src/engine/render/renderers/sections/ContactSectionRenderer.tsx"],"sourcesContent":["/**\n * ContactSection Renderer\n * Renderiza seção de contato com info cards e formulário\n */\n\nimport React from \"react\";\nimport {\n generateButtonHoverStyles,\n generateButtonOverlayCSS,\n getButtonHoverKeyframes,\n type ButtonHoverEffect,\n type ButtonHoverOverlay,\n} from \"../../../shared/hoverEffects\";\n\nconst CONTACT_ICONS: Record<string, string> = {\n mail: \"✉\",\n phone: \"📞\",\n \"map-pin\": \"📍\",\n clock: \"🕐\",\n globe: \"🌐\",\n};\n\nexport function renderContactSection(block: any): React.ReactNode {\n const {\n title,\n subtitle,\n description,\n contactInfo = [],\n formTitle,\n formFields = [],\n submitText = \"Enviar\",\n variant = \"split\",\n bg,\n buttonHoverEffect = \"none\",\n buttonHoverIntensity = 50,\n buttonHoverOverlay = \"none\",\n buttonHoverIconName = \"arrow-right\",\n } = block.props;\n\n const isFormOnly = variant === \"form-only\";\n const isStacked = variant === \"stacked\";\n\n // Generate hover CSS\n const scope = `[data-block-id=\"${block.id}\"]`;\n let hoverCss = \"\";\n\n if (buttonHoverEffect !== \"none\") {\n const result = generateButtonHoverStyles({\n effect: buttonHoverEffect as ButtonHoverEffect,\n intensity: buttonHoverIntensity,\n buttonColor: \"#6366f1\",\n variant: \"solid\",\n });\n if (result.base) {\n hoverCss += `${scope} .sg-contact__btn--submit { ${result.base} }`;\n }\n hoverCss += `${scope} .sg-contact__btn--submit:hover { ${result.hover} }`;\n hoverCss += getButtonHoverKeyframes();\n }\n\n if (buttonHoverOverlay && buttonHoverOverlay !== \"none\") {\n hoverCss += generateButtonOverlayCSS(`${scope} .sg-contact__btn--submit`, {\n overlay: buttonHoverOverlay as ButtonHoverOverlay,\n primaryColor: \"#6366f1\",\n iconName: buttonHoverIconName,\n textColor: \"#fff\",\n });\n }\n\n const hasHover = hoverCss.length > 0;\n\n const formElement = (\n <div\n style={{\n backgroundColor: \"var(--sg-surface)\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n padding: \"2rem\",\n boxShadow: \"var(--sg-card-shadow)\",\n }}\n >\n {formTitle && (\n <h3 style={{ fontSize: \"1.25rem\", fontWeight: 600, marginBottom: \"1.5rem\" }}>\n {formTitle}\n </h3>\n )}\n <form\n onSubmit={(e) => e.preventDefault()}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\" }}\n >\n {formFields.map((field: any, i: number) => (\n <div key={i}>\n {field.label && (\n <label\n style={{\n display: \"block\",\n fontSize: \"0.875rem\",\n fontWeight: 500,\n marginBottom: \"0.375rem\",\n color: \"var(--sg-text)\",\n }}\n >\n {field.label}\n {field.required && <span style={{ color: \"#ef4444\" }}> *</span>}\n </label>\n )}\n {field.type === \"textarea\" ? (\n <textarea\n name={field.name}\n placeholder={field.placeholder}\n required={field.required}\n rows={4}\n style={{\n width: \"100%\",\n padding: \"0.625rem 0.75rem\",\n border: \"1px solid var(--sg-border)\",\n borderRadius: \"var(--sg-button-radius, 0.5rem)\",\n fontSize: \"0.875rem\",\n backgroundColor: \"var(--sg-bg)\",\n color: \"var(--sg-text)\",\n resize: \"vertical\",\n boxSizing: \"border-box\",\n }}\n />\n ) : (\n <input\n type={field.type || \"text\"}\n name={field.name}\n placeholder={field.placeholder}\n required={field.required}\n style={{\n width: \"100%\",\n padding: \"0.625rem 0.75rem\",\n border: \"1px solid var(--sg-border)\",\n borderRadius: \"var(--sg-button-radius, 0.5rem)\",\n fontSize: \"0.875rem\",\n backgroundColor: \"var(--sg-bg)\",\n color: \"var(--sg-text)\",\n boxSizing: \"border-box\",\n }}\n />\n )}\n </div>\n ))}\n <button\n type=\"submit\"\n className=\"sg-contact__btn sg-contact__btn--submit\"\n style={{\n padding: \"0.75rem 1.5rem\",\n backgroundColor: \"var(--sg-primary)\",\n color: \"var(--sg-primary-text)\",\n border: \"none\",\n borderRadius: \"var(--sg-button-radius, 0.5rem)\",\n fontWeight: 500,\n cursor: \"pointer\",\n fontSize: \"1rem\",\n position: \"relative\",\n overflow: \"hidden\",\n transition: \"all 0.2s ease\",\n }}\n >\n {submitText}\n </button>\n </form>\n </div>\n );\n\n if (isFormOnly) {\n return (\n <>\n {hasHover && <style>{hoverCss}</style>}\n <section\n key={block.id}\n data-block-id={block.id}\n style={{\n padding: \"var(--sg-section-padding-md, 4rem 0)\",\n backgroundColor: bg || \"var(--sg-bg)\",\n }}\n >\n <div style={{ maxWidth: \"600px\", margin: \"0 auto\", padding: \"0 1rem\" }}>\n {(title || subtitle) && (\n <div data-block-group=\"Conteúdo\" style={{ textAlign: \"center\", marginBottom: \"2rem\" }}>\n {subtitle && (\n <span\n style={{\n display: \"inline-block\",\n padding: \"0.25rem 0.75rem\",\n backgroundColor: \"var(--sg-primary)\",\n color: \"#fff\",\n borderRadius: \"9999px\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n marginBottom: \"0.75rem\",\n }}\n >\n {subtitle}\n </span>\n )}\n {title && (\n <h2 style={{ fontSize: \"var(--sg-heading-h2)\", marginBottom: \"0.5rem\" }}>{title}</h2>\n )}\n {description && (\n <p style={{ color: \"var(--sg-muted-text)\" }}>{description}</p>\n )}\n </div>\n )}\n <div data-block-group=\"Formulário\">{formElement}</div>\n </div>\n </section>\n </>\n );\n }\n\n return (\n <>\n {hasHover && <style>{hoverCss}</style>}\n <section\n key={block.id}\n data-block-id={block.id}\n style={{\n padding: \"var(--sg-section-padding-md, 4rem 0)\",\n backgroundColor: bg || \"var(--sg-bg)\",\n }}\n >\n <div style={{ maxWidth: \"1200px\", margin: \"0 auto\", padding: \"0 1rem\" }}>\n {(title || subtitle) && (\n <div data-block-group=\"Conteúdo\" style={{ textAlign: \"center\", marginBottom: \"3rem\" }}>\n {subtitle && (\n <span\n style={{\n display: \"inline-block\",\n padding: \"0.25rem 0.75rem\",\n backgroundColor: \"var(--sg-primary)\",\n color: \"#fff\",\n borderRadius: \"9999px\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n marginBottom: \"0.75rem\",\n }}\n >\n {subtitle}\n </span>\n )}\n {title && (\n <h2 style={{ fontSize: \"var(--sg-heading-h2)\", marginBottom: \"0.5rem\" }}>{title}</h2>\n )}\n {description && (\n <p style={{ color: \"var(--sg-muted-text)\" }}>{description}</p>\n )}\n </div>\n )}\n\n <div\n style={{\n display: \"flex\",\n gap: \"3rem\",\n flexDirection: isStacked ? \"column\" : \"row\",\n alignItems: isStacked ? \"stretch\" : \"flex-start\",\n }}\n >\n {/* Contact info */}\n {contactInfo.length > 0 && (\n <div\n data-block-group=\"Info\"\n style={{\n flex: isStacked ? \"1\" : \"1 1 40%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1rem\",\n }}\n >\n {contactInfo.map((info: any, i: number) => (\n <div\n key={i}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"1rem\",\n padding: \"1.25rem\",\n backgroundColor: \"var(--sg-surface)\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n boxShadow: \"var(--sg-card-shadow)\",\n }}\n >\n <div\n style={{\n width: \"2.5rem\",\n height: \"2.5rem\",\n backgroundColor: \"var(--sg-primary)\",\n borderRadius: \"0.5rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"#fff\",\n flexShrink: 0,\n fontSize: \"1.25rem\",\n }}\n >\n {CONTACT_ICONS[info.icon || \"\"] || \"📧\"}\n </div>\n <div>\n <div style={{ fontWeight: 600, fontSize: \"0.875rem\", marginBottom: \"0.25rem\" }}>\n {info.label}\n </div>\n <div style={{ color: \"var(--sg-muted-text)\", fontSize: \"0.875rem\" }}>\n {info.value}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n {/* Form */}\n <div data-block-group=\"Formulário\" style={{ flex: isStacked ? \"1\" : \"1 1 60%\" }}>\n {formElement}\n </div>\n </div>\n </div>\n </section>\n </>\n );\n}\n"],"names":["CONTACT_ICONS","renderContactSection","block","title","subtitle","description","contactInfo","formTitle","formFields","submitText","variant","bg","buttonHoverEffect","buttonHoverIntensity","buttonHoverOverlay","buttonHoverIconName","isFormOnly","isStacked","scope","hoverCss","result","generateButtonHoverStyles","getButtonHoverKeyframes","generateButtonOverlayCSS","hasHover","formElement","jsxs","jsx","field","i","Fragment","info"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { default as React } from 'react';
2
+ export declare function renderProductShowcase(block: any): React.ReactNode;
3
+ //# sourceMappingURL=ProductShowcaseRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductShowcaseRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/engine/render/renderers/sections/ProductShowcaseRenderer.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,SAAS,CA8TjE"}