@sonordev/site-kit 8.1.0 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/AGENTS.md +13 -1
  2. package/CHANGELOG.md +11 -0
  3. package/README.md +9 -5
  4. package/agent-manifest.json +47 -8
  5. package/dist/{AnalyticsProvider-UWTCE5UO.js → AnalyticsProvider-QXO33JUF.js} +6 -6
  6. package/dist/{ArticleFaqSection-3Q26DP7P.js → ArticleFaqSection-DEWE5B4Q.js} +1 -1
  7. package/dist/{ArticleViewTracker-MYD6SGNH.js → ArticleViewTracker-KN6ENIRS.js} +17 -6
  8. package/dist/{BlocksPopup-OY5G3EFH.js → BlocksPopup-3RPN6YVJ.js} +6 -6
  9. package/dist/{ChatWidget-BTR5VERC.js → ChatWidget-D2X445PO.js} +6 -6
  10. package/dist/{FileField-DEHVYXAO.js → FileField-UNGSNGJ5.js} +4 -4
  11. package/dist/{FormSpotlight-VGC4CZL4.js → FormSpotlight-JFH2ENKQ.js} +1 -1
  12. package/dist/{FormStage-CJUSCSAL.js → FormStage-RC3WHHXP.js} +1 -1
  13. package/dist/{ManagedForm-JCI2KPMO.js → ManagedForm-FOQZ2IYG.js} +7 -7
  14. package/dist/{ManagedNewsletterForm-DTE4KKXV.js → ManagedNewsletterForm-NFNF33V3.js} +16 -7
  15. package/dist/{SignalCore-LGCBQDEH.js → SignalCore-5KABGX5C.js} +4 -4
  16. package/dist/SiteChat-JQ46ZIJ4.js +6 -0
  17. package/dist/SiteDesignReporter-N7L6DR4J.js +12 -0
  18. package/dist/{SitePopups-T6YPHAVY.js → SitePopups-WZBKX5Q3.js} +6 -6
  19. package/dist/SitemapSync-GY6UADRI.js +9 -0
  20. package/dist/_client/booking-widget.js +6 -6
  21. package/dist/_client/testimonial-section.js +3 -3
  22. package/dist/affiliates/index.js +4 -4
  23. package/dist/analytics/index.js +6 -6
  24. package/dist/{article-styles-GGZOQG5X.js → article-styles-7QONZJR5.js} +3 -3
  25. package/dist/article-tables-6XHVULPU.js +2 -0
  26. package/dist/articles/Article.d.ts +2 -89
  27. package/dist/articles/ArticleFAQ.d.ts +2 -41
  28. package/dist/articles/ArticleFaqSection.d.ts +2 -2
  29. package/dist/articles/ArticleList.d.ts +2 -79
  30. package/dist/articles/ArticleViewTracker.d.ts +2 -15
  31. package/dist/articles/AuthorCard.d.ts +2 -10
  32. package/dist/articles/AuthorPage.d.ts +2 -8
  33. package/dist/articles/ClusterLandingPage.d.ts +2 -40
  34. package/dist/articles/ClusterNavigation.d.ts +2 -37
  35. package/dist/articles/ManagedNewsletterForm.d.ts +3 -12
  36. package/dist/articles/NewsletterShell.d.ts +2 -17
  37. package/dist/articles/NewsletterWidget.d.ts +2 -30
  38. package/dist/articles/PublicationLayout.d.ts +2 -67
  39. package/dist/articles/PublicationSidebar.d.ts +2 -36
  40. package/dist/articles/RelatedPosts.d.ts +2 -22
  41. package/dist/articles/ServiceCallout.d.ts +2 -56
  42. package/dist/articles/TableOfContents.d.ts +2 -6
  43. package/dist/articles/article-photos.d.ts +2 -9
  44. package/dist/articles/article-styles.d.ts +2 -21
  45. package/dist/articles/article-tables.d.ts +2 -12
  46. package/dist/articles/artwork.d.ts +2 -13
  47. package/dist/articles/author-schema.d.ts +2 -72
  48. package/dist/articles/author-social.d.ts +2 -14
  49. package/dist/articles/excerpt.d.ts +2 -17
  50. package/dist/articles/index.d.ts +2 -79
  51. package/dist/articles/index.js +16 -11
  52. package/dist/articles/news-sitemap.d.ts +2 -46
  53. package/dist/articles/processArticleHtml.d.ts +2 -34
  54. package/dist/articles/public-reads.d.ts +2 -26
  55. package/dist/articles/reading-time.d.ts +2 -9
  56. package/dist/articles/routes.d.ts +2 -52
  57. package/dist/articles/server-core.d.ts +2 -461
  58. package/dist/articles/server-ui.d.ts +2 -30
  59. package/dist/articles/server-ui.js +26 -17
  60. package/dist/articles/server.d.ts +2 -461
  61. package/dist/articles/server.js +14 -5
  62. package/dist/articles/types.d.ts +2 -315
  63. package/dist/articles/widget-styles.d.ts +2 -8
  64. package/dist/chat/index.js +8 -8
  65. package/dist/{chunk-AIDIEVPZ.js → chunk-2JMCBJM5.js} +1 -1
  66. package/dist/chunk-34ZYJTQR.js +1 -0
  67. package/dist/{chunk-ADI6IYFH.js → chunk-3OY52UFM.js} +1 -1
  68. package/dist/{chunk-WMVK77ND.js → chunk-4K735O3J.js} +1 -1
  69. package/dist/{chunk-55GHBRCN.js → chunk-4PVMUPC6.js} +2 -2
  70. package/dist/{chunk-L5UOHS6E.js → chunk-5D7ZISUP.js} +1 -1
  71. package/dist/{chunk-JT52KYHQ.js → chunk-5RYSTKVU.js} +1 -1
  72. package/dist/{chunk-6CJGZFOU.js → chunk-A4MPHIVP.js} +1 -1
  73. package/dist/chunk-B7T2SFUF.js +1 -0
  74. package/dist/{chunk-FV2VD7WM.js → chunk-BC7JMY4Z.js} +3 -3
  75. package/dist/{chunk-255NCCPB.js → chunk-BOCYBDKV.js} +1 -1
  76. package/dist/{chunk-NFRJTOTB.js → chunk-BSQP6PRA.js} +1 -1
  77. package/dist/{chunk-GKGSXUVQ.js → chunk-BVB5FBAA.js} +1 -1
  78. package/dist/{chunk-NWVB75ER.js → chunk-C2UROFGZ.js} +1 -1
  79. package/dist/{chunk-F2VYN3QL.js → chunk-C4AFNZT2.js} +1 -1
  80. package/dist/{chunk-GC2QWXJ3.js → chunk-D6ZIQMHB.js} +3 -3
  81. package/dist/{chunk-GYF2ULVO.js → chunk-DJAYFHVF.js} +1 -1
  82. package/dist/{chunk-XUCU3LX4.js → chunk-DPSNMOMZ.js} +1 -1
  83. package/dist/{chunk-A3EU6HB5.js → chunk-E3UR37RX.js} +2 -2
  84. package/dist/{chunk-Y3INC4QJ.js → chunk-E4PTMORJ.js} +1 -1
  85. package/dist/{chunk-TAO6BVA2.js → chunk-EA6FZMYA.js} +2 -2
  86. package/dist/{chunk-V56RZH7J.js → chunk-FHUTOXS7.js} +1 -1
  87. package/dist/{chunk-LLW5HKEE.js → chunk-GKJVSZ7H.js} +3 -3
  88. package/dist/chunk-H72ZFO3F.js +1 -0
  89. package/dist/{chunk-CSTC6HZO.js → chunk-HND6BDXC.js} +3 -3
  90. package/dist/chunk-IEGDPRQB.js +14 -0
  91. package/dist/{chunk-CAH4Y4PY.js → chunk-JO76F5WP.js} +1 -1
  92. package/dist/{chunk-4Z3DI2EL.js → chunk-KJVUOJMW.js} +58 -58
  93. package/dist/{chunk-SC4MZGWZ.js → chunk-LBDWAXAO.js} +1 -1
  94. package/dist/{chunk-RSBMQFZW.js → chunk-LPKKSYKX.js} +3 -3
  95. package/dist/{chunk-2UO4HPGE.js → chunk-M5SF7NCC.js} +73 -51
  96. package/dist/{chunk-S6IGQYHW.js → chunk-MQ4REMTH.js} +2 -2
  97. package/dist/{chunk-O4DETQJI.js → chunk-NA4Z4CQG.js} +1 -1
  98. package/dist/{chunk-WPOFTCKL.js → chunk-OIWFXUVD.js} +2 -2
  99. package/dist/{chunk-G2HCCWZQ.js → chunk-QBCWVT2S.js} +2 -2
  100. package/dist/{chunk-DZV3KPVF.js → chunk-QCZHYO5M.js} +1 -1
  101. package/dist/{chunk-DOMBP3FW.js → chunk-QDILCQBL.js} +9 -9
  102. package/dist/{chunk-IAYGTQJD.js → chunk-SCTVADDL.js} +2 -2
  103. package/dist/{chunk-QXMIKDOL.js → chunk-SNRE3ZVZ.js} +3 -3
  104. package/dist/{chunk-DSNCU2E3.js → chunk-TT4JZDKM.js} +3 -3
  105. package/dist/{chunk-6VHDCJIZ.js → chunk-U7Y3QG3A.js} +1 -1
  106. package/dist/{chunk-3G7YABRA.js → chunk-W7OPEMGJ.js} +4 -1
  107. package/dist/{chunk-2JEUDTL6.js → chunk-WBUG7XRL.js} +2 -2
  108. package/dist/{chunk-47VB5INH.js → chunk-WSOZ3FQN.js} +1 -1
  109. package/dist/chunk-X4IJS7LV.js +319 -0
  110. package/dist/{chunk-JIH32RH2.js → chunk-XA7Q2VQA.js} +1 -1
  111. package/dist/{chunk-5L467Z5Q.js → chunk-XLAXYPTK.js} +3 -3
  112. package/dist/client/index.js +4 -16
  113. package/dist/contracts/editorial-media.d.ts +39 -0
  114. package/dist/contracts/entries.d.ts +1 -1
  115. package/dist/fleet/index.js +6 -6
  116. package/dist/forms/index.js +9 -325
  117. package/dist/forms/server.js +2 -2
  118. package/dist/images/index.js +4 -4
  119. package/dist/index.js +1 -1
  120. package/dist/layout/client.js +9 -9
  121. package/dist/layout/index.js +10 -10
  122. package/dist/llms/index.js +8 -8
  123. package/dist/maps/index.js +4 -4
  124. package/dist/mcp/sonor.d.ts +42 -3
  125. package/dist/mcp/sonor.js +25 -20
  126. package/dist/mcp/transport.d.ts +1 -1
  127. package/dist/press-kit/articles/Article.d.ts +89 -0
  128. package/dist/press-kit/articles/ArticleFAQ.d.ts +41 -0
  129. package/dist/press-kit/articles/ArticleFaqSection.d.ts +2 -0
  130. package/dist/press-kit/articles/ArticleList.d.ts +79 -0
  131. package/dist/press-kit/articles/ArticleViewTracker.d.ts +15 -0
  132. package/dist/press-kit/articles/AuthorCard.d.ts +10 -0
  133. package/dist/press-kit/articles/AuthorPage.d.ts +8 -0
  134. package/dist/press-kit/articles/ClusterLandingPage.d.ts +40 -0
  135. package/dist/press-kit/articles/ClusterNavigation.d.ts +37 -0
  136. package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +12 -0
  137. package/dist/press-kit/articles/NewsletterShell.d.ts +17 -0
  138. package/dist/press-kit/articles/NewsletterWidget.d.ts +30 -0
  139. package/dist/press-kit/articles/PublicationLayout.d.ts +67 -0
  140. package/dist/press-kit/articles/PublicationSidebar.d.ts +36 -0
  141. package/dist/press-kit/articles/RelatedPosts.d.ts +22 -0
  142. package/dist/press-kit/articles/ServiceCallout.d.ts +56 -0
  143. package/dist/press-kit/articles/TableOfContents.d.ts +6 -0
  144. package/dist/press-kit/articles/article-photos.d.ts +9 -0
  145. package/dist/press-kit/articles/article-styles.d.ts +21 -0
  146. package/dist/press-kit/articles/article-tables.d.ts +12 -0
  147. package/dist/press-kit/articles/artwork.d.ts +13 -0
  148. package/dist/press-kit/articles/author-schema.d.ts +72 -0
  149. package/dist/press-kit/articles/author-social.d.ts +14 -0
  150. package/dist/press-kit/articles/excerpt.d.ts +17 -0
  151. package/dist/press-kit/articles/index.d.ts +79 -0
  152. package/dist/press-kit/articles/news-sitemap.d.ts +46 -0
  153. package/dist/press-kit/articles/processArticleHtml.d.ts +34 -0
  154. package/dist/press-kit/articles/public-reads.d.ts +26 -0
  155. package/dist/press-kit/articles/reading-time.d.ts +9 -0
  156. package/dist/press-kit/articles/routes.d.ts +52 -0
  157. package/dist/press-kit/articles/server-core.d.ts +461 -0
  158. package/dist/press-kit/articles/server-ui.d.ts +31 -0
  159. package/dist/press-kit/articles/types.d.ts +316 -0
  160. package/dist/press-kit/articles/widget-styles.d.ts +8 -0
  161. package/dist/reputation/index.js +3 -3
  162. package/dist/reputation/server.js +2 -2
  163. package/dist/revalidate/index.js +2 -2
  164. package/dist/runtime/index.js +5 -4
  165. package/dist/seo/client.js +6 -6
  166. package/dist/seo/index.js +7 -7
  167. package/dist/seo/llms.js +8 -8
  168. package/dist/seo/register-sitemap-cli.js +1 -1
  169. package/dist/seo/sitemap.js +6 -6
  170. package/dist/server/index.js +3 -2
  171. package/dist/shared/build-entries.d.ts +2 -1
  172. package/dist/shared/clientApiConfig.d.ts +2 -0
  173. package/dist/shared/import-specifiers.d.ts +1 -1
  174. package/dist/shared/index.d.ts +6 -0
  175. package/dist/shared/index.js +8 -0
  176. package/dist/shared/version.d.ts +1 -1
  177. package/dist/signal/index.js +2 -2
  178. package/dist/sitemap/index.js +6 -6
  179. package/dist/sync/index.js +6 -6
  180. package/dist/website/images.js +4 -4
  181. package/dist/website/index.js +7 -7
  182. package/dist/website/popups.js +6 -6
  183. package/dist/{writeLLMsTxt-OS2WBSLM.js → writeLLMsTxt-VKHCM5IS.js} +5 -5
  184. package/docs/MIGRATING-TO-PRESS-KIT.md +83 -0
  185. package/docs.json +145 -29
  186. package/package.json +15 -5
  187. package/src/articles/README.md +5 -360
  188. package/src/mcp/README.md +16 -0
  189. package/src/og/README.md +1 -1
  190. package/src/runtime/README.md +4 -0
  191. package/dist/SiteChat-6SF7PVUT.js +0 -6
  192. package/dist/SiteDesignReporter-VISQZ5NQ.js +0 -12
  193. package/dist/SitemapSync-VKMVRPZL.js +0 -9
  194. package/dist/article-tables-AXSZOGNW.js +0 -2
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { SitePopups } from '../chunk-LLW5HKEE.js';
2
+ export { SitePopups } from '../chunk-GKJVSZ7H.js';
3
3
  import '../chunk-27FISYK4.js';
