@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
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { SignalExperimentProps } from "../signal/SignalExperiment.js";
3
+ type ReviewedProps = SignalExperimentProps & {
4
+ reviewedContext: NonNullable<SignalExperimentProps['reviewedContext']>;
5
+ };
6
+ /** Private reviewed-copy boundary. Existing Signal owns assignment; the existing
7
+ * controller owns occurrences, retries and accepted form receipt references. */
8
+ export default function ReviewedSignalExperiment({ experimentId, variants, fallback, trackImpression, reviewedContext, children }: ReviewedProps): React.JSX.Element;
9
+ export {};
@@ -0,0 +1,89 @@
1
+ 'use client';
2
+ import { experimentMeasurementPermitted } from '../chunk-KMNHNCVG.js';
3
+ import { useSignalExperiment, useSignal } from '../chunk-HJD6KXKH.js';
4
+ import { releaseRenderedResonanceExposure, recordRenderedResonanceExposure } from '../chunk-MOACHHOJ.js';
5
+ import { subscribeMeasurementPolicy, measurementPolicySnapshot, serverMeasurementPolicySnapshot, analyticsPurposePermitted } from '../chunk-FRY6PBT6.js';
6
+ import '../chunk-PKBMQBKP.js';
7
+ import { useRef, useSyncExternalStore, useEffect, useLayoutEffect } from 'react';
8
+ import { usePathname } from 'next/navigation';
9
+ import { jsx, Fragment } from 'react/jsx-runtime';
10
+
11
+ var useRenderCleanup = typeof window === "undefined" ? useEffect : useLayoutEffect;
12
+ function ReviewedSignalExperiment({ experimentId, variants, fallback, trackImpression = true, reviewedContext, children }) {
13
+ const { assignment, variant } = useSignalExperiment(experimentId);
14
+ const { config: signalConfig, loading, error } = useSignal();
15
+ const pathname = usePathname();
16
+ const currentRender = useRef(null);
17
+ const policy = useSyncExternalStore(subscribeMeasurementPolicy, measurementPolicySnapshot, serverMeasurementPolicySnapshot);
18
+ const reviewedAssignment = signalConfig?.enabled === true && !loading && !error && policy.policy === "configured" && analyticsPurposePermitted() && experimentMeasurementPermitted() && policy.config?.site === reviewedContext.site && pathname === reviewedContext.pagePath && assignment?.experiment_id === experimentId && assignment.site === reviewedContext.site && !!assignment.assignment_id && assignment.expires > Date.now() && assignment.experiment_revision === reviewedContext.experimentRevision && !!variant && Object.prototype.hasOwnProperty.call(variants, variant) && variants[variant] !== void 0;
19
+ useRenderCleanup(() => () => {
20
+ if (currentRender.current) releaseRenderedResonanceExposure(currentRender.current);
21
+ currentRender.current = null;
22
+ }, [
23
+ reviewedContext.site,
24
+ reviewedContext.pagePath,
25
+ reviewedContext.pageVersionId,
26
+ reviewedContext.experimentRevision,
27
+ reviewedContext.controlVariantKey,
28
+ reviewedAssignment,
29
+ assignment?.assignment_id,
30
+ variant,
31
+ pathname,
32
+ trackImpression,
33
+ policy.config?.configRevision,
34
+ policy.config?.policyRevision,
35
+ policy.proof?.currentConsentRevision
36
+ ]);
37
+ useEffect(() => {
38
+ if (!trackImpression || !reviewedAssignment || children || !variant || !assignment || !policy.config) return;
39
+ const exposure = {
40
+ projectId: policy.config.projectId,
41
+ site: policy.config.site,
42
+ experimentId,
43
+ experimentRevision: assignment.experiment_revision,
44
+ assignmentId: assignment.assignment_id,
45
+ variantKey: variant,
46
+ occurredAt: (/* @__PURE__ */ new Date()).toISOString()
47
+ };
48
+ let closed = false, recorded = false;
49
+ queueMicrotask(() => {
50
+ if (!closed) {
51
+ recorded = recordRenderedResonanceExposure(exposure, { pagePath: reviewedContext.pagePath, pageVersionId: reviewedContext.pageVersionId });
52
+ if (recorded) currentRender.current = exposure;
53
+ }
54
+ });
55
+ return () => {
56
+ closed = true;
57
+ if (recorded) releaseRenderedResonanceExposure(exposure);
58
+ if (currentRender.current === exposure) currentRender.current = null;
59
+ };
60
+ }, [
61
+ experimentId,
62
+ variant,
63
+ assignment?.assignment_id,
64
+ pathname,
65
+ trackImpression,
66
+ !!children,
67
+ reviewedContext.site,
68
+ reviewedContext.pagePath,
69
+ reviewedContext.pageVersionId,
70
+ reviewedContext.experimentRevision,
71
+ reviewedContext.controlVariantKey,
72
+ reviewedAssignment,
73
+ policy.config?.projectId,
74
+ policy.config?.site,
75
+ policy.config?.configRevision,
76
+ policy.config?.policyRevision,
77
+ policy.proof?.currentConsentRevision
78
+ ]);
79
+ if (children) return /* @__PURE__ */ jsx(Fragment, { children: children({
80
+ variant: reviewedAssignment ? variant : reviewedContext.controlVariantKey,
81
+ isControl: !reviewedAssignment || variant === reviewedContext.controlVariantKey
82
+ }) });
83
+ const key = reviewedAssignment ? variant : reviewedContext.controlVariantKey;
84
+ const content = Object.prototype.hasOwnProperty.call(variants, key) ? variants[key] : void 0;
85
+ if (content !== void 0) return /* @__PURE__ */ jsx(Fragment, { children: content });
86
+ return /* @__PURE__ */ jsx(Fragment, { children: fallback || null });
87
+ }
88
+
89
+ export { ReviewedSignalExperiment as default };
@@ -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 '../reputation/types';
10
+ import type { TestimonialSectionProps } from "../reputation/types.js";
11
11
  export declare function TestimonialSection({ title, subtitle, autoplay, autoplayInterval, showRating, showPhoto, maxReviews, featuredOnly, service, className, }: TestimonialSectionProps): React.JSX.Element | null;
