@sonordev/site-kit 2.2.9 → 2.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/dist/blog/index.d.mts +31 -3
- package/dist/blog/index.d.ts +31 -3
- package/dist/blog/index.js +194 -10
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +183 -4
- 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 +3 -3
- package/dist/blog/server-ui.mjs +1 -1
- package/dist/blog/server.d.mts +79 -7
- package/dist/blog/server.d.ts +79 -7
- package/dist/blog/server.js +64 -32
- package/dist/blog/server.mjs +1 -1
- package/dist/{chunk-WRCX2NKY.mjs → chunk-2NM6RGAV.mjs} +226 -22
- package/dist/chunk-2NM6RGAV.mjs.map +1 -0
- package/dist/chunk-5B4FABFK.js +28 -0
- package/dist/chunk-5B4FABFK.js.map +1 -0
- package/dist/{chunk-DTVZJPVM.mjs → chunk-5SQ4NRPH.mjs} +9 -2
- package/dist/chunk-5SQ4NRPH.mjs.map +1 -0
- package/dist/chunk-ATG4FJY6.js +76 -0
- package/dist/chunk-ATG4FJY6.js.map +1 -0
- package/dist/{chunk-GQKBGL2W.js → chunk-DZKX3GHL.js} +233 -21
- package/dist/chunk-DZKX3GHL.js.map +1 -0
- package/dist/{chunk-LNMI6OMN.js → chunk-F54HGPDM.js} +137 -4
- package/dist/chunk-F54HGPDM.js.map +1 -0
- package/dist/chunk-H23ZT2I2.mjs +67 -0
- package/dist/chunk-H23ZT2I2.mjs.map +1 -0
- package/dist/chunk-H4OBGC43.mjs +26 -0
- package/dist/chunk-H4OBGC43.mjs.map +1 -0
- package/dist/{chunk-Z6EHHJWU.mjs → chunk-MNOVPHL6.mjs} +230 -35
- package/dist/chunk-MNOVPHL6.mjs.map +1 -0
- package/dist/{chunk-ITPVKQB6.js → chunk-MWE2HRPU.js} +229 -34
- package/dist/chunk-MWE2HRPU.js.map +1 -0
- package/dist/{chunk-AWMEH65F.js → chunk-PAF5IGGF.js} +9 -2
- package/dist/chunk-PAF5IGGF.js.map +1 -0
- package/dist/{chunk-OOZCN7AF.mjs → chunk-T5UU7I4V.mjs} +137 -5
- package/dist/chunk-T5UU7I4V.mjs.map +1 -0
- package/dist/cli/index.js +352 -78
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +352 -78
- package/dist/cli/index.mjs.map +1 -1
- package/dist/config/index.d.mts +17 -0
- package/dist/config/index.d.ts +17 -0
- package/dist/config/index.js +43 -3
- package/dist/config/index.js.map +1 -1
- package/dist/config/index.mjs +43 -3
- package/dist/config/index.mjs.map +1 -1
- package/dist/forms/index.js +3 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +3 -1
- package/dist/forms/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/layout/index.d.mts +6 -1
- package/dist/layout/index.d.ts +6 -1
- package/dist/layout/index.js +7 -3
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +7 -3
- package/dist/layout/index.mjs.map +1 -1
- package/dist/llms/contract.d.mts +43 -0
- package/dist/llms/contract.d.ts +43 -0
- package/dist/llms/contract.js +41 -0
- package/dist/llms/contract.js.map +1 -0
- package/dist/llms/contract.mjs +4 -0
- package/dist/llms/contract.mjs.map +1 -0
- package/dist/llms/index.d.mts +67 -5
- package/dist/llms/index.d.ts +67 -5
- package/dist/llms/index.js +154 -36
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +107 -27
- package/dist/llms/index.mjs.map +1 -1
- package/dist/middleware/index.d.mts +13 -1
- package/dist/middleware/index.d.ts +13 -1
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/index.mjs +11 -0
- package/dist/middleware/index.mjs.map +1 -1
- package/dist/{routing-ccNYbFLU.d.ts → routing-C7gmHWm9.d.ts} +1 -1
- package/dist/{routing-ebQln7wH.d.mts → routing-trNzR1Pz.d.mts} +1 -1
- package/dist/seo/index.d.mts +19 -4
- package/dist/seo/index.d.ts +19 -4
- package/dist/seo/index.js +49 -14
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +42 -8
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo/server.d.mts +2 -2
- package/dist/seo/server.d.ts +2 -2
- package/dist/seo/server.js +5 -5
- package/dist/seo/server.mjs +1 -1
- package/dist/sitemap/index.d.mts +8 -1
- package/dist/sitemap/index.d.ts +8 -1
- package/dist/sitemap/index.js +24 -4
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +23 -3
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/{types-BxzT7yhf.d.mts → types-0NuBL1Gg.d.ts} +34 -0
- package/dist/{types-DWMpAtGy.d.mts → types-5P5B9RgV.d.mts} +57 -1
- package/dist/{types-DWMpAtGy.d.ts → types-5P5B9RgV.d.ts} +57 -1
- package/dist/{types-CGkyylOa.d.mts → types-DYyIAgQg.d.mts} +2 -0
- package/dist/{types-CGkyylOa.d.ts → types-DYyIAgQg.d.ts} +2 -0
- package/dist/{types-BxzT7yhf.d.ts → types-J7Z_FqmV.d.mts} +34 -0
- package/package.json +15 -1
- package/scripts/postinstall.cjs +67 -0
- package/dist/chunk-AWMEH65F.js.map +0 -1
- package/dist/chunk-DTVZJPVM.mjs.map +0 -1
- package/dist/chunk-GQKBGL2W.js.map +0 -1
- package/dist/chunk-ITPVKQB6.js.map +0 -1
- package/dist/chunk-LNMI6OMN.js.map +0 -1
- package/dist/chunk-OOZCN7AF.mjs.map +0 -1
- package/dist/chunk-WRCX2NKY.mjs.map +0 -1
- package/dist/chunk-Z6EHHJWU.mjs.map +0 -1
package/dist/blog/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { BlogList, BlogListServerProps, BlogListStyles, BlogPost, BlogPostServerProps, BlogPostStyles } from './server-ui.mjs';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import React__default from 'react';
|
|
4
|
-
import { A as AuthorCardProps, c as AuthorPageProps, B as BlogPost,
|
|
5
|
-
export {
|
|
4
|
+
import { A as AuthorCardProps, c as AuthorPageProps, B as BlogPost, d as TableOfContentsProps, C as ClusterNavigation$1, T as TopicCluster } from '../types-5P5B9RgV.mjs';
|
|
5
|
+
export { m as BlogAnalytics, a as BlogAuthor, b as BlogCategory, f as BlogListOptions, j as BlogListProps, k as BlogListRenderProps, g as BlogListResult, h as BlogPostProps, i as BlogPostRenderProps, e as BlogTag, R as RelatedPostsProps, l as TocItem } from '../types-5P5B9RgV.mjs';
|
|
6
6
|
|
|
7
7
|
interface BlogSidebarProps {
|
|
8
8
|
/** Portal API URL */
|
|
@@ -206,6 +206,34 @@ interface BlogFAQProps {
|
|
|
206
206
|
}
|
|
207
207
|
declare function BlogFAQ({ items, title, allowMultiple, styles, unstyled, }: BlogFAQProps): react_jsx_runtime.JSX.Element | null;
|
|
208
208
|
|
|
209
|
+
interface ClusterNavigationProps {
|
|
210
|
+
/** Cluster navigation data (from getClusterNavigation) */
|
|
211
|
+
navigation: ClusterNavigation$1;
|
|
212
|
+
/** Base path for blog URLs (default: /blog) */
|
|
213
|
+
basePath?: string;
|
|
214
|
+
/** Disable default styles */
|
|
215
|
+
unstyled?: boolean;
|
|
216
|
+
/** Custom class name */
|
|
217
|
+
className?: string;
|
|
218
|
+
}
|
|
219
|
+
declare function ClusterNavigation({ navigation, basePath, unstyled, className, }: ClusterNavigationProps): react_jsx_runtime.JSX.Element | null;
|
|
220
|
+
|
|
221
|
+
interface ClusterLandingPageProps {
|
|
222
|
+
/** Cluster slug to fetch */
|
|
223
|
+
slug: string;
|
|
224
|
+
/** Base path for blog URLs (default: /blog) */
|
|
225
|
+
basePath?: string;
|
|
226
|
+
/** Disable default styles */
|
|
227
|
+
unstyled?: boolean;
|
|
228
|
+
/** Custom class name */
|
|
229
|
+
className?: string;
|
|
230
|
+
/** Render prop for full data access */
|
|
231
|
+
children?: (props: {
|
|
232
|
+
cluster: TopicCluster;
|
|
233
|
+
}) => React__default.ReactNode;
|
|
234
|
+
}
|
|
235
|
+
declare function ClusterLandingPage({ slug, basePath, unstyled, className, children, }: ClusterLandingPageProps): Promise<string | number | bigint | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined>;
|
|
236
|
+
|
|
209
237
|
/**
|
|
210
238
|
* Post-process Portal/blog HTML for safe, consistent link behavior.
|
|
211
239
|
* Server-safe string transforms only (no DOM).
|
|
@@ -224,4 +252,4 @@ declare function resolveBlogSiteUrl(explicit?: string): string;
|
|
|
224
252
|
*/
|
|
225
253
|
declare function addExternalLinkTargets(html: string, siteUrl: string): string;
|
|
226
254
|
|
|
227
|
-
export { AuthorCard, AuthorCardProps, AuthorPage, AuthorPageProps, BlogFAQ, type BlogFAQProps, BlogLayout, type BlogLayoutProps, BlogPage, type BlogPageProps, BlogPostPage, type BlogPostPageProps, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, type FaqItem, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, ServiceCallout, type ServiceCalloutProps, ServiceCallouts, TableOfContents, TableOfContentsProps, addExternalLinkTargets, normalizeSiteHost, resolveBlogSiteUrl };
|
|
255
|
+
export { AuthorCard, AuthorCardProps, AuthorPage, AuthorPageProps, BlogFAQ, type BlogFAQProps, BlogLayout, type BlogLayoutProps, BlogPage, type BlogPageProps, BlogPostPage, type BlogPostPageProps, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, ClusterLandingPage, type ClusterLandingPageProps, ClusterNavigation, type ClusterNavigationProps, type FaqItem, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, ServiceCallout, type ServiceCalloutProps, ServiceCallouts, TableOfContents, TableOfContentsProps, TopicCluster, addExternalLinkTargets, normalizeSiteHost, resolveBlogSiteUrl };
|
package/dist/blog/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { BlogList, BlogListServerProps, BlogListStyles, BlogPost, BlogPostServerProps, BlogPostStyles } from './server-ui.js';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import React__default from 'react';
|
|
4
|
-
import { A as AuthorCardProps, c as AuthorPageProps, B as BlogPost,
|
|
5
|
-
export {
|
|
4
|
+
import { A as AuthorCardProps, c as AuthorPageProps, B as BlogPost, d as TableOfContentsProps, C as ClusterNavigation$1, T as TopicCluster } from '../types-5P5B9RgV.js';
|
|
5
|
+
export { m as BlogAnalytics, a as BlogAuthor, b as BlogCategory, f as BlogListOptions, j as BlogListProps, k as BlogListRenderProps, g as BlogListResult, h as BlogPostProps, i as BlogPostRenderProps, e as BlogTag, R as RelatedPostsProps, l as TocItem } from '../types-5P5B9RgV.js';
|
|
6
6
|
|
|
7
7
|
interface BlogSidebarProps {
|
|
8
8
|
/** Portal API URL */
|
|
@@ -206,6 +206,34 @@ interface BlogFAQProps {
|
|
|
206
206
|
}
|
|
207
207
|
declare function BlogFAQ({ items, title, allowMultiple, styles, unstyled, }: BlogFAQProps): react_jsx_runtime.JSX.Element | null;
|
|
208
208
|
|
|
209
|
+
interface ClusterNavigationProps {
|
|
210
|
+
/** Cluster navigation data (from getClusterNavigation) */
|
|
211
|
+
navigation: ClusterNavigation$1;
|
|
212
|
+
/** Base path for blog URLs (default: /blog) */
|
|
213
|
+
basePath?: string;
|
|
214
|
+
/** Disable default styles */
|
|
215
|
+
unstyled?: boolean;
|
|
216
|
+
/** Custom class name */
|
|
217
|
+
className?: string;
|
|
218
|
+
}
|
|
219
|
+
declare function ClusterNavigation({ navigation, basePath, unstyled, className, }: ClusterNavigationProps): react_jsx_runtime.JSX.Element | null;
|
|
220
|
+
|
|
221
|
+
interface ClusterLandingPageProps {
|
|
222
|
+
/** Cluster slug to fetch */
|
|
223
|
+
slug: string;
|
|
224
|
+
/** Base path for blog URLs (default: /blog) */
|
|
225
|
+
basePath?: string;
|
|
226
|
+
/** Disable default styles */
|
|
227
|
+
unstyled?: boolean;
|
|
228
|
+
/** Custom class name */
|
|
229
|
+
className?: string;
|
|
230
|
+
/** Render prop for full data access */
|
|
231
|
+
children?: (props: {
|
|
232
|
+
cluster: TopicCluster;
|
|
233
|
+
}) => React__default.ReactNode;
|
|
234
|
+
}
|
|
235
|
+
declare function ClusterLandingPage({ slug, basePath, unstyled, className, children, }: ClusterLandingPageProps): Promise<string | number | bigint | boolean | Iterable<React__default.ReactNode> | react_jsx_runtime.JSX.Element | null | undefined>;
|
|
236
|
+
|
|
209
237
|
/**
|
|
210
238
|
* Post-process Portal/blog HTML for safe, consistent link behavior.
|
|
211
239
|
* Server-safe string transforms only (no DOM).
|
|
@@ -224,4 +252,4 @@ declare function resolveBlogSiteUrl(explicit?: string): string;
|
|
|
224
252
|
*/
|
|
225
253
|
declare function addExternalLinkTargets(html: string, siteUrl: string): string;
|
|
226
254
|
|
|
227
|
-
export { AuthorCard, AuthorCardProps, AuthorPage, AuthorPageProps, BlogFAQ, type BlogFAQProps, BlogLayout, type BlogLayoutProps, BlogPage, type BlogPageProps, BlogPostPage, type BlogPostPageProps, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, type FaqItem, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, ServiceCallout, type ServiceCalloutProps, ServiceCallouts, TableOfContents, TableOfContentsProps, addExternalLinkTargets, normalizeSiteHost, resolveBlogSiteUrl };
|
|
255
|
+
export { AuthorCard, AuthorCardProps, AuthorPage, AuthorPageProps, BlogFAQ, type BlogFAQProps, BlogLayout, type BlogLayoutProps, BlogPage, type BlogPageProps, BlogPostPage, type BlogPostPageProps, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, ClusterLandingPage, type ClusterLandingPageProps, ClusterNavigation, type ClusterNavigationProps, type FaqItem, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, ServiceCallout, type ServiceCalloutProps, ServiceCallouts, TableOfContents, TableOfContentsProps, TopicCluster, addExternalLinkTargets, normalizeSiteHost, resolveBlogSiteUrl };
|
package/dist/blog/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkUJQYSVYV_js = require('../chunk-UJQYSVYV.js');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var chunkDZKX3GHL_js = require('../chunk-DZKX3GHL.js');
|
|
6
|
+
var chunkF54HGPDM_js = require('../chunk-F54HGPDM.js');
|
|
7
7
|
require('../chunk-ZSMWDLMK.js');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
9
|
var react = require('react');
|
|
@@ -698,7 +698,7 @@ function PostCard({ post, basePath }) {
|
|
|
698
698
|
);
|
|
699
699
|
}
|
|
700
700
|
function AuthorPage({ author, posts, basePath = "/blog" }) {
|
|
701
|
-
const schema =
|
|
701
|
+
const schema = chunkDZKX3GHL_js.generateAuthorSchema(author);
|
|
702
702
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sk-author-page", children: [
|
|
703
703
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
704
704
|
"script",
|
|
@@ -876,6 +876,185 @@ function TableOfContents({
|
|
|
876
876
|
)) })
|
|
877
877
|
] });
|
|
878
878
|
}
|
|
879
|
+
var clusterLandingCss = `
|
|
880
|
+
.sk-cluster-landing { max-width: 72rem; margin: 0 auto; padding: 2rem 1rem; }
|
|
881
|
+
|
|
882
|
+
.sk-cluster-hero { margin-bottom: 3rem; text-align: center; }
|
|
883
|
+
.sk-cluster-hero-label {
|
|
884
|
+
display: inline-flex; align-items: center; gap: 0.375rem;
|
|
885
|
+
font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
|
|
886
|
+
letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;
|
|
887
|
+
}
|
|
888
|
+
.sk-cluster-hero-title {
|
|
889
|
+
font-size: 2.25rem; font-weight: 800; color: #111827;
|
|
890
|
+
line-height: 1.2; margin: 0 0 0.75rem 0;
|
|
891
|
+
}
|
|
892
|
+
.sk-cluster-hero-desc {
|
|
893
|
+
font-size: 1.125rem; color: #6b7280; max-width: 40rem;
|
|
894
|
+
margin: 0 auto; line-height: 1.6;
|
|
895
|
+
}
|
|
896
|
+
.sk-cluster-hero-meta {
|
|
897
|
+
display: flex; justify-content: center; gap: 1.5rem;
|
|
898
|
+
margin-top: 1rem; font-size: 0.875rem; color: #9ca3af;
|
|
899
|
+
}
|
|
900
|
+
|
|
901
|
+
.sk-cluster-pillar-card {
|
|
902
|
+
display: block; text-decoration: none; color: inherit;
|
|
903
|
+
padding: 2rem; border-radius: 0.75rem;
|
|
904
|
+
background: linear-gradient(135deg, rgba(99,102,241,0.04), rgba(99,102,241,0.01));
|
|
905
|
+
border: 2px solid rgba(99,102,241,0.2);
|
|
906
|
+
margin-bottom: 3rem; transition: border-color 0.2s, box-shadow 0.2s;
|
|
907
|
+
}
|
|
908
|
+
.sk-cluster-pillar-card:hover {
|
|
909
|
+
border-color: rgba(99,102,241,0.4);
|
|
910
|
+
box-shadow: 0 4px 24px rgba(99,102,241,0.08);
|
|
911
|
+
}
|
|
912
|
+
.sk-cluster-pillar-label {
|
|
913
|
+
display: inline-flex; align-items: center; gap: 0.375rem;
|
|
914
|
+
font-size: 0.6875rem; font-weight: 700; text-transform: uppercase;
|
|
915
|
+
letter-spacing: 0.05em; color: #6366f1; margin-bottom: 0.75rem;
|
|
916
|
+
padding: 0.25rem 0.5rem; border-radius: 9999px;
|
|
917
|
+
background: rgba(99,102,241,0.08);
|
|
918
|
+
}
|
|
919
|
+
.sk-cluster-pillar-title {
|
|
920
|
+
font-size: 1.5rem; font-weight: 700; color: #111827;
|
|
921
|
+
margin: 0 0 0.5rem 0; line-height: 1.3;
|
|
922
|
+
}
|
|
923
|
+
.sk-cluster-pillar-excerpt {
|
|
924
|
+
font-size: 1rem; color: #6b7280; line-height: 1.6;
|
|
925
|
+
margin: 0 0 1rem 0;
|
|
926
|
+
}
|
|
927
|
+
.sk-cluster-pillar-meta {
|
|
928
|
+
display: flex; gap: 1rem; font-size: 0.8125rem; color: #9ca3af;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
.sk-cluster-supports-section { margin-bottom: 2rem; }
|
|
932
|
+
.sk-cluster-supports-title {
|
|
933
|
+
font-size: 1.25rem; font-weight: 700; color: #111827;
|
|
934
|
+
margin: 0 0 1.25rem 0;
|
|
935
|
+
}
|
|
936
|
+
.sk-cluster-supports-grid {
|
|
937
|
+
display: grid; gap: 1.25rem;
|
|
938
|
+
grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr));
|
|
939
|
+
}
|
|
940
|
+
.sk-cluster-support-card {
|
|
941
|
+
display: block; text-decoration: none; color: inherit;
|
|
942
|
+
padding: 1.25rem; border-radius: 0.5rem;
|
|
943
|
+
border: 1px solid #e5e7eb; background: #fff;
|
|
944
|
+
transition: border-color 0.2s, box-shadow 0.2s;
|
|
945
|
+
}
|
|
946
|
+
.sk-cluster-support-card:hover {
|
|
947
|
+
border-color: #c7d2fe;
|
|
948
|
+
box-shadow: 0 2px 12px rgba(0,0,0,0.04);
|
|
949
|
+
}
|
|
950
|
+
.sk-cluster-support-card-header {
|
|
951
|
+
display: flex; align-items: center; gap: 0.5rem;
|
|
952
|
+
margin-bottom: 0.5rem;
|
|
953
|
+
}
|
|
954
|
+
.sk-cluster-support-type {
|
|
955
|
+
display: inline-flex; align-items: center;
|
|
956
|
+
padding: 0.125rem 0.375rem; border-radius: 9999px;
|
|
957
|
+
font-size: 0.6875rem; font-weight: 500;
|
|
958
|
+
background: rgba(99,102,241,0.06); color: #6366f1;
|
|
959
|
+
border: 1px solid rgba(99,102,241,0.12);
|
|
960
|
+
text-transform: capitalize;
|
|
961
|
+
}
|
|
962
|
+
.sk-cluster-support-intent {
|
|
963
|
+
font-size: 0.6875rem; color: #9ca3af;
|
|
964
|
+
text-transform: capitalize;
|
|
965
|
+
}
|
|
966
|
+
.sk-cluster-support-title {
|
|
967
|
+
font-size: 1rem; font-weight: 600; color: #111827;
|
|
968
|
+
margin: 0 0 0.375rem 0; line-height: 1.4;
|
|
969
|
+
}
|
|
970
|
+
.sk-cluster-support-excerpt {
|
|
971
|
+
font-size: 0.875rem; color: #6b7280; line-height: 1.5;
|
|
972
|
+
margin: 0; display: -webkit-box; -webkit-line-clamp: 2;
|
|
973
|
+
-webkit-box-orient: vertical; overflow: hidden;
|
|
974
|
+
}
|
|
975
|
+
.sk-cluster-support-meta {
|
|
976
|
+
display: flex; gap: 0.75rem; margin-top: 0.75rem;
|
|
977
|
+
font-size: 0.75rem; color: #9ca3af;
|
|
978
|
+
}
|
|
979
|
+
`;
|
|
980
|
+
async function ClusterLandingPage({
|
|
981
|
+
slug,
|
|
982
|
+
basePath = "/blog",
|
|
983
|
+
unstyled = false,
|
|
984
|
+
className,
|
|
985
|
+
children
|
|
986
|
+
}) {
|
|
987
|
+
const cluster = await chunkDZKX3GHL_js.getTopicCluster(slug);
|
|
988
|
+
if (!cluster) {
|
|
989
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { padding: "4rem 1rem", textAlign: "center", color: "#6b7280" }, children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Topic cluster not found." }) });
|
|
990
|
+
}
|
|
991
|
+
if (children) {
|
|
992
|
+
return children({ cluster });
|
|
993
|
+
}
|
|
994
|
+
const pillar = cluster.pillar;
|
|
995
|
+
const supports = cluster.supports || [];
|
|
996
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
997
|
+
!unstyled && /* @__PURE__ */ jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: clusterLandingCss } }),
|
|
998
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${unstyled ? "" : "sk-cluster-landing"} ${className || ""}`, children: [
|
|
999
|
+
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: unstyled ? "" : "sk-cluster-hero", children: [
|
|
1000
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: unstyled ? "" : "sk-cluster-hero-label", children: "Topic Cluster" }),
|
|
1001
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: unstyled ? "" : "sk-cluster-hero-title", children: cluster.cluster_name }),
|
|
1002
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: unstyled ? "" : "sk-cluster-hero-desc", children: [
|
|
1003
|
+
cluster.core_topic,
|
|
1004
|
+
cluster.geo_target ? ` in ${cluster.geo_target}` : ""
|
|
1005
|
+
] }),
|
|
1006
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: unstyled ? "" : "sk-cluster-hero-meta", children: [
|
|
1007
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1008
|
+
cluster.article_count,
|
|
1009
|
+
" articles"
|
|
1010
|
+
] }),
|
|
1011
|
+
cluster.geo_target && /* @__PURE__ */ jsxRuntime.jsx("span", { children: cluster.geo_target })
|
|
1012
|
+
] })
|
|
1013
|
+
] }),
|
|
1014
|
+
pillar && /* @__PURE__ */ jsxRuntime.jsxs("a", { href: `${basePath}/${pillar.slug}`, className: unstyled ? "" : "sk-cluster-pillar-card", children: [
|
|
1015
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: unstyled ? "" : "sk-cluster-pillar-label", children: "Pillar Guide" }),
|
|
1016
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: unstyled ? "" : "sk-cluster-pillar-title", children: pillar.title }),
|
|
1017
|
+
pillar.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: unstyled ? "" : "sk-cluster-pillar-excerpt", children: pillar.excerpt }),
|
|
1018
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: unstyled ? "" : "sk-cluster-pillar-meta", children: [
|
|
1019
|
+
pillar.reading_time_minutes && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1020
|
+
pillar.reading_time_minutes,
|
|
1021
|
+
" min read"
|
|
1022
|
+
] }),
|
|
1023
|
+
pillar.word_count && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1024
|
+
pillar.word_count.toLocaleString(),
|
|
1025
|
+
" words"
|
|
1026
|
+
] })
|
|
1027
|
+
] })
|
|
1028
|
+
] }),
|
|
1029
|
+
supports.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("section", { className: unstyled ? "" : "sk-cluster-supports-section", children: [
|
|
1030
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: unstyled ? "" : "sk-cluster-supports-title", children: "Deep Dives" }),
|
|
1031
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: unstyled ? "" : "sk-cluster-supports-grid", children: supports.map((post) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1032
|
+
"a",
|
|
1033
|
+
{
|
|
1034
|
+
href: `${basePath}/${post.slug}`,
|
|
1035
|
+
className: unstyled ? "" : "sk-cluster-support-card",
|
|
1036
|
+
children: [
|
|
1037
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: unstyled ? "" : "sk-cluster-support-card-header", children: [
|
|
1038
|
+
post.article_type && /* @__PURE__ */ jsxRuntime.jsx("span", { className: unstyled ? "" : "sk-cluster-support-type", children: post.article_type }),
|
|
1039
|
+
post.search_intent && /* @__PURE__ */ jsxRuntime.jsx("span", { className: unstyled ? "" : "sk-cluster-support-intent", children: post.search_intent })
|
|
1040
|
+
] }),
|
|
1041
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: unstyled ? "" : "sk-cluster-support-title", children: post.title }),
|
|
1042
|
+
post.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: unstyled ? "" : "sk-cluster-support-excerpt", children: post.excerpt }),
|
|
1043
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: unstyled ? "" : "sk-cluster-support-meta", children: [
|
|
1044
|
+
post.reading_time_minutes && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
1045
|
+
post.reading_time_minutes,
|
|
1046
|
+
" min read"
|
|
1047
|
+
] }),
|
|
1048
|
+
post.relationship_to_pillar && /* @__PURE__ */ jsxRuntime.jsx("span", { children: post.relationship_to_pillar })
|
|
1049
|
+
] })
|
|
1050
|
+
]
|
|
1051
|
+
},
|
|
1052
|
+
post.id || post.slug
|
|
1053
|
+
)) })
|
|
1054
|
+
] })
|
|
1055
|
+
] })
|
|
1056
|
+
] });
|
|
1057
|
+
}
|
|
879
1058
|
|
|
880
1059
|
Object.defineProperty(exports, "BlogFAQ", {
|
|
881
1060
|
enumerable: true,
|
|
@@ -883,31 +1062,35 @@ Object.defineProperty(exports, "BlogFAQ", {
|
|
|
883
1062
|
});
|
|
884
1063
|
Object.defineProperty(exports, "BlogList", {
|
|
885
1064
|
enumerable: true,
|
|
886
|
-
get: function () { return
|
|
1065
|
+
get: function () { return chunkF54HGPDM_js.BlogList; }
|
|
887
1066
|
});
|
|
888
1067
|
Object.defineProperty(exports, "BlogPost", {
|
|
889
1068
|
enumerable: true,
|
|
890
|
-
get: function () { return
|
|
1069
|
+
get: function () { return chunkF54HGPDM_js.BlogPost; }
|
|
1070
|
+
});
|
|
1071
|
+
Object.defineProperty(exports, "ClusterNavigation", {
|
|
1072
|
+
enumerable: true,
|
|
1073
|
+
get: function () { return chunkF54HGPDM_js.ClusterNavigation; }
|
|
891
1074
|
});
|
|
892
1075
|
Object.defineProperty(exports, "ServiceCallout", {
|
|
893
1076
|
enumerable: true,
|
|
894
|
-
get: function () { return
|
|
1077
|
+
get: function () { return chunkF54HGPDM_js.ServiceCallout; }
|
|
895
1078
|
});
|
|
896
1079
|
Object.defineProperty(exports, "ServiceCallouts", {
|
|
897
1080
|
enumerable: true,
|
|
898
|
-
get: function () { return
|
|
1081
|
+
get: function () { return chunkF54HGPDM_js.ServiceCallouts; }
|
|
899
1082
|
});
|
|
900
1083
|
Object.defineProperty(exports, "addExternalLinkTargets", {
|
|
901
1084
|
enumerable: true,
|
|
902
|
-
get: function () { return
|
|
1085
|
+
get: function () { return chunkF54HGPDM_js.addExternalLinkTargets; }
|
|
903
1086
|
});
|
|
904
1087
|
Object.defineProperty(exports, "normalizeSiteHost", {
|
|
905
1088
|
enumerable: true,
|
|
906
|
-
get: function () { return
|
|
1089
|
+
get: function () { return chunkF54HGPDM_js.normalizeSiteHost; }
|
|
907
1090
|
});
|
|
908
1091
|
Object.defineProperty(exports, "resolveBlogSiteUrl", {
|
|
909
1092
|
enumerable: true,
|
|
910
|
-
get: function () { return
|
|
1093
|
+
get: function () { return chunkF54HGPDM_js.resolveBlogSiteUrl; }
|
|
911
1094
|
});
|
|
912
1095
|
exports.AuthorCard = AuthorCard;
|
|
913
1096
|
exports.AuthorPage = AuthorPage;
|
|
@@ -916,6 +1099,7 @@ exports.BlogPage = BlogPage;
|
|
|
916
1099
|
exports.BlogPostPage = BlogPostPage;
|
|
917
1100
|
exports.BlogSidebar = BlogSidebar;
|
|
918
1101
|
exports.CategoryPage = CategoryPage;
|
|
1102
|
+
exports.ClusterLandingPage = ClusterLandingPage;
|
|
919
1103
|
exports.NewsletterWidget = NewsletterWidget;
|
|
920
1104
|
exports.RelatedPosts = RelatedPosts;
|
|
921
1105
|
exports.TableOfContents = TableOfContents;
|