4
4
  export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-BF7TZYC3.js';
5
5
  import '../chunk-IHG36STL.js';
@@ -8,10 +8,10 @@ import '../chunk-S22FSH7C.js';
8
8
  import '../chunk-ZKADJNR2.js';
9
9
  import '../chunk-5TM3WPCI.js';
10
10
  import '../chunk-GJWI74ZZ.js';
11
- import '../chunk-CAH4Y4PY.js';
11
+ import '../chunk-JO76F5WP.js';
12
12
  import '../chunk-EKBEOXTH.js';
13
- import '../chunk-3G7YABRA.js';
14
- import '../chunk-WPOFTCKL.js';
15
- import '../chunk-F2VYN3QL.js';
16
- import '../chunk-NWVB75ER.js';
13
+ import '../chunk-OIWFXUVD.js';
14
+ import '../chunk-C4AFNZT2.js';
15
+ import '../chunk-W7OPEMGJ.js';
16
+ import '../chunk-C2UROFGZ.js';
17
17
  import '../chunk-PKBMQBKP.js';
@@ -1,12 +1,12 @@
1
- export { writeLLMsTxtToPublic } from './chunk-GC2QWXJ3.js';
2
- import './chunk-JIH32RH2.js';
3
- import './chunk-L5UOHS6E.js';
4
- import './chunk-WMVK77ND.js';
1
+ export { writeLLMsTxtToPublic } from './chunk-D6ZIQMHB.js';
2
+ import './chunk-XA7Q2VQA.js';
3
+ import './chunk-5D7ZISUP.js';
4
+ import './chunk-4K735O3J.js';
5
5
  import './chunk-UAYAJPEP.js';
