@sonordev/site-kit 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/SitemapSync-DXIV5TXI.mjs +4 -0
  2. package/dist/{SitemapSync-YK6IXOSY.mjs.map → SitemapSync-DXIV5TXI.mjs.map} +1 -1
  3. package/dist/SitemapSync-Z4NDW2S7.js +13 -0
  4. package/dist/{SitemapSync-FKYWGDAD.js.map → SitemapSync-Z4NDW2S7.js.map} +1 -1
  5. package/dist/blog/index.d.mts +6 -4
  6. package/dist/blog/index.d.ts +6 -4
  7. package/dist/blog/index.js +305 -20
  8. package/dist/blog/index.js.map +1 -1
  9. package/dist/blog/index.mjs +305 -21
  10. package/dist/blog/index.mjs.map +1 -1
  11. package/dist/blog/server.d.mts +41 -2
  12. package/dist/blog/server.d.ts +41 -2
  13. package/dist/blog/server.js +126 -685
  14. package/dist/blog/server.js.map +1 -1
  15. package/dist/blog/server.mjs +1 -663
  16. package/dist/blog/server.mjs.map +1 -1
  17. package/dist/{chunk-UD5447TC.js → chunk-6LZEGXDE.js} +3 -3
  18. package/dist/{chunk-UD5447TC.js.map → chunk-6LZEGXDE.js.map} +1 -1
  19. package/dist/{chunk-QW4RQHSK.js → chunk-ACBDH4RK.js} +15 -3
  20. package/dist/chunk-ACBDH4RK.js.map +1 -0
  21. package/dist/{chunk-TSK35UHV.mjs → chunk-HA5OXTXW.mjs} +15 -3
  22. package/dist/chunk-HA5OXTXW.mjs.map +1 -0
  23. package/dist/chunk-JUWYIDIA.js +823 -0
  24. package/dist/chunk-JUWYIDIA.js.map +1 -0
  25. package/dist/{chunk-WN2PUL6B.mjs → chunk-RVAFAOBA.mjs} +3 -3
  26. package/dist/{chunk-WN2PUL6B.mjs.map → chunk-RVAFAOBA.mjs.map} +1 -1
  27. package/dist/chunk-S2WK4LL7.mjs +791 -0
  28. package/dist/chunk-S2WK4LL7.mjs.map +1 -0
  29. package/dist/index.d.mts +1 -1
  30. package/dist/index.d.ts +1 -1
  31. package/dist/layout/client.js +2 -2
  32. package/dist/layout/client.mjs +1 -1
  33. package/dist/layout/index.js +2 -2
  34. package/dist/layout/index.mjs +1 -1
  35. package/dist/seo/client.js +2 -2
  36. package/dist/seo/client.mjs +1 -1
  37. package/dist/seo/index.js +2 -2
  38. package/dist/seo/index.mjs +1 -1
  39. package/dist/seo/register-sitemap-cli.js +14 -1
  40. package/dist/seo/register-sitemap-cli.js.map +1 -1
  41. package/dist/seo/register-sitemap-cli.mjs +14 -1
  42. package/dist/seo/register-sitemap-cli.mjs.map +1 -1
  43. package/dist/sitemap/index.d.mts +7 -1
  44. package/dist/sitemap/index.d.ts +7 -1
  45. package/dist/sitemap/index.js +26 -7
  46. package/dist/sitemap/index.js.map +1 -1
  47. package/dist/sitemap/index.mjs +26 -7
  48. package/dist/sitemap/index.mjs.map +1 -1
  49. package/dist/{types-D08004rU.d.mts → types-DuvkNnu0.d.mts} +25 -1
  50. package/dist/{types-D08004rU.d.ts → types-DuvkNnu0.d.ts} +25 -1
  51. package/package.json +1 -1
  52. package/dist/SitemapSync-FKYWGDAD.js +0 -13
  53. package/dist/SitemapSync-YK6IXOSY.mjs +0 -4
  54. package/dist/chunk-QW4RQHSK.js.map +0 -1
  55. package/dist/chunk-TSK35UHV.mjs.map +0 -1