@@ -40,9 +40,9 @@
40
40
  * chars; rotating it signs everyone out), NEXT_PUBLIC_SITE_URL.
41
41
  */
42
42
  import { NextResponse, type NextRequest } from 'next/server';
43
- import { type SonorSession } from './session';
44
- export type { SonorSession } from './session';
45
- export { signSession, verifySessionToken } from './session';
43
+ import { type SonorSession } from "./session.js";
44
+ export type { SonorSession } from "./session.js";
45
+ export { signSession, verifySessionToken } from "./session.js";
46
46
  export interface SonorSsoConfig {
47
47
  /**
48
48
  * The gated area(s). Every path equal to or under one of these needs a
@@ -5,7 +5,7 @@
5
5
  * Client sites can wrap this or use it directly with their own styling.
6
6
  */
7
7
  import React from 'react';
8
- import type { AffiliateWithOffers } from './types';
8
+ import type { AffiliateWithOffers } from "./types.js";
9
9
  export interface AffiliateCardProps {
10
10
  affiliate: AffiliateWithOffers;
11
11
  className?: string;
@@ -4,7 +4,7 @@
4
4
  * API functions for fetching affiliate data for client sites.
5
5
  * All data goes through Sonor API with API key auth - never Supabase directly.
6
6
  */
7
- import type { AffiliateWithOffers, FetchAffiliatesOptions } from './types';
7
+ import type { AffiliateWithOffers, FetchAffiliatesOptions } from "./types.js";
8
8
  /**
9
9
  * Fetch all active affiliates for the project
10
10
  *
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Exports all affiliate tracking components and utilities.
5
5
  */
6
- export type { Affiliate, AffiliateOffer, AffiliateWithOffers, FetchAffiliatesOptions } from './types';
7
- export { fetchAffiliates, getTrackingUrl } from './api';
8
- export { useAffiliates } from './useAffiliates';
9
- export type { UseAffiliatesResult } from './useAffiliates';
10
- export { AffiliatesWidget, AffiliateCard } from './AffiliatesWidget';
11
- export type { AffiliatesWidgetProps, AffiliateCardProps } from './AffiliatesWidget';
6
+ export type { Affiliate, AffiliateOffer, AffiliateWithOffers, FetchAffiliatesOptions } from "./types.js";
7
+ export { fetchAffiliates, getTrackingUrl } from "./api.js";
8
+ export { useAffiliates } from "./useAffiliates.js";
9
+ export type { UseAffiliatesResult } from "./useAffiliates.js";
10
+ export { AffiliatesWidget, AffiliateCard } from "./AffiliatesWidget.js";
11
+ export type { AffiliatesWidgetProps, AffiliateCardProps } from "./AffiliatesWidget.js";
@@ -1,8 +1,6 @@
1
1
  'use client';
2
- import { sonorFetch } from '../chunk-FLOJUMFR.js';
3
- import '../chunk-7HW4TZB5.js';
2
+ import { sonorFetch } from '../chunk-VXCUXHZO.js';
4
3
  import { getClientApiConfig } from '../chunk-W7OPEMGJ.js';
5
- import '../chunk-F6WLHVMQ.js';
6
4
  import '../chunk-PKBMQBKP.js';
7
5
  import { useState, useEffect } from 'react';
8
6
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * React hook for fetching and displaying affiliates on client sites.
5
5
  */
6
- import type { AffiliateWithOffers } from './types';
6
+ import type { AffiliateWithOffers } from "./types.js";
7
7
  export interface UseAffiliatesResult {
8
8
  affiliates: AffiliateWithOffers[];
9
9
  isLoading: boolean;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { AnalyticsContextValue, TrackEventOptions, TrackConversionOptions } from './types';
2
+ import type { AnalyticsContextValue, TrackEventOptions, TrackConversionOptions } from "./types.js";
3
3
  interface AnalyticsProviderProps {
4
4
  /**
5
5
  * Optional. AnalyticsProvider is normally mounted as a CHILDLESS sibling of
@@ -13,7 +13,7 @@
13
13
  * below queue until it does. If the provider never mounts, calls no-op after
14
14
  * the queue cap — tracking must never break a page.
15
15
  */
16
- import type { TrackEventOptions, TrackConversionOptions } from './types';
16
+ import type { TrackEventOptions, TrackConversionOptions } from "./types.js";
17
17
  interface AnalyticsDispatcher {
18
18
  trackEvent: (options: TrackEventOptions) => void;
19
19
  trackConversion: (options: TrackConversionOptions) => void;
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Analytics tracking for client sites - page views, events, conversions, web vitals
5
5
  */
6
- export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './AnalyticsProvider';
7
- export { trackEvent, trackConversion } from './dispatch';
8
- export { WebVitals } from './WebVitals';
9
- export { isCrossOriginFrame, isFramed, isTopFrameSameOrigin } from './send-gate';
10
- export { useContactTracking, ContactTracking } from './useContactTracking';
11
- export * from './types';
6
+ export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from "./AnalyticsProvider.js";
7
+ export { trackEvent, trackConversion } from "./dispatch.js";
8
+ export { WebVitals } from "./WebVitals.js";
9
+ export { isCrossOriginFrame, isFramed, isTopFrameSameOrigin } from "./send-gate.js";
10
+ export { useContactTracking, ContactTracking } from "./useContactTracking.js";
11
+ export * from "./types.js";
@@ -1,23 +1,31 @@
1
1
  'use client';
2
- export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent } from '../chunk-GXWM5KNS.js';
3
- import { trackConversion } from '../chunk-LCDVPAMR.js';
4
- export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
5
- import '../chunk-IPQKQEWI.js';
2
+ export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent } from '../chunk-SO6RSRUP.js';
3
+ import { trackConversion } from '../chunk-AG2RDHYZ.js';
4
+ export { trackConversion, trackEvent } from '../chunk-AG2RDHYZ.js';
5
+ import '../chunk-JT7GHHMV.js';
6
6
  import '../chunk-L2V5PUFN.js';
7
+ import '../chunk-PMXQPO5Q.js';
8
+ import '../chunk-NHDRA4Y5.js';
9
+ import '../chunk-D4M5K6JN.js';
7
10
  import '../chunk-GJWI74ZZ.js';
8
- import '../chunk-5TM3WPCI.js';
9
- export { isCrossOriginFrame, isFramed, isTopFrameSameOrigin } from '../chunk-ZQSCMYZO.js';
11
+ import '../chunk-NZOJHERI.js';
12
+ import '../chunk-KMNHNCVG.js';
13
+ import '../chunk-5IVD6G77.js';
14
+ import '../chunk-DXE6SXWW.js';
15
+ export { isCrossOriginFrame, isFramed, isTopFrameSameOrigin } from '../chunk-7643MCD2.js';
10
16
  import '../chunk-64XODP7M.js';
11
- import '../chunk-FLOJUMFR.js';
12
- import '../chunk-7HW4TZB5.js';
17
+ import '../chunk-VXCUXHZO.js';
13
18
  import '../chunk-W7OPEMGJ.js';
14
- import '../chunk-F6WLHVMQ.js';
19
+ import '../chunk-A4CC4ZG3.js';
20
+ import { subscribeMeasurementPolicy, measurementPolicySnapshot, serverMeasurementPolicySnapshot, analyticsPurposePermitted } from '../chunk-FRY6PBT6.js';
15
21
  import '../chunk-PKBMQBKP.js';
16
- import { useCallback, useEffect } from 'react';
22
+ import { useSyncExternalStore, useCallback, useEffect } from 'react';
17
23
 
18
24
  function useContactTracking(options = {}) {
19
25
  const { autoTrack = true, debug = false } = options;
26
+ const policy = useSyncExternalStore(subscribeMeasurementPolicy, measurementPolicySnapshot, serverMeasurementPolicySnapshot);
20
27
  const trackPhoneClick = useCallback((phoneNumber, metadata) => {
28
+ if (!analyticsPurposePermitted()) return;
21
29
  if (debug) console.log("[Analytics] Phone click:", phoneNumber);
22
30
  trackConversion({
23
31
  type: "phone_call",
@@ -30,6 +38,7 @@ function useContactTracking(options = {}) {
30
38
  });
31
39
  }, [debug]);
32
40
  const trackEmailClick = useCallback((email, metadata) => {
41
+ if (!analyticsPurposePermitted()) return;
33
42
  if (debug) console.log("[Analytics] Email click:", email);
34
43
  trackConversion({
35
44
  type: "email_click",
@@ -40,8 +49,9 @@ function useContactTracking(options = {}) {
40
49
  });
41
50
  }, [debug]);
42
51
  useEffect(() => {
43
- if (!autoTrack || typeof document === "undefined") return;
52
+ if (!autoTrack || typeof document === "undefined" || !analyticsPurposePermitted()) return;
44
53
  const handleClick = (e) => {
54
+ if (!analyticsPurposePermitted()) return;
45
55
  const target = e.target;
46
56
  const anchor = target.closest("a");
47
57
  if (!anchor) return;
@@ -65,7 +75,7 @@ function useContactTracking(options = {}) {
65
75
  return () => {
66
76
  document.removeEventListener("click", handleClick, { capture: true });
67
77
  };
68
- }, [autoTrack, trackPhoneClick, trackEmailClick]);
78
+ }, [autoTrack, trackPhoneClick, trackEmailClick, policy.collectionEpoch]);
69
79
  return {
70
80
  trackPhoneClick,
71
81
  trackEmailClick
@@ -1,3 +1,3 @@
1
- import type { TrackEventOptions } from './types';
1
+ import type { TrackEventOptions } from "./types.js";
2
2
  /** Explicit author-owned link semantics; never infer a conversion from copy. */
3
3
  export declare function publicationCtaEvent(target: EventTarget | null): TrackEventOptions | null;
@@ -50,8 +50,12 @@
50
50
  * `window.parent`, lives with the primitive in `shared/frame.ts` — this file
51
51
  * owns the analytics POLICY, that file owns the frame FACT.
52
52
  */
53
- import { type AnalyticsGateOptions } from '../shared/reporting-gate';
54
- export { resolveAnalyticsTarget, __resetSendGate, isCrossOriginFrame, isFramed, isTopFrameSameOrigin, type AnalyticsGateOptions, type AnalyticsTarget, } from '../shared/reporting-gate';
53
+ import { type AnalyticsGateOptions, type AnalyticsTarget } from "../shared/reporting-gate.js";
54
+ type PurposeGateOptions = AnalyticsGateOptions & {
55
+ measurementEpoch?: number;
56
+ };
57
+ export declare const resolveAnalyticsTarget: (options?: PurposeGateOptions) => AnalyticsTarget | null;
58
+ export { __resetSendGate, isCrossOriginFrame, isFramed, isTopFrameSameOrigin, type AnalyticsGateOptions, type AnalyticsTarget, } from "../shared/reporting-gate.js";
55
59
  /**
56
60
  * POST an analytics payload. Resolves the gate itself and no-ops when it
57
61
  * says no — so a caller that forgets its own early bail still cannot send
@@ -63,7 +67,7 @@ export { resolveAnalyticsTarget, __resetSendGate, isCrossOriginFrame, isFramed,
63
67
  * double-counts). Never resolves to a rejected promise; tracking must not
64
68
  * break a page.
65
69
  */
66
- export declare function analyticsSend(path: string, body: unknown, options?: AnalyticsGateOptions & {
70
+ export declare function analyticsSend(path: string, body: unknown, options?: PurposeGateOptions & {
67
71
  retries?: number;
68
72
  method?: string;
69
73
  /** Let the request outlive the page (scroll depth flushed on unmount). */
@@ -73,4 +77,4 @@ export declare function analyticsSend(path: string, body: unknown, options?: Ana
73
77
  * Unload-time twin of {@link analyticsSend}, through the keepalive beacon so
74
78
  * the credential stays in a header. Gated identically.
75
79
  */
76
- export declare function analyticsBeacon(path: string, body: unknown, options?: AnalyticsGateOptions): void;
80
+ export declare function analyticsBeacon(path: string, body: unknown, options?: PurposeGateOptions): void;
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/Article';
2
+ export * from "../press-kit/articles/Article.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ArticleFAQ';
2
+ export * from "../press-kit/articles/ArticleFAQ.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ArticleFaqSection';
2
+ export * from "../press-kit/articles/ArticleFaqSection.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ArticleList';
2
+ export * from "../press-kit/articles/ArticleList.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ArticleViewTracker';
2
+ export * from "../press-kit/articles/ArticleViewTracker.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/AuthorCard';
2
+ export * from "../press-kit/articles/AuthorCard.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/AuthorPage';
2
+ export * from "../press-kit/articles/AuthorPage.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ClusterLandingPage';
2
+ export * from "../press-kit/articles/ClusterLandingPage.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ClusterNavigation';
2
+ export * from "../press-kit/articles/ClusterNavigation.js";
@@ -1,3 +1,3 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ManagedNewsletterForm';
3
- export { default } from '../press-kit/articles/ManagedNewsletterForm';
2
+ export * from "../press-kit/articles/ManagedNewsletterForm.js";
3
+ export { default } from "../press-kit/articles/ManagedNewsletterForm.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/NewsletterShell';
2
+ export * from "../press-kit/articles/NewsletterShell.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/NewsletterWidget';
2
+ export * from "../press-kit/articles/NewsletterWidget.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/PublicationLayout';
2
+ export * from "../press-kit/articles/PublicationLayout.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/PublicationSidebar';
2
+ export * from "../press-kit/articles/PublicationSidebar.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/RelatedPosts';
2
+ export * from "../press-kit/articles/RelatedPosts.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/ServiceCallout';
2
+ export * from "../press-kit/articles/ServiceCallout.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/TableOfContents';
2
+ export * from "../press-kit/articles/TableOfContents.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/article-photos';
2
+ export * from "../press-kit/articles/article-photos.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/article-styles';
2
+ export * from "../press-kit/articles/article-styles.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/article-tables';
2
+ export * from "../press-kit/articles/article-tables.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/artwork';
2
+ export * from "../press-kit/articles/artwork.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/author-schema';
2
+ export * from "../press-kit/articles/author-schema.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/author-social';
2
+ export * from "../press-kit/articles/author-social.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/excerpt';
2
+ export * from "../press-kit/articles/excerpt.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/index';
2
+ export * from "../press-kit/articles/index.js";
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- export { ArticleFAQ } from '../chunk-BVB5FBAA.js';
3
2
  import { NewsletterShell } from '../chunk-JHTPHA2D.js';
3
+ export { ArticleFAQ } from '../chunk-BVB5FBAA.js';
4
4
  import { getAuthorSocialLinks, generateTableOfContents, readingTimeMinutes } from '../chunk-JG53YJLM.js';
5
5
  export { ClusterNavigation, ServiceCallout, ServiceCallouts } from '../chunk-JG53YJLM.js';
6
6
  import '../chunk-DJAYFHVF.js';
@@ -15,13 +15,13 @@ import { safeJsonLd } from '../chunk-4KZ6W3ZH.js';
15
15
  import '../chunk-MJP63SSS.js';
16
16
  import '../chunk-YVKRYQRG.js';
17
17
  import '../chunk-FESKKJAS.js';
18
- import '../chunk-A4CC4ZG3.js';
19
18
  import '../chunk-W7OPEMGJ.js';
19
+ import '../chunk-A4CC4ZG3.js';
20
20
  import '../chunk-PKBMQBKP.js';
21
21
  import React, { useState, Suspense, useEffect } from 'react';
22
22
  import { jsx, jsxs } from 'react/jsx-runtime';
23
23
 
24
- var ManagedNewsletterForm = React.lazy(() => import('../ManagedNewsletterForm-TUYGN6O3.js'));
24
+ var ManagedNewsletterForm = React.lazy(() => import('../ManagedNewsletterForm-VVXZSEAL.js'));
25
25
  function NewsletterWidget({
26
26
  title = "Subscribe to Our Newsletter",
27
27
  description = "Get the latest posts delivered straight to your inbox.",
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/news-sitemap';
2
+ export * from "../press-kit/articles/news-sitemap.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/processArticleHtml';
2
+ export * from "../press-kit/articles/processArticleHtml.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/public-reads';
2
+ export * from "../press-kit/articles/public-reads.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/reading-time';
2
+ export * from "../press-kit/articles/reading-time.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/routes';
2
+ export * from "../press-kit/articles/routes.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/server-core';
2
+ export * from "../press-kit/articles/server-core.js";
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/server-ui';
2
+ export * from "../press-kit/articles/server-ui.js";
@@ -2,7 +2,7 @@ import { generateTableOfContents, readingTimeMinutes, ServiceCallouts, ClusterNa
2
2
  export { ClusterNavigation } from '../chunk-JG53YJLM.js';
3
3
  import { widgetStyle, widgetTitleStyle } from '../chunk-DJAYFHVF.js';
4
4
  import { resolvePublicationSiteUrl, addExternalLinkTargets } from '../chunk-7DYMM6SS.js';
5
- import { fetchArticleBySlug, articleBodyHtml, fetchRelatedArticles, fetchArticleCategories, getTopicCluster, ArticleUnavailableError } from '../chunk-JYITKUUB.js';
5
+ import { fetchArticleBySlug, articleBodyHtml, fetchRelatedArticles, fetchArticleCategories, getTopicCluster, ArticleUnavailableError } from '../chunk-G5WUX7VE.js';
6
6
  import { insertArticlePhotos } from '../chunk-WHPCGQHC.js';
7
7
  export { articlePhotoCss, insertArticlePhotos } from '../chunk-WHPCGQHC.js';
8
8
  export { articleTableCss, wrapArticleTables } from '../chunk-AL5UCWLI.js';
@@ -13,19 +13,19 @@ import { stripHtmlTags } from '../chunk-IBHBEUZV.js';
13
13
  import { createPublicationRoutes, articleCategorySlug } from '../chunk-4K735O3J.js';
14
14
  export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from '../chunk-4K735O3J.js';
15
15
  import '../chunk-34ZYJTQR.js';
16
- import '../chunk-M5JIHQ42.js';
16
+ import '../chunk-L3S5WH4C.js';
17
17
  import '../chunk-UAYAJPEP.js';
18
18
  import '../chunk-VWWITFWM.js';
19
19
  import '../chunk-4KZ6W3ZH.js';
20
20
  import { withSiteParam } from '../chunk-MJP63SSS.js';
21
21
  import '../chunk-HY7ZEU2C.js';
22
- import '../chunk-C7TLGL3R.js';
22
+ import '../chunk-7VMA3KCN.js';
23
23
  import '../chunk-MH2DSGC6.js';
24
24
  import '../chunk-YVKRYQRG.js';
25
25
  import '../chunk-FESKKJAS.js';
26
- import '../chunk-A4CC4ZG3.js';
26
+ import '../chunk-DXE6SXWW.js';
27
27
  import '../chunk-W7OPEMGJ.js';
28
- import '../chunk-F6WLHVMQ.js';
28
+ import '../chunk-A4CC4ZG3.js';
29
29
  import '../chunk-PKBMQBKP.js';
30
30
  import 'server-only';
31
31
  import { notFound } from 'next/navigation';
@@ -118,7 +118,7 @@ async function Article({
118
118
  ...item,
119
119
  answer: addExternalLinkTargets(item.answer || "", siteUrlResolved)
120
120
  })) ?? faqRaw;
121
- const { ArticleViewTracker } = await import('../ArticleViewTracker-PV2RD3P6.js');
121
+ const { ArticleViewTracker } = await import('../ArticleViewTracker-7Q6AMCKX.js');
122
122
  if (children) {
123
123
  return /* @__PURE__ */ jsxs(Fragment, { children: [
124
124
  /* @__PURE__ */ jsx(ArticleViewTracker, { slug: post.slug, site }),
@@ -1,2 +1,2 @@
1
1
  /** @deprecated Import from @sonordev/press-kit instead. Compatibility build uses the same canonical source. */
2
- export * from '../press-kit/articles/server-core';
2
+ export * from "../press-kit/articles/server-core.js";
@@ -1,4 +1,4 @@
1
- export { ArticleUnavailableError, FEED_DEFAULT_ITEMS, NEWS_SITEMAP_MAX_URLS, NEWS_SITEMAP_WINDOW_MS, PUBLICATION_PREVIEW_COOKIE, PUBLICATION_PREVIEW_HEADERS, SEO_LIMITS, buildNewsSitemapXml, cdata, createPublicationPreviewHandler, generateAllArticleSchemas, generateArticleCategoryMetadata, generateArticleListSchema, generateArticleMetadata, generateArticleSchema, generateArticleSitemap, generateArticleStaticParams, generateAtomFeed, generateAuthorPageMetadata, generateAuthorStaticParams, generateBreadcrumbSchema, generateCategoryStaticParams, generateClusterArticleSchema, generateClusterBreadcrumbSchema, generateClusterItemListSchema, generateClusterLandingSchema, generateClusterPageMetadata, generateFaqSchema, generateHowToSchema, generateNewsSitemap, generatePublicationMetadata, generateRssFeed, getAllArticleSlugs, getAllArticles, getAllAuthorSlugs, getArticle, getArticleCategories, getArticlePreview, getArticleResult, getAuthorBySlug, getAuthorPosts, getClusterNavigation, getPostsByCategory, getPublicationIssue, getPublicationIssues, getRelatedInsights, getTopicCluster, getTopicClusters, recentNewsPosts, requireArticle, sanitizeExcerpt, validateArticleSeo, validateMetaDescription, validateSeoTitle } from '../chunk-JYITKUUB.js';
1
+ export { ArticleUnavailableError, FEED_DEFAULT_ITEMS, NEWS_SITEMAP_MAX_URLS, NEWS_SITEMAP_WINDOW_MS, PUBLICATION_PREVIEW_COOKIE, PUBLICATION_PREVIEW_HEADERS, SEO_LIMITS, buildNewsSitemapXml, cdata, createPublicationPreviewHandler, generateAllArticleSchemas, generateArticleCategoryMetadata, generateArticleListSchema, generateArticleMetadata, generateArticleSchema, generateArticleSitemap, generateArticleStaticParams, generateAtomFeed, generateAuthorPageMetadata, generateAuthorStaticParams, generateBreadcrumbSchema, generateCategoryStaticParams, generateClusterArticleSchema, generateClusterBreadcrumbSchema, generateClusterItemListSchema, generateClusterLandingSchema, generateClusterPageMetadata, generateFaqSchema, generateHowToSchema, generateNewsSitemap, generatePublicationMetadata, generateRssFeed, getAllArticleSlugs, getAllArticles, getAllAuthorSlugs, getArticle, getArticleCategories, getArticlePreview, getArticleResult, getAuthorBySlug, getAuthorPosts, getClusterNavigation, getPostsByCategory, getPublicationIssue, getPublicationIssues, getRelatedInsights, getTopicCluster, getTopicClusters, recentNewsPosts, requireArticle, sanitizeExcerpt, validateArticleSeo, validateMetaDescription, validateSeoTitle } from '../chunk-G5WUX7VE.js';
2
2
  export { articlePhotoCss, insertArticlePhotos } from '../chunk-WHPCGQHC.js';
3
3
  export { articleTableCss, wrapArticleTables } from '../chunk-AL5UCWLI.js';
4
4
  export { articleImageSchema, authorEntityId, generateArticleAuthorNode, generateAuthorPersonSchema, generateAuthorSchema, resolveArticleArtwork, resolveRepresentativeImage, withArticleAuthorIdentity } from '../chunk-UVYUTBT4.js';
@@ -6,17 +6,17 @@ import '../chunk-H72ZFO3F.js';
6
6
  import '../chunk-IBHBEUZV.js';
7
7
  export { articleCategorySlug, createPublicationRoutes, resolveArticleUrl, resolvePublicationUrl } from '../chunk-4K735O3J.js';
8
8
  import '../chunk-34ZYJTQR.js';
9
- import '../chunk-M5JIHQ42.js';
9
+ import '../chunk-L3S5WH4C.js';
10
10
  import '../chunk-UAYAJPEP.js';
11
11
  import '../chunk-VWWITFWM.js';
12
12
  import '../chunk-4KZ6W3ZH.js';
13
13
  import '../chunk-MJP63SSS.js';
14
14
  import '../chunk-HY7ZEU2C.js';
15
- import '../chunk-C7TLGL3R.js';
15
+ import '../chunk-7VMA3KCN.js';
16
16
  import '../chunk-MH2DSGC6.js';
17
17
  import '../chunk-YVKRYQRG.js';
18
18
  import '../chunk-FESKKJAS.js';
19
- import '../chunk-A4CC4ZG3.js';
19
+ import '../chunk-DXE6SXWW.js';
20
20
  import '../chunk-W7OPEMGJ.js';
21
- import '../chunk-F6WLHVMQ.js';
21
+ import '../chunk-A4CC4ZG3.js';
22
22
  import '../chunk-PKBMQBKP.js';