@brunoalz/smartgesti-site-editor 0.2.2 → 1.1.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 (607) hide show
  1. package/dist/editor/BlockSelector.d.ts +2 -1
  2. package/dist/editor/BlockSelector.d.ts.map +1 -1
  3. package/dist/editor/BlockSelector.js +55 -64
  4. package/dist/editor/BlockSelector.js.map +1 -1
  5. package/dist/editor/LandingPageEditor.d.ts +19 -0
  6. package/dist/editor/LandingPageEditor.d.ts.map +1 -0
  7. package/dist/editor/LandingPageEditor.js +239 -0
  8. package/dist/editor/LandingPageEditor.js.map +1 -0
  9. package/dist/editor/PageTabBar.d.ts +4 -1
  10. package/dist/editor/PageTabBar.d.ts.map +1 -1
  11. package/dist/editor/PageTabBar.js +179 -41
  12. package/dist/editor/PageTabBar.js.map +1 -1
  13. package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts +5 -3
  14. package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts.map +1 -1
  15. package/dist/editor/PropertyEditor/BlockPropertyEditor.js +60 -113
  16. package/dist/editor/PropertyEditor/BlockPropertyEditor.js.map +1 -1
  17. package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.d.ts +3 -1
  18. package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.d.ts.map +1 -1
  19. package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.js +47 -33
  20. package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.js.map +1 -1
  21. package/dist/editor/PropertyEditor/PropertyGroup.d.ts +1 -1
  22. package/dist/editor/PropertyEditor/PropertyGroup.d.ts.map +1 -1
  23. package/dist/editor/PropertyEditor/VariationSelector.d.ts +2 -1
  24. package/dist/editor/PropertyEditor/VariationSelector.d.ts.map +1 -1
  25. package/dist/editor/PropertyEditor/VariationSelector.js +35 -31
  26. package/dist/editor/PropertyEditor/VariationSelector.js.map +1 -1
  27. package/dist/editor/PropertyEditor/index.js +30 -28
  28. package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.d.ts +16 -0
  29. package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.d.ts.map +1 -0
  30. package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.js +170 -0
  31. package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.js.map +1 -0
  32. package/dist/editor/PropertyEditor/inputs/ImageGridInput.d.ts +1 -1
  33. package/dist/editor/PropertyEditor/inputs/ImageGridInput.d.ts.map +1 -1
  34. package/dist/editor/PropertyEditor/inputs/ImageGridInput.js +148 -121
  35. package/dist/editor/PropertyEditor/inputs/ImageGridInput.js.map +1 -1
  36. package/dist/editor/PropertyEditor/inputs/ImageInput.d.ts.map +1 -0
  37. package/dist/{components → editor/PropertyEditor}/inputs/ImageInput.js +41 -39
  38. package/dist/editor/PropertyEditor/inputs/ImageInput.js.map +1 -0
  39. package/dist/editor/PropertyEditor/inputs/TypographyInput.js +41 -44
  40. package/dist/editor/PropertyEditor/inputs/TypographyInput.js.map +1 -1
  41. package/dist/editor/PropertyEditor/inputs/index.d.ts +2 -0
  42. package/dist/editor/PropertyEditor/inputs/index.d.ts.map +1 -1
  43. package/dist/editor/PropertyEditor/renderPropertyInput.d.ts +1 -1
  44. package/dist/editor/PropertyEditor/renderPropertyInput.d.ts.map +1 -1
  45. package/dist/editor/PropertyEditor/renderPropertyInput.js +167 -139
  46. package/dist/editor/PropertyEditor/renderPropertyInput.js.map +1 -1
  47. package/dist/editor/components/CenterPanel.d.ts +13 -4
  48. package/dist/editor/components/CenterPanel.d.ts.map +1 -1
  49. package/dist/editor/components/CenterPanel.js +40 -31
  50. package/dist/editor/components/CenterPanel.js.map +1 -1
  51. package/dist/editor/components/LeftPanel.d.ts +2 -1
  52. package/dist/editor/components/LeftPanel.d.ts.map +1 -1
  53. package/dist/editor/components/LeftPanel.js +13 -12
  54. package/dist/editor/components/LeftPanel.js.map +1 -1
  55. package/dist/editor/components/LoadingSpinner.d.ts.map +1 -0
  56. package/dist/editor/components/LoadingSpinner.js.map +1 -0
  57. package/dist/editor/components/RightPanel.d.ts +8 -2
  58. package/dist/editor/components/RightPanel.d.ts.map +1 -1
  59. package/dist/editor/components/RightPanel.js +24 -19
  60. package/dist/editor/components/RightPanel.js.map +1 -1
  61. package/dist/editor/components/Toolbar.d.ts +5 -1
  62. package/dist/editor/components/Toolbar.d.ts.map +1 -1
  63. package/dist/editor/components/Toolbar.js +56 -40
  64. package/dist/editor/components/Toolbar.js.map +1 -1
  65. package/dist/engine/export/exportHtml.d.ts +10 -5
  66. package/dist/engine/export/exportHtml.d.ts.map +1 -1
  67. package/dist/engine/export/exportHtml.js +38 -40
  68. package/dist/engine/export/exportHtml.js.map +1 -1
  69. package/dist/engine/export/exporters/content/HeadingExporter.d.ts.map +1 -1
  70. package/dist/engine/export/exporters/content/HeadingExporter.js +6 -6
  71. package/dist/engine/export/exporters/content/HeadingExporter.js.map +1 -1
  72. package/dist/engine/export/exporters/content/LinkExporter.d.ts.map +1 -1
  73. package/dist/engine/export/exporters/content/LinkExporter.js +6 -6
  74. package/dist/engine/export/exporters/content/LinkExporter.js.map +1 -1
  75. package/dist/engine/export/exporters/content/TextExporter.d.ts.map +1 -1
  76. package/dist/engine/export/exporters/content/TextExporter.js +7 -7
  77. package/dist/engine/export/exporters/content/TextExporter.js.map +1 -1
  78. package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts +6 -0
  79. package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts.map +1 -0
  80. package/dist/engine/export/exporters/sections/BlogPostExporters.js +101 -0
  81. package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -0
  82. package/dist/engine/export/exporters/sections/FooterExporter.d.ts.map +1 -1
  83. package/dist/engine/export/exporters/sections/FooterExporter.js +33 -40
  84. package/dist/engine/export/exporters/sections/FooterExporter.js.map +1 -1
  85. package/dist/engine/export/exporters/sections/HeroExporter.d.ts.map +1 -1
  86. package/dist/engine/export/exporters/sections/HeroExporter.js +222 -218
  87. package/dist/engine/export/exporters/sections/HeroExporter.js.map +1 -1
  88. package/dist/engine/export/exporters/sections/MarketingExporters.js +88 -88
  89. package/dist/engine/export/exporters/sections/MarketingExporters.js.map +1 -1
  90. package/dist/engine/export/exporters/sections/NavbarExporter.js +34 -34
  91. package/dist/engine/export/exporters/sections/NavbarExporter.js.map +1 -1
  92. package/dist/engine/export/exporters/sections/index.d.ts.map +1 -1
  93. package/dist/engine/export/exporters/sections/index.js +29 -22
  94. package/dist/engine/export/exporters/sections/index.js.map +1 -1
  95. package/dist/engine/export/sanitizeHtml.d.ts.map +1 -1
  96. package/dist/engine/export/sanitizeHtml.js +65 -18
  97. package/dist/engine/export/sanitizeHtml.js.map +1 -1
  98. package/dist/engine/export/styleResolver.d.ts.map +1 -1
  99. package/dist/engine/export/styleResolver.js +33 -33
  100. package/dist/engine/export/styleResolver.js.map +1 -1
  101. package/dist/engine/generators/generateLandingPage.d.ts +4 -4
  102. package/dist/engine/generators/generateLandingPage.d.ts.map +1 -1
  103. package/dist/engine/generators/generateLandingPage.js.map +1 -1
  104. package/dist/engine/index.d.ts +6 -3
  105. package/dist/engine/index.d.ts.map +1 -1
  106. package/dist/engine/index.js +99 -89
  107. package/dist/engine/index.js.map +1 -1
  108. package/dist/engine/patch/PatchBuilder.d.ts +11 -11
  109. package/dist/engine/patch/PatchBuilder.d.ts.map +1 -1
  110. package/dist/engine/patch/PatchBuilder.js +92 -93
  111. package/dist/engine/patch/PatchBuilder.js.map +1 -1
  112. package/dist/engine/patch/applyPatch.js.map +1 -1
  113. package/dist/engine/plugins/builtin/blog/index.d.ts +3 -0
  114. package/dist/engine/plugins/builtin/blog/index.d.ts.map +1 -0
  115. package/dist/engine/plugins/builtin/blog/manifest.d.ts +3 -0
  116. package/dist/engine/plugins/builtin/blog/manifest.d.ts.map +1 -0
  117. package/dist/engine/plugins/builtin/blog/manifest.js +273 -0
  118. package/dist/engine/plugins/builtin/blog/manifest.js.map +1 -0
  119. package/dist/engine/plugins/builtin/blog/mockContentProvider.d.ts +7 -0
  120. package/dist/engine/plugins/builtin/blog/mockContentProvider.d.ts.map +1 -0
  121. package/dist/engine/plugins/builtin/blog/mockContentProvider.js +135 -0
  122. package/dist/engine/plugins/builtin/blog/mockContentProvider.js.map +1 -0
  123. package/dist/engine/plugins/contentHydration.d.ts +17 -0
  124. package/dist/engine/plugins/contentHydration.d.ts.map +1 -0
  125. package/dist/engine/plugins/contentHydration.js +121 -0
  126. package/dist/engine/plugins/contentHydration.js.map +1 -0
  127. package/dist/engine/plugins/dynamicPageResolver.d.ts +25 -0
  128. package/dist/engine/plugins/dynamicPageResolver.d.ts.map +1 -0
  129. package/dist/engine/plugins/dynamicPageResolver.js +32 -0
  130. package/dist/engine/plugins/dynamicPageResolver.js.map +1 -0
  131. package/dist/engine/plugins/index.d.ts +11 -0
  132. package/dist/engine/plugins/index.d.ts.map +1 -0
  133. package/dist/engine/plugins/pluginRegistry.d.ts +37 -0
  134. package/dist/engine/plugins/pluginRegistry.d.ts.map +1 -0
  135. package/dist/engine/plugins/pluginRegistry.js +134 -0
  136. package/dist/engine/plugins/pluginRegistry.js.map +1 -0
  137. package/dist/engine/plugins/types.d.ts +180 -0
  138. package/dist/engine/plugins/types.d.ts.map +1 -0
  139. package/dist/engine/presets/heroVariations.d.ts +5 -0
  140. package/dist/engine/presets/heroVariations.d.ts.map +1 -1
  141. package/dist/engine/presets/heroVariations.js +50 -6
  142. package/dist/engine/presets/heroVariations.js.map +1 -1
  143. package/dist/engine/preview/Preview.d.ts +19 -0
  144. package/dist/engine/preview/Preview.d.ts.map +1 -0
  145. package/dist/engine/preview/Preview.js +418 -0
  146. package/dist/engine/preview/Preview.js.map +1 -0
  147. package/dist/engine/registry/blocks/sections/blogPostCard.d.ts +3 -0
  148. package/dist/engine/registry/blocks/sections/blogPostCard.d.ts.map +1 -0
  149. package/dist/engine/registry/blocks/sections/blogPostCard.js +53 -0
  150. package/dist/engine/registry/blocks/sections/blogPostCard.js.map +1 -0
  151. package/dist/engine/registry/blocks/sections/blogPostDetail.d.ts +3 -0
  152. package/dist/engine/registry/blocks/sections/blogPostDetail.d.ts.map +1 -0
  153. package/dist/engine/registry/blocks/sections/blogPostDetail.js +49 -0
  154. package/dist/engine/registry/blocks/sections/blogPostDetail.js.map +1 -0
  155. package/dist/engine/registry/blocks/sections/blogPostGrid.d.ts +3 -0
  156. package/dist/engine/registry/blocks/sections/blogPostGrid.d.ts.map +1 -0
  157. package/dist/engine/registry/blocks/sections/blogPostGrid.js +89 -0
  158. package/dist/engine/registry/blocks/sections/blogPostGrid.js.map +1 -0
  159. package/dist/engine/registry/blocks/sections/hero.d.ts.map +1 -1
  160. package/dist/engine/registry/blocks/sections/hero.js +67 -14
  161. package/dist/engine/registry/blocks/sections/hero.js.map +1 -1
  162. package/dist/engine/registry/blocks/sections/index.d.ts +3 -0
  163. package/dist/engine/registry/blocks/sections/index.d.ts.map +1 -1
  164. package/dist/engine/registry/blocks/sections/navbar.d.ts.map +1 -1
  165. package/dist/engine/registry/blocks/sections/navbar.js +2 -1
  166. package/dist/engine/registry/blocks/sections/navbar.js.map +1 -1
  167. package/dist/engine/registry/registry.d.ts.map +1 -1
  168. package/dist/engine/registry/registry.js +39 -36
  169. package/dist/engine/registry/registry.js.map +1 -1
  170. package/dist/engine/registry/types.d.ts +17 -13
  171. package/dist/engine/registry/types.d.ts.map +1 -1
  172. package/dist/engine/render/renderNodeImpl.js +85 -85
  173. package/dist/engine/render/renderNodeImpl.js.map +1 -1
  174. package/dist/engine/render/renderPage.d.ts +3 -3
  175. package/dist/engine/render/renderPage.d.ts.map +1 -1
  176. package/dist/engine/render/renderPage.js.map +1 -1
  177. package/dist/engine/render/renderers/composition/CardRenderer.js +4 -4
  178. package/dist/engine/render/renderers/content/LinkRenderer.d.ts.map +1 -1
  179. package/dist/engine/render/renderers/content/LinkRenderer.js +41 -16
  180. package/dist/engine/render/renderers/content/LinkRenderer.js.map +1 -1
  181. package/dist/engine/render/renderers/content/SocialLinksRenderer.d.ts.map +1 -1
  182. package/dist/engine/render/renderers/content/SocialLinksRenderer.js +16 -23
  183. package/dist/engine/render/renderers/content/SocialLinksRenderer.js.map +1 -1
  184. package/dist/engine/render/renderers/forms/FormRenderer.js +6 -6
  185. package/dist/engine/render/renderers/layout/GridRenderer.js +3 -3
  186. package/dist/engine/render/renderers/sections/BlogPostCardRenderer.d.ts +3 -0
  187. package/dist/engine/render/renderers/sections/BlogPostCardRenderer.d.ts.map +1 -0
  188. package/dist/engine/render/renderers/sections/BlogPostCardRenderer.js +199 -0
  189. package/dist/engine/render/renderers/sections/BlogPostCardRenderer.js.map +1 -0
  190. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.d.ts +3 -0
  191. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.d.ts.map +1 -0
  192. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js +293 -0
  193. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js.map +1 -0
  194. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.d.ts +3 -0
  195. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.d.ts.map +1 -0
  196. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.js +101 -0
  197. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.js.map +1 -0
  198. package/dist/engine/render/renderers/sections/CtaRenderer.d.ts.map +1 -1
  199. package/dist/engine/render/renderers/sections/CtaRenderer.js +33 -31
  200. package/dist/engine/render/renderers/sections/CtaRenderer.js.map +1 -1
  201. package/dist/engine/render/renderers/sections/FaqItemRenderer.d.ts.map +1 -1
  202. package/dist/engine/render/renderers/sections/FaqItemRenderer.js +7 -6
  203. package/dist/engine/render/renderers/sections/FaqItemRenderer.js.map +1 -1
  204. package/dist/engine/render/renderers/sections/FaqRenderer.js +7 -7
  205. package/dist/engine/render/renderers/sections/FaqRenderer.js.map +1 -1
  206. package/dist/engine/render/renderers/sections/FeatureGridRenderer.d.ts.map +1 -1
  207. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js +19 -18
  208. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js.map +1 -1
  209. package/dist/engine/render/renderers/sections/FeatureRenderer.d.ts.map +1 -1
  210. package/dist/engine/render/renderers/sections/FeatureRenderer.js +5 -4
  211. package/dist/engine/render/renderers/sections/FeatureRenderer.js.map +1 -1
  212. package/dist/engine/render/renderers/sections/FooterRenderer.d.ts.map +1 -1
  213. package/dist/engine/render/renderers/sections/FooterRenderer.js +25 -30
  214. package/dist/engine/render/renderers/sections/FooterRenderer.js.map +1 -1
  215. package/dist/engine/render/renderers/sections/HeroRenderer.d.ts.map +1 -1
  216. package/dist/engine/render/renderers/sections/HeroRenderer.js +293 -229
  217. package/dist/engine/render/renderers/sections/HeroRenderer.js.map +1 -1
  218. package/dist/engine/render/renderers/sections/NavbarRenderer.d.ts.map +1 -1
  219. package/dist/engine/render/renderers/sections/NavbarRenderer.js +23 -22
  220. package/dist/engine/render/renderers/sections/NavbarRenderer.js.map +1 -1
  221. package/dist/engine/render/renderers/sections/PricingCardRenderer.d.ts.map +1 -1
  222. package/dist/engine/render/renderers/sections/PricingCardRenderer.js +7 -6
  223. package/dist/engine/render/renderers/sections/PricingCardRenderer.js.map +1 -1
  224. package/dist/engine/render/renderers/sections/PricingRenderer.js +9 -9
  225. package/dist/engine/render/renderers/sections/PricingRenderer.js.map +1 -1
  226. package/dist/engine/render/renderers/sections/TestimonialGridRenderer.d.ts.map +1 -1
  227. package/dist/engine/render/renderers/sections/TestimonialGridRenderer.js +17 -16
  228. package/dist/engine/render/renderers/sections/TestimonialGridRenderer.js.map +1 -1
  229. package/dist/engine/render/renderers/sections/TestimonialRenderer.d.ts.map +1 -1
  230. package/dist/engine/render/renderers/sections/TestimonialRenderer.js +11 -10
  231. package/dist/engine/render/renderers/sections/TestimonialRenderer.js.map +1 -1
  232. package/dist/engine/render/renderers/sections/index.js +24 -18
  233. package/dist/engine/render/renderers/sections/index.js.map +1 -1
  234. package/dist/engine/schema/siteDocument.d.ts +118 -7
  235. package/dist/engine/schema/siteDocument.d.ts.map +1 -1
  236. package/dist/engine/schema/siteDocument.js +1 -1
  237. package/dist/engine/schema/siteDocument.js.map +1 -1
  238. package/dist/engine/schema/themeTokens.d.ts +1 -1
  239. package/dist/engine/schema/themeTokens.js.map +1 -1
  240. package/dist/engine/shared/carouselAnimation.d.ts +20 -0
  241. package/dist/engine/shared/carouselAnimation.d.ts.map +1 -0
  242. package/dist/engine/shared/carouselAnimation.js +62 -0
  243. package/dist/engine/shared/carouselAnimation.js.map +1 -0
  244. package/dist/engine/shared/imageGrid/presets.js +4 -12
  245. package/dist/engine/shared/imageGrid/presets.js.map +1 -1
  246. package/dist/engine/shared/imageGrid/types.d.ts +2 -0
  247. package/dist/engine/shared/imageGrid/types.d.ts.map +1 -1
  248. package/dist/engine/shared/layoutConstants.d.ts +13 -0
  249. package/dist/engine/shared/layoutConstants.d.ts.map +1 -0
  250. package/dist/engine/shared/layoutConstants.js +14 -0
  251. package/dist/engine/shared/layoutConstants.js.map +1 -0
  252. package/dist/engine/shared/shadowConstants.d.ts +5 -0
  253. package/dist/engine/shared/shadowConstants.d.ts.map +1 -0
  254. package/dist/engine/shared/shadowConstants.js +11 -0
  255. package/dist/engine/shared/shadowConstants.js.map +1 -0
  256. package/dist/engine/shared/showWhen.d.ts +44 -0
  257. package/dist/engine/shared/showWhen.d.ts.map +1 -0
  258. package/dist/engine/shared/showWhen.js +33 -0
  259. package/dist/engine/shared/showWhen.js.map +1 -0
  260. package/dist/engine/shared/socialIcons.d.ts +6 -0
  261. package/dist/engine/shared/socialIcons.d.ts.map +1 -0
  262. package/dist/engine/shared/socialIcons.js +13 -0
  263. package/dist/engine/shared/socialIcons.js.map +1 -0
  264. package/dist/engine/shared/typeGuards.d.ts +11 -0
  265. package/dist/engine/shared/typeGuards.d.ts.map +1 -0
  266. package/dist/hooks/useEditorState.d.ts +8 -5
  267. package/dist/hooks/useEditorState.d.ts.map +1 -1
  268. package/dist/hooks/useEditorState.js +150 -194
  269. package/dist/hooks/useEditorState.js.map +1 -1
  270. package/dist/hooks/useNavbarAutoSync.d.ts +2 -2
  271. package/dist/hooks/useNavbarAutoSync.d.ts.map +1 -1
  272. package/dist/hooks/useNavbarAutoSync.js.map +1 -1
  273. package/dist/index.d.ts +60 -14
  274. package/dist/index.d.ts.map +1 -1
  275. package/dist/index.js +109 -124
  276. package/dist/index.js.map +1 -1
  277. package/dist/shared/index.d.ts +2 -2
  278. package/dist/shared/index.d.ts.map +1 -1
  279. package/dist/shared/schema.d.ts +4 -4
  280. package/dist/shared/schema.d.ts.map +1 -1
  281. package/dist/shared/schema.js.map +1 -1
  282. package/dist/shared/templates/escola-blog.d.ts +3 -0
  283. package/dist/shared/templates/escola-blog.d.ts.map +1 -0
  284. package/dist/shared/templates/escola-blog.js +160 -0
  285. package/dist/shared/templates/escola-blog.js.map +1 -0
  286. package/dist/shared/templates/escola-edvi.d.ts +2 -2
  287. package/dist/shared/templates/escola-edvi.d.ts.map +1 -1
  288. package/dist/shared/templates/escola-edvi.js.map +1 -1
  289. package/dist/shared/templates/escola-premium.d.ts +2 -2
  290. package/dist/shared/templates/escola-premium.d.ts.map +1 -1
  291. package/dist/shared/templates/escola-premium.js.map +1 -1
  292. package/dist/shared/templates/escola-zilom.d.ts +2 -2
  293. package/dist/shared/templates/escola-zilom.d.ts.map +1 -1
  294. package/dist/shared/templates/escola-zilom.js.map +1 -1
  295. package/dist/shared/templates/index.d.ts +7 -5
  296. package/dist/shared/templates/index.d.ts.map +1 -1
  297. package/dist/shared/templates/index.js +30 -12
  298. package/dist/shared/templates/index.js.map +1 -1
  299. package/dist/shared/validators.d.ts +3 -3
  300. package/dist/shared/validators.d.ts.map +1 -1
  301. package/dist/shared/validators.js.map +1 -1
  302. package/dist/site/BlockRenderer.d.ts +1 -1
  303. package/dist/site/BlockRenderer.d.ts.map +1 -1
  304. package/dist/site/BlockRenderer.js +22 -26
  305. package/dist/site/BlockRenderer.js.map +1 -1
  306. package/dist/site/blocks/Button.js +15 -17
  307. package/dist/site/blocks/Button.js.map +1 -1
  308. package/dist/site/blocks/Card.js +13 -15
  309. package/dist/site/blocks/Card.js.map +1 -1
  310. package/dist/site/blocks/Features.js +15 -17
  311. package/dist/site/blocks/Features.js.map +1 -1
  312. package/dist/site/blocks/Footer.js +10 -12
  313. package/dist/site/blocks/Footer.js.map +1 -1
  314. package/dist/site/blocks/Hero.js +12 -14
  315. package/dist/site/blocks/Hero.js.map +1 -1
  316. package/dist/site/blocks/Navbar.js +13 -15
  317. package/dist/site/blocks/Navbar.js.map +1 -1
  318. package/dist/site/blocks/Section.js +9 -11
  319. package/dist/site/blocks/Section.js.map +1 -1
  320. package/dist/site/blocks/SectionHeader.js +9 -11
  321. package/dist/site/blocks/SectionHeader.js.map +1 -1
  322. package/dist/site/blocks/SiteRoot.js +9 -12
  323. package/dist/site/blocks/SiteRoot.js.map +1 -1
  324. package/dist/site/index.js +73 -73
  325. package/dist/styles/site/sections.css.d.ts +1 -1
  326. package/dist/utils/blockUtils.d.ts +2 -2
  327. package/dist/utils/blockUtils.d.ts.map +1 -1
  328. package/dist/utils/blockUtils.js.map +1 -1
  329. package/dist/utils/changeDetector.d.ts +3 -2
  330. package/dist/utils/changeDetector.d.ts.map +1 -1
  331. package/dist/utils/changeDetector.js +39 -39
  332. package/dist/utils/changeDetector.js.map +1 -1
  333. package/dist/utils/cn.js +2 -2
  334. package/dist/utils/dataURLUtils.d.ts +24 -0
  335. package/dist/utils/dataURLUtils.d.ts.map +1 -0
  336. package/dist/utils/dataURLUtils.js +47 -0
  337. package/dist/utils/dataURLUtils.js.map +1 -0
  338. package/dist/utils/documentHash.d.ts +2 -2
  339. package/dist/utils/documentHash.d.ts.map +1 -1
  340. package/dist/utils/documentHash.js +8 -7
  341. package/dist/utils/documentHash.js.map +1 -1
  342. package/dist/utils/logger.d.ts +13 -0
  343. package/dist/utils/logger.d.ts.map +1 -0
  344. package/dist/utils/logger.js +13 -0
  345. package/dist/utils/logger.js.map +1 -0
  346. package/dist/utils/navbarSync.d.ts +3 -3
  347. package/dist/utils/navbarSync.d.ts.map +1 -1
  348. package/dist/utils/navbarSync.js +25 -24
  349. package/dist/utils/navbarSync.js.map +1 -1
  350. package/dist/utils/sharedTemplateToEngine.d.ts +7 -8
  351. package/dist/utils/sharedTemplateToEngine.d.ts.map +1 -1
  352. package/dist/utils/sharedTemplateToEngine.js +14 -87
  353. package/dist/utils/sharedTemplateToEngine.js.map +1 -1
  354. package/dist/viewer/LandingPageViewer.d.ts +32 -0
  355. package/dist/viewer/LandingPageViewer.d.ts.map +1 -0
  356. package/dist/viewer/LandingPageViewer.js +300 -0
  357. package/dist/viewer/LandingPageViewer.js.map +1 -0
  358. package/package.json +10 -5
  359. package/dist/components/ComponentPalette/definitions.d.ts +0 -3
  360. package/dist/components/ComponentPalette/definitions.d.ts.map +0 -1
  361. package/dist/components/ComponentPalette/definitions.js +0 -206
  362. package/dist/components/ComponentPalette/definitions.js.map +0 -1
  363. package/dist/components/ComponentPalette/index.d.ts +0 -7
  364. package/dist/components/ComponentPalette/index.d.ts.map +0 -1
  365. package/dist/components/ComponentPalette/index.js +0 -86
  366. package/dist/components/ComponentPalette/index.js.map +0 -1
  367. package/dist/components/LoadingSpinner.d.ts.map +0 -1
  368. package/dist/components/LoadingSpinner.js.map +0 -1
  369. package/dist/components/PreviewPanel/index.d.ts +0 -12
  370. package/dist/components/PreviewPanel/index.d.ts.map +0 -1
  371. package/dist/components/PreviewPanel/index.js +0 -140
  372. package/dist/components/PreviewPanel/index.js.map +0 -1
  373. package/dist/components/PropertyPanel/index.d.ts +0 -8
  374. package/dist/components/PropertyPanel/index.d.ts.map +0 -1
  375. package/dist/components/PropertyPanel/index.js +0 -223
  376. package/dist/components/PropertyPanel/index.js.map +0 -1
  377. package/dist/components/SiteEditor/index.d.ts +0 -3
  378. package/dist/components/SiteEditor/index.d.ts.map +0 -1
  379. package/dist/components/SiteEditor/index.js +0 -251
  380. package/dist/components/SiteEditor/index.js.map +0 -1
  381. package/dist/components/SiteViewer/index.d.ts +0 -3
  382. package/dist/components/SiteViewer/index.d.ts.map +0 -1
  383. package/dist/components/SiteViewer/index.js +0 -55
  384. package/dist/components/SiteViewer/index.js.map +0 -1
  385. package/dist/components/TemplateSelector/index.d.ts +0 -7
  386. package/dist/components/TemplateSelector/index.d.ts.map +0 -1
  387. package/dist/components/TemplateSelector/index.js +0 -109
  388. package/dist/components/TemplateSelector/index.js.map +0 -1
  389. package/dist/components/Toolbar/index.d.ts +0 -15
  390. package/dist/components/Toolbar/index.d.ts.map +0 -1
  391. package/dist/components/Toolbar/index.js +0 -113
  392. package/dist/components/Toolbar/index.js.map +0 -1
  393. package/dist/components/editors/PaletteSelector.d.ts +0 -14
  394. package/dist/components/editors/PaletteSelector.d.ts.map +0 -1
  395. package/dist/components/editors/PaletteSelector.js +0 -175
  396. package/dist/components/editors/PaletteSelector.js.map +0 -1
  397. package/dist/components/effects/SectionGlow.d.ts +0 -12
  398. package/dist/components/effects/SectionGlow.d.ts.map +0 -1
  399. package/dist/components/effects/SectionGlow.js +0 -139
  400. package/dist/components/effects/SectionGlow.js.map +0 -1
  401. package/dist/components/inputs/CheckboxInput.d.ts +0 -3
  402. package/dist/components/inputs/CheckboxInput.d.ts.map +0 -1
  403. package/dist/components/inputs/CheckboxInput.js +0 -46
  404. package/dist/components/inputs/CheckboxInput.js.map +0 -1
  405. package/dist/components/inputs/ColorInput.d.ts +0 -7
  406. package/dist/components/inputs/ColorInput.d.ts.map +0 -1
  407. package/dist/components/inputs/ColorInput.js +0 -180
  408. package/dist/components/inputs/ColorInput.js.map +0 -1
  409. package/dist/components/inputs/GradientInput.d.ts +0 -7
  410. package/dist/components/inputs/GradientInput.d.ts.map +0 -1
  411. package/dist/components/inputs/GradientInput.js +0 -78
  412. package/dist/components/inputs/GradientInput.js.map +0 -1
  413. package/dist/components/inputs/ImageInput.d.ts.map +0 -1
  414. package/dist/components/inputs/ImageInput.js.map +0 -1
  415. package/dist/components/inputs/SelectInput.d.ts +0 -7
  416. package/dist/components/inputs/SelectInput.d.ts.map +0 -1
  417. package/dist/components/inputs/SelectInput.js +0 -97
  418. package/dist/components/inputs/SelectInput.js.map +0 -1
  419. package/dist/components/inputs/SliderInput.d.ts +0 -8
  420. package/dist/components/inputs/SliderInput.d.ts.map +0 -1
  421. package/dist/components/inputs/SliderInput.js +0 -77
  422. package/dist/components/inputs/SliderInput.js.map +0 -1
  423. package/dist/components/inputs/index.d.ts +0 -11
  424. package/dist/components/inputs/index.d.ts.map +0 -1
  425. package/dist/components/inputs/types.d.ts +0 -48
  426. package/dist/components/inputs/types.d.ts.map +0 -1
  427. package/dist/components/inputs/types.js +0 -9
  428. package/dist/components/inputs/types.js.map +0 -1
  429. package/dist/components/renderers/ComponentRenderer.d.ts +0 -8
  430. package/dist/components/renderers/ComponentRenderer.d.ts.map +0 -1
  431. package/dist/components/renderers/ComponentRenderer.js +0 -13
  432. package/dist/components/renderers/ComponentRenderer.js.map +0 -1
  433. package/dist/components/renderers/HeroRenderer.d.ts +0 -3
  434. package/dist/components/renderers/HeroRenderer.d.ts.map +0 -1
  435. package/dist/components/renderers/HeroRenderer.js +0 -10
  436. package/dist/components/renderers/HeroRenderer.js.map +0 -1
  437. package/dist/components/renderers/hero/HeroBanner.d.ts +0 -3
  438. package/dist/components/renderers/hero/HeroBanner.d.ts.map +0 -1
  439. package/dist/components/renderers/hero/HeroBanner.js +0 -122
  440. package/dist/components/renderers/hero/HeroBanner.js.map +0 -1
  441. package/dist/components/renderers/hero/HeroCinematic.d.ts +0 -3
  442. package/dist/components/renderers/hero/HeroCinematic.d.ts.map +0 -1
  443. package/dist/components/renderers/hero/HeroCinematic.js +0 -141
  444. package/dist/components/renderers/hero/HeroCinematic.js.map +0 -1
  445. package/dist/components/renderers/hero/HeroClassic.d.ts +0 -3
  446. package/dist/components/renderers/hero/HeroClassic.d.ts.map +0 -1
  447. package/dist/components/renderers/hero/HeroClassic.js +0 -241
  448. package/dist/components/renderers/hero/HeroClassic.js.map +0 -1
  449. package/dist/components/renderers/hero/HeroCollage.d.ts +0 -3
  450. package/dist/components/renderers/hero/HeroCollage.d.ts.map +0 -1
  451. package/dist/components/renderers/hero/HeroCollage.js +0 -131
  452. package/dist/components/renderers/hero/HeroCollage.js.map +0 -1
  453. package/dist/components/renderers/hero/HeroColumns.d.ts +0 -3
  454. package/dist/components/renderers/hero/HeroColumns.d.ts.map +0 -1
  455. package/dist/components/renderers/hero/HeroColumns.js +0 -114
  456. package/dist/components/renderers/hero/HeroColumns.js.map +0 -1
  457. package/dist/components/renderers/hero/HeroGlass.d.ts +0 -3
  458. package/dist/components/renderers/hero/HeroGlass.d.ts.map +0 -1
  459. package/dist/components/renderers/hero/HeroGlass.js +0 -119
  460. package/dist/components/renderers/hero/HeroGlass.js.map +0 -1
  461. package/dist/components/renderers/hero/HeroNeon.d.ts +0 -3
  462. package/dist/components/renderers/hero/HeroNeon.d.ts.map +0 -1
  463. package/dist/components/renderers/hero/HeroNeon.js +0 -136
  464. package/dist/components/renderers/hero/HeroNeon.js.map +0 -1
  465. package/dist/components/renderers/hero/HeroParallax.d.ts +0 -3
  466. package/dist/components/renderers/hero/HeroParallax.d.ts.map +0 -1
  467. package/dist/components/renderers/hero/HeroParallax.js +0 -99
  468. package/dist/components/renderers/hero/HeroParallax.js.map +0 -1
  469. package/dist/components/renderers/hero/HeroSplit.d.ts +0 -3
  470. package/dist/components/renderers/hero/HeroSplit.d.ts.map +0 -1
  471. package/dist/components/renderers/hero/HeroSplit.js +0 -142
  472. package/dist/components/renderers/hero/HeroSplit.js.map +0 -1
  473. package/dist/components/renderers/hero/HeroSpotlight.d.ts +0 -3
  474. package/dist/components/renderers/hero/HeroSpotlight.d.ts.map +0 -1
  475. package/dist/components/renderers/hero/HeroSpotlight.js +0 -213
  476. package/dist/components/renderers/hero/HeroSpotlight.js.map +0 -1
  477. package/dist/components/renderers/hero/index.d.ts +0 -14
  478. package/dist/components/renderers/hero/index.d.ts.map +0 -1
  479. package/dist/components/renderers/index.d.ts +0 -8
  480. package/dist/components/renderers/index.d.ts.map +0 -1
  481. package/dist/components/renderers/index.js +0 -89
  482. package/dist/components/renderers/index.js.map +0 -1
  483. package/dist/components/renderers/types.d.ts +0 -11
  484. package/dist/components/renderers/types.d.ts.map +0 -1
  485. package/dist/editor/LandingPageEditorV2.d.ts +0 -19
  486. package/dist/editor/LandingPageEditorV2.d.ts.map +0 -1
  487. package/dist/editor/LandingPageEditorV2.js +0 -311
  488. package/dist/editor/LandingPageEditorV2.js.map +0 -1
  489. package/dist/editor/PropertyEditor/PropertyGroup.js +0 -23
  490. package/dist/editor/PropertyEditor/PropertyGroup.js.map +0 -1
  491. package/dist/engine/preview/PreviewV2.d.ts +0 -15
  492. package/dist/engine/preview/PreviewV2.d.ts.map +0 -1
  493. package/dist/engine/preview/PreviewV2.js +0 -242
  494. package/dist/engine/preview/PreviewV2.js.map +0 -1
  495. package/dist/modules/registry.d.ts +0 -31
  496. package/dist/modules/registry.d.ts.map +0 -1
  497. package/dist/modules/registry.js +0 -67
  498. package/dist/modules/registry.js.map +0 -1
  499. package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +0 -57
  500. package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +0 -1
  501. package/dist/node_modules/@dnd-kit/core/dist/core.esm.js +0 -2345
  502. package/dist/node_modules/@dnd-kit/core/dist/core.esm.js.map +0 -1
  503. package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +0 -440
  504. package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +0 -1
  505. package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +0 -236
  506. package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +0 -1
  507. package/dist/node_modules/clsx/dist/clsx.js +0 -17
  508. package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
  509. package/dist/node_modules/lucide-react/dist/esm/Icon.js +0 -35
  510. package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +0 -1
  511. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +0 -18
  512. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +0 -1
  513. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +0 -15
  514. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +0 -1
  515. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-right.js +0 -9
  516. package/dist/node_modules/lucide-react/dist/esm/icons/arrow-right.js.map +0 -1
  517. package/dist/node_modules/lucide-react/dist/esm/icons/briefcase.js +0 -9
  518. package/dist/node_modules/lucide-react/dist/esm/icons/briefcase.js.map +0 -1
  519. package/dist/node_modules/lucide-react/dist/esm/icons/check.js +0 -6
  520. package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +0 -1
  521. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +0 -8
  522. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js.map +0 -1
  523. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +0 -8
  524. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +0 -1
  525. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +0 -6
  526. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js.map +0 -1
  527. package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -15
  528. package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
  529. package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js +0 -12
  530. package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js.map +0 -1
  531. package/dist/node_modules/lucide-react/dist/esm/icons/globe.js +0 -10
  532. package/dist/node_modules/lucide-react/dist/esm/icons/globe.js.map +0 -1
  533. package/dist/node_modules/lucide-react/dist/esm/icons/grid-3x3.js +0 -12
  534. package/dist/node_modules/lucide-react/dist/esm/icons/grid-3x3.js.map +0 -1
  535. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.js +0 -13
  536. package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.js.map +0 -1
  537. package/dist/node_modules/lucide-react/dist/esm/icons/heading.js +0 -10
  538. package/dist/node_modules/lucide-react/dist/esm/icons/heading.js.map +0 -1
  539. package/dist/node_modules/lucide-react/dist/esm/icons/image.js +0 -10
  540. package/dist/node_modules/lucide-react/dist/esm/icons/image.js.map +0 -1
  541. package/dist/node_modules/lucide-react/dist/esm/icons/images.js +0 -11
  542. package/dist/node_modules/lucide-react/dist/esm/icons/images.js.map +0 -1
  543. package/dist/node_modules/lucide-react/dist/esm/icons/list.js +0 -13
  544. package/dist/node_modules/lucide-react/dist/esm/icons/list.js.map +0 -1
  545. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js +0 -8
  546. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js.map +0 -1
  547. package/dist/node_modules/lucide-react/dist/esm/icons/minus.js +0 -6
  548. package/dist/node_modules/lucide-react/dist/esm/icons/minus.js.map +0 -1
  549. package/dist/node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js +0 -18
  550. package/dist/node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js.map +0 -1
  551. package/dist/node_modules/lucide-react/dist/esm/icons/navigation.js +0 -8
  552. package/dist/node_modules/lucide-react/dist/esm/icons/navigation.js.map +0 -1
  553. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +0 -10
  554. package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +0 -1
  555. package/dist/node_modules/lucide-react/dist/esm/icons/phone.js +0 -14
  556. package/dist/node_modules/lucide-react/dist/esm/icons/phone.js.map +0 -1
  557. package/dist/node_modules/lucide-react/dist/esm/icons/plus.js +0 -9
  558. package/dist/node_modules/lucide-react/dist/esm/icons/plus.js.map +0 -1
  559. package/dist/node_modules/lucide-react/dist/esm/icons/redo-2.js +0 -9
  560. package/dist/node_modules/lucide-react/dist/esm/icons/redo-2.js.map +0 -1
  561. package/dist/node_modules/lucide-react/dist/esm/icons/redo.js +0 -9
  562. package/dist/node_modules/lucide-react/dist/esm/icons/redo.js.map +0 -1
  563. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +0 -9
  564. package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js.map +0 -1
  565. package/dist/node_modules/lucide-react/dist/esm/icons/save.js +0 -16
  566. package/dist/node_modules/lucide-react/dist/esm/icons/save.js.map +0 -1
  567. package/dist/node_modules/lucide-react/dist/esm/icons/square.js +0 -8
  568. package/dist/node_modules/lucide-react/dist/esm/icons/square.js.map +0 -1
  569. package/dist/node_modules/lucide-react/dist/esm/icons/star.js +0 -14
  570. package/dist/node_modules/lucide-react/dist/esm/icons/star.js.map +0 -1
  571. package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js +0 -12
  572. package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js.map +0 -1
  573. package/dist/node_modules/lucide-react/dist/esm/icons/type.js +0 -10
  574. package/dist/node_modules/lucide-react/dist/esm/icons/type.js.map +0 -1
  575. package/dist/node_modules/lucide-react/dist/esm/icons/undo-2.js +0 -9
  576. package/dist/node_modules/lucide-react/dist/esm/icons/undo-2.js.map +0 -1
  577. package/dist/node_modules/lucide-react/dist/esm/icons/undo.js +0 -9
  578. package/dist/node_modules/lucide-react/dist/esm/icons/undo.js.map +0 -1
  579. package/dist/node_modules/lucide-react/dist/esm/icons/user.js +0 -9
  580. package/dist/node_modules/lucide-react/dist/esm/icons/user.js.map +0 -1
  581. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +0 -6
  582. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js.map +0 -1
  583. package/dist/node_modules/react-colorful/dist/index.js +0 -167
  584. package/dist/node_modules/react-colorful/dist/index.js.map +0 -1
  585. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2266
  586. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
  587. package/dist/types/index.d.ts +0 -99
  588. package/dist/types/index.d.ts.map +0 -1
  589. package/dist/types/module.d.ts +0 -25
  590. package/dist/types/module.d.ts.map +0 -1
  591. package/dist/utils/htmlExporter.d.ts +0 -6
  592. package/dist/utils/htmlExporter.d.ts.map +0 -1
  593. package/dist/utils/htmlExporter.js +0 -92
  594. package/dist/utils/htmlExporter.js.map +0 -1
  595. package/dist/utils/themeApplier.d.ts +0 -11
  596. package/dist/utils/themeApplier.d.ts.map +0 -1
  597. package/dist/utils/themeApplier.js +0 -29
  598. package/dist/utils/themeApplier.js.map +0 -1
  599. package/dist/utils/useDebounce.d.ts +0 -12
  600. package/dist/utils/useDebounce.d.ts.map +0 -1
  601. package/dist/viewer/LandingPageViewerV2.d.ts +0 -25
  602. package/dist/viewer/LandingPageViewerV2.d.ts.map +0 -1
  603. package/dist/viewer/LandingPageViewerV2.js +0 -253
  604. package/dist/viewer/LandingPageViewerV2.js.map +0 -1
  605. /package/dist/{components → editor/PropertyEditor}/inputs/ImageInput.d.ts +0 -0
  606. /package/dist/{components → editor/components}/LoadingSpinner.d.ts +0 -0
  607. /package/dist/{components → editor/components}/LoadingSpinner.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"HeroExporter.js","sources":["../../../../../src/engine/export/exporters/sections/HeroExporter.ts"],"sourcesContent":["/**\n * Hero Section Exporter\n * Exporta Hero com múltiplas variações e customizações avançadas\n * Mobile-first responsive: split layout collapses to stack in mobile\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { PLACEHOLDER_IMAGE_URL } from \"../../../presets/heroVariations\";\nimport { dataBlockIdAttr, blockIdAttr, escapeHtml, resolveHref, linkTargetAttr } from \"../../shared/htmlHelpers\";\nimport { generateScopedId } from \"../../shared/idGenerator\";\nimport {\n generateButtonHoverStyles,\n generateButtonOverlayCSS,\n getButtonHoverKeyframes,\n type ButtonHoverEffect,\n type ButtonHoverOverlay,\n} from \"../../../shared/hoverEffects\";\nimport { gridPresetMap, type ImageGridItem, type ImageGridPreset } from \"../../../shared/imageGrid\";\nimport {\n generateTypographyStyles,\n mergeTypographyWithDefaults,\n heroTitleDefaults,\n heroSubtitleDefaults,\n heroDescriptionDefaults,\n type TypographyConfig,\n} from \"../../../shared/typography\";\n\n// Mapa de sombras\nconst shadowMap: Record<string, string> = {\n none: \"none\",\n sm: \"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)\",\n md: \"0 4px 6px rgba(0,0,0,0.1), 0 2px 4px rgba(0,0,0,0.06)\",\n lg: \"0 10px 25px rgba(0,0,0,0.15), 0 5px 10px rgba(0,0,0,0.05)\",\n xl: \"0 25px 50px rgba(0,0,0,0.25)\",\n};\n\nexport function exportHero(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n variation,\n variant = \"centered\",\n title,\n subtitle,\n description,\n primaryButton,\n secondaryButton,\n badge,\n align = \"center\",\n contentPosition = \"center\",\n contentSpacing = \"default\",\n blockGap = \"default\",\n minHeight = \"80vh\",\n image,\n overlay,\n overlayColor,\n background,\n // Typography colors (legacy)\n titleColor,\n subtitleColor,\n descriptionColor,\n // Typography config (novo sistema)\n titleTypography,\n subtitleTypography,\n descriptionTypography,\n // Badge styling\n badgeColor,\n badgeTextColor,\n // Layout\n contentMaxWidth = \"800px\",\n paddingY,\n // Image styling\n imageRadius = 16,\n imageShadow = \"lg\",\n imagePosition = \"right\",\n // Button size\n buttonSize = \"md\",\n // Primary button styling\n primaryButtonVariant = \"solid\",\n primaryButtonColor,\n primaryButtonTextColor,\n primaryButtonRadius = 8,\n // Secondary button styling\n secondaryButtonVariant = \"outline\",\n secondaryButtonColor,\n secondaryButtonTextColor,\n secondaryButtonRadius = 8,\n // Button hover effects\n buttonHoverEffect = \"scale\",\n buttonHoverIntensity = 50,\n buttonHoverOverlay = \"none\",\n buttonHoverIconName = \"arrow-right\",\n // Decorative\n showWave,\n waveColor = \"rgba(255,255,255,0.1)\",\n // Image Grid\n imageGridEnabled,\n imageGridPreset = \"four-equal\",\n imageGridImages = [],\n imageGridGap = 8,\n } = (block as any).props;\n\n // Determine variation types\n const heroImage = image || PLACEHOLDER_IMAGE_URL;\n const isSplit = variation === \"hero-split\" || variant === \"split\";\n const isParallax = variation === \"hero-parallax\";\n const isOverlayVariant = variation === \"hero-overlay\";\n const isGradient = variation === \"hero-gradient\";\n const isMinimal = variation === \"hero-minimal\";\n const isCard = variation === \"hero-card\";\n const isImageBg = (variant === \"image-bg\" || isOverlayVariant || isParallax || isCard) && heroImage;\n const isOverlay = isImageBg && overlay;\n\n // Determine if dark background context\n const hasDarkBg = isOverlay || isGradient || isOverlayVariant;\n\n // Theme colors\n const themePrimaryColor = theme?.colors?.primary || \"#3b82f6\";\n const themePrimaryText = theme?.colors?.primaryText || \"#ffffff\";\n\n // Text colors (fallback)\n const defaultTextColor = hasDarkBg ? \"#ffffff\" : \"var(--sg-text, #1f2937)\";\n const defaultMutedColor = hasDarkBg ? \"rgba(255,255,255,0.85)\" : \"var(--sg-muted-text, #6b7280)\";\n\n // Merge typography configs with defaults (retrocompatível com titleColor, etc.)\n const mergedTitleTypo = mergeTypographyWithDefaults(\n titleTypography as TypographyConfig | undefined,\n { ...heroTitleDefaults, color: titleColor as string | undefined }\n );\n const mergedSubtitleTypo = mergeTypographyWithDefaults(\n subtitleTypography as TypographyConfig | undefined,\n { ...heroSubtitleDefaults, color: subtitleColor as string | undefined }\n );\n const mergedDescriptionTypo = mergeTypographyWithDefaults(\n descriptionTypography as TypographyConfig | undefined,\n { ...heroDescriptionDefaults, color: descriptionColor as string | undefined }\n );\n\n // Generate typography CSS strings\n const titleTypoStyles = generateTypographyStyles(mergedTitleTypo, defaultTextColor);\n const subtitleTypoStyles = generateTypographyStyles(mergedSubtitleTypo, defaultMutedColor);\n const descriptionTypoStyles = generateTypographyStyles(mergedDescriptionTypo, defaultMutedColor);\n\n // Badge colors\n const finalBadgeColor = badgeColor || themePrimaryColor;\n const finalBadgeTextColor = badgeTextColor || \"#ffffff\";\n\n // Button colors\n const finalPrimaryBtnColor = primaryButtonColor || themePrimaryColor;\n const finalPrimaryBtnTextColor = primaryButtonTextColor || themePrimaryText;\n const finalSecondaryBtnColor = secondaryButtonColor || (hasDarkBg ? \"#ffffff\" : themePrimaryColor);\n const finalSecondaryBtnTextColor = secondaryButtonTextColor || finalSecondaryBtnColor;\n\n // Section classes\n const sectionClasses = [\n \"sg-hero\",\n variation ? `sg-hero--${String(variation).replace(\"hero-\", \"\")}` : \"\",\n isSplit ? \"sg-hero--split\" : \"\",\n isParallax ? \"sg-hero--parallax\" : \"\",\n isOverlayVariant ? \"sg-hero--overlay\" : \"\",\n isGradient ? \"sg-hero--gradient\" : \"\",\n isMinimal ? \"sg-hero--minimal\" : \"\",\n isCard ? \"sg-hero--card\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n // Build background style\n let bgStyle = \"\";\n if (background) {\n bgStyle = `background: ${background};`;\n } else if (isImageBg && !isSplit) {\n bgStyle = `background-image: url(${escapeHtml(heroImage)}); background-size: cover; background-position: center;`;\n if (isParallax) bgStyle += \" background-attachment: fixed;\";\n } else {\n bgStyle = \"background-color: var(--sg-bg, #fff);\";\n }\n\n // Padding\n const paddingStyle = paddingY ? `padding: ${paddingY} 2rem;` : \"padding: 6rem 2rem;\";\n\n // Content position mapping for flexbox justify-content\n const contentPositionMap: Record<string, string> = {\n left: \"flex-start\",\n center: \"center\",\n right: \"flex-end\",\n };\n const justifyContent = contentPositionMap[contentPosition] || \"center\";\n\n // Determine if layout has two blocks (content + image) - these should always be centered\n const hasTwoBlocks = isSplit || isCard;\n // Note: shouldShowImageGrid is checked later, so we'll handle it in each section\n\n // Content spacing map - controls margin between elements\n const spacingMap: Record<string, { title: string; subtitle: string; description: string; badge: string; actions: string }> = {\n compact: { title: \"0.75rem\", subtitle: \"0.5rem\", description: \"1.25rem\", badge: \"1rem\", actions: \"0.25rem\" },\n default: { title: \"1.25rem\", subtitle: \"1rem\", description: \"2.5rem\", badge: \"1.5rem\", actions: \"0.5rem\" },\n spacious: { title: \"2.25rem\", subtitle: \"2rem\", description: \"3.5rem\", badge: \"2.5rem\", actions: \"1.5rem\" },\n };\n const spacing = spacingMap[contentSpacing] || spacingMap.default;\n\n // Block gap map - controls justify-content, block max-width, container max-width, and gap\n const blockGapConfig: Record<string, { justify: string; blockMaxWidth: string; containerMaxWidth: string; gap: string }> = {\n default: { justify: \"center\", blockMaxWidth: \"45%\", containerMaxWidth: \"1200px\", gap: \"4rem\" },\n wide: { justify: \"space-between\", blockMaxWidth: \"45%\", containerMaxWidth: \"1400px\", gap: \"2rem\" },\n \"x-wide\": { justify: \"space-between\", blockMaxWidth: \"43%\", containerMaxWidth: \"100%\", gap: \"2rem\" },\n };\n const blocksConfig = blockGapConfig[blockGap] || blockGapConfig.default;\n const blocksJustify = blocksConfig.justify;\n const blocksMaxWidth = blocksConfig.blockMaxWidth;\n const containerMaxWidth = blocksConfig.containerMaxWidth;\n const blocksGap = blocksConfig.gap;\n\n // Overlay HTML\n const overlayStyle = overlayColor\n ? `position: absolute; inset: 0; background: ${overlayColor}; z-index: 0;`\n : \"position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.3) 100%); z-index: 0;\";\n const overlayHtml = isOverlay\n ? `<div class=\"sg-hero__overlay\" style=\"${overlayStyle}\"></div>`\n : \"\";\n\n // Wave SVG\n const waveHtml = showWave\n ? `<div style=\"position: absolute; bottom: 0; left: 0; right: 0; height: 150px; overflow: hidden; z-index: 1;\">\n <svg viewBox=\"0 0 1200 120\" preserveAspectRatio=\"none\" style=\"position: absolute; bottom: 0; width: 100%; height: 100%;\">\n <path d=\"M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z\" fill=\"${waveColor}\" opacity=\"0.5\"/>\n <path d=\"M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z\" fill=\"${waveColor}\" opacity=\"0.3\"/>\n </svg>\n </div>`\n : \"\";\n\n // Badge HTML\n const badgeHtml = badge\n ? `<span class=\"sg-hero__badge\" style=\"display: inline-block; padding: 0.5rem 1.25rem; background: ${finalBadgeColor}; color: ${finalBadgeTextColor}; border-radius: 999px; font-size: 0.875rem; font-weight: 600; margin-bottom: ${spacing.badge};\">${escapeHtml(badge)}</span>`\n : \"\";\n\n // Title HTML - usa tipografia customizada com clamp para responsividade\n const titleFontSize = mergedTitleTypo.fontSize || 48;\n const titleHtml = title\n ? `<h1 class=\"sg-hero__title\" style=\"${titleTypoStyles.cssString} font-size: clamp(2rem, 5vw, ${titleFontSize}px); line-height: 1.1; margin-bottom: ${spacing.title}; letter-spacing: -0.02em;\">${escapeHtml(title)}</h1>`\n : \"\";\n\n // Subtitle HTML - usa tipografia customizada com clamp para responsividade\n const subtitleFontSize = mergedSubtitleTypo.fontSize || 24;\n const subtitleHtml = subtitle\n ? `<h2 class=\"sg-hero__subtitle\" style=\"${subtitleTypoStyles.cssString} font-size: clamp(1.125rem, 2.5vw, ${subtitleFontSize}px); line-height: 1.3; margin-bottom: ${spacing.subtitle};\">${escapeHtml(subtitle)}</h2>`\n : \"\";\n\n // Description HTML - usa tipografia customizada\n const descHtml = description\n ? `<p class=\"sg-hero__description\" style=\"max-width: 650px; margin: ${align === \"center\" ? `0 auto ${spacing.description}` : `0 0 ${spacing.description}`}; ${descriptionTypoStyles.cssString} line-height: 1.7;\">${escapeHtml(description)}</p>`\n : \"\";\n\n // Button styles\n const buttonStyles = resolveHeroButtonStyles({\n theme,\n blockId: block.id,\n buttonSize,\n primaryButtonVariant,\n primaryButtonColor: finalPrimaryBtnColor,\n primaryButtonTextColor: finalPrimaryBtnTextColor,\n primaryButtonRadius,\n secondaryButtonVariant,\n secondaryButtonColor: finalSecondaryBtnColor,\n secondaryButtonTextColor: finalSecondaryBtnTextColor,\n secondaryButtonRadius,\n hoverEffect: buttonHoverEffect,\n hoverIntensity: buttonHoverIntensity,\n hoverOverlay: buttonHoverOverlay,\n hoverIconName: buttonHoverIconName,\n });\n\n // Buttons HTML\n const primaryHref = primaryButton ? resolveHref(primaryButton.href || \"#\", basePath) : \"#\";\n const secondaryHref = secondaryButton ? resolveHref(secondaryButton.href || \"#\", basePath) : \"#\";\n const primaryBtnHtml = primaryButton\n ? `<a href=\"${escapeHtml(primaryHref)}\"${linkTargetAttr(primaryHref, basePath)} class=\"sg-hero__btn sg-hero__btn--primary\" style=\"${buttonStyles.primary}\">${escapeHtml(primaryButton.text)}</a>`\n : \"\";\n const secondaryBtnHtml = secondaryButton\n ? `<a href=\"${escapeHtml(secondaryHref)}\"${linkTargetAttr(secondaryHref, basePath)} class=\"sg-hero__btn sg-hero__btn--secondary\" style=\"${buttonStyles.secondary}\">${escapeHtml(secondaryButton.text)}</a>`\n : \"\";\n const buttonsHtml =\n primaryButton || secondaryButton\n ? `<div class=\"sg-hero__actions\" style=\"display: flex; gap: 1rem; flex-wrap: wrap; justify-content: ${align === \"center\" ? \"center\" : \"flex-start\"}; margin-top: ${spacing.actions};\">${primaryBtnHtml}${secondaryBtnHtml}</div>`\n : \"\";\n\n // Content block\n const contentBlock = `${badgeHtml}${titleHtml}${subtitleHtml}${descHtml}${buttonsHtml}`;\n\n // Style block (hover effects)\n const styleBlock = buttonStyles.css ? `<style>${buttonStyles.css}</style>` : \"\";\n\n // Image fallback\n const imgFallback = `this.onerror=null;this.src='${escapeHtml(PLACEHOLDER_IMAGE_URL)}';`;\n\n // =========================================================================\n // IMAGE GRID EXPORT HELPER\n // =========================================================================\n const exportImageGrid = (\n images: ImageGridItem[],\n preset: ImageGridPreset,\n gap: number,\n radius: number,\n shadow: string,\n gridId: string\n ): { html: string; css: string } => {\n const config = gridPresetMap[preset];\n const shadowValue = shadowMap[shadow] || shadowMap.lg;\n\n // Generate grid items HTML\n const itemsHtml = config.positions\n .map((pos, idx) => {\n const img = images[idx];\n const imgSrc = img?.src || PLACEHOLDER_IMAGE_URL;\n const imgAlt = img?.alt || `Imagem ${idx + 1}`;\n\n return `<div class=\"sg-hero__grid-item\" style=\"grid-column: ${pos.col}; grid-row: ${pos.row}; overflow: hidden; border-radius: ${radius}px;\">\n <img src=\"${escapeHtml(imgSrc)}\" alt=\"${escapeHtml(imgAlt)}\" style=\"width: 100%; height: 100%; object-fit: cover; box-shadow: ${shadowValue};\" onerror=\"${imgFallback}\" />\n </div>`;\n })\n .join(\"\");\n\n const gridHtml = `<div id=\"${gridId}\" class=\"sg-hero__image-grid\" style=\"display: grid; grid-template: ${config.gridTemplate}; gap: ${gap}px; width: 100%; max-width: 500px; aspect-ratio: 1 / 1;\">\n ${itemsHtml}\n </div>`;\n\n // Responsive CSS: collapse to single column on mobile\n const gridCss = `\n @media (max-width: 767px) {\n #${gridId} {\n grid-template: auto / 1fr !important;\n aspect-ratio: auto !important;\n }\n #${gridId} .sg-hero__grid-item {\n grid-column: 1 / -1 !important;\n grid-row: auto !important;\n aspect-ratio: 16 / 9;\n }\n }\n `;\n\n return { html: gridHtml, css: gridCss };\n };\n\n // Determine if we should use image grid (works in ANY variation now)\n const hasValidGridImages = imageGridImages && imageGridImages.length > 0 && (imageGridImages as ImageGridItem[]).some((img: ImageGridItem) => img?.src);\n const shouldShowImageGrid = imageGridEnabled && hasValidGridImages;\n\n // =========================================================================\n // RENDER: Split Layout (without image grid)\n // =========================================================================\n if (isSplit && heroImage && !shouldShowImageGrid) {\n const splitId = generateScopedId(block.id || \"\", \"hero-split\");\n const isImageLeft = imagePosition === \"left\";\n const imgShadow = shadowMap[imageShadow] || shadowMap.lg;\n\n const splitCss = `\n @media (max-width: 1023px) {\n #${splitId} {\n grid-template-columns: 1fr !important;\n gap: 2rem !important;\n padding: 0 1rem !important;\n }\n #${splitId} .sg-hero__split-image {\n order: -1;\n }\n }\n `;\n\n const splitBgStyle = background ? `background: ${background};` : \"background-color: var(--sg-bg, #fff);\";\n const imgStyle = `width: 100%; max-width: 500px; height: auto; border-radius: ${imageRadius}px; box-shadow: ${imgShadow}; object-fit: cover;`;\n const imageDiv = `<div class=\"sg-hero__split-image\" style=\"display: flex; justify-content: center; flex: 0 1 auto; max-width: ${blocksMaxWidth};\"><img src=\"${escapeHtml(heroImage)}\" alt=\"${escapeHtml(title || \"\")}\" class=\"sg-hero__img\" style=\"${imgStyle}\" onerror=\"${imgFallback}\" /></div>`;\n const contentDiv = `<div class=\"sg-hero__split-content\" style=\"text-align: ${align}; position: relative; z-index: 1; max-width: ${blocksMaxWidth}; flex: 0 1 auto;\">${contentBlock}</div>`;\n\n const innerHtml = isImageLeft\n ? `<style>${splitCss}</style><div id=\"${splitId}\" class=\"sg-hero__split-inner\" style=\"display: flex; justify-content: ${blocksJustify}; gap: ${blocksGap}; align-items: center; max-width: ${containerMaxWidth}; width: 100%; padding: 0 2rem;\">${imageDiv}${contentDiv}</div>`\n : `<style>${splitCss}</style><div id=\"${splitId}\" class=\"sg-hero__split-inner\" style=\"display: flex; justify-content: ${blocksJustify}; gap: ${blocksGap}; align-items: center; max-width: ${containerMaxWidth}; width: 100%; padding: 0 2rem;\">${contentDiv}${imageDiv}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; position: relative; overflow: hidden; ${splitBgStyle}\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${innerHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: Card Layout (supports both with and without Image Grid)\n // Card always stays on the left (original position), Grid on the right\n // =========================================================================\n if (isCard && heroImage) {\n const cardBg = background || \"#ffffff\";\n const cardPadding = paddingY ? `${paddingY} 3rem` : \"6rem 3rem\";\n\n // With Image Grid: Card on left + Grid on right (preserves original card position)\n if (shouldShowImageGrid) {\n const cardGridLayoutId = generateScopedId(block.id || \"\", \"hero-card-grid\");\n const gridId = generateScopedId(block.id || \"\", \"hero-grid\");\n\n const gridResult = exportImageGrid(\n imageGridImages as ImageGridItem[],\n imageGridPreset as ImageGridPreset,\n imageGridGap as number,\n imageRadius,\n imageShadow,\n gridId\n );\n\n const cardHtml = `<div class=\"sg-hero__card\" style=\"max-width: 500px; background: ${cardBg}; padding: 2rem; border-radius: 16px; box-shadow: 0 25px 50px rgba(0,0,0,0.25); position: relative; z-index: 2; text-align: ${align}; flex: 0 1 auto;\">${contentBlock}</div>`;\n const gridWrapperHtml = `<div class=\"sg-hero__grid-wrapper\" style=\"position: relative; z-index: 3; display: flex; justify-content: center; align-items: center; flex: 0 1 auto; max-width: ${blocksMaxWidth};\">${gridResult.html}</div>`;\n\n // Card always left, Grid always right\n const innerHtml = `${cardHtml}${gridWrapperHtml}`;\n\n // Responsive CSS\n let layoutCss = `\n @media (max-width: 1023px) {\n #${cardGridLayoutId} {\n flex-direction: column !important;\n gap: 2rem !important;\n }\n #${cardGridLayoutId} .sg-hero__grid-wrapper {\n order: -1;\n }\n }\n `;\n layoutCss += gridResult.css;\n\n const cardGridLayoutHtml = `<style>${layoutCss}</style><div id=\"${cardGridLayoutId}\" class=\"sg-hero__card-grid-layout\" style=\"display: flex; width: 100%; max-width: ${containerMaxWidth}; align-items: center; justify-content: ${blocksJustify}; position: relative; z-index: 2; padding: 0 2rem; gap: ${blocksGap};\">${innerHtml}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses} sg-hero--with-grid\" style=\"min-height: ${minHeight}; padding: ${cardPadding}; display: flex; align-items: center; justify-content: center; background-image: url(${escapeHtml(heroImage)}); background-size: cover; background-position: center; position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${cardGridLayoutHtml}</section>`;\n }\n\n // Without Image Grid: Original card layout\n const cardHtml = `\n <div class=\"sg-hero__card\" style=\"max-width: ${contentMaxWidth}; width: 100%; background: ${cardBg}; padding: 2rem; border-radius: 16px; box-shadow: 0 25px 50px rgba(0,0,0,0.25); position: relative; z-index: 2; text-align: ${align};\">\n ${contentBlock}\n </div>\n `;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; padding: ${cardPadding}; display: flex; align-items: center; justify-content: center; background-image: url(${escapeHtml(heroImage)}); background-size: cover; background-position: center; position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${cardHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: With Image Grid (any variation) - Floating grid alongside content\n // =========================================================================\n if (shouldShowImageGrid) {\n const gridLayoutId = generateScopedId(block.id || \"\", \"hero-grid-layout\");\n const gridId = generateScopedId(block.id || \"\", \"hero-grid\");\n const isGridLeft = imagePosition === \"left\";\n\n const gridResult = exportImageGrid(\n imageGridImages as ImageGridItem[],\n imageGridPreset as ImageGridPreset,\n imageGridGap as number,\n imageRadius,\n imageShadow,\n gridId\n );\n\n const gridWrapperHtml = `<div class=\"sg-hero__grid-wrapper\" style=\"position: relative; z-index: 3; display: flex; justify-content: center; align-items: center; flex: 0 1 auto; max-width: ${blocksMaxWidth};\">${gridResult.html}</div>`;\n const contentSideHtml = `<div class=\"sg-hero__content-side\" style=\"max-width: ${blocksMaxWidth}; flex: 0 1 auto; text-align: ${align}; position: relative; z-index: 2;\">${contentBlock}</div>`;\n\n // Responsive CSS for the grid layout\n let layoutCss = `\n @media (max-width: 1023px) {\n #${gridLayoutId} {\n flex-direction: column !important;\n gap: 2rem !important;\n }\n #${gridLayoutId} .sg-hero__grid-wrapper,\n #${gridLayoutId} .sg-hero__content-side {\n max-width: 100% !important;\n }\n #${gridLayoutId} .sg-hero__grid-wrapper {\n order: -1;\n }\n }\n `;\n layoutCss += gridResult.css;\n\n const innerHtml = isGridLeft\n ? `${gridWrapperHtml}${contentSideHtml}`\n : `${contentSideHtml}${gridWrapperHtml}`;\n\n const gridLayoutHtml = `<style>${layoutCss}</style><div id=\"${gridLayoutId}\" class=\"sg-hero__grid-layout\" style=\"display: flex; justify-content: ${blocksJustify}; gap: ${blocksGap}; max-width: ${containerMaxWidth}; width: 100%; align-items: center; position: relative; z-index: 2; padding: 0 2rem;\">${innerHtml}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses} sg-hero--with-grid\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; ${bgStyle} position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${waveHtml}${gridLayoutHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: Default (centered, gradient, minimal, parallax, overlay)\n // =========================================================================\n const contentWrapHtml = `<div style=\"max-width: ${contentMaxWidth}; width: 100%; padding: 0 2rem; text-align: ${align}; position: relative; z-index: 2;\">${contentBlock}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; ${bgStyle} position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${waveHtml}${contentWrapHtml}</section>`;\n}\n\n/**\n * Resolve hero button styles with independent customization for primary and secondary\n */\ninterface ButtonStylesConfig {\n theme?: ThemeTokens;\n blockId: string;\n buttonSize: string;\n primaryButtonVariant: string;\n primaryButtonColor: string;\n primaryButtonTextColor: string;\n primaryButtonRadius: number;\n secondaryButtonVariant: string;\n secondaryButtonColor: string;\n secondaryButtonTextColor: string;\n secondaryButtonRadius: number;\n hoverEffect: string;\n hoverIntensity: number;\n hoverOverlay: string;\n hoverIconName: string;\n}\n\nfunction resolveHeroButtonStyles(config: ButtonStylesConfig): { primary: string; secondary: string; css: string } {\n const {\n blockId,\n buttonSize,\n primaryButtonVariant,\n primaryButtonColor,\n primaryButtonTextColor,\n primaryButtonRadius,\n secondaryButtonVariant,\n secondaryButtonColor,\n secondaryButtonTextColor,\n secondaryButtonRadius,\n hoverEffect,\n hoverIntensity,\n hoverOverlay,\n hoverIconName,\n } = config;\n\n // Size-based styles\n const sizeStyles: Record<string, { padding: string; fontSize: string }> = {\n sm: { padding: \"0.625rem 1.25rem\", fontSize: \"0.875rem\" },\n md: { padding: \"0.875rem 2rem\", fontSize: \"1rem\" },\n lg: { padding: \"1rem 2.5rem\", fontSize: \"1.125rem\" },\n };\n const size = sizeStyles[buttonSize] || sizeStyles.md;\n\n // Base button styles\n const baseStyles = [\n `padding: ${size.padding}`,\n \"font-weight: 600\",\n `font-size: ${size.fontSize}`,\n \"text-decoration: none\",\n \"display: inline-flex\",\n \"align-items: center\",\n \"justify-content: center\",\n \"gap: 0.5rem\",\n \"transition: all 0.2s ease\",\n \"position: relative\",\n \"overflow: hidden\",\n \"cursor: pointer\",\n ];\n\n // Primary button styles\n const primaryStyles = [...baseStyles, `border-radius: ${primaryButtonRadius}px`];\n switch (primaryButtonVariant) {\n case \"outline\":\n primaryStyles.push(`background-color: transparent`, `border: 2px solid ${primaryButtonColor}`, `color: ${primaryButtonColor}`);\n break;\n case \"ghost\":\n primaryStyles.push(`background-color: transparent`, `border: none`, `color: ${primaryButtonColor}`);\n break;\n default: // solid\n primaryStyles.push(`background-color: ${primaryButtonColor}`, `border: 2px solid ${primaryButtonColor}`, `color: ${primaryButtonTextColor}`);\n }\n\n // Secondary button styles\n const secondaryStyles = [...baseStyles, `border-radius: ${secondaryButtonRadius}px`];\n switch (secondaryButtonVariant) {\n case \"solid\":\n secondaryStyles.push(`background-color: ${secondaryButtonColor}`, `border: 2px solid ${secondaryButtonColor}`, `color: ${secondaryButtonTextColor}`);\n break;\n case \"ghost\":\n secondaryStyles.push(`background-color: transparent`, `border: none`, `color: ${secondaryButtonTextColor}`);\n break;\n default: // outline\n secondaryStyles.push(`background-color: transparent`, `border: 2px solid ${secondaryButtonColor}`, `color: ${secondaryButtonTextColor}`);\n }\n\n const scope = blockId ? `[data-block-id=\"${blockId}\"]` : \"\";\n let css = \"\";\n\n // Hover effects\n if (hoverEffect !== \"none\") {\n // Primary button hover\n const primaryHoverResult = generateButtonHoverStyles({\n effect: hoverEffect as ButtonHoverEffect,\n intensity: hoverIntensity,\n buttonColor: primaryButtonColor,\n buttonTextColor: primaryButtonVariant === \"solid\" ? primaryButtonTextColor : primaryButtonColor,\n variant: primaryButtonVariant as \"solid\" | \"outline\" | \"ghost\",\n });\n\n // Secondary button hover\n const secondaryHoverResult = generateButtonHoverStyles({\n effect: hoverEffect as ButtonHoverEffect,\n intensity: hoverIntensity,\n buttonColor: secondaryButtonColor,\n buttonTextColor: secondaryButtonVariant === \"solid\" ? secondaryButtonTextColor : secondaryButtonColor,\n variant: secondaryButtonVariant as \"solid\" | \"outline\" | \"ghost\",\n });\n\n if (primaryHoverResult.base) {\n css += `${scope} .sg-hero__btn--primary { ${primaryHoverResult.base} }\\n`;\n }\n if (secondaryHoverResult.base) {\n css += `${scope} .sg-hero__btn--secondary { ${secondaryHoverResult.base} }\\n`;\n }\n\n css += `\n ${scope} .sg-hero__btn--primary:hover { ${primaryHoverResult.hover} }\n ${scope} .sg-hero__btn--secondary:hover { ${secondaryHoverResult.hover} }\n `;\n\n css += getButtonHoverKeyframes();\n }\n\n // Overlay effects\n if (hoverOverlay && hoverOverlay !== \"none\") {\n css += generateButtonOverlayCSS(`${scope} .sg-hero__btn--primary`, {\n overlay: hoverOverlay as ButtonHoverOverlay,\n primaryColor: primaryButtonColor,\n iconName: hoverIconName,\n textColor: primaryButtonVariant === \"solid\" ? primaryButtonTextColor : primaryButtonColor,\n });\n css += generateButtonOverlayCSS(`${scope} .sg-hero__btn--secondary`, {\n overlay: hoverOverlay as ButtonHoverOverlay,\n primaryColor: secondaryButtonColor,\n iconName: hoverIconName,\n textColor: secondaryButtonVariant === \"solid\" ? secondaryButtonTextColor : secondaryButtonColor,\n });\n }\n\n return {\n primary: primaryStyles.join(\"; \"),\n secondary: secondaryStyles.join(\"; \"),\n css,\n };\n}\n\n"],"names":["shadowMap","exportHero","block","depth","basePath","theme","variation","variant","title","subtitle","description","primaryButton","secondaryButton","badge","align","contentPosition","contentSpacing","blockGap","minHeight","image","overlay","overlayColor","background","titleColor","subtitleColor","descriptionColor","titleTypography","subtitleTypography","descriptionTypography","badgeColor","badgeTextColor","contentMaxWidth","paddingY","imageRadius","imageShadow","imagePosition","buttonSize","primaryButtonVariant","primaryButtonColor","primaryButtonTextColor","primaryButtonRadius","secondaryButtonVariant","secondaryButtonColor","secondaryButtonTextColor","secondaryButtonRadius","buttonHoverEffect","buttonHoverIntensity","buttonHoverOverlay","buttonHoverIconName","showWave","waveColor","imageGridEnabled","imageGridPreset","imageGridImages","imageGridGap","heroImage","PLACEHOLDER_IMAGE_URL","isSplit","isParallax","isOverlayVariant","isGradient","isMinimal","isCard","isImageBg","isOverlay","hasDarkBg","themePrimaryColor","themePrimaryText","defaultTextColor","defaultMutedColor","mergedTitleTypo","mergeTypographyWithDefaults","heroTitleDefaults","mergedSubtitleTypo","heroSubtitleDefaults","mergedDescriptionTypo","heroDescriptionDefaults","titleTypoStyles","generateTypographyStyles","subtitleTypoStyles","descriptionTypoStyles","finalBadgeColor","finalBadgeTextColor","finalPrimaryBtnColor","finalPrimaryBtnTextColor","finalSecondaryBtnColor","finalSecondaryBtnTextColor","sectionClasses","bgStyle","escapeHtml","paddingStyle","justifyContent","spacingMap","spacing","blockGapConfig","blocksConfig","blocksJustify","blocksMaxWidth","containerMaxWidth","blocksGap","overlayStyle","overlayHtml","waveHtml","badgeHtml","titleFontSize","titleHtml","subtitleFontSize","subtitleHtml","descHtml","buttonStyles","resolveHeroButtonStyles","primaryHref","resolveHref","secondaryHref","primaryBtnHtml","linkTargetAttr","secondaryBtnHtml","buttonsHtml","contentBlock","styleBlock","imgFallback","exportImageGrid","images","preset","gap","radius","shadow","gridId","config","gridPresetMap","shadowValue","itemsHtml","pos","idx","img","imgSrc","imgAlt","gridHtml","gridCss","hasValidGridImages","shouldShowImageGrid","splitId","generateScopedId","isImageLeft","imgShadow","splitCss","splitBgStyle","imgStyle","imageDiv","contentDiv","innerHtml","blockIdAttr","dataBlockIdAttr","cardBg","cardPadding","cardGridLayoutId","gridResult","cardHtml","gridWrapperHtml","layoutCss","cardGridLayoutHtml","gridLayoutId","isGridLeft","contentSideHtml","gridLayoutHtml","contentWrapHtml","blockId","hoverEffect","hoverIntensity","hoverOverlay","hoverIconName","sizeStyles","size","baseStyles","primaryStyles","secondaryStyles","scope","css","primaryHoverResult","generateButtonHoverStyles","secondaryHoverResult","getButtonHoverKeyframes","generateButtonOverlayCSS"],"mappings":"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"}
