@sonordev/site-kit 3.4.0 → 3.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.
- package/README.md +2 -2
- package/agent-manifest.json +1 -1
- package/dist/AnalyticsProvider-35EDQA5V.js +31 -0
- package/dist/{AnalyticsProvider-ARAWVJPX.js.map → AnalyticsProvider-35EDQA5V.js.map} +1 -1
- package/dist/AnalyticsProvider-V5CWTWWO.mjs +10 -0
- package/dist/{AnalyticsProvider-HIGSPNRA.mjs.map → AnalyticsProvider-V5CWTWWO.mjs.map} +1 -1
- package/dist/ChatWidget-2OK6DD66.js +19 -0
- package/dist/{ChatWidget-BDES6WUR.js.map → ChatWidget-2OK6DD66.js.map} +1 -1
- package/dist/ChatWidget-WNT6VNJK.mjs +10 -0
- package/dist/{ChatWidget-47KAOFLG.mjs.map → ChatWidget-WNT6VNJK.mjs.map} +1 -1
- package/dist/EngageWidget-7RZIC426.js +18 -0
- package/dist/{EngageWidget-X3NIWGMZ.js.map → EngageWidget-7RZIC426.js.map} +1 -1
- package/dist/EngageWidget-GWME22IP.mjs +9 -0
- package/dist/{EngageWidget-HPZAI6SU.mjs.map → EngageWidget-GWME22IP.mjs.map} +1 -1
- package/dist/{SignalCore-K2CTZ52G.js → SignalCore-DK4HQBPY.js} +11 -10
- package/dist/SignalCore-DK4HQBPY.js.map +1 -0
- package/dist/{SignalCore-XABEH2GA.mjs → SignalCore-TW4YA3BW.mjs} +5 -4
- package/dist/SignalCore-TW4YA3BW.mjs.map +1 -0
- package/dist/SitemapSync-7PXQMF5A.mjs +8 -0
- package/dist/{SitemapSync-OQPRGBG3.mjs.map → SitemapSync-7PXQMF5A.mjs.map} +1 -1
- package/dist/SitemapSync-O3J2DPV7.js +17 -0
- package/dist/{SitemapSync-4BALOI4B.js.map → SitemapSync-O3J2DPV7.js.map} +1 -1
- package/dist/analytics/index.js +12 -11
- package/dist/analytics/index.mjs +5 -4
- package/dist/blog/index.d.mts +3 -3
- package/dist/blog/index.d.ts +3 -3
- package/dist/blog/index.js +11 -15
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +2 -2
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/server-ui.d.mts +1 -1
- package/dist/blog/server-ui.d.ts +1 -1
- package/dist/blog/server-ui.js +198 -9
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +198 -2
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.mts +27 -8
- package/dist/blog/server.d.ts +27 -8
- package/dist/blog/server.js +45 -43
- package/dist/blog/server.mjs +3 -1
- package/dist/{chunk-PYA4BR2N.mjs → chunk-2NA5CAK5.mjs} +3 -3
- package/dist/{chunk-PYA4BR2N.mjs.map → chunk-2NA5CAK5.mjs.map} +1 -1
- package/dist/{chunk-WN5A3KSY.mjs → chunk-34IUDOBC.mjs} +2 -2
- package/dist/{chunk-WN5A3KSY.mjs.map → chunk-34IUDOBC.mjs.map} +1 -1
- package/dist/{chunk-6Q72JAL2.js → chunk-3KEZ2YHQ.js} +6 -6
- package/dist/{chunk-6Q72JAL2.js.map → chunk-3KEZ2YHQ.js.map} +1 -1
- package/dist/{chunk-WVAY4ZWC.mjs → chunk-5WQHWBCW.mjs} +10 -29
- package/dist/chunk-5WQHWBCW.mjs.map +1 -0
- package/dist/{chunk-QE53WRXW.mjs → chunk-6JVDIW5L.mjs} +4 -4
- package/dist/{chunk-QE53WRXW.mjs.map → chunk-6JVDIW5L.mjs.map} +1 -1
- package/dist/{chunk-7TX5BKVA.js → chunk-6T4NVCAT.js} +2 -2
- package/dist/{chunk-7TX5BKVA.js.map → chunk-6T4NVCAT.js.map} +1 -1
- package/dist/{chunk-VE5XLADP.mjs → chunk-7FZWMAI2.mjs} +3 -3
- package/dist/{chunk-VE5XLADP.mjs.map → chunk-7FZWMAI2.mjs.map} +1 -1
- package/dist/chunk-BNJH2RFU.mjs +139 -0
- package/dist/chunk-BNJH2RFU.mjs.map +1 -0
- package/dist/{chunk-WZHWWOUC.js → chunk-BX6FFL2Y.js} +6 -16
- package/dist/chunk-BX6FFL2Y.js.map +1 -0
- package/dist/chunk-CGCYZJYX.mjs +41 -0
- package/dist/chunk-CGCYZJYX.mjs.map +1 -0
- package/dist/{chunk-5SJKYZID.js → chunk-CTPE3G5W.js} +5 -5
- package/dist/{chunk-5SJKYZID.js.map → chunk-CTPE3G5W.js.map} +1 -1
- package/dist/chunk-CXDIWBIQ.js +78 -0
- package/dist/chunk-CXDIWBIQ.js.map +1 -0
- package/dist/chunk-DWVF7SEK.mjs +35 -0
- package/dist/chunk-DWVF7SEK.mjs.map +1 -0
- package/dist/{chunk-MCDQM75H.js → chunk-EH7QQU6P.js} +15 -15
- package/dist/{chunk-MCDQM75H.js.map → chunk-EH7QQU6P.js.map} +1 -1
- package/dist/{chunk-X4OPM3SK.mjs → chunk-GU5OTUQS.mjs} +5 -14
- package/dist/chunk-GU5OTUQS.mjs.map +1 -0
- package/dist/{chunk-SH4VZDVX.mjs → chunk-GUXB3QH7.mjs} +38 -67
- package/dist/chunk-GUXB3QH7.mjs.map +1 -0
- package/dist/{chunk-JRUNONG5.mjs → chunk-HRJ65XKY.mjs} +3 -3
- package/dist/{chunk-JRUNONG5.mjs.map → chunk-HRJ65XKY.mjs.map} +1 -1
- package/dist/{chunk-7UYUVHCR.js → chunk-IMDSDDRU.js} +4 -4
- package/dist/{chunk-7UYUVHCR.js.map → chunk-IMDSDDRU.js.map} +1 -1
- package/dist/{chunk-LQHZFUZJ.mjs → chunk-INGAARGC.mjs} +3 -3
- package/dist/{chunk-LQHZFUZJ.mjs.map → chunk-INGAARGC.mjs.map} +1 -1
- package/dist/{chunk-G3G4HQT3.mjs → chunk-LZSHZVBE.mjs} +3 -3
- package/dist/{chunk-G3G4HQT3.mjs.map → chunk-LZSHZVBE.mjs.map} +1 -1
- package/dist/chunk-MJDYY6S3.mjs +76 -0
- package/dist/chunk-MJDYY6S3.mjs.map +1 -0
- package/dist/{chunk-BMKZHXWQ.js → chunk-MMON6EVI.js} +3 -194
- package/dist/chunk-MMON6EVI.js.map +1 -0
- package/dist/chunk-NB4MK2Q5.js +18 -0
- package/dist/chunk-NB4MK2Q5.js.map +1 -0
- package/dist/{chunk-O4RVFKQW.mjs → chunk-NBI5AV6U.mjs} +3 -3
- package/dist/{chunk-O4RVFKQW.mjs.map → chunk-NBI5AV6U.mjs.map} +1 -1
- package/dist/chunk-NI7OY4FW.mjs +16 -0
- package/dist/chunk-NI7OY4FW.mjs.map +1 -0
- package/dist/chunk-NME3SQCB.js +8 -0
- package/dist/{chunk-CDETOO5W.js.map → chunk-NME3SQCB.js.map} +1 -1
- package/dist/{chunk-56X3IUOL.js → chunk-PE2A3ON5.js} +12 -31
- package/dist/chunk-PE2A3ON5.js.map +1 -0
- package/dist/{chunk-O7B7IEXY.js → chunk-PWIBFSXK.js} +14 -14
- package/dist/{chunk-O7B7IEXY.js.map → chunk-PWIBFSXK.js.map} +1 -1
- package/dist/{chunk-HV7IYMXK.js → chunk-Q2SPOBHU.js} +13 -13
- package/dist/{chunk-HV7IYMXK.js.map → chunk-Q2SPOBHU.js.map} +1 -1
- package/dist/chunk-QGPYFC6G.mjs +6 -0
- package/dist/{chunk-YCQHE2XT.mjs.map → chunk-QGPYFC6G.mjs.map} +1 -1
- package/dist/{chunk-C37DFD5F.js → chunk-SQGDDITI.js} +14 -14
- package/dist/{chunk-C37DFD5F.js.map → chunk-SQGDDITI.js.map} +1 -1
- package/dist/{chunk-3SIIYHVE.mjs → chunk-STTSIODQ.mjs} +4 -4
- package/dist/{chunk-3SIIYHVE.mjs.map → chunk-STTSIODQ.mjs.map} +1 -1
- package/dist/{chunk-RMUOY6XB.js → chunk-T3RPPS25.js} +7 -7
- package/dist/{chunk-RMUOY6XB.js.map → chunk-T3RPPS25.js.map} +1 -1
- package/dist/{chunk-7523LJ52.js → chunk-TBMFLLRV.js} +9 -9
- package/dist/{chunk-7523LJ52.js.map → chunk-TBMFLLRV.js.map} +1 -1
- package/dist/{chunk-IB34IYMN.js → chunk-TJS6FPR7.js} +9 -9
- package/dist/{chunk-IB34IYMN.js.map → chunk-TJS6FPR7.js.map} +1 -1
- package/dist/chunk-TPL2IHFI.js +43 -0
- package/dist/chunk-TPL2IHFI.js.map +1 -0
- package/dist/chunk-TRTT4PND.js +38 -0
- package/dist/chunk-TRTT4PND.js.map +1 -0
- package/dist/{chunk-VNQFKBKF.mjs → chunk-UFOOVODL.mjs} +3 -3
- package/dist/{chunk-VNQFKBKF.mjs.map → chunk-UFOOVODL.mjs.map} +1 -1
- package/dist/chunk-UXEB6UAR.js +147 -0
- package/dist/chunk-UXEB6UAR.js.map +1 -0
- package/dist/{chunk-IURQA3H5.mjs → chunk-V37Z65NF.mjs} +3 -3
- package/dist/{chunk-IURQA3H5.mjs.map → chunk-V37Z65NF.mjs.map} +1 -1
- package/dist/chunk-VX3WK77I.mjs +126 -0
- package/dist/chunk-VX3WK77I.mjs.map +1 -0
- package/dist/{chunk-AB2VYIYU.mjs → chunk-WTR7QJ32.mjs} +4 -194
- package/dist/chunk-WTR7QJ32.mjs.map +1 -0
- package/dist/{chunk-IB4FRJDV.js → chunk-XAWB2HFQ.js} +37 -67
- package/dist/chunk-XAWB2HFQ.js.map +1 -0
- package/dist/chunk-XY4NJJEX.js +129 -0
- package/dist/chunk-XY4NJJEX.js.map +1 -0
- package/dist/{chunk-MJV6RC7I.js → chunk-Y4U3OCKH.js} +3 -3
- package/dist/{chunk-MJV6RC7I.js.map → chunk-Y4U3OCKH.js.map} +1 -1
- package/dist/{chunk-5WEADCND.mjs → chunk-YKPAFEJ4.mjs} +4 -4
- package/dist/{chunk-5WEADCND.mjs.map → chunk-YKPAFEJ4.mjs.map} +1 -1
- package/dist/{chunk-472FTEPP.mjs → chunk-YSDJ7HI3.mjs} +4 -4
- package/dist/{chunk-472FTEPP.mjs.map → chunk-YSDJ7HI3.mjs.map} +1 -1
- package/dist/{chunk-E4VA4FYW.js → chunk-ZY3G7JGT.js} +8 -8
- package/dist/{chunk-E4VA4FYW.js.map → chunk-ZY3G7JGT.js.map} +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.mjs +1 -1
- package/dist/client/index.d.mts +15 -1
- package/dist/client/index.d.ts +15 -1
- package/dist/client/index.js +15 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +17 -0
- package/dist/client/index.mjs.map +1 -1
- package/dist/commerce/index.js +51 -50
- package/dist/commerce/index.mjs +6 -5
- package/dist/engage/index.js +9 -8
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +6 -5
- package/dist/engage/index.mjs.map +1 -1
- package/dist/fleet/index.js +8 -7
- package/dist/fleet/index.mjs +4 -3
- package/dist/forms/index.js +13 -12
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +5 -4
- package/dist/forms/index.mjs.map +1 -1
- package/dist/images/index.js +11 -10
- package/dist/images/index.mjs +4 -3
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +64 -63
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -9
- package/dist/index.mjs.map +1 -1
- package/dist/layout/client.js +9 -7
- package/dist/layout/client.mjs +8 -6
- package/dist/layout/index.js +11 -53
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +9 -51
- package/dist/layout/index.mjs.map +1 -1
- package/dist/llms/index.js +12 -12
- package/dist/llms/index.mjs +2 -2
- package/dist/maps/index.js +5 -4
- package/dist/maps/index.js.map +1 -1
- package/dist/maps/index.mjs +3 -2
- package/dist/maps/index.mjs.map +1 -1
- package/dist/seo/client.js +5 -4
- package/dist/seo/client.mjs +4 -3
- package/dist/seo/index.js +5 -4
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +4 -3
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo-pages/contract.js +6 -5
- package/dist/seo-pages/contract.js.map +1 -1
- package/dist/seo-pages/contract.mjs +2 -1
- package/dist/seo-pages/contract.mjs.map +1 -1
- package/dist/server/index.d.mts +34 -1
- package/dist/server/index.d.ts +34 -1
- package/dist/server/index.js +6 -0
- package/dist/server/index.mjs +2 -0
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sitemap/index.js +2 -2
- package/dist/sitemap/index.mjs +1 -1
- package/dist/sites/contract.d.mts +36 -12
- package/dist/sites/contract.d.ts +36 -12
- package/dist/sites/contract.js +12 -11
- package/dist/sites/contract.mjs +2 -1
- package/dist/sync/index.js +16 -15
- package/dist/sync/index.mjs +4 -3
- package/dist/{types-DYOumpUT.d.mts → types-8IcjVMDa.d.mts} +1 -1
- package/dist/{types-DYOumpUT.d.ts → types-8IcjVMDa.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/AnalyticsProvider-ARAWVJPX.js +0 -30
- package/dist/AnalyticsProvider-HIGSPNRA.mjs +0 -9
- package/dist/ChatWidget-47KAOFLG.mjs +0 -9
- package/dist/ChatWidget-BDES6WUR.js +0 -18
- package/dist/EngageWidget-HPZAI6SU.mjs +0 -8
- package/dist/EngageWidget-X3NIWGMZ.js +0 -17
- package/dist/SignalCore-K2CTZ52G.js.map +0 -1
- package/dist/SignalCore-XABEH2GA.mjs.map +0 -1
- package/dist/SitemapSync-4BALOI4B.js +0 -16
- package/dist/SitemapSync-OQPRGBG3.mjs +0 -7
- package/dist/chunk-56X3IUOL.js.map +0 -1
- package/dist/chunk-AB2VYIYU.mjs.map +0 -1
- package/dist/chunk-BMKZHXWQ.js.map +0 -1
- package/dist/chunk-CDETOO5W.js +0 -8
- package/dist/chunk-IB4FRJDV.js.map +0 -1
- package/dist/chunk-SH4VZDVX.mjs.map +0 -1
- package/dist/chunk-WS4GNH3F.mjs +0 -259
- package/dist/chunk-WS4GNH3F.mjs.map +0 -1
- package/dist/chunk-WVAY4ZWC.mjs.map +0 -1
- package/dist/chunk-WZHWWOUC.js.map +0 -1
- package/dist/chunk-X4OPM3SK.mjs.map +0 -1
- package/dist/chunk-XKV73RDH.js +0 -266
- package/dist/chunk-XKV73RDH.js.map +0 -1
- package/dist/chunk-YCQHE2XT.mjs +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"server-ui.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/blog/ClusterLandingPage.tsx"],"names":["getTopicCluster","jsx","jsxs","Fragment"],"mappings":"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","file":"server-ui.js","sourcesContent":["/**\n * @sonordev/site-kit/blog - Cluster Landing Page Component\n *\n * Pre-built page component for `/blog/cluster/[slug]` routes.\n * Renders a topic cluster overview with:\n * - Cluster hero (name, topic, description)\n * - Pillar article (featured, large card)\n * - Support articles (grid, categorized by article_type or funnel_stage)\n *\n * Server component — fetches cluster data from Portal API.\n * Ships with `.sk-cluster-landing-*` scoped styles.\n */\n\nimport React from 'react'\nimport { getTopicCluster } from './server-core'\nimport type { TopicCluster, BlogPost } from './types'\n\n// ============================================================================\n// CSS\n// ============================================================================\n\nconst clusterLandingCss = `\n.sk-cluster-landing { max-width: 72rem; margin: 0 auto; padding: 2rem 1rem; }\n\n.sk-cluster-hero { margin-bottom: 3rem; text-align: center; }\n.sk-cluster-hero-label {\n display: inline-flex; align-items: center; gap: 0.375rem;\n font-size: 0.75rem; font-weight: 600; text-transform: uppercase;\n letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;\n}\n.sk-cluster-hero-title {\n font-size: 2.25rem; font-weight: 800; color: #111827;\n line-height: 1.2; margin: 0 0 0.75rem 0;\n}\n.sk-cluster-hero-desc {\n font-size: 1.125rem; color: #6b7280; max-width: 40rem;\n margin: 0 auto; line-height: 1.6;\n}\n.sk-cluster-hero-meta {\n display: flex; justify-content: center; gap: 1.5rem;\n margin-top: 1rem; font-size: 0.875rem; color: #9ca3af;\n}\n\n.sk-cluster-pillar-card {\n display: block; text-decoration: none; color: inherit;\n padding: 2rem; border-radius: 0.75rem;\n background: linear-gradient(135deg, rgba(99,102,241,0.04), rgba(99,102,241,0.01));\n border: 2px solid rgba(99,102,241,0.2);\n margin-bottom: 3rem; transition: border-color 0.2s, box-shadow 0.2s;\n}\n.sk-cluster-pillar-card:hover {\n border-color: rgba(99,102,241,0.4);\n box-shadow: 0 4px 24px rgba(99,102,241,0.08);\n}\n.sk-cluster-pillar-label {\n display: inline-flex; align-items: center; gap: 0.375rem;\n font-size: 0.6875rem; font-weight: 700; text-transform: uppercase;\n letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;\n padding: 0.25rem 0.5rem; border-radius: 9999px;\n background: rgba(99,102,241,0.08);\n}\n.sk-cluster-pillar-title {\n font-size: 1.5rem; font-weight: 700; color: #111827;\n margin: 0 0 0.5rem 0; line-height: 1.3;\n}\n.sk-cluster-pillar-excerpt {\n font-size: 1rem; color: #6b7280; line-height: 1.6;\n margin: 0 0 1rem 0;\n}\n.sk-cluster-pillar-meta {\n display: flex; gap: 1rem; font-size: 0.8125rem; color: #9ca3af;\n}\n\n.sk-cluster-supports-section { margin-bottom: 2rem; }\n.sk-cluster-supports-title {\n font-size: 1.25rem; font-weight: 700; color: #111827;\n margin: 0 0 1.25rem 0;\n}\n.sk-cluster-supports-grid {\n display: grid; gap: 1.25rem;\n grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));\n}\n.sk-cluster-support-card {\n display: block; text-decoration: none; color: inherit;\n padding: 1.25rem; border-radius: 0.5rem;\n border: 1px solid #e5e7eb; background: #fff;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.sk-cluster-support-card:hover {\n border-color: #c7d2fe;\n box-shadow: 0 2px 12px rgba(0,0,0,0.04);\n}\n.sk-cluster-support-card-header {\n display: flex; align-items: center; gap: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.sk-cluster-support-type {\n display: inline-flex; align-items: center;\n padding: 0.125rem 0.375rem; border-radius: 9999px;\n font-size: 0.6875rem; font-weight: 500;\n background: rgba(99,102,241,0.06); color: #6366f1;\n border: 1px solid rgba(99,102,241,0.12);\n text-transform: capitalize;\n}\n.sk-cluster-support-intent {\n font-size: 0.6875rem; color: #9ca3af;\n text-transform: capitalize;\n}\n.sk-cluster-support-title {\n font-size: 1rem; font-weight: 600; color: #111827;\n margin: 0 0 0.375rem 0; line-height: 1.4;\n}\n.sk-cluster-support-excerpt {\n font-size: 0.875rem; color: #6b7280; line-height: 1.5;\n margin: 0; display: -webkit-box; -webkit-line-clamp: 2;\n -webkit-box-orient: vertical; overflow: hidden;\n}\n.sk-cluster-support-meta {\n display: flex; gap: 0.75rem; margin-top: 0.75rem;\n font-size: 0.75rem; color: #9ca3af;\n}\n`\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport interface ClusterLandingPageProps {\n /** Cluster slug to fetch */\n slug: string\n /** Base path for blog URLs (default: /blog) */\n basePath?: string\n /**\n * Include each article's own category segment in its URL:\n * {basePath}/{category}/{slug}. Enable on sites whose blog routes are\n * category-segmented (e.g. upforge.io /insights/{category}/{slug}) —\n * without it, links point at {basePath}/{slug} and 404 on such sites.\n */\n categoryInPath?: boolean\n /** Disable default styles */\n unstyled?: boolean\n /** Custom class name */\n className?: string\n /** Render prop for full data access */\n children?: (props: { cluster: TopicCluster }) => React.ReactNode\n}\n\n/** Category slug of a post — handles both string and object category shapes. */\nfunction categorySlugOf(post: { category?: unknown } | null | undefined): string | null {\n const c = post?.category as { slug?: string } | string | undefined\n if (!c) return null\n if (typeof c === 'string') return c\n return c.slug || null\n}\n\nexport async function ClusterLandingPage({\n slug,\n basePath = '/blog',\n categoryInPath = false,\n unstyled = false,\n className,\n children,\n}: ClusterLandingPageProps) {\n const cluster = await getTopicCluster(slug)\n\n if (!cluster) {\n return (\n <div style={{ padding: '4rem 1rem', textAlign: 'center', color: '#6b7280' }}>\n <p>Topic cluster not found.</p>\n </div>\n )\n }\n\n // Custom render\n if (children) {\n return children({ cluster })\n }\n\n const pillar = cluster.pillar\n const supports = cluster.supports || []\n\n const articleUrl = (post: { slug: string; category?: unknown }) => {\n const cat = categoryInPath ? categorySlugOf(post) : null\n return cat ? `${basePath}/${cat}/${post.slug}` : `${basePath}/${post.slug}`\n }\n\n return (\n <>\n {!unstyled && <style dangerouslySetInnerHTML={{ __html: clusterLandingCss }} />}\n\n <div className={`${unstyled ? '' : 'sk-cluster-landing'} ${className || ''}`}>\n {/* Hero */}\n <header className={unstyled ? '' : 'sk-cluster-hero'}>\n <p className={unstyled ? '' : 'sk-cluster-hero-label'}>\n Topic Cluster\n </p>\n <h1 className={unstyled ? '' : 'sk-cluster-hero-title'}>\n {cluster.cluster_name}\n </h1>\n <p className={unstyled ? '' : 'sk-cluster-hero-desc'}>\n {cluster.core_topic}\n {cluster.geo_target ? ` in ${cluster.geo_target}` : ''}\n </p>\n <div className={unstyled ? '' : 'sk-cluster-hero-meta'}>\n <span>{cluster.article_count} articles</span>\n {cluster.geo_target && <span>{cluster.geo_target}</span>}\n </div>\n </header>\n\n {/* Pillar article (hero card) */}\n {pillar && (\n <a href={articleUrl(pillar)} className={unstyled ? '' : 'sk-cluster-pillar-card'}>\n <span className={unstyled ? '' : 'sk-cluster-pillar-label'}>\n Pillar Guide\n </span>\n <h2 className={unstyled ? '' : 'sk-cluster-pillar-title'}>\n {pillar.title}\n </h2>\n {pillar.excerpt && (\n <p className={unstyled ? '' : 'sk-cluster-pillar-excerpt'}>\n {pillar.excerpt}\n </p>\n )}\n <div className={unstyled ? '' : 'sk-cluster-pillar-meta'}>\n {pillar.reading_time_minutes && (\n <span>{pillar.reading_time_minutes} min read</span>\n )}\n {pillar.word_count && (\n <span>{pillar.word_count.toLocaleString()} words</span>\n )}\n </div>\n </a>\n )}\n\n {/* Support articles */}\n {supports.length > 0 && (\n <section className={unstyled ? '' : 'sk-cluster-supports-section'}>\n <h2 className={unstyled ? '' : 'sk-cluster-supports-title'}>\n Deep Dives\n </h2>\n <div className={unstyled ? '' : 'sk-cluster-supports-grid'}>\n {supports.map((post) => (\n <a\n key={post.id || post.slug}\n href={articleUrl(post)}\n className={unstyled ? '' : 'sk-cluster-support-card'}\n >\n <div className={unstyled ? '' : 'sk-cluster-support-card-header'}>\n {post.article_type && (\n <span className={unstyled ? '' : 'sk-cluster-support-type'}>\n {post.article_type}\n </span>\n )}\n {post.search_intent && (\n <span className={unstyled ? '' : 'sk-cluster-support-intent'}>\n {post.search_intent}\n </span>\n )}\n </div>\n <h3 className={unstyled ? '' : 'sk-cluster-support-title'}>\n {post.title}\n </h3>\n {post.excerpt && (\n <p className={unstyled ? '' : 'sk-cluster-support-excerpt'}>\n {post.excerpt}\n </p>\n )}\n <div className={unstyled ? '' : 'sk-cluster-support-meta'}>\n {post.reading_time_minutes && (\n <span>{post.reading_time_minutes} min read</span>\n )}\n {post.relationship_to_pillar && (\n <span>{post.relationship_to_pillar}</span>\n )}\n </div>\n </a>\n ))}\n </div>\n </section>\n )}\n </div>\n </>\n )\n}\n"]}
|
package/dist/blog/server-ui.mjs
CHANGED
|
@@ -1,5 +1,201 @@
|
|
|
1
|
-
export { BlogList, BlogPost,
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { BlogList, BlogPost, ClusterNavigation } from '../chunk-WTR7QJ32.mjs';
|
|
2
|
+
import { getTopicCluster } from '../chunk-GUXB3QH7.mjs';
|
|
3
|
+
import '../chunk-CGCYZJYX.mjs';
|
|
4
|
+
import '../chunk-UDBUK5ZJ.mjs';
|
|
3
5
|
import '../chunk-4XPGGLVP.mjs';
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var clusterLandingCss = `
|
|
9
|
+
.sk-cluster-landing { max-width: 72rem; margin: 0 auto; padding: 2rem 1rem; }
|
|
10
|
+
|
|
11
|
+
.sk-cluster-hero { margin-bottom: 3rem; text-align: center; }
|
|
12
|
+
.sk-cluster-hero-label {
|
|
13
|
+
display: inline-flex; align-items: center; gap: 0.375rem;
|
|
14
|
+
font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
|
|
15
|
+
letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;
|
|
16
|
+
}
|
|
17
|
+
.sk-cluster-hero-title {
|
|
18
|
+
font-size: 2.25rem; font-weight: 800; color: #111827;
|
|
19
|
+
line-height: 1.2; margin: 0 0 0.75rem 0;
|
|
20
|
+
}
|
|
21
|
+
.sk-cluster-hero-desc {
|
|
22
|
+
font-size: 1.125rem; color: #6b7280; max-width: 40rem;
|
|
23
|
+
margin: 0 auto; line-height: 1.6;
|
|
24
|
+
}
|
|
25
|
+
.sk-cluster-hero-meta {
|
|
26
|
+
display: flex; justify-content: center; gap: 1.5rem;
|
|
27
|
+
margin-top: 1rem; font-size: 0.875rem; color: #9ca3af;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.sk-cluster-pillar-card {
|
|
31
|
+
display: block; text-decoration: none; color: inherit;
|
|
32
|
+
padding: 2rem; border-radius: 0.75rem;
|
|
33
|
+
background: linear-gradient(135deg, rgba(99,102,241,0.04), rgba(99,102,241,0.01));
|
|
34
|
+
border: 2px solid rgba(99,102,241,0.2);
|
|
35
|
+
margin-bottom: 3rem; transition: border-color 0.2s, box-shadow 0.2s;
|
|
36
|
+
}
|
|
37
|
+
.sk-cluster-pillar-card:hover {
|
|
38
|
+
border-color: rgba(99,102,241,0.4);
|
|
39
|
+
box-shadow: 0 4px 24px rgba(99,102,241,0.08);
|
|
40
|
+
}
|
|
41
|
+
.sk-cluster-pillar-label {
|
|
42
|
+
display: inline-flex; align-items: center; gap: 0.375rem;
|
|
43
|
+
font-size: 0.6875rem; font-weight: 700; text-transform: uppercase;
|
|
44
|
+
letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;
|
|
45
|
+
padding: 0.25rem 0.5rem; border-radius: 9999px;
|
|
46
|
+
background: rgba(99,102,241,0.08);
|
|
47
|
+
}
|
|
48
|
+
.sk-cluster-pillar-title {
|
|
49
|
+
font-size: 1.5rem; font-weight: 700; color: #111827;
|
|
50
|
+
margin: 0 0 0.5rem 0; line-height: 1.3;
|
|
51
|
+
}
|
|
52
|
+
.sk-cluster-pillar-excerpt {
|
|
53
|
+
font-size: 1rem; color: #6b7280; line-height: 1.6;
|
|
54
|
+
margin: 0 0 1rem 0;
|
|
55
|
+
}
|
|
56
|
+
.sk-cluster-pillar-meta {
|
|
57
|
+
display: flex; gap: 1rem; font-size: 0.8125rem; color: #9ca3af;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.sk-cluster-supports-section { margin-bottom: 2rem; }
|
|
61
|
+
.sk-cluster-supports-title {
|
|
62
|
+
font-size: 1.25rem; font-weight: 700; color: #111827;
|
|
63
|
+
margin: 0 0 1.25rem 0;
|
|
64
|
+
}
|
|
65
|
+
.sk-cluster-supports-grid {
|
|
66
|
+
display: grid; gap: 1.25rem;
|
|
67
|
+
grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
|
|
68
|
+
}
|
|
69
|
+
.sk-cluster-support-card {
|
|
70
|
+
display: block; text-decoration: none; color: inherit;
|
|
71
|
+
padding: 1.25rem; border-radius: 0.5rem;
|
|
72
|
+
border: 1px solid #e5e7eb; background: #fff;
|
|
73
|
+
transition: border-color 0.2s, box-shadow 0.2s;
|
|
74
|
+
}
|
|
75
|
+
.sk-cluster-support-card:hover {
|
|
76
|
+
border-color: #c7d2fe;
|
|
77
|
+
box-shadow: 0 2px 12px rgba(0,0,0,0.04);
|
|
78
|
+
}
|
|
79
|
+
.sk-cluster-support-card-header {
|
|
80
|
+
display: flex; align-items: center; gap: 0.5rem;
|
|
81
|
+
margin-bottom: 0.5rem;
|
|
82
|
+
}
|
|
83
|
+
.sk-cluster-support-type {
|
|
84
|
+
display: inline-flex; align-items: center;
|
|
85
|
+
padding: 0.125rem 0.375rem; border-radius: 9999px;
|
|
86
|
+
font-size: 0.6875rem; font-weight: 500;
|
|
87
|
+
background: rgba(99,102,241,0.06); color: #6366f1;
|
|
88
|
+
border: 1px solid rgba(99,102,241,0.12);
|
|
89
|
+
text-transform: capitalize;
|
|
90
|
+
}
|
|
91
|
+
.sk-cluster-support-intent {
|
|
92
|
+
font-size: 0.6875rem; color: #9ca3af;
|
|
93
|
+
text-transform: capitalize;
|
|
94
|
+
}
|
|
95
|
+
.sk-cluster-support-title {
|
|
96
|
+
font-size: 1rem; font-weight: 600; color: #111827;
|
|
97
|
+
margin: 0 0 0.375rem 0; line-height: 1.4;
|
|
98
|
+
}
|
|
99
|
+
.sk-cluster-support-excerpt {
|
|
100
|
+
font-size: 0.875rem; color: #6b7280; line-height: 1.5;
|
|
101
|
+
margin: 0; display: -webkit-box; -webkit-line-clamp: 2;
|
|
102
|
+
-webkit-box-orient: vertical; overflow: hidden;
|
|
103
|
+
}
|
|
104
|
+
.sk-cluster-support-meta {
|
|
105
|
+
display: flex; gap: 0.75rem; margin-top: 0.75rem;
|
|
106
|
+
font-size: 0.75rem; color: #9ca3af;
|
|
107
|
+
}
|
|
108
|
+
`;
|
|
109
|
+
function categorySlugOf(post) {
|
|
110
|
+
const c = post?.category;
|
|
111
|
+
if (!c) return null;
|
|
112
|
+
if (typeof c === "string") return c;
|
|
113
|
+
return c.slug || null;
|
|
114
|
+
}
|
|
115
|
+
async function ClusterLandingPage({
|
|
116
|
+
slug,
|
|
117
|
+
basePath = "/blog",
|
|
118
|
+
categoryInPath = false,
|
|
119
|
+
unstyled = false,
|
|
120
|
+
className,
|
|
121
|
+
children
|
|
122
|
+
}) {
|
|
123
|
+
const cluster = await getTopicCluster(slug);
|
|
124
|
+
if (!cluster) {
|
|
125
|
+
return /* @__PURE__ */ jsx("div", { style: { padding: "4rem 1rem", textAlign: "center", color: "#6b7280" }, children: /* @__PURE__ */ jsx("p", { children: "Topic cluster not found." }) });
|
|
126
|
+
}
|
|
127
|
+
if (children) {
|
|
128
|
+
return children({ cluster });
|
|
129
|
+
}
|
|
130
|
+
const pillar = cluster.pillar;
|
|
131
|
+
const supports = cluster.supports || [];
|
|
132
|
+
const articleUrl = (post) => {
|
|
133
|
+
const cat = categoryInPath ? categorySlugOf(post) : null;
|
|
134
|
+
return cat ? `${basePath}/${cat}/${post.slug}` : `${basePath}/${post.slug}`;
|
|
135
|
+
};
|
|
136
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
137
|
+
!unstyled && /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: clusterLandingCss } }),
|
|
138
|
+
/* @__PURE__ */ jsxs("div", { className: `${unstyled ? "" : "sk-cluster-landing"} ${className || ""}`, children: [
|
|
139
|
+
/* @__PURE__ */ jsxs("header", { className: unstyled ? "" : "sk-cluster-hero", children: [
|
|
140
|
+
/* @__PURE__ */ jsx("p", { className: unstyled ? "" : "sk-cluster-hero-label", children: "Topic Cluster" }),
|
|
141
|
+
/* @__PURE__ */ jsx("h1", { className: unstyled ? "" : "sk-cluster-hero-title", children: cluster.cluster_name }),
|
|
142
|
+
/* @__PURE__ */ jsxs("p", { className: unstyled ? "" : "sk-cluster-hero-desc", children: [
|
|
143
|
+
cluster.core_topic,
|
|
144
|
+
cluster.geo_target ? ` in ${cluster.geo_target}` : ""
|
|
145
|
+
] }),
|
|
146
|
+
/* @__PURE__ */ jsxs("div", { className: unstyled ? "" : "sk-cluster-hero-meta", children: [
|
|
147
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
148
|
+
cluster.article_count,
|
|
149
|
+
" articles"
|
|
150
|
+
] }),
|
|
151
|
+
cluster.geo_target && /* @__PURE__ */ jsx("span", { children: cluster.geo_target })
|
|
152
|
+
] })
|
|
153
|
+
] }),
|
|
154
|
+
pillar && /* @__PURE__ */ jsxs("a", { href: articleUrl(pillar), className: unstyled ? "" : "sk-cluster-pillar-card", children: [
|
|
155
|
+
/* @__PURE__ */ jsx("span", { className: unstyled ? "" : "sk-cluster-pillar-label", children: "Pillar Guide" }),
|
|
156
|
+
/* @__PURE__ */ jsx("h2", { className: unstyled ? "" : "sk-cluster-pillar-title", children: pillar.title }),
|
|
157
|
+
pillar.excerpt && /* @__PURE__ */ jsx("p", { className: unstyled ? "" : "sk-cluster-pillar-excerpt", children: pillar.excerpt }),
|
|
158
|
+
/* @__PURE__ */ jsxs("div", { className: unstyled ? "" : "sk-cluster-pillar-meta", children: [
|
|
159
|
+
pillar.reading_time_minutes && /* @__PURE__ */ jsxs("span", { children: [
|
|
160
|
+
pillar.reading_time_minutes,
|
|
161
|
+
" min read"
|
|
162
|
+
] }),
|
|
163
|
+
pillar.word_count && /* @__PURE__ */ jsxs("span", { children: [
|
|
164
|
+
pillar.word_count.toLocaleString(),
|
|
165
|
+
" words"
|
|
166
|
+
] })
|
|
167
|
+
] })
|
|
168
|
+
] }),
|
|
169
|
+
supports.length > 0 && /* @__PURE__ */ jsxs("section", { className: unstyled ? "" : "sk-cluster-supports-section", children: [
|
|
170
|
+
/* @__PURE__ */ jsx("h2", { className: unstyled ? "" : "sk-cluster-supports-title", children: "Deep Dives" }),
|
|
171
|
+
/* @__PURE__ */ jsx("div", { className: unstyled ? "" : "sk-cluster-supports-grid", children: supports.map((post) => /* @__PURE__ */ jsxs(
|
|
172
|
+
"a",
|
|
173
|
+
{
|
|
174
|
+
href: articleUrl(post),
|
|
175
|
+
className: unstyled ? "" : "sk-cluster-support-card",
|
|
176
|
+
children: [
|
|
177
|
+
/* @__PURE__ */ jsxs("div", { className: unstyled ? "" : "sk-cluster-support-card-header", children: [
|
|
178
|
+
post.article_type && /* @__PURE__ */ jsx("span", { className: unstyled ? "" : "sk-cluster-support-type", children: post.article_type }),
|
|
179
|
+
post.search_intent && /* @__PURE__ */ jsx("span", { className: unstyled ? "" : "sk-cluster-support-intent", children: post.search_intent })
|
|
180
|
+
] }),
|
|
181
|
+
/* @__PURE__ */ jsx("h3", { className: unstyled ? "" : "sk-cluster-support-title", children: post.title }),
|
|
182
|
+
post.excerpt && /* @__PURE__ */ jsx("p", { className: unstyled ? "" : "sk-cluster-support-excerpt", children: post.excerpt }),
|
|
183
|
+
/* @__PURE__ */ jsxs("div", { className: unstyled ? "" : "sk-cluster-support-meta", children: [
|
|
184
|
+
post.reading_time_minutes && /* @__PURE__ */ jsxs("span", { children: [
|
|
185
|
+
post.reading_time_minutes,
|
|
186
|
+
" min read"
|
|
187
|
+
] }),
|
|
188
|
+
post.relationship_to_pillar && /* @__PURE__ */ jsx("span", { children: post.relationship_to_pillar })
|
|
189
|
+
] })
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
post.id || post.slug
|
|
193
|
+
)) })
|
|
194
|
+
] })
|
|
195
|
+
] })
|
|
196
|
+
] });
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export { ClusterLandingPage };
|
|
4
200
|
//# sourceMappingURL=server-ui.mjs.map
|
|
5
201
|
//# sourceMappingURL=server-ui.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"server-ui.mjs"}
|
|
1
|
+
{"version":3,"sources":["../../src/blog/ClusterLandingPage.tsx"],"names":[],"mappings":"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","file":"server-ui.mjs","sourcesContent":["/**\n * @sonordev/site-kit/blog - Cluster Landing Page Component\n *\n * Pre-built page component for `/blog/cluster/[slug]` routes.\n * Renders a topic cluster overview with:\n * - Cluster hero (name, topic, description)\n * - Pillar article (featured, large card)\n * - Support articles (grid, categorized by article_type or funnel_stage)\n *\n * Server component — fetches cluster data from Portal API.\n * Ships with `.sk-cluster-landing-*` scoped styles.\n */\n\nimport React from 'react'\nimport { getTopicCluster } from './server-core'\nimport type { TopicCluster, BlogPost } from './types'\n\n// ============================================================================\n// CSS\n// ============================================================================\n\nconst clusterLandingCss = `\n.sk-cluster-landing { max-width: 72rem; margin: 0 auto; padding: 2rem 1rem; }\n\n.sk-cluster-hero { margin-bottom: 3rem; text-align: center; }\n.sk-cluster-hero-label {\n display: inline-flex; align-items: center; gap: 0.375rem;\n font-size: 0.75rem; font-weight: 600; text-transform: uppercase;\n letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;\n}\n.sk-cluster-hero-title {\n font-size: 2.25rem; font-weight: 800; color: #111827;\n line-height: 1.2; margin: 0 0 0.75rem 0;\n}\n.sk-cluster-hero-desc {\n font-size: 1.125rem; color: #6b7280; max-width: 40rem;\n margin: 0 auto; line-height: 1.6;\n}\n.sk-cluster-hero-meta {\n display: flex; justify-content: center; gap: 1.5rem;\n margin-top: 1rem; font-size: 0.875rem; color: #9ca3af;\n}\n\n.sk-cluster-pillar-card {\n display: block; text-decoration: none; color: inherit;\n padding: 2rem; border-radius: 0.75rem;\n background: linear-gradient(135deg, rgba(99,102,241,0.04), rgba(99,102,241,0.01));\n border: 2px solid rgba(99,102,241,0.2);\n margin-bottom: 3rem; transition: border-color 0.2s, box-shadow 0.2s;\n}\n.sk-cluster-pillar-card:hover {\n border-color: rgba(99,102,241,0.4);\n box-shadow: 0 4px 24px rgba(99,102,241,0.08);\n}\n.sk-cluster-pillar-label {\n display: inline-flex; align-items: center; gap: 0.375rem;\n font-size: 0.6875rem; font-weight: 700; text-transform: uppercase;\n letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;\n padding: 0.25rem 0.5rem; border-radius: 9999px;\n background: rgba(99,102,241,0.08);\n}\n.sk-cluster-pillar-title {\n font-size: 1.5rem; font-weight: 700; color: #111827;\n margin: 0 0 0.5rem 0; line-height: 1.3;\n}\n.sk-cluster-pillar-excerpt {\n font-size: 1rem; color: #6b7280; line-height: 1.6;\n margin: 0 0 1rem 0;\n}\n.sk-cluster-pillar-meta {\n display: flex; gap: 1rem; font-size: 0.8125rem; color: #9ca3af;\n}\n\n.sk-cluster-supports-section { margin-bottom: 2rem; }\n.sk-cluster-supports-title {\n font-size: 1.25rem; font-weight: 700; color: #111827;\n margin: 0 0 1.25rem 0;\n}\n.sk-cluster-supports-grid {\n display: grid; gap: 1.25rem;\n grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));\n}\n.sk-cluster-support-card {\n display: block; text-decoration: none; color: inherit;\n padding: 1.25rem; border-radius: 0.5rem;\n border: 1px solid #e5e7eb; background: #fff;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n.sk-cluster-support-card:hover {\n border-color: #c7d2fe;\n box-shadow: 0 2px 12px rgba(0,0,0,0.04);\n}\n.sk-cluster-support-card-header {\n display: flex; align-items: center; gap: 0.5rem;\n margin-bottom: 0.5rem;\n}\n.sk-cluster-support-type {\n display: inline-flex; align-items: center;\n padding: 0.125rem 0.375rem; border-radius: 9999px;\n font-size: 0.6875rem; font-weight: 500;\n background: rgba(99,102,241,0.06); color: #6366f1;\n border: 1px solid rgba(99,102,241,0.12);\n text-transform: capitalize;\n}\n.sk-cluster-support-intent {\n font-size: 0.6875rem; color: #9ca3af;\n text-transform: capitalize;\n}\n.sk-cluster-support-title {\n font-size: 1rem; font-weight: 600; color: #111827;\n margin: 0 0 0.375rem 0; line-height: 1.4;\n}\n.sk-cluster-support-excerpt {\n font-size: 0.875rem; color: #6b7280; line-height: 1.5;\n margin: 0; display: -webkit-box; -webkit-line-clamp: 2;\n -webkit-box-orient: vertical; overflow: hidden;\n}\n.sk-cluster-support-meta {\n display: flex; gap: 0.75rem; margin-top: 0.75rem;\n font-size: 0.75rem; color: #9ca3af;\n}\n`\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport interface ClusterLandingPageProps {\n /** Cluster slug to fetch */\n slug: string\n /** Base path for blog URLs (default: /blog) */\n basePath?: string\n /**\n * Include each article's own category segment in its URL:\n * {basePath}/{category}/{slug}. Enable on sites whose blog routes are\n * category-segmented (e.g. upforge.io /insights/{category}/{slug}) —\n * without it, links point at {basePath}/{slug} and 404 on such sites.\n */\n categoryInPath?: boolean\n /** Disable default styles */\n unstyled?: boolean\n /** Custom class name */\n className?: string\n /** Render prop for full data access */\n children?: (props: { cluster: TopicCluster }) => React.ReactNode\n}\n\n/** Category slug of a post — handles both string and object category shapes. */\nfunction categorySlugOf(post: { category?: unknown } | null | undefined): string | null {\n const c = post?.category as { slug?: string } | string | undefined\n if (!c) return null\n if (typeof c === 'string') return c\n return c.slug || null\n}\n\nexport async function ClusterLandingPage({\n slug,\n basePath = '/blog',\n categoryInPath = false,\n unstyled = false,\n className,\n children,\n}: ClusterLandingPageProps) {\n const cluster = await getTopicCluster(slug)\n\n if (!cluster) {\n return (\n <div style={{ padding: '4rem 1rem', textAlign: 'center', color: '#6b7280' }}>\n <p>Topic cluster not found.</p>\n </div>\n )\n }\n\n // Custom render\n if (children) {\n return children({ cluster })\n }\n\n const pillar = cluster.pillar\n const supports = cluster.supports || []\n\n const articleUrl = (post: { slug: string; category?: unknown }) => {\n const cat = categoryInPath ? categorySlugOf(post) : null\n return cat ? `${basePath}/${cat}/${post.slug}` : `${basePath}/${post.slug}`\n }\n\n return (\n <>\n {!unstyled && <style dangerouslySetInnerHTML={{ __html: clusterLandingCss }} />}\n\n <div className={`${unstyled ? '' : 'sk-cluster-landing'} ${className || ''}`}>\n {/* Hero */}\n <header className={unstyled ? '' : 'sk-cluster-hero'}>\n <p className={unstyled ? '' : 'sk-cluster-hero-label'}>\n Topic Cluster\n </p>\n <h1 className={unstyled ? '' : 'sk-cluster-hero-title'}>\n {cluster.cluster_name}\n </h1>\n <p className={unstyled ? '' : 'sk-cluster-hero-desc'}>\n {cluster.core_topic}\n {cluster.geo_target ? ` in ${cluster.geo_target}` : ''}\n </p>\n <div className={unstyled ? '' : 'sk-cluster-hero-meta'}>\n <span>{cluster.article_count} articles</span>\n {cluster.geo_target && <span>{cluster.geo_target}</span>}\n </div>\n </header>\n\n {/* Pillar article (hero card) */}\n {pillar && (\n <a href={articleUrl(pillar)} className={unstyled ? '' : 'sk-cluster-pillar-card'}>\n <span className={unstyled ? '' : 'sk-cluster-pillar-label'}>\n Pillar Guide\n </span>\n <h2 className={unstyled ? '' : 'sk-cluster-pillar-title'}>\n {pillar.title}\n </h2>\n {pillar.excerpt && (\n <p className={unstyled ? '' : 'sk-cluster-pillar-excerpt'}>\n {pillar.excerpt}\n </p>\n )}\n <div className={unstyled ? '' : 'sk-cluster-pillar-meta'}>\n {pillar.reading_time_minutes && (\n <span>{pillar.reading_time_minutes} min read</span>\n )}\n {pillar.word_count && (\n <span>{pillar.word_count.toLocaleString()} words</span>\n )}\n </div>\n </a>\n )}\n\n {/* Support articles */}\n {supports.length > 0 && (\n <section className={unstyled ? '' : 'sk-cluster-supports-section'}>\n <h2 className={unstyled ? '' : 'sk-cluster-supports-title'}>\n Deep Dives\n </h2>\n <div className={unstyled ? '' : 'sk-cluster-supports-grid'}>\n {supports.map((post) => (\n <a\n key={post.id || post.slug}\n href={articleUrl(post)}\n className={unstyled ? '' : 'sk-cluster-support-card'}\n >\n <div className={unstyled ? '' : 'sk-cluster-support-card-header'}>\n {post.article_type && (\n <span className={unstyled ? '' : 'sk-cluster-support-type'}>\n {post.article_type}\n </span>\n )}\n {post.search_intent && (\n <span className={unstyled ? '' : 'sk-cluster-support-intent'}>\n {post.search_intent}\n </span>\n )}\n </div>\n <h3 className={unstyled ? '' : 'sk-cluster-support-title'}>\n {post.title}\n </h3>\n {post.excerpt && (\n <p className={unstyled ? '' : 'sk-cluster-support-excerpt'}>\n {post.excerpt}\n </p>\n )}\n <div className={unstyled ? '' : 'sk-cluster-support-meta'}>\n {post.reading_time_minutes && (\n <span>{post.reading_time_minutes} min read</span>\n )}\n {post.relationship_to_pillar && (\n <span>{post.relationship_to_pillar}</span>\n )}\n </div>\n </a>\n ))}\n </div>\n </section>\n )}\n </div>\n </>\n )\n}\n"]}
|
package/dist/blog/server.d.mts
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
import { Metadata } from 'next';
|
|
2
|
-
import { B as BlogPost, T as TopicCluster, C as ClusterNavigation
|
|
2
|
+
import { B as BlogAuthor, a as BlogPost, T as TopicCluster, C as ClusterNavigation } from '../types-8IcjVMDa.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @sonordev/site-kit/blog — Author JSON-LD (pure)
|
|
6
|
+
*
|
|
7
|
+
* Split out of `./server-core` on purpose. `generateAuthorSchema` is a pure
|
|
8
|
+
* function — it maps a `BlogAuthor` to a Person schema object and touches no
|
|
9
|
+
* env, no config, and no network. It only ever lived in `server-core` because
|
|
10
|
+
* the other author helpers there (`getAuthorBySlug`, `getAuthorPosts`) do fetch.
|
|
11
|
+
*
|
|
12
|
+
* `AuthorPage` is exported from the client-stamped `@sonordev/site-kit/blog`
|
|
13
|
+
* barrel (see `./index.ts`), so importing this one function from `server-core`
|
|
14
|
+
* dragged that whole server module — its `x-api-key` fetches included — into
|
|
15
|
+
* the browser bundle. Keeping the pure half here means `AuthorPage` can stay in
|
|
16
|
+
* the barrel without pulling a single line of server code with it.
|
|
17
|
+
*
|
|
18
|
+
* Anything added here must stay pure. If it needs an API key or a fetch, it
|
|
19
|
+
* belongs in `./server-core`, not in this file.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Generate Person JSON-LD schema for an author page
|
|
24
|
+
*/
|
|
25
|
+
declare function generateAuthorSchema(author: BlogAuthor, options?: {
|
|
26
|
+
siteUrl?: string;
|
|
27
|
+
siteName?: string;
|
|
28
|
+
}): object;
|
|
3
29
|
|
|
4
30
|
/**
|
|
5
31
|
* @sonordev/site-kit/blog/server
|
|
@@ -332,12 +358,5 @@ declare function generateAuthorPageMetadata(author: BlogAuthor, options?: {
|
|
|
332
358
|
siteUrl?: string;
|
|
333
359
|
siteName?: string;
|
|
334
360
|
}): Metadata;
|
|
335
|
-
/**
|
|
336
|
-
* Generate Person JSON-LD schema for an author page
|
|
337
|
-
*/
|
|
338
|
-
declare function generateAuthorSchema(author: BlogAuthor, options?: {
|
|
339
|
-
siteUrl?: string;
|
|
340
|
-
siteName?: string;
|
|
341
|
-
}): object;
|
|
342
361
|
|
|
343
362
|
export { BlogPost as BlogPostRecord, type HowToStep, SEO_LIMITS, type SeoValidationResult, generateAllBlogSchemas, generateAtomFeed, generateAuthorPageMetadata, generateAuthorSchema, generateAuthorStaticParams, generateBlogCategoryMetadata, generateBlogIndexMetadata, generateBlogListSchema, generateBlogPostMetadata, generateBlogPostSchema, generateBlogSitemap, generateBlogStaticParams, generateBreadcrumbSchema, generateCategoryStaticParams, generateClusterArticleSchema, generateClusterBreadcrumbSchema, generateClusterItemListSchema, generateClusterLandingSchema, generateClusterPageMetadata, generateFaqSchema, generateHowToSchema, generateRssFeed, getAllAuthorSlugs, getAllBlogPosts, getAllBlogSlugs, getAuthorBySlug, getAuthorPosts, getBlogCategories, getBlogPost, getClusterNavigation, getPostsByCategory, getRelatedInsights, getTopicCluster, getTopicClusters, identifyTopicClusters, validateBlogPostSeo, validateMetaDescription, validateSeoTitle };
|
package/dist/blog/server.d.ts
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
import { Metadata } from 'next';
|
|
2
|
-
import { B as BlogPost, T as TopicCluster, C as ClusterNavigation
|
|
2
|
+
import { B as BlogAuthor, a as BlogPost, T as TopicCluster, C as ClusterNavigation } from '../types-8IcjVMDa.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @sonordev/site-kit/blog — Author JSON-LD (pure)
|
|
6
|
+
*
|
|
7
|
+
* Split out of `./server-core` on purpose. `generateAuthorSchema` is a pure
|
|
8
|
+
* function — it maps a `BlogAuthor` to a Person schema object and touches no
|
|
9
|
+
* env, no config, and no network. It only ever lived in `server-core` because
|
|
10
|
+
* the other author helpers there (`getAuthorBySlug`, `getAuthorPosts`) do fetch.
|
|
11
|
+
*
|
|
12
|
+
* `AuthorPage` is exported from the client-stamped `@sonordev/site-kit/blog`
|
|
13
|
+
* barrel (see `./index.ts`), so importing this one function from `server-core`
|
|
14
|
+
* dragged that whole server module — its `x-api-key` fetches included — into
|
|
15
|
+
* the browser bundle. Keeping the pure half here means `AuthorPage` can stay in
|
|
16
|
+
* the barrel without pulling a single line of server code with it.
|
|
17
|
+
*
|
|
18
|
+
* Anything added here must stay pure. If it needs an API key or a fetch, it
|
|
19
|
+
* belongs in `./server-core`, not in this file.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Generate Person JSON-LD schema for an author page
|
|
24
|
+
*/
|
|
25
|
+
declare function generateAuthorSchema(author: BlogAuthor, options?: {
|
|
26
|
+
siteUrl?: string;
|
|
27
|
+
siteName?: string;
|
|
28
|
+
}): object;
|
|
3
29
|
|
|
4
30
|
/**
|
|
5
31
|
* @sonordev/site-kit/blog/server
|
|
@@ -332,12 +358,5 @@ declare function generateAuthorPageMetadata(author: BlogAuthor, options?: {
|
|
|
332
358
|
siteUrl?: string;
|
|
333
359
|
siteName?: string;
|
|
334
360
|
}): Metadata;
|
|
335
|
-
/**
|
|
336
|
-
* Generate Person JSON-LD schema for an author page
|
|
337
|
-
*/
|
|
338
|
-
declare function generateAuthorSchema(author: BlogAuthor, options?: {
|
|
339
|
-
siteUrl?: string;
|
|
340
|
-
siteName?: string;
|
|
341
|
-
}): object;
|
|
342
361
|
|
|
343
362
|
export { BlogPost as BlogPostRecord, type HowToStep, SEO_LIMITS, type SeoValidationResult, generateAllBlogSchemas, generateAtomFeed, generateAuthorPageMetadata, generateAuthorSchema, generateAuthorStaticParams, generateBlogCategoryMetadata, generateBlogIndexMetadata, generateBlogListSchema, generateBlogPostMetadata, generateBlogPostSchema, generateBlogSitemap, generateBlogStaticParams, generateBreadcrumbSchema, generateCategoryStaticParams, generateClusterArticleSchema, generateClusterBreadcrumbSchema, generateClusterItemListSchema, generateClusterLandingSchema, generateClusterPageMetadata, generateFaqSchema, generateHowToSchema, generateRssFeed, getAllAuthorSlugs, getAllBlogPosts, getAllBlogSlugs, getAuthorBySlug, getAuthorPosts, getBlogCategories, getBlogPost, getClusterNavigation, getPostsByCategory, getRelatedInsights, getTopicCluster, getTopicClusters, identifyTopicClusters, validateBlogPostSeo, validateMetaDescription, validateSeoTitle };
|
package/dist/blog/server.js
CHANGED
|
@@ -1,165 +1,167 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkXAWB2HFQ_js = require('../chunk-XAWB2HFQ.js');
|
|
4
|
+
var chunkTPL2IHFI_js = require('../chunk-TPL2IHFI.js');
|
|
5
|
+
require('../chunk-QPIKPWAZ.js');
|
|
4
6
|
require('../chunk-ZSMWDLMK.js');
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
|
|
8
10
|
Object.defineProperty(exports, "SEO_LIMITS", {
|
|
9
11
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkXAWB2HFQ_js.SEO_LIMITS; }
|
|
11
13
|
});
|
|
12
14
|
Object.defineProperty(exports, "generateAllBlogSchemas", {
|
|
13
15
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkXAWB2HFQ_js.generateAllBlogSchemas; }
|
|
15
17
|
});
|
|
16
18
|
Object.defineProperty(exports, "generateAtomFeed", {
|
|
17
19
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkXAWB2HFQ_js.generateAtomFeed; }
|
|
19
21
|
});
|
|
20
22
|
Object.defineProperty(exports, "generateAuthorPageMetadata", {
|
|
21
23
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
23
|
-
});
|
|
24
|
-
Object.defineProperty(exports, "generateAuthorSchema", {
|
|
25
|
-
enumerable: true,
|
|
26
|
-
get: function () { return chunkIB4FRJDV_js.generateAuthorSchema; }
|
|
24
|
+
get: function () { return chunkXAWB2HFQ_js.generateAuthorPageMetadata; }
|
|
27
25
|
});
|
|
28
26
|
Object.defineProperty(exports, "generateAuthorStaticParams", {
|
|
29
27
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkXAWB2HFQ_js.generateAuthorStaticParams; }
|
|
31
29
|
});
|
|
32
30
|
Object.defineProperty(exports, "generateBlogCategoryMetadata", {
|
|
33
31
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogCategoryMetadata; }
|
|
35
33
|
});
|
|
36
34
|
Object.defineProperty(exports, "generateBlogIndexMetadata", {
|
|
37
35
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogIndexMetadata; }
|
|
39
37
|
});
|
|
40
38
|
Object.defineProperty(exports, "generateBlogListSchema", {
|
|
41
39
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogListSchema; }
|
|
43
41
|
});
|
|
44
42
|
Object.defineProperty(exports, "generateBlogPostMetadata", {
|
|
45
43
|
enumerable: true,
|
|
46
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogPostMetadata; }
|
|
47
45
|
});
|
|
48
46
|
Object.defineProperty(exports, "generateBlogPostSchema", {
|
|
49
47
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogPostSchema; }
|
|
51
49
|
});
|
|
52
50
|
Object.defineProperty(exports, "generateBlogSitemap", {
|
|
53
51
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogSitemap; }
|
|
55
53
|
});
|
|
56
54
|
Object.defineProperty(exports, "generateBlogStaticParams", {
|
|
57
55
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunkXAWB2HFQ_js.generateBlogStaticParams; }
|
|
59
57
|
});
|
|
60
58
|
Object.defineProperty(exports, "generateBreadcrumbSchema", {
|
|
61
59
|
enumerable: true,
|
|
62
|
-
get: function () { return
|
|
60
|
+
get: function () { return chunkXAWB2HFQ_js.generateBreadcrumbSchema; }
|
|
63
61
|
});
|
|
64
62
|
Object.defineProperty(exports, "generateCategoryStaticParams", {
|
|
65
63
|
enumerable: true,
|
|
66
|
-
get: function () { return
|
|
64
|
+
get: function () { return chunkXAWB2HFQ_js.generateCategoryStaticParams; }
|
|
67
65
|
});
|
|
68
66
|
Object.defineProperty(exports, "generateClusterArticleSchema", {
|
|
69
67
|
enumerable: true,
|
|
70
|
-
get: function () { return
|
|
68
|
+
get: function () { return chunkXAWB2HFQ_js.generateClusterArticleSchema; }
|
|
71
69
|
});
|
|
72
70
|
Object.defineProperty(exports, "generateClusterBreadcrumbSchema", {
|
|
73
71
|
enumerable: true,
|
|
74
|
-
get: function () { return
|
|
72
|
+
get: function () { return chunkXAWB2HFQ_js.generateClusterBreadcrumbSchema; }
|
|
75
73
|
});
|
|
76
74
|
Object.defineProperty(exports, "generateClusterItemListSchema", {
|
|
77
75
|
enumerable: true,
|
|
78
|
-
get: function () { return
|
|
76
|
+
get: function () { return chunkXAWB2HFQ_js.generateClusterItemListSchema; }
|
|
79
77
|
});
|
|
80
78
|
Object.defineProperty(exports, "generateClusterLandingSchema", {
|
|
81
79
|
enumerable: true,
|
|
82
|
-
get: function () { return
|
|
80
|
+
get: function () { return chunkXAWB2HFQ_js.generateClusterLandingSchema; }
|
|
83
81
|
});
|
|
84
82
|
Object.defineProperty(exports, "generateClusterPageMetadata", {
|
|
85
83
|
enumerable: true,
|
|
86
|
-
get: function () { return
|
|
84
|
+
get: function () { return chunkXAWB2HFQ_js.generateClusterPageMetadata; }
|
|
87
85
|
});
|
|
88
86
|
Object.defineProperty(exports, "generateFaqSchema", {
|
|
89
87
|
enumerable: true,
|
|
90
|
-
get: function () { return
|
|
88
|
+
get: function () { return chunkXAWB2HFQ_js.generateFaqSchema; }
|
|
91
89
|
});
|
|
92
90
|
Object.defineProperty(exports, "generateHowToSchema", {
|
|
93
91
|
enumerable: true,
|
|
94
|
-
get: function () { return
|
|
92
|
+
get: function () { return chunkXAWB2HFQ_js.generateHowToSchema; }
|
|
95
93
|
});
|
|
96
94
|
Object.defineProperty(exports, "generateRssFeed", {
|
|
97
95
|
enumerable: true,
|
|
98
|
-
get: function () { return
|
|
96
|
+
get: function () { return chunkXAWB2HFQ_js.generateRssFeed; }
|
|
99
97
|
});
|
|
100
98
|
Object.defineProperty(exports, "getAllAuthorSlugs", {
|
|
101
99
|
enumerable: true,
|
|
102
|
-
get: function () { return
|
|
100
|
+
get: function () { return chunkXAWB2HFQ_js.getAllAuthorSlugs; }
|
|
103
101
|
});
|
|
104
102
|
Object.defineProperty(exports, "getAllBlogPosts", {
|
|
105
103
|
enumerable: true,
|
|
106
|
-
get: function () { return
|
|
104
|
+
get: function () { return chunkXAWB2HFQ_js.getAllBlogPosts; }
|
|
107
105
|
});
|
|
108
106
|
Object.defineProperty(exports, "getAllBlogSlugs", {
|
|
109
107
|
enumerable: true,
|
|
110
|
-
get: function () { return
|
|
108
|
+
get: function () { return chunkXAWB2HFQ_js.getAllBlogSlugs; }
|
|
111
109
|
});
|
|
112
110
|
Object.defineProperty(exports, "getAuthorBySlug", {
|
|
113
111
|
enumerable: true,
|
|
114
|
-
get: function () { return
|
|
112
|
+
get: function () { return chunkXAWB2HFQ_js.getAuthorBySlug; }
|
|
115
113
|
});
|
|
116
114
|
Object.defineProperty(exports, "getAuthorPosts", {
|
|
117
115
|
enumerable: true,
|
|
118
|
-
get: function () { return
|
|
116
|
+
get: function () { return chunkXAWB2HFQ_js.getAuthorPosts; }
|
|
119
117
|
});
|
|
120
118
|
Object.defineProperty(exports, "getBlogCategories", {
|
|
121
119
|
enumerable: true,
|
|
122
|
-
get: function () { return
|
|
120
|
+
get: function () { return chunkXAWB2HFQ_js.getBlogCategories; }
|
|
123
121
|
});
|
|
124
122
|
Object.defineProperty(exports, "getBlogPost", {
|
|
125
123
|
enumerable: true,
|
|
126
|
-
get: function () { return
|
|
124
|
+
get: function () { return chunkXAWB2HFQ_js.getBlogPost; }
|
|
127
125
|
});
|
|
128
126
|
Object.defineProperty(exports, "getClusterNavigation", {
|
|
129
127
|
enumerable: true,
|
|
130
|
-
get: function () { return
|
|
128
|
+
get: function () { return chunkXAWB2HFQ_js.getClusterNavigation; }
|
|
131
129
|
});
|
|
132
130
|
Object.defineProperty(exports, "getPostsByCategory", {
|
|
133
131
|
enumerable: true,
|
|
134
|
-
get: function () { return
|
|
132
|
+
get: function () { return chunkXAWB2HFQ_js.getPostsByCategory; }
|
|
135
133
|
});
|
|
136
134
|
Object.defineProperty(exports, "getRelatedInsights", {
|
|
137
135
|
enumerable: true,
|
|
138
|
-
get: function () { return
|
|
136
|
+
get: function () { return chunkXAWB2HFQ_js.getRelatedInsights; }
|
|
139
137
|
});
|
|
140
138
|
Object.defineProperty(exports, "getTopicCluster", {
|
|
141
139
|
enumerable: true,
|
|
142
|
-
get: function () { return
|
|
140
|
+
get: function () { return chunkXAWB2HFQ_js.getTopicCluster; }
|
|
143
141
|
});
|
|
144
142
|
Object.defineProperty(exports, "getTopicClusters", {
|
|
145
143
|
enumerable: true,
|
|
146
|
-
get: function () { return
|
|
144
|
+
get: function () { return chunkXAWB2HFQ_js.getTopicClusters; }
|
|
147
145
|
});
|
|
148
146
|
Object.defineProperty(exports, "identifyTopicClusters", {
|
|
149
147
|
enumerable: true,
|
|
150
|
-
get: function () { return
|
|
148
|
+
get: function () { return chunkXAWB2HFQ_js.identifyTopicClusters; }
|
|
151
149
|
});
|
|
152
150
|
Object.defineProperty(exports, "validateBlogPostSeo", {
|
|
153
151
|
enumerable: true,
|
|
154
|
-
get: function () { return
|
|
152
|
+
get: function () { return chunkXAWB2HFQ_js.validateBlogPostSeo; }
|
|
155
153
|
});
|
|
156
154
|
Object.defineProperty(exports, "validateMetaDescription", {
|
|
157
155
|
enumerable: true,
|
|
158
|
-
get: function () { return
|
|
156
|
+
get: function () { return chunkXAWB2HFQ_js.validateMetaDescription; }
|
|
159
157
|
});
|
|
160
158
|
Object.defineProperty(exports, "validateSeoTitle", {
|
|
161
159
|
enumerable: true,
|
|
162
|
-
get: function () { return
|
|
160
|
+
get: function () { return chunkXAWB2HFQ_js.validateSeoTitle; }
|
|
161
|
+
});
|
|
162
|
+
Object.defineProperty(exports, "generateAuthorSchema", {
|
|
163
|
+
enumerable: true,
|
|
164
|
+
get: function () { return chunkTPL2IHFI_js.generateAuthorSchema; }
|
|
163
165
|
});
|
|
164
166
|
//# sourceMappingURL=server.js.map
|
|
165
167
|
//# sourceMappingURL=server.js.map
|
package/dist/blog/server.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export { SEO_LIMITS, generateAllBlogSchemas, generateAtomFeed, generateAuthorPageMetadata,
|
|
1
|
+
export { SEO_LIMITS, generateAllBlogSchemas, generateAtomFeed, generateAuthorPageMetadata, generateAuthorStaticParams, generateBlogCategoryMetadata, generateBlogIndexMetadata, generateBlogListSchema, generateBlogPostMetadata, generateBlogPostSchema, generateBlogSitemap, generateBlogStaticParams, generateBreadcrumbSchema, generateCategoryStaticParams, generateClusterArticleSchema, generateClusterBreadcrumbSchema, generateClusterItemListSchema, generateClusterLandingSchema, generateClusterPageMetadata, generateFaqSchema, generateHowToSchema, generateRssFeed, getAllAuthorSlugs, getAllBlogPosts, getAllBlogSlugs, getAuthorBySlug, getAuthorPosts, getBlogCategories, getBlogPost, getClusterNavigation, getPostsByCategory, getRelatedInsights, getTopicCluster, getTopicClusters, identifyTopicClusters, validateBlogPostSeo, validateMetaDescription, validateSeoTitle } from '../chunk-GUXB3QH7.mjs';
|
|
2
|
+
export { generateAuthorSchema } from '../chunk-CGCYZJYX.mjs';
|
|
3
|
+
import '../chunk-UDBUK5ZJ.mjs';
|
|
2
4
|
import '../chunk-4XPGGLVP.mjs';
|
|
3
5
|
//# sourceMappingURL=server.mjs.map
|
|
4
6
|
//# sourceMappingURL=server.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { locToPath, isMalformedSitemapPath, inferPageType } from './chunk-QJU6HBSK.mjs';
|
|
3
|
-
import { sonorFetch } from './chunk-
|
|
3
|
+
import { sonorFetch } from './chunk-VX3WK77I.mjs';
|
|
4
4
|
import { useRef, useEffect } from 'react';
|
|
5
5
|
|
|
6
6
|
var SYNC_STAMP_KEY = "_sk_sitemap_synced_at";
|
|
@@ -190,5 +190,5 @@ function SitemapSync({
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
export { SitemapSync };
|
|
193
|
-
//# sourceMappingURL=chunk-
|
|
194
|
-
//# sourceMappingURL=chunk-
|
|
193
|
+
//# sourceMappingURL=chunk-2NA5CAK5.mjs.map
|
|
194
|
+
//# sourceMappingURL=chunk-2NA5CAK5.mjs.map
|