6
6
  import './chunk-NZ4RXN3G.js';
7
7
  import './chunk-MJP63SSS.js';
8
8
  import './chunk-YVKRYQRG.js';
9
9
  import './chunk-FESKKJAS.js';
10
10
  import './chunk-A4CC4ZG3.js';
11
- import './chunk-3G7YABRA.js';
11
+ import './chunk-W7OPEMGJ.js';
12
12
  import './chunk-PKBMQBKP.js';
@@ -0,0 +1,83 @@
1
+ # Moving articles to Press Kit
2
+
3
+ `@sonordev/press-kit` owns Sonor's article and publication rendering, including
4
+ Broadcast artwork and supporting photos. Site Kit continues to provide the
5
+ site's layout, shared transport, SEO, analytics, forms, revalidation and MCP.
6
+ Press Kit 1 requires Site Kit 8.3 or newer. There's still one `SONOR_API_KEY` in
7
+ `.env.local`, and no new provider or project ID.
8
+
9
+ Site Kit 8.x keeps its existing article imports as compatibility shims built
10
+ from the same source. This is a package migration; it doesn't publish articles,
11
+ schedule broadcasts, change URLs or change the project's visual rules.
12
+
13
+ ## Migrate an existing publication
14
+
15
+ ```bash
16
+ npx sonor-setup@latest codemod --only press-kit --json
17
+ npx sonor-setup@latest codemod --only press-kit --write --json
18
+ pnpm install
19
+ pnpm build
20
+ npx sonor-setup verify --json
21
+ ```
22
+
23
+ Use sonor-setup 7.4 or newer. `press-kit` selects only the article migration,
24
+ using the same engine as the full codemod. The first command previews the diff. The second
25
+ changes imports, adds Press Kit and raises the Site Kit floor to 8.3, preserving
26
+ the existing range style. Commerce imports and dependencies remain unchanged. Use `--only site-kit-8`
27
+ to migrate both article and commerce packages. Review
28
+ reported manual follow-ups, especially dependency overrides and non-registry
29
+ ranges. Use the site's package manager for install and build.
30
+
31
+ | Use | Preferred import |
32
+ |---|---|
33
+ | Client components such as `TableOfContents`, `NewsletterWidget`, `ArticleViewTracker` | `@sonordev/press-kit/articles` |
34
+ | Data, static params, metadata, feeds, sitemaps and photo placement helpers | `@sonordev/press-kit/articles/server` |
35
+ | RSC components such as `Article`, `ArticleList`, `PublicationLayout` | `@sonordev/press-kit/articles/server-ui` |
36
+ | Article types only | `@sonordev/press-kit` |
37
+
38
+ Keep `SiteKitLayout` from `@sonordev/site-kit/layout`. Preserve the publication's
39
+ existing routing object and `basePath`; replacing a package name doesn't mean
40
+ renaming `/theforge`, `/news` or `/insights`.
41
+
42
+ ```tsx
43
+ import { Article } from '@sonordev/press-kit/articles/server-ui'
44
+
45
+ export default async function Story({ params }: { params: Promise<{ slug: string }> }) {
46
+ const { slug } = await params
47
+ return <Article slug={slug} basePath="/news" />
48
+ }
49
+ ```
50
+
51
+ ## Keep site MCP and live updates aligned
52
+
53
+ New MCP scaffolds use Press Kit automatically. For an existing server, pass the
54
+ same public readers the website uses; existing server files aren't overwritten
55
+ by the CLI unless `--force` is passed.
56
+
57
+ ```ts
58
+ import { sonorMcpServer } from '@sonordev/site-kit/mcp/sonor'
59
+ import { getAllArticles, getArticle } from '@sonordev/press-kit/articles/server'
60
+
61
+ export const mcpServer = sonorMcpServer({
62
+ businessName: 'Your business',
63
+ articles: { path: '/news', readMany: getAllArticles, readOne: getArticle },
64
+ })
65
+ ```
66
+
67
+ Both readers receive the configured sub-site. `list_articles` and `get_article`
68
+ keep their existing names, public data and approved supporting photo descriptions.
69
+ They don't expose private briefs or source file IDs. Sites without articles use
70
+ `articles: false` (CLI: `--no-articles`) and don't need Press Kit.
71
+
72
+ Keep the revalidation route in Site Kit:
73
+
74
+ ```ts
75
+ import { createRevalidateRoute } from '@sonordev/site-kit/revalidate'
76
+ export const POST = createRevalidateRoute({ publicationBasePath: '/news' })
77
+ ```
78
+
79
+ The scaffold and doctor recognize either package's article imports, including
80
+ local reader barrels. Check an article with supporting photos, the publication
81
+ index, its feeds and site MCP locally before deploying. Photo assignments,
82
+ descriptions, crops, stage rules and save/publish actions stay in Sonor; moving
83
+ the website package doesn't add a second editorial workflow.
package/docs.json CHANGED
@@ -2,65 +2,181 @@
2
2
  "$comment": "What sonor.dev renders for this package, in nav order. sonor.dev reads this file from the published tarball (latest on npm), so a release IS the docs deploy: add a page here and ship it in package.json `files`. scripts/verify-docs.cjs fails the publish if a listed file is missing from the pack.",
