@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
@@ -0,0 +1,32 @@
1
+ import { ContentProvider } from '../engine/plugins/types';
2
+ export interface SchoolData {
3
+ id: string;
4
+ name: string;
5
+ slug: string;
6
+ logo_url?: string;
7
+ }
8
+ interface LandingPageViewerProps {
9
+ siteId: string;
10
+ apiBaseUrl: string;
11
+ projectId: string;
12
+ /** Slug da página (ex.: avisos). Se não informado, usa home. */
13
+ pageSlug?: string;
14
+ /** Slug da escola no contexto /site/escola/:schoolSlug */
15
+ schoolSlug?: string;
16
+ /** Dados da escola para header/navbar dinâmico (quando em contexto escola) */
17
+ schoolData?: SchoolData;
18
+ /**
19
+ * Content providers for dynamic pages (e.g., blog posts, products).
20
+ * Supplied by the consumer project to connect plugin data to the viewer.
21
+ */
22
+ contentProviders?: ContentProvider[];
23
+ /**
24
+ * Callback for internal navigation (link clicks inside iframe).
25
+ * Receives the href from clicked links. Consumer should use router navigation.
26
+ */
27
+ onNavigate?: (href: string) => void;
28
+ }
29
+ export declare function LandingPageViewer({ siteId, apiBaseUrl, projectId, pageSlug, schoolSlug, schoolData: _schoolData, // reservado para header/navbar dinâmico (logo, nome da escola)
30
+ contentProviders, onNavigate, }: LandingPageViewerProps): import("react/jsx-runtime").JSX.Element | null;
31
+ export {};
32
+ //# sourceMappingURL=LandingPageViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LandingPageViewer.d.ts","sourceRoot":"","sources":["../../src/viewer/LandingPageViewer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAgB/D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAeD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EAAE,WAAW,EAAE,+DAA+D;AACxF,gBAAgB,EAChB,UAAU,GACX,EAAE,sBAAsB,kDAuXxB"}
@@ -0,0 +1,300 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { useState as H, useRef as B, useCallback as F, useEffect as L } from "react";
3
+ import { matchDynamicPage as W } from "../engine/plugins/dynamicPageResolver.js";
4
+ import { hydratePageWithContent as G } from "../engine/plugins/contentHydration.js";
5
+ import { logger as z } from "../utils/logger.js";
6
+ import { defaultThemeTokens as A } from "../engine/schema/themeTokens.js";
7
+ import { exportPageToHtml as _ } from "../engine/export/exportHtml.js";
8
+ import { createEmptySiteDocument as q } from "../engine/schema/siteDocument.js";
9
+ function J(o) {
10
+ if (!o || typeof o != "string") return !1;
11
+ const r = o.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
12
+ return (r ? r[1].trim() : "").length > 50;
13
+ }
14
+ function K(o) {
15
+ const r = /* @__PURE__ */ new Map();
16
+ if (o)
17
+ for (const h of o)
18
+ r.set(h.type, h);
19
+ return r;
20
+ }
21
+ function re({
22
+ siteId: o,
23
+ apiBaseUrl: r,
24
+ projectId: h,
25
+ pageSlug: n,
26
+ schoolSlug: g,
27
+ schoolData: T,
28
+ // reservado para header/navbar dinâmico (logo, nome da escola)
29
+ contentProviders: c,
30
+ onNavigate: P
31
+ }) {
32
+ const [s, C] = H(null), [w, m] = H(null), [E, f] = H(!0), [V, I] = H(null), [M, y] = H(null), x = B(P);
33
+ x.current = P;
34
+ const D = F((e) => {
35
+ const t = `<script>
36
+ (function() {
37
+ document.addEventListener('click', function(e) {
38
+ var target = e.target;
39
+ var anchor = target;
40
+ while (anchor && anchor.tagName !== 'A') {
41
+ anchor = anchor.parentElement;
42
+ }
43
+ if (anchor && anchor.tagName === 'A') {
44
+ var href = anchor.getAttribute('href') || '';
45
+ if (href && href !== '#' && !href.startsWith('javascript:')) {
46
+ e.preventDefault();
47
+ e.stopPropagation();
48
+ window.parent.postMessage({ type: 'viewer-navigate', href: href }, '*');
49
+ return;
50
+ }
51
+ }
52
+ }, true);
53
+ })();
54
+ <\/script>`;
55
+ return e.includes("</body>") ? e.replace("</body>", `${t}</body>`) : e + t;
56
+ }, []);
57
+ if (L(() => {
58
+ const e = (t) => {
59
+ t.data?.type === "viewer-navigate" && t.data?.href && x.current && x.current(t.data.href);
60
+ };
61
+ return window.addEventListener("message", e), () => window.removeEventListener("message", e);
62
+ }, []), L(() => {
63
+ let e = !1;
64
+ return f(!0), I(null), (async () => {
65
+ try {
66
+ const t = await fetch(
67
+ `${r}/sites/${o}?projectId=${h}`
68
+ );
69
+ if (!t.ok)
70
+ throw new Error("Landing page não encontrada");
71
+ const i = await t.json();
72
+ if (e) return;
73
+ if (i.template) {
74
+ const l = i.template.schemaVersion, j = i.template.pages && Array.isArray(i.template.pages);
75
+ if (l === 2 || l === "2" || j) {
76
+ const u = i.template;
77
+ Array.isArray(u.pages) || (u.pages = []), u.schemaVersion !== 2 && u.schemaVersion !== "2" && (u.schemaVersion = 2), C(u);
78
+ } else
79
+ throw new Error(
80
+ "Formato de template legado não suportado. Por favor, recrie o site."
81
+ );
82
+ } else
83
+ C(null);
84
+ if (i.publishedHtml && J(i.publishedHtml) ? m(i.publishedHtml) : m(null), !i.template && !i.publishedHtml)
85
+ throw new Error("Template não encontrado");
86
+ } catch (t) {
87
+ e || I(
88
+ t instanceof Error ? t.message : "Erro ao carregar landing page"
89
+ );
90
+ } finally {
91
+ e || f(!1);
92
+ }
93
+ })(), () => {
94
+ e = !0;
95
+ };
96
+ }, [o, r, h]), L(() => {
97
+ if (!s) {
98
+ y(null);
99
+ return;
100
+ }
101
+ let e = !1;
102
+ const t = Array.isArray(s.pages) ? s.pages : [], i = K(c);
103
+ if (i.size === 0) {
104
+ y(null);
105
+ return;
106
+ }
107
+ let l, j = {};
108
+ if (n) {
109
+ const d = t.find(
110
+ (p) => p.slug === n || p.id === n
111
+ );
112
+ if (d)
113
+ l = d;
114
+ else {
115
+ const p = W(t, n);
116
+ p && (l = p.page, j = p.params);
117
+ }
118
+ } else
119
+ l = t.find((d) => d.id === "home") ?? t[0];
120
+ if (!l) {
121
+ y(null);
122
+ return;
123
+ }
124
+ const k = !!l.dataSource, u = l.structure?.some(
125
+ (d) => d.type === "blogPostGrid"
126
+ );
127
+ if (!k && !u) {
128
+ y(null);
129
+ return;
130
+ }
131
+ let R = l;
132
+ return !k && u && (R = {
133
+ ...l,
134
+ dataSource: { mode: "list", provider: "blog-posts" }
135
+ }), G(R, i, j).then((d) => {
136
+ if (e) return;
137
+ const p = N(
138
+ d,
139
+ s,
140
+ g,
141
+ t
142
+ );
143
+ y(p ?? null);
144
+ }).catch((d) => {
145
+ e || (z.error("Error hydrating page:", d), y(null));
146
+ }), () => {
147
+ e = !0;
148
+ };
149
+ }, [s, n, c, g]), E)
150
+ return /* @__PURE__ */ a(
151
+ "div",
152
+ {
153
+ style: {
154
+ display: "flex",
155
+ alignItems: "center",
156
+ justifyContent: "center",
157
+ minHeight: "100vh"
158
+ },
159
+ children: /* @__PURE__ */ a("div", { children: "Carregando..." })
160
+ }
161
+ );
162
+ if (V)
163
+ return /* @__PURE__ */ a(
164
+ "div",
165
+ {
166
+ style: {
167
+ display: "flex",
168
+ alignItems: "center",
169
+ justifyContent: "center",
170
+ minHeight: "100vh"
171
+ },
172
+ children: /* @__PURE__ */ a("div", { children: V || "Landing page não encontrada" })
173
+ }
174
+ );
175
+ if (w && (!n || n === "home") && !s)
176
+ return /* @__PURE__ */ a(
177
+ "iframe",
178
+ {
179
+ srcDoc: D(w),
180
+ title: "Site publicado",
181
+ style: {
182
+ width: "100%",
183
+ minHeight: "100vh",
184
+ border: "none",
185
+ backgroundColor: "#ffffff"
186
+ }
187
+ }
188
+ );
189
+ if (!s)
190
+ return null;
191
+ const v = Array.isArray(s.pages) ? s.pages : [];
192
+ if (v.length === 0)
193
+ return /* @__PURE__ */ a(
194
+ "div",
195
+ {
196
+ style: {
197
+ display: "flex",
198
+ alignItems: "center",
199
+ justifyContent: "center",
200
+ minHeight: "100vh",
201
+ padding: "2rem",
202
+ textAlign: "center"
203
+ },
204
+ children: /* @__PURE__ */ a("div", { children: "Nenhuma página no site. Adicione páginas no editor." })
205
+ }
206
+ );
207
+ if (M)
208
+ return /* @__PURE__ */ a(
209
+ "iframe",
210
+ {
211
+ srcDoc: D(M),
212
+ title: "Site",
213
+ style: {
214
+ width: "100%",
215
+ minHeight: "100vh",
216
+ border: "none",
217
+ backgroundColor: "#ffffff"
218
+ }
219
+ }
220
+ );
221
+ let b = (n ? v.find((e) => e.slug === n || e.id === n) : null) ?? null;
222
+ if (!b && n) {
223
+ const e = W(v, n);
224
+ e && (b = e.page);
225
+ }
226
+ if (b || (b = v.find((e) => e.id === "home") ?? v[0]), !b)
227
+ return /* @__PURE__ */ a(
228
+ "div",
229
+ {
230
+ style: {
231
+ display: "flex",
232
+ alignItems: "center",
233
+ justifyContent: "center",
234
+ minHeight: "100vh"
235
+ },
236
+ children: /* @__PURE__ */ a("div", { children: "Página não encontrada" })
237
+ }
238
+ );
239
+ const $ = N(b, s, g, v);
240
+ return $ ? /* @__PURE__ */ a(
241
+ "iframe",
242
+ {
243
+ srcDoc: D($),
244
+ title: "Site",
245
+ style: {
246
+ width: "100%",
247
+ minHeight: "100vh",
248
+ border: "none",
249
+ backgroundColor: "#ffffff"
250
+ }
251
+ }
252
+ ) : /* @__PURE__ */ a(
253
+ "div",
254
+ {
255
+ style: {
256
+ minHeight: "100vh",
257
+ display: "flex",
258
+ alignItems: "center",
259
+ justifyContent: "center",
260
+ padding: "2rem",
261
+ textAlign: "center"
262
+ },
263
+ children: /* @__PURE__ */ a("div", { children: "Conteúdo da página vazio. Adicione blocos no editor." })
264
+ }
265
+ );
266
+ }
267
+ function N(o, r, h, n) {
268
+ const g = {
269
+ ...o,
270
+ structure: Array.isArray(o.structure) ? o.structure : []
271
+ }, T = q(""), c = r.theme && typeof r.theme == "object" ? r.theme : null, P = c ? {
272
+ ...A,
273
+ ...c,
274
+ colors: c.colors && typeof c.colors == "object" ? { ...A.colors, ...c.colors } : A.colors,
275
+ typography: c.typography && typeof c.typography == "object" ? { ...A.typography, ...c.typography } : A.typography
276
+ } : T.theme, s = {
277
+ ...r,
278
+ schemaVersion: 2,
279
+ theme: P
280
+ }, C = h ? `/site/escola/${h}` : "/site", w = n ?? r.pages, m = w.find((f) => f.id === "home") ?? w[0], E = m && m.id !== g.id ? {
281
+ ...m,
282
+ structure: Array.isArray(m.structure) ? m.structure : []
283
+ } : void 0;
284
+ try {
285
+ const f = _(
286
+ g,
287
+ s,
288
+ !0,
289
+ C,
290
+ E ? { layoutFromPage: E } : void 0
291
+ );
292
+ return !f || !f.trim() ? null : f;
293
+ } catch (f) {
294
+ return z.error("Error generating HTML:", f), null;
295
+ }
296
+ }
297
+ export {
298
+ re as LandingPageViewer
299
+ };
300
+ //# sourceMappingURL=LandingPageViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LandingPageViewer.js","sources":["../../src/viewer/LandingPageViewer.tsx"],"sourcesContent":["/**\n * Landing Page Viewer\n * Visualização pública da landing page.\n * Usa o mesmo mecanismo do Preview (editor): exportPageToHtml + iframe srcdoc.\n *\n * Supports dynamic pages via ContentProvider (Sprint 3):\n * - Optional `contentProviders` prop allows consumer to supply data providers\n * - Dynamic page resolution (e.g., \"blog/:slug\")\n * - Automatic content hydration before rendering\n */\n\nimport { useState, useEffect, useRef, useCallback } from \"react\";\nimport {\n SiteDocument,\n SitePage,\n exportPageToHtml,\n createEmptySiteDocument,\n defaultThemeTokens,\n} from \"../engine\";\nimport type { ContentProvider } from \"../engine/plugins/types\";\nimport { matchDynamicPage } from \"../engine/plugins/dynamicPageResolver\";\nimport {\n hydratePageWithContent,\n type ContentProviderMap,\n} from \"../engine/plugins/contentHydration\";\nimport { logger } from \"../utils/logger\";\n\n/** Verifica se o HTML tem conteúdo real no body (evita usar publishedHtml vazio) */\nfunction hasBodyContent(html: string): boolean {\n if (!html || typeof html !== \"string\") return false;\n const match = html.match(/<body[^>]*>([\\s\\S]*?)<\\/body>/i);\n const bodyInner = match ? match[1].trim() : \"\";\n return bodyInner.length > 50;\n}\n\nexport interface SchoolData {\n id: string;\n name: string;\n slug: string;\n logo_url?: string;\n}\n\ninterface LandingPageViewerProps {\n siteId: string;\n apiBaseUrl: string;\n projectId: string;\n /** Slug da página (ex.: avisos). Se não informado, usa home. */\n pageSlug?: string;\n /** Slug da escola no contexto /site/escola/:schoolSlug */\n schoolSlug?: string;\n /** Dados da escola para header/navbar dinâmico (quando em contexto escola) */\n schoolData?: SchoolData;\n /**\n * Content providers for dynamic pages (e.g., blog posts, products).\n * Supplied by the consumer project to connect plugin data to the viewer.\n */\n contentProviders?: ContentProvider[];\n /**\n * Callback for internal navigation (link clicks inside iframe).\n * Receives the href from clicked links. Consumer should use router navigation.\n */\n onNavigate?: (href: string) => void;\n}\n\n/**\n * Builds a ContentProviderMap from an array of providers.\n */\nfunction buildProviderMap(providers?: ContentProvider[]): ContentProviderMap {\n const map: ContentProviderMap = new Map();\n if (providers) {\n for (const p of providers) {\n map.set(p.type, p);\n }\n }\n return map;\n}\n\nexport function LandingPageViewer({\n siteId,\n apiBaseUrl,\n projectId,\n pageSlug,\n schoolSlug,\n schoolData: _schoolData, // reservado para header/navbar dinâmico (logo, nome da escola)\n contentProviders,\n onNavigate,\n}: LandingPageViewerProps) {\n const [document, setDocument] = useState<SiteDocument | null>(null);\n const [publishedHtml, setPublishedHtml] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [hydratedHtml, setHydratedHtml] = useState<string | null>(null);\n\n const onNavigateRef = useRef(onNavigate);\n onNavigateRef.current = onNavigate;\n\n // Inject click interceptor into iframe HTML so link clicks propagate to parent\n const injectClickInterceptor = useCallback((html: string): string => {\n const script = `<script>\n(function() {\n document.addEventListener('click', function(e) {\n var target = e.target;\n var anchor = target;\n while (anchor && anchor.tagName !== 'A') {\n anchor = anchor.parentElement;\n }\n if (anchor && anchor.tagName === 'A') {\n var href = anchor.getAttribute('href') || '';\n if (href && href !== '#' && !href.startsWith('javascript:')) {\n e.preventDefault();\n e.stopPropagation();\n window.parent.postMessage({ type: 'viewer-navigate', href: href }, '*');\n return;\n }\n }\n }, true);\n})();\n</script>`;\n if (html.includes(\"</body>\")) {\n return html.replace(\"</body>\", `${script}</body>`);\n }\n return html + script;\n }, []);\n\n // Listen for navigation messages from iframe\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === \"viewer-navigate\" && event.data?.href) {\n if (onNavigateRef.current) {\n onNavigateRef.current(event.data.href);\n }\n }\n };\n window.addEventListener(\"message\", handleMessage);\n return () => window.removeEventListener(\"message\", handleMessage);\n }, []);\n\n // Load site document from API. Uses stale flag to prevent\n // React Strict Mode double-mount from causing duplicate state updates.\n useEffect(() => {\n let stale = false;\n\n setIsLoading(true);\n setError(null);\n\n (async () => {\n try {\n const response = await fetch(\n `${apiBaseUrl}/sites/${siteId}?projectId=${projectId}`,\n );\n if (!response.ok) {\n throw new Error(\"Landing page não encontrada\");\n }\n\n const data = await response.json();\n if (stale) return;\n\n if (data.template) {\n const schemaVersion = data.template.schemaVersion;\n const hasPages =\n data.template.pages && Array.isArray(data.template.pages);\n const isV2 =\n schemaVersion === 2 || schemaVersion === \"2\" || hasPages;\n\n if (isV2) {\n const template = data.template as SiteDocument;\n if (!Array.isArray(template.pages)) {\n template.pages = [];\n }\n if (\n template.schemaVersion !== 2 &&\n template.schemaVersion !== \"2\"\n ) {\n template.schemaVersion = 2;\n }\n setDocument(template);\n } else {\n throw new Error(\n \"Formato de template legado não suportado. Por favor, recrie o site.\",\n );\n }\n } else {\n setDocument(null);\n }\n\n if (data.publishedHtml && hasBodyContent(data.publishedHtml)) {\n setPublishedHtml(data.publishedHtml);\n } else {\n setPublishedHtml(null);\n }\n\n if (!data.template && !data.publishedHtml) {\n throw new Error(\"Template não encontrado\");\n }\n } catch (err) {\n if (!stale) {\n setError(\n err instanceof Error\n ? err.message\n : \"Erro ao carregar landing page\",\n );\n }\n } finally {\n if (!stale) {\n setIsLoading(false);\n }\n }\n })();\n\n return () => {\n stale = true;\n };\n }, [siteId, apiBaseUrl, projectId]);\n\n // Hydrate pages when document + contentProviders are available.\n // Supports both: pages with explicit dataSource AND pages with blogPostGrid blocks.\n // Does NOT reset hydratedHtml at the start to avoid flash of mock data.\n // Only clears it when navigating to a page that doesn't need hydration.\n useEffect(() => {\n if (!document) {\n setHydratedHtml(null);\n return;\n }\n\n let stale = false;\n\n const pages = Array.isArray(document.pages) ? document.pages : [];\n const providerMap = buildProviderMap(contentProviders);\n\n if (providerMap.size === 0) {\n setHydratedHtml(null);\n return;\n }\n\n // Resolve the current page\n let resolvedPage: SitePage | undefined;\n let urlParams: Record<string, string> = {};\n\n if (pageSlug) {\n const exactPage = pages.find(\n (p) => p.slug === pageSlug || p.id === pageSlug,\n );\n if (exactPage) {\n resolvedPage = exactPage;\n } else {\n const match = matchDynamicPage(pages, pageSlug);\n if (match) {\n resolvedPage = match.page;\n urlParams = match.params;\n }\n }\n } else {\n resolvedPage = pages.find((p) => p.id === \"home\") ?? pages[0];\n }\n\n if (!resolvedPage) {\n setHydratedHtml(null);\n return;\n }\n\n // Check if page needs hydration:\n // 1. Has explicit dataSource (blog page, blog-post page)\n // 2. Has blogPostGrid blocks but no dataSource (home page with blog widget)\n const hasDataSource = !!resolvedPage.dataSource;\n const hasBlogBlocks = resolvedPage.structure?.some(\n (b) => b.type === \"blogPostGrid\",\n );\n\n if (!hasDataSource && !hasBlogBlocks) {\n setHydratedHtml(null);\n return;\n }\n\n // For pages without dataSource but with blog blocks, create synthetic dataSource\n let pageToHydrate = resolvedPage;\n if (!hasDataSource && hasBlogBlocks) {\n pageToHydrate = {\n ...resolvedPage,\n dataSource: { mode: \"list\" as const, provider: \"blog-posts\" },\n };\n }\n\n hydratePageWithContent(pageToHydrate, providerMap, urlParams)\n .then((hydratedPage) => {\n if (stale) return;\n const html = renderPageToHtml(\n hydratedPage,\n document,\n schoolSlug,\n pages,\n );\n setHydratedHtml(html ?? null);\n })\n .catch((err) => {\n if (!stale) {\n logger.error(\"Error hydrating page:\", err);\n setHydratedHtml(null);\n }\n });\n\n return () => {\n stale = true;\n };\n }, [document, pageSlug, contentProviders, schoolSlug]);\n\n if (isLoading) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: \"100vh\",\n }}\n >\n <div>Carregando...</div>\n </div>\n );\n }\n\n if (error) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: \"100vh\",\n }}\n >\n <div>{error || \"Landing page não encontrada\"}</div>\n </div>\n );\n }\n\n // Preferir renderização via template (client-side) quando disponível.\n // Isso garante que o viewer usa exatamente o mesmo exportPageToHtml() do editor,\n // evitando diferenças de hover effects, CSS, etc. entre editor e site publicado.\n // publishedHtml do servidor é usado apenas como fallback quando não há template.\n const isHomeRoute = !pageSlug || pageSlug === \"home\";\n if (publishedHtml && isHomeRoute && !document) {\n return (\n <iframe\n srcDoc={injectClickInterceptor(publishedHtml)}\n title=\"Site publicado\"\n style={{\n width: \"100%\",\n minHeight: \"100vh\",\n border: \"none\",\n backgroundColor: \"#ffffff\",\n }}\n />\n );\n }\n\n // Renderizar documento (template) — mesmo pipeline do editor\n if (!document) {\n return null;\n }\n\n // Garantir que pages seja array (evita crash se API retornar formato inesperado)\n const pages = Array.isArray(document.pages) ? document.pages : [];\n\n if (pages.length === 0) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: \"100vh\",\n padding: \"2rem\",\n textAlign: \"center\",\n }}\n >\n <div>Nenhuma página no site. Adicione páginas no editor.</div>\n </div>\n );\n }\n\n // If we have hydrated HTML from ContentProvider, use it\n if (hydratedHtml) {\n return (\n <iframe\n srcDoc={injectClickInterceptor(hydratedHtml)}\n title=\"Site\"\n style={{\n width: \"100%\",\n minHeight: \"100vh\",\n border: \"none\",\n backgroundColor: \"#ffffff\",\n }}\n />\n );\n }\n\n // Resolver página por slug ou id; fallback para home\n // Also try dynamic page resolution\n let page =\n (pageSlug\n ? pages.find((p) => p.slug === pageSlug || p.id === pageSlug)\n : null) ??\n null;\n\n if (!page && pageSlug) {\n const match = matchDynamicPage(pages, pageSlug);\n if (match) {\n page = match.page;\n }\n }\n\n if (!page) {\n page = pages.find((p) => p.id === \"home\") ?? pages[0];\n }\n\n if (!page) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n minHeight: \"100vh\",\n }}\n >\n <div>Página não encontrada</div>\n </div>\n );\n }\n\n const html = renderPageToHtml(page, document, schoolSlug, pages);\n if (!html) {\n return (\n <div\n style={{\n minHeight: \"100vh\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"2rem\",\n textAlign: \"center\",\n }}\n >\n <div>Conteúdo da página vazio. Adicione blocos no editor.</div>\n </div>\n );\n }\n\n // Mesmo mecanismo do Preview (editor): iframe com srcdoc = HTML completo\n return (\n <iframe\n srcDoc={injectClickInterceptor(html)}\n title=\"Site\"\n style={{\n width: \"100%\",\n minHeight: \"100vh\",\n border: \"none\",\n backgroundColor: \"#ffffff\",\n }}\n />\n );\n}\n\n/**\n * Generates HTML from a page using the standard export pipeline.\n * Extracted to reuse for both static and hydrated pages.\n */\nfunction renderPageToHtml(\n page: SitePage,\n document: SiteDocument,\n schoolSlug?: string,\n allPages?: SitePage[],\n): string | null {\n // Garantir structure para o export (evita erro se página vier sem structure)\n const pageWithStructure = {\n ...page,\n structure: Array.isArray(page.structure) ? page.structure : [],\n };\n\n // Garantir theme completo para o export (merge com default evita theme parcial quebrar CSS)\n const defaultDoc = createEmptySiteDocument(\"\");\n const rawTheme =\n document.theme && typeof document.theme === \"object\"\n ? document.theme\n : null;\n const theme = rawTheme\n ? {\n ...defaultThemeTokens,\n ...rawTheme,\n colors:\n rawTheme.colors && typeof rawTheme.colors === \"object\"\n ? { ...defaultThemeTokens.colors, ...rawTheme.colors }\n : defaultThemeTokens.colors,\n typography:\n rawTheme.typography && typeof rawTheme.typography === \"object\"\n ? { ...defaultThemeTokens.typography, ...rawTheme.typography }\n : defaultThemeTokens.typography,\n }\n : defaultDoc.theme;\n\n const documentWithTheme: SiteDocument = {\n ...document,\n schemaVersion: 2,\n theme,\n };\n\n // basePath para links (ex.: /site ou /site/escola/:slug)\n const basePath = schoolSlug ? `/site/escola/${schoolSlug}` : \"/site\";\n\n const pages = allPages ?? document.pages;\n const homePage = pages.find((p) => p.id === \"home\") ?? pages[0];\n const layoutFromPage =\n homePage && homePage.id !== pageWithStructure.id\n ? {\n ...homePage,\n structure: Array.isArray(homePage.structure)\n ? homePage.structure\n : [],\n }\n : undefined;\n\n try {\n const html = exportPageToHtml(\n pageWithStructure,\n documentWithTheme,\n true,\n basePath,\n layoutFromPage ? { layoutFromPage } : undefined,\n );\n\n if (!html || !html.trim()) {\n return null;\n }\n\n return html;\n } catch (err) {\n logger.error(\"Error generating HTML:\", err);\n return null;\n }\n}\n"],"names":["hasBodyContent","html","match","buildProviderMap","providers","map","p","LandingPageViewer","siteId","apiBaseUrl","projectId","pageSlug","schoolSlug","_schoolData","contentProviders","onNavigate","document","setDocument","useState","publishedHtml","setPublishedHtml","isLoading","setIsLoading","error","setError","hydratedHtml","setHydratedHtml","onNavigateRef","useRef","injectClickInterceptor","useCallback","script","useEffect","handleMessage","event","stale","response","data","schemaVersion","hasPages","template","err","pages","providerMap","resolvedPage","urlParams","exactPage","matchDynamicPage","hasDataSource","hasBlogBlocks","b","pageToHydrate","hydratePageWithContent","hydratedPage","renderPageToHtml","logger","jsx","page","allPages","pageWithStructure","defaultDoc","createEmptySiteDocument","rawTheme","theme","defaultThemeTokens","documentWithTheme","basePath","homePage","layoutFromPage","exportPageToHtml"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brunoalz/smartgesti-site-editor",
3
- "version": "0.2.2",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Site editor component for SmartGesti platform",
@@ -23,6 +23,13 @@
23
23
  "dist",
