@brunoalz/smartgesti-site-editor 1.3.0 → 1.4.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 (53) hide show
  1. package/dist/editor/LandingPageEditor.d.ts.map +1 -1
  2. package/dist/editor/LandingPageEditor.js +183 -169
  3. package/dist/editor/LandingPageEditor.js.map +1 -1
  4. package/dist/editor/PaletteSelector.d.ts +3 -0
  5. package/dist/editor/PaletteSelector.d.ts.map +1 -1
  6. package/dist/editor/PaletteSelector.js +114 -25
  7. package/dist/editor/PaletteSelector.js.map +1 -1
  8. package/dist/editor/components/RightPanel.d.ts +2 -0
  9. package/dist/editor/components/RightPanel.d.ts.map +1 -1
  10. package/dist/editor/components/RightPanel.js +23 -22
  11. package/dist/editor/components/RightPanel.js.map +1 -1
  12. package/dist/engine/export/exporters/content/AvatarExporter.js +2 -2
  13. package/dist/engine/export/exporters/content/AvatarExporter.js.map +1 -1
  14. package/dist/engine/export/exporters/content/BadgeExporter.js +11 -11
  15. package/dist/engine/export/exporters/content/BadgeExporter.js.map +1 -1
  16. package/dist/engine/export/exporters/sections/AdminSectionExporters.js +17 -17
  17. package/dist/engine/export/exporters/sections/AdminSectionExporters.js.map +1 -1
  18. package/dist/engine/export/exporters/sections/BlogPostExporters.js +34 -34
  19. package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -1
  20. package/dist/engine/export/exporters/sections/ContentGridExporters.js +16 -16
  21. package/dist/engine/export/exporters/sections/ContentGridExporters.js.map +1 -1
  22. package/dist/engine/export/exporters/sections/MarketingExporters.js +4 -4
  23. package/dist/engine/export/exporters/sections/MarketingExporters.js.map +1 -1
  24. package/dist/engine/render/renderers/content/BadgeRenderer.js +12 -12
  25. package/dist/engine/render/renderers/content/BadgeRenderer.js.map +1 -1
  26. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js +8 -8
  27. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js.map +1 -1
  28. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js +52 -52
  29. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js.map +1 -1
  30. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js +5 -5
  31. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js.map +1 -1
  32. package/dist/engine/render/renderers/sections/FeatureRenderer.js +9 -9
  33. package/dist/engine/render/renderers/sections/FeatureRenderer.js.map +1 -1
  34. package/dist/engine/render/renderers/sections/PricingCardRenderer.js +5 -5
  35. package/dist/engine/render/renderers/sections/PricingCardRenderer.js.map +1 -1
  36. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js +17 -17
  37. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js.map +1 -1
  38. package/dist/hooks/useEditorState.d.ts +2 -0
  39. package/dist/hooks/useEditorState.d.ts.map +1 -1
  40. package/dist/hooks/useEditorState.js +82 -77
  41. package/dist/hooks/useEditorState.js.map +1 -1
  42. package/dist/shared/templates/index.d.ts +4 -0
  43. package/dist/shared/templates/index.d.ts.map +1 -1
  44. package/dist/shared/templates/index.js +14 -7
  45. package/dist/shared/templates/index.js.map +1 -1
  46. package/dist/shared/templates/smartgesti-admin.d.ts.map +1 -1
  47. package/dist/shared/templates/smartgesti-admin.js +1 -4
  48. package/dist/shared/templates/smartgesti-admin.js.map +1 -1
  49. package/dist/utils/colorUtils.d.ts +73 -16
  50. package/dist/utils/colorUtils.d.ts.map +1 -1
  51. package/dist/utils/colorUtils.js +95 -9
  52. package/dist/utils/colorUtils.js.map +1 -1
  53. package/package.json +1 -1
@@ -9,14 +9,14 @@ function I(n) {
9
9
  image: m,
10
10
  achievements: g = [],
11
11
  primaryButton: c,
12
- variant: f = "image-left",
13
- bg: v,
12
+ variant: v = "image-left",
13
+ bg: f,
14
14
  stats: b = [],
15
15
  buttonHoverEffect: x = "none",
16
16
  buttonHoverIntensity: B = 50,
17
17
  buttonHoverOverlay: p = "none",
18
18
  buttonHoverIconName: k = "arrow-right"
19
- } = n.props, H = f === "centered", h = f === "image-right", u = `[data-block-id="${n.id}"]`;
19
+ } = n.props, H = v === "centered", h = v === "image-right", u = `[data-block-id="${n.id}"]`;
20
20
  let i = "";
