@sonordev/site-kit 2.0.0 → 2.0.2
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/SitemapSync-DXIV5TXI.mjs +4 -0
- package/dist/{SitemapSync-YK6IXOSY.mjs.map → SitemapSync-DXIV5TXI.mjs.map} +1 -1
- package/dist/SitemapSync-Z4NDW2S7.js +13 -0
- package/dist/{SitemapSync-FKYWGDAD.js.map → SitemapSync-Z4NDW2S7.js.map} +1 -1
- package/dist/blog/index.d.mts +6 -4
- package/dist/blog/index.d.ts +6 -4
- package/dist/blog/index.js +305 -20
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +305 -21
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/server.d.mts +41 -2
- package/dist/blog/server.d.ts +41 -2
- package/dist/blog/server.js +126 -685
- package/dist/blog/server.js.map +1 -1
- package/dist/blog/server.mjs +1 -663
- package/dist/blog/server.mjs.map +1 -1
- package/dist/{chunk-UD5447TC.js → chunk-6LZEGXDE.js} +3 -3
- package/dist/{chunk-UD5447TC.js.map → chunk-6LZEGXDE.js.map} +1 -1
- package/dist/{chunk-BVUOATPG.js → chunk-A7RCX6OI.js} +7 -7
- package/dist/{chunk-BVUOATPG.js.map → chunk-A7RCX6OI.js.map} +1 -1
- package/dist/{chunk-QW4RQHSK.js → chunk-ACBDH4RK.js} +15 -3
- package/dist/chunk-ACBDH4RK.js.map +1 -0
- package/dist/{chunk-TSK35UHV.mjs → chunk-HA5OXTXW.mjs} +15 -3
- package/dist/chunk-HA5OXTXW.mjs.map +1 -0
- package/dist/{chunk-RLNG67S5.js → chunk-ITPVKQB6.js} +74 -4
- package/dist/chunk-ITPVKQB6.js.map +1 -0
- package/dist/{chunk-DWI5ZKPM.mjs → chunk-IYQUFQYM.mjs} +4 -4
- package/dist/{chunk-DWI5ZKPM.mjs.map → chunk-IYQUFQYM.mjs.map} +1 -1
- package/dist/chunk-JUWYIDIA.js +823 -0
- package/dist/chunk-JUWYIDIA.js.map +1 -0
- package/dist/{chunk-OM6R7CDP.mjs → chunk-L7XPPFSS.mjs} +3 -3
- package/dist/{chunk-OM6R7CDP.mjs.map → chunk-L7XPPFSS.mjs.map} +1 -1
- package/dist/{chunk-I34XL5VJ.js → chunk-PKUTYMN7.js} +5 -5
- package/dist/{chunk-I34XL5VJ.js.map → chunk-PKUTYMN7.js.map} +1 -1
- package/dist/{chunk-WN2PUL6B.mjs → chunk-RVAFAOBA.mjs} +3 -3
- package/dist/{chunk-WN2PUL6B.mjs.map → chunk-RVAFAOBA.mjs.map} +1 -1
- package/dist/chunk-S2WK4LL7.mjs +791 -0
- package/dist/chunk-S2WK4LL7.mjs.map +1 -0
- package/dist/{chunk-J4U3IEXL.mjs → chunk-TUFP3FGI.mjs} +4 -4
- package/dist/chunk-TUFP3FGI.mjs.map +1 -0
- package/dist/{chunk-FCXQECM7.js → chunk-VU4GL5ZG.js} +4 -4
- package/dist/chunk-VU4GL5ZG.js.map +1 -0
- package/dist/{chunk-W7RZ3OTA.mjs → chunk-Z6EHHJWU.mjs} +74 -4
- package/dist/chunk-Z6EHHJWU.mjs.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/layout/client.js +2 -2
- package/dist/layout/client.mjs +1 -1
- package/dist/layout/index.js +6 -6
- package/dist/layout/index.mjs +3 -3
- package/dist/llms/index.d.mts +2 -2
- package/dist/llms/index.d.ts +2 -2
- package/dist/llms/index.js +12 -12
- package/dist/llms/index.mjs +2 -2
- package/dist/seo/client.js +2 -2
- package/dist/seo/client.mjs +1 -1
- package/dist/seo/index.js +42 -42
- package/dist/seo/index.mjs +5 -5
- package/dist/seo/register-sitemap-cli.js +14 -1
- package/dist/seo/register-sitemap-cli.js.map +1 -1
- package/dist/seo/register-sitemap-cli.mjs +14 -1
- package/dist/seo/register-sitemap-cli.mjs.map +1 -1
- package/dist/seo/server.js +6 -6
- package/dist/seo/server.js.map +1 -1
- package/dist/seo/server.mjs +4 -4
- package/dist/seo/server.mjs.map +1 -1
- package/dist/{server-api-UIZU4JM3.mjs → server-api-O7SSHYQS.mjs} +3 -3
- package/dist/{server-api-UIZU4JM3.mjs.map → server-api-O7SSHYQS.mjs.map} +1 -1
- package/dist/{server-api-36R24YWN.js → server-api-W4BXUFCT.js} +21 -21
- package/dist/{server-api-36R24YWN.js.map → server-api-W4BXUFCT.js.map} +1 -1
- package/dist/sitemap/index.d.mts +34 -2
- package/dist/sitemap/index.d.ts +34 -2
- package/dist/sitemap/index.js +53 -6
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +52 -6
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/{types-Blb2QNkV.d.ts → types-BxzT7yhf.d.mts} +22 -1
- package/dist/{types-Blb2QNkV.d.mts → types-BxzT7yhf.d.ts} +22 -1
- package/dist/{types-D08004rU.d.mts → types-DuvkNnu0.d.mts} +25 -1
- package/dist/{types-D08004rU.d.ts → types-DuvkNnu0.d.ts} +25 -1
- package/package.json +1 -1
- package/dist/SitemapSync-FKYWGDAD.js +0 -13
- package/dist/SitemapSync-YK6IXOSY.mjs +0 -4
- package/dist/chunk-FCXQECM7.js.map +0 -1
- package/dist/chunk-J4U3IEXL.mjs.map +0 -1
- package/dist/chunk-QW4RQHSK.js.map +0 -1
- package/dist/chunk-RLNG67S5.js.map +0 -1
- package/dist/chunk-TSK35UHV.mjs.map +0 -1
- package/dist/chunk-W7RZ3OTA.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-DXIV5TXI.mjs"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkACBDH4RK_js = require('./chunk-ACBDH4RK.js');
|
|
4
|
+
require('./chunk-ZSMWDLMK.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "SitemapSync", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkACBDH4RK_js.SitemapSync; }
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=SitemapSync-Z4NDW2S7.js.map
|
|
13
|
+
//# sourceMappingURL=SitemapSync-Z4NDW2S7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"SitemapSync-Z4NDW2S7.js"}
|
package/dist/blog/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
-
import { B as BlogPost$1, T as TocItem,
|
|
4
|
-
export {
|
|
3
|
+
import { B as BlogPost$1, T as TocItem, b as BlogListResult, c as BlogCategory, A as AuthorCardProps, d as AuthorPageProps, e as TableOfContentsProps } from '../types-DuvkNnu0.mjs';
|
|
4
|
+
export { l as BlogAnalytics, a as BlogAuthor, g as BlogListOptions, j as BlogListProps, k as BlogListRenderProps, h as BlogPostProps, i as BlogPostRenderProps, f as BlogTag, R as RelatedPostsProps } from '../types-DuvkNnu0.mjs';
|
|
5
5
|
|
|
6
6
|
interface BlogPostStyles {
|
|
7
7
|
/** Article wrapper */
|
|
@@ -288,7 +288,9 @@ interface CategoryPageProps extends BlogLayoutProps {
|
|
|
288
288
|
}
|
|
289
289
|
declare function CategoryPage({ category, categoryName, listComponent, hero, ...layoutProps }: CategoryPageProps): Promise<react_jsx_runtime.JSX.Element>;
|
|
290
290
|
|
|
291
|
-
declare function AuthorCard({ author, showBio, showSocial, className }: AuthorCardProps): react_jsx_runtime.JSX.Element;
|
|
291
|
+
declare function AuthorCard({ author, showBio, showSocial, showTrustBlock, className }: AuthorCardProps): react_jsx_runtime.JSX.Element;
|
|
292
|
+
|
|
293
|
+
declare function AuthorPage({ author, posts, basePath }: AuthorPageProps): react_jsx_runtime.JSX.Element;
|
|
292
294
|
|
|
293
295
|
interface RelatedPostsServerProps {
|
|
294
296
|
apiUrl?: string;
|
|
@@ -302,4 +304,4 @@ declare function RelatedPosts({ apiUrl, apiKey, currentPostId, limit, className,
|
|
|
302
304
|
|
|
303
305
|
declare function TableOfContents({ content, className, maxDepth, }: TableOfContentsProps): react_jsx_runtime.JSX.Element | null;
|
|
304
306
|
|
|
305
|
-
export { AuthorCard, AuthorCardProps, BlogCategory, BlogLayout, type BlogLayoutProps, BlogList, BlogListResult, type BlogListServerProps, type BlogListStyles, BlogPage, type BlogPageProps, BlogPost, BlogPostPage, type BlogPostPageProps, type BlogPostServerProps, type BlogPostStyles, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, TableOfContents, TableOfContentsProps, TocItem };
|
|
307
|
+
export { AuthorCard, AuthorCardProps, AuthorPage, AuthorPageProps, BlogCategory, BlogLayout, type BlogLayoutProps, BlogList, BlogListResult, type BlogListServerProps, type BlogListStyles, BlogPage, type BlogPageProps, BlogPost, BlogPostPage, type BlogPostPageProps, type BlogPostServerProps, type BlogPostStyles, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, TableOfContents, TableOfContentsProps, TocItem };
|
package/dist/blog/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React__default from 'react';
|
|
3
|
-
import { B as BlogPost$1, T as TocItem,
|
|
4
|
-
export {
|
|
3
|
+
import { B as BlogPost$1, T as TocItem, b as BlogListResult, c as BlogCategory, A as AuthorCardProps, d as AuthorPageProps, e as TableOfContentsProps } from '../types-DuvkNnu0.js';
|
|
4
|
+
export { l as BlogAnalytics, a as BlogAuthor, g as BlogListOptions, j as BlogListProps, k as BlogListRenderProps, h as BlogPostProps, i as BlogPostRenderProps, f as BlogTag, R as RelatedPostsProps } from '../types-DuvkNnu0.js';
|
|
5
5
|
|
|
6
6
|
interface BlogPostStyles {
|
|
7
7
|
/** Article wrapper */
|
|
@@ -288,7 +288,9 @@ interface CategoryPageProps extends BlogLayoutProps {
|
|
|
288
288
|
}
|
|
289
289
|
declare function CategoryPage({ category, categoryName, listComponent, hero, ...layoutProps }: CategoryPageProps): Promise<react_jsx_runtime.JSX.Element>;
|
|
290
290
|
|
|
291
|
-
declare function AuthorCard({ author, showBio, showSocial, className }: AuthorCardProps): react_jsx_runtime.JSX.Element;
|
|
291
|
+
declare function AuthorCard({ author, showBio, showSocial, showTrustBlock, className }: AuthorCardProps): react_jsx_runtime.JSX.Element;
|
|
292
|
+
|
|
293
|
+
declare function AuthorPage({ author, posts, basePath }: AuthorPageProps): react_jsx_runtime.JSX.Element;
|
|
292
294
|
|
|
293
295
|
interface RelatedPostsServerProps {
|
|
294
296
|
apiUrl?: string;
|
|
@@ -302,4 +304,4 @@ declare function RelatedPosts({ apiUrl, apiKey, currentPostId, limit, className,
|
|
|
302
304
|
|
|
303
305
|
declare function TableOfContents({ content, className, maxDepth, }: TableOfContentsProps): react_jsx_runtime.JSX.Element | null;
|
|
304
306
|
|
|
305
|
-
export { AuthorCard, AuthorCardProps, BlogCategory, BlogLayout, type BlogLayoutProps, BlogList, BlogListResult, type BlogListServerProps, type BlogListStyles, BlogPage, type BlogPageProps, BlogPost, BlogPostPage, type BlogPostPageProps, type BlogPostServerProps, type BlogPostStyles, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, TableOfContents, TableOfContentsProps, TocItem };
|
|
307
|
+
export { AuthorCard, AuthorCardProps, AuthorPage, AuthorPageProps, BlogCategory, BlogLayout, type BlogLayoutProps, BlogList, BlogListResult, type BlogListServerProps, type BlogListStyles, BlogPage, type BlogPageProps, BlogPost, BlogPostPage, type BlogPostPageProps, type BlogPostServerProps, type BlogPostStyles, BlogSidebar, type BlogSidebarProps, CategoryPage, type CategoryPageProps, NewsletterWidget, type NewsletterWidgetProps, RelatedPosts, TableOfContents, TableOfContentsProps, TocItem };
|
package/dist/blog/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunkJUWYIDIA_js = require('../chunk-JUWYIDIA.js');
|
|
3
4
|
require('../chunk-ZSMWDLMK.js');
|
|
4
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
6
|
var React = require('react');
|
|
@@ -1394,29 +1395,312 @@ async function CategoryPage({
|
|
|
1394
1395
|
};
|
|
1395
1396
|
return /* @__PURE__ */ jsxRuntime.jsx(BlogLayout, { ...layoutProps, hero: categoryHero, currentCategory: category, children: listComponent });
|
|
1396
1397
|
}
|
|
1397
|
-
function
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1398
|
+
function TrustBlock({ author }) {
|
|
1399
|
+
const hasYears = typeof author.years_experience === "number" && author.years_experience > 0;
|
|
1400
|
+
const hasCredentials = author.credentials && author.credentials.length > 0;
|
|
1401
|
+
const hasExpertise = author.expertise_areas && author.expertise_areas.length > 0;
|
|
1402
|
+
const hasPublications = author.featured_publications && author.featured_publications.length > 0;
|
|
1403
|
+
const hasAwards = author.awards && author.awards.length > 0;
|
|
1404
|
+
const isVerified = author.is_subject_matter_expert || author.has_verified_credentials;
|
|
1405
|
+
const hasAnything = hasYears || hasCredentials || hasExpertise || hasPublications || hasAwards || isVerified;
|
|
1406
|
+
if (!hasAnything) return null;
|
|
1407
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1408
|
+
"div",
|
|
1409
|
+
{
|
|
1410
|
+
className: "sk-author-trust",
|
|
1411
|
+
style: {
|
|
1412
|
+
marginTop: 16,
|
|
1413
|
+
padding: 16,
|
|
1414
|
+
borderRadius: 10,
|
|
1415
|
+
border: "1px solid var(--sk-border, #e5e7eb)",
|
|
1416
|
+
background: "var(--sk-surface, #f9fafb)"
|
|
1417
|
+
},
|
|
1418
|
+
children: [
|
|
1419
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1420
|
+
"h5",
|
|
1421
|
+
{
|
|
1422
|
+
style: {
|
|
1423
|
+
margin: "0 0 12px",
|
|
1424
|
+
fontSize: 13,
|
|
1425
|
+
fontWeight: 600,
|
|
1426
|
+
textTransform: "uppercase",
|
|
1427
|
+
letterSpacing: "0.05em",
|
|
1428
|
+
color: "var(--sk-text-tertiary, #6b7280)"
|
|
1429
|
+
},
|
|
1430
|
+
children: "Why Trust This Author"
|
|
1431
|
+
}
|
|
1432
|
+
),
|
|
1433
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: 8, marginBottom: hasCredentials || hasExpertise || hasPublications || hasAwards ? 12 : 0 }, children: [
|
|
1434
|
+
isVerified && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1435
|
+
"span",
|
|
1436
|
+
{
|
|
1437
|
+
style: {
|
|
1438
|
+
display: "inline-flex",
|
|
1439
|
+
alignItems: "center",
|
|
1440
|
+
gap: 4,
|
|
1441
|
+
padding: "4px 10px",
|
|
1442
|
+
borderRadius: 9999,
|
|
1443
|
+
fontSize: 12,
|
|
1444
|
+
fontWeight: 600,
|
|
1445
|
+
background: "rgba(20, 184, 166, 0.1)",
|
|
1446
|
+
color: "rgb(13, 148, 136)",
|
|
1447
|
+
border: "1px solid rgba(20, 184, 166, 0.2)"
|
|
1448
|
+
},
|
|
1449
|
+
children: [
|
|
1450
|
+
/* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
1451
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }),
|
|
1452
|
+
/* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "22 4 12 14.01 9 11.01" })
|
|
1453
|
+
] }),
|
|
1454
|
+
"Verified Expert"
|
|
1455
|
+
]
|
|
1456
|
+
}
|
|
1457
|
+
),
|
|
1458
|
+
hasYears && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1459
|
+
"span",
|
|
1460
|
+
{
|
|
1461
|
+
style: {
|
|
1462
|
+
display: "inline-flex",
|
|
1463
|
+
alignItems: "center",
|
|
1464
|
+
padding: "4px 10px",
|
|
1465
|
+
borderRadius: 9999,
|
|
1466
|
+
fontSize: 12,
|
|
1467
|
+
fontWeight: 600,
|
|
1468
|
+
background: "rgba(99, 102, 241, 0.1)",
|
|
1469
|
+
color: "rgb(79, 70, 229)",
|
|
1470
|
+
border: "1px solid rgba(99, 102, 241, 0.2)"
|
|
1471
|
+
},
|
|
1472
|
+
children: [
|
|
1473
|
+
author.years_experience,
|
|
1474
|
+
"+ Years Experience"
|
|
1475
|
+
]
|
|
1476
|
+
}
|
|
1477
|
+
)
|
|
1478
|
+
] }),
|
|
1479
|
+
hasCredentials && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginBottom: 10 }, children: [
|
|
1480
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)" }, children: "Credentials" }),
|
|
1481
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { style: { margin: "4px 0 0", padding: "0 0 0 18px", fontSize: 13, color: "var(--sk-text-secondary, #4b5563)", lineHeight: 1.6 }, children: author.credentials.map((c, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: c }, i)) })
|
|
1482
|
+
] }),
|
|
1483
|
+
hasExpertise && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginBottom: 10 }, children: [
|
|
1484
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)", display: "block", marginBottom: 6 }, children: "Expertise" }),
|
|
1485
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6 }, children: author.expertise_areas.map((area, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1486
|
+
"span",
|
|
1487
|
+
{
|
|
1488
|
+
style: {
|
|
1489
|
+
padding: "3px 10px",
|
|
1490
|
+
borderRadius: 9999,
|
|
1491
|
+
fontSize: 12,
|
|
1492
|
+
background: "var(--sk-pill-bg, #e5e7eb)",
|
|
1493
|
+
color: "var(--sk-text-secondary, #374151)"
|
|
1494
|
+
},
|
|
1495
|
+
children: area
|
|
1496
|
+
},
|
|
1497
|
+
i
|
|
1498
|
+
)) })
|
|
1499
|
+
] }),
|
|
1500
|
+
hasPublications && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { marginBottom: 10 }, children: [
|
|
1501
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)" }, children: "Featured In" }),
|
|
1502
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { style: { margin: "4px 0 0", padding: "0 0 0 18px", fontSize: 13, color: "var(--sk-text-secondary, #4b5563)", lineHeight: 1.6 }, children: author.featured_publications.map((pub, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: pub }, i)) })
|
|
1503
|
+
] }),
|
|
1504
|
+
hasAwards && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1505
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)" }, children: "Awards" }),
|
|
1506
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { style: { margin: "4px 0 0", padding: "0 0 0 18px", fontSize: 13, color: "var(--sk-text-secondary, #4b5563)", lineHeight: 1.6 }, children: author.awards.map((award, i) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: award }, i)) })
|
|
1507
|
+
] })
|
|
1508
|
+
]
|
|
1509
|
+
}
|
|
1510
|
+
);
|
|
1511
|
+
}
|
|
1512
|
+
function AuthorCard({ author, showBio = true, showSocial = true, showTrustBlock = false, className }) {
|
|
1513
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style: { display: "flex", flexDirection: "column" }, children: [
|
|
1514
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", gap: 16, alignItems: "flex-start" }, children: [
|
|
1515
|
+
author.avatar_url && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1516
|
+
"img",
|
|
1517
|
+
{
|
|
1518
|
+
src: author.avatar_url,
|
|
1519
|
+
alt: author.name,
|
|
1520
|
+
style: {
|
|
1521
|
+
width: 64,
|
|
1522
|
+
height: 64,
|
|
1523
|
+
borderRadius: "50%",
|
|
1524
|
+
objectFit: "cover"
|
|
1525
|
+
}
|
|
1409
1526
|
}
|
|
1527
|
+
),
|
|
1528
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1529
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { style: { margin: 0 }, children: author.name }),
|
|
1530
|
+
author.title && /* @__PURE__ */ jsxRuntime.jsxs("p", { style: { margin: "2px 0 0", fontSize: 13, color: "var(--sk-text-tertiary, #6b7280)" }, children: [
|
|
1531
|
+
author.title,
|
|
1532
|
+
author.company ? ` at ${author.company}` : ""
|
|
1533
|
+
] }),
|
|
1534
|
+
showBio && author.bio && /* @__PURE__ */ jsxRuntime.jsx("p", { style: { margin: "4px 0", color: "var(--sk-text-secondary)", fontSize: 14 }, children: author.bio }),
|
|
1535
|
+
showSocial && author.social_links && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: "flex", gap: 12, marginTop: 8 }, children: [
|
|
1536
|
+
author.social_links.twitter && /* @__PURE__ */ jsxRuntime.jsx("a", { href: `https://twitter.com/${author.social_links.twitter}`, target: "_blank", rel: "noopener noreferrer", children: "Twitter" }),
|
|
1537
|
+
author.social_links.linkedin && /* @__PURE__ */ jsxRuntime.jsx("a", { href: author.social_links.linkedin, target: "_blank", rel: "noopener noreferrer", children: "LinkedIn" }),
|
|
1538
|
+
author.social_links.github && /* @__PURE__ */ jsxRuntime.jsx("a", { href: `https://github.com/${author.social_links.github}`, target: "_blank", rel: "noopener noreferrer", children: "GitHub" })
|
|
1539
|
+
] })
|
|
1540
|
+
] })
|
|
1541
|
+
] }),
|
|
1542
|
+
showTrustBlock && /* @__PURE__ */ jsxRuntime.jsx(TrustBlock, { author })
|
|
1543
|
+
] });
|
|
1544
|
+
}
|
|
1545
|
+
function AuthorHero({ author }) {
|
|
1546
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1547
|
+
"header",
|
|
1548
|
+
{
|
|
1549
|
+
className: "sk-author-hero",
|
|
1550
|
+
style: {
|
|
1551
|
+
display: "flex",
|
|
1552
|
+
flexDirection: "column",
|
|
1553
|
+
alignItems: "center",
|
|
1554
|
+
textAlign: "center",
|
|
1555
|
+
padding: "48px 24px 32px"
|
|
1556
|
+
},
|
|
1557
|
+
children: [
|
|
1558
|
+
author.avatar_url && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1559
|
+
"img",
|
|
1560
|
+
{
|
|
1561
|
+
src: author.avatar_url,
|
|
1562
|
+
alt: author.name,
|
|
1563
|
+
width: 120,
|
|
1564
|
+
height: 120,
|
|
1565
|
+
style: {
|
|
1566
|
+
width: 120,
|
|
1567
|
+
height: 120,
|
|
1568
|
+
borderRadius: "50%",
|
|
1569
|
+
objectFit: "cover",
|
|
1570
|
+
marginBottom: 20,
|
|
1571
|
+
border: "3px solid var(--sk-border, #e5e7eb)"
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
),
|
|
1575
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { style: { margin: 0, fontSize: 32, fontWeight: 700, color: "var(--sk-text-primary, #111827)" }, children: author.name }),
|
|
1576
|
+
(author.title || author.company) && /* @__PURE__ */ jsxRuntime.jsxs("p", { style: { margin: "6px 0 0", fontSize: 16, color: "var(--sk-text-secondary, #4b5563)" }, children: [
|
|
1577
|
+
author.title,
|
|
1578
|
+
author.title && author.company ? " at " : "",
|
|
1579
|
+
author.company
|
|
1580
|
+
] }),
|
|
1581
|
+
author.bio && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1582
|
+
"p",
|
|
1583
|
+
{
|
|
1584
|
+
style: {
|
|
1585
|
+
margin: "16px auto 0",
|
|
1586
|
+
maxWidth: 640,
|
|
1587
|
+
fontSize: 15,
|
|
1588
|
+
lineHeight: 1.7,
|
|
1589
|
+
color: "var(--sk-text-secondary, #4b5563)"
|
|
1590
|
+
},
|
|
1591
|
+
children: author.bio
|
|
1592
|
+
}
|
|
1593
|
+
),
|
|
1594
|
+
/* @__PURE__ */ jsxRuntime.jsx(SocialLinks, { author })
|
|
1595
|
+
]
|
|
1596
|
+
}
|
|
1597
|
+
);
|
|
1598
|
+
}
|
|
1599
|
+
function SocialLinks({ author }) {
|
|
1600
|
+
const links = [];
|
|
1601
|
+
if (author.linkedin_url) links.push({ label: "LinkedIn", href: author.linkedin_url });
|
|
1602
|
+
else if (author.social_links?.linkedin) links.push({ label: "LinkedIn", href: author.social_links.linkedin });
|
|
1603
|
+
if (author.twitter_url) links.push({ label: "Twitter", href: author.twitter_url });
|
|
1604
|
+
else if (author.social_links?.twitter) links.push({ label: "Twitter", href: `https://twitter.com/${author.social_links.twitter}` });
|
|
1605
|
+
if (author.website_url) links.push({ label: "Website", href: author.website_url });
|
|
1606
|
+
else if (author.website) links.push({ label: "Website", href: author.website });
|
|
1607
|
+
if (links.length === 0) return null;
|
|
1608
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { style: { display: "flex", gap: 16, marginTop: 16 }, children: links.map((link) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1609
|
+
"a",
|
|
1610
|
+
{
|
|
1611
|
+
href: link.href,
|
|
1612
|
+
target: "_blank",
|
|
1613
|
+
rel: "noopener noreferrer",
|
|
1614
|
+
style: {
|
|
1615
|
+
display: "inline-flex",
|
|
1616
|
+
alignItems: "center",
|
|
1617
|
+
gap: 6,
|
|
1618
|
+
padding: "6px 14px",
|
|
1619
|
+
borderRadius: 8,
|
|
1620
|
+
fontSize: 13,
|
|
1621
|
+
fontWeight: 500,
|
|
1622
|
+
color: "rgb(13, 148, 136)",
|
|
1623
|
+
background: "rgba(20, 184, 166, 0.08)",
|
|
1624
|
+
border: "1px solid rgba(20, 184, 166, 0.15)",
|
|
1625
|
+
textDecoration: "none"
|
|
1626
|
+
},
|
|
1627
|
+
children: link.label
|
|
1628
|
+
},
|
|
1629
|
+
link.label
|
|
1630
|
+
)) });
|
|
1631
|
+
}
|
|
1632
|
+
function PostCard({ post, basePath }) {
|
|
1633
|
+
const href = `${basePath}/${post.slug}`;
|
|
1634
|
+
const date = post.published_at ? new Date(post.published_at).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" }) : null;
|
|
1635
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1636
|
+
"article",
|
|
1637
|
+
{
|
|
1638
|
+
className: "sk-author-post-card",
|
|
1639
|
+
style: {
|
|
1640
|
+
borderRadius: 12,
|
|
1641
|
+
border: "1px solid var(--sk-border, #e5e7eb)",
|
|
1642
|
+
overflow: "hidden",
|
|
1643
|
+
background: "var(--sk-card-bg, #fff)",
|
|
1644
|
+
display: "flex",
|
|
1645
|
+
flexDirection: "column"
|
|
1646
|
+
},
|
|
1647
|
+
children: [
|
|
1648
|
+
post.featured_image && /* @__PURE__ */ jsxRuntime.jsx("a", { href, style: { display: "block", overflow: "hidden", aspectRatio: "16/9" }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1649
|
+
"img",
|
|
1650
|
+
{
|
|
1651
|
+
src: post.featured_image,
|
|
1652
|
+
alt: post.featured_image_alt || post.title,
|
|
1653
|
+
style: { width: "100%", height: "100%", objectFit: "cover" },
|
|
1654
|
+
loading: "lazy"
|
|
1655
|
+
}
|
|
1656
|
+
) }),
|
|
1657
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { style: { padding: 20, flex: 1, display: "flex", flexDirection: "column" }, children: [
|
|
1658
|
+
date && /* @__PURE__ */ jsxRuntime.jsx("time", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginBottom: 6 }, children: date }),
|
|
1659
|
+
/* @__PURE__ */ jsxRuntime.jsx("a", { href, style: { textDecoration: "none", color: "inherit" }, children: /* @__PURE__ */ jsxRuntime.jsx("h3", { style: { margin: "0 0 8px", fontSize: 18, fontWeight: 600, lineHeight: 1.3, color: "var(--sk-text-primary, #111827)" }, children: post.title }) }),
|
|
1660
|
+
post.excerpt && /* @__PURE__ */ jsxRuntime.jsx("p", { style: { margin: 0, fontSize: 14, lineHeight: 1.6, color: "var(--sk-text-secondary, #4b5563)", flex: 1 }, children: post.excerpt }),
|
|
1661
|
+
post.reading_time_minutes && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginTop: 12 }, children: [
|
|
1662
|
+
post.reading_time_minutes,
|
|
1663
|
+
" min read"
|
|
1664
|
+
] })
|
|
1665
|
+
] })
|
|
1666
|
+
]
|
|
1667
|
+
}
|
|
1668
|
+
);
|
|
1669
|
+
}
|
|
1670
|
+
function AuthorPage({ author, posts, basePath = "/blog" }) {
|
|
1671
|
+
const schema = chunkJUWYIDIA_js.generateAuthorSchema(author);
|
|
1672
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sk-author-page", children: [
|
|
1673
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1674
|
+
"script",
|
|
1675
|
+
{
|
|
1676
|
+
type: "application/ld+json",
|
|
1677
|
+
dangerouslySetInnerHTML: { __html: JSON.stringify(schema) }
|
|
1410
1678
|
}
|
|
1411
1679
|
),
|
|
1412
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
author.
|
|
1418
|
-
author.
|
|
1419
|
-
|
|
1680
|
+
/* @__PURE__ */ jsxRuntime.jsx(AuthorHero, { author }),
|
|
1681
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { maxWidth: 640, margin: "0 auto", padding: "0 24px" }, children: /* @__PURE__ */ jsxRuntime.jsx(TrustBlock, { author }) }),
|
|
1682
|
+
posts.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("section", { style: { maxWidth: 1080, margin: "40px auto 0", padding: "0 24px 48px" }, children: [
|
|
1683
|
+
/* @__PURE__ */ jsxRuntime.jsxs("h2", { style: { fontSize: 22, fontWeight: 600, marginBottom: 24, color: "var(--sk-text-primary, #111827)" }, children: [
|
|
1684
|
+
"Articles by ",
|
|
1685
|
+
author.name,
|
|
1686
|
+
typeof author.post_count === "number" && /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontWeight: 400, fontSize: 15, color: "var(--sk-text-tertiary, #6b7280)", marginLeft: 8 }, children: [
|
|
1687
|
+
"(",
|
|
1688
|
+
author.post_count,
|
|
1689
|
+
")"
|
|
1690
|
+
] })
|
|
1691
|
+
] }),
|
|
1692
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1693
|
+
"div",
|
|
1694
|
+
{
|
|
1695
|
+
className: "sk-author-posts-grid",
|
|
1696
|
+
style: {
|
|
1697
|
+
display: "grid",
|
|
1698
|
+
gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
|
|
1699
|
+
gap: 24
|
|
1700
|
+
},
|
|
1701
|
+
children: posts.map((post) => /* @__PURE__ */ jsxRuntime.jsx(PostCard, { post, basePath }, post.id))
|
|
1702
|
+
}
|
|
1703
|
+
)
|
|
1420
1704
|
] })
|
|
1421
1705
|
] });
|
|
1422
1706
|
}
|
|
@@ -1564,6 +1848,7 @@ function TableOfContents({
|
|
|
1564
1848
|
}
|
|
1565
1849
|
|
|
1566
1850
|
exports.AuthorCard = AuthorCard;
|
|
1851
|
+
exports.AuthorPage = AuthorPage;
|
|
1567
1852
|
exports.BlogLayout = BlogLayout;
|
|
1568
1853
|
exports.BlogList = BlogList;
|
|
1569
1854
|
exports.BlogPage = BlogPage;
|