@brunoalz/smartgesti-site-editor 1.4.2 → 1.5.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 (61) hide show
  1. package/dist/editor/BlockSelector.js +4 -2
  2. package/dist/editor/BlockSelector.js.map +1 -1
  3. package/dist/engine/export/exporters/layout/GridExporter.d.ts.map +1 -1
  4. package/dist/engine/export/exporters/layout/GridExporter.js +29 -12
  5. package/dist/engine/export/exporters/layout/GridExporter.js.map +1 -1
  6. package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts +2 -0
  7. package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts.map +1 -1
  8. package/dist/engine/export/exporters/sections/BlogPostExporters.js +183 -119
  9. package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -1
  10. package/dist/engine/export/exporters/sections/index.d.ts.map +1 -1
  11. package/dist/engine/export/exporters/sections/index.js +26 -24
  12. package/dist/engine/export/exporters/sections/index.js.map +1 -1
  13. package/dist/engine/index.js +97 -95
  14. package/dist/engine/index.js.map +1 -1
  15. package/dist/engine/plugins/builtin/blog/manifest.d.ts.map +1 -1
  16. package/dist/engine/plugins/builtin/blog/manifest.js +160 -72
  17. package/dist/engine/plugins/builtin/blog/manifest.js.map +1 -1
  18. package/dist/engine/plugins/contentHydration.js +144 -68
  19. package/dist/engine/plugins/contentHydration.js.map +1 -1
  20. package/dist/engine/registry/blocks/layout/grid.d.ts.map +1 -1
  21. package/dist/engine/registry/blocks/layout/grid.js +10 -4
  22. package/dist/engine/registry/blocks/layout/grid.js.map +1 -1
  23. package/dist/engine/registry/blocks/sections/blogRecentPosts.d.ts +3 -0
  24. package/dist/engine/registry/blocks/sections/blogRecentPosts.d.ts.map +1 -0
  25. package/dist/engine/registry/blocks/sections/blogRecentPosts.js +29 -0
  26. package/dist/engine/registry/blocks/sections/blogRecentPosts.js.map +1 -0
  27. package/dist/engine/registry/blocks/sections/blogTagCloud.d.ts +3 -0
  28. package/dist/engine/registry/blocks/sections/blogTagCloud.d.ts.map +1 -0
  29. package/dist/engine/registry/blocks/sections/blogTagCloud.js +31 -0
  30. package/dist/engine/registry/blocks/sections/blogTagCloud.js.map +1 -0
  31. package/dist/engine/registry/blocks/sections/index.d.ts +2 -0
  32. package/dist/engine/registry/blocks/sections/index.d.ts.map +1 -1
  33. package/dist/engine/render/renderers/layout/GridRenderer.d.ts.map +1 -1
  34. package/dist/engine/render/renderers/layout/GridRenderer.js +21 -18
  35. package/dist/engine/render/renderers/layout/GridRenderer.js.map +1 -1
  36. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.d.ts.map +1 -1
  37. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js +66 -47
  38. package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js.map +1 -1
  39. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.d.ts.map +1 -1
  40. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.js +175 -32
  41. package/dist/engine/render/renderers/sections/BlogPostGridRenderer.js.map +1 -1
  42. package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.d.ts +3 -0
  43. package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.d.ts.map +1 -0
  44. package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.js +148 -0
  45. package/dist/engine/render/renderers/sections/BlogRecentPostsRenderer.js.map +1 -0
  46. package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.d.ts +3 -0
  47. package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.d.ts.map +1 -0
  48. package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.js +134 -0
  49. package/dist/engine/render/renderers/sections/BlogTagCloudRenderer.js.map +1 -0
  50. package/dist/engine/render/renderers/sections/index.js +20 -16
  51. package/dist/engine/render/renderers/sections/index.js.map +1 -1
  52. package/dist/engine/schema/siteDocument.d.ts +57 -2
  53. package/dist/engine/schema/siteDocument.d.ts.map +1 -1
  54. package/dist/engine/schema/siteDocument.js.map +1 -1
  55. package/dist/index.d.ts +1 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +108 -106
  58. package/dist/index.js.map +1 -1
  59. package/dist/viewer/LandingPageViewer.js +11 -11
  60. package/dist/viewer/LandingPageViewer.js.map +1 -1
  61. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BlogPostExporters.js","sources":["../../../../../src/engine/export/exporters/sections/BlogPostExporters.ts"],"sourcesContent":["/**\n * Blog Post Exporters\n * BlogPostCard, BlogPostGrid, BlogPostDetail\n * Mobile-first responsive layouts for blog plugin blocks\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { dataBlockIdAttr, escapeHtml } from \"../../shared/htmlHelpers\";\nimport { generateScopedId } from \"../../shared/idGenerator\";\nimport {\n resolveResponsiveColumns,\n generateResponsiveGridStyles,\n} from \"../../shared/responsiveGridHelper\";\n\n// ---------------------------------------------------------------------------\n// BlogPostCard\n// ---------------------------------------------------------------------------\n\nexport function exportBlogPostCard(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n title,\n excerpt,\n image,\n date,\n category,\n authorName,\n authorAvatar,\n readingTime,\n linkHref,\n linkText,\n variant = \"default\",\n showImage = true,\n showCategory = true,\n showDate = true,\n showAuthor = false,\n showReadingTime = false,\n } = (block as any).props;\n\n // ---------- variant: horizontal ----------\n if (variant === \"horizontal\") {\n const imgHtml =\n showImage && image\n ? `<div style=\"width: 260px; min-height: 180px; flex-shrink: 0; background-image: url(${escapeHtml(image)}); background-size: cover; background-position: center;\"></div>`\n : \"\";\n\n const metaParts: string[] = [];\n if (showCategory && category) metaParts.push(escapeHtml(category));\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"font-size: 0.75rem; color: var(--sg-muted-text); margin-bottom: 0.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n const authorHtml =\n showAuthor && authorName\n ? `<div style=\"display: flex; align-items: center; gap: 0.5rem; margin-top: auto; padding-top: 0.75rem;\">${\n authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${escapeHtml(authorName)}\" style=\"width: 28px; height: 28px; border-radius: 50%; object-fit: cover;\" />`\n : \"\"\n }<span style=\"font-size: 0.8rem; color: var(--sg-muted-text);\">${escapeHtml(authorName)}</span></div>`\n : \"\";\n\n const linkHtml = linkText\n ? `<a href=\"${escapeHtml(linkHref || \"#\")}\" style=\"color: var(--sg-primary); font-weight: 500; text-decoration: none; font-size: 0.875rem;\">${escapeHtml(linkText)}</a>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-card\" style=\"display: flex; background-color: var(--sg-bg); border-radius: var(--sg-card-radius); overflow: hidden; box-shadow: var(--sg-card-shadow);\" data-variant=\"horizontal\">${imgHtml}<div style=\"padding: 1.25rem; display: flex; flex-direction: column; flex: 1;\">${metaHtml}<h3 style=\"font-size: 1.125rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(title)}</h3>${excerpt ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 0.75rem;\">${escapeHtml(excerpt)}</p>` : \"\"}${linkHtml}${authorHtml}</div></article>`;\n }\n\n // ---------- variant: minimal ----------\n if (variant === \"minimal\") {\n const metaParts: string[] = [];\n if (showCategory && category) metaParts.push(escapeHtml(category));\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"font-size: 0.75rem; color: var(--sg-muted-text); margin-bottom: 0.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n const linkHtml = linkText\n ? `<a href=\"${escapeHtml(linkHref || \"#\")}\" style=\"color: var(--sg-primary); font-weight: 500; text-decoration: none; font-size: 0.875rem;\">${escapeHtml(linkText)}</a>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-card\" style=\"padding: 1.25rem 0; border-bottom: 1px solid var(--sg-border, #e5e7eb);\" data-variant=\"minimal\">${metaHtml}<h3 style=\"font-size: 1.125rem; font-weight: 600; margin-bottom: 0.25rem;\">${escapeHtml(title)}</h3>${excerpt ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 0.5rem;\">${escapeHtml(excerpt)}</p>` : \"\"}${linkHtml}</article>`;\n }\n\n // ---------- variant: default ----------\n const imgHtml =\n showImage && image\n ? `<div style=\"height: 200px; background-image: url(${escapeHtml(image)}); background-size: cover; background-position: center;\"></div>`\n : \"\";\n\n const metaParts: string[] = [];\n if (showCategory && category) metaParts.push(escapeHtml(category));\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"font-size: 0.75rem; color: var(--sg-muted-text); margin-bottom: 0.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n const authorHtml =\n showAuthor && authorName\n ? `<div style=\"display: flex; align-items: center; gap: 0.5rem; margin-top: 1rem;\">${\n authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${escapeHtml(authorName)}\" style=\"width: 32px; height: 32px; border-radius: 50%; object-fit: cover;\" />`\n : \"\"\n }<span style=\"font-size: 0.8rem; color: var(--sg-muted-text);\">${escapeHtml(authorName)}</span></div>`\n : \"\";\n\n const linkHtml = linkText\n ? `<a href=\"${escapeHtml(linkHref || \"#\")}\" style=\"color: var(--sg-primary); font-weight: 500; text-decoration: none; font-size: 0.875rem;\">${escapeHtml(linkText)}</a>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-card\" style=\"background-color: var(--sg-bg); border-radius: var(--sg-card-radius); overflow: hidden; box-shadow: var(--sg-card-shadow);\" data-variant=\"default\">${imgHtml}<div style=\"padding: 1.5rem;\">${metaHtml}<h3 style=\"font-size: 1.125rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(title)}</h3>${excerpt ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 1rem;\">${escapeHtml(excerpt)}</p>` : \"\"}${linkHtml}${authorHtml}</div></article>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogPostGrid\n// ---------------------------------------------------------------------------\n\nexport function exportBlogPostGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n title,\n subtitle,\n columns = 3,\n cards = [],\n showViewAll = false,\n viewAllText,\n viewAllHref,\n } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) -> 2 cols (tablet) -> N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"blog-post-grid\");\n const responsiveConfig = resolveResponsiveColumns(columns, 1, 2, columns);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(\n gridId,\n responsiveConfig,\n \"2rem\",\n );\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Cabeçalho\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text);\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportBlogPostGrid requires renderChild function\");\n }\n\n const cardsHtml = cards.length > 0\n ? cards\n .map((c: any, i: number) =>\n renderChild(\n {\n id: `${block.id}-card-${i}`,\n type: \"blogPostCard\",\n props: c,\n } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\")\n : `<div style=\"grid-column: 1 / -1; text-align: center; padding: 3rem 1rem; color: var(--sg-muted-text); border: 2px dashed var(--sg-border, #e5e7eb); border-radius: var(--sg-card-radius, 0.5rem);\"><p style=\"font-size: 1rem; margin-bottom: 0.5rem;\">Nenhum post encontrado</p><p style=\"font-size: 0.875rem;\">Os posts aparecerão aqui quando forem publicados.</p></div>`;\n\n const viewAllHtml =\n showViewAll && viewAllText\n ? `<div data-block-group=\"Rodapé\" style=\"text-align: center; margin-top: 2.5rem;\"><a href=\"${escapeHtml(viewAllHref || \"#\")}\" style=\"display: inline-block; padding: 0.75rem 1.5rem; background-color: var(--sg-primary); color: var(--sg-primary-text, #fff); font-weight: 600; border-radius: var(--sg-button-radius); text-decoration: none;\">${escapeHtml(viewAllText)}</a></div>`\n : \"\";\n\n return `<style>${mediaQueries}</style><section ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div data-block-group=\"Layout\" id=\"${gridId}\" style=\"${inlineStyles}\">${cardsHtml}</div>${viewAllHtml}</div></section>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogPostDetail\n// ---------------------------------------------------------------------------\n\nexport function exportBlogPostDetail(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n title,\n content,\n featuredImage,\n date,\n category,\n readingTime,\n tags = [],\n showFeaturedImage = true,\n showAuthor = true,\n authorVariant = \"inline\",\n showDate = true,\n showTags = true,\n showReadingTime = true,\n contentMaxWidth = \"720px\",\n } = (block as any).props;\n\n // Featured image banner\n const featuredImageHtml =\n showFeaturedImage && featuredImage\n ? `<div data-block-group=\"Mídia\" style=\"width: 100%; height: 400px; background-image: url(${escapeHtml(featuredImage)}); background-size: cover; background-position: center; border-radius: var(--sg-card-radius); margin-bottom: 2rem;\"></div>`\n : \"\";\n\n // Category badge\n const categoryHtml = category\n ? `<span style=\"display: inline-block; padding: 0.25rem 0.75rem; background-color: var(--sg-primary); color: var(--sg-primary-text, #fff); border-radius: 999px; font-size: 0.75rem; font-weight: 600; margin-bottom: 1rem;\">${escapeHtml(category)}</span>`\n : \"\";\n\n // Meta line (date + reading time)\n const metaParts: string[] = [];\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 1.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n // Title\n const titleHtml = `<h1 data-block-group=\"Conteúdo\" style=\"font-size: var(--sg-heading-h1, 2.25rem); font-weight: 700; margin-bottom: 0.75rem; line-height: 1.2;\">${escapeHtml(title)}</h1>`;\n\n // Content — trusted HTML from backend, not escaped\n const contentHtml = content\n ? `<div class=\"sg-blog-post-content\" style=\"font-size: 1.0625rem; line-height: 1.75; color: var(--sg-text);\">${content}</div>`\n : \"\";\n\n // Author — placeholder structure (real data injected by ContentProvider at runtime)\n const avatarPlaceholder = `<div style=\"width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg, var(--sg-primary, #6366f1) 0%, #818cf8 100%);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--sg-primary-text, #fff);font-size:1.5rem;font-weight:700;\">A</div>`;\n const avatarSmall = `<div style=\"width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg, var(--sg-primary, #6366f1) 0%, #818cf8 100%);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--sg-primary-text, #fff);font-size:1.1rem;font-weight:700;\">A</div>`;\n\n let authorHtml = \"\";\n if (showAuthor) {\n if (authorVariant === \"card\") {\n authorHtml = `<div data-block-group=\"Autor\" style=\"display:flex;align-items:flex-start;gap:1rem;margin-top:3rem;padding:1.25rem;border-radius:var(--sg-card-radius, 0.75rem);background-color:var(--sg-surface, #f9fafb);\">${avatarPlaceholder}<div><div style=\"font-size:0.75rem;color:var(--sg-muted-text);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:0.125rem;\">Escrito por</div><div style=\"font-weight:600;font-size:1rem;\">Nome do Autor</div><p style=\"color:var(--sg-muted-text);font-size:0.875rem;margin:0.25rem 0 0;\">Bio do autor carregada do banco de dados.</p></div></div>`;\n } else if (authorVariant === \"minimal\") {\n authorHtml = `<p data-block-group=\"Autor\" style=\"margin-top:3rem;padding-top:2rem;border-top:1px solid var(--sg-border, #e5e7eb);color:var(--sg-muted-text);font-size:0.9375rem;\">Escrito por <span style=\"font-weight:600;color:var(--sg-text);\">Nome do Autor</span></p>`;\n } else {\n // inline (default)\n authorHtml = `<div data-block-group=\"Autor\" style=\"display:flex;align-items:center;gap:0.75rem;margin-top:3rem;padding-top:2rem;border-top:1px solid var(--sg-border, #e5e7eb);\">${avatarSmall}<div><div style=\"font-size:0.75rem;color:var(--sg-muted-text);\">Escrito por</div><div style=\"font-weight:600;font-size:0.9375rem;\">Nome do Autor</div></div></div>`;\n }\n }\n\n // Tags\n const tagsHtml =\n showTags && tags.length > 0\n ? `<div data-block-group=\"Visibilidade\" style=\"margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 0.5rem;\">${tags\n .map(\n (tag: string) =>\n `<span style=\"display: inline-block; padding: 0.25rem 0.75rem; background-color: var(--sg-surface, #f3f4f6); color: var(--sg-text); border-radius: 999px; font-size: 0.75rem;\">${escapeHtml(tag)}</span>`,\n )\n .join(\"\")}</div>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-detail\" style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: ${escapeHtml(contentMaxWidth)}; margin: 0 auto; padding: 0 1rem;\">${featuredImageHtml}${categoryHtml}${titleHtml}${metaHtml}${contentHtml}${authorHtml}${tagsHtml}</div></article>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogCategoryFilter\n// ---------------------------------------------------------------------------\n\nexport function exportBlogCategoryFilter(\n block: Block,\n _depth: number,\n _basePath?: string,\n _theme?: ThemeTokens,\n): string {\n const {\n title,\n categories = [],\n variant = \"chips\",\n showCount = true,\n showAll = true,\n allLabel = \"Todas\",\n activeCategory,\n filterUrl = \"#\",\n } = (block as any).props;\n\n const buildHref = (slug?: string) => {\n if (!slug) return escapeHtml(filterUrl);\n return escapeHtml(`${filterUrl}?categoria=${slug}`);\n };\n\n let itemsHtml = \"\";\n\n if (variant === \"chips\") {\n const allChip = showAll\n ? `<a href=\"${escapeHtml(filterUrl)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.375rem 0.875rem;border-radius:9999px;font-size:0.875rem;font-weight:500;text-decoration:none;background-color:${!activeCategory ? \"var(--sg-primary)\" : \"var(--sg-surface, #f3f4f6)\"};color:${!activeCategory ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(allLabel)}</a>`\n : \"\";\n\n const chips = categories\n .map((cat: any) => {\n const isActive = activeCategory === cat.slug;\n const countHtml = showCount && cat.count != null ? `<span style=\"font-size:0.75rem;opacity:0.7;\">(${cat.count})</span>` : \"\";\n return `<a href=\"${buildHref(cat.slug)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.375rem 0.875rem;border-radius:9999px;font-size:0.875rem;font-weight:500;text-decoration:none;background-color:${isActive ? \"var(--sg-primary)\" : \"var(--sg-surface, #f3f4f6)\"};color:${isActive ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(cat.name)}${countHtml}</a>`;\n })\n .join(\"\");\n\n itemsHtml = `<div style=\"display:flex;flex-wrap:wrap;gap:0.5rem;\">${allChip}${chips}</div>`;\n } else if (variant === \"buttons\") {\n const allBtn = showAll\n ? `<a href=\"${escapeHtml(filterUrl)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.5rem 1rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:500;text-decoration:none;border:1px solid ${!activeCategory ? \"var(--sg-primary)\" : \"var(--sg-border, #e5e7eb)\"};background-color:${!activeCategory ? \"var(--sg-primary)\" : \"transparent\"};color:${!activeCategory ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(allLabel)}</a>`\n : \"\";\n\n const btns = categories\n .map((cat: any) => {\n const isActive = activeCategory === cat.slug;\n const countHtml = showCount && cat.count != null ? `<span style=\"font-size:0.75rem;opacity:0.7;\">(${cat.count})</span>` : \"\";\n return `<a href=\"${buildHref(cat.slug)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.5rem 1rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:500;text-decoration:none;border:1px solid ${isActive ? \"var(--sg-primary)\" : \"var(--sg-border, #e5e7eb)\"};background-color:${isActive ? \"var(--sg-primary)\" : \"transparent\"};color:${isActive ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(cat.name)}${countHtml}</a>`;\n })\n .join(\"\");\n\n itemsHtml = `<div style=\"display:flex;flex-wrap:wrap;gap:0.5rem;\">${allBtn}${btns}</div>`;\n } else {\n // list variant\n const allItem = showAll\n ? `<a href=\"${escapeHtml(filterUrl)}\" style=\"display:flex;align-items:center;justify-content:space-between;padding:0.625rem 0.75rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:${!activeCategory ? \"600\" : \"400\"};text-decoration:none;background-color:${!activeCategory ? \"var(--sg-surface, #f3f4f6)\" : \"transparent\"};color:${!activeCategory ? \"var(--sg-primary)\" : \"var(--sg-text)\"};\">${escapeHtml(allLabel)}</a>`\n : \"\";\n\n const items = categories\n .map((cat: any) => {\n const isActive = activeCategory === cat.slug;\n const countHtml = showCount && cat.count != null\n ? `<span style=\"font-size:0.75rem;color:var(--sg-muted-text);background-color:var(--sg-surface, #f3f4f6);padding:0.125rem 0.5rem;border-radius:9999px;\">${cat.count}</span>`\n : \"\";\n return `<a href=\"${buildHref(cat.slug)}\" style=\"display:flex;align-items:center;justify-content:space-between;padding:0.625rem 0.75rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:${isActive ? \"600\" : \"400\"};text-decoration:none;background-color:${isActive ? \"var(--sg-surface, #f3f4f6)\" : \"transparent\"};color:${isActive ? \"var(--sg-primary)\" : \"var(--sg-text)\"};\">${escapeHtml(cat.name)}${countHtml}</a>`;\n })\n .join(\"\");\n\n itemsHtml = `<div style=\"display:flex;flex-direction:column;gap:0.25rem;\">${allItem}${items}</div>`;\n }\n\n const titleHtml = title\n ? `<h3 style=\"font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--sg-text);\">${escapeHtml(title)}</h3>`\n : \"\";\n\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"padding:1.5rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;\">${titleHtml}${itemsHtml}</div></div>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogSearchBar\n// ---------------------------------------------------------------------------\n\nexport function exportBlogSearchBar(\n block: Block,\n _depth: number,\n _basePath?: string,\n _theme?: ThemeTokens,\n): string {\n const {\n placeholder = \"Buscar posts...\",\n variant = \"simple\",\n showIcon = true,\n searchUrl = \"#\",\n filterCategories = false,\n filterTags = false,\n filterDate = false,\n } = (block as any).props;\n\n const searchIconSvg = showIcon\n ? `<svg style=\"position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;color:var(--sg-muted-text);\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.35-4.35\" stroke-linecap=\"round\"/></svg>`\n : \"\";\n\n const inputPadding = showIcon ? \"padding-left:2.5rem;\" : \"\";\n\n if (variant === \"expanded\") {\n const inputHtml = `<div style=\"position:relative;width:100%;max-width:600px;\">${searchIconSvg}<input type=\"search\" name=\"busca\" placeholder=\"${escapeHtml(placeholder)}\" style=\"width:100%;${inputPadding}padding-right:1rem;padding-top:0.875rem;padding-bottom:0.875rem;font-size:1.0625rem;border:2px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);outline:none;\" /></div>`;\n\n return `<form ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" action=\"${escapeHtml(searchUrl)}\" method=\"get\" style=\"padding:2rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;justify-content:center;\">${inputHtml}</div></form>`;\n }\n\n if (variant === \"with-filters\") {\n const inputHtml = `<div style=\"position:relative;flex:1;min-width:200px;\">${searchIconSvg}<input type=\"search\" name=\"busca\" placeholder=\"${escapeHtml(placeholder)}\" style=\"width:100%;${inputPadding}padding-right:1rem;padding-top:0.625rem;padding-bottom:0.625rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);outline:none;\" /></div>`;\n\n const filters: string[] = [];\n if (filterCategories) {\n filters.push(`<select name=\"categoria\" style=\"padding:0.625rem 0.75rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);\"><option value=\"\">Categoria</option></select>`);\n }\n if (filterTags) {\n filters.push(`<select name=\"tag\" style=\"padding:0.625rem 0.75rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);\"><option value=\"\">Tag</option></select>`);\n }\n if (filterDate) {\n filters.push(`<select name=\"periodo\" style=\"padding:0.625rem 0.75rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);\"><option value=\"\">Período</option></select>`);\n }\n\n return `<form ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" action=\"${escapeHtml(searchUrl)}\" method=\"get\" style=\"padding:1.5rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;flex-wrap:wrap;gap:0.75rem;align-items:center;\">${inputHtml}${filters.join(\"\")}</div></form>`;\n }\n\n // simple variant\n const inputHtml = `<div style=\"position:relative;width:100%;max-width:400px;\">${searchIconSvg}<input type=\"search\" name=\"busca\" placeholder=\"${escapeHtml(placeholder)}\" style=\"width:100%;${inputPadding}padding-right:1rem;padding-top:0.625rem;padding-bottom:0.625rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);outline:none;\" /></div>`;\n\n return `<form ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" action=\"${escapeHtml(searchUrl)}\" method=\"get\" style=\"padding:1.5rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;\">${inputHtml}</div></form>`;\n}\n"],"names":["exportBlogPostCard","block","depth","basePath","theme","title","excerpt","image","date","category","authorName","authorAvatar","readingTime","linkHref","linkText","variant","showImage","showCategory","showDate","showAuthor","showReadingTime","imgHtml","escapeHtml","metaParts","metaHtml","authorHtml","linkHtml","dataBlockIdAttr","exportBlogPostGrid","renderChild","subtitle","columns","cards","showViewAll","viewAllText","viewAllHref","gridId","generateScopedId","responsiveConfig","resolveResponsiveColumns","inlineStyles","mediaQueries","generateResponsiveGridStyles","headerHtml","cardsHtml","c","i","viewAllHtml","exportBlogPostDetail","content","featuredImage","tags","showFeaturedImage","authorVariant","showTags","contentMaxWidth","featuredImageHtml","categoryHtml","titleHtml","contentHtml","avatarPlaceholder","avatarSmall","tagsHtml","tag","exportBlogCategoryFilter","_depth","_basePath","_theme","categories","showCount","showAll","allLabel","activeCategory","filterUrl","buildHref","slug","itemsHtml","allChip","chips","cat","isActive","countHtml","allBtn","btns","allItem","items","exportBlogSearchBar","placeholder","showIcon","searchUrl","filterCategories","filterTags","filterDate","searchIconSvg","inputPadding","inputHtml","filters"],"mappings":"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"}
1
+ {"version":3,"file":"BlogPostExporters.js","sources":["../../../../../src/engine/export/exporters/sections/BlogPostExporters.ts"],"sourcesContent":["/**\n * Blog Post Exporters\n * BlogPostCard, BlogPostGrid, BlogPostDetail\n * Mobile-first responsive layouts for blog plugin blocks\n */\n\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\nimport { dataBlockIdAttr, escapeHtml } from \"../../shared/htmlHelpers\";\nimport { generateScopedId } from \"../../shared/idGenerator\";\nimport {\n resolveResponsiveColumns,\n generateResponsiveGridStyles,\n} from \"../../shared/responsiveGridHelper\";\n\n// ---------------------------------------------------------------------------\n// BlogPostCard\n// ---------------------------------------------------------------------------\n\nexport function exportBlogPostCard(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n title,\n excerpt,\n image,\n date,\n category,\n authorName,\n authorAvatar,\n readingTime,\n linkHref,\n linkText,\n variant = \"default\",\n showImage = true,\n showCategory = true,\n showDate = true,\n showAuthor = false,\n showReadingTime = false,\n } = (block as any).props;\n\n // ---------- variant: horizontal ----------\n if (variant === \"horizontal\") {\n const imgHtml =\n showImage && image\n ? `<div style=\"width: 260px; min-height: 180px; flex-shrink: 0; background-image: url(${escapeHtml(image)}); background-size: cover; background-position: center;\"></div>`\n : \"\";\n\n const metaParts: string[] = [];\n if (showCategory && category) metaParts.push(escapeHtml(category));\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"font-size: 0.75rem; color: var(--sg-muted-text); margin-bottom: 0.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n const authorHtml =\n showAuthor && authorName\n ? `<div style=\"display: flex; align-items: center; gap: 0.5rem; margin-top: auto; padding-top: 0.75rem;\">${\n authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${escapeHtml(authorName)}\" style=\"width: 28px; height: 28px; border-radius: 50%; object-fit: cover;\" />`\n : \"\"\n }<span style=\"font-size: 0.8rem; color: var(--sg-muted-text);\">${escapeHtml(authorName)}</span></div>`\n : \"\";\n\n const linkHtml = linkText\n ? `<a href=\"${escapeHtml(linkHref || \"#\")}\" style=\"color: var(--sg-primary); font-weight: 500; text-decoration: none; font-size: 0.875rem;\">${escapeHtml(linkText)}</a>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-card\" style=\"display: flex; background-color: var(--sg-bg); border-radius: var(--sg-card-radius); overflow: hidden; box-shadow: var(--sg-card-shadow);\" data-variant=\"horizontal\">${imgHtml}<div style=\"padding: 1.25rem; display: flex; flex-direction: column; flex: 1;\">${metaHtml}<h3 style=\"font-size: 1.125rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(title)}</h3>${excerpt ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 0.75rem;\">${escapeHtml(excerpt)}</p>` : \"\"}${linkHtml}${authorHtml}</div></article>`;\n }\n\n // ---------- variant: minimal ----------\n if (variant === \"minimal\") {\n const metaParts: string[] = [];\n if (showCategory && category) metaParts.push(escapeHtml(category));\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"font-size: 0.75rem; color: var(--sg-muted-text); margin-bottom: 0.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n const linkHtml = linkText\n ? `<a href=\"${escapeHtml(linkHref || \"#\")}\" style=\"color: var(--sg-primary); font-weight: 500; text-decoration: none; font-size: 0.875rem;\">${escapeHtml(linkText)}</a>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-card\" style=\"padding: 1.25rem 0; border-bottom: 1px solid var(--sg-border, #e5e7eb);\" data-variant=\"minimal\">${metaHtml}<h3 style=\"font-size: 1.125rem; font-weight: 600; margin-bottom: 0.25rem;\">${escapeHtml(title)}</h3>${excerpt ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 0.5rem;\">${escapeHtml(excerpt)}</p>` : \"\"}${linkHtml}</article>`;\n }\n\n // ---------- variant: default ----------\n const imgHtml =\n showImage && image\n ? `<div style=\"height: 200px; background-image: url(${escapeHtml(image)}); background-size: cover; background-position: center;\"></div>`\n : \"\";\n\n const metaParts: string[] = [];\n if (showCategory && category) metaParts.push(escapeHtml(category));\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"font-size: 0.75rem; color: var(--sg-muted-text); margin-bottom: 0.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n const authorHtml =\n showAuthor && authorName\n ? `<div style=\"display: flex; align-items: center; gap: 0.5rem; margin-top: 1rem;\">${\n authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${escapeHtml(authorName)}\" style=\"width: 32px; height: 32px; border-radius: 50%; object-fit: cover;\" />`\n : \"\"\n }<span style=\"font-size: 0.8rem; color: var(--sg-muted-text);\">${escapeHtml(authorName)}</span></div>`\n : \"\";\n\n const linkHtml = linkText\n ? `<a href=\"${escapeHtml(linkHref || \"#\")}\" style=\"color: var(--sg-primary); font-weight: 500; text-decoration: none; font-size: 0.875rem;\">${escapeHtml(linkText)}</a>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-card\" style=\"background-color: var(--sg-bg); border-radius: var(--sg-card-radius); overflow: hidden; box-shadow: var(--sg-card-shadow);\" data-variant=\"default\">${imgHtml}<div style=\"padding: 1.5rem;\">${metaHtml}<h3 style=\"font-size: 1.125rem; font-weight: 600; margin-bottom: 0.5rem;\">${escapeHtml(title)}</h3>${excerpt ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 1rem;\">${escapeHtml(excerpt)}</p>` : \"\"}${linkHtml}${authorHtml}</div></article>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogPostGrid\n// ---------------------------------------------------------------------------\n\n/**\n * Builds a pagination URL appending ?pagina=N (or &pagina=N if URL has params).\n * Page 1 returns base URL without param (cleaner URL).\n */\nfunction buildPageUrl(baseUrl: string, page: number): string {\n if (page <= 1) return baseUrl;\n const separator = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${separator}pagina=${page}`;\n}\n\n/**\n * Generates an array of page numbers to display, with -1 for ellipsis.\n */\nfunction getPageNumbers(current: number, total: number): number[] {\n if (total <= 7) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n const pages: number[] = [1];\n if (current > 3) pages.push(-1);\n const start = Math.max(2, current - 1);\n const end = Math.min(total - 1, current + 1);\n for (let i = start; i <= end; i++) pages.push(i);\n if (current < total - 2) pages.push(-1);\n if (pages[pages.length - 1] !== total) pages.push(total);\n return pages;\n}\n\n/**\n * Generates pagination HTML nav element.\n */\nfunction generatePaginationHtml(\n currentPage: number,\n totalPages: number,\n paginationBaseUrl: string,\n): string {\n if (totalPages <= 1) return \"\";\n\n const btnBase = \"display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--sg-card-radius, 0.5rem);text-decoration:none;font-size:0.875rem;\";\n const borderNormal = \"border:1px solid var(--sg-border, #e5e7eb);\";\n const borderActive = \"border:1px solid var(--sg-primary);\";\n\n // Previous\n const prevHtml = currentPage > 1\n ? `<a href=\"${escapeHtml(buildPageUrl(paginationBaseUrl, currentPage - 1))}\" style=\"${btnBase}${borderNormal}color:var(--sg-text);\">&lsaquo;</a>`\n : `<span style=\"${btnBase}${borderNormal}color:var(--sg-muted-text);opacity:0.4;\">&lsaquo;</span>`;\n\n // Page numbers\n const pageNumbers = getPageNumbers(currentPage, totalPages);\n const pagesHtml = pageNumbers.map((page, idx) => {\n if (page === -1) {\n return `<span style=\"${btnBase}color:var(--sg-muted-text);\">&hellip;</span>`;\n }\n const isActive = page === currentPage;\n return `<a href=\"${escapeHtml(buildPageUrl(paginationBaseUrl, page))}\" style=\"${btnBase}${isActive ? borderActive : borderNormal}background-color:${isActive ? \"var(--sg-primary)\" : \"transparent\"};color:${isActive ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};font-weight:${isActive ? \"600\" : \"400\"};\">${page}</a>`;\n }).join(\"\");\n\n // Next\n const nextHtml = currentPage < totalPages\n ? `<a href=\"${escapeHtml(buildPageUrl(paginationBaseUrl, currentPage + 1))}\" style=\"${btnBase}${borderNormal}color:var(--sg-text);\">&rsaquo;</a>`\n : `<span style=\"${btnBase}${borderNormal}color:var(--sg-muted-text);opacity:0.4;\">&rsaquo;</span>`;\n\n return `<nav data-block-group=\"Paginação\" style=\"display:flex;justify-content:center;align-items:center;gap:0.375rem;margin-top:2.5rem;\">${prevHtml}${pagesHtml}${nextHtml}</nav>`;\n}\n\nexport function exportBlogPostGrid(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n renderChild?: (block: Block, _depth: number, basePath?: string, theme?: ThemeTokens) => string,\n): string {\n const {\n title,\n subtitle,\n columns = 3,\n cards = [],\n showViewAll = false,\n viewAllText,\n viewAllHref,\n currentPage = 1,\n totalPages = 1,\n paginationBaseUrl = \"#\",\n } = (block as any).props;\n\n // Responsive grid: 1 col (mobile) -> 2 cols (tablet) -> N cols (desktop)\n const gridId = generateScopedId(block.id || \"\", \"blog-post-grid\");\n const responsiveConfig = resolveResponsiveColumns(columns, 1, 2, columns);\n const { inlineStyles, mediaQueries } = generateResponsiveGridStyles(\n gridId,\n responsiveConfig,\n \"2rem\",\n );\n\n const headerHtml =\n title || subtitle\n ? `<div data-block-group=\"Cabeçalho\" style=\"text-align: center; margin-bottom: 3rem;\">${title ? `<h2 style=\"font-size: var(--sg-heading-h2); margin-bottom: 0.5rem;\">${escapeHtml(title)}</h2>` : \"\"}${subtitle ? `<p style=\"color: var(--sg-muted-text);\">${escapeHtml(subtitle)}</p>` : \"\"}</div>`\n : \"\";\n\n if (!renderChild) {\n throw new Error(\"exportBlogPostGrid requires renderChild function\");\n }\n\n const cardsHtml = cards.length > 0\n ? cards\n .map((c: any, i: number) =>\n renderChild(\n {\n id: `${block.id}-card-${i}`,\n type: \"blogPostCard\",\n props: c,\n } as Block,\n depth + 1,\n basePath,\n theme,\n ),\n )\n .join(\"\")\n : `<div style=\"grid-column: 1 / -1; text-align: center; padding: 3rem 1rem; color: var(--sg-muted-text); border: 2px dashed var(--sg-border, #e5e7eb); border-radius: var(--sg-card-radius, 0.5rem);\"><p style=\"font-size: 1rem; margin-bottom: 0.5rem;\">Nenhum post encontrado</p><p style=\"font-size: 0.875rem;\">Os posts aparecerão aqui quando forem publicados.</p></div>`;\n\n const viewAllHtml =\n showViewAll && viewAllText\n ? `<div data-block-group=\"Rodapé\" style=\"text-align: center; margin-top: 2.5rem;\"><a href=\"${escapeHtml(viewAllHref || \"#\")}\" style=\"display: inline-block; padding: 0.75rem 1.5rem; background-color: var(--sg-primary); color: var(--sg-primary-text, #fff); font-weight: 600; border-radius: var(--sg-button-radius); text-decoration: none;\">${escapeHtml(viewAllText)}</a></div>`\n : \"\";\n\n const paginationHtml = generatePaginationHtml(currentPage, totalPages, paginationBaseUrl);\n\n return `<style>${mediaQueries}</style><section ${dataBlockIdAttr(block.id)} style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: 1200px; margin: 0 auto; padding: 0 1rem;\">${headerHtml}<div data-block-group=\"Layout\" id=\"${gridId}\" style=\"${inlineStyles}\">${cardsHtml}</div>${viewAllHtml}${paginationHtml}</div></section>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogPostDetail\n// ---------------------------------------------------------------------------\n\nexport function exportBlogPostDetail(\n block: Block,\n depth: number,\n basePath?: string,\n theme?: ThemeTokens,\n): string {\n const {\n title,\n content,\n featuredImage,\n date,\n category,\n readingTime,\n tags = [],\n showFeaturedImage = true,\n showAuthor = true,\n authorVariant = \"inline\",\n showDate = true,\n showTags = true,\n showReadingTime = true,\n contentMaxWidth = \"720px\",\n authorName,\n authorAvatar,\n authorBio,\n } = (block as any).props;\n\n const displayName = escapeHtml(authorName || \"Nome do Autor\");\n const displayBio = authorBio ? escapeHtml(authorBio) : \"\";\n\n // Featured image banner\n const featuredImageHtml =\n showFeaturedImage && featuredImage\n ? `<div data-block-group=\"Mídia\" style=\"width: 100%; height: 400px; background-image: url(${escapeHtml(featuredImage)}); background-size: cover; background-position: center; border-radius: var(--sg-card-radius); margin-bottom: 2rem;\"></div>`\n : \"\";\n\n // Category badge\n const categoryHtml = category\n ? `<span style=\"display: inline-block; padding: 0.25rem 0.75rem; background-color: var(--sg-primary); color: var(--sg-primary-text, #fff); border-radius: 999px; font-size: 0.75rem; font-weight: 600; margin-bottom: 1rem;\">${escapeHtml(category)}</span>`\n : \"\";\n\n // Meta line (date + reading time)\n const metaParts: string[] = [];\n if (showDate && date) metaParts.push(escapeHtml(date));\n if (showReadingTime && readingTime) metaParts.push(escapeHtml(readingTime));\n const metaHtml = metaParts.length\n ? `<p style=\"color: var(--sg-muted-text); font-size: 0.875rem; margin-bottom: 1.5rem;\">${metaParts.join(\" &middot; \")}</p>`\n : \"\";\n\n // Title\n const titleHtml = `<h1 data-block-group=\"Conteúdo\" style=\"font-size: var(--sg-heading-h1, 2.25rem); font-weight: 700; margin-bottom: 0.75rem; line-height: 1.2;\">${escapeHtml(title)}</h1>`;\n\n // Content — trusted HTML from backend, not escaped\n const contentHtml = content\n ? `<div class=\"sg-blog-post-content\" style=\"font-size: 1.0625rem; line-height: 1.75; color: var(--sg-text);\">${content}</div>`\n : \"\";\n\n // Author avatar — real image or placeholder\n const avatarLargeHtml = authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${displayName}\" style=\"width:56px;height:56px;border-radius:50%;object-fit:cover;flex-shrink:0;\" />`\n : `<div style=\"width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg, var(--sg-primary, #6366f1) 0%, #818cf8 100%);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--sg-primary-text, #fff);font-size:1.5rem;font-weight:700;\">${displayName.charAt(0).toUpperCase()}</div>`;\n const avatarSmallHtml = authorAvatar\n ? `<img src=\"${escapeHtml(authorAvatar)}\" alt=\"${displayName}\" style=\"width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;\" />`\n : `<div style=\"width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg, var(--sg-primary, #6366f1) 0%, #818cf8 100%);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--sg-primary-text, #fff);font-size:1.1rem;font-weight:700;\">${displayName.charAt(0).toUpperCase()}</div>`;\n\n let authorHtml = \"\";\n if (showAuthor) {\n const bioHtml = displayBio ? `<p style=\"color:var(--sg-muted-text);font-size:0.875rem;margin:0.25rem 0 0;\">${displayBio}</p>` : \"\";\n if (authorVariant === \"card\") {\n authorHtml = `<div data-block-group=\"Autor\" style=\"display:flex;align-items:flex-start;gap:1rem;margin-top:3rem;padding:1.25rem;border-radius:var(--sg-card-radius, 0.75rem);background-color:var(--sg-surface, #f9fafb);\">${avatarLargeHtml}<div><div style=\"font-size:0.75rem;color:var(--sg-muted-text);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:0.125rem;\">Escrito por</div><div style=\"font-weight:600;font-size:1rem;\">${displayName}</div>${bioHtml}</div></div>`;\n } else if (authorVariant === \"minimal\") {\n authorHtml = `<p data-block-group=\"Autor\" style=\"margin-top:3rem;padding-top:2rem;border-top:1px solid var(--sg-border, #e5e7eb);color:var(--sg-muted-text);font-size:0.9375rem;\">Escrito por <span style=\"font-weight:600;color:var(--sg-text);\">${displayName}</span></p>`;\n } else {\n // inline (default)\n authorHtml = `<div data-block-group=\"Autor\" style=\"display:flex;align-items:center;gap:0.75rem;margin-top:3rem;padding-top:2rem;border-top:1px solid var(--sg-border, #e5e7eb);\">${avatarSmallHtml}<div><div style=\"font-size:0.75rem;color:var(--sg-muted-text);\">Escrito por</div><div style=\"font-weight:600;font-size:0.9375rem;\">${displayName}</div></div></div>`;\n }\n }\n\n // Tags\n const tagsHtml =\n showTags && tags.length > 0\n ? `<div data-block-group=\"Visibilidade\" style=\"margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 0.5rem;\">${tags\n .map(\n (tag: string) =>\n `<span style=\"display: inline-block; padding: 0.25rem 0.75rem; background-color: var(--sg-surface, #f3f4f6); color: var(--sg-text); border-radius: 999px; font-size: 0.75rem;\">${escapeHtml(tag)}</span>`,\n )\n .join(\"\")}</div>`\n : \"\";\n\n return `<article ${dataBlockIdAttr(block.id)} class=\"sg-blog-post-detail\" style=\"padding: 4rem 0; background-color: var(--sg-bg);\"><div style=\"max-width: ${escapeHtml(contentMaxWidth)}; margin: 0 auto; padding: 0 1rem;\">${featuredImageHtml}${categoryHtml}${titleHtml}${metaHtml}${contentHtml}${authorHtml}${tagsHtml}</div></article>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogCategoryFilter\n// ---------------------------------------------------------------------------\n\nexport function exportBlogCategoryFilter(\n block: Block,\n _depth: number,\n _basePath?: string,\n _theme?: ThemeTokens,\n): string {\n const {\n title,\n categories = [],\n variant = \"chips\",\n showCount = true,\n showAll = true,\n allLabel = \"Todas\",\n activeCategory,\n filterUrl = \"#\",\n } = (block as any).props;\n\n const buildHref = (slug?: string) => {\n if (!slug) return escapeHtml(filterUrl);\n return escapeHtml(`${filterUrl}?categoria=${slug}`);\n };\n\n let itemsHtml = \"\";\n\n if (variant === \"chips\") {\n const allChip = showAll\n ? `<a href=\"${escapeHtml(filterUrl)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.375rem 0.875rem;border-radius:9999px;font-size:0.875rem;font-weight:500;text-decoration:none;background-color:${!activeCategory ? \"var(--sg-primary)\" : \"var(--sg-surface, #f3f4f6)\"};color:${!activeCategory ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(allLabel)}</a>`\n : \"\";\n\n const chips = categories\n .map((cat: any) => {\n const isActive = activeCategory === cat.slug;\n const countHtml = showCount && cat.count != null ? `<span style=\"font-size:0.75rem;opacity:0.7;\">(${cat.count})</span>` : \"\";\n return `<a href=\"${buildHref(cat.slug)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.375rem 0.875rem;border-radius:9999px;font-size:0.875rem;font-weight:500;text-decoration:none;background-color:${isActive ? \"var(--sg-primary)\" : \"var(--sg-surface, #f3f4f6)\"};color:${isActive ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(cat.name)}${countHtml}</a>`;\n })\n .join(\"\");\n\n itemsHtml = `<div style=\"display:flex;flex-wrap:wrap;gap:0.5rem;\">${allChip}${chips}</div>`;\n } else if (variant === \"buttons\") {\n const allBtn = showAll\n ? `<a href=\"${escapeHtml(filterUrl)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.5rem 1rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:500;text-decoration:none;border:1px solid ${!activeCategory ? \"var(--sg-primary)\" : \"var(--sg-border, #e5e7eb)\"};background-color:${!activeCategory ? \"var(--sg-primary)\" : \"transparent\"};color:${!activeCategory ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(allLabel)}</a>`\n : \"\";\n\n const btns = categories\n .map((cat: any) => {\n const isActive = activeCategory === cat.slug;\n const countHtml = showCount && cat.count != null ? `<span style=\"font-size:0.75rem;opacity:0.7;\">(${cat.count})</span>` : \"\";\n return `<a href=\"${buildHref(cat.slug)}\" style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.5rem 1rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:500;text-decoration:none;border:1px solid ${isActive ? \"var(--sg-primary)\" : \"var(--sg-border, #e5e7eb)\"};background-color:${isActive ? \"var(--sg-primary)\" : \"transparent\"};color:${isActive ? \"var(--sg-primary-text, #fff)\" : \"var(--sg-text)\"};\">${escapeHtml(cat.name)}${countHtml}</a>`;\n })\n .join(\"\");\n\n itemsHtml = `<div style=\"display:flex;flex-wrap:wrap;gap:0.5rem;\">${allBtn}${btns}</div>`;\n } else {\n // list variant\n const allItem = showAll\n ? `<a href=\"${escapeHtml(filterUrl)}\" style=\"display:flex;align-items:center;justify-content:space-between;padding:0.625rem 0.75rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:${!activeCategory ? \"600\" : \"400\"};text-decoration:none;background-color:${!activeCategory ? \"var(--sg-surface, #f3f4f6)\" : \"transparent\"};color:${!activeCategory ? \"var(--sg-primary)\" : \"var(--sg-text)\"};\">${escapeHtml(allLabel)}</a>`\n : \"\";\n\n const items = categories\n .map((cat: any) => {\n const isActive = activeCategory === cat.slug;\n const countHtml = showCount && cat.count != null\n ? `<span style=\"font-size:0.75rem;color:var(--sg-muted-text);background-color:var(--sg-surface, #f3f4f6);padding:0.125rem 0.5rem;border-radius:9999px;\">${cat.count}</span>`\n : \"\";\n return `<a href=\"${buildHref(cat.slug)}\" style=\"display:flex;align-items:center;justify-content:space-between;padding:0.625rem 0.75rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;font-weight:${isActive ? \"600\" : \"400\"};text-decoration:none;background-color:${isActive ? \"var(--sg-surface, #f3f4f6)\" : \"transparent\"};color:${isActive ? \"var(--sg-primary)\" : \"var(--sg-text)\"};\">${escapeHtml(cat.name)}${countHtml}</a>`;\n })\n .join(\"\");\n\n itemsHtml = `<div style=\"display:flex;flex-direction:column;gap:0.25rem;\">${allItem}${items}</div>`;\n }\n\n const titleHtml = title\n ? `<h3 style=\"font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--sg-text);\">${escapeHtml(title)}</h3>`\n : \"\";\n\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"padding:1.5rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;\">${titleHtml}${itemsHtml}</div></div>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogSearchBar\n// ---------------------------------------------------------------------------\n\nexport function exportBlogSearchBar(\n block: Block,\n _depth: number,\n _basePath?: string,\n _theme?: ThemeTokens,\n): string {\n const {\n placeholder = \"Buscar posts...\",\n variant = \"simple\",\n showIcon = true,\n searchUrl = \"#\",\n filterCategories = false,\n filterTags = false,\n filterDate = false,\n } = (block as any).props;\n\n const searchIconSvg = showIcon\n ? `<svg style=\"position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;color:var(--sg-muted-text);\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.35-4.35\" stroke-linecap=\"round\"/></svg>`\n : \"\";\n\n const inputPadding = showIcon ? \"padding-left:2.5rem;\" : \"\";\n\n if (variant === \"expanded\") {\n const inputHtml = `<div style=\"position:relative;width:100%;max-width:600px;\">${searchIconSvg}<input type=\"search\" name=\"busca\" placeholder=\"${escapeHtml(placeholder)}\" style=\"width:100%;${inputPadding}padding-right:1rem;padding-top:0.875rem;padding-bottom:0.875rem;font-size:1.0625rem;border:2px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);outline:none;\" /></div>`;\n\n return `<form ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" action=\"${escapeHtml(searchUrl)}\" method=\"get\" style=\"padding:2rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;justify-content:center;\">${inputHtml}</div></form>`;\n }\n\n if (variant === \"with-filters\") {\n const inputHtml = `<div style=\"position:relative;flex:1;min-width:200px;\">${searchIconSvg}<input type=\"search\" name=\"busca\" placeholder=\"${escapeHtml(placeholder)}\" style=\"width:100%;${inputPadding}padding-right:1rem;padding-top:0.625rem;padding-bottom:0.625rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);outline:none;\" /></div>`;\n\n const filters: string[] = [];\n if (filterCategories) {\n filters.push(`<select name=\"categoria\" style=\"padding:0.625rem 0.75rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);\"><option value=\"\">Categoria</option></select>`);\n }\n if (filterTags) {\n filters.push(`<select name=\"tag\" style=\"padding:0.625rem 0.75rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);\"><option value=\"\">Tag</option></select>`);\n }\n if (filterDate) {\n filters.push(`<select name=\"periodo\" style=\"padding:0.625rem 0.75rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);\"><option value=\"\">Período</option></select>`);\n }\n\n return `<form ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" action=\"${escapeHtml(searchUrl)}\" method=\"get\" style=\"padding:1.5rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;flex-wrap:wrap;gap:0.75rem;align-items:center;\">${inputHtml}${filters.join(\"\")}</div></form>`;\n }\n\n // simple variant\n const inputHtml = `<div style=\"position:relative;width:100%;max-width:400px;\">${searchIconSvg}<input type=\"search\" name=\"busca\" placeholder=\"${escapeHtml(placeholder)}\" style=\"width:100%;${inputPadding}padding-right:1rem;padding-top:0.625rem;padding-bottom:0.625rem;font-size:0.875rem;border:1px solid var(--sg-border, #e5e7eb);border-radius:var(--sg-card-radius, 0.5rem);background-color:var(--sg-bg);color:var(--sg-text);outline:none;\" /></div>`;\n\n return `<form ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" action=\"${escapeHtml(searchUrl)}\" method=\"get\" style=\"padding:1.5rem 0;background-color:var(--sg-bg);\"><div style=\"max-width:1200px;margin:0 auto;padding:0 1rem;\">${inputHtml}</div></form>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogRecentPosts\n// ---------------------------------------------------------------------------\n\nexport function exportBlogRecentPosts(\n block: Block,\n _depth: number,\n _basePath?: string,\n _theme?: ThemeTokens,\n): string {\n const {\n title = \"Posts Recentes\",\n posts = [],\n showThumbnail = true,\n showDate = true,\n showCategory = false,\n } = (block as any).props;\n\n const titleHtml = title\n ? `<div style=\"padding:1rem 1.25rem;border-bottom:1px solid var(--sg-border, #e5e7eb);\"><h3 style=\"font-size:1rem;font-weight:600;margin:0;color:var(--sg-text);\">${escapeHtml(title)}</h3></div>`\n : \"\";\n\n let contentHtml = \"\";\n if (posts.length === 0) {\n contentHtml = `<p style=\"padding:1.5rem 1.25rem;color:var(--sg-muted-text);font-size:0.875rem;text-align:center;margin:0;\">Nenhum post recente</p>`;\n } else {\n const itemsHtml = posts\n .map((post: any) => {\n const imgHtml =\n showThumbnail && post.image\n ? `<img src=\"${escapeHtml(post.image)}\" alt=\"${escapeHtml(post.title)}\" style=\"width:64px;height:64px;object-fit:cover;border-radius:var(--sg-card-radius, 0.5rem);flex-shrink:0;\" />`\n : \"\";\n\n const metaParts: string[] = [];\n if (showDate && post.date) metaParts.push(escapeHtml(post.date));\n if (showCategory && post.category) metaParts.push(`<span style=\"font-size:0.6875rem;color:var(--sg-primary);font-weight:600;text-transform:uppercase;letter-spacing:0.03em;\">${escapeHtml(post.category)}</span>`);\n const metaHtml = metaParts.length\n ? `<div style=\"display:flex;align-items:center;gap:0.5rem;margin-top:0.25rem;font-size:0.75rem;color:var(--sg-muted-text);\">${metaParts.join(\"\")}</div>`\n : \"\";\n\n return `<a href=\"/site/p/blog/${escapeHtml(post.slug)}\" style=\"display:flex;align-items:center;gap:0.75rem;padding:0.75rem 1.25rem;text-decoration:none;color:inherit;\">${imgHtml}<div style=\"flex:1;min-width:0;\"><div style=\"font-size:0.875rem;font-weight:500;color:var(--sg-text);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;\">${escapeHtml(post.title)}</div>${metaHtml}</div></a>`;\n })\n .join(\"\");\n contentHtml = itemsHtml;\n }\n\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"background-color:var(--sg-bg);border-radius:var(--sg-card-radius, 0.75rem);border:1px solid var(--sg-border, #e5e7eb);overflow:hidden;\">${titleHtml}<div style=\"padding:0.5rem 0;\">${contentHtml}</div></div>`;\n}\n\n// ---------------------------------------------------------------------------\n// BlogTagCloud\n// ---------------------------------------------------------------------------\n\nexport function exportBlogTagCloud(\n block: Block,\n _depth: number,\n _basePath?: string,\n _theme?: ThemeTokens,\n): string {\n const {\n title = \"Tags\",\n tags = [],\n variant = \"badges\",\n } = (block as any).props;\n\n const titleHtml = title\n ? `<div style=\"padding:1rem 1.25rem;border-bottom:1px solid var(--sg-border, #e5e7eb);\"><h3 style=\"font-size:1rem;font-weight:600;margin:0;color:var(--sg-text);\">${escapeHtml(title)}</h3></div>`\n : \"\";\n\n let contentHtml = \"\";\n if (tags.length === 0) {\n contentHtml = `<p style=\"color:var(--sg-muted-text);font-size:0.875rem;text-align:center;margin:0;\">Nenhuma tag encontrada</p>`;\n } else if (variant === \"badges\") {\n const badgesHtml = tags\n .map(\n (tag: any) =>\n `<span style=\"display:inline-flex;align-items:center;gap:0.375rem;padding:0.3rem 0.75rem;border-radius:9999px;font-size:0.8125rem;font-weight:500;background-color:var(--sg-surface, #f3f4f6);color:var(--sg-text);\">${escapeHtml(tag.name)}<span style=\"font-size:0.6875rem;color:var(--sg-muted-text);opacity:0.7;\">(${tag.count})</span></span>`,\n )\n .join(\"\");\n contentHtml = `<div style=\"display:flex;flex-wrap:wrap;gap:0.5rem;\">${badgesHtml}</div>`;\n } else {\n const listHtml = tags\n .map(\n (tag: any) =>\n `<div style=\"display:flex;align-items:center;justify-content:space-between;padding:0.5rem 0.75rem;border-radius:var(--sg-card-radius, 0.5rem);font-size:0.875rem;color:var(--sg-text);\"><span>${escapeHtml(tag.name)}</span><span style=\"font-size:0.75rem;color:var(--sg-muted-text);background-color:var(--sg-surface, #f3f4f6);padding:0.125rem 0.5rem;border-radius:9999px;\">${tag.count}</span></div>`,\n )\n .join(\"\");\n contentHtml = `<div style=\"display:flex;flex-direction:column;gap:0.25rem;\">${listHtml}</div>`;\n }\n\n return `<div ${dataBlockIdAttr(block.id)} data-block-group=\"Conteúdo\" style=\"background-color:var(--sg-bg);border-radius:var(--sg-card-radius, 0.75rem);border:1px solid var(--sg-border, #e5e7eb);overflow:hidden;\">${titleHtml}<div style=\"padding:1rem 1.25rem;\">${contentHtml}</div></div>`;\n}\n"],"names":["exportBlogPostCard","block","depth","basePath","theme","title","excerpt","image","date","category","authorName","authorAvatar","readingTime","linkHref","linkText","variant","showImage","showCategory","showDate","showAuthor","showReadingTime","imgHtml","escapeHtml","metaParts","metaHtml","authorHtml","linkHtml","dataBlockIdAttr","buildPageUrl","baseUrl","page","separator","getPageNumbers","current","total","_","i","pages","start","end","generatePaginationHtml","currentPage","totalPages","paginationBaseUrl","btnBase","borderNormal","borderActive","prevHtml","pagesHtml","idx","isActive","nextHtml","exportBlogPostGrid","renderChild","subtitle","columns","cards","showViewAll","viewAllText","viewAllHref","gridId","generateScopedId","responsiveConfig","resolveResponsiveColumns","inlineStyles","mediaQueries","generateResponsiveGridStyles","headerHtml","cardsHtml","c","viewAllHtml","paginationHtml","exportBlogPostDetail","content","featuredImage","tags","showFeaturedImage","authorVariant","showTags","contentMaxWidth","authorBio","displayName","displayBio","featuredImageHtml","categoryHtml","titleHtml","contentHtml","avatarLargeHtml","avatarSmallHtml","bioHtml","tagsHtml","tag","exportBlogCategoryFilter","_depth","_basePath","_theme","categories","showCount","showAll","allLabel","activeCategory","filterUrl","buildHref","slug","itemsHtml","allChip","chips","cat","countHtml","allBtn","btns","allItem","items","exportBlogSearchBar","placeholder","showIcon","searchUrl","filterCategories","filterTags","filterDate","searchIconSvg","inputPadding","inputHtml","filters","exportBlogRecentPosts","posts","showThumbnail","post","exportBlogTagCloud"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4CH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,QAGpF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8CH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,WAAW,KAAK,MAAM,QAGpF"}
@@ -1,39 +1,41 @@
1
1
  import { htmlExportRegistry as r } from "../HtmlExporter.js";
2
2
  import { exportHero as n } from "./HeroExporter.js";
3
3
  import { exportNavbar as s } from "./NavbarExporter.js";
4
- import { exportFooter as d } from "./FooterExporter.js";
5
- import { exportFeature as g, exportCta as l, exportPricingCard as p, exportTestimonial as x, exportFaqItem as m, exportStats as C, exportStatItem as c, exportLogoCloud as h, exportSocialLinks as u, exportFeatureGrid as f, exportPricing as w, exportTestimonialGrid as b, exportFaq as G } from "./MarketingExporters.js";
6
- import { exportBlogCard as S, exportTeamCard as P, exportCourseCardGrid as B, exportCountdown as E, exportCarousel as z, exportBlogCardGrid as F, exportTeamGrid as q } from "./ContentGridExporters.js";
7
- import { exportBlogPostCard as I, exportBlogPostDetail as T, exportBlogCategoryFilter as y, exportBlogSearchBar as L, exportBlogPostGrid as R } from "./BlogPostExporters.js";
8
- import { exportProductShowcase as k, exportAboutSection as v, exportContactSection as D } from "./AdminSectionExporters.js";
4
+ import { exportFooter as g } from "./FooterExporter.js";
5
+ import { exportFeature as d, exportCta as l, exportPricingCard as p, exportTestimonial as x, exportFaqItem as C, exportStats as m, exportStatItem as c, exportLogoCloud as u, exportSocialLinks as h, exportFeatureGrid as f, exportPricing as w, exportTestimonialGrid as b, exportFaq as G } from "./MarketingExporters.js";
6
+ import { exportBlogCard as P, exportTeamCard as S, exportCourseCardGrid as B, exportCountdown as E, exportCarousel as z, exportBlogCardGrid as F, exportTeamGrid as T } from "./ContentGridExporters.js";
7
+ import { exportBlogPostCard as R, exportBlogPostDetail as q, exportBlogCategoryFilter as I, exportBlogSearchBar as y, exportBlogRecentPosts as L, exportBlogTagCloud as k, exportBlogPostGrid as v } from "./BlogPostExporters.js";
8
+ import { exportProductShowcase as D, exportAboutSection as A, exportContactSection as H } from "./AdminSectionExporters.js";
9
9
  let t = null;
10
- function Q(e) {
10
+ function V(e) {
11
11
  t = e;
12
12
  }
13
13
  r.register("hero", n);
14
14
  r.register("navbar", s);
15
- r.register("footer", d);
16
- r.register("feature", g);
15
+ r.register("footer", g);
16
+ r.register("feature", d);
17
17
  r.register("cta", l);
18
18
  r.register("pricingCard", p);
19
19
  r.register("testimonial", x);
20
- r.register("faqItem", m);
21
- r.register("stats", C);
20
+ r.register("faqItem", C);
21
+ r.register("stats", m);
22
22
  r.register("statItem", c);
23
- r.register("logoCloud", h);
24
- r.register("socialLinks", u);
25
- r.register("blogCard", S);
26
- r.register("blogPostCard", I);
27
- r.register("blogPostDetail", T);
28
- r.register("blogCategoryFilter", y);
29
- r.register("blogSearchBar", L);
30
- r.register("teamCard", P);
23
+ r.register("logoCloud", u);
24
+ r.register("socialLinks", h);
25
+ r.register("blogCard", P);
26
+ r.register("blogPostCard", R);
27
+ r.register("blogPostDetail", q);
28
+ r.register("blogCategoryFilter", I);
29
+ r.register("blogSearchBar", y);
30
+ r.register("blogRecentPosts", L);
31
+ r.register("blogTagCloud", k);
32
+ r.register("teamCard", S);
31
33
  r.register("courseCardGrid", B);
32
34
  r.register("countdown", E);
33
35
  r.register("carousel", z);
34
- r.register("productShowcase", k);
35
- r.register("aboutSection", v);
36
- r.register("contactSection", D);
36
+ r.register("productShowcase", D);
37
+ r.register("aboutSection", A);
38
+ r.register("contactSection", H);
37
39
  r.register("featureGrid", (e, o, i, a) => {
38
40
  if (!t) throw new Error("renderChild not initialized");
39
41
  return f(e);
@@ -56,13 +58,13 @@ r.register("blogCardGrid", (e, o, i, a) => {
56
58
  });
57
59
  r.register("blogPostGrid", (e, o, i, a) => {
58
60
  if (!t) throw new Error("renderChild not initialized");
59
- return R(e, o, i, a, t);
61
+ return v(e, o, i, a, t);
60
62
  });
61
63
  r.register("teamGrid", (e, o, i, a) => {
62
64
  if (!t) throw new Error("renderChild not initialized");
63
- return q(e, o, i, a, t);
65
+ return T(e, o, i, a, t);
64
66
  });
65
67
  export {
66
- Q as setSectionExportersRenderChild
68
+ V as setSectionExportersRenderChild
67
69
  };
68
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"sourcesContent":["/**\n * Section Exporters Auto-Registration\n */\n\nimport { htmlExportRegistry } from \"../HtmlExporter\";\nimport { exportHero } from \"./HeroExporter\";\nimport { exportNavbar } from \"./NavbarExporter\";\nimport { exportFooter } from \"./FooterExporter\";\nimport {\n exportFeature,\n exportFeatureGrid,\n exportCta,\n exportPricingCard,\n exportPricing,\n exportTestimonial,\n exportTestimonialGrid,\n exportFaqItem,\n exportFaq,\n exportStats,\n exportStatItem,\n exportLogoCloud,\n exportSocialLinks,\n} from \"./MarketingExporters\";\nimport {\n exportBlogCard,\n exportBlogCardGrid,\n exportTeamCard,\n exportTeamGrid,\n exportCourseCardGrid,\n exportCountdown,\n exportCarousel,\n} from \"./ContentGridExporters\";\nimport {\n exportBlogPostCard,\n exportBlogPostGrid,\n exportBlogPostDetail,\n exportBlogCategoryFilter,\n exportBlogSearchBar,\n} from \"./BlogPostExporters\";\nimport {\n exportProductShowcase,\n exportAboutSection,\n exportContactSection,\n} from \"./AdminSectionExporters\";\n\n// Referência para renderChild\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\n\nlet renderChildRef: ((block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string) | null = null;\n\nexport function setSectionExportersRenderChild(\n fn: (block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string\n) {\n renderChildRef = fn;\n}\n\n// Exporters simples (sem children)\nhtmlExportRegistry.register(\"hero\", exportHero);\nhtmlExportRegistry.register(\"navbar\", exportNavbar);\nhtmlExportRegistry.register(\"footer\", exportFooter);\nhtmlExportRegistry.register(\"feature\", exportFeature);\nhtmlExportRegistry.register(\"cta\", exportCta);\nhtmlExportRegistry.register(\"pricingCard\", exportPricingCard);\nhtmlExportRegistry.register(\"testimonial\", exportTestimonial);\nhtmlExportRegistry.register(\"faqItem\", exportFaqItem);\nhtmlExportRegistry.register(\"stats\", exportStats);\nhtmlExportRegistry.register(\"statItem\", exportStatItem);\nhtmlExportRegistry.register(\"logoCloud\", exportLogoCloud);\nhtmlExportRegistry.register(\"socialLinks\", exportSocialLinks);\nhtmlExportRegistry.register(\"blogCard\", exportBlogCard);\nhtmlExportRegistry.register(\"blogPostCard\", exportBlogPostCard);\nhtmlExportRegistry.register(\"blogPostDetail\", exportBlogPostDetail);\nhtmlExportRegistry.register(\"blogCategoryFilter\", exportBlogCategoryFilter);\nhtmlExportRegistry.register(\"blogSearchBar\", exportBlogSearchBar);\nhtmlExportRegistry.register(\"teamCard\", exportTeamCard);\nhtmlExportRegistry.register(\"courseCardGrid\", exportCourseCardGrid);\nhtmlExportRegistry.register(\"countdown\", exportCountdown);\nhtmlExportRegistry.register(\"carousel\", exportCarousel);\nhtmlExportRegistry.register(\"productShowcase\", exportProductShowcase);\nhtmlExportRegistry.register(\"aboutSection\", exportAboutSection);\nhtmlExportRegistry.register(\"contactSection\", exportContactSection);\n\n// Exporters que precisam de renderChild\nhtmlExportRegistry.register(\"featureGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFeatureGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"pricing\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportPricing(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"testimonialGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTestimonialGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"faq\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFaq(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogCardGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogCardGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogPostGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogPostGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"teamGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTeamGrid(block, depth, basePath, theme, renderChildRef);\n});\n"],"names":["renderChildRef","setSectionExportersRenderChild","fn","htmlExportRegistry","exportHero","exportNavbar","exportFooter","exportFeature","exportCta","exportPricingCard","exportTestimonial","exportFaqItem","exportStats","exportStatItem","exportLogoCloud","exportSocialLinks","exportBlogCard","exportBlogPostCard","exportBlogPostDetail","exportBlogCategoryFilter","exportBlogSearchBar","exportTeamCard","exportCourseCardGrid","exportCountdown","exportCarousel","exportProductShowcase","exportAboutSection","exportContactSection","block","depth","basePath","theme","exportFeatureGrid","exportPricing","exportTestimonialGrid","exportFaq","exportBlogCardGrid","exportBlogPostGrid","exportTeamGrid"],"mappings":";;;;;;;;AAiDA,IAAIA,IAA2G;AAExG,SAASC,EACdC,GACA;AACA,EAAAF,IAAiBE;AACnB;AAGAC,EAAmB,SAAS,QAAQC,CAAU;AAC9CD,EAAmB,SAAS,UAAUE,CAAY;AAClDF,EAAmB,SAAS,UAAUG,CAAY;AAClDH,EAAmB,SAAS,WAAWI,CAAa;AACpDJ,EAAmB,SAAS,OAAOK,CAAS;AAC5CL,EAAmB,SAAS,eAAeM,CAAiB;AAC5DN,EAAmB,SAAS,eAAeO,CAAiB;AAC5DP,EAAmB,SAAS,WAAWQ,CAAa;AACpDR,EAAmB,SAAS,SAASS,CAAW;AAChDT,EAAmB,SAAS,YAAYU,CAAc;AACtDV,EAAmB,SAAS,aAAaW,CAAe;AACxDX,EAAmB,SAAS,eAAeY,CAAiB;AAC5DZ,EAAmB,SAAS,YAAYa,CAAc;AACtDb,EAAmB,SAAS,gBAAgBc,CAAkB;AAC9Dd,EAAmB,SAAS,kBAAkBe,CAAoB;AAClEf,EAAmB,SAAS,sBAAsBgB,CAAwB;AAC1EhB,EAAmB,SAAS,iBAAiBiB,CAAmB;AAChEjB,EAAmB,SAAS,YAAYkB,CAAc;AACtDlB,EAAmB,SAAS,kBAAkBmB,CAAoB;AAClEnB,EAAmB,SAAS,aAAaoB,CAAe;AACxDpB,EAAmB,SAAS,YAAYqB,CAAc;AACtDrB,EAAmB,SAAS,mBAAmBsB,CAAqB;AACpEtB,EAAmB,SAAS,gBAAgBuB,CAAkB;AAC9DvB,EAAmB,SAAS,kBAAkBwB,CAAoB;AAGlExB,EAAmB,SAAS,eAAe,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AAC5E,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOgC,EAAkBJ,CAA6C;AACxE,CAAC;AAEDzB,EAAmB,SAAS,WAAW,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AACxE,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOiC,EAAcL,GAAOC,GAAOC,GAAUC,GAAO/B,CAAc;AACpE,CAAC;AAEDG,EAAmB,SAAS,mBAAmB,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AAChF,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOkC,EAAsBN,GAAOC,GAAOC,GAAUC,GAAO/B,CAAc;AAC5E,CAAC;AAEDG,EAAmB,SAAS,OAAO,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AACpE,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOmC,EAAUP,GAAOC,GAAOC,GAAUC,GAAO/B,CAAc;AAChE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOoC,EAAmBR,GAAOC,GAAOC,GAAUC,GAAO/B,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOqC,EAAmBT,GAAOC,GAAOC,GAAUC,GAAO/B,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,YAAY,CAACyB,GAAOC,GAAOC,GAAUC,MAAU;AACzE,MAAI,CAAC/B,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOsC,EAAeV,GAAOC,GAAOC,GAAUC,GAAO/B,CAAc;AACrE,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/engine/export/exporters/sections/index.ts"],"sourcesContent":["/**\n * Section Exporters Auto-Registration\n */\n\nimport { htmlExportRegistry } from \"../HtmlExporter\";\nimport { exportHero } from \"./HeroExporter\";\nimport { exportNavbar } from \"./NavbarExporter\";\nimport { exportFooter } from \"./FooterExporter\";\nimport {\n exportFeature,\n exportFeatureGrid,\n exportCta,\n exportPricingCard,\n exportPricing,\n exportTestimonial,\n exportTestimonialGrid,\n exportFaqItem,\n exportFaq,\n exportStats,\n exportStatItem,\n exportLogoCloud,\n exportSocialLinks,\n} from \"./MarketingExporters\";\nimport {\n exportBlogCard,\n exportBlogCardGrid,\n exportTeamCard,\n exportTeamGrid,\n exportCourseCardGrid,\n exportCountdown,\n exportCarousel,\n} from \"./ContentGridExporters\";\nimport {\n exportBlogPostCard,\n exportBlogPostGrid,\n exportBlogPostDetail,\n exportBlogCategoryFilter,\n exportBlogSearchBar,\n exportBlogRecentPosts,\n exportBlogTagCloud,\n} from \"./BlogPostExporters\";\nimport {\n exportProductShowcase,\n exportAboutSection,\n exportContactSection,\n} from \"./AdminSectionExporters\";\n\n// Referência para renderChild\nimport { Block } from \"../../../schema/siteDocument\";\nimport { ThemeTokens } from \"../../../schema/themeTokens\";\n\nlet renderChildRef: ((block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string) | null = null;\n\nexport function setSectionExportersRenderChild(\n fn: (block: Block, depth: number, basePath?: string, theme?: ThemeTokens) => string\n) {\n renderChildRef = fn;\n}\n\n// Exporters simples (sem children)\nhtmlExportRegistry.register(\"hero\", exportHero);\nhtmlExportRegistry.register(\"navbar\", exportNavbar);\nhtmlExportRegistry.register(\"footer\", exportFooter);\nhtmlExportRegistry.register(\"feature\", exportFeature);\nhtmlExportRegistry.register(\"cta\", exportCta);\nhtmlExportRegistry.register(\"pricingCard\", exportPricingCard);\nhtmlExportRegistry.register(\"testimonial\", exportTestimonial);\nhtmlExportRegistry.register(\"faqItem\", exportFaqItem);\nhtmlExportRegistry.register(\"stats\", exportStats);\nhtmlExportRegistry.register(\"statItem\", exportStatItem);\nhtmlExportRegistry.register(\"logoCloud\", exportLogoCloud);\nhtmlExportRegistry.register(\"socialLinks\", exportSocialLinks);\nhtmlExportRegistry.register(\"blogCard\", exportBlogCard);\nhtmlExportRegistry.register(\"blogPostCard\", exportBlogPostCard);\nhtmlExportRegistry.register(\"blogPostDetail\", exportBlogPostDetail);\nhtmlExportRegistry.register(\"blogCategoryFilter\", exportBlogCategoryFilter);\nhtmlExportRegistry.register(\"blogSearchBar\", exportBlogSearchBar);\nhtmlExportRegistry.register(\"blogRecentPosts\", exportBlogRecentPosts);\nhtmlExportRegistry.register(\"blogTagCloud\", exportBlogTagCloud);\nhtmlExportRegistry.register(\"teamCard\", exportTeamCard);\nhtmlExportRegistry.register(\"courseCardGrid\", exportCourseCardGrid);\nhtmlExportRegistry.register(\"countdown\", exportCountdown);\nhtmlExportRegistry.register(\"carousel\", exportCarousel);\nhtmlExportRegistry.register(\"productShowcase\", exportProductShowcase);\nhtmlExportRegistry.register(\"aboutSection\", exportAboutSection);\nhtmlExportRegistry.register(\"contactSection\", exportContactSection);\n\n// Exporters que precisam de renderChild\nhtmlExportRegistry.register(\"featureGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFeatureGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"pricing\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportPricing(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"testimonialGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTestimonialGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"faq\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportFaq(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogCardGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogCardGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"blogPostGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportBlogPostGrid(block, depth, basePath, theme, renderChildRef);\n});\n\nhtmlExportRegistry.register(\"teamGrid\", (block, depth, basePath, theme) => {\n if (!renderChildRef) throw new Error(\"renderChild not initialized\");\n return exportTeamGrid(block, depth, basePath, theme, renderChildRef);\n});\n"],"names":["renderChildRef","setSectionExportersRenderChild","fn","htmlExportRegistry","exportHero","exportNavbar","exportFooter","exportFeature","exportCta","exportPricingCard","exportTestimonial","exportFaqItem","exportStats","exportStatItem","exportLogoCloud","exportSocialLinks","exportBlogCard","exportBlogPostCard","exportBlogPostDetail","exportBlogCategoryFilter","exportBlogSearchBar","exportBlogRecentPosts","exportBlogTagCloud","exportTeamCard","exportCourseCardGrid","exportCountdown","exportCarousel","exportProductShowcase","exportAboutSection","exportContactSection","block","depth","basePath","theme","exportFeatureGrid","exportPricing","exportTestimonialGrid","exportFaq","exportBlogCardGrid","exportBlogPostGrid","exportTeamGrid"],"mappings":";;;;;;;;AAmDA,IAAIA,IAA2G;AAExG,SAASC,EACdC,GACA;AACA,EAAAF,IAAiBE;AACnB;AAGAC,EAAmB,SAAS,QAAQC,CAAU;AAC9CD,EAAmB,SAAS,UAAUE,CAAY;AAClDF,EAAmB,SAAS,UAAUG,CAAY;AAClDH,EAAmB,SAAS,WAAWI,CAAa;AACpDJ,EAAmB,SAAS,OAAOK,CAAS;AAC5CL,EAAmB,SAAS,eAAeM,CAAiB;AAC5DN,EAAmB,SAAS,eAAeO,CAAiB;AAC5DP,EAAmB,SAAS,WAAWQ,CAAa;AACpDR,EAAmB,SAAS,SAASS,CAAW;AAChDT,EAAmB,SAAS,YAAYU,CAAc;AACtDV,EAAmB,SAAS,aAAaW,CAAe;AACxDX,EAAmB,SAAS,eAAeY,CAAiB;AAC5DZ,EAAmB,SAAS,YAAYa,CAAc;AACtDb,EAAmB,SAAS,gBAAgBc,CAAkB;AAC9Dd,EAAmB,SAAS,kBAAkBe,CAAoB;AAClEf,EAAmB,SAAS,sBAAsBgB,CAAwB;AAC1EhB,EAAmB,SAAS,iBAAiBiB,CAAmB;AAChEjB,EAAmB,SAAS,mBAAmBkB,CAAqB;AACpElB,EAAmB,SAAS,gBAAgBmB,CAAkB;AAC9DnB,EAAmB,SAAS,YAAYoB,CAAc;AACtDpB,EAAmB,SAAS,kBAAkBqB,CAAoB;AAClErB,EAAmB,SAAS,aAAasB,CAAe;AACxDtB,EAAmB,SAAS,YAAYuB,CAAc;AACtDvB,EAAmB,SAAS,mBAAmBwB,CAAqB;AACpExB,EAAmB,SAAS,gBAAgByB,CAAkB;AAC9DzB,EAAmB,SAAS,kBAAkB0B,CAAoB;AAGlE1B,EAAmB,SAAS,eAAe,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AAC5E,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOkC,EAAkBJ,CAA6C;AACxE,CAAC;AAED3B,EAAmB,SAAS,WAAW,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AACxE,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOmC,EAAcL,GAAOC,GAAOC,GAAUC,GAAOjC,CAAc;AACpE,CAAC;AAEDG,EAAmB,SAAS,mBAAmB,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AAChF,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOoC,EAAsBN,GAAOC,GAAOC,GAAUC,GAAOjC,CAAc;AAC5E,CAAC;AAEDG,EAAmB,SAAS,OAAO,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AACpE,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOqC,EAAUP,GAAOC,GAAOC,GAAUC,GAAOjC,CAAc;AAChE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOsC,EAAmBR,GAAOC,GAAOC,GAAUC,GAAOjC,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,gBAAgB,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AAC7E,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOuC,EAAmBT,GAAOC,GAAOC,GAAUC,GAAOjC,CAAc;AACzE,CAAC;AAEDG,EAAmB,SAAS,YAAY,CAAC2B,GAAOC,GAAOC,GAAUC,MAAU;AACzE,MAAI,CAACjC,EAAgB,OAAM,IAAI,MAAM,6BAA6B;AAClE,SAAOwC,EAAeV,GAAOC,GAAOC,GAAUC,GAAOjC,CAAc;AACrE,CAAC;"}
@@ -1,6 +1,6 @@
1
- import { createEmptySiteDocument as ae } from "./schema/siteDocument.js";
2
- import { corporateThemeTokens as ie, darkThemeTokens as pe, defaultComponentTokens as se, defaultEffectTokens as ne, defaultLayoutTokens as le, defaultThemeTokens as ce, generateThemeCSSVariables as ge, gradientDirectionMap as de, gradientThemeTokens as fe, playfulThemeTokens as he, radiusScaleMap as Pe, shadowScaleMap as Te, spacingScaleMap as xe } from "./schema/themeTokens.js";
3
- import { componentRegistry as ke } from "./registry/registry.js";
1
+ import { createEmptySiteDocument as ie } from "./schema/siteDocument.js";
2
+ import { corporateThemeTokens as se, darkThemeTokens as ne, defaultComponentTokens as le, defaultEffectTokens as ce, defaultLayoutTokens as ge, defaultThemeTokens as de, generateThemeCSSVariables as fe, gradientDirectionMap as he, gradientThemeTokens as Pe, playfulThemeTokens as Te, radiusScaleMap as xe, shadowScaleMap as Se, spacingScaleMap as ke } from "./schema/themeTokens.js";
3
+ import { componentRegistry as ye } from "./registry/registry.js";
4
4
  import "./registry/blocks/layout/container.js";
5
5
  import "./registry/blocks/layout/stack.js";
6
6
  import "./registry/blocks/layout/grid.js";
@@ -50,103 +50,105 @@ import "./registry/blocks/sections/blogSearchBar.js";
50
50
  import "./registry/blocks/sections/productShowcase.js";
51
51
  import "./registry/blocks/sections/aboutSection.js";
52
52
  import "./registry/blocks/sections/contactSection.js";
53
+ import "./registry/blocks/sections/blogRecentPosts.js";
54
+ import "./registry/blocks/sections/blogTagCloud.js";
53
55
  import "./registry/blocks/forms/form.js";
54
56
  import "./registry/blocks/forms/input.js";
55
57
  import "./registry/blocks/forms/textarea.js";
56
58
  import "./registry/blocks/forms/select.js";
57
- import { RenderNode as ye } from "./render/renderNode.js";
58
- import { RenderPage as Ce, renderPage as Ve } from "./render/renderPage.js";
59
- import { clearHtmlCache as He, exportBlockToHtml as ve, exportDocumentToHtml as Re, exportPageToHtml as Ee, generateAssetsManifest as Ae } from "./export/exportHtml.js";
60
- import { isSafeUrl as Le, sanitizeHtml as Ie } from "./export/sanitizeHtml.js";
61
- import { Preview as ee } from "./preview/Preview.js";
62
- import { applyPatch as Oe, createAddPatch as _e, createCopyPatch as we, createMovePatch as Be, createRemovePatch as Ge, createReplacePatch as je } from "./patch/applyPatch.js";
63
- import { HistoryManager as We, createHistoryManager as ze } from "./patch/history.js";
64
- import { PatchBuilder as Ke } from "./patch/PatchBuilder.js";
65
- import { applyOverrides as Je, classicPreset as Qe, cleanPreset as Xe, corporatePreset as Ye, getAllPresets as Ze, getPreset as $e, glassPreset as er, minimalPreset as rr, neonPreset as tr, pastelPreset as or, playfulKidsPreset as ar, themePresets as mr, validateContrast as ir } from "./presets/themePresets.js";
66
- import { HERO_IMAGE_NAMES as sr, PLACEHOLDER_IMAGE_URL as nr, getHeroVariation as lr, heroVariationIds as cr, heroVariations as gr } from "./presets/heroVariations.js";
67
- import { getNavbarVariation as fr, navbarVariationIds as hr, navbarVariations as Pr } from "./presets/navbarVariations.js";
68
- import { generateCompleteLandingPage as xr, generateModernLandingPage as Sr, generatePatchesForLandingPage as kr } from "./generators/generateLandingPage.js";
59
+ import { RenderNode as Ce } from "./render/renderNode.js";
60
+ import { RenderPage as be, renderPage as He } from "./render/renderPage.js";
61
+ import { clearHtmlCache as Re, exportBlockToHtml as Ee, exportDocumentToHtml as Ae, exportPageToHtml as De, generateAssetsManifest as Le } from "./export/exportHtml.js";
62
+ import { isSafeUrl as Ne, sanitizeHtml as Oe } from "./export/sanitizeHtml.js";
63
+ import { Preview as te } from "./preview/Preview.js";
64
+ import { applyPatch as we, createAddPatch as Be, createCopyPatch as Ge, createMovePatch as je, createRemovePatch as Ue, createReplacePatch as We } from "./patch/applyPatch.js";
65
+ import { HistoryManager as Fe, createHistoryManager as Ke } from "./patch/history.js";
66
+ import { PatchBuilder as Je } from "./patch/PatchBuilder.js";
67
+ import { applyOverrides as Xe, classicPreset as Ye, cleanPreset as Ze, corporatePreset as $e, getAllPresets as er, getPreset as rr, glassPreset as tr, minimalPreset as or, neonPreset as ar, pastelPreset as mr, playfulKidsPreset as ir, themePresets as pr, validateContrast as sr } from "./presets/themePresets.js";
68
+ import { HERO_IMAGE_NAMES as lr, PLACEHOLDER_IMAGE_URL as cr, getHeroVariation as gr, heroVariationIds as dr, heroVariations as fr } from "./presets/heroVariations.js";
69
+ import { getNavbarVariation as Pr, navbarVariationIds as Tr, navbarVariations as xr } from "./presets/navbarVariations.js";
70
+ import { generateCompleteLandingPage as kr, generateModernLandingPage as ur, generatePatchesForLandingPage as yr } from "./generators/generateLandingPage.js";
69
71
  import "./plugins/builtin/blog/manifest.js";
70
- import { evaluateShowWhen as yr } from "./shared/showWhen.js";
71
- import { createThemeStyle as Cr, generateCSSVariables as Vr, generateCSSVariablesObject as br, mergeThemeTokens as Hr } from "./theme/generateCSSVariables.js";
72
- import { gridPresetMap as Rr, imageGridPresetIds as Er } from "./shared/imageGrid/presets.js";
73
- import { hydratePageWithContent as Dr } from "./plugins/contentHydration.js";
74
- import { matchDynamicPage as Ir } from "./plugins/dynamicPageResolver.js";
75
- import { pluginRegistry as Or } from "./plugins/pluginRegistry.js";
76
- import { renderBlockNode as wr } from "./render/renderNodeImpl.js";
77
- import { darkTheme as Gr, defaultTheme as jr } from "./theme/defaultTheme.js";
72
+ import { evaluateShowWhen as Cr } from "./shared/showWhen.js";
73
+ import { createThemeStyle as br, generateCSSVariables as Hr, generateCSSVariablesObject as vr, mergeThemeTokens as Rr } from "./theme/generateCSSVariables.js";
74
+ import { gridPresetMap as Ar, imageGridPresetIds as Dr } from "./shared/imageGrid/presets.js";
75
+ import { hydratePageWithContent as Ir } from "./plugins/contentHydration.js";
76
+ import { matchDynamicPage as Or } from "./plugins/dynamicPageResolver.js";
77
+ import { pluginRegistry as wr } from "./plugins/pluginRegistry.js";
78
+ import { renderBlockNode as Gr } from "./render/renderNodeImpl.js";
79
+ import { darkTheme as Ur, defaultTheme as Wr } from "./theme/defaultTheme.js";
78
80
  export {
79
- sr as HERO_IMAGE_NAMES,
80
- We as HistoryManager,
81
- nr as PLACEHOLDER_IMAGE_URL,
82
- Ke as PatchBuilder,
83
- ee as Preview,
84
- ye as RenderNode,
85
- Ce as RenderPage,
86
- Je as applyOverrides,
87
- Oe as applyPatch,
88
- Qe as classicPreset,
89
- Xe as cleanPreset,
90
- He as clearHtmlCache,
91
- ke as componentRegistry,
92
- Ye as corporatePreset,
93
- ie as corporateThemeTokens,
94
- _e as createAddPatch,
95
- we as createCopyPatch,
96
- ae as createEmptySiteDocument,
97
- ze as createHistoryManager,
98
- Be as createMovePatch,
99
- Ge as createRemovePatch,
100
- je as createReplacePatch,
101
- Cr as createSiteThemeStyle,
102
- pe as darkThemeTokens,
103
- se as defaultComponentTokens,
104
- ne as defaultEffectTokens,
105
- le as defaultLayoutTokens,
106
- ce as defaultThemeTokens,
107
- yr as evaluateShowWhen,
108
- ve as exportBlockToHtml,
109
- Re as exportDocumentToHtml,
110
- Ee as exportPageToHtml,
111
- Ae as generateAssetsManifest,
112
- xr as generateCompleteLandingPage,
113
- Sr as generateModernLandingPage,
114
- kr as generatePatchesForLandingPage,
115
- Vr as generateSiteCSSVariables,
116
- br as generateSiteCSSVariablesObject,
117
- ge as generateThemeCSSVariables,
118
- Ze as getAllPresets,
119
- lr as getHeroVariation,
120
- fr as getNavbarVariation,
121
- $e as getPreset,
122
- er as glassPreset,
123
- de as gradientDirectionMap,
124
- fe as gradientThemeTokens,
125
- Rr as gridPresetMap,
126
- cr as heroVariationIds,
127
- gr as heroVariations,
128
- Dr as hydratePageWithContent,
129
- Er as imageGridPresetIds,
130
- Le as isSafeUrl,
131
- Ir as matchDynamicPage,
132
- Hr as mergeSiteThemeTokens,
133
- rr as minimalPreset,
134
- hr as navbarVariationIds,
135
- Pr as navbarVariations,
136
- tr as neonPreset,
137
- or as pastelPreset,
138
- ar as playfulKidsPreset,
139
- he as playfulThemeTokens,
140
- Or as pluginRegistry,
141
- Pe as radiusScaleMap,
142
- wr as renderNode,
143
- Ve as renderPage,
144
- Ie as sanitizeHtml,
145
- Te as shadowScaleMap,
146
- Gr as siteDarkTheme,
147
- jr as siteDefaultTheme,
148
- xe as spacingScaleMap,
149
- mr as themePresets,
150
- ir as validateContrast
81
+ lr as HERO_IMAGE_NAMES,
82
+ Fe as HistoryManager,
83
+ cr as PLACEHOLDER_IMAGE_URL,
84
+ Je as PatchBuilder,
85
+ te as Preview,
86
+ Ce as RenderNode,
87
+ be as RenderPage,
88
+ Xe as applyOverrides,
89
+ we as applyPatch,
90
+ Ye as classicPreset,
91
+ Ze as cleanPreset,
92
+ Re as clearHtmlCache,
93
+ ye as componentRegistry,
94
+ $e as corporatePreset,
95
+ se as corporateThemeTokens,
96
+ Be as createAddPatch,
97
+ Ge as createCopyPatch,
98
+ ie as createEmptySiteDocument,
99
+ Ke as createHistoryManager,
100
+ je as createMovePatch,
101
+ Ue as createRemovePatch,
102
+ We as createReplacePatch,
103
+ br as createSiteThemeStyle,
104
+ ne as darkThemeTokens,
105
+ le as defaultComponentTokens,
106
+ ce as defaultEffectTokens,
107
+ ge as defaultLayoutTokens,
108
+ de as defaultThemeTokens,
109
+ Cr as evaluateShowWhen,
110
+ Ee as exportBlockToHtml,
111
+ Ae as exportDocumentToHtml,
112
+ De as exportPageToHtml,
113
+ Le as generateAssetsManifest,
114
+ kr as generateCompleteLandingPage,
115
+ ur as generateModernLandingPage,
116
+ yr as generatePatchesForLandingPage,
117
+ Hr as generateSiteCSSVariables,
118
+ vr as generateSiteCSSVariablesObject,
119
+ fe as generateThemeCSSVariables,
120
+ er as getAllPresets,
121
+ gr as getHeroVariation,
122
+ Pr as getNavbarVariation,
123
+ rr as getPreset,
124
+ tr as glassPreset,
125
+ he as gradientDirectionMap,
126
+ Pe as gradientThemeTokens,
127
+ Ar as gridPresetMap,
128
+ dr as heroVariationIds,
129
+ fr as heroVariations,
130
+ Ir as hydratePageWithContent,
131
+ Dr as imageGridPresetIds,
132
+ Ne as isSafeUrl,
133
+ Or as matchDynamicPage,
134
+ Rr as mergeSiteThemeTokens,
135
+ or as minimalPreset,
136
+ Tr as navbarVariationIds,
137
+ xr as navbarVariations,
138
+ ar as neonPreset,
139
+ mr as pastelPreset,
140
+ ir as playfulKidsPreset,
141
+ Te as playfulThemeTokens,
142
+ wr as pluginRegistry,
143
+ xe as radiusScaleMap,
144
+ Gr as renderNode,
145
+ He as renderPage,
146
+ Oe as sanitizeHtml,
147
+ Se as shadowScaleMap,
148
+ Ur as siteDarkTheme,
149
+ Wr as siteDefaultTheme,
150
+ ke as spacingScaleMap,
151
+ pr as themePresets,
152
+ sr as validateContrast
151
153
  };
152
154
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../../src/engine/plugins/builtin/blog/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAqFtD,eAAO,MAAM,UAAU,EAAE,kBA0XxB,CAAC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../../../src/engine/plugins/builtin/blog/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAqFtD,eAAO,MAAM,UAAU,EAAE,kBAqdxB,CAAC"}