1
+ {"version":3,"file":"HeroExporter.js","sources":["../../../../../src/engine/export/exporters/sections/HeroExporter.ts"],"sourcesContent":["/**\n * Hero Section Exporter\n * Exporta Hero com múltiplas variações e customizações avançadas\n * Mobile-first responsive: split layout collapses to stack in mobile\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { PLACEHOLDER_IMAGE_URL, CAROUSEL_PLACEHOLDER_IMAGES } from \"../../../presets/heroVariations\";\nimport { dataBlockIdAttr, blockIdAttr, escapeHtml, resolveHref, linkTargetAttr } from \"../../shared/htmlHelpers\";\nimport { generateScopedId } from \"../../shared/idGenerator\";\nimport { generateCarouselCSS } from \"../../../shared/carouselAnimation\";\nimport {\n generateButtonHoverStyles,\n generateButtonOverlayCSS,\n getButtonHoverKeyframes,\n type ButtonHoverEffect,\n type ButtonHoverOverlay,\n} from \"../../../shared/hoverEffects\";\nimport { gridPresetMap, type ImageGridItem, type ImageGridPreset } from \"../../../shared/imageGrid\";\nimport {\n generateTypographyStyles,\n mergeTypographyWithDefaults,\n heroTitleDefaults,\n heroSubtitleDefaults,\n heroDescriptionDefaults,\n type TypographyConfig,\n} from \"../../../shared/typography\";\nimport { imageShadowMap } from \"../../../shared/shadowConstants\";\nimport { contentPositionMap, blockGapConfig } from \"../../../shared/layoutConstants\";\n\nexport function exportHero(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n variation,\n variant = \"centered\",\n title,\n subtitle,\n description,\n primaryButton,\n secondaryButton,\n badge,\n align = \"center\",\n contentPosition = \"center\",\n contentSpacing = \"default\",\n blockGap = \"default\",\n minHeight = \"80vh\",\n image,\n overlay,\n overlayColor,\n background,\n // Typography colors (legacy)\n titleColor,\n subtitleColor,\n descriptionColor,\n // Typography config (novo sistema)\n titleTypography,\n subtitleTypography,\n descriptionTypography,\n // Badge styling\n badgeColor,\n badgeTextColor,\n // Layout\n contentMaxWidth = \"800px\",\n paddingY,\n // Image styling\n imageRadius = 16,\n imageShadow = \"lg\",\n imagePosition = \"right\",\n // Button size\n buttonSize = \"md\",\n // Primary button styling\n primaryButtonVariant = \"solid\",\n primaryButtonColor,\n primaryButtonTextColor,\n primaryButtonRadius = 8,\n // Secondary button styling\n secondaryButtonVariant = \"outline\",\n secondaryButtonColor,\n secondaryButtonTextColor,\n secondaryButtonRadius = 8,\n // Button hover effects\n buttonHoverEffect = \"scale\",\n buttonHoverIntensity = 50,\n buttonHoverOverlay = \"none\",\n buttonHoverIconName = \"arrow-right\",\n // Decorative\n showWave,\n waveColor = \"rgba(255,255,255,0.1)\",\n // Image Grid\n imageGridEnabled,\n imageGridPreset = \"four-equal\",\n imageGridImages = [],\n imageGridGap = 8,\n // Carousel\n carouselImages,\n carouselInterval = 5,\n carouselTransition = \"crossfade\",\n } = (block as any).props;\n\n // Determine variation types\n const heroImage = image || PLACEHOLDER_IMAGE_URL;\n const isSplit = variation === \"hero-split\" || variant === \"split\";\n const isParallax = variation === \"hero-parallax\";\n const isOverlayVariant = variation === \"hero-overlay\";\n const isGradient = variation === \"hero-gradient\";\n const isMinimal = variation === \"hero-minimal\";\n const isCard = variation === \"hero-card\";\n const isCarousel = variation === \"hero-carousel\";\n const isImageBg = (variant === \"image-bg\" || isOverlayVariant || isParallax || isCard || isCarousel) && heroImage;\n const isOverlay = isImageBg && overlay;\n\n // Determine if dark background context\n const hasDarkBg = isOverlay || isGradient || isOverlayVariant || isCarousel;\n\n // Theme colors\n const themePrimaryColor = theme?.colors?.primary || \"#3b82f6\";\n const themePrimaryText = theme?.colors?.primaryText || \"#ffffff\";\n\n // Text colors (fallback)\n const defaultTextColor = hasDarkBg ? \"#ffffff\" : \"var(--sg-text, #1f2937)\";\n const defaultMutedColor = hasDarkBg ? \"rgba(255,255,255,0.85)\" : \"var(--sg-muted-text, #6b7280)\";\n\n // Merge typography configs with defaults (retrocompatível com titleColor, etc.)\n const mergedTitleTypo = mergeTypographyWithDefaults(\n titleTypography as TypographyConfig | undefined,\n { ...heroTitleDefaults, color: titleColor as string | undefined }\n );\n const mergedSubtitleTypo = mergeTypographyWithDefaults(\n subtitleTypography as TypographyConfig | undefined,\n { ...heroSubtitleDefaults, color: subtitleColor as string | undefined }\n );\n const mergedDescriptionTypo = mergeTypographyWithDefaults(\n descriptionTypography as TypographyConfig | undefined,\n { ...heroDescriptionDefaults, color: descriptionColor as string | undefined }\n );\n\n // Generate typography CSS strings\n const titleTypoStyles = generateTypographyStyles(mergedTitleTypo, defaultTextColor);\n const subtitleTypoStyles = generateTypographyStyles(mergedSubtitleTypo, defaultMutedColor);\n const descriptionTypoStyles = generateTypographyStyles(mergedDescriptionTypo, defaultMutedColor);\n\n // Badge colors\n const finalBadgeColor = badgeColor || themePrimaryColor;\n const finalBadgeTextColor = badgeTextColor || \"#ffffff\";\n\n // Button colors\n const finalPrimaryBtnColor = primaryButtonColor || themePrimaryColor;\n const finalPrimaryBtnTextColor = primaryButtonTextColor || themePrimaryText;\n const finalSecondaryBtnColor = secondaryButtonColor || (hasDarkBg ? \"#ffffff\" : themePrimaryColor);\n const finalSecondaryBtnTextColor = secondaryButtonTextColor || finalSecondaryBtnColor;\n\n // Section classes\n const sectionClasses = [\n \"sg-hero\",\n variation ? `sg-hero--${String(variation).replace(\"hero-\", \"\")}` : \"\",\n isSplit ? \"sg-hero--split\" : \"\",\n isParallax ? \"sg-hero--parallax\" : \"\",\n isOverlayVariant ? \"sg-hero--overlay\" : \"\",\n isGradient ? \"sg-hero--gradient\" : \"\",\n isMinimal ? \"sg-hero--minimal\" : \"\",\n isCard ? \"sg-hero--card\" : \"\",\n isCarousel ? \"sg-hero--carousel\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n // Build background style\n let bgStyle = \"\";\n if (background) {\n bgStyle = `background: ${background};`;\n } else if (isImageBg && !isSplit) {\n bgStyle = `background-image: url(${escapeHtml(heroImage)}); background-size: cover; background-position: center;`;\n if (isParallax) bgStyle += \" background-attachment: fixed;\";\n } else {\n bgStyle = \"background-color: var(--sg-bg, #fff);\";\n }\n\n // Padding\n const paddingStyle = paddingY ? `padding: ${paddingY} 2rem;` : \"padding: 6rem 2rem;\";\n\n // Content position mapping for flexbox justify-content\n const justifyContent = contentPositionMap[contentPosition] || \"center\";\n\n // Determine if layout has two blocks (content + image) - these should always be centered\n const hasTwoBlocks = isSplit || isCard;\n // Note: shouldShowImageGrid is checked later, so we'll handle it in each section\n\n // Content spacing map - controls margin between elements\n const spacingMap: Record<string, { title: string; subtitle: string; description: string; badge: string; actions: string }> = {\n compact: { title: \"0.75rem\", subtitle: \"0.5rem\", description: \"1.25rem\", badge: \"1rem\", actions: \"0.25rem\" },\n default: { title: \"1.25rem\", subtitle: \"1rem\", description: \"2.5rem\", badge: \"1.5rem\", actions: \"0.5rem\" },\n spacious: { title: \"2.25rem\", subtitle: \"2rem\", description: \"3.5rem\", badge: \"2.5rem\", actions: \"1.5rem\" },\n };\n const spacing = spacingMap[contentSpacing] || spacingMap.default;\n\n // Block gap configuration\n const blocksConfig = blockGapConfig[blockGap] || blockGapConfig.default;\n const blocksJustify = blocksConfig.justify;\n const blocksMaxWidth = blocksConfig.blockMaxWidth;\n const containerMaxWidth = blocksConfig.containerMaxWidth;\n const blocksGap = blocksConfig.gap;\n\n // Overlay HTML\n const overlayStyle = overlayColor\n ? `position: absolute; inset: 0; background: ${overlayColor}; z-index: 0;`\n : \"position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.3) 100%); z-index: 0;\";\n const overlayHtml = isOverlay\n ? `<div class=\"sg-hero__overlay\" style=\"${overlayStyle}\"></div>`\n : \"\";\n\n // Wave SVG\n const waveHtml = showWave\n ? `<div style=\"position: absolute; bottom: 0; left: 0; right: 0; height: 150px; overflow: hidden; z-index: 1;\">\n <svg viewBox=\"0 0 1200 120\" preserveAspectRatio=\"none\" style=\"position: absolute; bottom: 0; width: 100%; height: 100%;\">\n <path d=\"M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z\" fill=\"${waveColor}\" opacity=\"0.5\"/>\n <path d=\"M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z\" fill=\"${waveColor}\" opacity=\"0.3\"/>\n </svg>\n </div>`\n : \"\";\n\n // Badge HTML\n const badgeHtml = badge\n ? `<span class=\"sg-hero__badge\" data-block-group=\"Badge\" style=\"display: inline-block; padding: 0.5rem 1.25rem; background: ${finalBadgeColor}; color: ${finalBadgeTextColor}; border-radius: 999px; font-size: 0.875rem; font-weight: 600; margin-bottom: ${spacing.badge};\">${escapeHtml(badge)}</span>`\n : \"\";\n\n // Title HTML - usa tipografia customizada com clamp para responsividade\n const titleFontSize = mergedTitleTypo.fontSize || 48;\n const titleHtml = title\n ? `<h1 class=\"sg-hero__title\" style=\"${titleTypoStyles.cssString} font-size: clamp(2rem, 5vw, ${titleFontSize}px); line-height: 1.1; margin-bottom: ${spacing.title}; letter-spacing: -0.02em;\">${escapeHtml(title)}</h1>`\n : \"\";\n\n // Subtitle HTML - usa tipografia customizada com clamp para responsividade\n const subtitleFontSize = mergedSubtitleTypo.fontSize || 24;\n const subtitleHtml = subtitle\n ? `<h2 class=\"sg-hero__subtitle\" style=\"${subtitleTypoStyles.cssString} font-size: clamp(1.125rem, 2.5vw, ${subtitleFontSize}px); line-height: 1.3; margin-bottom: ${spacing.subtitle};\">${escapeHtml(subtitle)}</h2>`\n : \"\";\n\n // Description HTML - usa tipografia customizada\n const descHtml = description\n ? `<p class=\"sg-hero__description\" style=\"max-width: 650px; margin: ${align === \"center\" ? `0 auto ${spacing.description}` : `0 0 ${spacing.description}`}; ${descriptionTypoStyles.cssString} line-height: 1.7;\">${escapeHtml(description)}</p>`\n : \"\";\n\n // Button styles\n const buttonStyles = resolveHeroButtonStyles({\n theme,\n blockId: block.id,\n buttonSize,\n primaryButtonVariant,\n primaryButtonColor: finalPrimaryBtnColor,\n primaryButtonTextColor: finalPrimaryBtnTextColor,\n primaryButtonRadius,\n secondaryButtonVariant,\n secondaryButtonColor: finalSecondaryBtnColor,\n secondaryButtonTextColor: finalSecondaryBtnTextColor,\n secondaryButtonRadius,\n hoverEffect: buttonHoverEffect,\n hoverIntensity: buttonHoverIntensity,\n hoverOverlay: buttonHoverOverlay,\n hoverIconName: buttonHoverIconName,\n });\n\n // Buttons HTML\n const primaryHref = primaryButton ? resolveHref(primaryButton.href || \"#\", basePath) : \"#\";\n const secondaryHref = secondaryButton ? resolveHref(secondaryButton.href || \"#\", basePath) : \"#\";\n const primaryBtnHtml = primaryButton\n ? `<a href=\"${escapeHtml(primaryHref)}\"${linkTargetAttr(primaryHref, basePath)} class=\"sg-hero__btn sg-hero__btn--primary\" data-block-group=\"Botão Primário\" style=\"${buttonStyles.primary}\">${escapeHtml(primaryButton.text)}</a>`\n : \"\";\n const secondaryBtnHtml = secondaryButton\n ? `<a href=\"${escapeHtml(secondaryHref)}\"${linkTargetAttr(secondaryHref, basePath)} class=\"sg-hero__btn sg-hero__btn--secondary\" data-block-group=\"Botão Secundário\" style=\"${buttonStyles.secondary}\">${escapeHtml(secondaryButton.text)}</a>`\n : \"\";\n const buttonsHtml =\n primaryButton || secondaryButton\n ? `<div class=\"sg-hero__actions\" style=\"display: flex; gap: 1rem; flex-wrap: wrap; justify-content: ${align === \"center\" ? \"center\" : \"flex-start\"}; margin-top: ${spacing.actions};\">${primaryBtnHtml}${secondaryBtnHtml}</div>`\n : \"\";\n\n // Content block — wrap text content in a group for click-to-scroll\n const textContentHtml = (titleHtml || subtitleHtml || descHtml) ? `<div data-block-group=\"Conteúdo\">${titleHtml}${subtitleHtml}${descHtml}</div>` : \"\";\n const contentBlock = `${badgeHtml}${textContentHtml}${buttonsHtml}`;\n\n // Style block (hover effects)\n const styleBlock = buttonStyles.css ? `<style>${buttonStyles.css}</style>` : \"\";\n\n // Image fallback\n const imgFallback = `this.onerror=null;this.src='${escapeHtml(PLACEHOLDER_IMAGE_URL)}';`;\n\n // =========================================================================\n // IMAGE GRID EXPORT HELPER\n // =========================================================================\n const exportImageGrid = (\n images: ImageGridItem[],\n preset: ImageGridPreset,\n gap: number,\n radius: number,\n shadow: string,\n gridId: string\n ): { html: string; css: string } => {\n const config = gridPresetMap[preset];\n const shadowValue = imageShadowMap[shadow] || imageShadowMap.lg;\n\n // Generate grid items HTML\n const itemsHtml = config.positions\n .map((pos, idx) => {\n const img = images[idx];\n const imgSrc = img?.src || PLACEHOLDER_IMAGE_URL;\n const imgAlt = img?.alt || `Imagem ${idx + 1}`;\n const imgScale = img?.scale ?? 1;\n const scaleStyle = imgScale !== 1 ? ` transform: scale(${imgScale}); z-index: 1;` : \"\";\n\n return `<div class=\"sg-hero__grid-item\" style=\"grid-column: ${pos.col}; grid-row: ${pos.row}; overflow: hidden; border-radius: ${radius}px;${scaleStyle}\">\n <img src=\"${escapeHtml(imgSrc)}\" alt=\"${escapeHtml(imgAlt)}\" style=\"width: 100%; height: 100%; object-fit: contain; display: block;\" onerror=\"${imgFallback}\" />\n </div>`;\n })\n .join(\"\");\n\n const gridHtml = `<div id=\"${gridId}\" class=\"sg-hero__image-grid\" style=\"display: grid; grid-template: ${config.gridTemplate}; gap: ${gap}px; width: 100%; max-width: 500px; aspect-ratio: 1 / 1;\">\n ${itemsHtml}\n </div>`;\n\n // Responsive CSS: collapse to single column on mobile\n const gridCss = `\n @media (max-width: 767px) {\n #${gridId} {\n grid-template: auto / 1fr !important;\n aspect-ratio: auto !important;\n }\n #${gridId} .sg-hero__grid-item {\n grid-column: 1 / -1 !important;\n grid-row: auto !important;\n aspect-ratio: 16 / 9;\n }\n }\n `;\n\n return { html: gridHtml, css: gridCss };\n };\n\n // Determine if we should use image grid (works in ANY variation now)\n const hasValidGridImages = imageGridImages && imageGridImages.length > 0 && (imageGridImages as ImageGridItem[]).some((img: ImageGridItem) => img?.src);\n const shouldShowImageGrid = imageGridEnabled && hasValidGridImages;\n\n // =========================================================================\n // RENDER: Carousel Layout (crossfade image background)\n // =========================================================================\n if (isCarousel) {\n const resolvedImages = (carouselImages && carouselImages.length >= 2)\n ? (carouselImages as string[])\n : CAROUSEL_PLACEHOLDER_IMAGES;\n const carouselScopeId = generateScopedId(block.id || \"\", \"hero-carousel\");\n\n const carouselCss = generateCarouselCSS(\n `#${carouselScopeId}`,\n resolvedImages.length,\n carouselInterval as number,\n );\n\n // Generate carousel images HTML\n const carouselImagesHtml = resolvedImages\n .map((imgSrc: string, i: number) =>\n `<img src=\"${escapeHtml(imgSrc)}\" alt=\"Slide ${i + 1}\" class=\"sg-carousel__img\" ${i === 0 ? 'style=\"opacity: 1;\"' : ''} onerror=\"${imgFallback}\" />`\n )\n .join(\"\");\n\n // Dot indicators HTML\n const dotsHtml = `<div class=\"sg-carousel__dots\">${resolvedImages.map(() => '<span class=\"sg-carousel__dot\"></span>').join(\"\")}</div>`;\n\n // Overlay for carousel\n const carouselOverlayStyle = overlayColor\n ? `position: absolute; inset: 0; background: ${overlayColor}; z-index: 1;`\n : \"position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.7) 100%); z-index: 1;\";\n const carouselOverlayHtml = overlay\n ? `<div class=\"sg-hero__overlay\" style=\"${carouselOverlayStyle}\"></div>`\n : \"\";\n\n const carouselContentHtml = `<div style=\"max-width: ${contentMaxWidth}; width: 100%; padding: 0 2rem; text-align: ${align}; position: relative; z-index: 2;\">${contentBlock}</div>`;\n\n // Combine all CSS (carousel animation + button hover effects)\n const allCss = `<style>${carouselCss}${buttonStyles.css ? \"\\n\" + buttonStyles.css : \"\"}</style>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; position: relative; overflow: hidden; background: #000;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${allCss}<div id=\"${carouselScopeId}\" style=\"position: absolute; inset: 0; z-index: 0;\">${carouselImagesHtml}${dotsHtml}</div>${carouselOverlayHtml}${carouselContentHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: Split Layout (without image grid)\n // =========================================================================\n if (isSplit && heroImage && !shouldShowImageGrid) {\n const splitId = generateScopedId(block.id || \"\", \"hero-split\");\n const isImageLeft = imagePosition === \"left\";\n const imgShadow = imageShadowMap[imageShadow] || imageShadowMap.lg;\n\n const splitCss = `\n @media (max-width: 1023px) {\n #${splitId} {\n grid-template-columns: 1fr !important;\n gap: 2rem !important;\n padding: 0 1rem !important;\n }\n #${splitId} .sg-hero__split-image {\n order: -1;\n }\n }\n `;\n\n const splitBgStyle = background ? `background: ${background};` : \"background-color: var(--sg-bg, #fff);\";\n const imgStyle = `width: 100%; max-width: 500px; height: auto; border-radius: ${imageRadius}px; box-shadow: ${imgShadow}; object-fit: cover;`;\n const imageDiv = `<div class=\"sg-hero__split-image\" data-block-group=\"Mídia\" style=\"display: flex; justify-content: center; flex: 0 1 auto; max-width: ${blocksMaxWidth};\"><img src=\"${escapeHtml(heroImage)}\" alt=\"${escapeHtml(title || \"\")}\" class=\"sg-hero__img\" style=\"${imgStyle}\" onerror=\"${imgFallback}\" /></div>`;\n const contentDiv = `<div class=\"sg-hero__split-content\" style=\"text-align: ${align}; position: relative; z-index: 1; max-width: ${blocksMaxWidth}; flex: 0 1 auto;\">${contentBlock}</div>`;\n\n const innerHtml = isImageLeft\n ? `<style>${splitCss}</style><div id=\"${splitId}\" class=\"sg-hero__split-inner\" style=\"display: flex; justify-content: ${blocksJustify}; gap: ${blocksGap}; align-items: center; max-width: ${containerMaxWidth}; width: 100%; padding: 0 2rem;\">${imageDiv}${contentDiv}</div>`\n : `<style>${splitCss}</style><div id=\"${splitId}\" class=\"sg-hero__split-inner\" style=\"display: flex; justify-content: ${blocksJustify}; gap: ${blocksGap}; align-items: center; max-width: ${containerMaxWidth}; width: 100%; padding: 0 2rem;\">${contentDiv}${imageDiv}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; position: relative; overflow: hidden; ${splitBgStyle}\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${innerHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: Card Layout (supports both with and without Image Grid)\n // Card always stays on the left (original position), Grid on the right\n // =========================================================================\n if (isCard && heroImage) {\n const cardBg = background || \"#ffffff\";\n const cardPadding = paddingY ? `${paddingY} 3rem` : \"6rem 3rem\";\n\n // With Image Grid: Card on left + Grid on right (preserves original card position)\n if (shouldShowImageGrid) {\n const cardGridLayoutId = generateScopedId(block.id || \"\", \"hero-card-grid\");\n const gridId = generateScopedId(block.id || \"\", \"hero-grid\");\n\n const gridResult = exportImageGrid(\n imageGridImages as ImageGridItem[],\n imageGridPreset as ImageGridPreset,\n imageGridGap as number,\n imageRadius,\n imageShadow,\n gridId\n );\n\n const cardHtml = `<div class=\"sg-hero__card\" style=\"max-width: 500px; background: ${cardBg}; padding: 2rem; border-radius: 16px; box-shadow: 0 25px 50px rgba(0,0,0,0.25); position: relative; z-index: 2; text-align: ${align}; flex: 0 1 auto;\">${contentBlock}</div>`;\n const gridWrapperHtml = `<div class=\"sg-hero__grid-wrapper\" data-block-group=\"Mídia\" style=\"position: relative; z-index: 3; display: flex; justify-content: center; align-items: center; flex: 0 1 auto; max-width: ${blocksMaxWidth};\">${gridResult.html}</div>`;\n\n // Card always left, Grid always right\n const innerHtml = `${cardHtml}${gridWrapperHtml}`;\n\n // Responsive CSS\n let layoutCss = `\n @media (max-width: 1023px) {\n #${cardGridLayoutId} {\n flex-direction: column !important;\n gap: 2rem !important;\n }\n #${cardGridLayoutId} .sg-hero__grid-wrapper {\n order: -1;\n }\n }\n `;\n layoutCss += gridResult.css;\n\n const cardGridLayoutHtml = `<style>${layoutCss}</style><div id=\"${cardGridLayoutId}\" class=\"sg-hero__card-grid-layout\" style=\"display: flex; width: 100%; max-width: ${containerMaxWidth}; align-items: center; justify-content: ${blocksJustify}; position: relative; z-index: 2; padding: 0 2rem; gap: ${blocksGap};\">${innerHtml}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses} sg-hero--with-grid\" style=\"min-height: ${minHeight}; padding: ${cardPadding}; display: flex; align-items: center; justify-content: center; background-image: url(${escapeHtml(heroImage)}); background-size: cover; background-position: center; position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${cardGridLayoutHtml}</section>`;\n }\n\n // Without Image Grid: Original card layout\n const cardHtml = `\n <div class=\"sg-hero__card\" style=\"max-width: ${contentMaxWidth}; width: 100%; background: ${cardBg}; padding: 2rem; border-radius: 16px; box-shadow: 0 25px 50px rgba(0,0,0,0.25); position: relative; z-index: 2; text-align: ${align};\">\n ${contentBlock}\n </div>\n `;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; padding: ${cardPadding}; display: flex; align-items: center; justify-content: center; background-image: url(${escapeHtml(heroImage)}); background-size: cover; background-position: center; position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${cardHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: With Image Grid (any variation) - Floating grid alongside content\n // =========================================================================\n if (shouldShowImageGrid) {\n const gridLayoutId = generateScopedId(block.id || \"\", \"hero-grid-layout\");\n const gridId = generateScopedId(block.id || \"\", \"hero-grid\");\n const isGridLeft = imagePosition === \"left\";\n\n const gridResult = exportImageGrid(\n imageGridImages as ImageGridItem[],\n imageGridPreset as ImageGridPreset,\n imageGridGap as number,\n imageRadius,\n imageShadow,\n gridId\n );\n\n const gridWrapperHtml = `<div class=\"sg-hero__grid-wrapper\" data-block-group=\"Mídia\" style=\"position: relative; z-index: 3; display: flex; justify-content: center; align-items: center; flex: 1 1 0%; max-width: ${blocksMaxWidth};\">${gridResult.html}</div>`;\n const contentSideHtml = `<div class=\"sg-hero__content-side\" style=\"max-width: ${blocksMaxWidth}; flex: 1 1 0%; text-align: ${align}; position: relative; z-index: 2;\">${contentBlock}</div>`;\n\n // Responsive CSS for the grid layout\n let layoutCss = `\n @media (max-width: 1023px) {\n #${gridLayoutId} {\n flex-direction: column !important;\n gap: 2rem !important;\n }\n #${gridLayoutId} .sg-hero__grid-wrapper,\n #${gridLayoutId} .sg-hero__content-side {\n max-width: 100% !important;\n }\n #${gridLayoutId} .sg-hero__grid-wrapper {\n order: -1;\n }\n }\n `;\n layoutCss += gridResult.css;\n\n const innerHtml = isGridLeft\n ? `${gridWrapperHtml}${contentSideHtml}`\n : `${contentSideHtml}${gridWrapperHtml}`;\n\n const gridLayoutHtml = `<style>${layoutCss}</style><div id=\"${gridLayoutId}\" class=\"sg-hero__grid-layout\" style=\"display: flex; justify-content: ${blocksJustify}; gap: ${blocksGap}; max-width: ${containerMaxWidth}; width: 100%; align-items: center; position: relative; z-index: 2; padding: 0 2rem;\">${innerHtml}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses} sg-hero--with-grid\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; ${bgStyle} position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${waveHtml}${gridLayoutHtml}</section>`;\n }\n\n // =========================================================================\n // RENDER: Default (centered, gradient, minimal, parallax, overlay)\n // =========================================================================\n const contentWrapHtml = `<div style=\"max-width: ${contentMaxWidth}; width: 100%; padding: 0 2rem; text-align: ${align}; position: relative; z-index: 2;\">${contentBlock}</div>`;\n\n return `<section ${blockIdAttr(block.id)} ${dataBlockIdAttr(block.id)} class=\"${sectionClasses}\" style=\"min-height: ${minHeight}; ${paddingStyle} display: flex; align-items: center; justify-content: ${justifyContent}; ${bgStyle} position: relative; overflow: hidden;\" data-variation=\"${escapeHtml(variation || variant || \"\")}\">${styleBlock}${overlayHtml}${waveHtml}${contentWrapHtml}</section>`;\n}\n\n/**\n * Resolve hero button styles with independent customization for primary and secondary\n */\ninterface ButtonStylesConfig {\n theme?: ThemeTokens;\n blockId: string;\n buttonSize: string;\n primaryButtonVariant: string;\n primaryButtonColor: string;\n primaryButtonTextColor: string;\n primaryButtonRadius: number;\n secondaryButtonVariant: string;\n secondaryButtonColor: string;\n secondaryButtonTextColor: string;\n secondaryButtonRadius: number;\n hoverEffect: string;\n hoverIntensity: number;\n hoverOverlay: string;\n hoverIconName: string;\n}\n\nfunction resolveHeroButtonStyles(config: ButtonStylesConfig): { primary: string; secondary: string; css: string } {\n const {\n blockId,\n buttonSize,\n primaryButtonVariant,\n primaryButtonColor,\n primaryButtonTextColor,\n primaryButtonRadius,\n secondaryButtonVariant,\n secondaryButtonColor,\n secondaryButtonTextColor,\n secondaryButtonRadius,\n hoverEffect,\n hoverIntensity,\n hoverOverlay,\n hoverIconName,\n } = config;\n\n // Size-based styles\n const sizeStyles: Record<string, { padding: string; fontSize: string }> = {\n sm: { padding: \"0.625rem 1.25rem\", fontSize: \"0.875rem\" },\n md: { padding: \"0.875rem 2rem\", fontSize: \"1rem\" },\n lg: { padding: \"1rem 2.5rem\", fontSize: \"1.125rem\" },\n };\n const size = sizeStyles[buttonSize] || sizeStyles.md;\n\n // Base button styles\n const baseStyles = [\n `padding: ${size.padding}`,\n \"font-weight: 600\",\n `font-size: ${size.fontSize}`,\n \"text-decoration: none\",\n \"display: inline-flex\",\n \"align-items: center\",\n \"justify-content: center\",\n \"gap: 0.5rem\",\n \"transition: all 0.2s ease\",\n \"position: relative\",\n \"overflow: hidden\",\n \"cursor: pointer\",\n ];\n\n // Primary button styles\n const primaryStyles = [...baseStyles, `border-radius: ${primaryButtonRadius}px`];\n switch (primaryButtonVariant) {\n case \"outline\":\n primaryStyles.push(`background-color: transparent`, `border: 2px solid ${primaryButtonColor}`, `color: ${primaryButtonColor}`);\n break;\n case \"ghost\":\n primaryStyles.push(`background-color: transparent`, `border: none`, `color: ${primaryButtonColor}`);\n break;\n default: // solid\n primaryStyles.push(`background-color: ${primaryButtonColor}`, `border: 2px solid ${primaryButtonColor}`, `color: ${primaryButtonTextColor}`);\n }\n\n // Secondary button styles\n const secondaryStyles = [...baseStyles, `border-radius: ${secondaryButtonRadius}px`];\n switch (secondaryButtonVariant) {\n case \"solid\":\n secondaryStyles.push(`background-color: ${secondaryButtonColor}`, `border: 2px solid ${secondaryButtonColor}`, `color: ${secondaryButtonTextColor}`);\n break;\n case \"ghost\":\n secondaryStyles.push(`background-color: transparent`, `border: none`, `color: ${secondaryButtonTextColor}`);\n break;\n default: // outline\n secondaryStyles.push(`background-color: transparent`, `border: 2px solid ${secondaryButtonColor}`, `color: ${secondaryButtonTextColor}`);\n }\n\n const scope = blockId ? `[data-block-id=\"${blockId}\"]` : \"\";\n let css = \"\";\n\n // Hover effects\n if (hoverEffect !== \"none\") {\n // Primary button hover\n const primaryHoverResult = generateButtonHoverStyles({\n effect: hoverEffect as ButtonHoverEffect,\n intensity: hoverIntensity,\n buttonColor: primaryButtonColor,\n buttonTextColor: primaryButtonVariant === \"solid\" ? primaryButtonTextColor : primaryButtonColor,\n variant: primaryButtonVariant as \"solid\" | \"outline\" | \"ghost\",\n });\n\n // Secondary button hover\n const secondaryHoverResult = generateButtonHoverStyles({\n effect: hoverEffect as ButtonHoverEffect,\n intensity: hoverIntensity,\n buttonColor: secondaryButtonColor,\n buttonTextColor: secondaryButtonVariant === \"solid\" ? secondaryButtonTextColor : secondaryButtonColor,\n variant: secondaryButtonVariant as \"solid\" | \"outline\" | \"ghost\",\n });\n\n if (primaryHoverResult.base) {\n css += `${scope} .sg-hero__btn--primary { ${primaryHoverResult.base} }\\n`;\n }\n if (secondaryHoverResult.base) {\n css += `${scope} .sg-hero__btn--secondary { ${secondaryHoverResult.base} }\\n`;\n }\n\n css += `\n ${scope} .sg-hero__btn--primary:hover { ${primaryHoverResult.hover} }\n ${scope} .sg-hero__btn--secondary:hover { ${secondaryHoverResult.hover} }\n `;\n\n css += getButtonHoverKeyframes();\n }\n\n // Overlay effects\n if (hoverOverlay && hoverOverlay !== \"none\") {\n css += generateButtonOverlayCSS(`${scope} .sg-hero__btn--primary`, {\n overlay: hoverOverlay as ButtonHoverOverlay,\n primaryColor: primaryButtonColor,\n iconName: hoverIconName,\n textColor: primaryButtonVariant === \"solid\" ? primaryButtonTextColor : primaryButtonColor,\n });\n css += generateButtonOverlayCSS(`${scope} .sg-hero__btn--secondary`, {\n overlay: hoverOverlay as ButtonHoverOverlay,\n primaryColor: secondaryButtonColor,\n iconName: hoverIconName,\n textColor: secondaryButtonVariant === \"solid\" ? secondaryButtonTextColor : secondaryButtonColor,\n });\n }\n\n return {\n primary: primaryStyles.join(\"; \"),\n secondary: secondaryStyles.join(\"; \"),\n css,\n };\n}\n\n"],"names":["exportHero","block","depth","basePath","theme","variation","variant","title","subtitle","description","primaryButton","secondaryButton","badge","align","contentPosition","contentSpacing","blockGap","minHeight","image","overlay","overlayColor","background","titleColor","subtitleColor","descriptionColor","titleTypography","subtitleTypography","descriptionTypography","badgeColor","badgeTextColor","contentMaxWidth","paddingY","imageRadius","imageShadow","imagePosition","buttonSize","primaryButtonVariant","primaryButtonColor","primaryButtonTextColor","primaryButtonRadius","secondaryButtonVariant","secondaryButtonColor","secondaryButtonTextColor","secondaryButtonRadius","buttonHoverEffect","buttonHoverIntensity","buttonHoverOverlay","buttonHoverIconName","showWave","waveColor","imageGridEnabled","imageGridPreset","imageGridImages","imageGridGap","carouselImages","carouselInterval","carouselTransition","heroImage","PLACEHOLDER_IMAGE_URL","isSplit","isParallax","isOverlayVariant","isGradient","isMinimal","isCard","isCarousel","isImageBg","isOverlay","hasDarkBg","themePrimaryColor","themePrimaryText","defaultTextColor","defaultMutedColor","mergedTitleTypo","mergeTypographyWithDefaults","heroTitleDefaults","mergedSubtitleTypo","heroSubtitleDefaults","mergedDescriptionTypo","heroDescriptionDefaults","titleTypoStyles","generateTypographyStyles","subtitleTypoStyles","descriptionTypoStyles","finalBadgeColor","finalBadgeTextColor","finalPrimaryBtnColor","finalPrimaryBtnTextColor","finalSecondaryBtnColor","finalSecondaryBtnTextColor","sectionClasses","bgStyle","escapeHtml","paddingStyle","justifyContent","contentPositionMap","spacingMap","spacing","blocksConfig","blockGapConfig","blocksJustify","blocksMaxWidth","containerMaxWidth","blocksGap","overlayStyle","overlayHtml","waveHtml","badgeHtml","titleFontSize","titleHtml","subtitleFontSize","subtitleHtml","descHtml","buttonStyles","resolveHeroButtonStyles","primaryHref","resolveHref","secondaryHref","primaryBtnHtml","linkTargetAttr","secondaryBtnHtml","buttonsHtml","textContentHtml","contentBlock","styleBlock","imgFallback","exportImageGrid","images","preset","gap","radius","shadow","gridId","config","gridPresetMap","itemsHtml","pos","idx","img","imgSrc","imgAlt","imgScale","scaleStyle","gridHtml","gridCss","hasValidGridImages","shouldShowImageGrid","resolvedImages","CAROUSEL_PLACEHOLDER_IMAGES","carouselScopeId","generateScopedId","carouselCss","generateCarouselCSS","carouselImagesHtml","i","dotsHtml","carouselOverlayStyle","carouselOverlayHtml","carouselContentHtml","allCss","blockIdAttr","dataBlockIdAttr","splitId","isImageLeft","imgShadow","imageShadowMap","splitCss","splitBgStyle","imgStyle","imageDiv","contentDiv","innerHtml","cardBg","cardPadding","cardGridLayoutId","gridResult","cardHtml","gridWrapperHtml","layoutCss","cardGridLayoutHtml","gridLayoutId","isGridLeft","contentSideHtml","gridLayoutHtml","contentWrapHtml","blockId","hoverEffect","hoverIntensity","hoverOverlay","hoverIconName","sizeStyles","size","baseStyles","primaryStyles","secondaryStyles","scope","css","primaryHoverResult","generateButtonHoverStyles","secondaryHoverResult","getButtonHoverKeyframes","generateButtonOverlayCSS"],"mappings":"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"}
@@ -1,43 +1,43 @@
1
- import { dataBlockIdAttr as $, escapeHtml as e, resolveHref as G, linkTargetAttr as R, blockIdAttr as w } from "../../shared/htmlHelpers.js";
2
- import { generateScopedId as H } from "../../shared/idGenerator.js";
3
- import { resolveResponsiveColumns as C, generateResponsiveGridStyles as B } from "../../shared/responsiveGridHelper.js";
4
- import { generateButtonHoverStyles as A, generateButtonOverlayCSS as E, getButtonHoverKeyframes as J } from "../../../shared/hoverEffects/buttonHover.js";
1
+ import { dataBlockIdAttr as $, escapeHtml as e, resolveHref as E, linkTargetAttr as F, blockIdAttr as w } from "../../shared/htmlHelpers.js";
2
+ import { generateScopedId as C } from "../../shared/idGenerator.js";
3
+ import { resolveResponsiveColumns as k, generateResponsiveGridStyles as S } from "../../shared/responsiveGridHelper.js";
4
+ import { generateButtonHoverStyles as G, generateButtonOverlayCSS as R, getButtonHoverKeyframes as J } from "../../../shared/hoverEffects/buttonHover.js";
5
5
  function Z(t, p, l, m) {
6
- const { icon: n, title: i, description: r } = t.props, o = 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>' : "";
7
- return `<div ${$(t.id)} style="padding: 1.5rem; text-align: center;">${o}<h3 style="font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;">${e(i)}</h3><p style="color: var(--sg-muted-text); font-size: 0.875rem;">${e(r)}</p></div>`;
6
+ const { icon: n, title: o, description: r } = t.props, i = 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>' : "";
7
+ return `<div ${$(t.id)} data-block-group="Conteúdo" style="padding: 1.5rem; text-align: center;">${i}<h3 style="font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;">${e(o)}</h3><p style="color: var(--sg-muted-text); font-size: 0.875rem;">${e(r)}</p></div>`;
8
8
  }