@@ -1,3 +1,4 @@
1
+ import { generateAuthorSchema } from '../chunk-S2WK4LL7.mjs';
1
2
  import '../chunk-4XPGGLVP.mjs';
2
3
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
4
  import React, { useState, useEffect } from 'react';
@@ -1388,29 +1389,312 @@ async function CategoryPage({
1388
1389
  };
1389
1390
  return /* @__PURE__ */ jsx(BlogLayout, { ...layoutProps, hero: categoryHero, currentCategory: category, children: listComponent });
1390
1391
  }
1391
- function AuthorCard({ author, showBio = true, showSocial = true, className }) {
1392
- return /* @__PURE__ */ jsxs("div", { className, style: { display: "flex", gap: 16, alignItems: "flex-start" }, children: [
1393
- author.avatar_url && /* @__PURE__ */ jsx(
1394
- "img",
1395
- {
1396
- src: author.avatar_url,
1397
- alt: author.name,
1398
- style: {
1399
- width: 64,
1400
- height: 64,
1401
- borderRadius: "50%",
1402
- objectFit: "cover"
1392
+ function TrustBlock({ author }) {
1393
+ const hasYears = typeof author.years_experience === "number" && author.years_experience > 0;
1394
+ const hasCredentials = author.credentials && author.credentials.length > 0;
1395
+ const hasExpertise = author.expertise_areas && author.expertise_areas.length > 0;
1396
+ const hasPublications = author.featured_publications && author.featured_publications.length > 0;
1397
+ const hasAwards = author.awards && author.awards.length > 0;
1398
+ const isVerified = author.is_subject_matter_expert || author.has_verified_credentials;
1399
+ const hasAnything = hasYears || hasCredentials || hasExpertise || hasPublications || hasAwards || isVerified;
1400
+ if (!hasAnything) return null;
1401
+ return /* @__PURE__ */ jsxs(
1402
+ "div",
1403
+ {
1404
+ className: "sk-author-trust",
1405
+ style: {
1406
+ marginTop: 16,
1407
+ padding: 16,
1408
+ borderRadius: 10,
1409
+ border: "1px solid var(--sk-border, #e5e7eb)",
1410
+ background: "var(--sk-surface, #f9fafb)"
1411
+ },
1412
+ children: [
1413
+ /* @__PURE__ */ jsx(
1414
+ "h5",
1415
+ {
1416
+ style: {
1417
+ margin: "0 0 12px",
1418
+ fontSize: 13,
1419
+ fontWeight: 600,
1420
+ textTransform: "uppercase",
1421
+ letterSpacing: "0.05em",
1422
+ color: "var(--sk-text-tertiary, #6b7280)"
1423
+ },
1424
+ children: "Why Trust This Author"
1425
+ }
1426
+ ),
1427
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", flexWrap: "wrap", gap: 8, marginBottom: hasCredentials || hasExpertise || hasPublications || hasAwards ? 12 : 0 }, children: [
1428
+ isVerified && /* @__PURE__ */ jsxs(
1429
+ "span",
1430
+ {
1431
+ style: {
1432
+ display: "inline-flex",
1433
+ alignItems: "center",
1434
+ gap: 4,
1435
+ padding: "4px 10px",
1436
+ borderRadius: 9999,
1437
+ fontSize: 12,
1438
+ fontWeight: 600,
1439
+ background: "rgba(20, 184, 166, 0.1)",
1440
+ color: "rgb(13, 148, 136)",
1441
+ border: "1px solid rgba(20, 184, 166, 0.2)"
1442
+ },
1443
+ children: [
1444
+ /* @__PURE__ */ jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
1445
+ /* @__PURE__ */ jsx("path", { d: "M22 11.08V12a10 10 0 1 1-5.93-9.14" }),
1446
+ /* @__PURE__ */ jsx("polyline", { points: "22 4 12 14.01 9 11.01" })
1447
+ ] }),
1448
+ "Verified Expert"
1449
+ ]
1450
+ }
1451
+ ),
1452
+ hasYears && /* @__PURE__ */ jsxs(
1453
+ "span",
1454
+ {
1455
+ style: {
1456
+ display: "inline-flex",
1457
+ alignItems: "center",
1458
+ padding: "4px 10px",
1459
+ borderRadius: 9999,
1460
+ fontSize: 12,
1461
+ fontWeight: 600,
1462
+ background: "rgba(99, 102, 241, 0.1)",
1463
+ color: "rgb(79, 70, 229)",
1464
+ border: "1px solid rgba(99, 102, 241, 0.2)"
1465
+ },
1466
+ children: [
1467
+ author.years_experience,
1468
+ "+ Years Experience"
1469
+ ]
1470
+ }
1471
+ )
1472
+ ] }),
1473
+ hasCredentials && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 10 }, children: [
1474
+ /* @__PURE__ */ jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)" }, children: "Credentials" }),
1475
+ /* @__PURE__ */ 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__ */ jsx("li", { children: c }, i)) })
1476
+ ] }),
1477
+ hasExpertise && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 10 }, children: [
1478
+ /* @__PURE__ */ jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)", display: "block", marginBottom: 6 }, children: "Expertise" }),
1479
+ /* @__PURE__ */ jsx("div", { style: { display: "flex", flexWrap: "wrap", gap: 6 }, children: author.expertise_areas.map((area, i) => /* @__PURE__ */ jsx(
1480
+ "span",
1481
+ {
1482
+ style: {
1483
+ padding: "3px 10px",
1484
+ borderRadius: 9999,
1485
+ fontSize: 12,
1486
+ background: "var(--sk-pill-bg, #e5e7eb)",
1487
+ color: "var(--sk-text-secondary, #374151)"
1488
+ },
1489
+ children: area
1490
+ },
1491
+ i
1492
+ )) })
1493
+ ] }),
1494
+ hasPublications && /* @__PURE__ */ jsxs("div", { style: { marginBottom: 10 }, children: [
1495
+ /* @__PURE__ */ jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)" }, children: "Featured In" }),
1496
+ /* @__PURE__ */ 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__ */ jsx("li", { children: pub }, i)) })
1497
+ ] }),
1498
+ hasAwards && /* @__PURE__ */ jsxs("div", { children: [
1499
+ /* @__PURE__ */ jsx("span", { style: { fontSize: 12, fontWeight: 600, color: "var(--sk-text-secondary, #374151)" }, children: "Awards" }),
1500
+ /* @__PURE__ */ 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__ */ jsx("li", { children: award }, i)) })
1501
+ ] })
1502
+ ]
1503
+ }
1504
+ );
1505
+ }
1506
+ function AuthorCard({ author, showBio = true, showSocial = true, showTrustBlock = false, className }) {
1507
+ return /* @__PURE__ */ jsxs("div", { className, style: { display: "flex", flexDirection: "column" }, children: [
1508
+ /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 16, alignItems: "flex-start" }, children: [
1509
+ author.avatar_url && /* @__PURE__ */ jsx(
1510
+ "img",
1511
+ {
1512
+ src: author.avatar_url,
1513
+ alt: author.name,
1514
+ style: {
1515
+ width: 64,
1516
+ height: 64,
1517
+ borderRadius: "50%",
1518
+ objectFit: "cover"
1519
+ }
1403
1520
  }
1521
+ ),
1522
+ /* @__PURE__ */ jsxs("div", { children: [
1523
+ /* @__PURE__ */ jsx("h4", { style: { margin: 0 }, children: author.name }),
1524
+ author.title && /* @__PURE__ */ jsxs("p", { style: { margin: "2px 0 0", fontSize: 13, color: "var(--sk-text-tertiary, #6b7280)" }, children: [
1525
+ author.title,
1526
+ author.company ? ` at ${author.company}` : ""
1527
+ ] }),
1528
+ showBio && author.bio && /* @__PURE__ */ jsx("p", { style: { margin: "4px 0", color: "var(--sk-text-secondary)", fontSize: 14 }, children: author.bio }),
1529
+ showSocial && author.social_links && /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 12, marginTop: 8 }, children: [
1530
+ author.social_links.twitter && /* @__PURE__ */ jsx("a", { href: `https://twitter.com/${author.social_links.twitter}`, target: "_blank", rel: "noopener noreferrer", children: "Twitter" }),
1531
+ author.social_links.linkedin && /* @__PURE__ */ jsx("a", { href: author.social_links.linkedin, target: "_blank", rel: "noopener noreferrer", children: "LinkedIn" }),
1532
+ author.social_links.github && /* @__PURE__ */ jsx("a", { href: `https://github.com/${author.social_links.github}`, target: "_blank", rel: "noopener noreferrer", children: "GitHub" })
1533
+ ] })
1534
+ ] })
1535
+ ] }),
1536
+ showTrustBlock && /* @__PURE__ */ jsx(TrustBlock, { author })
1537
+ ] });
1538
+ }
1539
+ function AuthorHero({ author }) {
1540
+ return /* @__PURE__ */ jsxs(
1541
+ "header",
1542
+ {
1543
+ className: "sk-author-hero",
1544
+ style: {
1545
+ display: "flex",
1546
+ flexDirection: "column",
1547
+ alignItems: "center",
1548
+ textAlign: "center",
1549
+ padding: "48px 24px 32px"
1550
+ },
1551
+ children: [
1552
+ author.avatar_url && /* @__PURE__ */ jsx(
1553
+ "img",
1554
+ {
1555
+ src: author.avatar_url,
1556
+ alt: author.name,
1557
+ width: 120,
1558
+ height: 120,
1559
+ style: {
1560
+ width: 120,
1561
+ height: 120,
1562
+ borderRadius: "50%",
1563
+ objectFit: "cover",
1564
+ marginBottom: 20,
1565
+ border: "3px solid var(--sk-border, #e5e7eb)"
1566
+ }
1567
+ }
1568
+ ),
1569
+ /* @__PURE__ */ jsx("h1", { style: { margin: 0, fontSize: 32, fontWeight: 700, color: "var(--sk-text-primary, #111827)" }, children: author.name }),
1570
+ (author.title || author.company) && /* @__PURE__ */ jsxs("p", { style: { margin: "6px 0 0", fontSize: 16, color: "var(--sk-text-secondary, #4b5563)" }, children: [
1571
+ author.title,
1572
+ author.title && author.company ? " at " : "",
1573
+ author.company
1574
+ ] }),
1575
+ author.bio && /* @__PURE__ */ jsx(
1576
+ "p",
1577
+ {
1578
+ style: {
1579
+ margin: "16px auto 0",
1580
+ maxWidth: 640,
1581
+ fontSize: 15,
1582
+ lineHeight: 1.7,
1583
+ color: "var(--sk-text-secondary, #4b5563)"
1584
+ },
1585
+ children: author.bio
1586
+ }
1587
+ ),
1588
+ /* @__PURE__ */ jsx(SocialLinks, { author })
1589
+ ]
1590
+ }
1591
+ );
1592
+ }
1593
+ function SocialLinks({ author }) {
1594
+ const links = [];
1595
+ if (author.linkedin_url) links.push({ label: "LinkedIn", href: author.linkedin_url });
1596
+ else if (author.social_links?.linkedin) links.push({ label: "LinkedIn", href: author.social_links.linkedin });
1597
+ if (author.twitter_url) links.push({ label: "Twitter", href: author.twitter_url });
1598
+ else if (author.social_links?.twitter) links.push({ label: "Twitter", href: `https://twitter.com/${author.social_links.twitter}` });
1599
+ if (author.website_url) links.push({ label: "Website", href: author.website_url });
1600
+ else if (author.website) links.push({ label: "Website", href: author.website });
1601
+ if (links.length === 0) return null;
1602
+ return /* @__PURE__ */ jsx("div", { style: { display: "flex", gap: 16, marginTop: 16 }, children: links.map((link) => /* @__PURE__ */ jsx(
1603
+ "a",
1604
+ {
1605
+ href: link.href,
1606
+ target: "_blank",
1607
+ rel: "noopener noreferrer",
1608
+ style: {
1609
+ display: "inline-flex",
1610
+ alignItems: "center",
1611
+ gap: 6,
1612
+ padding: "6px 14px",
1613
+ borderRadius: 8,
1614
+ fontSize: 13,
1615
+ fontWeight: 500,
1616
+ color: "rgb(13, 148, 136)",
1617
+ background: "rgba(20, 184, 166, 0.08)",
1618
+ border: "1px solid rgba(20, 184, 166, 0.15)",
1619
+ textDecoration: "none"
1620
+ },
1621
+ children: link.label
1622
+ },
1623
+ link.label
1624
+ )) });
1625
+ }
1626
+ function PostCard({ post, basePath }) {
1627
+ const href = `${basePath}/${post.slug}`;
1628
+ const date = post.published_at ? new Date(post.published_at).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" }) : null;
1629
+ return /* @__PURE__ */ jsxs(
1630
+ "article",
1631
+ {
1632
+ className: "sk-author-post-card",
1633
+ style: {
1634
+ borderRadius: 12,
1635
+ border: "1px solid var(--sk-border, #e5e7eb)",
1636
+ overflow: "hidden",
1637
+ background: "var(--sk-card-bg, #fff)",
1638
+ display: "flex",
1639
+ flexDirection: "column"
1640
+ },
1641
+ children: [
1642
+ post.featured_image && /* @__PURE__ */ jsx("a", { href, style: { display: "block", overflow: "hidden", aspectRatio: "16/9" }, children: /* @__PURE__ */ jsx(
1643
+ "img",
1644
+ {
1645
+ src: post.featured_image,
1646
+ alt: post.featured_image_alt || post.title,
1647
+ style: { width: "100%", height: "100%", objectFit: "cover" },
1648
+ loading: "lazy"
1649
+ }
1650
+ ) }),
1651
+ /* @__PURE__ */ jsxs("div", { style: { padding: 20, flex: 1, display: "flex", flexDirection: "column" }, children: [
1652
+ date && /* @__PURE__ */ jsx("time", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginBottom: 6 }, children: date }),
1653
+ /* @__PURE__ */ jsx("a", { href, style: { textDecoration: "none", color: "inherit" }, children: /* @__PURE__ */ jsx("h3", { style: { margin: "0 0 8px", fontSize: 18, fontWeight: 600, lineHeight: 1.3, color: "var(--sk-text-primary, #111827)" }, children: post.title }) }),
1654
+ post.excerpt && /* @__PURE__ */ jsx("p", { style: { margin: 0, fontSize: 14, lineHeight: 1.6, color: "var(--sk-text-secondary, #4b5563)", flex: 1 }, children: post.excerpt }),
1655
+ post.reading_time_minutes && /* @__PURE__ */ jsxs("span", { style: { fontSize: 12, color: "var(--sk-text-tertiary, #6b7280)", marginTop: 12 }, children: [
1656
+ post.reading_time_minutes,
1657
+ " min read"
1658
+ ] })
1659
+ ] })
1660
+ ]
1661
+ }
1662
+ );
1663
+ }
1664
+ function AuthorPage({ author, posts, basePath = "/blog" }) {
1665
+ const schema = generateAuthorSchema(author);
1666
+ return /* @__PURE__ */ jsxs("div", { className: "sk-author-page", children: [
1667
+ /* @__PURE__ */ jsx(
1668
+ "script",
1669
+ {
1670
+ type: "application/ld+json",
1671
+ dangerouslySetInnerHTML: { __html: JSON.stringify(schema) }
1404
1672
  }
1405
1673
  ),
1406
- /* @__PURE__ */ jsxs("div", { children: [
1407
- /* @__PURE__ */ jsx("h4", { style: { margin: 0 }, children: author.name }),
1408
- showBio && author.bio && /* @__PURE__ */ jsx("p", { style: { margin: "4px 0", color: "var(--sk-text-secondary)", fontSize: 14 }, children: author.bio }),
1409
- showSocial && author.social_links && /* @__PURE__ */ jsxs("div", { style: { display: "flex", gap: 12, marginTop: 8 }, children: [
1410
- author.social_links.twitter && /* @__PURE__ */ jsx("a", { href: `https://twitter.com/${author.social_links.twitter}`, target: "_blank", rel: "noopener noreferrer", children: "Twitter" }),
1411
- author.social_links.linkedin && /* @__PURE__ */ jsx("a", { href: author.social_links.linkedin, target: "_blank", rel: "noopener noreferrer", children: "LinkedIn" }),
1412
- author.social_links.github && /* @__PURE__ */ jsx("a", { href: `https://github.com/${author.social_links.github}`, target: "_blank", rel: "noopener noreferrer", children: "GitHub" })
1413
- ] })
1674
+ /* @__PURE__ */ jsx(AuthorHero, { author }),
1675
+ /* @__PURE__ */ jsx("div", { style: { maxWidth: 640, margin: "0 auto", padding: "0 24px" }, children: /* @__PURE__ */ jsx(TrustBlock, { author }) }),
1676
+ posts.length > 0 && /* @__PURE__ */ jsxs("section", { style: { maxWidth: 1080, margin: "40px auto 0", padding: "0 24px 48px" }, children: [
1677
+ /* @__PURE__ */ jsxs("h2", { style: { fontSize: 22, fontWeight: 600, marginBottom: 24, color: "var(--sk-text-primary, #111827)" }, children: [
1678
+ "Articles by ",
1679
+ author.name,
1680
+ typeof author.post_count === "number" && /* @__PURE__ */ jsxs("span", { style: { fontWeight: 400, fontSize: 15, color: "var(--sk-text-tertiary, #6b7280)", marginLeft: 8 }, children: [
1681
+ "(",
1682
+ author.post_count,
1683
+ ")"
1684
+ ] })
1685
+ ] }),
1686
+ /* @__PURE__ */ jsx(
1687
+ "div",
1688
+ {
1689
+ className: "sk-author-posts-grid",
1690
+ style: {
1691
+ display: "grid",
1692
+ gridTemplateColumns: "repeat(auto-fill, minmax(300px, 1fr))",
1693
+ gap: 24
1694
+ },
1695
+ children: posts.map((post) => /* @__PURE__ */ jsx(PostCard, { post, basePath }, post.id))
1696
+ }
1697
+ )
1414
1698
  ] })
1415
1699
  ] });
1416
1700
  }
@@ -1557,6 +1841,6 @@ function TableOfContents({
1557
1841
  ] });
1558
1842
  }
1559
1843
 
1560
- export { AuthorCard, BlogLayout, BlogList, BlogPage, BlogPost, BlogPostPage, BlogSidebar, CategoryPage, NewsletterWidget, RelatedPosts, TableOfContents };
1844
+ export { AuthorCard, AuthorPage, BlogLayout, BlogList, BlogPage, BlogPost, BlogPostPage, BlogSidebar, CategoryPage, NewsletterWidget, RelatedPosts, TableOfContents };
1561
1845
  //# sourceMappingURL=index.mjs.map
1562
1846
  //# sourceMappingURL=index.mjs.map