@brunoalz/smartgesti-site-editor 1.2.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 (108) 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 +199 -173
  5. package/dist/editor/LandingPageEditor.js.map +1 -1
  6. package/dist/editor/PaletteSelector.d.ts +3 -0
  7. package/dist/editor/PaletteSelector.d.ts.map +1 -1
  8. package/dist/editor/PaletteSelector.js +114 -25
  9. package/dist/editor/PaletteSelector.js.map +1 -1
  10. package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts.map +1 -1
  11. package/dist/editor/PropertyEditor/BlockPropertyEditor.js +86 -48
  12. package/dist/editor/PropertyEditor/BlockPropertyEditor.js.map +1 -1
  13. package/dist/editor/components/RightPanel.d.ts +2 -0
  14. package/dist/editor/components/RightPanel.d.ts.map +1 -1
  15. package/dist/editor/components/RightPanel.js +23 -22
  16. package/dist/editor/components/RightPanel.js.map +1 -1
  17. package/dist/engine/export/exporters/content/AvatarExporter.js +2 -2
  18. package/dist/engine/export/exporters/content/AvatarExporter.js.map +1 -1
  19. package/dist/engine/export/exporters/content/BadgeExporter.js +11 -11
  20. package/dist/engine/export/exporters/content/BadgeExporter.js.map +1 -1
  21. package/dist/engine/export/exporters/sections/AdminSectionExporters.d.ts +6 -0
  22. package/dist/engine/export/exporters/sections/AdminSectionExporters.d.ts.map +1 -0
  23. package/dist/engine/export/exporters/sections/AdminSectionExporters.js +157 -0
  24. package/dist/engine/export/exporters/sections/AdminSectionExporters.js.map +1 -0
  25. package/dist/engine/export/exporters/sections/BlogPostExporters.js +34 -34
  26. package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -1
  27. package/dist/engine/export/exporters/sections/ContentGridExporters.js +16 -16
  28. package/dist/engine/export/exporters/sections/ContentGridExporters.js.map +1 -1
  29. package/dist/engine/export/exporters/sections/MarketingExporters.js +4 -4
  30. package/dist/engine/export/exporters/sections/MarketingExporters.js.map +1 -1
  31. package/dist/engine/export/exporters/sections/index.d.ts.map +1 -1
  32. package/dist/engine/export/exporters/sections/index.js +37 -33
  33. package/dist/engine/export/exporters/sections/index.js.map +1 -1
  34. package/dist/engine/index.js +98 -95
  35. package/dist/engine/index.js.map +1 -1
  36. package/dist/engine/preview/Preview.d.ts.map +1 -1
  37. package/dist/engine/preview/Preview.js +165 -160
  38. package/dist/engine/preview/Preview.js.map +1 -1
  39. package/dist/engine/registry/blocks/sections/aboutSection.d.ts +3 -0
  40. package/dist/engine/registry/blocks/sections/aboutSection.d.ts.map +1 -0
  41. package/dist/engine/registry/blocks/sections/aboutSection.js +117 -0
  42. package/dist/engine/registry/blocks/sections/aboutSection.js.map +1 -0
  43. package/dist/engine/registry/blocks/sections/contactSection.d.ts +3 -0
  44. package/dist/engine/registry/blocks/sections/contactSection.d.ts.map +1 -0
  45. package/dist/engine/registry/blocks/sections/contactSection.js +118 -0
  46. package/dist/engine/registry/blocks/sections/contactSection.js.map +1 -0
  47. package/dist/engine/registry/blocks/sections/index.d.ts +3 -0
  48. package/dist/engine/registry/blocks/sections/index.d.ts.map +1 -1
  49. package/dist/engine/registry/blocks/sections/productShowcase.d.ts +3 -0
  50. package/dist/engine/registry/blocks/sections/productShowcase.d.ts.map +1 -0
  51. package/dist/engine/registry/blocks/sections/productShowcase.js +108 -0
  52. package/dist/engine/registry/blocks/sections/productShowcase.js.map +1 -0
  53. package/dist/engine/render/renderers/content/BadgeRenderer.js +12 -12
  54. package/dist/engine/render/renderers/content/BadgeRenderer.js.map +1 -1
  55. package/dist/engine/render/renderers/sections/AboutSectionRenderer.d.ts +3 -0
  56. package/dist/engine/render/renderers/sections/AboutSectionRenderer.d.ts.map +1 -0
  57. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js +246 -0
  58. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js.map +1 -0
  59. package/dist/engine/render/renderers/sections/ContactSectionRenderer.d.ts +3 -0
  60. package/dist/engine/render/renderers/sections/ContactSectionRenderer.d.ts.map +1 -0
  61. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js +287 -0
  62. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js.map +1 -0
  63. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js +5 -5
  64. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js.map +1 -1
  65. package/dist/engine/render/renderers/sections/FeatureRenderer.js +9 -9
  66. package/dist/engine/render/renderers/sections/FeatureRenderer.js.map +1 -1
  67. package/dist/engine/render/renderers/sections/PricingCardRenderer.js +5 -5
  68. package/dist/engine/render/renderers/sections/PricingCardRenderer.js.map +1 -1
  69. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.d.ts +3 -0
  70. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.d.ts.map +1 -0
  71. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js +287 -0
  72. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js.map +1 -0
  73. package/dist/engine/render/renderers/sections/index.js +26 -20
  74. package/dist/engine/render/renderers/sections/index.js.map +1 -1
  75. package/dist/engine/schema/siteDocument.d.ts +96 -2
  76. package/dist/engine/schema/siteDocument.d.ts.map +1 -1
  77. package/dist/engine/schema/siteDocument.js.map +1 -1
  78. package/dist/hooks/useEditorState.d.ts +2 -0
  79. package/dist/hooks/useEditorState.d.ts.map +1 -1
  80. package/dist/hooks/useEditorState.js +82 -77
  81. package/dist/hooks/useEditorState.js.map +1 -1
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +109 -106
  85. package/dist/index.js.map +1 -1
  86. package/dist/shared/schema.d.ts +1 -1
  87. package/dist/shared/schema.d.ts.map +1 -1
  88. package/dist/shared/schema.js +7 -4
  89. package/dist/shared/schema.js.map +1 -1
  90. package/dist/shared/templates/index.d.ts +6 -0
  91. package/dist/shared/templates/index.d.ts.map +1 -1
  92. package/dist/shared/templates/index.js +49 -23
  93. package/dist/shared/templates/index.js.map +1 -1
  94. package/dist/shared/templates/smartgesti-admin.d.ts +3 -0
  95. package/dist/shared/templates/smartgesti-admin.d.ts.map +1 -0
  96. package/dist/shared/templates/smartgesti-admin.js +423 -0
  97. package/dist/shared/templates/smartgesti-admin.js.map +1 -0
  98. package/dist/utils/blockIcons.d.ts.map +1 -1
  99. package/dist/utils/blockIcons.js +3 -0
  100. package/dist/utils/blockIcons.js.map +1 -1
  101. package/dist/utils/colorUtils.d.ts +73 -16
  102. package/dist/utils/colorUtils.d.ts.map +1 -1
  103. package/dist/utils/colorUtils.js +95 -9
  104. package/dist/utils/colorUtils.js.map +1 -1
  105. package/dist/viewer/LandingPageViewer.d.ts.map +1 -1
  106. package/dist/viewer/LandingPageViewer.js +66 -65
  107. package/dist/viewer/LandingPageViewer.js.map +1 -1
  108. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MarketingExporters.js","sources":["../../../../../src/engine/export/exporters/sections/MarketingExporters.ts"],"sourcesContent":["/**\n * Marketing Sections Exporters\n * Feature, FeatureGrid, Pricing, Testimonials, FAQ, CTA, Stats, Logo Cloud, etc.\n * Mobile-first responsive grids with media queries\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { dataBlockIdAttr, blockIdAttr, escapeHtml, resolveHref, linkTargetAttr } from \"../../shared/htmlHelpers\";\nimport { generateScopedId } from \"../../shared/idGenerator\";\nimport { resolveResponsiveColumns, generateResponsiveGridStyles } from \"../../shared/responsiveGridHelper\";\nimport {\n generateButtonHoverStyles,\n generateButtonOverlayCSS,\n getButtonHoverKeyframes,\n type ButtonHoverEffect,\n type ButtonHoverOverlay,\n} from \"../../../shared/hoverEffects\";\n\nexport function exportFeature(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { icon, title, description } = (block as any).props;\n const iconHtml = icon\n ? `<div style=\"width: 3rem; height: 3rem; background-color: var(--sg-primary); border-radius: 0.75rem; display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; color: #fff;\">[★]</div>`\n : \"\";\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"padding: 1.5rem; text-align: center;\">${iconHtml}<h3 style=\"font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(title)}</h3><p style=\"color: var(--sg-muted-text); font-size: 0.875rem;\">${escapeHtml(description)}</p></div>`;\n}\n\nexport function exportFeatureGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n title,\n subtitle,\n columns = 3,\n variant = \"default\",\n features = [],\n } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"feature-grid\");\n const responsiveConfig = resolveResponsiveColumns(columns, 1, 2, columns);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\");\n\n const isImageCards = variant === \"image-cards\";\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n const featuresHtml = features\n .map((f: any) => {\n const imgBlock =\n isImageCards && f.image\n ? `<div style=\"width: 100%; height: 200px; background-image: url(${escapeHtml(f.image)}); background-size: cover; background-position: center;\"></div>`\n : \"\";\n const iconBlock =\n !isImageCards && f.icon\n ? `<div style=\"width: 3rem; height: 3rem; background-color: var(--sg-primary); border-radius: 0.75rem; display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; color: #fff;\">[★]</div>`\n : \"\";\n const linkBlock = f.link\n ? `<a href=\"${escapeHtml(f.link.href || \"#\")}\" style=\"display: inline-block; margin-top: 0.75rem; color: var(--sg-primary); font-weight: 500; text-decoration: none; border: 1px solid var(--sg-primary); padding: 0.5rem 1rem; border-radius: var(--sg-button-radius);\">${escapeHtml(f.link.text)}</a>`\n : \"\";\n const innerPadding = isImageCards && f.image ? \"1.5rem\" : \"2rem\";\n return `<div style=\"background-color: var(--sg-bg); border-radius: 0.75rem; padding: ${isImageCards && f.image ? 0 : \"2rem\"}; box-shadow: var(--sg-card-shadow); overflow: hidden;\">${imgBlock}<div style=\"padding: ${innerPadding};\">${iconBlock}<h3 style=\"font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(f.title)}</h3><p style=\"color: var(--sg-muted-text);\">${escapeHtml(f.description)}</p>${linkBlock}</div></div>`;\n })\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-surface);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div data-block-group=\"Layout\" id=\"${gridId}\" style=\"${inlineStyles}\">${featuresHtml}</div></div></section>`;\n}\n\nexport function exportCta(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n title,\n description: ctaDesc,\n primaryButton,\n secondaryButton,\n variant = \"centered\",\n // Button size\n buttonSize = \"md\",\n // Button hover effects\n buttonHoverEffect = \"scale\",\n buttonHoverIntensity = 50,\n buttonHoverOverlay = \"none\",\n buttonHoverIconName = \"arrow-right\",\n } = (block as any).props;\n\n // Size-based styles\n const sizeStyles: Record<string, { padding: string; fontSize: string }> = {\n sm: { padding: \"0.5rem 1rem\", fontSize: \"0.875rem\" },\n md: { padding: \"0.75rem 1.5rem\", fontSize: \"1rem\" },\n lg: { padding: \"1rem 2rem\", fontSize: \"1.125rem\" },\n };\n const btnSize = sizeStyles[buttonSize] || sizeStyles.md;\n\n // Responsive buttons: column (mobile) → row (desktop)\n const ctaId = generateScopedId(block.id || \"\", \"cta-actions\");\n const scope = `[data-block-id=\"${block.id}\"]`;\n\n const isGradient = variant === \"gradient\";\n const primaryColor = theme?.colors?.primary || \"#3b82f6\";\n const primaryText = theme?.colors?.primaryText || \"#ffffff\";\n\n // Button colors depend on gradient variant\n const primaryBtnBg = isGradient ? \"#fff\" : primaryColor;\n const primaryBtnText = isGradient ? primaryColor : primaryText;\n const secondaryBtnBg = \"transparent\";\n const secondaryBtnText = isGradient ? \"#fff\" : primaryColor;\n const secondaryBtnBorder = isGradient ? \"#fff\" : primaryColor;\n\n let buttonsCss = `\n @media (max-width: 640px) {\n #${ctaId} {\n flex-direction: column !important;\n width: 100%;\n }\n #${ctaId} a {\n width: 100% !important;\n text-align: center;\n }\n }\n `;\n\n // Generate hover CSS\n if (buttonHoverEffect !== \"none\") {\n // Primary button hover\n const primaryHoverResult = generateButtonHoverStyles({\n effect: buttonHoverEffect as ButtonHoverEffect,\n intensity: buttonHoverIntensity,\n buttonColor: primaryBtnBg,\n buttonTextColor: primaryBtnText,\n variant: \"solid\",\n });\n\n // Secondary button hover\n const secondaryHoverResult = generateButtonHoverStyles({\n effect: buttonHoverEffect as ButtonHoverEffect,\n intensity: buttonHoverIntensity,\n buttonColor: secondaryBtnBorder,\n buttonTextColor: secondaryBtnText,\n variant: \"outline\",\n });\n\n // Base styles if needed\n if (primaryHoverResult.base) {\n buttonsCss += `\n ${scope} .sg-cta__btn--primary {\n ${primaryHoverResult.base}\n }\n `;\n }\n\n if (secondaryHoverResult.base) {\n buttonsCss += `\n ${scope} .sg-cta__btn--secondary {\n ${secondaryHoverResult.base}\n }\n `;\n }\n\n // Hover styles\n buttonsCss += `\n ${scope} .sg-cta__btn--primary:hover {\n ${primaryHoverResult.hover}\n }\n ${scope} .sg-cta__btn--secondary:hover {\n ${secondaryHoverResult.hover}\n }\n `;\n\n // Add keyframes for pulse animation\n buttonsCss += getButtonHoverKeyframes();\n }\n\n // Efeito overlay (adicional)\n if (buttonHoverOverlay && buttonHoverOverlay !== \"none\") {\n buttonsCss += generateButtonOverlayCSS(`${scope} .sg-cta__btn--primary`, {\n overlay: buttonHoverOverlay as ButtonHoverOverlay,\n primaryColor,\n iconName: buttonHoverIconName,\n textColor: primaryBtnText,\n });\n buttonsCss += generateButtonOverlayCSS(`${scope} .sg-cta__btn--secondary`, {\n overlay: buttonHoverOverlay as ButtonHoverOverlay,\n primaryColor,\n iconName: buttonHoverIconName,\n textColor: secondaryBtnText,\n });\n }\n\n const bgStyle = isGradient\n ? \"background: linear-gradient(135deg, var(--sg-primary), var(--sg-accent));\"\n : \"background-color: var(--sg-surface);\";\n const textColor = isGradient ? \"#fff\" : \"var(--sg-text)\";\n const mutedColor = isGradient\n ? \"rgba(255,255,255,0.9)\"\n : \"var(--sg-muted-text)\";\n const ctaPrimaryHref = primaryButton\n ? resolveHref(primaryButton.href || \"#\", basePath)\n : \"#\";\n const ctaSecondaryHref = secondaryButton\n ? resolveHref(secondaryButton.href || \"#\", basePath)\n : \"#\";\n\n const primaryBtnStyle = `padding: ${btnSize.padding}; font-size: ${btnSize.fontSize}; background-color: ${primaryBtnBg}; color: ${primaryBtnText}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`;\n const secondaryBtnStyle = `padding: ${btnSize.padding}; font-size: ${btnSize.fontSize}; background-color: ${secondaryBtnBg}; color: ${secondaryBtnText}; border: 2px solid ${secondaryBtnBorder}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`;\n\n const primaryBtnHtml = primaryButton\n ? `<a href=\"${escapeHtml(ctaPrimaryHref)}\"${linkTargetAttr(ctaPrimaryHref, basePath)} class=\"sg-cta__btn sg-cta__btn--primary\" style=\"${primaryBtnStyle}\">${escapeHtml(primaryButton.text)}</a>`\n : \"\";\n const secondaryBtnHtml = secondaryButton\n ? `<a href=\"${escapeHtml(ctaSecondaryHref)}\"${linkTargetAttr(ctaSecondaryHref, basePath)} class=\"sg-cta__btn sg-cta__btn--secondary\" style=\"${secondaryBtnStyle}\">${escapeHtml(secondaryButton.text)}</a>`\n : \"\";\n return `<style>${buttonsCss}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; ${bgStyle} text-align: center;\"><div style=\"max-width: 800px; margin: 0 auto; padding: 0 1rem;\"><div data-block-group=\"Conteúdo\"><h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 1rem; color: ${textColor};\">${escapeHtml(title)}</h2>${ctaDesc ? `<p style=\"font-size: 1.125rem; margin-bottom: 2rem; color: ${mutedColor};\">${escapeHtml(ctaDesc)}</p>` : \"\"}</div><div data-block-group=\"Botoes\" id=\"${ctaId}\" style=\"display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap;\">${primaryBtnHtml}${secondaryBtnHtml}</div></div></section>`;\n}\n\nexport function exportPricingCard(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n name,\n price,\n period,\n description: desc,\n features = [],\n buttonText,\n highlighted,\n badge: pBadge,\n } = (block as any).props;\n\n const badgeHtml = pBadge\n ? `<span style=\"position: absolute; top: -0.75rem; right: 1rem; background-color: var(--sg-primary); color: #fff; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem;\">${escapeHtml(pBadge)}</span>`\n : \"\";\n const featuresHtml = features\n .map(\n (f: string) =>\n `<li style=\"padding: 0.5rem 0; display: flex; align-items: center; gap: 0.5rem;\"><span style=\"color: var(--sg-success);\">\\u2713</span>${escapeHtml(f)}</li>`,\n )\n .join(\"\");\n const buttonStyle = highlighted\n ? \"background-color: var(--sg-primary); color: var(--sg-primary-text); border: none;\"\n : \"background-color: transparent; color: var(--sg-primary); border: 1px solid var(--sg-primary);\";\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"background-color: var(--sg-bg); border-radius: 0.75rem; padding: 2rem; box-shadow: ${highlighted ? \"var(--sg-shadow-strong)\" : \"var(--sg-card-shadow)\"}; border: ${highlighted ? \"2px solid var(--sg-primary)\" : \"1px solid var(--sg-border)\"}; position: relative;\">${badgeHtml}<h3 style=\"font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(name)}</h3>${desc ? `<p style=\"color: var(--sg-muted-text); margin-bottom: 1rem;\">${escapeHtml(desc)}</p>` : \"\"}<div style=\"margin-bottom: 1.5rem;\"><span style=\"font-size: 2.5rem; font-weight: 700;\">${escapeHtml(price)}</span>${period ? `<span style=\"color: var(--sg-muted-text);\">${escapeHtml(period)}</span>` : \"\"}</div><ul style=\"list-style: none; padding: 0; margin-bottom: 1.5rem;\">${featuresHtml}</ul>${buttonText ? `<button style=\"width: 100%; padding: 0.625rem 1.25rem; ${buttonStyle} border-radius: var(--sg-button-radius); font-weight: 500; cursor: pointer;\">${escapeHtml(buttonText)}</button>` : \"\"}</div>`;\n}\n\nexport function exportPricing(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const { title, subtitle, plans = [] } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop, max 4)\n const gridId = generateScopedId(block.id || \"\", \"pricing-grid\");\n const maxCols = Math.min(plans.length, 4);\n const responsiveConfig = resolveResponsiveColumns({ lg: maxCols }, 1, 2, maxCols);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\", \"align-items: start;\");\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportPricing requires renderChild function\");\n }\n\n const plansHtml = plans\n .map((p: any) =>\n renderChild(\n { id: `${block.id}-plan`, type: \"pricingCard\", props: p } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div id=\"${gridId}\" style=\"${inlineStyles}\">${plansHtml}</div></div></section>`;\n}\n\nexport function exportTestimonial(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n quote,\n authorName,\n authorRole,\n authorCompany,\n authorAvatar,\n rating,\n } = (block as any).props;\n\n const ratingHtml = rating\n ? `<div data-block-group=\"Estilo\" style=\"margin-bottom: 1rem; color: #fbbf24;\">${\"\\u2605\".repeat(rating)}</div>`\n : \"\";\n const avatarHtml = authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${escapeHtml(authorName)}\" style=\"width: 3rem; height: 3rem; border-radius: 50%; object-fit: cover;\" />`\n : `<div style=\"width: 3rem; height: 3rem; border-radius: 50%; background-color: var(--sg-primary); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 600;\">${\n authorName\n ? authorName\n .split(\" \")\n .map((n: string) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n : \"?\"\n }</div>`;\n return `<div ${dataBlockIdAttr(block.id)} style=\"background-color: var(--sg-surface); border-radius: var(--sg-card-radius); padding: 2rem;\">${ratingHtml}<blockquote data-block-group=\"Conteúdo\" style=\"font-size: 1rem; margin-bottom: 1.5rem; font-style: italic;\">\"${escapeHtml(quote)}\"</blockquote><div data-block-group=\"Autor\" style=\"display: flex; align-items: center; gap: 1rem;\">${avatarHtml}<div><div style=\"font-weight: 600;\">${escapeHtml(authorName)}</div>${authorRole || authorCompany ? `<div style=\"color: var(--sg-muted-text); font-size: 0.875rem;\">${escapeHtml(authorRole || \"\")}${authorRole && authorCompany ? \", \" : \"\"}${escapeHtml(authorCompany || \"\")}</div>` : \"\"}</div></div></div>`;\n}\n\nexport function exportTestimonialGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n title,\n subtitle,\n columns = 3,\n testimonials = [],\n } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"testimonial-grid\");\n const responsiveConfig = resolveResponsiveColumns(columns, 1, 2, columns);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\");\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportTestimonialGrid requires renderChild function\");\n }\n\n const testimonialsHtml = testimonials\n .map((t: any) =>\n renderChild(\n { id: `${block.id}-t`, type: \"testimonial\", props: t } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div data-block-group=\"Layout\" id=\"${gridId}\" style=\"${inlineStyles}\">${testimonialsHtml}</div></div></section>`;\n}\n\nexport function exportFaqItem(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { question, answer } = (block as any).props;\n return `<details ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"border-bottom: 1px solid var(--sg-border); padding: 1rem 0;\"><summary style=\"font-weight: 600; cursor: pointer; display: flex; justify-content: space-between; align-items: center;\">${escapeHtml(question)}<span>+</span></summary><p style=\"margin-top: 1rem; color: var(--sg-muted-text);\">${escapeHtml(answer)}</p></details>`;\n}\n\nexport function exportFaq(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const { title, subtitle, items = [] } = (block as any).props;\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportFaq requires renderChild function\");\n }\n\n const itemsHtml = items\n .map((i: any) =>\n renderChild(\n { id: `${block.id}-faq`, type: \"faqItem\", props: i } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\");\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 800px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div>${itemsHtml}</div></div></section>`;\n}\n\nexport function exportStats(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { title, subtitle, items = [] } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"stats-grid\");\n const responsiveConfig = resolveResponsiveColumns({ lg: items.length }, 1, 2, items.length);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\", \"text-align: center;\");\n\n const headerHtml =\n title || subtitle\n ? `<div style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n const itemsHtml = items\n .map(\n (i: any) =>\n `<div style=\"text-align: center;\"><div style=\"font-size: 3rem; font-weight: 700; color: var(--sg-primary);\">${escapeHtml(i.prefix || \"\")}${escapeHtml(i.value)}${escapeHtml(i.suffix || \"\")}</div><div style=\"color: var(--sg-muted-text);\">${escapeHtml(i.label)}</div></div>`,\n )\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-surface);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div id=\"${gridId}\" style=\"${inlineStyles}\">${itemsHtml}</div></div></section>`;\n}\n\nexport function exportStatItem(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { value, label, prefix, suffix } = (block as any).props;\n return `<div ${dataBlockIdAttr(block.id)} style=\"text-align: center;\"><div style=\"font-size: 2.5rem; font-weight: 700; color: var(--sg-primary);\">${escapeHtml(prefix || \"\")}${escapeHtml(value)}${escapeHtml(suffix || \"\")}</div><div style=\"color: var(--sg-muted-text);\">${escapeHtml(label)}</div></div>`;\n}\n\nexport function exportLogoCloud(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { title, logos = [], grayscale } = (block as any).props;\n\n const titleHtml = title\n ? `<p style=\"color: var(--sg-muted-text); margin-bottom: 2rem;\">${escapeHtml(title)}</p>`\n : \"\";\n\n const logosHtml = logos\n .map(\n (l: any) =>\n `<img src=\"${escapeHtml(l.src)}\" alt=\"${escapeHtml(l.alt)}\" style=\"height: 2rem; object-fit: contain; ${grayscale ? \"filter: grayscale(100%); opacity: 0.6;\" : \"\"}\" />`,\n )\n .join(\"\");\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 2rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem; text-align: center;\">${titleHtml}<div style=\"display: flex; justify-content: center; align-items: center; gap: 3rem; flex-wrap: wrap;\">${logosHtml}</div></div></section>`;\n}\n\nexport function exportSocialLinks(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n links = [],\n size = \"md\",\n variant = \"default\",\n } = (block as any).props;\n\n const sizeMap: Record<string, string> = {\n sm: \"1.25rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n };\n\n const iconSize = sizeMap[size] || sizeMap.md;\n\n const linksHtml = links\n .map(\n (l: any) =>\n `<a href=\"${escapeHtml(l.url)}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"display: flex; align-items: center; justify-content: center; width: ${variant === \"filled\" ? `calc(${iconSize} + 0.75rem)` : iconSize}; height: ${variant === \"filled\" ? `calc(${iconSize} + 0.75rem)` : iconSize}; background-color: ${variant === \"filled\" ? \"var(--sg-surface)\" : \"transparent\"}; border-radius: ${variant === \"filled\" ? \"50%\" : \"0\"}; color: var(--sg-muted-text); text-decoration: none;\">[${escapeHtml(l.platform)}]</a>`,\n )\n .join(\"\");\n\n return `<div ${dataBlockIdAttr(block.id)} style=\"display: flex; gap: 1rem; align-items: center;\">${linksHtml}</div>`;\n}\n"],"names":["exportFeature","block","depth","basePath","theme","icon","title","description","iconHtml","dataBlockIdAttr","escapeHtml","exportFeatureGrid","renderChild","subtitle","columns","variant","features","gridId","generateScopedId","responsiveConfig","resolveResponsiveColumns","inlineStyles","mediaQueries","generateResponsiveGridStyles","isImageCards","headerHtml","featuresHtml","f","imgBlock","iconBlock","linkBlock","innerPadding","blockIdAttr","exportCta","ctaDesc","primaryButton","secondaryButton","buttonSize","buttonHoverEffect","buttonHoverIntensity","buttonHoverOverlay","buttonHoverIconName","sizeStyles","btnSize","ctaId","scope","isGradient","primaryColor","primaryText","primaryBtnBg","primaryBtnText","secondaryBtnBg","secondaryBtnText","secondaryBtnBorder","buttonsCss","primaryHoverResult","generateButtonHoverStyles","secondaryHoverResult","getButtonHoverKeyframes","generateButtonOverlayCSS","bgStyle","textColor","mutedColor","ctaPrimaryHref","resolveHref","ctaSecondaryHref","primaryBtnStyle","secondaryBtnStyle","primaryBtnHtml","linkTargetAttr","secondaryBtnHtml","exportPricingCard","name","price","period","desc","buttonText","highlighted","pBadge","badgeHtml","buttonStyle","exportPricing","plans","maxCols","plansHtml","p","exportTestimonial","quote","authorName","authorRole","authorCompany","authorAvatar","rating","ratingHtml","avatarHtml","n","exportTestimonialGrid","testimonials","testimonialsHtml","t","exportFaqItem","question","answer","exportFaq","items","itemsHtml","i","exportStats","exportStatItem","value","label","prefix","suffix","exportLogoCloud","logos","grayscale","titleHtml","logosHtml","l","exportSocialLinks","links","size","sizeMap","iconSize","linksHtml"],"mappings":"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"}
1
+ {"version":3,"file":"MarketingExporters.js","sources":["../../../../../src/engine/export/exporters/sections/MarketingExporters.ts"],"sourcesContent":["/**\n * Marketing Sections Exporters\n * Feature, FeatureGrid, Pricing, Testimonials, FAQ, CTA, Stats, Logo Cloud, etc.\n * Mobile-first responsive grids with media queries\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { dataBlockIdAttr, blockIdAttr, escapeHtml, resolveHref, linkTargetAttr } from \"../../shared/htmlHelpers\";\nimport { generateScopedId } from \"../../shared/idGenerator\";\nimport { resolveResponsiveColumns, generateResponsiveGridStyles } from \"../../shared/responsiveGridHelper\";\nimport {\n generateButtonHoverStyles,\n generateButtonOverlayCSS,\n getButtonHoverKeyframes,\n type ButtonHoverEffect,\n type ButtonHoverOverlay,\n} from \"../../../shared/hoverEffects\";\n\nexport function exportFeature(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { icon, title, description } = (block as any).props;\n const iconHtml = icon\n ? `<div style=\"width: 3rem; height: 3rem; background-color: var(--sg-primary); border-radius: 0.75rem; display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; color: var(--sg-primary-text, #fff);\">[★]</div>`\n : \"\";\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"padding: 1.5rem; text-align: center;\">${iconHtml}<h3 style=\"font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(title)}</h3><p style=\"color: var(--sg-muted-text); font-size: 0.875rem;\">${escapeHtml(description)}</p></div>`;\n}\n\nexport function exportFeatureGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n title,\n subtitle,\n columns = 3,\n variant = \"default\",\n features = [],\n } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"feature-grid\");\n const responsiveConfig = resolveResponsiveColumns(columns, 1, 2, columns);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\");\n\n const isImageCards = variant === \"image-cards\";\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n const featuresHtml = features\n .map((f: any) => {\n const imgBlock =\n isImageCards && f.image\n ? `<div style=\"width: 100%; height: 200px; background-image: url(${escapeHtml(f.image)}); background-size: cover; background-position: center;\"></div>`\n : \"\";\n const iconBlock =\n !isImageCards && f.icon\n ? `<div style=\"width: 3rem; height: 3rem; background-color: var(--sg-primary); border-radius: 0.75rem; display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; color: var(--sg-primary-text, #fff);\">[★]</div>`\n : \"\";\n const linkBlock = f.link\n ? `<a href=\"${escapeHtml(f.link.href || \"#\")}\" style=\"display: inline-block; margin-top: 0.75rem; color: var(--sg-primary); font-weight: 500; text-decoration: none; border: 1px solid var(--sg-primary); padding: 0.5rem 1rem; border-radius: var(--sg-button-radius);\">${escapeHtml(f.link.text)}</a>`\n : \"\";\n const innerPadding = isImageCards && f.image ? \"1.5rem\" : \"2rem\";\n return `<div style=\"background-color: var(--sg-bg); border-radius: 0.75rem; padding: ${isImageCards && f.image ? 0 : \"2rem\"}; box-shadow: var(--sg-card-shadow); overflow: hidden;\">${imgBlock}<div style=\"padding: ${innerPadding};\">${iconBlock}<h3 style=\"font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(f.title)}</h3><p style=\"color: var(--sg-muted-text);\">${escapeHtml(f.description)}</p>${linkBlock}</div></div>`;\n })\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-surface);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div data-block-group=\"Layout\" id=\"${gridId}\" style=\"${inlineStyles}\">${featuresHtml}</div></div></section>`;\n}\n\nexport function exportCta(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n title,\n description: ctaDesc,\n primaryButton,\n secondaryButton,\n variant = \"centered\",\n // Button size\n buttonSize = \"md\",\n // Button hover effects\n buttonHoverEffect = \"scale\",\n buttonHoverIntensity = 50,\n buttonHoverOverlay = \"none\",\n buttonHoverIconName = \"arrow-right\",\n } = (block as any).props;\n\n // Size-based styles\n const sizeStyles: Record<string, { padding: string; fontSize: string }> = {\n sm: { padding: \"0.5rem 1rem\", fontSize: \"0.875rem\" },\n md: { padding: \"0.75rem 1.5rem\", fontSize: \"1rem\" },\n lg: { padding: \"1rem 2rem\", fontSize: \"1.125rem\" },\n };\n const btnSize = sizeStyles[buttonSize] || sizeStyles.md;\n\n // Responsive buttons: column (mobile) → row (desktop)\n const ctaId = generateScopedId(block.id || \"\", \"cta-actions\");\n const scope = `[data-block-id=\"${block.id}\"]`;\n\n const isGradient = variant === \"gradient\";\n const primaryColor = theme?.colors?.primary || \"#3b82f6\";\n const primaryText = theme?.colors?.primaryText || \"#ffffff\";\n\n // Button colors depend on gradient variant\n const primaryBtnBg = isGradient ? \"#fff\" : primaryColor;\n const primaryBtnText = isGradient ? primaryColor : primaryText;\n const secondaryBtnBg = \"transparent\";\n const secondaryBtnText = isGradient ? \"#fff\" : primaryColor;\n const secondaryBtnBorder = isGradient ? \"#fff\" : primaryColor;\n\n let buttonsCss = `\n @media (max-width: 640px) {\n #${ctaId} {\n flex-direction: column !important;\n width: 100%;\n }\n #${ctaId} a {\n width: 100% !important;\n text-align: center;\n }\n }\n `;\n\n // Generate hover CSS\n if (buttonHoverEffect !== \"none\") {\n // Primary button hover\n const primaryHoverResult = generateButtonHoverStyles({\n effect: buttonHoverEffect as ButtonHoverEffect,\n intensity: buttonHoverIntensity,\n buttonColor: primaryBtnBg,\n buttonTextColor: primaryBtnText,\n variant: \"solid\",\n });\n\n // Secondary button hover\n const secondaryHoverResult = generateButtonHoverStyles({\n effect: buttonHoverEffect as ButtonHoverEffect,\n intensity: buttonHoverIntensity,\n buttonColor: secondaryBtnBorder,\n buttonTextColor: secondaryBtnText,\n variant: \"outline\",\n });\n\n // Base styles if needed\n if (primaryHoverResult.base) {\n buttonsCss += `\n ${scope} .sg-cta__btn--primary {\n ${primaryHoverResult.base}\n }\n `;\n }\n\n if (secondaryHoverResult.base) {\n buttonsCss += `\n ${scope} .sg-cta__btn--secondary {\n ${secondaryHoverResult.base}\n }\n `;\n }\n\n // Hover styles\n buttonsCss += `\n ${scope} .sg-cta__btn--primary:hover {\n ${primaryHoverResult.hover}\n }\n ${scope} .sg-cta__btn--secondary:hover {\n ${secondaryHoverResult.hover}\n }\n `;\n\n // Add keyframes for pulse animation\n buttonsCss += getButtonHoverKeyframes();\n }\n\n // Efeito overlay (adicional)\n if (buttonHoverOverlay && buttonHoverOverlay !== \"none\") {\n buttonsCss += generateButtonOverlayCSS(`${scope} .sg-cta__btn--primary`, {\n overlay: buttonHoverOverlay as ButtonHoverOverlay,\n primaryColor,\n iconName: buttonHoverIconName,\n textColor: primaryBtnText,\n });\n buttonsCss += generateButtonOverlayCSS(`${scope} .sg-cta__btn--secondary`, {\n overlay: buttonHoverOverlay as ButtonHoverOverlay,\n primaryColor,\n iconName: buttonHoverIconName,\n textColor: secondaryBtnText,\n });\n }\n\n const bgStyle = isGradient\n ? \"background: linear-gradient(135deg, var(--sg-primary), var(--sg-accent));\"\n : \"background-color: var(--sg-surface);\";\n const textColor = isGradient ? \"#fff\" : \"var(--sg-text)\";\n const mutedColor = isGradient\n ? \"rgba(255,255,255,0.9)\"\n : \"var(--sg-muted-text)\";\n const ctaPrimaryHref = primaryButton\n ? resolveHref(primaryButton.href || \"#\", basePath)\n : \"#\";\n const ctaSecondaryHref = secondaryButton\n ? resolveHref(secondaryButton.href || \"#\", basePath)\n : \"#\";\n\n const primaryBtnStyle = `padding: ${btnSize.padding}; font-size: ${btnSize.fontSize}; background-color: ${primaryBtnBg}; color: ${primaryBtnText}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`;\n const secondaryBtnStyle = `padding: ${btnSize.padding}; font-size: ${btnSize.fontSize}; background-color: ${secondaryBtnBg}; color: ${secondaryBtnText}; border: 2px solid ${secondaryBtnBorder}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`;\n\n const primaryBtnHtml = primaryButton\n ? `<a href=\"${escapeHtml(ctaPrimaryHref)}\"${linkTargetAttr(ctaPrimaryHref, basePath)} class=\"sg-cta__btn sg-cta__btn--primary\" style=\"${primaryBtnStyle}\">${escapeHtml(primaryButton.text)}</a>`\n : \"\";\n const secondaryBtnHtml = secondaryButton\n ? `<a href=\"${escapeHtml(ctaSecondaryHref)}\"${linkTargetAttr(ctaSecondaryHref, basePath)} class=\"sg-cta__btn sg-cta__btn--secondary\" style=\"${secondaryBtnStyle}\">${escapeHtml(secondaryButton.text)}</a>`\n : \"\";\n return `<style>${buttonsCss}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; ${bgStyle} text-align: center;\"><div style=\"max-width: 800px; margin: 0 auto; padding: 0 1rem;\"><div data-block-group=\"Conteúdo\"><h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 1rem; color: ${textColor};\">${escapeHtml(title)}</h2>${ctaDesc ? `<p style=\"font-size: 1.125rem; margin-bottom: 2rem; color: ${mutedColor};\">${escapeHtml(ctaDesc)}</p>` : \"\"}</div><div data-block-group=\"Botoes\" id=\"${ctaId}\" style=\"display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap;\">${primaryBtnHtml}${secondaryBtnHtml}</div></div></section>`;\n}\n\nexport function exportPricingCard(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n name,\n price,\n period,\n description: desc,\n features = [],\n buttonText,\n highlighted,\n badge: pBadge,\n } = (block as any).props;\n\n const badgeHtml = pBadge\n ? `<span style=\"position: absolute; top: -0.75rem; right: 1rem; background-color: var(--sg-primary); color: var(--sg-primary-text, #fff); padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem;\">${escapeHtml(pBadge)}</span>`\n : \"\";\n const featuresHtml = features\n .map(\n (f: string) =>\n `<li style=\"padding: 0.5rem 0; display: flex; align-items: center; gap: 0.5rem;\"><span style=\"color: var(--sg-success);\">\\u2713</span>${escapeHtml(f)}</li>`,\n )\n .join(\"\");\n const buttonStyle = highlighted\n ? \"background-color: var(--sg-primary); color: var(--sg-primary-text); border: none;\"\n : \"background-color: transparent; color: var(--sg-primary); border: 1px solid var(--sg-primary);\";\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"background-color: var(--sg-bg); border-radius: 0.75rem; padding: 2rem; box-shadow: ${highlighted ? \"var(--sg-shadow-strong)\" : \"var(--sg-card-shadow)\"}; border: ${highlighted ? \"2px solid var(--sg-primary)\" : \"1px solid var(--sg-border)\"}; position: relative;\">${badgeHtml}<h3 style=\"font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(name)}</h3>${desc ? `<p style=\"color: var(--sg-muted-text); margin-bottom: 1rem;\">${escapeHtml(desc)}</p>` : \"\"}<div style=\"margin-bottom: 1.5rem;\"><span style=\"font-size: 2.5rem; font-weight: 700;\">${escapeHtml(price)}</span>${period ? `<span style=\"color: var(--sg-muted-text);\">${escapeHtml(period)}</span>` : \"\"}</div><ul style=\"list-style: none; padding: 0; margin-bottom: 1.5rem;\">${featuresHtml}</ul>${buttonText ? `<button style=\"width: 100%; padding: 0.625rem 1.25rem; ${buttonStyle} border-radius: var(--sg-button-radius); font-weight: 500; cursor: pointer;\">${escapeHtml(buttonText)}</button>` : \"\"}</div>`;\n}\n\nexport function exportPricing(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const { title, subtitle, plans = [] } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop, max 4)\n const gridId = generateScopedId(block.id || \"\", \"pricing-grid\");\n const maxCols = Math.min(plans.length, 4);\n const responsiveConfig = resolveResponsiveColumns({ lg: maxCols }, 1, 2, maxCols);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\", \"align-items: start;\");\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportPricing requires renderChild function\");\n }\n\n const plansHtml = plans\n .map((p: any) =>\n renderChild(\n { id: `${block.id}-plan`, type: \"pricingCard\", props: p } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div id=\"${gridId}\" style=\"${inlineStyles}\">${plansHtml}</div></div></section>`;\n}\n\nexport function exportTestimonial(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n quote,\n authorName,\n authorRole,\n authorCompany,\n authorAvatar,\n rating,\n } = (block as any).props;\n\n const ratingHtml = rating\n ? `<div data-block-group=\"Estilo\" style=\"margin-bottom: 1rem; color: #fbbf24;\">${\"\\u2605\".repeat(rating)}</div>`\n : \"\";\n const avatarHtml = authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${escapeHtml(authorName)}\" style=\"width: 3rem; height: 3rem; border-radius: 50%; object-fit: cover;\" />`\n : `<div style=\"width: 3rem; height: 3rem; border-radius: 50%; background-color: var(--sg-primary); color: var(--sg-primary-text, #fff); display: flex; align-items: center; justify-content: center; font-weight: 600;\">${\n authorName\n ? authorName\n .split(\" \")\n .map((n: string) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n : \"?\"\n }</div>`;\n return `<div ${dataBlockIdAttr(block.id)} style=\"background-color: var(--sg-surface); border-radius: var(--sg-card-radius); padding: 2rem;\">${ratingHtml}<blockquote data-block-group=\"Conteúdo\" style=\"font-size: 1rem; margin-bottom: 1.5rem; font-style: italic;\">\"${escapeHtml(quote)}\"</blockquote><div data-block-group=\"Autor\" style=\"display: flex; align-items: center; gap: 1rem;\">${avatarHtml}<div><div style=\"font-weight: 600;\">${escapeHtml(authorName)}</div>${authorRole || authorCompany ? `<div style=\"color: var(--sg-muted-text); font-size: 0.875rem;\">${escapeHtml(authorRole || \"\")}${authorRole && authorCompany ? \", \" : \"\"}${escapeHtml(authorCompany || \"\")}</div>` : \"\"}</div></div></div>`;\n}\n\nexport function exportTestimonialGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n title,\n subtitle,\n columns = 3,\n testimonials = [],\n } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"testimonial-grid\");\n const responsiveConfig = resolveResponsiveColumns(columns, 1, 2, columns);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\");\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportTestimonialGrid requires renderChild function\");\n }\n\n const testimonialsHtml = testimonials\n .map((t: any) =>\n renderChild(\n { id: `${block.id}-t`, type: \"testimonial\", props: t } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div data-block-group=\"Layout\" id=\"${gridId}\" style=\"${inlineStyles}\">${testimonialsHtml}</div></div></section>`;\n}\n\nexport function exportFaqItem(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { question, answer } = (block as any).props;\n return `<details ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"border-bottom: 1px solid var(--sg-border); padding: 1rem 0;\"><summary style=\"font-weight: 600; cursor: pointer; display: flex; justify-content: space-between; align-items: center;\">${escapeHtml(question)}<span>+</span></summary><p style=\"margin-top: 1rem; color: var(--sg-muted-text);\">${escapeHtml(answer)}</p></details>`;\n}\n\nexport function exportFaq(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const { title, subtitle, items = [] } = (block as any).props;\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Conteúdo\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportFaq requires renderChild function\");\n }\n\n const itemsHtml = items\n .map((i: any) =>\n renderChild(\n { id: `${block.id}-faq`, type: \"faqItem\", props: i } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\");\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 800px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div>${itemsHtml}</div></div></section>`;\n}\n\nexport function exportStats(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { title, subtitle, items = [] } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) → 2 cols (tablet) → N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"stats-grid\");\n const responsiveConfig = resolveResponsiveColumns({ lg: items.length }, 1, 2, items.length);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(gridId, responsiveConfig, \"2rem\", \"text-align: center;\");\n\n const headerHtml =\n title || subtitle\n ? `<div style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text); font-size: 1.125rem;\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n const itemsHtml = items\n .map(\n (i: any) =>\n `<div style=\"text-align: center;\"><div style=\"font-size: 3rem; font-weight: 700; color: var(--sg-primary);\">${escapeHtml(i.prefix || \"\")}${escapeHtml(i.value)}${escapeHtml(i.suffix || \"\")}</div><div style=\"color: var(--sg-muted-text);\">${escapeHtml(i.label)}</div></div>`,\n )\n .join(\"\");\n\n return `<style>${mediaQueries}</style><section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-surface);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div id=\"${gridId}\" style=\"${inlineStyles}\">${itemsHtml}</div></div></section>`;\n}\n\nexport function exportStatItem(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { value, label, prefix, suffix } = (block as any).props;\n return `<div ${dataBlockIdAttr(block.id)} style=\"text-align: center;\"><div style=\"font-size: 2.5rem; font-weight: 700; color: var(--sg-primary);\">${escapeHtml(prefix || \"\")}${escapeHtml(value)}${escapeHtml(suffix || \"\")}</div><div style=\"color: var(--sg-muted-text);\">${escapeHtml(label)}</div></div>`;\n}\n\nexport function exportLogoCloud(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const { title, logos = [], grayscale } = (block as any).props;\n\n const titleHtml = title\n ? `<p style=\"color: var(--sg-muted-text); margin-bottom: 2rem;\">${escapeHtml(title)}</p>`\n : \"\";\n\n const logosHtml = logos\n .map(\n (l: any) =>\n `<img src=\"${escapeHtml(l.src)}\" alt=\"${escapeHtml(l.alt)}\" style=\"height: 2rem; object-fit: contain; ${grayscale ? \"filter: grayscale(100%); opacity: 0.6;\" : \"\"}\" />`,\n )\n .join(\"\");\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} style=\"padding: 2rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem; text-align: center;\">${titleHtml}<div style=\"display: flex; justify-content: center; align-items: center; gap: 3rem; flex-wrap: wrap;\">${logosHtml}</div></div></section>`;\n}\n\nexport function exportSocialLinks(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n links = [],\n size = \"md\",\n variant = \"default\",\n } = (block as any).props;\n\n const sizeMap: Record<string, string> = {\n sm: \"1.25rem\",\n md: \"1.5rem\",\n lg: \"2rem\",\n };\n\n const iconSize = sizeMap[size] || sizeMap.md;\n\n const linksHtml = links\n .map(\n (l: any) =>\n `<a href=\"${escapeHtml(l.url)}\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"display: flex; align-items: center; justify-content: center; width: ${variant === \"filled\" ? `calc(${iconSize} + 0.75rem)` : iconSize}; height: ${variant === \"filled\" ? `calc(${iconSize} + 0.75rem)` : iconSize}; background-color: ${variant === \"filled\" ? \"var(--sg-surface)\" : \"transparent\"}; border-radius: ${variant === \"filled\" ? \"50%\" : \"0\"}; color: var(--sg-muted-text); text-decoration: none;\">[${escapeHtml(l.platform)}]</a>`,\n )\n .join(\"\");\n\n return `<div ${dataBlockIdAttr(block.id)} style=\"display: flex; gap: 1rem; align-items: center;\">${linksHtml}</div>`;\n}\n"],"names":["exportFeature","block","depth","basePath","theme","icon","title","description","iconHtml","dataBlockIdAttr","escapeHtml","exportFeatureGrid","renderChild","subtitle","columns","variant","features","gridId","generateScopedId","responsiveConfig","resolveResponsiveColumns","inlineStyles","mediaQueries","generateResponsiveGridStyles","isImageCards","headerHtml","featuresHtml","f","imgBlock","iconBlock","linkBlock","innerPadding","blockIdAttr","exportCta","ctaDesc","primaryButton","secondaryButton","buttonSize","buttonHoverEffect","buttonHoverIntensity","buttonHoverOverlay","buttonHoverIconName","sizeStyles","btnSize","ctaId","scope","isGradient","primaryColor","primaryText","primaryBtnBg","primaryBtnText","secondaryBtnBg","secondaryBtnText","secondaryBtnBorder","buttonsCss","primaryHoverResult","generateButtonHoverStyles","secondaryHoverResult","getButtonHoverKeyframes","generateButtonOverlayCSS","bgStyle","textColor","mutedColor","ctaPrimaryHref","resolveHref","ctaSecondaryHref","primaryBtnStyle","secondaryBtnStyle","primaryBtnHtml","linkTargetAttr","secondaryBtnHtml","exportPricingCard","name","price","period","desc","buttonText","highlighted","pBadge","badgeHtml","buttonStyle","exportPricing","plans","maxCols","plansHtml","p","exportTestimonial","quote","authorName","authorRole","authorCompany","authorAvatar","rating","ratingHtml","avatarHtml","n","exportTestimonialGrid","testimonials","testimonialsHtml","t","exportFaqItem","question","answer","exportFaq","items","itemsHtml","i","exportStats","exportStatItem","value","label","prefix","suffix","exportLogoCloud","logos","grayscale","titleHtml","logosHtml","l","exportSocialLinks","links","size","sizeMap","iconSize","linksHtml"],"mappings":";;;;AAmBO,SAASA,EACdC,GACAC,GACAC,GACAC,GACQ;AACR,QAAM,EAAE,MAAAC,GAAM,OAAAC,GAAO,aAAAC,EAAA,IAAiBN,EAAc,OAC9CO,IAAWH,IACb,0OACA;AACJ,SAAO,QAAQI,EAAgBR,EAAM,EAAE,CAAC,6EAA6EO,CAAQ,4EAA4EE,EAAWJ,CAAK,CAAC,qEAAqEI,EAAWH,CAAW,CAAC;AACxT;AAEO,SAASI,GACdV,GACAC,GACAC,GACAC,GACAQ,GACQ;AACR,QAAM;AAAA,IACJ,OAAAN;AAAA,IACA,UAAAO;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW,CAAA;AAAA,EAAC,IACTf,EAAc,OAGbgB,IAASC,EAAiBjB,EAAM,MAAM,IAAI,cAAc,GACxDkB,IAAmBC,EAAyBN,GAAS,GAAG,GAAGA,CAAO,GAClE,EAAE,cAAAO,GAAc,cAAAC,EAAA,IAAiBC,EAA6BN,GAAQE,GAAkB,MAAM,GAE9FK,IAAeT,MAAY,eAC3BU,IACJnB,KAASO,IACL,qFAAqFP,IAAQ,uEAAuEI,EAAWJ,CAAK,CAAC,UAAU,EAAE,GAAGO,IAAW,gEAAgEH,EAAWG,CAAQ,CAAC,SAAS,EAAE,WAC9S,IAEAa,IAAeV,EAClB,IAAI,CAACW,MAAW;AACf,UAAMC,IACJJ,KAAgBG,EAAE,QACd,iEAAiEjB,EAAWiB,EAAE,KAAK,CAAC,oEACpF,IACAE,IACJ,CAACL,KAAgBG,EAAE,OACf,0OACA,IACAG,IAAYH,EAAE,OAChB,YAAYjB,EAAWiB,EAAE,KAAK,QAAQ,GAAG,CAAC,+NAA+NjB,EAAWiB,EAAE,KAAK,IAAI,CAAC,SAChS,IACEI,IAAeP,KAAgBG,EAAE,QAAQ,WAAW;AAC1D,WAAO,gFAAgFH,KAAgBG,EAAE,QAAQ,IAAI,MAAM,2DAA2DC,CAAQ,wBAAwBG,CAAY,MAAMF,CAAS,4EAA4EnB,EAAWiB,EAAE,KAAK,CAAC,gDAAgDjB,EAAWiB,EAAE,WAAW,CAAC,OAAOG,CAAS;AAAA,EAC3a,CAAC,EACA,KAAK,EAAE;AAEV,SAAO,UAAUR,CAAY,oBAAoBU,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,mIAAmIwB,CAAU,sCAAsCR,CAAM,YAAYI,CAAY,KAAKK,CAAY;AACvU;AAEO,SAASO,GACdhC,GACAC,GACAC,GACAC,GACQ;AACR,QAAM;AAAA,IACJ,OAAAE;AAAA,IACA,aAAa4B;AAAA,IACb,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAArB,IAAU;AAAA;AAAA,IAEV,YAAAsB,IAAa;AAAA;AAAA,IAEb,mBAAAC,IAAoB;AAAA,IACpB,sBAAAC,IAAuB;AAAA,IACvB,oBAAAC,IAAqB;AAAA,IACrB,qBAAAC,IAAsB;AAAA,EAAA,IACnBxC,EAAc,OAGbyC,IAAoE;AAAA,IACxE,IAAI,EAAE,SAAS,eAAe,UAAU,WAAA;AAAA,IACxC,IAAI,EAAE,SAAS,kBAAkB,UAAU,OAAA;AAAA,IAC3C,IAAI,EAAE,SAAS,aAAa,UAAU,WAAA;AAAA,EAAW,GAE7CC,IAAUD,EAAWL,CAAU,KAAKK,EAAW,IAG/CE,IAAQ1B,EAAiBjB,EAAM,MAAM,IAAI,aAAa,GACtD4C,IAAQ,mBAAmB5C,EAAM,EAAE,MAEnC6C,IAAa/B,MAAY,YACzBgC,IAAe3C,GAAO,QAAQ,WAAW,WACzC4C,IAAc5C,GAAO,QAAQ,eAAe,WAG5C6C,IAAeH,IAAa,SAASC,GACrCG,IAAiBJ,IAAaC,IAAeC,GAC7CG,IAAiB,eACjBC,IAAmBN,IAAa,SAASC,GACzCM,IAAqBP,IAAa,SAASC;AAEjD,MAAIO,IAAa;AAAA;AAAA,SAEVV,CAAK;AAAA;AAAA;AAAA;AAAA,SAILA,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAQZ,MAAIN,MAAsB,QAAQ;AAEhC,UAAMiB,IAAqBC,EAA0B;AAAA,MACnD,QAAQlB;AAAA,MACR,WAAWC;AAAA,MACX,aAAaU;AAAA,MAEb,SAAS;AAAA,IAAA,CACV,GAGKQ,IAAuBD,EAA0B;AAAA,MACrD,QAAQlB;AAAA,MACR,WAAWC;AAAA,MACX,aAAac;AAAA,MAEb,SAAS;AAAA,IAAA,CACV;AAGD,IAAIE,EAAmB,SACrBD,KAAc;AAAA,UACVT,CAAK;AAAA,YACHU,EAAmB,IAAI;AAAA;AAAA,UAK3BE,EAAqB,SACvBH,KAAc;AAAA,UACVT,CAAK;AAAA,YACHY,EAAqB,IAAI;AAAA;AAAA,UAMjCH,KAAc;AAAA,QACVT,CAAK;AAAA,UACHU,EAAmB,KAAK;AAAA;AAAA,QAE1BV,CAAK;AAAA,UACHY,EAAqB,KAAK;AAAA;AAAA,OAKhCH,KAAcI,EAAA;AAAA,EAChB;AAGA,EAAIlB,KAAsBA,MAAuB,WAC/Cc,KAAcK,EAAyB,GAAGd,CAAK,0BAA0B;AAAA,IACvE,SAASL;AAAA,IACT,cAAAO;AAAA,IACA,UAAUN;AAAA,IACV,WAAWS;AAAA,EAAA,CACZ,GACDI,KAAcK,EAAyB,GAAGd,CAAK,4BAA4B;AAAA,IACzE,SAASL;AAAA,IACT,cAAAO;AAAA,IACA,UAAUN;AAAA,IACV,WAAWW;AAAA,EAAA,CACZ;AAGH,QAAMQ,IAAUd,IACZ,8EACA,wCACEe,IAAYf,IAAa,SAAS,kBAClCgB,IAAahB,IACf,0BACA,wBACEiB,IAAiB5B,IACnB6B,EAAY7B,EAAc,QAAQ,KAAKhC,CAAQ,IAC/C,KACE8D,IAAmB7B,IACrB4B,EAAY5B,EAAgB,QAAQ,KAAKjC,CAAQ,IACjD,KAEE+D,IAAkB,YAAYvB,EAAQ,OAAO,gBAAgBA,EAAQ,QAAQ,uBAAuBM,CAAY,YAAYC,CAAc,8KAC1IiB,IAAoB,YAAYxB,EAAQ,OAAO,gBAAgBA,EAAQ,QAAQ,uBAAuBQ,CAAc,YAAYC,CAAgB,uBAAuBC,CAAkB,8KAEzLe,IAAiBjC,IACnB,YAAYzB,EAAWqD,CAAc,CAAC,IAAIM,EAAeN,GAAgB5D,CAAQ,CAAC,oDAAoD+D,CAAe,KAAKxD,EAAWyB,EAAc,IAAI,CAAC,SACxL,IACEmC,IAAmBlC,IACrB,YAAY1B,EAAWuD,CAAgB,CAAC,IAAII,EAAeJ,GAAkB9D,CAAQ,CAAC,sDAAsDgE,CAAiB,KAAKzD,EAAW0B,EAAgB,IAAI,CAAC,SAClM;AACJ,SAAO,UAAUkB,CAAU,oBAAoBtB,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,4BAA4B2D,CAAO,kMAAkMC,CAAS,MAAMnD,EAAWJ,CAAK,CAAC,QAAQ4B,IAAU,8DAA8D4B,CAAU,MAAMpD,EAAWwB,CAAO,CAAC,SAAS,EAAE,4CAA4CU,CAAK,iFAAiFwB,CAAc,GAAGE,CAAgB;AACzoB;AAEO,SAASC,GACdtE,GACAC,GACAC,GACAC,GACQ;AACR,QAAM;AAAA,IACJ,MAAAoE;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,aAAaC;AAAA,IACb,UAAA3D,IAAW,CAAA;AAAA,IACX,YAAA4D;AAAA,IACA,aAAAC;AAAA,IACA,OAAOC;AAAA,EAAA,IACJ7E,EAAc,OAEb8E,IAAYD,IACd,gNAAgNpE,EAAWoE,CAAM,CAAC,YAClO,IACEpD,IAAeV,EAClB;AAAA,IACC,CAAC,MACC,mIAAwIN,EAAW,CAAC,CAAC;AAAA,EAAA,EAExJ,KAAK,EAAE,GACJsE,IAAcH,IAChB,sFACA;AACJ,SAAO,QAAQpE,EAAgBR,EAAM,EAAE,CAAC,0HAA0H4E,IAAc,4BAA4B,uBAAuB,aAAaA,IAAc,gCAAgC,4BAA4B,0BAA0BE,CAAS,4EAA4ErE,EAAW8D,CAAI,CAAC,QAAQG,IAAO,gEAAgEjE,EAAWiE,CAAI,CAAC,SAAS,EAAE,0FAA0FjE,EAAW+D,CAAK,CAAC,UAAUC,IAAS,8CAA8ChE,EAAWgE,CAAM,CAAC,YAAY,EAAE,0EAA0EhD,CAAY,QAAQkD,IAAa,0DAA0DI,CAAW,gFAAgFtE,EAAWkE,CAAU,CAAC,cAAc,EAAE;AACvhC;AAEO,SAASK,GACdhF,GACAC,GACAC,GACAC,GACAQ,GACQ;AACR,QAAM,EAAE,OAAAN,GAAO,UAAAO,GAAU,OAAAqE,IAAQ,CAAA,EAAC,IAAOjF,EAAc,OAGjDgB,IAASC,EAAiBjB,EAAM,MAAM,IAAI,cAAc,GACxDkF,IAAU,KAAK,IAAID,EAAM,QAAQ,CAAC,GAClC/D,IAAmBC,EAAyB,EAAE,IAAI+D,KAAW,GAAG,GAAGA,CAAO,GAC1E,EAAE,cAAA9D,GAAc,cAAAC,MAAiBC,EAA6BN,GAAQE,GAAkB,QAAQ,qBAAqB,GAErHM,IACJnB,KAASO,IACL,qFAAqFP,IAAQ,uEAAuEI,EAAWJ,CAAK,CAAC,UAAU,EAAE,GAAGO,IAAW,gEAAgEH,EAAWG,CAAQ,CAAC,SAAS,EAAE,WAC9S;AAEN,MAAI,CAACD;AACH,UAAM,IAAI,MAAM,6CAA6C;AAG/D,QAAMwE,IAAYF,EACf;AAAA,IAAI,CAACG,MACJzE;AAAA,MACE,EAAE,IAAI,GAAGX,EAAM,EAAE,SAAS,MAAM,eAAe,OAAOoF,EAAA;AAAA,MACtDnF,IAAQ;AAAA,MACRC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF,EAED,KAAK,EAAE;AAEV,SAAO,UAAUkB,CAAY,oBAAoBU,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,8HAA8HwB,CAAU,YAAYR,CAAM,YAAYI,CAAY,KAAK+D,CAAS;AACrS;AAEO,SAASE,GACdrF,GACAC,GACAC,GACAC,GACQ;AACR,QAAM;AAAA,IACJ,OAAAmF;AAAA,IACA,YAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,cAAAC;AAAA,IACA,QAAAC;AAAA,EAAA,IACG3F,EAAc,OAEb4F,IAAaD,IACf,+EAA+E,IAAS,OAAOA,CAAM,CAAC,WACtG,IACEE,IAAaH,IACf,aAAajF,EAAWiF,CAAY,CAAC,UAAUjF,EAAW8E,CAAU,CAAC,mFACrE,wNACEA,IACIA,EACG,MAAM,GAAG,EACT,IAAI,CAACO,MAAcA,EAAE,CAAC,CAAC,EACvB,KAAK,EAAE,EACP,cACA,MAAM,GAAG,CAAC,IACb,GACN;AACJ,SAAO,QAAQtF,EAAgBR,EAAM,EAAE,CAAC,sGAAsG4F,CAAU,gHAAgHnF,EAAW6E,CAAK,CAAC,sGAAsGO,CAAU,uCAAuCpF,EAAW8E,CAAU,CAAC,SAASC,KAAcC,IAAgB,kEAAkEhF,EAAW+E,KAAc,EAAE,CAAC,GAAGA,KAAcC,IAAgB,OAAO,EAAE,GAAGhF,EAAWgF,KAAiB,EAAE,CAAC,WAAW,EAAE;AACtqB;AAEO,SAASM,GACd/F,GACAC,GACAC,GACAC,GACAQ,GACQ;AACR,QAAM;AAAA,IACJ,OAAAN;AAAA,IACA,UAAAO;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,cAAAmF,IAAe,CAAA;AAAA,EAAC,IACbhG,EAAc,OAGbgB,IAASC,EAAiBjB,EAAM,MAAM,IAAI,kBAAkB,GAC5DkB,IAAmBC,EAAyBN,GAAS,GAAG,GAAGA,CAAO,GAClE,EAAE,cAAAO,GAAc,cAAAC,EAAA,IAAiBC,EAA6BN,GAAQE,GAAkB,MAAM,GAE9FM,IACJnB,KAASO,IACL,qFAAqFP,IAAQ,uEAAuEI,EAAWJ,CAAK,CAAC,UAAU,EAAE,GAAGO,IAAW,gEAAgEH,EAAWG,CAAQ,CAAC,SAAS,EAAE,WAC9S;AAEN,MAAI,CAACD;AACH,UAAM,IAAI,MAAM,qDAAqD;AAGvE,QAAMsF,IAAmBD,EACtB;AAAA,IAAI,CAACE,MACJvF;AAAA,MACE,EAAE,IAAI,GAAGX,EAAM,EAAE,MAAM,MAAM,eAAe,OAAOkG,EAAA;AAAA,MACnDjG,IAAQ;AAAA,MACRC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF,EAED,KAAK,EAAE;AAEV,SAAO,UAAUkB,CAAY,oBAAoBU,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,8HAA8HwB,CAAU,sCAAsCR,CAAM,YAAYI,CAAY,KAAK6E,CAAgB;AACtU;AAEO,SAASE,GACdnG,GACAC,GACAC,GACAC,GACQ;AACR,QAAM,EAAE,UAAAiG,GAAU,QAAAC,EAAA,IAAYrG,EAAc;AAC5C,SAAO,YAAYQ,EAAgBR,EAAM,EAAE,CAAC,4NAA4NS,EAAW2F,CAAQ,CAAC,qFAAqF3F,EAAW4F,CAAM,CAAC;AACrY;AAEO,SAASC,GACdtG,GACAC,GACAC,GACAC,GACAQ,GACQ;AACR,QAAM,EAAE,OAAAN,GAAO,UAAAO,GAAU,OAAA2F,IAAQ,CAAA,EAAC,IAAOvG,EAAc,OAEjDwB,IACJnB,KAASO,IACL,qFAAqFP,IAAQ,uEAAuEI,EAAWJ,CAAK,CAAC,UAAU,EAAE,GAAGO,IAAW,gEAAgEH,EAAWG,CAAQ,CAAC,SAAS,EAAE,WAC9S;AAEN,MAAI,CAACD;AACH,UAAM,IAAI,MAAM,yCAAyC;AAG3D,QAAM6F,IAAYD,EACf;AAAA,IAAI,CAACE,MACJ9F;AAAA,MACE,EAAE,IAAI,GAAGX,EAAM,EAAE,QAAQ,MAAM,WAAW,OAAOyG,EAAA;AAAA,MACjDxG,IAAQ;AAAA,MACRC;AAAA,MACAC;AAAA,IAAA;AAAA,EACF,EAED,KAAK,EAAE;AAEV,SAAO,YAAY4B,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,6HAA6HwB,CAAU,QAAQgF,CAAS;AAC/N;AAEO,SAASE,GACd1G,GACAC,GACAC,GACAC,GACQ;AACR,QAAM,EAAE,OAAAE,GAAO,UAAAO,GAAU,OAAA2F,IAAQ,CAAA,EAAC,IAAOvG,EAAc,OAGjDgB,IAASC,EAAiBjB,EAAM,MAAM,IAAI,YAAY,GACtDkB,IAAmBC,EAAyB,EAAE,IAAIoF,EAAM,UAAU,GAAG,GAAGA,EAAM,MAAM,GACpF,EAAE,cAAAnF,GAAc,cAAAC,MAAiBC,EAA6BN,GAAQE,GAAkB,QAAQ,qBAAqB,GAErHM,IACJnB,KAASO,IACL,yDAAyDP,IAAQ,uEAAuEI,EAAWJ,CAAK,CAAC,UAAU,EAAE,GAAGO,IAAW,gEAAgEH,EAAWG,CAAQ,CAAC,SAAS,EAAE,WAClR,IAEA4F,IAAYD,EACf;AAAA,IACC,CAACE,MACC,8GAA8GhG,EAAWgG,EAAE,UAAU,EAAE,CAAC,GAAGhG,EAAWgG,EAAE,KAAK,CAAC,GAAGhG,EAAWgG,EAAE,UAAU,EAAE,CAAC,mDAAmDhG,EAAWgG,EAAE,KAAK,CAAC;AAAA,EAAA,EAEpQ,KAAK,EAAE;AAEV,SAAO,UAAUpF,CAAY,oBAAoBU,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,mIAAmIwB,CAAU,YAAYR,CAAM,YAAYI,CAAY,KAAKoF,CAAS;AAC1S;AAEO,SAASG,GACd3G,GACAC,GACAC,GACAC,GACQ;AACR,QAAM,EAAE,OAAAyG,GAAO,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,EAAA,IAAY/G,EAAc;AACxD,SAAO,QAAQQ,EAAgBR,EAAM,EAAE,CAAC,4GAA4GS,EAAWqG,KAAU,EAAE,CAAC,GAAGrG,EAAWmG,CAAK,CAAC,GAAGnG,EAAWsG,KAAU,EAAE,CAAC,mDAAmDtG,EAAWoG,CAAK,CAAC;AACjS;AAEO,SAASG,GACdhH,GACAC,GACAC,GACAC,GACQ;AACR,QAAM,EAAE,OAAAE,GAAO,OAAA4G,IAAQ,CAAA,GAAI,WAAAC,EAAA,IAAelH,EAAc,OAElDmH,IAAY9G,IACd,gEAAgEI,EAAWJ,CAAK,CAAC,SACjF,IAEE+G,IAAYH,EACf;AAAA,IACC,CAACI,MACC,aAAa5G,EAAW4G,EAAE,GAAG,CAAC,UAAU5G,EAAW4G,EAAE,GAAG,CAAC,+CAA+CH,IAAY,2CAA2C,EAAE;AAAA,EAAA,EAEpK,KAAK,EAAE;AAEV,SAAO,YAAYnF,EAAY/B,EAAM,EAAE,CAAC,IAAIQ,EAAgBR,EAAM,EAAE,CAAC,kJAAkJmH,CAAS,yGAAyGC,CAAS;AACpV;AAEO,SAASE,GACdtH,GACAC,GACAC,GACAC,GACQ;AACR,QAAM;AAAA,IACJ,OAAAoH,IAAQ,CAAA;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,SAAA1G,IAAU;AAAA,EAAA,IACPd,EAAc,OAEbyH,IAAkC;AAAA,IACtC,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAWD,EAAQD,CAAI,KAAKC,EAAQ,IAEpCE,IAAYJ,EACf;AAAA,IACC,CAACF,MACC,YAAY5G,EAAW4G,EAAE,GAAG,CAAC,0HAA0HvG,MAAY,WAAW,QAAQ4G,CAAQ,gBAAgBA,CAAQ,aAAa5G,MAAY,WAAW,QAAQ4G,CAAQ,gBAAgBA,CAAQ,uBAAuB5G,MAAY,WAAW,sBAAsB,aAAa,oBAAoBA,MAAY,WAAW,QAAQ,GAAG,2DAA2DL,EAAW4G,EAAE,QAAQ,CAAC;AAAA,EAAA,EAE7f,KAAK,EAAE;AAEV,SAAO,QAAQ7G,EAAgBR,EAAM,EAAE,CAAC,2DAA2D2H,CAAS;AAC9G;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,QAGpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0CH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,QAGpF"}
@@ -1,62 +1,66 @@
1
1
  import { htmlExportRegistry as r } from "../HtmlExporter.js";
2
- import { exportHero as d } from "./HeroExporter.js";
3
- import { exportNavbar as a } from "./NavbarExporter.js";
2
+ import { exportHero as a } from "./HeroExporter.js";
3
+ import { exportNavbar as d } from "./NavbarExporter.js";
4
4
  import { exportFooter as s } from "./FooterExporter.js";
5
- import { exportFeature as g, exportCta as l, exportPricingCard as p, exportTestimonial as x, exportFaqItem as m, exportStats as C, exportStatItem as f, exportLogoCloud as h, exportSocialLinks as u, exportFeatureGrid as w, exportPricing as c, exportTestimonialGrid as G, exportFaq as E } from "./MarketingExporters.js";
6
- import { exportBlogCard as P, exportTeamCard as b, exportCourseCardGrid as z, exportCountdown as B, exportCarousel as F, exportBlogCardGrid as q, exportTeamGrid as I } from "./ContentGridExporters.js";
7
- import { exportBlogPostCard as S, exportBlogPostDetail as T, exportBlogPostGrid as L } from "./BlogPostExporters.js";
5
+ import { exportFeature as g, exportCta as p, exportPricingCard as l, exportTestimonial as x, exportFaqItem as m, exportStats as C, exportStatItem as u, exportLogoCloud as c, exportSocialLinks as h, exportFeatureGrid as f, exportPricing as w, exportTestimonialGrid as G, exportFaq as b } from "./MarketingExporters.js";
6
+ import { exportBlogCard as P, exportTeamCard as S, exportCourseCardGrid as E, exportCountdown as z, exportCarousel as B, exportBlogCardGrid as F, exportTeamGrid as q } from "./ContentGridExporters.js";
7
+ import { exportBlogPostCard as I, exportBlogPostDetail as T, exportBlogPostGrid as L } from "./BlogPostExporters.js";
8
+ import { exportProductShowcase as R, exportAboutSection as k, exportContactSection as v } from "./AdminSectionExporters.js";
8
9
  let t = null;
9
- function j(e) {
10
+ function M(e) {
10
11
  t = e;
11
12
  }
12
- r.register("hero", d);
13
- r.register("navbar", a);
13
+ r.register("hero", a);
14
+ r.register("navbar", d);
14
15
  r.register("footer", s);
15
16
  r.register("feature", g);
16
- r.register("cta", l);
17
- r.register("pricingCard", p);
17
+ r.register("cta", p);
18
+ r.register("pricingCard", l);
18
19
  r.register("testimonial", x);
19
20
  r.register("faqItem", m);
20
21
  r.register("stats", C);
21
- r.register("statItem", f);
22
- r.register("logoCloud", h);
23
- r.register("socialLinks", u);
22
+ r.register("statItem", u);
23
+ r.register("logoCloud", c);
24
+ r.register("socialLinks", h);
24
25
  r.register("blogCard", P);
25
- r.register("blogPostCard", S);
26
+ r.register("blogPostCard", I);
26
27
  r.register("blogPostDetail", T);
27
- r.register("teamCard", b);
28
- r.register("courseCardGrid", z);
29
- r.register("countdown", B);
30
- r.register("carousel", F);
31
- r.register("featureGrid", (e, i, o, n) => {
28
+ r.register("teamCard", S);
29
+ r.register("courseCardGrid", E);
30
+ r.register("countdown", z);
31
+ r.register("carousel", B);
32
+ r.register("productShowcase", R);
33
+ r.register("aboutSection", k);
34
+ r.register("contactSection", v);
35
+ r.register("featureGrid", (e, o, i, n) => {
32
36
  if (!t) throw new Error("renderChild not initialized");
33
- return w(e);
37
+ return f(e);
34
38
  });
35
- r.register("pricing", (e, i, o, n) => {
39
+ r.register("pricing", (e, o, i, n) => {
36
40
  if (!t) throw new Error("renderChild not initialized");
37
- return c(e, i, o, n, t);
41
+ return w(e, o, i, n, t);
38
42
  });
39
- r.register("testimonialGrid", (e, i, o, n) => {
43
+ r.register("testimonialGrid", (e, o, i, n) => {
40
44
  if (!t) throw new Error("renderChild not initialized");
41
- return G(e, i, o, n, t);
45
+ return G(e, o, i, n, t);
42
46
  });
43
- r.register("faq", (e, i, o, n) => {
47
+ r.register("faq", (e, o, i, n) => {
44
48
  if (!t) throw new Error("renderChild not initialized");
45
- return E(e, i, o, n, t);
49
+ return b(e, o, i, n, t);
46
50
  });
47
- r.register("blogCardGrid", (e, i, o, n) => {
51
+ r.register("blogCardGrid", (e, o, i, n) => {
48
52
  if (!t) throw new Error("renderChild not initialized");
49
- return q(e, i, o, n, t);
53
+ return F(e, o, i, n, t);
50
54
  });
51
- r.register("blogPostGrid", (e, i, o, n) => {
55
+ r.register("blogPostGrid", (e, o, i, n) => {
52
56
  if (!t) throw new Error("renderChild not initialized");
53
- return L(e, i, o, n, t);
57
+ return L(e, o, i, n, t);
54
58
  });
55
- r.register("teamGrid", (e, i, o, n) => {
59
+ r.register("teamGrid", (e, o, i, n) => {
56
60
  if (!t) throw new Error("renderChild not initialized");
57
- return I(e, i, o, n, t);
61
+ return q(e, o, i, n, t);
58
62
  });
59
63
  export {
60
- j as setSectionExportersRenderChild
64
+ M as setSectionExportersRenderChild
61
65
  };
62
66
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"sourcesContent":["/**\n * Section Exporters Auto-Registration\n */\n\nimport { htmlExportRegistry } from \"../HtmlExporter\";\nimport { exportHero } from \"./HeroExporter\";\nimport { exportNavbar } from \"./NavbarExporter\";\nimport { exportFooter } from \"./FooterExporter\";\nimport {\n exportFeature,\n exportFeatureGrid,\n exportCta,\n exportPricingCard,\n exportPricing,\n exportTestimonial,\n exportTestimonialGrid,\n exportFaqItem,\n exportFaq,\n exportStats,\n exportStatItem,\n exportLogoCloud,\n exportSocialLinks,\n} from \"./MarketingExporters\";\nimport {\n exportBlogCard,\n exportBlogCardGrid,\n exportTeamCard,\n exportTeamGrid,\n exportCourseCardGrid,\n exportCountdown,\n exportCarousel,\n} from \"./ContentGridExporters\";\nimport {\n exportBlogPostCard,\n exportBlogPostGrid,\n exportBlogPostDetail,\n} from \"./BlogPostExporters\";\n\n// Referência para renderChild\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\n\nlet renderChildRef: ((block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string) | null = null;\n\nexport function setSectionExportersRenderChild(\n fn: (block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string\n) {\n renderChildRef = fn;\n}\n\n// Exporters simples (sem children)\nhtmlExportRegistry.register(\"hero\", exportHero);\nhtmlExportRegistry.register(\"navbar\", exportNavbar);\nhtmlExportRegistry.register(\"footer\", exportFooter);\nhtmlExportRegistry.register(\"feature\", exportFeature);\nhtmlExportRegistry.register(\"cta\", exportCta);\nhtmlExportRegistry.register(\"pricingCard\", exportPricingCard);\nhtmlExportRegistry.register(\"testimonial\", exportTestimonial);\nhtmlExportRegistry.register(\"faqItem\", exportFaqItem);\nhtmlExportRegistry.register(\"stats\", exportStats);\nhtmlExportRegistry.register(\"statItem\", exportStatItem);\nhtmlExportRegistry.register(\"logoCloud\", exportLogoCloud);\nhtmlExportRegistry.register(\"socialLinks\", exportSocialLinks);\nhtmlExportRegistry.register(\"blogCard\", exportBlogCard);\nhtmlExportRegistry.register(\"blogPostCard\", exportBlogPostCard);\nhtmlExportRegistry.register(\"blogPostDetail\", exportBlogPostDetail);\nhtmlExportRegistry.register(\"teamCard\", exportTeamCard);\nhtmlExportRegistry.register(\"courseCardGrid\", exportCourseCardGrid);\nhtmlExportRegistry.register(\"countdown\", exportCountdown);\nhtmlExportRegistry.register(\"carousel\", exportCarousel);\n\n// Exporters que precisam de renderChild\nhtmlExportRegistry.register(\"featureGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFeatureGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"pricing\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportPricing(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"testimonialGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTestimonialGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"faq\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFaq(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogCardGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogCardGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogPostGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogPostGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"teamGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTeamGrid(block, depth, basePath, theme, renderChildRef);\n});\n"],"names":["renderChildRef","setSectionExportersRenderChild","fn","htmlExportRegistry","exportHero","exportNavbar","exportFooter","exportFeature","exportCta","exportPricingCard","exportTestimonial","exportFaqItem","exportStats","exportStatItem","exportLogoCloud","exportSocialLinks","exportBlogCard","exportBlogPostCard","exportBlogPostDetail","exportTeamCard","exportCourseCardGrid","exportCountdown","exportCarousel","block","depth","basePath","theme","exportFeatureGrid","exportPricing","exportTestimonialGrid","exportFaq","exportBlogCardGrid","exportBlogPostGrid","exportTeamGrid"],"mappings":";;;;;;;AA0CA,IAAIA,IAA2G;AAExG,SAASC,EACdC,GACA;AACA,EAAAF,IAAiBE;AACnB;AAGAC,EAAmB,SAAS,QAAQC,CAAU;AAC9CD,EAAmB,SAAS,UAAUE,CAAY;AAClDF,EAAmB,SAAS,UAAUG,CAAY;AAClDH,EAAmB,SAAS,WAAWI,CAAa;AACpDJ,EAAmB,SAAS,OAAOK,CAAS;AAC5CL,EAAmB,SAAS,eAAeM,CAAiB;AAC5DN,EAAmB,SAAS,eAAeO,CAAiB;AAC5DP,EAAmB,SAAS,WAAWQ,CAAa;AACpDR,EAAmB,SAAS,SAASS,CAAW;AAChDT,EAAmB,SAAS,YAAYU,CAAc;AACtDV,EAAmB,SAAS,aAAaW,CAAe;AACxDX,EAAmB,SAAS,eAAeY,CAAiB;AAC5DZ,EAAmB,SAAS,YAAYa,CAAc;AACtDb,EAAmB,SAAS,gBAAgBc,CAAkB;AAC9Dd,EAAmB,SAAS,kBAAkBe,CAAoB;AAClEf,EAAmB,SAAS,YAAYgB,CAAc;AACtDhB,EAAmB,SAAS,kBAAkBiB,CAAoB;AAClEjB,EAAmB,SAAS,aAAakB,CAAe;AACxDlB,EAAmB,SAAS,YAAYmB,CAAc;AAGtDnB,EAAmB,SAAS,eAAe,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AAC5E,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO2B,EAAkBJ,CAA6C;AACxE,CAAC;AAEDpB,EAAmB,SAAS,WAAW,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AACxE,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO4B,EAAcL,GAAOC,GAAOC,GAAUC,GAAO1B,CAAc;AACpE,CAAC;AAEDG,EAAmB,SAAS,mBAAmB,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AAChF,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO6B,EAAsBN,GAAOC,GAAOC,GAAUC,GAAO1B,CAAc;AAC5E,CAAC;AAEDG,EAAmB,SAAS,OAAO,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AACpE,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO8B,EAAUP,GAAOC,GAAOC,GAAUC,GAAO1B,CAAc;AAChE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO+B,EAAmBR,GAAOC,GAAOC,GAAUC,GAAO1B,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOgC,EAAmBT,GAAOC,GAAOC,GAAUC,GAAO1B,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,YAAY,CAACoB,GAAOC,GAAOC,GAAUC,MAAU;AACzE,MAAI,CAAC1B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOiC,EAAeV,GAAOC,GAAOC,GAAUC,GAAO1B,CAAc;AACrE,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"sourcesContent":["/**\n * Section Exporters Auto-Registration\n */\n\nimport { htmlExportRegistry } from \"../HtmlExporter\";\nimport { exportHero } from \"./HeroExporter\";\nimport { exportNavbar } from \"./NavbarExporter\";\nimport { exportFooter } from \"./FooterExporter\";\nimport {\n exportFeature,\n exportFeatureGrid,\n exportCta,\n exportPricingCard,\n exportPricing,\n exportTestimonial,\n exportTestimonialGrid,\n exportFaqItem,\n exportFaq,\n exportStats,\n exportStatItem,\n exportLogoCloud,\n exportSocialLinks,\n} from \"./MarketingExporters\";\nimport {\n exportBlogCard,\n exportBlogCardGrid,\n exportTeamCard,\n exportTeamGrid,\n exportCourseCardGrid,\n exportCountdown,\n exportCarousel,\n} from \"./ContentGridExporters\";\nimport {\n exportBlogPostCard,\n exportBlogPostGrid,\n exportBlogPostDetail,\n} from \"./BlogPostExporters\";\nimport {\n exportProductShowcase,\n exportAboutSection,\n exportContactSection,\n} from \"./AdminSectionExporters\";\n\n// Referência para renderChild\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\n\nlet renderChildRef: ((block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string) | null = null;\n\nexport function setSectionExportersRenderChild(\n fn: (block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string\n) {\n renderChildRef = fn;\n}\n\n// Exporters simples (sem children)\nhtmlExportRegistry.register(\"hero\", exportHero);\nhtmlExportRegistry.register(\"navbar\", exportNavbar);\nhtmlExportRegistry.register(\"footer\", exportFooter);\nhtmlExportRegistry.register(\"feature\", exportFeature);\nhtmlExportRegistry.register(\"cta\", exportCta);\nhtmlExportRegistry.register(\"pricingCard\", exportPricingCard);\nhtmlExportRegistry.register(\"testimonial\", exportTestimonial);\nhtmlExportRegistry.register(\"faqItem\", exportFaqItem);\nhtmlExportRegistry.register(\"stats\", exportStats);\nhtmlExportRegistry.register(\"statItem\", exportStatItem);\nhtmlExportRegistry.register(\"logoCloud\", exportLogoCloud);\nhtmlExportRegistry.register(\"socialLinks\", exportSocialLinks);\nhtmlExportRegistry.register(\"blogCard\", exportBlogCard);\nhtmlExportRegistry.register(\"blogPostCard\", exportBlogPostCard);\nhtmlExportRegistry.register(\"blogPostDetail\", exportBlogPostDetail);\nhtmlExportRegistry.register(\"teamCard\", exportTeamCard);\nhtmlExportRegistry.register(\"courseCardGrid\", exportCourseCardGrid);\nhtmlExportRegistry.register(\"countdown\", exportCountdown);\nhtmlExportRegistry.register(\"carousel\", exportCarousel);\nhtmlExportRegistry.register(\"productShowcase\", exportProductShowcase);\nhtmlExportRegistry.register(\"aboutSection\", exportAboutSection);\nhtmlExportRegistry.register(\"contactSection\", exportContactSection);\n\n// Exporters que precisam de renderChild\nhtmlExportRegistry.register(\"featureGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFeatureGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"pricing\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportPricing(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"testimonialGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTestimonialGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"faq\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFaq(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogCardGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogCardGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogPostGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogPostGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"teamGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTeamGrid(block, depth, basePath, theme, renderChildRef);\n});\n"],"names":["renderChildRef","setSectionExportersRenderChild","fn","htmlExportRegistry","exportHero","exportNavbar","exportFooter","exportFeature","exportCta","exportPricingCard","exportTestimonial","exportFaqItem","exportStats","exportStatItem","exportLogoCloud","exportSocialLinks","exportBlogCard","exportBlogPostCard","exportBlogPostDetail","exportTeamCard","exportCourseCardGrid","exportCountdown","exportCarousel","exportProductShowcase","exportAboutSection","exportContactSection","block","depth","basePath","theme","exportFeatureGrid","exportPricing","exportTestimonialGrid","exportFaq","exportBlogCardGrid","exportBlogPostGrid","exportTeamGrid"],"mappings":";;;;;;;;AA+CA,IAAIA,IAA2G;AAExG,SAASC,EACdC,GACA;AACA,EAAAF,IAAiBE;AACnB;AAGAC,EAAmB,SAAS,QAAQC,CAAU;AAC9CD,EAAmB,SAAS,UAAUE,CAAY;AAClDF,EAAmB,SAAS,UAAUG,CAAY;AAClDH,EAAmB,SAAS,WAAWI,CAAa;AACpDJ,EAAmB,SAAS,OAAOK,CAAS;AAC5CL,EAAmB,SAAS,eAAeM,CAAiB;AAC5DN,EAAmB,SAAS,eAAeO,CAAiB;AAC5DP,EAAmB,SAAS,WAAWQ,CAAa;AACpDR,EAAmB,SAAS,SAASS,CAAW;AAChDT,EAAmB,SAAS,YAAYU,CAAc;AACtDV,EAAmB,SAAS,aAAaW,CAAe;AACxDX,EAAmB,SAAS,eAAeY,CAAiB;AAC5DZ,EAAmB,SAAS,YAAYa,CAAc;AACtDb,EAAmB,SAAS,gBAAgBc,CAAkB;AAC9Dd,EAAmB,SAAS,kBAAkBe,CAAoB;AAClEf,EAAmB,SAAS,YAAYgB,CAAc;AACtDhB,EAAmB,SAAS,kBAAkBiB,CAAoB;AAClEjB,EAAmB,SAAS,aAAakB,CAAe;AACxDlB,EAAmB,SAAS,YAAYmB,CAAc;AACtDnB,EAAmB,SAAS,mBAAmBoB,CAAqB;AACpEpB,EAAmB,SAAS,gBAAgBqB,CAAkB;AAC9DrB,EAAmB,SAAS,kBAAkBsB,CAAoB;AAGlEtB,EAAmB,SAAS,eAAe,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AAC5E,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO8B,EAAkBJ,CAA6C;AACxE,CAAC;AAEDvB,EAAmB,SAAS,WAAW,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AACxE,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAO+B,EAAcL,GAAOC,GAAOC,GAAUC,GAAO7B,CAAc;AACpE,CAAC;AAEDG,EAAmB,SAAS,mBAAmB,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AAChF,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOgC,EAAsBN,GAAOC,GAAOC,GAAUC,GAAO7B,CAAc;AAC5E,CAAC;AAEDG,EAAmB,SAAS,OAAO,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AACpE,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOiC,EAAUP,GAAOC,GAAOC,GAAUC,GAAO7B,CAAc;AAChE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOkC,EAAmBR,GAAOC,GAAOC,GAAUC,GAAO7B,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOmC,EAAmBT,GAAOC,GAAOC,GAAUC,GAAO7B,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,YAAY,CAACuB,GAAOC,GAAOC,GAAUC,MAAU;AACzE,MAAI,CAAC7B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOoC,EAAeV,GAAOC,GAAOC,GAAUC,GAAO7B,CAAc;AACrE,CAAC;"}
@@ -1,6 +1,6 @@
1
- import { createEmptySiteDocument as $ } from "./schema/siteDocument.js";
2
- import { corporateThemeTokens as re, darkThemeTokens as te, defaultComponentTokens as oe, defaultEffectTokens as ae, defaultLayoutTokens as me, defaultThemeTokens as ie, generateThemeCSSVariables as pe, gradientDirectionMap as se, gradientThemeTokens as ne, playfulThemeTokens as le, radiusScaleMap as ce, shadowScaleMap as ge, spacingScaleMap as de } from "./schema/themeTokens.js";
3
- import { componentRegistry as he } from "./registry/registry.js";
1
+ import { createEmptySiteDocument as te } from "./schema/siteDocument.js";
2
+ import { corporateThemeTokens as ae, darkThemeTokens as me, defaultComponentTokens as ie, defaultEffectTokens as pe, defaultLayoutTokens as se, defaultThemeTokens as ne, generateThemeCSSVariables as le, gradientDirectionMap as ce, gradientThemeTokens as ge, playfulThemeTokens as de, radiusScaleMap as fe, shadowScaleMap as he, spacingScaleMap as Pe } from "./schema/themeTokens.js";
3
+ import { componentRegistry as xe } from "./registry/registry.js";
4
4
  import "./registry/blocks/layout/container.js";
5
5
  import "./registry/blocks/layout/stack.js";
6
6
  import "./registry/blocks/layout/grid.js";
@@ -45,103 +45,106 @@ import "./registry/blocks/sections/categoryCardGrid.js";
45
45
  import "./registry/blocks/sections/blogPostCard.js";
46
46
  import "./registry/blocks/sections/blogPostGrid.js";
47
47
  import "./registry/blocks/sections/blogPostDetail.js";
48
+ import "./registry/blocks/sections/productShowcase.js";
49
+ import "./registry/blocks/sections/aboutSection.js";
50
+ import "./registry/blocks/sections/contactSection.js";
48
51
  import "./registry/blocks/forms/form.js";
49
52
  import "./registry/blocks/forms/input.js";
50
53
  import "./registry/blocks/forms/textarea.js";
51
54
  import "./registry/blocks/forms/select.js";
52
- import { RenderNode as Te } from "./render/renderNode.js";
53
- import { RenderPage as Se, renderPage as ke } from "./render/renderPage.js";
54
- import { clearHtmlCache as ye, exportBlockToHtml as Me, exportDocumentToHtml as Ce, exportPageToHtml as Ve, generateAssetsManifest as be } from "./export/exportHtml.js";
55
- import { isSafeUrl as ve, sanitizeHtml as Re } from "./export/sanitizeHtml.js";
56
- import { Preview as Q } from "./preview/Preview.js";
57
- import { applyPatch as Ae, createAddPatch as De, createCopyPatch as Le, createMovePatch as Ie, createRemovePatch as Ne, createReplacePatch as Oe } from "./patch/applyPatch.js";
58
- import { HistoryManager as we, createHistoryManager as Be } from "./patch/history.js";
59
- import { PatchBuilder as je } from "./patch/PatchBuilder.js";
60
- import { applyOverrides as We, classicPreset as ze, cleanPreset as Fe, corporatePreset as Ke, getAllPresets as qe, getPreset as Je, glassPreset as Qe, minimalPreset as Xe, neonPreset as Ye, pastelPreset as Ze, playfulKidsPreset as $e, themePresets as er, validateContrast as rr } from "./presets/themePresets.js";
61
- import { HERO_IMAGE_NAMES as or, PLACEHOLDER_IMAGE_URL as ar, getHeroVariation as mr, heroVariationIds as ir, heroVariations as pr } from "./presets/heroVariations.js";
62
- import { getNavbarVariation as nr, navbarVariationIds as lr, navbarVariations as cr } from "./presets/navbarVariations.js";
63
- import { generateCompleteLandingPage as dr, generateModernLandingPage as fr, generatePatchesForLandingPage as hr } from "./generators/generateLandingPage.js";
55
+ import { RenderNode as ke } from "./render/renderNode.js";
56
+ import { RenderPage as ye, renderPage as Me } from "./render/renderPage.js";
57
+ import { clearHtmlCache as Ve, exportBlockToHtml as be, exportDocumentToHtml as He, exportPageToHtml as ve, generateAssetsManifest as Re } from "./export/exportHtml.js";
58
+ import { isSafeUrl as Ae, sanitizeHtml as De } from "./export/sanitizeHtml.js";
59
+ import { Preview as Z } from "./preview/Preview.js";
60
+ import { applyPatch as Ie, createAddPatch as Ne, createCopyPatch as Oe, createMovePatch as _e, createRemovePatch as we, createReplacePatch as Be } from "./patch/applyPatch.js";
61
+ import { HistoryManager as je, createHistoryManager as Ue } from "./patch/history.js";
62
+ import { PatchBuilder as ze } from "./patch/PatchBuilder.js";
63
+ import { applyOverrides as Ke, classicPreset as qe, cleanPreset as Je, corporatePreset as Qe, getAllPresets as Xe, getPreset as Ye, glassPreset as Ze, minimalPreset as $e, neonPreset as er, pastelPreset as rr, playfulKidsPreset as tr, themePresets as or, validateContrast as ar } from "./presets/themePresets.js";
64
+ import { HERO_IMAGE_NAMES as ir, PLACEHOLDER_IMAGE_URL as pr, getHeroVariation as sr, heroVariationIds as nr, heroVariations as lr } from "./presets/heroVariations.js";
65
+ import { getNavbarVariation as gr, navbarVariationIds as dr, navbarVariations as fr } from "./presets/navbarVariations.js";
66
+ import { generateCompleteLandingPage as Pr, generateModernLandingPage as Tr, generatePatchesForLandingPage as xr } from "./generators/generateLandingPage.js";
64
67
  import "./plugins/builtin/blog/manifest.js";
65
- import { evaluateShowWhen as Tr } from "./shared/showWhen.js";
66
- import { createThemeStyle as Sr, generateCSSVariables as kr, generateCSSVariablesObject as ur, mergeThemeTokens as yr } from "./theme/generateCSSVariables.js";
67
- import { gridPresetMap as Cr, imageGridPresetIds as Vr } from "./shared/imageGrid/presets.js";
68
- import { hydratePageWithContent as Hr } from "./plugins/contentHydration.js";
69
- import { matchDynamicPage as Rr } from "./plugins/dynamicPageResolver.js";
70
- import { pluginRegistry as Ar } from "./plugins/pluginRegistry.js";
71
- import { renderBlockNode as Lr } from "./render/renderNodeImpl.js";
72
- import { darkTheme as Nr, defaultTheme as Or } from "./theme/defaultTheme.js";
68
+ import { evaluateShowWhen as kr } from "./shared/showWhen.js";
69
+ import { createThemeStyle as yr, generateCSSVariables as Mr, generateCSSVariablesObject as Cr, mergeThemeTokens as Vr } from "./theme/generateCSSVariables.js";
70
+ import { gridPresetMap as Hr, imageGridPresetIds as vr } from "./shared/imageGrid/presets.js";
71
+ import { hydratePageWithContent as Er } from "./plugins/contentHydration.js";
72
+ import { matchDynamicPage as Dr } from "./plugins/dynamicPageResolver.js";
73
+ import { pluginRegistry as Ir } from "./plugins/pluginRegistry.js";
74
+ import { renderBlockNode as Or } from "./render/renderNodeImpl.js";
75
+ import { darkTheme as wr, defaultTheme as Br } from "./theme/defaultTheme.js";
73
76
  export {
74
- or as HERO_IMAGE_NAMES,
75
- we as HistoryManager,
76
- ar as PLACEHOLDER_IMAGE_URL,
77
- je as PatchBuilder,
78
- Q as Preview,
79
- Te as RenderNode,
80
- Se as RenderPage,
81
- We as applyOverrides,
82
- Ae as applyPatch,
83
- ze as classicPreset,
84
- Fe as cleanPreset,
85
- ye as clearHtmlCache,
86
- he as componentRegistry,
87
- Ke as corporatePreset,
88
- re as corporateThemeTokens,
89
- De as createAddPatch,
90
- Le as createCopyPatch,
91
- $ as createEmptySiteDocument,
92
- Be as createHistoryManager,
93
- Ie as createMovePatch,
94
- Ne as createRemovePatch,
95
- Oe as createReplacePatch,
96
- Sr as createSiteThemeStyle,
97
- te as darkThemeTokens,
98
- oe as defaultComponentTokens,
99
- ae as defaultEffectTokens,
100
- me as defaultLayoutTokens,
101
- ie as defaultThemeTokens,
102
- Tr as evaluateShowWhen,
103
- Me as exportBlockToHtml,
104
- Ce as exportDocumentToHtml,
105
- Ve as exportPageToHtml,
106
- be as generateAssetsManifest,
107
- dr as generateCompleteLandingPage,
108
- fr as generateModernLandingPage,
109
- hr as generatePatchesForLandingPage,
110
- kr as generateSiteCSSVariables,
111
- ur as generateSiteCSSVariablesObject,
112
- pe as generateThemeCSSVariables,
113
- qe as getAllPresets,
114
- mr as getHeroVariation,
115
- nr as getNavbarVariation,
116
- Je as getPreset,
117
- Qe as glassPreset,
118
- se as gradientDirectionMap,
119
- ne as gradientThemeTokens,
120
- Cr as gridPresetMap,
121
- ir as heroVariationIds,
122
- pr as heroVariations,
123
- Hr as hydratePageWithContent,
124
- Vr as imageGridPresetIds,
125
- ve as isSafeUrl,
126
- Rr as matchDynamicPage,
127
- yr as mergeSiteThemeTokens,
128
- Xe as minimalPreset,
129
- lr as navbarVariationIds,
130
- cr as navbarVariations,
131
- Ye as neonPreset,
132
- Ze as pastelPreset,
133
- $e as playfulKidsPreset,
134
- le as playfulThemeTokens,
135
- Ar as pluginRegistry,
136
- ce as radiusScaleMap,
137
- Lr as renderNode,
138
- ke as renderPage,
139
- Re as sanitizeHtml,
140
- ge as shadowScaleMap,
141
- Nr as siteDarkTheme,
142
- Or as siteDefaultTheme,
143
- de as spacingScaleMap,
144
- er as themePresets,
145
- rr as validateContrast
77
+ ir as HERO_IMAGE_NAMES,
78
+ je as HistoryManager,
79
+ pr as PLACEHOLDER_IMAGE_URL,
80
+ ze as PatchBuilder,
81
+ Z as Preview,
82
+ ke as RenderNode,
83
+ ye as RenderPage,
84
+ Ke as applyOverrides,
85
+ Ie as applyPatch,
86
+ qe as classicPreset,
87
+ Je as cleanPreset,
88
+ Ve as clearHtmlCache,
89
+ xe as componentRegistry,
90
+ Qe as corporatePreset,
91
+ ae as corporateThemeTokens,
92
+ Ne as createAddPatch,
93
+ Oe as createCopyPatch,
94
+ te as createEmptySiteDocument,
95
+ Ue as createHistoryManager,
96
+ _e as createMovePatch,
97
+ we as createRemovePatch,
98
+ Be as createReplacePatch,
99
+ yr as createSiteThemeStyle,
100
+ me as darkThemeTokens,
101
+ ie as defaultComponentTokens,
102
+ pe as defaultEffectTokens,
103
+ se as defaultLayoutTokens,
104
+ ne as defaultThemeTokens,
105
+ kr as evaluateShowWhen,
106
+ be as exportBlockToHtml,
107
+ He as exportDocumentToHtml,
108
+ ve as exportPageToHtml,
109
+ Re as generateAssetsManifest,
110
+ Pr as generateCompleteLandingPage,
111
+ Tr as generateModernLandingPage,
112
+ xr as generatePatchesForLandingPage,
113
+ Mr as generateSiteCSSVariables,
114
+ Cr as generateSiteCSSVariablesObject,
115
+ le as generateThemeCSSVariables,
116
+ Xe as getAllPresets,
117
+ sr as getHeroVariation,
118
+ gr as getNavbarVariation,
119
+ Ye as getPreset,
120
+ Ze as glassPreset,
121
+ ce as gradientDirectionMap,
122
+ ge as gradientThemeTokens,
123
+ Hr as gridPresetMap,
124
+ nr as heroVariationIds,
125
+ lr as heroVariations,
126
+ Er as hydratePageWithContent,
127
+ vr as imageGridPresetIds,
128
+ Ae as isSafeUrl,
129
+ Dr as matchDynamicPage,
130
+ Vr as mergeSiteThemeTokens,
131
+ $e as minimalPreset,
132
+ dr as navbarVariationIds,
133
+ fr as navbarVariations,
134
+ er as neonPreset,
135
+ rr as pastelPreset,
136
+ tr as playfulKidsPreset,
137
+ de as playfulThemeTokens,
138
+ Ir as pluginRegistry,
139
+ fe as radiusScaleMap,
140
+ Or as renderNode,
141
+ Me as renderPage,
142
+ De as sanitizeHtml,
143
+ he as shadowScaleMap,
144
+ wr as siteDarkTheme,
145
+ Br as siteDefaultTheme,
146
+ Pe as spacingScaleMap,
147
+ or as themePresets,
148
+ ar as validateContrast
146
149
  };
147
150
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Preview.d.ts","sourceRoot":"","sources":["../../../src/engine/preview/Preview.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,YAAY,EAAS,MAAM,wBAAwB,CAAC;AAO7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAwDD;;GAEG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,YAAY,EACZ,eAAe,EACf,oBAA4B,EAC5B,YAAmB,GACpB,EAAE,YAAY,2CAokBd"}
1
+ {"version":3,"file":"Preview.d.ts","sourceRoot":"","sources":["../../../src/engine/preview/Preview.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,YAAY,EAAS,MAAM,wBAAwB,CAAC;AAO7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAwDD;;GAEG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,YAAY,EACZ,eAAe,EACf,oBAA4B,EAC5B,YAAmB,GACpB,EAAE,YAAY,2CA4kBd"}