21
21
  if (x !== "none") {
22
22
  const r = W({
@@ -61,7 +61,7 @@ function I(n) {
61
61
  "data-block-id": n.id,
62
62
  style: {
63
63
  padding: "var(--sg-section-padding-md, 4rem 0)",
64
- backgroundColor: v || "var(--sg-bg)"
64
+ backgroundColor: f || "var(--sg-bg)"
65
65
  },
66
66
  children: /* @__PURE__ */ t("div", { style: { maxWidth: "800px", margin: "0 auto", padding: "0 1rem", textAlign: "center" }, children: [
67
67
  l && /* @__PURE__ */ e(
@@ -72,7 +72,7 @@ function I(n) {
72
72
  display: "inline-block",
73
73
  padding: "0.25rem 0.75rem",
74
74
  backgroundColor: "var(--sg-primary)",
75
- color: "#fff",
75
+ color: "var(--sg-primary-text, #fff)",
76
76
  borderRadius: "9999px",
77
77
  fontSize: "0.75rem",
78
78
  fontWeight: 600,
@@ -115,7 +115,7 @@ function I(n) {
115
115
  "data-block-id": n.id,
116
116
  style: {
117
117
  padding: "var(--sg-section-padding-md, 4rem 0)",
118
- backgroundColor: v || "var(--sg-bg)"
118
+ backgroundColor: f || "var(--sg-bg)"
119
119
  },
120
120
  children: /* @__PURE__ */ t(
121
121
  "div",
@@ -175,7 +175,7 @@ function I(n) {
175
175
  {
176
176
  style: {
177
177
  backgroundColor: "var(--sg-primary)",
178
- color: "#fff",
178
+ color: "var(--sg-primary-text, #fff)",
179
179
  padding: "0.75rem 1rem",
180
180
  borderRadius: "var(--sg-card-radius, 0.75rem)",
181
181
  textAlign: "center",
@@ -200,7 +200,7 @@ function I(n) {
200
200
  display: "inline-block",
201
201
  padding: "0.25rem 0.75rem",
202
202
  backgroundColor: "var(--sg-primary)",
203
- color: "#fff",
203
+ color: "var(--sg-primary-text, #fff)",
204
204
  borderRadius: "9999px",
205
205
  fontSize: "0.75rem",
206
206
  fontWeight: 600,
@@ -1 +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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"}
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: \"var(--sg-primary-text, #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: \"var(--sg-primary-text, #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: \"var(--sg-primary-text, #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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"}
@@ -1,4 +1,4 @@
1
- import { jsxs as t, jsx as r, Fragment as y } from "react/jsx-runtime";
1
+ import { jsxs as t, jsx as e, Fragment as y } from "react/jsx-runtime";
2
2
  import { generateButtonHoverStyles as B, generateButtonOverlayCSS as w, getButtonHoverKeyframes as _ } from "../../../shared/hoverEffects/buttonHover.js";
3
3
  const I = {
4
4
  mail: "✉",
@@ -7,9 +7,9 @@ const I = {
7
7
  clock: "🕐",
8
8
  globe: "🌐"
9
9
  };
10
- function H(n) {
10
+ function H(i) {
11
11
  const {
12
- title: i,
12
+ title: n,
13
13
  subtitle: a,
14
14
  description: d,
15
15
  contactInfo: g = [],
@@ -22,18 +22,18 @@ function H(n) {
22
22
  buttonHoverIntensity: C = 50,
23
23
  buttonHoverOverlay: s = "none",
24
24
  buttonHoverIconName: k = "arrow-right"
25
- } = n.props, z = u === "form-only", l = u === "stacked", c = `[data-block-id="${n.id}"]`;
25
+ } = i.props, z = u === "form-only", l = u === "stacked", m = `[data-block-id="${i.id}"]`;
26
26
  let o = "";
27
27
  if (h !== "none") {
28
- const e = B({
28
+ const r = B({
29
29
  effect: h,
30
30
  intensity: C,
31
31
  buttonColor: "#6366f1",
32
32
  variant: "solid"
33
33
  });
34
- e.base && (o += `${c} .sg-contact__btn--submit { ${e.base} }`), o += `${c} .sg-contact__btn--submit:hover { ${e.hover} }`, o += _();
34
+ r.base && (o += `${m} .sg-contact__btn--submit { ${r.base} }`), o += `${m} .sg-contact__btn--submit:hover { ${r.hover} }`, o += _();
35
35
  }
36
- s && s !== "none" && (o += w(`${c} .sg-contact__btn--submit`, {
36
+ s && s !== "none" && (o += w(`${m} .sg-contact__btn--submit`, {
37
37
  overlay: s,
38
38
  primaryColor: "#6366f1",
39
39
  iconName: k,
@@ -49,15 +49,15 @@ function H(n) {
49
49
  boxShadow: "var(--sg-card-shadow)"
50
50
  },
51
51
  children: [
52
- p && /* @__PURE__ */ r("h3", { style: { fontSize: "1.25rem", fontWeight: 600, marginBottom: "1.5rem" }, children: p }),
52
+ p && /* @__PURE__ */ e("h3", { style: { fontSize: "1.25rem", fontWeight: 600, marginBottom: "1.5rem" }, children: p }),
53
53
  /* @__PURE__ */ t(
54
54
  "form",
55
55
  {
56
- onSubmit: (e) => e.preventDefault(),
56
+ onSubmit: (r) => r.preventDefault(),
57
57
  style: { display: "flex", flexDirection: "column", gap: "1rem" },
58
58
  children: [
59
- x.map((e, m) => /* @__PURE__ */ t("div", { children: [
60
- e.label && /* @__PURE__ */ t(
59
+ x.map((r, c) => /* @__PURE__ */ t("div", { children: [
60
+ r.label && /* @__PURE__ */ t(
61
61
  "label",
62
62
  {
63
63
  style: {
@@ -68,17 +68,17 @@ function H(n) {
68
68
  color: "var(--sg-text)"
69
69
  },
70
70
  children: [
71
- e.label,
72
- e.required && /* @__PURE__ */ r("span", { style: { color: "#ef4444" }, children: " *" })
71
+ r.label,
72
+ r.required && /* @__PURE__ */ e("span", { style: { color: "#ef4444" }, children: " *" })
73
73
  ]
74
74
  }
75
75
  ),
76
- e.type === "textarea" ? /* @__PURE__ */ r(
76
+ r.type === "textarea" ? /* @__PURE__ */ e(
77
77
  "textarea",
78
78
  {
79
- name: e.name,
80
- placeholder: e.placeholder,
81
- required: e.required,
79
+ name: r.name,
80
+ placeholder: r.placeholder,
81
+ required: r.required,
82
82
  rows: 4,
83
83
  style: {
84
84
  width: "100%",
@@ -92,13 +92,13 @@ function H(n) {
92
92
  boxSizing: "border-box"
93
93
  }
94
94
  }
95
- ) : /* @__PURE__ */ r(
95
+ ) : /* @__PURE__ */ e(
96
96
  "input",
97
97
  {
98
- type: e.type || "text",
99
- name: e.name,
100
- placeholder: e.placeholder,
101
- required: e.required,
98
+ type: r.type || "text",
99
+ name: r.name,
100
+ placeholder: r.placeholder,
101
+ required: r.required,
102
102
  style: {
103
103
  width: "100%",
104
104
  padding: "0.625rem 0.75rem",
@@ -111,8 +111,8 @@ function H(n) {
111
111
  }
112
112
  }
113
113
  )
114
- ] }, m)),
115
- /* @__PURE__ */ r(
114
+ ] }, c)),
115
+ /* @__PURE__ */ e(
116
116
  "button",
117
117
  {
118
118
  type: "submit",
@@ -140,25 +140,25 @@ function H(n) {
140
140
  }
141
141
  );
142
142
  return z ? /* @__PURE__ */ t(y, { children: [
143
- v && /* @__PURE__ */ r("style", { children: o }),
144
- /* @__PURE__ */ r(
143
+ v && /* @__PURE__ */ e("style", { children: o }),
144
+ /* @__PURE__ */ e(
145
145
  "section",
146
146
  {
147
- "data-block-id": n.id,
147
+ "data-block-id": i.id,
148
148
  style: {
149
149
  padding: "var(--sg-section-padding-md, 4rem 0)",
150
150
  backgroundColor: b || "var(--sg-bg)"
151
151
  },
152
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(
153
+ (n || a) && /* @__PURE__ */ t("div", { "data-block-group": "Conteúdo", style: { textAlign: "center", marginBottom: "2rem" }, children: [
154
+ a && /* @__PURE__ */ e(
155
155
  "span",
156
156
  {
157
157
  style: {
158
158
  display: "inline-block",
159
159
  padding: "0.25rem 0.75rem",
160
160
  backgroundColor: "var(--sg-primary)",
161
- color: "#fff",
161
+ color: "var(--sg-primary-text, #fff)",
162
162
  borderRadius: "9999px",
163
163
  fontSize: "0.75rem",
164
164
  fontWeight: 600,
@@ -169,34 +169,34 @@ function H(n) {
169
169
  children: a
170
170
  }
171
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 })
172
+ n && /* @__PURE__ */ e("h2", { style: { fontSize: "var(--sg-heading-h2)", marginBottom: "0.5rem" }, children: n }),
173
+ d && /* @__PURE__ */ e("p", { style: { color: "var(--sg-muted-text)" }, children: d })
174
174
  ] }),
175
- /* @__PURE__ */ r("div", { "data-block-group": "Formulário", children: f })
175
+ /* @__PURE__ */ e("div", { "data-block-group": "Formulário", children: f })
176
176
  ] })
177
177
  },
178
- n.id
178
+ i.id
179
179
  )
180
180
  ] }) : /* @__PURE__ */ t(y, { children: [
181
- v && /* @__PURE__ */ r("style", { children: o }),
182
- /* @__PURE__ */ r(
181
+ v && /* @__PURE__ */ e("style", { children: o }),
182
+ /* @__PURE__ */ e(
183
183
  "section",
184
184
  {
185
- "data-block-id": n.id,
185
+ "data-block-id": i.id,
186
186
  style: {
187
187
  padding: "var(--sg-section-padding-md, 4rem 0)",
188
188
  backgroundColor: b || "var(--sg-bg)"
189
189
  },
190
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(
191
+ (n || a) && /* @__PURE__ */ t("div", { "data-block-group": "Conteúdo", style: { textAlign: "center", marginBottom: "3rem" }, children: [
192
+ a && /* @__PURE__ */ e(
193
193
  "span",
194
194
  {
195
195
  style: {
196
196
  display: "inline-block",
197
197
  padding: "0.25rem 0.75rem",
198
198
  backgroundColor: "var(--sg-primary)",
199
- color: "#fff",
199
+ color: "var(--sg-primary-text, #fff)",
200
200
  borderRadius: "9999px",
201
201
  fontSize: "0.75rem",
202
202
  fontWeight: 600,
@@ -207,8 +207,8 @@ function H(n) {
207
207
  children: a
208
208
  }
209
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 })
210
+ n && /* @__PURE__ */ e("h2", { style: { fontSize: "var(--sg-heading-h2)", marginBottom: "0.5rem" }, children: n }),
211
+ d && /* @__PURE__ */ e("p", { style: { color: "var(--sg-muted-text)" }, children: d })
212
212
  ] }),
213
213
  /* @__PURE__ */ t(
214
214
  "div",
@@ -220,7 +220,7 @@ function H(n) {
220
220
  alignItems: l ? "stretch" : "flex-start"
221
221
  },
222
222
  children: [
223
- g.length > 0 && /* @__PURE__ */ r(
223
+ g.length > 0 && /* @__PURE__ */ e(
224
224
  "div",
225
225
  {
226
226
  "data-block-group": "Info",
@@ -230,7 +230,7 @@ function H(n) {
230
230
  flexDirection: "column",
231
231
  gap: "1rem"
232
232
  },
233
- children: g.map((e, m) => /* @__PURE__ */ t(
233
+ children: g.map((r, c) => /* @__PURE__ */ t(
234
234
  "div",
235
235
  {
236
236
  style: {
@@ -243,7 +243,7 @@ function H(n) {
243
243
  boxShadow: "var(--sg-card-shadow)"
244
244
  },
245
245
  children: [
246
- /* @__PURE__ */ r(
246
+ /* @__PURE__ */ e(
247
247
  "div",
248
248
  {
249
249
  style: {
@@ -254,30 +254,30 @@ function H(n) {
254
254
  display: "flex",
255
255
  alignItems: "center",
256
256
  justifyContent: "center",
257
- color: "#fff",
257
+ color: "var(--sg-primary-text, #fff)",
258
258
  flexShrink: 0,
259
259
  fontSize: "1.25rem"
260
260
  },
261
- children: I[e.icon || ""] || "📧"
261
+ children: I[r.icon || ""] || "📧"
262
262
  }
263
263
  ),
264
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 })
265
+ /* @__PURE__ */ e("div", { style: { fontWeight: 600, fontSize: "0.875rem", marginBottom: "0.25rem" }, children: r.label }),
266
+ /* @__PURE__ */ e("div", { style: { color: "var(--sg-muted-text)", fontSize: "0.875rem" }, children: r.value })
267
267
  ] })
268
268
  ]
269
269
  },
270
- m
270
+ c
271
271
  ))
272
272
  }
273
273
  ),
274
- /* @__PURE__ */ r("div", { "data-block-group": "Formulário", style: { flex: l ? "1" : "1 1 60%" }, children: f })
274
+ /* @__PURE__ */ e("div", { "data-block-group": "Formulário", style: { flex: l ? "1" : "1 1 60%" }, children: f })
275
275
  ]
276
276
  }
277
277
  )
278
278
  ] })
279
279
  },
280
- n.id
280
+ i.id
281
281
  )
282
282
  ] });
283
283
  }
@@ -1 +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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"}
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: \"var(--sg-primary-text, #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: \"var(--sg-primary-text, #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: \"var(--sg-primary-text, #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","e","field","i","Fragment","info"],"mappings":"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"}
@@ -5,9 +5,9 @@ function h(d) {
5
5
  title: t,
6
6
  subtitle: n,
7
7
  columns: s = 3,
8
- variant: l = "default",
9
- features: m = []
10
- } = d.props, i = l === "image-cards";
8
+ variant: m = "default",
9
+ features: l = []
10
+ } = d.props, i = m === "image-cards";
11
11
  return /* @__PURE__ */ e(
12
12
  "section",
13
13
  {
@@ -44,7 +44,7 @@ function h(d) {
44
44
  gridTemplateColumns: `repeat(${s}, 1fr)`,
45
45
  gap: "2rem"
46
46
  },
47
- children: m.map((r, a) => /* @__PURE__ */ o(
47
+ children: l.map((r, a) => /* @__PURE__ */ o(
48
48
  "div",
49
49
  {
50
50
  style: {
@@ -89,7 +89,7 @@ function h(d) {
89
89
  },
90
90
  children: g({
91
91
  id: `${d.id}-feat-${a}-icon`,
92
- props: { name: r.icon, color: "#fff" }
92
+ props: { name: r.icon, color: "var(--sg-primary-text, #fff)" }
93
93
  })
94
94
  }
95
95
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureGridRenderer.js","sources":["../../../../../src/engine/render/renderers/sections/FeatureGridRenderer.tsx"],"sourcesContent":["/**\n * FeatureGrid Renderer\n * Renderiza grid de features com título, subtítulo e cards\n */\n\nimport React from \"react\";\nimport { renderIcon } from \"../content/IconRenderer\";\n\nexport function renderFeatureGrid(block: any): React.ReactNode {\n const {\n title,\n subtitle,\n columns = 3,\n variant = \"default\",\n features = [],\n } = block.props;\n const isImageCards = variant === \"image-cards\";\n\n return (\n <section\n key={block.id}\n style={{\n padding: \"var(--sg-section-padding-md, 4rem 0)\",\n backgroundColor: \"var(--sg-surface)\",\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 {title && (\n <h2\n style={{\n fontSize: \"var(--sg-heading-h2)\",\n marginBottom: \"0.5rem\",\n }}\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p\n style={{ color: \"var(--sg-muted-text)\", fontSize: \"1.125rem\" }}\n >\n {subtitle}\n </p>\n )}\n </div>\n )}\n <div\n data-block-group=\"Layout\"\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: \"2rem\",\n }}\n >\n {features.map((feature: any, index: number) => (\n <div\n key={index}\n style={{\n backgroundColor: \"var(--sg-bg)\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n padding: isImageCards && feature.image ? 0 : \"2rem\",\n boxShadow: \"var(--sg-card-shadow)\",\n overflow: \"hidden\",\n }}\n >\n {isImageCards && feature.image && (\n <div\n style={{\n width: \"100%\",\n height: \"200px\",\n backgroundImage: `url(${feature.image})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n }}\n />\n )}\n <div\n style={{\n padding: isImageCards && feature.image ? \"1.5rem\" : 0,\n }}\n >\n {!isImageCards && feature.icon && (\n <div\n style={{\n width: \"3rem\",\n height: \"3rem\",\n backgroundColor: \"var(--sg-primary)\",\n borderRadius: \"0.75rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"1rem\",\n }}\n >\n {renderIcon({\n id: `${block.id}-feat-${index}-icon`,\n props: { name: feature.icon, color: \"#fff\" },\n })}\n </div>\n )}\n <h3\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"0.5rem\",\n }}\n >\n {feature.title}\n </h3>\n <p style={{ color: \"var(--sg-muted-text)\" }}>\n {feature.description}\n </p>\n {feature.link && (\n <a\n href={feature.link.href || \"#\"}\n style={{\n display: \"inline-block\",\n marginTop: \"0.75rem\",\n color: \"var(--sg-primary)\",\n fontWeight: 500,\n textDecoration: \"none\",\n border: \"1px solid var(--sg-primary)\",\n padding: \"0.5rem 1rem\",\n borderRadius: \"var(--sg-button-radius, 0.5rem)\",\n }}\n >\n {feature.link.text}\n </a>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n"],"names":["renderFeatureGrid","block","title","subtitle","columns","variant","features","isImageCards","jsx","jsxs","feature","index","renderIcon"],"mappings":"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"}
1
+ {"version":3,"file":"FeatureGridRenderer.js","sources":["../../../../../src/engine/render/renderers/sections/FeatureGridRenderer.tsx"],"sourcesContent":["/**\n * FeatureGrid Renderer\n * Renderiza grid de features com título, subtítulo e cards\n */\n\nimport React from \"react\";\nimport { renderIcon } from \"../content/IconRenderer\";\n\nexport function renderFeatureGrid(block: any): React.ReactNode {\n const {\n title,\n subtitle,\n columns = 3,\n variant = \"default\",\n features = [],\n } = block.props;\n const isImageCards = variant === \"image-cards\";\n\n return (\n <section\n key={block.id}\n style={{\n padding: \"var(--sg-section-padding-md, 4rem 0)\",\n backgroundColor: \"var(--sg-surface)\",\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 {title && (\n <h2\n style={{\n fontSize: \"var(--sg-heading-h2)\",\n marginBottom: \"0.5rem\",\n }}\n >\n {title}\n </h2>\n )}\n {subtitle && (\n <p\n style={{ color: \"var(--sg-muted-text)\", fontSize: \"1.125rem\" }}\n >\n {subtitle}\n </p>\n )}\n </div>\n )}\n <div\n data-block-group=\"Layout\"\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: \"2rem\",\n }}\n >\n {features.map((feature: any, index: number) => (\n <div\n key={index}\n style={{\n backgroundColor: \"var(--sg-bg)\",\n borderRadius: \"var(--sg-card-radius, 0.75rem)\",\n padding: isImageCards && feature.image ? 0 : \"2rem\",\n boxShadow: \"var(--sg-card-shadow)\",\n overflow: \"hidden\",\n }}\n >\n {isImageCards && feature.image && (\n <div\n style={{\n width: \"100%\",\n height: \"200px\",\n backgroundImage: `url(${feature.image})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n }}\n />\n )}\n <div\n style={{\n padding: isImageCards && feature.image ? \"1.5rem\" : 0,\n }}\n >\n {!isImageCards && feature.icon && (\n <div\n style={{\n width: \"3rem\",\n height: \"3rem\",\n backgroundColor: \"var(--sg-primary)\",\n borderRadius: \"0.75rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginBottom: \"1rem\",\n }}\n >\n {renderIcon({\n id: `${block.id}-feat-${index}-icon`,\n props: { name: feature.icon, color: \"var(--sg-primary-text, #fff)\" },\n })}\n </div>\n )}\n <h3\n style={{\n fontSize: \"1.25rem\",\n fontWeight: 600,\n marginBottom: \"0.5rem\",\n }}\n >\n {feature.title}\n </h3>\n <p style={{ color: \"var(--sg-muted-text)\" }}>\n {feature.description}\n </p>\n {feature.link && (\n <a\n href={feature.link.href || \"#\"}\n style={{\n display: \"inline-block\",\n marginTop: \"0.75rem\",\n color: \"var(--sg-primary)\",\n fontWeight: 500,\n textDecoration: \"none\",\n border: \"1px solid var(--sg-primary)\",\n padding: \"0.5rem 1rem\",\n borderRadius: \"var(--sg-button-radius, 0.5rem)\",\n }}\n >\n {feature.link.text}\n </a>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n}\n"],"names":["renderFeatureGrid","block","title","subtitle","columns","variant","features","isImageCards","jsx","jsxs","feature","index","renderIcon"],"mappings":"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"}