@sonordev/site-kit 8.8.0 → 8.9.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 (461) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +9 -0
  3. package/agent-manifest.json +8 -1
  4. package/dist/AnalyticsProvider-X7JJN3QL.js +19 -0
  5. package/dist/{ArticleViewTracker-PV2RD3P6.js → ArticleViewTracker-7Q6AMCKX.js} +11 -10
  6. package/dist/{BlocksPopup-NEEFV2L3.js → BlocksPopup-U5VIYEBA.js} +4 -5
  7. package/dist/ChatWidget-EAATOFCT.js +30 -0
  8. package/dist/{FileField-MJ3RCNFJ.js → FileField-YWMSK7RF.js} +1 -3
  9. package/dist/{FormSpotlight-NQPQFZS7.js → FormSpotlight-MAXDW3TK.js} +1 -1
  10. package/dist/{FormStage-4T5PJR5K.js → FormStage-VAHRVOIZ.js} +1 -1
  11. package/dist/ManagedForm-7IZT7ZII.js +29 -0
  12. package/dist/{ManagedNewsletterForm-TUYGN6O3.js → ManagedNewsletterForm-VVXZSEAL.js} +21 -11
  13. package/dist/{SignalCore-OW3YIH6M.js → SignalCore-HAN4O7QG.js} +90 -36
  14. package/dist/{SiteChat-XMKHBSEK.js → SiteChat-3JLCEL2N.js} +2 -2
  15. package/dist/{SiteDesignReporter-BRH7ORQS.js → SiteDesignReporter-6CCO645E.js} +5 -6
  16. package/dist/SitePopups-ZGHQNGGH.js +19 -0
  17. package/dist/SitemapSync-5LSYCBKS.js +7 -0
  18. package/dist/SitemapSync.d.ts +1 -1
  19. package/dist/_client/booking-widget.d.ts +1 -1
  20. package/dist/_client/booking-widget.js +6 -7
  21. package/dist/_client/reviewed-signal-experiment.d.ts +9 -0
  22. package/dist/_client/reviewed-signal-experiment.js +89 -0
  23. package/dist/_client/testimonial-section.d.ts +1 -1
  24. package/dist/admin-auth/index.d.ts +3 -3
  25. package/dist/affiliates/AffiliatesWidget.d.ts +1 -1
  26. package/dist/affiliates/api.d.ts +1 -1
  27. package/dist/affiliates/index.d.ts +6 -6
  28. package/dist/affiliates/index.js +1 -3
  29. package/dist/affiliates/useAffiliates.d.ts +1 -1
  30. package/dist/analytics/AnalyticsProvider.d.ts +1 -1
  31. package/dist/analytics/dispatch.d.ts +1 -1
  32. package/dist/analytics/index.d.ts +6 -6
  33. package/dist/analytics/index.js +22 -12
  34. package/dist/analytics/publication-cta.d.ts +1 -1
  35. package/dist/analytics/send-gate.d.ts +8 -4
  36. package/dist/articles/Article.d.ts +1 -1
  37. package/dist/articles/ArticleFAQ.d.ts +1 -1
  38. package/dist/articles/ArticleFaqSection.d.ts +1 -1
  39. package/dist/articles/ArticleList.d.ts +1 -1
  40. package/dist/articles/ArticleViewTracker.d.ts +1 -1
  41. package/dist/articles/AuthorCard.d.ts +1 -1
  42. package/dist/articles/AuthorPage.d.ts +1 -1
  43. package/dist/articles/ClusterLandingPage.d.ts +1 -1
  44. package/dist/articles/ClusterNavigation.d.ts +1 -1
  45. package/dist/articles/ManagedNewsletterForm.d.ts +2 -2
  46. package/dist/articles/NewsletterShell.d.ts +1 -1
  47. package/dist/articles/NewsletterWidget.d.ts +1 -1
  48. package/dist/articles/PublicationLayout.d.ts +1 -1
  49. package/dist/articles/PublicationSidebar.d.ts +1 -1
  50. package/dist/articles/RelatedPosts.d.ts +1 -1
  51. package/dist/articles/ServiceCallout.d.ts +1 -1
  52. package/dist/articles/TableOfContents.d.ts +1 -1
  53. package/dist/articles/article-photos.d.ts +1 -1
  54. package/dist/articles/article-styles.d.ts +1 -1
  55. package/dist/articles/article-tables.d.ts +1 -1
  56. package/dist/articles/artwork.d.ts +1 -1
  57. package/dist/articles/author-schema.d.ts +1 -1
  58. package/dist/articles/author-social.d.ts +1 -1
  59. package/dist/articles/excerpt.d.ts +1 -1
  60. package/dist/articles/index.d.ts +1 -1
  61. package/dist/articles/index.js +3 -3
  62. package/dist/articles/news-sitemap.d.ts +1 -1
  63. package/dist/articles/processArticleHtml.d.ts +1 -1
  64. package/dist/articles/public-reads.d.ts +1 -1
  65. package/dist/articles/reading-time.d.ts +1 -1
  66. package/dist/articles/routes.d.ts +1 -1
  67. package/dist/articles/server-core.d.ts +1 -1
  68. package/dist/articles/server-ui.d.ts +1 -1
  69. package/dist/articles/server-ui.js +6 -6
  70. package/dist/articles/server.d.ts +1 -1
  71. package/dist/articles/server.js +5 -5
  72. package/dist/articles/types.d.ts +1 -1
  73. package/dist/articles/widget-styles.d.ts +1 -1
  74. package/dist/brand/extract-brand-profile.d.ts +1 -1
  75. package/dist/chat/ChatWidget.d.ts +1 -1
  76. package/dist/chat/EchoUiActions.d.ts +1 -1
  77. package/dist/chat/SiteChat.d.ts +2 -2
  78. package/dist/chat/chat-messages.d.ts +1 -1
  79. package/dist/chat/index.d.ts +7 -7
  80. package/dist/chat/index.js +17 -9
  81. package/dist/chat/launcher-placement.d.ts +1 -1
  82. package/dist/{chunk-OPUY4RS6.js → chunk-2LBKIE2K.js} +2 -1
  83. package/dist/{chunk-XIDWNXZN.js → chunk-3W3MN6Z7.js} +2 -2
  84. package/dist/{chunk-UPFU63L4.js → chunk-55GFMOI6.js} +1 -1
  85. package/dist/chunk-5IVD6G77.js +37 -0
  86. package/dist/{chunk-URLTBVRX.js → chunk-6EDE7BOE.js} +3 -3
  87. package/dist/{chunk-DYROJGI2.js → chunk-6NLVHTYY.js} +1 -1
  88. package/dist/{chunk-ZQSCMYZO.js → chunk-7643MCD2.js} +6 -3
  89. package/dist/chunk-7IZUUXXO.js +1 -0
  90. package/dist/{chunk-C7TLGL3R.js → chunk-7VMA3KCN.js} +30 -4
  91. package/dist/{chunk-OWZWRP7Y.js → chunk-ADQ3VCKK.js} +2 -2
  92. package/dist/chunk-AG2RDHYZ.js +45 -0
  93. package/dist/chunk-AWLPFFPO.js +36 -0
  94. package/dist/{chunk-LNSNA3W4.js → chunk-C4XK472G.js} +4 -3
  95. package/dist/{chunk-TP32MRXV.js → chunk-CJ43K7RA.js} +2 -2
  96. package/dist/chunk-D4M5K6JN.js +25 -0
  97. package/dist/{chunk-F6WLHVMQ.js → chunk-DXE6SXWW.js} +1 -1
  98. package/dist/{chunk-YEX5RAEU.js → chunk-EBEM5BI5.js} +38 -27
  99. package/dist/chunk-F3RKFGRW.js +2 -0
  100. package/dist/chunk-FAY6MOLL.js +62 -0
  101. package/dist/chunk-FRY6PBT6.js +31 -0
  102. package/dist/{chunk-JYITKUUB.js → chunk-G5WUX7VE.js} +1 -1
  103. package/dist/chunk-HJD6KXKH.js +147 -0
  104. package/dist/{chunk-6BFQI3ZE.js → chunk-IO6BWRZ5.js} +2 -2
  105. package/dist/{chunk-THXELZTQ.js → chunk-ISMHDUBW.js} +1 -1
  106. package/dist/{chunk-SLFYTELD.js → chunk-J4LJE4NB.js} +1 -1
  107. package/dist/{chunk-LQJC5S2M.js → chunk-J6D3NEDE.js} +57 -0
  108. package/dist/chunk-JT7GHHMV.js +56 -0
  109. package/dist/{chunk-NFGAXWCN.js → chunk-KGIQYVQ2.js} +31 -13
  110. package/dist/chunk-KMNHNCVG.js +20 -0
  111. package/dist/chunk-KQKUXIUD.js +25 -0
  112. package/dist/{chunk-M5JIHQ42.js → chunk-L3S5WH4C.js} +2 -2
  113. package/dist/chunk-MDBXGN6W.js +13 -0
  114. package/dist/chunk-MOACHHOJ.js +20 -0
  115. package/dist/{chunk-6DXQHNZK.js → chunk-MP35JETP.js} +1 -1
  116. package/dist/chunk-NHDRA4Y5.js +6 -0
  117. package/dist/{chunk-AYQEIMGS.js → chunk-NZHECYLF.js} +103 -22
  118. package/dist/{chunk-EATJPSTS.js → chunk-O5LQUBBN.js} +1 -1
  119. package/dist/{chunk-Y6SHFILE.js → chunk-OEOSR5EG.js} +1 -1
  120. package/dist/{chunk-GQN4BGK6.js → chunk-OUD4RTBD.js} +1 -1
  121. package/dist/chunk-PMXQPO5Q.js +78 -0
  122. package/dist/chunk-PVY7X5UR.js +21 -0
  123. package/dist/{chunk-KG5IEV7I.js → chunk-QLJ2SC3T.js} +1 -1
  124. package/dist/{chunk-2WM4TNDF.js → chunk-QXAJPB6O.js} +1 -1
  125. package/dist/{chunk-2WDWQI7K.js → chunk-RYR6N4X4.js} +1 -1
  126. package/dist/{chunk-G7BRCSV6.js → chunk-S33CUULL.js} +3 -3
  127. package/dist/{chunk-YRQS7VAH.js → chunk-S63QY5XW.js} +2 -2
  128. package/dist/{chunk-GXWM5KNS.js → chunk-SO6RSRUP.js} +40 -45
  129. package/dist/{chunk-ODOV76VW.js → chunk-STIVFCWM.js} +1 -1
  130. package/dist/{chunk-SVHPILS3.js → chunk-T4A5J6SJ.js} +1 -1
  131. package/dist/chunk-TPHOIE4I.js +73 -0
  132. package/dist/{chunk-IWNJCRXW.js → chunk-UG53ZW7S.js} +125 -118
  133. package/dist/chunk-VXCUXHZO.js +9 -0
  134. package/dist/{chunk-SBPUFTMP.js → chunk-WHFWDK2H.js} +2 -2
  135. package/dist/chunk-WYNDBJG7.js +66 -0
  136. package/dist/{chunk-HN7GVGWC.js → chunk-XDH5B3PR.js} +3 -3
  137. package/dist/{chunk-PAYCK7FC.js → chunk-XJZLXUTG.js} +1 -1
  138. package/dist/{chunk-IDC5CVBR.js → chunk-YVEYO3OD.js} +1 -1
  139. package/dist/{chunk-PSS6M4CG.js → chunk-ZRSXCT4O.js} +2 -2
  140. package/dist/client/index.d.ts +8 -8
  141. package/dist/client/index.js +9 -8
  142. package/dist/config/index.d.ts +1 -1
  143. package/dist/contracts/broadcast-layouts.d.ts +8 -0
  144. package/dist/contracts/crm-disposition.d.ts +87 -0
  145. package/dist/contracts/decision-roles.d.ts +39 -0
  146. package/dist/contracts/entries.d.ts +1 -1
  147. package/dist/contracts/funnels.d.ts +85 -2
  148. package/dist/contracts/portfolio.d.ts +1 -1
  149. package/dist/contracts/publication-branding.d.ts +3 -3
  150. package/dist/contracts/resonance-constants.d.ts +4 -0
  151. package/dist/contracts/resonance.d.ts +8461 -0
  152. package/dist/contracts/signal-experiments.d.ts +219 -0
  153. package/dist/contracts/site-edit.d.ts +2 -2
  154. package/dist/contracts/sites.d.ts +1 -1
  155. package/dist/contracts/slots.d.ts +2 -2
  156. package/dist/contracts/wire-schema.d.ts +36 -0
  157. package/dist/cta-bar/CtaBar.d.ts +1 -1
  158. package/dist/cta-bar/client.js +3 -2
  159. package/dist/cta-bar/index.d.ts +4 -4
  160. package/dist/cta-bar/index.js +4 -3
  161. package/dist/fleet/FleetHeartbeat.d.ts +2 -2
  162. package/dist/fleet/contract.d.ts +1 -1
  163. package/dist/fleet/heartbeat.d.ts +2 -2
  164. package/dist/fleet/index.d.ts +6 -6
  165. package/dist/fleet/index.js +4 -5
  166. package/dist/forms/FileField.d.ts +1 -1
  167. package/dist/forms/FormClient.d.ts +2 -2
  168. package/dist/forms/FormEnhancer.d.ts +1 -1
  169. package/dist/forms/FormField.d.ts +1 -1
  170. package/dist/forms/FormSpotlight.d.ts +1 -1
  171. package/dist/forms/FormStage.d.ts +1 -1
  172. package/dist/forms/ManagedForm.d.ts +1 -1
  173. package/dist/forms/PrivateFileField.d.ts +1 -1
  174. package/dist/forms/ServerForm.d.ts +3 -3
  175. package/dist/forms/StaticForm.d.ts +1 -1
  176. package/dist/forms/contract.d.ts +1 -1
  177. package/dist/forms/experience-plan.d.ts +1 -1
  178. package/dist/forms/field-autocomplete.d.ts +1 -1
  179. package/dist/forms/field-controls.d.ts +1 -1
  180. package/dist/forms/field-rules.d.ts +1 -1
  181. package/dist/forms/form-dom-values.d.ts +1 -1
  182. package/dist/forms/index.d.ts +18 -18
  183. package/dist/forms/index.js +21 -11
  184. package/dist/forms/normalize-config.d.ts +1 -1
  185. package/dist/forms/server.d.ts +4 -4
  186. package/dist/forms/server.js +3 -3
  187. package/dist/forms/static.d.ts +2 -2
  188. package/dist/forms/submitForm.d.ts +2 -2
  189. package/dist/forms/tracking-session.d.ts +1 -1
  190. package/dist/forms/useForm.d.ts +2 -2
  191. package/dist/forms/webmcp.d.ts +2 -2
  192. package/dist/images/api.d.ts +1 -1
  193. package/dist/images/index.d.ts +6 -6
  194. package/dist/images/index.js +2 -4
  195. package/dist/images/server.d.ts +2 -2
  196. package/dist/index.d.ts +13 -13
  197. package/dist/index.js +1 -1
  198. package/dist/landing/contract.d.ts +1 -1
  199. package/dist/landing/contract.js +2 -1
  200. package/dist/landing/index.d.ts +3 -3
  201. package/dist/landing/index.js +3 -2
  202. package/dist/landing/managed-server.d.ts +2 -2
  203. package/dist/landing/managed.d.ts +10 -2
  204. package/dist/landing/server.d.ts +7 -7
  205. package/dist/landing/server.js +11 -6
  206. package/dist/layout/AiDiscoveryLinks.d.ts +1 -1
  207. package/dist/layout/SiteKitClientProviders.d.ts +1 -1
  208. package/dist/layout/SiteKitLayout.d.ts +2 -2
  209. package/dist/layout/client.d.ts +1 -1
  210. package/dist/layout/client.js +15 -11
  211. package/dist/layout/index.d.ts +5 -5
  212. package/dist/layout/index.js +17 -13
  213. package/dist/layout/types.d.ts +2 -2
  214. package/dist/llms/AEOComponents.d.ts +1 -1
  215. package/dist/llms/SpeakableSchema.d.ts +1 -1
  216. package/dist/llms/api.d.ts +1 -1
  217. package/dist/llms/client.d.ts +3 -3
  218. package/dist/llms/contract.d.ts +1 -1
  219. package/dist/llms/generateLLMsTxt.d.ts +1 -1
  220. package/dist/llms/handlers.d.ts +1 -1
  221. package/dist/llms/index.d.ts +21 -21
  222. package/dist/llms/index.js +5 -5
  223. package/dist/llms/merge.d.ts +1 -1
  224. package/dist/llms/sourcedFacts.d.ts +1 -1
  225. package/dist/llms/types.d.ts +5 -5
  226. package/dist/llms/writeLLMsTxt.d.ts +3 -3
  227. package/dist/maps/GoogleMap.d.ts +1 -1
  228. package/dist/maps/NeighborhoodMap.d.ts +1 -1
  229. package/dist/maps/api.d.ts +1 -1
  230. package/dist/maps/index.d.ts +5 -5
  231. package/dist/maps/index.js +1 -3
  232. package/dist/mcp/WebMcpTools.d.ts +1 -1
  233. package/dist/mcp/client.d.ts +2 -2
  234. package/dist/mcp/discovery.d.ts +2 -2
  235. package/dist/mcp/handlers.d.ts +4 -4
  236. package/dist/mcp/index.d.ts +12 -12
  237. package/dist/mcp/protocol.d.ts +1 -1
  238. package/dist/mcp/report.d.ts +1 -1
  239. package/dist/mcp/serverCard.d.ts +1 -1
  240. package/dist/mcp/sonor.d.ts +5 -5
  241. package/dist/mcp/sonor.js +10 -10
  242. package/dist/mcp/transport.d.ts +1 -1
  243. package/dist/motion/Parallax.d.ts +1 -1
  244. package/dist/motion/ScrollScene.d.ts +1 -1
  245. package/dist/motion/gsap.d.ts +2 -2
  246. package/dist/motion/index.d.ts +9 -9
  247. package/dist/motion/three.d.ts +1 -1
  248. package/dist/og/index.d.ts +5 -5
  249. package/dist/og/pages.d.ts +1 -1
  250. package/dist/og/route-fit.d.ts +17 -0
  251. package/dist/og/route.d.ts +8 -0
  252. package/dist/og/route.js +1 -1
  253. package/dist/og/template.d.ts +1 -1
  254. package/dist/portfolio/contract.d.ts +1 -1
  255. package/dist/press-kit/articles/Article.d.ts +2 -2
  256. package/dist/press-kit/articles/ArticleFaqSection.d.ts +1 -1
  257. package/dist/press-kit/articles/ArticleList.d.ts +2 -2
  258. package/dist/press-kit/articles/AuthorCard.d.ts +1 -1
  259. package/dist/press-kit/articles/AuthorPage.d.ts +1 -1
  260. package/dist/press-kit/articles/ClusterLandingPage.d.ts +2 -2
  261. package/dist/press-kit/articles/ClusterNavigation.d.ts +2 -2
  262. package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +2 -2
  263. package/dist/press-kit/articles/PublicationLayout.d.ts +2 -2
  264. package/dist/press-kit/articles/PublicationSidebar.d.ts +1 -1
  265. package/dist/press-kit/articles/RelatedPosts.d.ts +2 -2
  266. package/dist/press-kit/articles/TableOfContents.d.ts +1 -1
  267. package/dist/press-kit/articles/article-body.d.ts +1 -1
  268. package/dist/press-kit/articles/article-headings.d.ts +1 -1
  269. package/dist/press-kit/articles/article-photos.d.ts +1 -1
  270. package/dist/press-kit/articles/artwork.d.ts +2 -2
  271. package/dist/press-kit/articles/author-schema.d.ts +2 -2
  272. package/dist/press-kit/articles/author-social.d.ts +1 -1
  273. package/dist/press-kit/articles/index.d.ts +23 -23
  274. package/dist/press-kit/articles/news-sitemap.d.ts +2 -2
  275. package/dist/press-kit/articles/public-reads.d.ts +1 -1
  276. package/dist/press-kit/articles/publication-reads.d.ts +2 -2
  277. package/dist/press-kit/articles/reading-time.d.ts +1 -1
  278. package/dist/press-kit/articles/server-core.d.ts +20 -20
  279. package/dist/press-kit/articles/server-ui.d.ts +20 -20
  280. package/dist/press-kit/articles/types.d.ts +1 -1
  281. package/dist/proxy/index.d.ts +5 -5
  282. package/dist/proxy/index.js +1 -1
  283. package/dist/reputation/TestimonialSection.d.ts +1 -1
  284. package/dist/reputation/VisualReviewCard.d.ts +1 -1
  285. package/dist/reputation/api.d.ts +1 -1
  286. package/dist/reputation/index.d.ts +4 -4
  287. package/dist/reputation/server.d.ts +3 -3
  288. package/dist/resonance/ResonanceRuntime.d.ts +7 -0
  289. package/dist/resonance/bridge.d.ts +16 -0
  290. package/dist/resonance/consent-adapter.d.ts +26 -0
  291. package/dist/resonance/controller-registry.d.ts +14 -0
  292. package/dist/resonance/controller.d.ts +103 -0
  293. package/dist/resonance/form-context.d.ts +5 -0
  294. package/dist/resonance/index.d.ts +4 -0
  295. package/dist/resonance/index.js +9 -0
  296. package/dist/resonance/meta-pixel.d.ts +67 -0
  297. package/dist/resonance/providers.d.ts +32 -0
  298. package/dist/resonance/runtime-core.d.ts +5 -0
  299. package/dist/revalidate/index.d.ts +3 -3
  300. package/dist/revalidate/index.js +2 -2
  301. package/dist/robots/index.d.ts +3 -3
  302. package/dist/robots/indexnow.js +2 -2
  303. package/dist/runtime/index.d.ts +7 -7
  304. package/dist/runtime/index.js +4 -5
  305. package/dist/runtime-core-WT7KKLWQ.js +2213 -0
  306. package/dist/seo/ManagedFAQ.d.ts +1 -1
  307. package/dist/seo/ManagedInternalLinks.d.ts +1 -1
  308. package/dist/seo/ManagedSchema.d.ts +1 -1
  309. package/dist/seo/ManagedScripts.d.ts +1 -1
  310. package/dist/seo/client.d.ts +1 -1
  311. package/dist/seo/client.js +3 -5
  312. package/dist/seo/entry-indexnow.d.ts +1 -1
  313. package/dist/seo/entry-llms-client.d.ts +1 -1
  314. package/dist/seo/entry-llms-contract.d.ts +1 -1
  315. package/dist/seo/entry-llms.d.ts +1 -1
  316. package/dist/seo/entry-meta-contract.d.ts +1 -1
  317. package/dist/seo/entry-og-route.d.ts +1 -1
  318. package/dist/seo/entry-og.d.ts +1 -1
  319. package/dist/seo/entry-pages-contract.d.ts +1 -1
  320. package/dist/seo/entry-redirects.d.ts +1 -1
  321. package/dist/seo/entry-robots.d.ts +1 -1
  322. package/dist/seo/entry-sitemap.d.ts +1 -1
  323. package/dist/seo/getManagedMetadata.d.ts +1 -1
  324. package/dist/seo/index.d.ts +12 -12
  325. package/dist/seo/index.js +9 -11
  326. package/dist/seo/indexnow.d.ts +1 -1
  327. package/dist/seo/indexnow.js +2 -2
  328. package/dist/seo/llms/client.d.ts +1 -1
  329. package/dist/seo/llms/contract.d.ts +1 -1
  330. package/dist/seo/llms.d.ts +1 -1
  331. package/dist/seo/llms.js +5 -5
  332. package/dist/seo/meta/contract.d.ts +1 -1
  333. package/dist/seo/og/route.d.ts +1 -1
  334. package/dist/seo/og/route.js +1 -1
  335. package/dist/seo/og.d.ts +1 -1
  336. package/dist/seo/pages/contract.d.ts +1 -1
  337. package/dist/seo/redirects.d.ts +1 -1
  338. package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
  339. package/dist/seo/register-sitemap-cli.js +1 -1
  340. package/dist/seo/robots.d.ts +1 -1
  341. package/dist/seo/routing.d.ts +1 -1
  342. package/dist/seo/server.d.ts +4 -4
  343. package/dist/seo/server.js +3 -3
  344. package/dist/seo/sitemap.d.ts +1 -1
  345. package/dist/seo/sitemap.js +3 -3
  346. package/dist/seo/types.d.ts +1 -1
  347. package/dist/seo-meta/contract.d.ts +1 -1
  348. package/dist/seo-pages/contract.d.ts +1 -1
  349. package/dist/server/index.d.ts +5 -5
  350. package/dist/server/index.js +3 -3
  351. package/dist/server/mint-site-token.d.ts +1 -1
  352. package/dist/server/server-fetch.d.ts +8 -0
  353. package/dist/{server-api-XIKDWSNO.js → server-api-A34TABT2.js} +2 -2
  354. package/dist/shared/build-entries.d.ts +3 -1
  355. package/dist/shared/color.d.ts +1 -1
  356. package/dist/shared/fetchWithRetry.d.ts +6 -0
  357. package/dist/shared/frame.d.ts +1 -1
  358. package/dist/shared/identity-storage.d.ts +6 -4
  359. package/dist/shared/identity.d.ts +1 -3
  360. package/dist/shared/index.d.ts +5 -5
  361. package/dist/shared/index.js +1 -1
  362. package/dist/shared/measurement-analytics.d.ts +1 -0
  363. package/dist/shared/measurement-policy.d.ts +6 -0
  364. package/dist/shared/measurement-proof.d.ts +5 -0
  365. package/dist/shared/measurement-store.d.ts +34 -0
  366. package/dist/shared/measurement-writer.d.ts +6 -0
  367. package/dist/shared/publishCredential.d.ts +1 -1
  368. package/dist/shared/reporting-gate.d.ts +3 -1
  369. package/dist/shared/site-token-claims.d.ts +18 -0
  370. package/dist/shared/site-token-configuration.d.ts +9 -0
  371. package/dist/shared/site-token-refresh.d.ts +7 -0
  372. package/dist/shared/site-token-state.d.ts +23 -0
  373. package/dist/shared/siteToken.d.ts +5 -39
  374. package/dist/shared/sonor-auth-state.d.ts +3 -0
  375. package/dist/shared/sonor-beacon.d.ts +13 -0
  376. package/dist/shared/sonor-fetch-runtime.d.ts +2 -0
  377. package/dist/shared/sonor-fetch.d.ts +7 -0
  378. package/dist/shared/sonorFetch.d.ts +4 -49
  379. package/dist/shared/version.d.ts +1 -1
  380. package/dist/signal/ReviewedSignalExperiment.d.ts +9 -0
  381. package/dist/signal/SignalBridge.d.ts +4 -4
  382. package/dist/signal/SignalCore.d.ts +2 -1
  383. package/dist/signal/SignalExperiment.d.ts +13 -5
  384. package/dist/signal/index.d.ts +3 -3
  385. package/dist/signal/index.js +4 -73
  386. package/dist/signal/store.d.ts +10 -7
  387. package/dist/signal/types.d.ts +4 -0
  388. package/dist/sitemap/index.d.ts +5 -5
  389. package/dist/sitemap/index.js +3 -3
  390. package/dist/sites/contract.d.ts +1 -1
  391. package/dist/sites/normalize.d.ts +1 -1
  392. package/dist/slots/ManagedLink.d.ts +2 -2
  393. package/dist/slots/ManagedList.d.ts +2 -2
  394. package/dist/slots/ManagedRichText.d.ts +1 -1
  395. package/dist/slots/ManagedSlot.d.ts +1 -1
  396. package/dist/slots/contract.d.ts +1 -1
  397. package/dist/slots/edit/locate.d.ts +1 -1
  398. package/dist/slots/index.d.ts +14 -14
  399. package/dist/slots/index.js +2 -2
  400. package/dist/slots/server-api.d.ts +1 -1
  401. package/dist/{chunk-FLOJUMFR.js → sonor-fetch-runtime-3PFGUXMF.js} +27 -36
  402. package/dist/sync/AddToCalendar.d.ts +1 -1
  403. package/dist/sync/BookingWidget.d.ts +1 -1
  404. package/dist/sync/MeetingFormatStep.d.ts +1 -1
  405. package/dist/sync/api.d.ts +2 -2
  406. package/dist/sync/booking-flow.d.ts +1 -1
  407. package/dist/sync/index.d.ts +3 -3
  408. package/dist/sync/index.js +6 -7
  409. package/dist/types.d.ts +6 -6
  410. package/dist/website/BlocksPopup.d.ts +1 -1
  411. package/dist/website/PopupBlocks.d.ts +1 -1
  412. package/dist/website/SiteDesignReporter.d.ts +2 -2
  413. package/dist/website/SitePopups.d.ts +1 -1
  414. package/dist/website/contract.d.ts +1 -1
  415. package/dist/website/cta-bar.d.ts +1 -1
  416. package/dist/website/cta-bar.js +4 -3
  417. package/dist/website/design.d.ts +2 -2
  418. package/dist/website/images/server.d.ts +1 -1
  419. package/dist/website/images-server.d.ts +1 -1
  420. package/dist/website/images.d.ts +1 -1
  421. package/dist/website/images.js +2 -4
  422. package/dist/website/index.d.ts +4 -4
  423. package/dist/website/index.js +5 -6
  424. package/dist/website/landing/server.d.ts +1 -1
  425. package/dist/website/landing/server.js +11 -6
  426. package/dist/website/landing-server.d.ts +1 -1
  427. package/dist/website/landing.d.ts +1 -1
  428. package/dist/website/landing.js +3 -2
  429. package/dist/website/popup-rules.d.ts +2 -2
  430. package/dist/website/popup-types.d.ts +1 -1
  431. package/dist/website/popups.d.ts +4 -4
  432. package/dist/website/popups.js +14 -8
  433. package/dist/website/slots/contract.d.ts +1 -1
  434. package/dist/website/slots-contract.d.ts +1 -1
  435. package/dist/website/slots.d.ts +2 -2
  436. package/dist/website/slots.js +2 -2
  437. package/dist/{writeLLMsTxt-4HHUAOA6.js → writeLLMsTxt-JUACXQKP.js} +2 -2
  438. package/docs.json +5 -0
  439. package/package.json +8 -2
  440. package/src/analytics/README.md +21 -0
  441. package/src/cta-bar/README.md +4 -0
  442. package/src/forms/README.md +29 -0
  443. package/src/landing/README.md +14 -0
  444. package/src/layout/README.md +3 -0
  445. package/src/og/README.md +28 -0
  446. package/src/resonance/README.md +273 -0
  447. package/src/runtime/README.md +6 -1
  448. package/src/signal/README.md +21 -0
  449. package/src/website/README.md +14 -2
  450. package/dist/AnalyticsProvider-7SBJ27SI.js +0 -13
  451. package/dist/ChatWidget-V46UBDOM.js +0 -20
  452. package/dist/ManagedForm-DDDVMKLJ.js +0 -19
  453. package/dist/SitePopups-VU2C3Z6B.js +0 -13
  454. package/dist/SitemapSync-C4H3HF3L.js +0 -9
  455. package/dist/chunk-5ROTTMBL.js +0 -19
  456. package/dist/chunk-5TM3WPCI.js +0 -7
  457. package/dist/chunk-7HW4TZB5.js +0 -148
  458. package/dist/chunk-IPQKQEWI.js +0 -52
  459. package/dist/chunk-LCDVPAMR.js +0 -24
  460. package/dist/chunk-SHAUX2MQ.js +0 -163
  461. /package/dist/{chunk-3MJNBOUO.js → chunk-2QPVU63T.js} +0 -0