3
3
  "schemaVersion": 1,
4
4
  "title": "site-kit",
5
- "summary": "One package, one env var, the Sonor modules a Next.js site needs: SEO, analytics, forms, articles, booking, chat, AI visibility, agent tools and motion. Commerce and memberships live in commerce-kit.",
5
+ "summary": "One API key for Sonor site infrastructure: SEO, analytics, forms, booking, chat, AI visibility, agent tools and motion. Publications live in Press Kit; commerce and memberships live in Commerce Kit.",
6
6
  "groups": [
7
7
  {
8
8
  "title": "Start here",
9
9
  "pages": [
10
- { "slug": "", "title": "Overview", "file": "README.md" },
11
- { "slug": "migrating-to-7", "title": "Migrating to 7", "file": "docs/MIGRATING-TO-7.md" },
12
- { "slug": "migrating-to-8", "title": "Migrating to 8", "file": "docs/MIGRATING-TO-8.md" },
13
- { "slug": "agents", "title": "For coding agents", "file": "AGENTS.md" }
10
+ {
11
+ "slug": "",
12
+ "title": "Overview",
13
+ "file": "README.md"
14
+ },
15
+ {
16
+ "slug": "migrating-to-7",
17
+ "title": "Migrating to 7",
18
+ "file": "docs/MIGRATING-TO-7.md"
19
+ },
20
+ {
21
+ "slug": "migrating-to-8",
22
+ "title": "Migrating to 8",
23
+ "file": "docs/MIGRATING-TO-8.md"
24
+ },
25
+ {
26
+ "slug": "migrating-to-press-kit",
27
+ "title": "Moving publications to Press Kit",
28
+ "file": "docs/MIGRATING-TO-PRESS-KIT.md"
29
+ },
30
+ {
31
+ "slug": "agents",
32
+ "title": "For coding agents",
33
+ "file": "AGENTS.md"
34
+ }
14
35
  ]
15
36
  },
16
37
  {
17
38
  "title": "Core",
18
39
  "pages": [
19
- { "slug": "layout", "title": "Layout", "file": "src/layout/README.md" },
20
- { "slug": "live-updates", "title": "Live updates", "file": "src/revalidate/README.md" },
21
- { "slug": "seo", "title": "SEO", "file": "src/seo/README.md" },
22
- { "slug": "analytics", "title": "Analytics", "file": "src/analytics/README.md" },
23
- { "slug": "sitemap", "title": "Sitemap", "file": "src/sitemap/README.md" },
24
- { "slug": "proxy", "title": "Proxy", "file": "src/proxy/README.md" },
25
- { "slug": "redirects", "title": "Redirects", "file": "src/redirects/README.md" },
26
- { "slug": "og", "title": "OG cards", "file": "src/og/README.md" }
40
+ {
41
+ "slug": "layout",
42
+ "title": "Layout",
43
+ "file": "src/layout/README.md"
44
+ },
45
+ {
46
+ "slug": "live-updates",
47
+ "title": "Live updates",
48
+ "file": "src/revalidate/README.md"
49
+ },
50
+ {
51
+ "slug": "seo",
52
+ "title": "SEO",
53
+ "file": "src/seo/README.md"
54
+ },
55
+ {
56
+ "slug": "analytics",
57
+ "title": "Analytics",
58
+ "file": "src/analytics/README.md"
59
+ },
60
+ {
61
+ "slug": "sitemap",
62
+ "title": "Sitemap",
63
+ "file": "src/sitemap/README.md"
64
+ },
65
+ {
66
+ "slug": "proxy",
67
+ "title": "Proxy",
68
+ "file": "src/proxy/README.md"
69
+ },
70
+ {
71
+ "slug": "redirects",
72
+ "title": "Redirects",
73
+ "file": "src/redirects/README.md"
74
+ },
75
+ {
76
+ "slug": "og",
77
+ "title": "OG cards",
78
+ "file": "src/og/README.md"
79
+ }
27
80
  ]
28
81
  },
29
82
  {
30
83
  "title": "Content",
31
84
  "pages": [
32
- { "slug": "copy", "title": "Managed copy", "file": "src/slots/README.md" },
33
- { "slug": "articles", "title": "Articles", "file": "src/articles/README.md" },
34
- { "slug": "images", "title": "Images", "file": "src/images/README.md" },
35
- { "slug": "reputation", "title": "Reputation", "file": "src/reputation/README.md" }
85
+ {
86
+ "slug": "copy",
87
+ "title": "Managed copy",
88
+ "file": "src/slots/README.md"
89
+ },
90
+ {
91
+ "slug": "articles",
92
+ "title": "Articles",
93
+ "file": "src/articles/README.md"
94
+ },
95
+ {
96
+ "slug": "images",
97
+ "title": "Images",
98
+ "file": "src/images/README.md"
99
+ },
100
+ {
101
+ "slug": "reputation",
102
+ "title": "Reputation",
103
+ "file": "src/reputation/README.md"
104
+ }
36
105
  ]
37
106
  },
38
107
  {
39
108
  "title": "Engagement",
40
109
  "pages": [
41
- { "slug": "forms", "title": "Forms", "file": "src/forms/README.md" },
42
- { "slug": "chat", "title": "Website chat", "file": "src/chat/README.md" },
43
- { "slug": "popups", "title": "Popups and banners", "file": "src/website/README.md" },
44
- { "slug": "cta-bar", "title": "CTA bar", "file": "src/cta-bar/README.md" },
45
- { "slug": "booking", "title": "Booking", "file": "src/sync/README.md" },
46
- { "slug": "signal", "title": "Signal (A/B)", "file": "src/signal/README.md" }
110
+ {
111
+ "slug": "forms",
112
+ "title": "Forms",
113
+ "file": "src/forms/README.md"
114
+ },
115
+ {
116
+ "slug": "chat",
117
+ "title": "Website chat",
118
+ "file": "src/chat/README.md"
119
+ },
120
+ {
121
+ "slug": "popups",
122
+ "title": "Popups and banners",
123
+ "file": "src/website/README.md"
124
+ },
125
+ {
126
+ "slug": "cta-bar",
127
+ "title": "CTA bar",
128
+ "file": "src/cta-bar/README.md"
129
+ },
130
+ {
131
+ "slug": "booking",
132
+ "title": "Booking",
133
+ "file": "src/sync/README.md"
134
+ },
135
+ {
136
+ "slug": "signal",
137
+ "title": "Signal (A/B)",
138
+ "file": "src/signal/README.md"
139
+ }
47
140
  ]
48
141
  },
49
142
  {
50
143
  "title": "AI visibility",
51
144
  "pages": [
52
- { "slug": "llms", "title": "llms.txt and AEO", "file": "src/llms/README.md" },
53
- { "slug": "mcp", "title": "MCP and agent tools", "file": "src/mcp/README.md" }
145
+ {
146
+ "slug": "llms",
147
+ "title": "llms.txt and AEO",
148
+ "file": "src/llms/README.md"
149
+ },
150
+ {
151
+ "slug": "mcp",
152
+ "title": "MCP and agent tools",
153
+ "file": "src/mcp/README.md"
154
+ }
54
155
  ]
55
156
  },
56
157
  {
57
158
  "title": "More",
58
159
  "pages": [
59
- { "slug": "motion", "title": "Motion", "file": "src/motion/README.md" },
60
- { "slug": "runtime", "title": "Building a kit", "file": "src/runtime/README.md" },
61
- { "slug": "admin-auth", "title": "Sign in with Sonor", "file": "src/admin-auth/README.md" }
160
+ {
161
+ "slug": "motion",
162
+ "title": "Motion",
163
+ "file": "src/motion/README.md"
164
+ },
165
+ {
166
+ "slug": "runtime",
167
+ "title": "Building a kit",
168
+ "file": "src/runtime/README.md"
169
+ },
170
+ {
171
+ "slug": "admin-auth",
172
+ "title": "Sign in with Sonor",
173
+ "file": "src/admin-auth/README.md"
174
+ }
62
175
  ]
63
176
  }
64
177
  ],