24
24
  "README.md"
25
25
  ],
26
+ "sideEffects": [
27
+ "*.css",
28
+ "./src/engine/registry/blocks/**",
29
+ "./src/engine/render/renderers/**",
30
+ "./src/engine/export/exporters/**",
31
+ "./src/engine/plugins/builtin/**"
32
+ ],
26
33
  "main": "./dist/index.js",
27
34
  "types": "./dist/index.d.ts",
28
35
  "exports": {
@@ -53,7 +60,7 @@
53
60
  "build": "vite build",
54
61
  "dev": "vite build --watch",
55
62
  "demo": "vite",
56
- "lint": "eslint . --ext ts,tsx",
63
+ "lint": "eslint .",
57
64
  "prepublishOnly": "npm run build",
58
65
  "version:patch": "npm version patch && git push && git push --tags && npm publish",
59
66
  "version:minor": "npm version minor && git push && git push --tags && npm publish",
@@ -64,12 +71,9 @@
64
71
  "@dnd-kit/sortable": "^8.0.0",
65
72
  "@dnd-kit/utilities": "^3.2.2",
66
73
  "@vanilla-extract/css": "^1.18.0",
67
- "@vanilla-extract/vite-plugin": "^5.1.4",
68
74
  "clsx": "^2.1.1",
69
75
  "lucide-react": "^0.447.0",
70
- "react": "^19.0.0",
71
76
  "react-colorful": "^5.6.1",
72
- "react-dom": "^19.0.0",
73
77
  "tailwind-merge": "^2.6.0"
74
78
  },