@@ -5,7 +5,7 @@
5
5
  * tags, newsletter signup, and custom widgets.
6
6
  */
7
7
  import React from 'react';
8
- import { type PublicationRoutingOptions } from './routes';
8
+ import { type PublicationRoutingOptions } from "./routes.js";
9
9
  export interface PublicationSidebarProps {
10
10
  /** Sonor API URL */
11
11
  apiUrl?: string;
@@ -4,8 +4,8 @@
4
4
  * Fetches and displays related articles via Sonor API
5
5
  */
6
6
  import React from 'react';
7
- import type { Article } from './types';
8
- import { type PublicationRoutingOptions } from './routes';
7
+ import type { Article } from "./types.js";
8
+ import { type PublicationRoutingOptions } from "./routes.js";
9
9
  interface RelatedPostsServerProps {
10
10
  apiUrl?: string;
11
11
  apiKey?: string;
@@ -2,5 +2,5 @@
2
2
  * @sonordev/press-kit/articles - Table of Contents Component
3
3
  */
4
4
  import React from 'react';
5
- import type { TableOfContentsProps } from './types';
5
+ import type { TableOfContentsProps } from "./types.js";
6
6
  export declare function TableOfContents({ content, className, maxDepth, }: TableOfContentsProps): React.JSX.Element | null;
@@ -1,4 +1,4 @@
1
- import type { Article } from './types';
1
+ import type { Article } from "./types.js";
2
2
  /**
3
3
  * Single source of truth for the HTML an article renders: the stock `Article`
4
4
  * and the RSS and Atom feeds all read the body through here, so a fix to the
@@ -11,7 +11,7 @@
11
11
  * (scripts/bundle-baseline.json). Keep code only the server needs, such as the
12
12
  * writer, out of it: a shared chunk ships every export either side uses.
13
13
  */
14
- import type { TocItem } from './types';
14
+ import type { TocItem } from "./types.js";
15
15
  /**
16
16
  * The value of attribute `name` in an open tag's attributes (the string
17
17
  * `openTagAttributes` returns), or null when the tag doesn't have it. Reads
@@ -1,4 +1,4 @@
1
- import type { ArticleEditorialPhoto } from './types';
1
+ import type { ArticleEditorialPhoto } from "./types.js";
2
2
  export interface ArticlePhotoImageAttributes {
3
3
  src: string;
4
4
  srcSet?: string;
@@ -1,5 +1,5 @@
1
1
  import type { CSSProperties } from 'react';
2
- import type { Article } from './types';
2
+ import type { Article } from "./types.js";
3
3
  export interface ArticleArtwork {
4
4
  src: string | undefined;
5
5
  alt: string;
@@ -11,6 +11,6 @@ export declare function resolveArticleArtwork(post: ArtworkSource, placement?: '
11
11
  /** Preserve generated text and graphics across every stock card surface. */
12
12
  export declare function articleArtworkImageStyle(artwork: ArticleArtwork): CSSProperties | undefined;
13
13
  /** Search/discovery artwork is the representative photograph; social cards stay available separately. */
14
- export declare function resolveRepresentativeImage(post: Partial<Pick<Article, 'title' | 'representative_image' | 'editorial_image' | 'editorial_image_alt' | 'editorial_image_width' | 'editorial_image_height' | 'featured_image' | 'featured_image_alt' | 'featured_image_width' | 'featured_image_height'>>): import('./types').ArticleImage | undefined;
14
+ export declare function resolveRepresentativeImage(post: Partial<Pick<Article, 'title' | 'representative_image' | 'editorial_image' | 'editorial_image_alt' | 'editorial_image_width' | 'editorial_image_height' | 'featured_image' | 'featured_image_alt' | 'featured_image_width' | 'featured_image_height'>>): import("./types.js").ArticleImage | undefined;
15
15
  export declare function articleImageSchema(post: Partial<Article>): object | string | undefined;
16
16
  export {};
@@ -25,8 +25,8 @@
25
25
  * so an article, its author page and the person's own site describe one
26
26
  * person, which is what a Knowledge Panel is built from.
27
27
  */
28
- import type { ArticleAuthor } from './types';
29
- import { type PublicationRoutingOptions } from './routes';
28
+ import type { ArticleAuthor } from "./types.js";
29
+ import { type PublicationRoutingOptions } from "./routes.js";
30
30
  export type AuthorSchemaOptions = PublicationRoutingOptions & {
31
31
  siteUrl?: string;
32
32
  siteName?: string;
@@ -1,4 +1,4 @@
1
- import type { ArticleAuthor } from './types';
1
+ import type { ArticleAuthor } from "./types.js";
2
2
  export interface AuthorSocialLink {
3
3
  label: string;
4
4
  href: string;
@@ -39,23 +39,23 @@
39
39
  * }
40
40
  * ```
41
41
  */
42
- export type { PublicationDefinition } from './publication-definition';
43
- export type { ArticleServerProps, ArticleStyles } from './Article';
44
- export type { ArticleListServerProps, ArticleListStyles } from './ArticleList';
45
- export type { PublicationSidebarProps } from './PublicationSidebar';
46
- export { NewsletterWidget } from './NewsletterWidget';
47
- export type { NewsletterWidgetProps } from './NewsletterWidget';
48
- export type { PublicationLayoutProps, PublicationPageProps, ArticlePageProps, CategoryPageProps } from './PublicationLayout';
49
- export { AuthorCard } from './AuthorCard';
50
- export { AuthorPage } from './AuthorPage';
51
- export { TableOfContents } from './TableOfContents';
52
- export { ServiceCallout, ServiceCallouts } from './ServiceCallout';
53
- export type { ServiceCalloutProps } from './ServiceCallout';
54
- export { ArticleFAQ } from './ArticleFAQ';
55
- export type { ArticleEditorialPhoto } from './types';
56
- export type { ArticleFAQProps, FaqItem } from './ArticleFAQ';
57
- export { ClusterNavigation } from './ClusterNavigation';
58
- export type { ClusterNavigationProps } from './ClusterNavigation';
42
+ export type { PublicationDefinition } from "./publication-definition.js";
43
+ export type { ArticleServerProps, ArticleStyles } from "./Article.js";
44
+ export type { ArticleListServerProps, ArticleListStyles } from "./ArticleList.js";
45
+ export type { PublicationSidebarProps } from "./PublicationSidebar.js";
46
+ export { NewsletterWidget } from "./NewsletterWidget.js";
47
+ export type { NewsletterWidgetProps } from "./NewsletterWidget.js";
48
+ export type { PublicationLayoutProps, PublicationPageProps, ArticlePageProps, CategoryPageProps } from "./PublicationLayout.js";
49
+ export { AuthorCard } from "./AuthorCard.js";
50
+ export { AuthorPage } from "./AuthorPage.js";
51
+ export { TableOfContents } from "./TableOfContents.js";
52
+ export { ServiceCallout, ServiceCallouts } from "./ServiceCallout.js";
53
+ export type { ServiceCalloutProps } from "./ServiceCallout.js";
54
+ export { ArticleFAQ } from "./ArticleFAQ.js";
55
+ export type { ArticleEditorialPhoto } from "./types.js";
56
+ export type { ArticleFAQProps, FaqItem } from "./ArticleFAQ.js";
57
+ export { ClusterNavigation } from "./ClusterNavigation.js";
58
+ export type { ClusterNavigationProps } from "./ClusterNavigation.js";
59
59
  /**
60
60
  * `ClusterLandingPage` is deliberately NOT re-exported here — import it from
61
61
  * `@sonordev/press-kit/articles/server-ui`.
@@ -72,9 +72,9 @@ export type { ClusterNavigationProps } from './ClusterNavigation';
72
72
  * module, so it keeps `import type { ClusterLandingPageProps }` working for
73
73
  * existing consumers.
74
74
  */
75
- export type { ClusterLandingPageProps } from './ClusterLandingPage';
76
- export * from './types';
77
- export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from './routes';
78
- export type { ArticleRoutePost, PublicationRoutingOptions } from './routes';
79
- export { resolveArticleArtwork } from './artwork';
80
- export { addExternalLinkTargets, linkClassificationHost, normalizeSiteHost, resolvePublicationSiteUrl, } from './processArticleHtml';
75
+ export type { ClusterLandingPageProps } from "./ClusterLandingPage.js";
76
+ export * from "./types.js";
77
+ export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from "./routes.js";
78
+ export type { ArticleRoutePost, PublicationRoutingOptions } from "./routes.js";
79
+ export { resolveArticleArtwork } from "./artwork.js";
80
+ export { addExternalLinkTargets, linkClassificationHost, normalizeSiteHost, resolvePublicationSiteUrl, } from "./processArticleHtml.js";
@@ -1,5 +1,5 @@
1
- import type { Article } from './types';
2
- import { type PublicationRoutingOptions, type ArticleRoutePost } from './routes';
1
+ import type { Article } from "./types.js";
2
+ import { type PublicationRoutingOptions, type ArticleRoutePost } from "./routes.js";
3
3
  /** Google only reads articles from the last two days in a News sitemap. */
4
4
  export declare const NEWS_SITEMAP_WINDOW_MS: number;
5
5
  /** Google's cap per News sitemap. */
@@ -1,4 +1,4 @@
1
- import type { ArticleCategory, Article } from './types';
1
+ import type { ArticleCategory, Article } from "./types.js";
2
2
  export interface ArticleReadConfig {
3
3
  apiUrl: string;
4
4
  apiKey: string;
@@ -1,6 +1,6 @@
1
1
  import 'server-only';
2
- import type { Article } from './types';
3
- import type { ArticleReadResult } from './public-reads';
2
+ import type { Article } from "./types.js";
3
+ import type { ArticleReadResult } from "./public-reads.js";
4
4
  export interface PublicationIssue {
5
5
  id: string;
6
6
  title: string;
@@ -1,4 +1,4 @@
1
- import type { Article } from './types';
1
+ import type { Article } from "./types.js";
2
2
  /**
3
3
  * Single source of truth for reading-time display.
4
4
  *
@@ -6,14 +6,14 @@
6
6
  * treats `getAllArticleSlugs` / `generateArticleStaticParams` as client code.
7
7
  */
8
8
  import type { Metadata } from 'next';
9
- import type { Article as ArticleRecord, ArticleAuthor, TopicCluster, ClusterNavigation } from './types';
10
- import { ArticleUnavailableError } from './public-reads';
11
- import { sanitizeExcerpt } from './excerpt';
12
- import { articleImageSchema, resolveRepresentativeImage } from './artwork';
13
- import { type PublicationRoutingOptions } from './routes';
14
- import { type NewsSitemapOptions } from './news-sitemap';
9
+ import type { Article as ArticleRecord, ArticleAuthor, TopicCluster, ClusterNavigation } from "./types.js";
10
+ import { ArticleUnavailableError } from "./public-reads.js";
11
+ import { sanitizeExcerpt } from "./excerpt.js";
12
+ import { articleImageSchema, resolveRepresentativeImage } from "./artwork.js";
13
+ import { type PublicationRoutingOptions } from "./routes.js";
14
+ import { type NewsSitemapOptions } from "./news-sitemap.js";
15
15
  export { sanitizeExcerpt, ArticleUnavailableError, resolveRepresentativeImage, articleImageSchema };
16
- export type { ArticleReadResult } from './public-reads';
16
+ export type { ArticleReadResult } from "./public-reads.js";
17
17
  export declare function getArticleResult(slug: string, options?: {
18
18
  site?: string;
19
19
  }): Promise<{
@@ -466,17 +466,17 @@ export declare function generateAuthorPageMetadata(author: ArticleAuthor, option
466
466
  * into the browser bundle. Re-exported so `@sonordev/press-kit/articles/server`
467
467
  * keeps its existing public API.
468
468
  */
469
- export { authorEntityId, generateArticleAuthorNode, generateAuthorPersonSchema, generateAuthorSchema, withArticleAuthorIdentity, type AuthorSchemaOptions, } from './author-schema';
469
+ export { authorEntityId, generateArticleAuthorNode, generateAuthorPersonSchema, generateAuthorSchema, withArticleAuthorIdentity, type AuthorSchemaOptions, } from "./author-schema.js";
470
470
  /** Sonor article document shape (alias of `Article` from `./types`) */
471
- export type { Article as ArticleRecord } from './types';
472
- export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from './routes';
473
- export type { ArticleRoutePost, PublicationRoutingOptions } from './routes';
474
- export { resolveArticleArtwork } from './artwork';
475
- export { wrapArticleTables, articleTableCss } from './article-tables';
476
- export { insertArticlePhotos, articlePhotoCss } from './article-photos';
477
- export type { ArticlePhotoOptions, ArticlePhotoImageAttributes } from './article-photos';
478
- export type { ArticleEditorialPhoto } from './types';
479
- export { FEED_DEFAULT_ITEMS, NEWS_SITEMAP_MAX_URLS, NEWS_SITEMAP_WINDOW_MS, buildNewsSitemapXml, cdata, recentNewsPosts } from './news-sitemap';
480
- export type { NewsSitemapOptions, NewsSitemapPost } from './news-sitemap';
481
- export { getPublicationIssues, getPublicationIssue, getArticlePreview, createPublicationPreviewHandler, PUBLICATION_PREVIEW_COOKIE, PUBLICATION_PREVIEW_HEADERS } from './publication-reads';
482
- export type { PublicationIssue, PublicationIssueList, ArticlePreview } from './publication-reads';
471
+ export type { Article as ArticleRecord } from "./types.js";
472
+ export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from "./routes.js";
473
+ export type { ArticleRoutePost, PublicationRoutingOptions } from "./routes.js";
474
+ export { resolveArticleArtwork } from "./artwork.js";
475
+ export { wrapArticleTables, articleTableCss } from "./article-tables.js";
476
+ export { insertArticlePhotos, articlePhotoCss } from "./article-photos.js";
477
+ export type { ArticlePhotoOptions, ArticlePhotoImageAttributes } from "./article-photos.js";
478
+ export type { ArticleEditorialPhoto } from "./types.js";
479
+ export { FEED_DEFAULT_ITEMS, NEWS_SITEMAP_MAX_URLS, NEWS_SITEMAP_WINDOW_MS, buildNewsSitemapXml, cdata, recentNewsPosts } from "./news-sitemap.js";
480
+ export type { NewsSitemapOptions, NewsSitemapPost } from "./news-sitemap.js";
481
+ export { getPublicationIssues, getPublicationIssue, getArticlePreview, createPublicationPreviewHandler, PUBLICATION_PREVIEW_COOKIE, PUBLICATION_PREVIEW_HEADERS } from "./publication-reads.js";
482
+ export type { PublicationIssue, PublicationIssueList, ArticlePreview } from "./publication-reads.js";
@@ -10,23 +10,23 @@ import 'server-only';
10
10
  * Use `@sonordev/press-kit/articles/server` for getArticle, getAllArticleSlugs,
11
11
  * metadata, RSS, etc.
12
12
  */
13
- export { Article } from './Article';
14
- export type { ArticleServerProps, ArticleStyles } from './Article';
15
- export { ArticleList } from './ArticleList';
16
- export type { ArticleListServerProps, ArticleListStyles } from './ArticleList';
17
- export { ClusterLandingPage } from './ClusterLandingPage';
18
- export type { ClusterLandingPageProps } from './ClusterLandingPage';
19
- export { ClusterNavigation } from './ClusterNavigation';
20
- export type { ClusterNavigationProps } from './ClusterNavigation';
21
- export { PublicationLayout, PublicationPage, ArticlePage, CategoryPage } from './PublicationLayout';
22
- export type { PublicationLayoutProps, PublicationPageProps, ArticlePageProps, CategoryPageProps, } from './PublicationLayout';
23
- export { PublicationSidebar } from './PublicationSidebar';
24
- export type { PublicationSidebarProps } from './PublicationSidebar';
25
- export { RelatedPosts } from './RelatedPosts';
26
- export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from './routes';
27
- export type { ArticleRoutePost, PublicationRoutingOptions } from './routes';
28
- export { resolveArticleArtwork } from './artwork';
29
- export { wrapArticleTables, articleTableCss } from './article-tables';
30
- export { insertArticlePhotos, articlePhotoCss } from './article-photos';
31
- export type { ArticlePhotoOptions, ArticlePhotoImageAttributes } from './article-photos';
32
- export type { ArticleEditorialPhoto } from './types';
13
+ export { Article } from "./Article.js";
14
+ export type { ArticleServerProps, ArticleStyles } from "./Article.js";
15
+ export { ArticleList } from "./ArticleList.js";
16
+ export type { ArticleListServerProps, ArticleListStyles } from "./ArticleList.js";
17
+ export { ClusterLandingPage } from "./ClusterLandingPage.js";
18
+ export type { ClusterLandingPageProps } from "./ClusterLandingPage.js";
19
+ export { ClusterNavigation } from "./ClusterNavigation.js";
20
+ export type { ClusterNavigationProps } from "./ClusterNavigation.js";
21
+ export { PublicationLayout, PublicationPage, ArticlePage, CategoryPage } from "./PublicationLayout.js";
22
+ export type { PublicationLayoutProps, PublicationPageProps, ArticlePageProps, CategoryPageProps, } from "./PublicationLayout.js";
23
+ export { PublicationSidebar } from "./PublicationSidebar.js";
24
+ export type { PublicationSidebarProps } from "./PublicationSidebar.js";
25
+ export { RelatedPosts } from "./RelatedPosts.js";
26
+ export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from "./routes.js";
27
+ export type { ArticleRoutePost, PublicationRoutingOptions } from "./routes.js";
28
+ export { resolveArticleArtwork } from "./artwork.js";
29
+ export { wrapArticleTables, articleTableCss } from "./article-tables.js";
30
+ export { insertArticlePhotos, articlePhotoCss } from "./article-photos.js";
31
+ export type { ArticlePhotoOptions, ArticlePhotoImageAttributes } from "./article-photos.js";
32
+ export type { ArticleEditorialPhoto } from "./types.js";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @sonordev/press-kit/articles - Type definitions
3
3
  */
4
- import type { PublicationRoutingOptions } from './routes';
4
+ import type { PublicationRoutingOptions } from "./routes.js";
5
5
  /** Public, approved photo snapshot. Planning briefs and private source metadata stay in Sonor. */
6
6
  export interface ArticleEditorialPhoto {
7
7
  url: string;
@@ -41,11 +41,11 @@
41
41
  * ```
42
42
  */
43
43
  import { NextRequest, NextResponse } from 'next/server';
44
- import { type RedirectConfig } from '../redirects';
45
- import { type SecurityHeadersConfig } from './securityHeaders';
46
- export type { SecurityHeadersConfig } from './securityHeaders';
47
- export { DEFAULT_FRAME_ANCESTORS } from './securityHeaders';
48
- export { resolveVisitorSegment, encodeSegment, decodeSegment, type VisitorSegment, type SegmentSource, } from './segment';
44
+ import { type RedirectConfig } from "../redirects/index.js";
45
+ import { type SecurityHeadersConfig } from "./securityHeaders.js";
46
+ export type { SecurityHeadersConfig } from "./securityHeaders.js";
47
+ export { DEFAULT_FRAME_ANCESTORS } from "./securityHeaders.js";
48
+ export { resolveVisitorSegment, encodeSegment, decodeSegment, type VisitorSegment, type SegmentSource, } from "./segment.js";
49
49
  export interface IdentityConfig {
50
50
  /**
51
51
  * Also resolve + persist a coarse visitor segment (new-vs-returning + source
@@ -5,8 +5,8 @@ import { handleManagedRedirects } from '../chunk-HXJ54KAM.js';
5
5
  import '../chunk-Z22QVHT4.js';
6
6
  import '../chunk-MJP63SSS.js';
7
7
  import '../chunk-FESKKJAS.js';
8
- import '../chunk-A4CC4ZG3.js';
9
8
  import { uuid } from '../chunk-GJWI74ZZ.js';
9
+ import '../chunk-A4CC4ZG3.js';
10
10
  import '../chunk-PKBMQBKP.js';
11
11
  import { NextResponse } from 'next/server.js';
12
12
 
@@ -7,5 +7,5 @@
7
7
  * Minimal styling - let site CSS control appearance
8
8
  */
9
9
  import React from 'react';
10
- import type { TestimonialSectionProps } from './types';
10
+ import type { TestimonialSectionProps } from "./types.js";
11
11
  export declare function TestimonialSection({ title, subtitle, autoplay, autoplayInterval, showRating, showPhoto, maxReviews, featuredOnly, service, className, }: TestimonialSectionProps): React.JSX.Element | null;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { VisualReviewCardProps, VisualReviewGalleryProps } from './types';
2
+ import type { VisualReviewCardProps, VisualReviewGalleryProps } from "./types.js";
3
3
  /** Static, server-renderable photo and review card. Review quotes are rendered verbatim. */
4
4
  export declare function VisualReviewCard(props: VisualReviewCardProps): React.JSX.Element;
5
5
  /** Responsive server-renderable gallery; reviews without photos keep their quote card. */
@@ -5,7 +5,7 @@
5
5
  * Uses API key authentication (x-api-key header) - project is resolved server-side.
6
6
  * Includes retry with backoff for rate limiting (429).
7
7
  */
8
- import type { Review, ReviewStats } from './types';
8
+ import type { Review, ReviewStats } from "./types.js";
9
9
  interface FetchReviewsOptions {
10
10
  service?: string;
11
11
  limit?: number;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Display client reviews and testimonials on your website
5
5
  */
6
- export { TestimonialSection } from './TestimonialSection';
7
- export { VisualReviewCard, VisualReviewGallery } from './VisualReviewCard';
8
- export { fetchReviews, fetchReviewStats } from './api';
9
- export type { Review, ReviewPhoto, ReviewStats, TestimonialSectionProps, VisualReviewCardProps, VisualReviewGalleryProps } from './types';
6
+ export { TestimonialSection } from "./TestimonialSection.js";
7
+ export { VisualReviewCard, VisualReviewGallery } from "./VisualReviewCard.js";
8
+ export { fetchReviews, fetchReviewStats } from "./api.js";
9
+ export type { Review, ReviewPhoto, ReviewStats, TestimonialSectionProps, VisualReviewCardProps, VisualReviewGalleryProps } from "./types.js";
@@ -5,6 +5,6 @@
5
5
  * Importing from `./reputation` (which includes TestimonialSection) pulls in a
6
6
  * client-tainted bundle that can't be called from RSC.
7
7
  */
8
- export { fetchReviews, fetchReviewStats } from './api';
9
- export { VisualReviewCard, VisualReviewGallery } from './VisualReviewCard';
10
- export type { Review, ReviewPhoto, ReviewStats, TestimonialSectionProps, VisualReviewCardProps, VisualReviewGalleryProps } from './types';
8
+ export { fetchReviews, fetchReviewStats } from "./api.js";
9
+ export { VisualReviewCard, VisualReviewGallery } from "./VisualReviewCard.js";
10
+ export type { Review, ReviewPhoto, ReviewStats, TestimonialSectionProps, VisualReviewCardProps, VisualReviewGalleryProps } from "./types.js";
@@ -0,0 +1,7 @@
1
+ export interface ResonanceRuntimeProps {
2
+ site: string;
3
+ apiUrl: string;
4
+ apiKey: string;
5
+ }
6
+ /** Childless shell: policy is primed before identity effects; controller code loads after hydration. */
7
+ export declare function ResonanceRuntime({ site, apiUrl, apiKey }: ResonanceRuntimeProps): null;
@@ -0,0 +1,16 @@
1
+ import type { ResonanceExperimentExposure } from "../contracts/resonance.js";
2
+ import type { ResonanceController } from "./controller.js";
3
+ export { currentResonanceFormContext } from "./form-context.js";
4
+ /** Capability observation only; never returns the subject proof or grants authority. */
5
+ export declare function getResonanceMeasurementStatus(): {
6
+ state: "blocked" | "legacy_unconfigured" | "pending" | "ready" | "unknown" | "waiting_for_consent";
7
+ reason: string | null;
8
+ policy: "configured" | "legacy_unconfigured" | "resolving";
9
+ analyticsPermitted: boolean;
10
+ advertisingPermitted: boolean;
11
+ providerBlockers: string[];
12
+ };
13
+ export declare function setProviderBlockers(next: readonly string[]): void;
14
+ export declare function registerResonanceController(next: ResonanceController): (() => void) | null;
15
+ /** Actual rendered assignment only. Accepted forms are recorded by the server. */
16
+ export declare function recordResonanceExposure(exposure: ResonanceExperimentExposure): void;
@@ -0,0 +1,26 @@
1
+ import { type MeasurementPurpose, type PurposeChoices } from "../shared/measurement-store.js";
2
+ /** The site's maintained CMP remains the owner. Resonance never creates a competing banner/state. */
3
+ export interface ConsentObservation {
4
+ valid: boolean;
5
+ choices: PurposeChoices;
6
+ observedAt: string;
7
+ /** Actual current CMP evidence, not an inference from a visit or newsletter opt-in. */
8
+ source: 'cmp' | 'user_preference';
9
+ }
10
+ export interface ConsentReadContext {
11
+ projectId: string | null;
12
+ site: string;
13
+ configRevision: string | null;
14
+ policyRevision: string | null;
15
+ requiredPurposes: readonly MeasurementPurpose[];
16
+ }
17
+ export interface ResonanceConsentAdapter {
18
+ requiredPurposes: readonly MeasurementPurpose[];
19
+ /** Return valid:false if existing CMP evidence is invalid for this policy. */
20
+ read(context?: ConsentReadContext): ConsentObservation | Promise<ConsentObservation>;
21
+ subscribe(onChange: () => void): () => void;
22
+ }
23
+ export declare const getConsentAdapter: () => ResonanceConsentAdapter | null;
24
+ export declare const subscribeConsentAdapter: (listener: () => void) => (() => void);
25
+ export declare function registerResonanceConsentAdapter(next: ResonanceConsentAdapter): () => void;
26
+ export declare const unknownConsentObservation: () => ConsentObservation;
@@ -0,0 +1,14 @@
1
+ /** One existing page-wide Resonance controller registry; no permission or proof owner here. */
2
+ import type { ResonanceExperimentExposure } from "../contracts/resonance.js";
3
+ import type { ResonanceController, RenderedResonanceContext } from "./controller.js";
4
+ interface BridgeStore {
5
+ controller: ResonanceController | null;
6
+ blockers: readonly string[];
7
+ registrationConflict: boolean;
8
+ }
9
+ export declare const resonanceControllerState: BridgeStore;
10
+ /** Internal rendered seam: mint the exposure ID in the actual registered controller, once. */
11
+ export declare function recordRenderedResonanceExposure(exposure: Omit<ResonanceExperimentExposure, 'exposureId'>, context?: RenderedResonanceContext): boolean;
12
+ /** Release only this actual effect's registration; a newer render is untouched. */
13
+ export declare function releaseRenderedResonanceExposure(exposure: Omit<ResonanceExperimentExposure, 'exposureId'>): void;
14
+ export {};
@@ -0,0 +1,103 @@
1
+ import { type ResonanceMeasurementOccurrence, type ResonanceExperimentExposure } from "../contracts/resonance.js";
2
+ import type { ConsentObservation, ResonanceConsentAdapter } from "./consent-adapter.js";
3
+ export interface ResonanceTransport {
4
+ /** Existing sonorFetch adapter; the controller never logs proof or input. */
5
+ request(path: string, init: RequestInit, stillAllowed?: () => boolean): Promise<{
6
+ status: number;
7
+ body: unknown;
8
+ }>;
9
+ }
10
+ export interface ResonanceControllerOptions {
11
+ site: string;
12
+ transport: ResonanceTransport;
13
+ now?: () => number;
14
+ /** Lazy current-location read, called only for a new consented page view. No query history. */
15
+ readClickIdentifiers?: (pathname: string) => unknown;
16
+ /** Actual current first-party cookies only; called after proof and an owned page mapping. */
17
+ readMetaCookieObservation?: (pathname: string) => unknown;
18
+ /** Test seam and lifecycle notification; no provider dispatch happens inside consent capture. */
19
+ onState?: () => void;
20
+ onOccurrence?: (event: ResonanceMeasurementOccurrence) => void;
21
+ }
22
+ /** Existing native page-version identity is a local render fence, never a wire token. */
23
+ export interface RenderedResonanceContext {
24
+ pagePath: string;
25
+ pageVersionId: string;
26
+ }
27
+ /** One scope's consent/occurrence state machine. No storage, no pre-choice event backlog. */
28
+ export declare class ResonanceController {
29
+ private readonly options;
30
+ private config;
31
+ private proof;
32
+ private adapter;
33
+ private unsubscribe;
34
+ private configEpoch;
35
+ private readEpoch;
36
+ private deliveryEpoch;
37
+ private stopped;
38
+ private busy;
39
+ private latest;
40
+ private latestEpoch;
41
+ private completedEpoch;
42
+ private path;
43
+ private sourceMarker;
44
+ private navigationSequence;
45
+ private recordedNavigationKey;
46
+ private navigation;
47
+ private renderedFrame;
48
+ private acceptedExposure;
49
+ private retry;
50
+ private expiryTimer;
51
+ private configExpiryTimer;
52
+ private refreshTimer;
53
+ private refreshing;
54
+ private renewing;
55
+ private renewalTimer;
56
+ readonly status: {
57
+ state: 'unknown' | 'legacy_unconfigured' | 'waiting_for_consent' | 'pending' | 'ready' | 'blocked';
58
+ reason: string | null;
59
+ };
60
+ constructor(options: ResonanceControllerOptions);
61
+ private now;
62
+ private changed;
63
+ /** One current-navigation slot, not a history cache. A true identity change
64
+ * retires its receipt and retry work; late deliveries cannot rejoin it. */
65
+ private discardRenderedFrame;
66
+ private invalidate;
67
+ private timerDelay;
68
+ private timers;
69
+ private scheduleConfigRefresh;
70
+ /** A safe public read refreshes policy freshness without re-prompting or changing consent. */
71
+ refreshConfig(): Promise<void>;
72
+ start(): Promise<void>;
73
+ setAdapter(adapter: ResonanceConsentAdapter | null): void;
74
+ private consentContext;
75
+ private configPolicy;
76
+ private readConsent;
77
+ /** Maintained CMP observations may resume valid consent; this never prompts or infers a grant. */
78
+ observe(observation: ConsentObservation): void;
79
+ private captureLatest;
80
+ private verifyProofScope;
81
+ renew(): Promise<void>;
82
+ /** Connectivity recovery renews existing proof; it never replays a failed grant. */
83
+ recover(): Promise<void>;
84
+ navigate(path: string, sourceMarker?: string | null): void;
85
+ private recordCurrentNavigation;
86
+ exposure(experiment: ResonanceExperimentExposure): Promise<void>;
87
+ /** Internal rendered occurrence seam; retry queues retain the resulting immutable event and ID. */
88
+ renderedExposure(experiment: Omit<ResonanceExperimentExposure, 'exposureId'>, context?: RenderedResonanceContext): Promise<void> | null;
89
+ /** Close form attachment immediately, but retain this single bounded frame
90
+ * while the current assignment is revalidated. An exact native-identity rejoin
91
+ * keeps its original occurrence/receipt even after an asynchronous fallback.
92
+ * Navigation, replacement, consent/scope invalidation and stop retire it. */
93
+ releaseRenderedExposure(experiment: Omit<ResonanceExperimentExposure, 'exposureId'>): void;
94
+ private exposurePermitted;
95
+ private submitExposure;
96
+ private emit;
97
+ private deliver;
98
+ /** Explicit network recovery only; identical occurrence ID, never old preference/scope epochs. */
99
+ retryPending(): void;
100
+ /** Optional server receipt reference, never a claim that a form converted. */
101
+ formExposureId(): string | null;
102
+ stop(): void;
103
+ }
@@ -0,0 +1,5 @@
1
+ /** Actual form-submit seam only. Call per attempt; never attach this to unrelated requests. */
2
+ export declare function currentResonanceFormContext(projectId: string, site: string): {
3
+ subjectProof: string;
4
+ exposureId: string | null;
5
+ } | null;
@@ -0,0 +1,4 @@
1
+ export { ResonanceRuntime, type ResonanceRuntimeProps } from "./ResonanceRuntime.js";
2
+ export { registerResonanceConsentAdapter, type ResonanceConsentAdapter, type ConsentObservation, type ConsentReadContext } from "./consent-adapter.js";
3
+ export { recordResonanceExposure, getResonanceMeasurementStatus } from "./bridge.js";
4
+ export type { MeasurementPurpose, PurposeChoice, PurposeChoices } from "../shared/measurement-policy.js";
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ export { getResonanceMeasurementStatus, recordResonanceExposure, registerResonanceConsentAdapter } from '../chunk-WYNDBJG7.js';
3
+ export { ResonanceRuntime } from '../chunk-AWLPFFPO.js';
4
+ import '../chunk-MDBXGN6W.js';
5
+ import '../chunk-YC7ELZS3.js';
6
+ import '../chunk-KMNHNCVG.js';
7
+ import '../chunk-MOACHHOJ.js';
8
+ import '../chunk-FRY6PBT6.js';
9
+ import '../chunk-PKBMQBKP.js';