65
- "changelog": { "file": "CHANGELOG.md", "since": "7.0.0" }
178
+ "changelog": {
179
+ "file": "CHANGELOG.md",
180
+ "since": "7.0.0"
181
+ }
66
182
  }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@sonordev/site-kit",
3
- "version": "8.1.0",
3
+ "version": "8.3.0",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@11.5.3",
6
- "description": "The Sonor modules a Next.js site needs, from one package and one API key: SEO, analytics, forms, articles, chat, booking, AI visibility and agent tools. Selling online? Add @sonordev/commerce-kit.",
6
+ "description": "Sonor's Next.js foundation: SEO, analytics, forms, chat, booking, AI visibility and agent tools. Add @sonordev/press-kit for publications or @sonordev/commerce-kit for selling. Legacy article imports remain compatible in 8.x.",
7
7
  "license": "MIT",
8
8
  "repository": {
9
9
  "type": "git",
@@ -340,6 +340,10 @@
340
340
  "./landing/server": {
341
341
  "types": "./dist/landing/server.d.ts",
342
342
  "default": "./dist/landing/server.js"
343
+ },
344
+ "./shared": {
345
+ "types": "./dist/shared/index.d.ts",
346
+ "default": "./dist/shared/index.js"
343
347
  }
344
348
  },