75
79
  "devDependencies": {
@@ -77,6 +81,7 @@
77
81
  "@types/react-dom": "^19.0.0",
78
82
  "@typescript-eslint/eslint-plugin": "^8.50.1",
79
83
  "@typescript-eslint/parser": "^8.50.1",
84
+ "@vanilla-extract/vite-plugin": "^5.1.4",
80
85
  "@vitejs/plugin-react": "^5.1.2",
81
86
  "eslint": "^9.15.0",
82
87
  "eslint-plugin-react-hooks": "^5.0.0",
@@ -1,3 +0,0 @@
1
- import { ComponentDefinition } from '../../types';
2
- export declare const componentDefinitions: ComponentDefinition[];
3
- //# sourceMappingURL=definitions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/components/ComponentPalette/definitions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAyMrD,CAAA"}
@@ -1,206 +0,0 @@
1
- const e = [
2
- {
3
- type: "hero",
4
- name: "Hero",
5
- category: "content",
6
- defaultProps: {
7
- heroTitle: "Título Principal",
8
- heroSubtitle: "Subtítulo",
9
- heroImage: "",
10
- buttonText: "Saiba Mais"
11
- },
12
- defaultStyles: {},
13
- editableProps: ["heroTitle", "heroSubtitle", "heroImage", "buttonText", "heroWelcome", "heroSpecialty"],
14
- editableStyles: ["heroTitleColor", "heroSubtitleColor", "heroWelcomeColor", "heroSpecialtyColor"]
15
- },
16
- {
17
- type: "navbar",
18
- name: "Navbar",
19
- category: "layout",
20
- defaultProps: {
21
- logoText: "Logo",
22
- menuItems: []
23
- },
24
- defaultStyles: {},
25
- editableProps: ["logoText", "menuItems"],
26
- editableStyles: ["navbarColor", "navbarTextColor"]
27
- },
28
- {
29
- type: "about",
30
- name: "Sobre",
31
- category: "content",
32
- defaultProps: {
33
- title: "Sobre Mim",
34
- content: "Texto sobre você...",
35
- image: ""
36
- },
37
- defaultStyles: {},
38
- editableProps: ["title", "content", "image"],
39
- editableStyles: ["backgroundColor", "textColor"]
40
- },
41
- {
42
- type: "gallery",
43
- name: "Galeria",
44
- category: "content",
45
- defaultProps: {
46
- title: "Galeria",
47
- items: []
48
- },
49
- defaultStyles: {},
50
- editableProps: ["title", "items"],
51
- editableStyles: ["backgroundColor"]
52
- },
53
- {
54
- type: "services",
55
- name: "Serviços",
56
- category: "content",
57
- defaultProps: {
58
- title: "Serviços",
59
- items: []
60
- },
61
- defaultStyles: {},
62
- editableProps: ["title", "items"],
63
- editableStyles: ["backgroundColor"]
64
- },
65
- {
66
- type: "testimonials",
67
- name: "Depoimentos",
68
- category: "content",
69
- defaultProps: {
70
- title: "Depoimentos",
71
- items: []
72
- },
73
- defaultStyles: {},
74
- editableProps: ["title", "items"],
75
- editableStyles: ["backgroundColor"]
76
- },
77
- {
78
- type: "contact",
79
- name: "Contato",
80
- category: "content",
81
- defaultProps: {
82
- title: "Entre em Contato",
83
- phone: "",
84
- email: "",
85
- address: ""
86
- },
87
- defaultStyles: {},
88
- editableProps: ["title", "phone", "email", "address"],
89
- editableStyles: ["backgroundColor"]
90
- },
91
- {
92
- type: "footer",
93
- name: "Rodapé",
94
- category: "layout",
95
- defaultProps: {
96
- copyright: "© 2024 Todos os direitos reservados",
97
- links: []
98
- },
99
- defaultStyles: {},
100
- editableProps: ["copyright", "links"],
101
- editableStyles: ["backgroundColor", "textColor"]
102
- },
103
- {
104
- type: "section",
105
- name: "Seção",
106
- category: "layout",
107
- defaultProps: {},
108
- defaultStyles: {},
109
- editableProps: [],
110
- editableStyles: ["backgroundColor", "padding"]
111
- },
112
- {
113
- type: "text",
114
- name: "Texto",
115
- category: "content",
116
- defaultProps: {
117
- content: "Digite seu texto aqui..."
118
- },
119
- defaultStyles: {},
120
- editableProps: ["content"],
121
- editableStyles: ["fontSize", "fontWeight", "textColor"]
122
- },
123
- {
124
- type: "heading",
125
- name: "Título",
126
- category: "content",
127
- defaultProps: {
128
- text: "Título",
129
- level: 2
130
- },
131
- defaultStyles: {},
132
- editableProps: ["text", "level"],
133
- editableStyles: ["fontSize", "fontWeight", "textColor"]
134
- },
135
- {
136
- type: "image",
137
- name: "Imagem",
138
- category: "media",
139
- defaultProps: {
140
- src: "",
141
- alt: ""
142
- },
143
- defaultStyles: {},
144
- editableProps: ["src", "alt"],
145
- editableStyles: ["width", "height", "objectFit"]
146
- },
147
- {
148
- type: "button",
149
- name: "Botão",
150
- category: "content",
151
- defaultProps: {
152
- text: "Clique aqui",
153
- href: "#"
154
- },
155
- defaultStyles: {},
156
- editableProps: ["text", "href"],
157
- editableStyles: ["backgroundColor", "textColor", "padding"]
158
- },
159
- {
160
- type: "grid",
161
- name: "Grid",
162
- category: "layout",
163
- defaultProps: {
164
- columns: 3
165
- },
166
- defaultStyles: {},
167
- editableProps: ["columns"],
168
- editableStyles: ["gap"]
169
- },
170
- {
171
- type: "card",
172
- name: "Card",
173
- category: "content",
174
- defaultProps: {
175
- title: "Título do Card",
176
- content: "Conteúdo do card"
177
- },
178
- defaultStyles: {},
179
- editableProps: ["title", "content"],
180
- editableStyles: ["backgroundColor", "borderRadius", "padding"]
181
- },
182
- {
183
- type: "spacer",
184
- name: "Espaçador",
185
- category: "layout",
186
- defaultProps: {
187
- height: 40
188
- },
189
- defaultStyles: {},
190
- editableProps: ["height"],
191
- editableStyles: []
192
- },
193
- {
194
- type: "divider",
195
- name: "Divisor",
196
- category: "layout",
197
- defaultProps: {},
198
- defaultStyles: {},
199
- editableProps: [],
200
- editableStyles: ["borderColor", "borderWidth"]
201
- }
202
- ];
203
- export {
204
- e as componentDefinitions
205
- };
206
- //# sourceMappingURL=definitions.js.map