9
9
  function tt(t, p, l, m, n) {
10
10
  const {
11
- title: i,
11
+ title: o,
12
12
  subtitle: r,
13
- columns: o = 3,
14
- variant: s = "default",
15
- features: a = []
16
- } = t.props, d = H(t.id || "", "feature-grid"), v = C(o, 1, 2, o), { inlineStyles: g, mediaQueries: y } = B(d, v, "2rem"), u = s === "image-cards", f = i || r ? `<div style="text-align: center; margin-bottom: 3rem;">${i ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(i)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "", z = a.map((c) => {
17
- const h = u && c.image ? `<div style="width: 100%; height: 200px; background-image: url(${e(c.image)}); background-size: cover; background-position: center;"></div>` : "", b = !u && c.icon ? '<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>' : "", _ = c.link ? `<a href="${e(c.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);">${e(c.link.text)}</a>` : "", S = u && c.image ? "1.5rem" : "2rem";
18
- return `<div style="background-color: var(--sg-bg); border-radius: 0.75rem; padding: ${u && c.image ? 0 : "2rem"}; box-shadow: var(--sg-card-shadow); overflow: hidden;">${h}<div style="padding: ${S};">${b}<h3 style="font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;">${e(c.title)}</h3><p style="color: var(--sg-muted-text);">${e(c.description)}</p>${_}</div></div>`;
13
+ columns: i = 3,
14
+ variant: a = "default",
15
+ features: s = []
16
+ } = t.props, d = C(t.id || "", "feature-grid"), u = k(i, 1, 2, i), { inlineStyles: g, mediaQueries: v } = S(d, u, "2rem"), y = a === "image-cards", f = o || r ? `<div data-block-group="Conteúdo" style="text-align: center; margin-bottom: 3rem;">${o ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(o)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "", z = s.map((c) => {
17
+ const h = y && c.image ? `<div style="width: 100%; height: 200px; background-image: url(${e(c.image)}); background-size: cover; background-position: center;"></div>` : "", b = !y && c.icon ? '<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>' : "", B = c.link ? `<a href="${e(c.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);">${e(c.link.text)}</a>` : "", H = y && c.image ? "1.5rem" : "2rem";
18
+ return `<div style="background-color: var(--sg-bg); border-radius: 0.75rem; padding: ${y && c.image ? 0 : "2rem"}; box-shadow: var(--sg-card-shadow); overflow: hidden;">${h}<div style="padding: ${H};">${b}<h3 style="font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;">${e(c.title)}</h3><p style="color: var(--sg-muted-text);">${e(c.description)}</p>${B}</div></div>`;
19
19
  }).join("");
20
- return `<style>${y}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-surface);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${f}<div id="${d}" style="${g}">${z}</div></div></section>`;
20
+ return `<style>${v}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-surface);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${f}<div data-block-group="Layout" id="${d}" style="${g}">${z}</div></div></section>`;
21
21
  }
22
22
  function et(t, p, l, m) {
23
23
  const {
24
24
  title: n,
25
- description: i,
25
+ description: o,
26
26
  primaryButton: r,
27
- secondaryButton: o,
28
- variant: s = "centered",
27
+ secondaryButton: i,
28
+ variant: a = "centered",
29
29
  // Button size
30
- buttonSize: a = "md",
30
+ buttonSize: s = "md",
31
31
  // Button hover effects
32
32
  buttonHoverEffect: d = "scale",
33
- buttonHoverIntensity: v = 50,
33
+ buttonHoverIntensity: u = 50,
34
34
  buttonHoverOverlay: g = "none",
35
- buttonHoverIconName: y = "arrow-right"
36
- } = t.props, u = {
35
+ buttonHoverIconName: v = "arrow-right"
36
+ } = t.props, y = {
37
37
  sm: { padding: "0.5rem 1rem", fontSize: "0.875rem" },
38
38
  md: { padding: "0.75rem 1.5rem", fontSize: "1rem" },
39
39
  lg: { padding: "1rem 2rem", fontSize: "1.125rem" }
40
- }, f = u[a] || u.md, z = H(t.id || "", "cta-actions"), c = `[data-block-id="${t.id}"]`, h = s === "gradient", b = m?.colors?.primary || "#3b82f6", _ = m?.colors?.primaryText || "#ffffff", S = h ? "#fff" : b, I = h ? b : _, N = "transparent", q = h ? "#fff" : b, P = h ? "#fff" : b;
40
+ }, f = y[s] || y.md, z = C(t.id || "", "cta-actions"), c = `[data-block-id="${t.id}"]`, h = a === "gradient", b = m?.colors?.primary || "#3b82f6", B = m?.colors?.primaryText || "#ffffff", H = h ? "#fff" : b, I = h ? b : B, L = "transparent", q = h ? "#fff" : b, P = h ? "#fff" : b;
41
41
  let x = `
42
42
  @media (max-width: 640px) {
43
43
  #${z} {
@@ -51,68 +51,68 @@ function et(t, p, l, m) {
51
51
  }
52
52
  `;
53
53
  if (d !== "none") {
54
- const j = A({
54
+ const _ = G({
55
55
  effect: d,
56
- intensity: v,
57
- buttonColor: S,
56
+ intensity: u,
57
+ buttonColor: H,
58
58
  variant: "solid"
59
- }), k = A({
59
+ }), j = G({
60
60
  effect: d,
61
- intensity: v,
61
+ intensity: u,
62
62
  buttonColor: P,
63
63
  variant: "outline"
64
64
  });
65
- j.base && (x += `
65
+ _.base && (x += `
66
66
  ${c} .sg-cta__btn--primary {
67
- ${j.base}
67
+ ${_.base}
68
68
  }
69
- `), k.base && (x += `
69
+ `), j.base && (x += `
70
70
  ${c} .sg-cta__btn--secondary {
71
- ${k.base}
71
+ ${j.base}
72
72
  }
73
73
  `), x += `
74
74
  ${c} .sg-cta__btn--primary:hover {
75
- ${j.hover}
75
+ ${_.hover}
76
76
  }
77
77
  ${c} .sg-cta__btn--secondary:hover {
78
- ${k.hover}
78
+ ${j.hover}
79
79
  }
80
80
  `, x += J();
81
81
  }
82
- g && g !== "none" && (x += E(`${c} .sg-cta__btn--primary`, {
82
+ g && g !== "none" && (x += R(`${c} .sg-cta__btn--primary`, {
83
83
  overlay: g,
84
84
  primaryColor: b,
85
- iconName: y,
85
+ iconName: v,
86
86
  textColor: I
87
- }), x += E(`${c} .sg-cta__btn--secondary`, {
87
+ }), x += R(`${c} .sg-cta__btn--secondary`, {
88
88
  overlay: g,
89
89
  primaryColor: b,
90
- iconName: y,
90
+ iconName: v,
91
91
  textColor: q
92
92
  }));
93
- const Q = h ? "background: linear-gradient(135deg, var(--sg-primary), var(--sg-accent));" : "background-color: var(--sg-surface);", L = h ? "#fff" : "var(--sg-text)", M = h ? "rgba(255,255,255,0.9)" : "var(--sg-muted-text)", T = r ? G(r.href || "#", l) : "#", F = o ? G(o.href || "#", l) : "#", O = `padding: ${f.padding}; font-size: ${f.fontSize}; background-color: ${S}; color: ${I}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`, D = `padding: ${f.padding}; font-size: ${f.fontSize}; background-color: ${N}; color: ${q}; border: 2px solid ${P}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`, K = r ? `<a href="${e(T)}"${R(T, l)} class="sg-cta__btn sg-cta__btn--primary" style="${O}">${e(r.text)}</a>` : "", U = o ? `<a href="${e(F)}"${R(F, l)} class="sg-cta__btn sg-cta__btn--secondary" style="${D}">${e(o.text)}</a>` : "";
94
- return `<style>${x}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; ${Q} text-align: center;"><div style="max-width: 800px; margin: 0 auto; padding: 0 1rem;"><h2 style="font-size: var(--sg-heading-h2); margin-bottom: 1rem; color: ${L};">${e(n)}</h2>${i ? `<p style="font-size: 1.125rem; margin-bottom: 2rem; color: ${M};">${e(i)}</p>` : ""}<div id="${z}" style="display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap;">${K}${U}</div></div></section>`;
93
+ const N = h ? "background: linear-gradient(135deg, var(--sg-primary), var(--sg-accent));" : "background-color: var(--sg-surface);", Q = h ? "#fff" : "var(--sg-text)", M = h ? "rgba(255,255,255,0.9)" : "var(--sg-muted-text)", T = r ? E(r.href || "#", l) : "#", A = i ? E(i.href || "#", l) : "#", O = `padding: ${f.padding}; font-size: ${f.fontSize}; background-color: ${H}; color: ${I}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`, D = `padding: ${f.padding}; font-size: ${f.fontSize}; background-color: ${L}; color: ${q}; border: 2px solid ${P}; border-radius: var(--sg-button-radius); text-decoration: none; font-weight: 500; display: inline-block; transition: all 0.2s ease; position: relative; overflow: hidden;`, K = r ? `<a href="${e(T)}"${F(T, l)} class="sg-cta__btn sg-cta__btn--primary" style="${O}">${e(r.text)}</a>` : "", U = i ? `<a href="${e(A)}"${F(A, l)} class="sg-cta__btn sg-cta__btn--secondary" style="${D}">${e(i.text)}</a>` : "";
94
+ return `<style>${x}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; ${N} 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: ${Q};">${e(n)}</h2>${o ? `<p style="font-size: 1.125rem; margin-bottom: 2rem; color: ${M};">${e(o)}</p>` : ""}</div><div data-block-group="Botoes" id="${z}" style="display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap;">${K}${U}</div></div></section>`;
95
95
  }
96
96
  function rt(t, p, l, m) {
97
97
  const {
98
98
  name: n,
99
- price: i,
99
+ price: o,
100
100
  period: r,
101
- description: o,
102
- features: s = [],
103
- buttonText: a,
101
+ description: i,
102
+ features: a = [],
103
+ buttonText: s,
104
104
  highlighted: d,
105
- badge: v
106
- } = t.props, g = v ? `<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;">${e(v)}</span>` : "", y = s.map(
105
+ badge: u
106
+ } = t.props, g = u ? `<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;">${e(u)}</span>` : "", v = a.map(
107
107
  (f) => `<li style="padding: 0.5rem 0; display: flex; align-items: center; gap: 0.5rem;"><span style="color: var(--sg-success);">✓</span>${e(f)}</li>`
108
- ).join(""), u = d ? "background-color: var(--sg-primary); color: var(--sg-primary-text); border: none;" : "background-color: transparent; color: var(--sg-primary); border: 1px solid var(--sg-primary);";
109
- return `<div ${$(t.id)} style="background-color: var(--sg-bg); border-radius: 0.75rem; padding: 2rem; box-shadow: ${d ? "var(--sg-shadow-strong)" : "var(--sg-card-shadow)"}; border: ${d ? "2px solid var(--sg-primary)" : "1px solid var(--sg-border)"}; position: relative;">${g}<h3 style="font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;">${e(n)}</h3>${o ? `<p style="color: var(--sg-muted-text); margin-bottom: 1rem;">${e(o)}</p>` : ""}<div style="margin-bottom: 1.5rem;"><span style="font-size: 2.5rem; font-weight: 700;">${e(i)}</span>${r ? `<span style="color: var(--sg-muted-text);">${e(r)}</span>` : ""}</div><ul style="list-style: none; padding: 0; margin-bottom: 1.5rem;">${y}</ul>${a ? `<button style="width: 100%; padding: 0.625rem 1.25rem; ${u} border-radius: var(--sg-button-radius); font-weight: 500; cursor: pointer;">${e(a)}</button>` : ""}</div>`;
108
+ ).join(""), y = d ? "background-color: var(--sg-primary); color: var(--sg-primary-text); border: none;" : "background-color: transparent; color: var(--sg-primary); border: 1px solid var(--sg-primary);";
109
+ return `<div ${$(t.id)} data-block-group="Conteúdo" style="background-color: var(--sg-bg); border-radius: 0.75rem; padding: 2rem; box-shadow: ${d ? "var(--sg-shadow-strong)" : "var(--sg-card-shadow)"}; border: ${d ? "2px solid var(--sg-primary)" : "1px solid var(--sg-border)"}; position: relative;">${g}<h3 style="font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem;">${e(n)}</h3>${i ? `<p style="color: var(--sg-muted-text); margin-bottom: 1rem;">${e(i)}</p>` : ""}<div style="margin-bottom: 1.5rem;"><span style="font-size: 2.5rem; font-weight: 700;">${e(o)}</span>${r ? `<span style="color: var(--sg-muted-text);">${e(r)}</span>` : ""}</div><ul style="list-style: none; padding: 0; margin-bottom: 1.5rem;">${v}</ul>${s ? `<button style="width: 100%; padding: 0.625rem 1.25rem; ${y} border-radius: var(--sg-button-radius); font-weight: 500; cursor: pointer;">${e(s)}</button>` : ""}</div>`;
110
110
  }
111
- function it(t, p, l, m, n) {
112
- const { title: i, subtitle: r, plans: o = [] } = t.props, s = H(t.id || "", "pricing-grid"), a = Math.min(o.length, 4), d = C({ lg: a }, 1, 2, a), { inlineStyles: v, mediaQueries: g } = B(s, d, "2rem", "align-items: start;"), y = i || r ? `<div style="text-align: center; margin-bottom: 3rem;">${i ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(i)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "";
111
+ function ot(t, p, l, m, n) {
112
+ const { title: o, subtitle: r, plans: i = [] } = t.props, a = C(t.id || "", "pricing-grid"), s = Math.min(i.length, 4), d = k({ lg: s }, 1, 2, s), { inlineStyles: u, mediaQueries: g } = S(a, d, "2rem", "align-items: start;"), v = o || r ? `<div data-block-group="Conteúdo" style="text-align: center; margin-bottom: 3rem;">${o ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(o)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "";
113
113
  if (!n)
114
114
  throw new Error("exportPricing requires renderChild function");
115
- const u = o.map(
115
+ const y = i.map(
116
116
  (f) => n(
117
117
  { id: `${t.id}-plan`, type: "pricingCard", props: f },
118
118
  p + 1,
@@ -120,29 +120,29 @@ function it(t, p, l, m, n) {
120
120
  m
121
121
  )
122
122
  ).join("");
123
- return `<style>${g}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-bg);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${y}<div id="${s}" style="${v}">${u}</div></div></section>`;
123
+ return `<style>${g}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-bg);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${v}<div id="${a}" style="${u}">${y}</div></div></section>`;
124
124
  }
125
- function ot(t, p, l, m) {
125
+ function it(t, p, l, m) {
126
126
  const {
127
127
  quote: n,
128
- authorName: i,
128
+ authorName: o,
129
129
  authorRole: r,
130
- authorCompany: o,
131
- authorAvatar: s,
132
- rating: a
133
- } = t.props, d = a ? `<div style="margin-bottom: 1rem; color: #fbbf24;">${"★".repeat(a)}</div>` : "", v = s ? `<img src="${e(s)}" alt="${e(i)}" style="width: 3rem; height: 3rem; border-radius: 50%; object-fit: cover;" />` : `<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;">${i ? i.split(" ").map((g) => g[0]).join("").toUpperCase().slice(0, 2) : "?"}</div>`;
134
- return `<div ${$(t.id)} style="background-color: var(--sg-surface); border-radius: var(--sg-card-radius); padding: 2rem;">${d}<blockquote style="font-size: 1rem; margin-bottom: 1.5rem; font-style: italic;">"${e(n)}"</blockquote><div style="display: flex; align-items: center; gap: 1rem;">${v}<div><div style="font-weight: 600;">${e(i)}</div>${r || o ? `<div style="color: var(--sg-muted-text); font-size: 0.875rem;">${e(r || "")}${r && o ? ", " : ""}${e(o || "")}</div>` : ""}</div></div></div>`;
130
+ authorCompany: i,
131
+ authorAvatar: a,
132
+ rating: s
133
+ } = t.props, d = s ? `<div data-block-group="Estilo" style="margin-bottom: 1rem; color: #fbbf24;">${"★".repeat(s)}</div>` : "", u = a ? `<img src="${e(a)}" alt="${e(o)}" style="width: 3rem; height: 3rem; border-radius: 50%; object-fit: cover;" />` : `<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;">${o ? o.split(" ").map((g) => g[0]).join("").toUpperCase().slice(0, 2) : "?"}</div>`;
134
+ return `<div ${$(t.id)} style="background-color: var(--sg-surface); border-radius: var(--sg-card-radius); padding: 2rem;">${d}<blockquote data-block-group="Conteúdo" style="font-size: 1rem; margin-bottom: 1.5rem; font-style: italic;">"${e(n)}"</blockquote><div data-block-group="Autor" style="display: flex; align-items: center; gap: 1rem;">${u}<div><div style="font-weight: 600;">${e(o)}</div>${r || i ? `<div style="color: var(--sg-muted-text); font-size: 0.875rem;">${e(r || "")}${r && i ? ", " : ""}${e(i || "")}</div>` : ""}</div></div></div>`;
135
135
  }
136
136
  function nt(t, p, l, m, n) {
137
137
  const {
138
- title: i,
138
+ title: o,
139
139
  subtitle: r,
140
- columns: o = 3,
141
- testimonials: s = []
142
- } = t.props, a = H(t.id || "", "testimonial-grid"), d = C(o, 1, 2, o), { inlineStyles: v, mediaQueries: g } = B(a, d, "2rem"), y = i || r ? `<div style="text-align: center; margin-bottom: 3rem;">${i ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(i)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "";
140
+ columns: i = 3,
141
+ testimonials: a = []
142
+ } = t.props, s = C(t.id || "", "testimonial-grid"), d = k(i, 1, 2, i), { inlineStyles: u, mediaQueries: g } = S(s, d, "2rem"), v = o || r ? `<div data-block-group="Conteúdo" style="text-align: center; margin-bottom: 3rem;">${o ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(o)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "";
143
143
  if (!n)
144
144
  throw new Error("exportTestimonialGrid requires renderChild function");
145
- const u = s.map(
145
+ const y = a.map(
146
146
  (f) => n(
147
147
  { id: `${t.id}-t`, type: "testimonial", props: f },
148
148
  p + 1,
@@ -150,17 +150,17 @@ function nt(t, p, l, m, n) {
150
150
  m
151
151
  )
152
152
  ).join("");
153
- return `<style>${g}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-bg);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${y}<div id="${a}" style="${v}">${u}</div></div></section>`;
153
+ return `<style>${g}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-bg);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${v}<div data-block-group="Layout" id="${s}" style="${u}">${y}</div></div></section>`;
154
154
  }
155
- function st(t, p, l, m) {
156
- const { question: n, answer: i } = t.props;
157
- return `<details ${$(t.id)} 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;">${e(n)}<span>+</span></summary><p style="margin-top: 1rem; color: var(--sg-muted-text);">${e(i)}</p></details>`;
155
+ function at(t, p, l, m) {
156
+ const { question: n, answer: o } = t.props;
157
+ return `<details ${$(t.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;">${e(n)}<span>+</span></summary><p style="margin-top: 1rem; color: var(--sg-muted-text);">${e(o)}</p></details>`;
158
158
  }
159
- function at(t, p, l, m, n) {
160
- const { title: i, subtitle: r, items: o = [] } = t.props, s = i || r ? `<div style="text-align: center; margin-bottom: 3rem;">${i ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(i)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "";
159
+ function st(t, p, l, m, n) {
160
+ const { title: o, subtitle: r, items: i = [] } = t.props, a = o || r ? `<div data-block-group="Conteúdo" style="text-align: center; margin-bottom: 3rem;">${o ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(o)}</h2>` : ""}${r ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(r)}</p>` : ""}</div>` : "";
161
161
  if (!n)
162
162
  throw new Error("exportFaq requires renderChild function");
163
- const a = o.map(
163
+ const s = i.map(
164
164
  (d) => n(
165
165
  { id: `${t.id}-faq`, type: "faqItem", props: d },
166
166
  p + 1,
@@ -168,51 +168,51 @@ function at(t, p, l, m, n) {
168
168
  m
169
169
  )
170
170
  ).join("");
171
- return `<section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-bg);"><div style="max-width: 800px; margin: 0 auto; padding: 0 1rem;">${s}<div>${a}</div></div></section>`;
171
+ return `<section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-bg);"><div style="max-width: 800px; margin: 0 auto; padding: 0 1rem;">${a}<div>${s}</div></div></section>`;
172
172
  }
173
173
  function dt(t, p, l, m) {
174
- const { title: n, subtitle: i, items: r = [] } = t.props, o = H(t.id || "", "stats-grid"), s = C({ lg: r.length }, 1, 2, r.length), { inlineStyles: a, mediaQueries: d } = B(o, s, "2rem", "text-align: center;"), v = n || i ? `<div style="text-align: center; margin-bottom: 3rem;">${n ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(n)}</h2>` : ""}${i ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(i)}</p>` : ""}</div>` : "", g = r.map(
175
- (y) => `<div style="text-align: center;"><div style="font-size: 3rem; font-weight: 700; color: var(--sg-primary);">${e(y.prefix || "")}${e(y.value)}${e(y.suffix || "")}</div><div style="color: var(--sg-muted-text);">${e(y.label)}</div></div>`
174
+ const { title: n, subtitle: o, items: r = [] } = t.props, i = C(t.id || "", "stats-grid"), a = k({ lg: r.length }, 1, 2, r.length), { inlineStyles: s, mediaQueries: d } = S(i, a, "2rem", "text-align: center;"), u = n || o ? `<div style="text-align: center; margin-bottom: 3rem;">${n ? `<h2 style="font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;">${e(n)}</h2>` : ""}${o ? `<p style="color: var(--sg-muted-text); font-size: 1.125rem;">${e(o)}</p>` : ""}</div>` : "", g = r.map(
175
+ (v) => `<div style="text-align: center;"><div style="font-size: 3rem; font-weight: 700; color: var(--sg-primary);">${e(v.prefix || "")}${e(v.value)}${e(v.suffix || "")}</div><div style="color: var(--sg-muted-text);">${e(v.label)}</div></div>`
176
176
  ).join("");
177
- return `<style>${d}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-surface);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${v}<div id="${o}" style="${a}">${g}</div></div></section>`;
177
+ return `<style>${d}</style><section ${w(t.id)} ${$(t.id)} style="padding: 4rem 0; background-color: var(--sg-surface);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem;">${u}<div id="${i}" style="${s}">${g}</div></div></section>`;
178
178
  }
179
179
  function lt(t, p, l, m) {
180
- const { value: n, label: i, prefix: r, suffix: o } = t.props;
181
- return `<div ${$(t.id)} style="text-align: center;"><div style="font-size: 2.5rem; font-weight: 700; color: var(--sg-primary);">${e(r || "")}${e(n)}${e(o || "")}</div><div style="color: var(--sg-muted-text);">${e(i)}</div></div>`;
180
+ const { value: n, label: o, prefix: r, suffix: i } = t.props;
181
+ return `<div ${$(t.id)} style="text-align: center;"><div style="font-size: 2.5rem; font-weight: 700; color: var(--sg-primary);">${e(r || "")}${e(n)}${e(i || "")}</div><div style="color: var(--sg-muted-text);">${e(o)}</div></div>`;
182
182
  }
183
183
  function mt(t, p, l, m) {
184
- const { title: n, logos: i = [], grayscale: r } = t.props, o = n ? `<p style="color: var(--sg-muted-text); margin-bottom: 2rem;">${e(n)}</p>` : "", s = i.map(
185
- (a) => `<img src="${e(a.src)}" alt="${e(a.alt)}" style="height: 2rem; object-fit: contain; ${r ? "filter: grayscale(100%); opacity: 0.6;" : ""}" />`
184
+ const { title: n, logos: o = [], grayscale: r } = t.props, i = n ? `<p style="color: var(--sg-muted-text); margin-bottom: 2rem;">${e(n)}</p>` : "", a = o.map(
185
+ (s) => `<img src="${e(s.src)}" alt="${e(s.alt)}" style="height: 2rem; object-fit: contain; ${r ? "filter: grayscale(100%); opacity: 0.6;" : ""}" />`
186
186
  ).join("");
187
- return `<section ${w(t.id)} ${$(t.id)} style="padding: 2rem 0; background-color: var(--sg-bg);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem; text-align: center;">${o}<div style="display: flex; justify-content: center; align-items: center; gap: 3rem; flex-wrap: wrap;">${s}</div></div></section>`;
187
+ return `<section ${w(t.id)} ${$(t.id)} style="padding: 2rem 0; background-color: var(--sg-bg);"><div style="max-width: 1200px; margin: 0 auto; padding: 0 1rem; text-align: center;">${i}<div style="display: flex; justify-content: center; align-items: center; gap: 3rem; flex-wrap: wrap;">${a}</div></div></section>`;
188
188
  }
189
189
  function ct(t, p, l, m) {
190
190
  const {
191
191
  links: n = [],
192
- size: i = "md",
192
+ size: o = "md",
193
193
  variant: r = "default"
194
- } = t.props, o = {
194
+ } = t.props, i = {
195
195
  sm: "1.25rem",
196
196
  md: "1.5rem",
197
197
  lg: "2rem"
198
- }, s = o[i] || o.md, a = n.map(
199
- (d) => `<a href="${e(d.url)}" target="_blank" rel="noopener noreferrer" style="display: flex; align-items: center; justify-content: center; width: ${r === "filled" ? `calc(${s} + 0.75rem)` : s}; height: ${r === "filled" ? `calc(${s} + 0.75rem)` : s}; background-color: ${r === "filled" ? "var(--sg-surface)" : "transparent"}; border-radius: ${r === "filled" ? "50%" : "0"}; color: var(--sg-muted-text); text-decoration: none;">[${e(d.platform)}]</a>`
198
+ }, a = i[o] || i.md, s = n.map(
199
+ (d) => `<a href="${e(d.url)}" target="_blank" rel="noopener noreferrer" style="display: flex; align-items: center; justify-content: center; width: ${r === "filled" ? `calc(${a} + 0.75rem)` : a}; height: ${r === "filled" ? `calc(${a} + 0.75rem)` : a}; background-color: ${r === "filled" ? "var(--sg-surface)" : "transparent"}; border-radius: ${r === "filled" ? "50%" : "0"}; color: var(--sg-muted-text); text-decoration: none;">[${e(d.platform)}]</a>`
200
200
  ).join("");
201
- return `<div ${$(t.id)} style="display: flex; gap: 1rem; align-items: center;">${a}</div>`;
201
+ return `<div ${$(t.id)} style="display: flex; gap: 1rem; align-items: center;">${s}</div>`;
202
202
  }
203
203
  export {
204
204
  et as exportCta,
205
- at as exportFaq,
206
- st as exportFaqItem,
205
+ st as exportFaq,
206
+ at as exportFaqItem,
207
207
  Z as exportFeature,
208
208
  tt as exportFeatureGrid,
209
209
  mt as exportLogoCloud,
210
- it as exportPricing,
210
+ ot as exportPricing,
211
211
  rt as exportPricingCard,
212
212
  ct as exportSocialLinks,
213
213
  lt as exportStatItem,
214
214
  dt as exportStats,
215
- ot as exportTestimonial,
215
+ it as exportTestimonial,
216
216
  nt as exportTestimonialGrid
217
217
  };
218
218
  //# sourceMappingURL=MarketingExporters.js.map