345
349
  "files": [
@@ -352,7 +356,8 @@
352
356
  "CHANGELOG.md",
353
357
  "docs/MIGRATING-TO-7.md",
354
358
  "docs/MIGRATING-TO-8.md",
355
- "src/*/README.md"
359
+ "src/*/README.md",
360
+ "docs/MIGRATING-TO-PRESS-KIT.md"
356
361
  ],
357
362
  "scripts": {
358
363
  "build": "NODE_OPTIONS=--max-old-space-size=8192 tsup && pnpm build:types && node scripts/gen-agent-manifest.cjs",
@@ -373,12 +378,16 @@
373
378
  "typecheck:setup": "tsc --noEmit -p packages/sonor-setup/tsconfig.json",
374
379
  "version": "node scripts/sync-version.cjs && node scripts/gen-agent-manifest.cjs && git add src/shared/version.ts agent-manifest.json",
375
380
  "prepublishOnly": "vitest run && tsc --noEmit -p packages/commerce-kit/tsconfig.json && rm -rf dist && NODE_OPTIONS=--max-old-space-size=8192 tsup && pnpm build:types && node scripts/gen-agent-manifest.cjs && node scripts/verify-dts.cjs && node scripts/verify-no-local-paths.cjs dist agent-manifest.json && node scripts/prepublish-integration.cjs && node scripts/audit-as-consumer.cjs && node scripts/verify-server-entries.cjs . && node scripts/verify-docs.cjs",
376
- "build:types": "tsc -p tsconfig.build.json --emitDeclarationOnly --noEmit false && node scripts/alias-dts.cjs",
381
+ "build:types": "rm -rf .types-build && tsc -p tsconfig.build.json --emitDeclarationOnly --noEmit false && node scripts/relocate-compat-types.cjs && node scripts/alias-dts.cjs",
377
382
  "verify:docs": "node scripts/verify-docs.cjs",
378
383
  "build:commerce": "node scripts/check-kit-build-order.cjs && NODE_OPTIONS=--max-old-space-size=8192 tsup --config packages/commerce-kit/tsup.config.ts && tsc -p packages/commerce-kit/tsconfig.build.json && node packages/commerce-kit/scripts/verify-dist.cjs && node packages/commerce-kit/scripts/verify-against-site-kit.cjs",
379
384
  "test:commerce": "vitest run packages/commerce-kit && tsc --noEmit -p packages/commerce-kit/tsconfig.json",
380
385
  "typecheck:commerce": "tsc --noEmit -p packages/commerce-kit/tsconfig.json",
381
- "verify:docs:commerce": "node scripts/verify-docs.cjs packages/commerce-kit"
386
+ "verify:docs:commerce": "node scripts/verify-docs.cjs packages/commerce-kit",
387
+ "build:press": "node scripts/check-kit-build-order.cjs press && NODE_OPTIONS=--max-old-space-size=8192 tsup --config packages/press-kit/tsup.config.ts && tsc -p packages/press-kit/tsconfig.build.json && node packages/press-kit/scripts/verify-dist.cjs",
388
+ "test:press": "vitest run packages/press-kit && tsc --noEmit -p packages/press-kit/tsconfig.json",
389
+ "typecheck:press": "tsc --noEmit -p packages/press-kit/tsconfig.json",
390
+ "verify:docs:press": "node scripts/verify-docs.cjs packages/press-kit"
382
391
  },
383
392
  "peerDependencies": {
384
393
  "@vis.gl/react-google-maps": ">=1.0.0",
@@ -420,6 +429,7 @@
420
429
  "@babel/parser": "^8.0.4",
421
430
  "@babel/traverse": "^8.0.4",
422
431
  "@babel/types": "^8.0.4",
432
+ "@sonordev/contracts": "^2.7.0",
423
433
  "@types/babel__generator": "^7.27.0",
424
434
  "@types/babel__traverse": "^7.28.0",
425
435
  "@types/inquirer": "^9.0.10",