@sonordev/site-kit 8.8.1 → 8.10.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 (468) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +9 -0
  3. package/agent-manifest.json +49 -42
  4. package/dist/AddressAutocomplete-LQS6GQ4R.js +241 -0
  5. package/dist/AnalyticsProvider-JWS7BLFY.js +19 -0
  6. package/dist/{ArticleViewTracker-PV2RD3P6.js → ArticleViewTracker-CDPVMUAO.js} +11 -10
  7. package/dist/{BlocksPopup-NEEFV2L3.js → BlocksPopup-C5PNJ7U6.js} +4 -5
  8. package/dist/ChatWidget-HEPOE3YC.js +30 -0
  9. package/dist/{FileField-MJ3RCNFJ.js → FileField-6R5LS5NU.js} +1 -3
  10. package/dist/{FormSpotlight-NQPQFZS7.js → FormSpotlight-2BSE7PD2.js} +5 -4
  11. package/dist/{FormStage-4T5PJR5K.js → FormStage-3G46OPPO.js} +5 -4
  12. package/dist/ManagedForm-LTXEU25N.js +29 -0
  13. package/dist/{ManagedNewsletterForm-TUYGN6O3.js → ManagedNewsletterForm-WE6P5DMV.js} +21 -11
  14. package/dist/{SignalCore-OW3YIH6M.js → SignalCore-IP7FE6SN.js} +90 -36
  15. package/dist/{SiteChat-XMKHBSEK.js → SiteChat-3FQYMHCP.js} +2 -2
  16. package/dist/{SiteDesignReporter-BRH7ORQS.js → SiteDesignReporter-HGTX4FX2.js} +5 -6
  17. package/dist/SitePopups-V7MCNSGE.js +19 -0
  18. package/dist/SitemapSync-OAJ7SIET.js +7 -0
  19. package/dist/SitemapSync.d.ts +1 -1
  20. package/dist/_client/booking-widget.d.ts +1 -1
  21. package/dist/_client/booking-widget.js +6 -7
  22. package/dist/_client/reviewed-signal-experiment.d.ts +9 -0
  23. package/dist/_client/reviewed-signal-experiment.js +89 -0
  24. package/dist/_client/testimonial-section.d.ts +1 -1
  25. package/dist/admin-auth/index.d.ts +3 -3
  26. package/dist/affiliates/AffiliatesWidget.d.ts +1 -1
  27. package/dist/affiliates/api.d.ts +1 -1
  28. package/dist/affiliates/index.d.ts +6 -6
  29. package/dist/affiliates/index.js +1 -3
  30. package/dist/affiliates/useAffiliates.d.ts +1 -1
  31. package/dist/analytics/AnalyticsProvider.d.ts +1 -1
  32. package/dist/analytics/dispatch.d.ts +1 -1
  33. package/dist/analytics/index.d.ts +6 -6
  34. package/dist/analytics/index.js +22 -12
  35. package/dist/analytics/publication-cta.d.ts +1 -1
  36. package/dist/analytics/send-gate.d.ts +8 -4
  37. package/dist/api-X6N6V2H3.js +5 -0
  38. package/dist/articles/Article.d.ts +1 -1
  39. package/dist/articles/ArticleFAQ.d.ts +1 -1
  40. package/dist/articles/ArticleFaqSection.d.ts +1 -1
  41. package/dist/articles/ArticleList.d.ts +1 -1
  42. package/dist/articles/ArticleViewTracker.d.ts +1 -1
  43. package/dist/articles/AuthorCard.d.ts +1 -1
  44. package/dist/articles/AuthorPage.d.ts +1 -1
  45. package/dist/articles/ClusterLandingPage.d.ts +1 -1
  46. package/dist/articles/ClusterNavigation.d.ts +1 -1
  47. package/dist/articles/ManagedNewsletterForm.d.ts +2 -2
  48. package/dist/articles/NewsletterShell.d.ts +1 -1
  49. package/dist/articles/NewsletterWidget.d.ts +1 -1
  50. package/dist/articles/PublicationLayout.d.ts +1 -1
  51. package/dist/articles/PublicationSidebar.d.ts +1 -1
  52. package/dist/articles/RelatedPosts.d.ts +1 -1
  53. package/dist/articles/ServiceCallout.d.ts +1 -1
  54. package/dist/articles/TableOfContents.d.ts +1 -1
  55. package/dist/articles/article-photos.d.ts +1 -1
  56. package/dist/articles/article-styles.d.ts +1 -1
  57. package/dist/articles/article-tables.d.ts +1 -1
  58. package/dist/articles/artwork.d.ts +1 -1
  59. package/dist/articles/author-schema.d.ts +1 -1
  60. package/dist/articles/author-social.d.ts +1 -1
  61. package/dist/articles/excerpt.d.ts +1 -1
  62. package/dist/articles/index.d.ts +1 -1
  63. package/dist/articles/index.js +3 -3
  64. package/dist/articles/news-sitemap.d.ts +1 -1
  65. package/dist/articles/processArticleHtml.d.ts +1 -1
  66. package/dist/articles/public-reads.d.ts +1 -1
  67. package/dist/articles/reading-time.d.ts +1 -1
  68. package/dist/articles/routes.d.ts +1 -1
  69. package/dist/articles/server-core.d.ts +1 -1
  70. package/dist/articles/server-ui.d.ts +1 -1
  71. package/dist/articles/server-ui.js +6 -6
  72. package/dist/articles/server.d.ts +1 -1
  73. package/dist/articles/server.js +5 -5
  74. package/dist/articles/types.d.ts +1 -1
  75. package/dist/articles/widget-styles.d.ts +1 -1
  76. package/dist/brand/extract-brand-profile.d.ts +1 -1
  77. package/dist/chat/ChatWidget.d.ts +1 -1
  78. package/dist/chat/EchoUiActions.d.ts +1 -1
  79. package/dist/chat/SiteChat.d.ts +2 -2
  80. package/dist/chat/chat-messages.d.ts +1 -1
  81. package/dist/chat/index.d.ts +7 -7
  82. package/dist/chat/index.js +17 -9
  83. package/dist/chat/launcher-placement.d.ts +1 -1
  84. package/dist/{chunk-OPUY4RS6.js → chunk-2LBKIE2K.js} +2 -1
  85. package/dist/chunk-3RBOES2C.js +36 -0
  86. package/dist/{chunk-XIDWNXZN.js → chunk-3W3MN6Z7.js} +2 -2
  87. package/dist/{chunk-CVADNHJ4.js → chunk-3WMNHFZH.js} +9 -0
  88. package/dist/chunk-533ZSRJF.js +147 -0
  89. package/dist/{chunk-UPFU63L4.js → chunk-55GFMOI6.js} +1 -1
  90. package/dist/chunk-5IVD6G77.js +37 -0
  91. package/dist/chunk-6CIO4X6P.js +77 -0
  92. package/dist/{chunk-G7BRCSV6.js → chunk-727353NY.js} +11 -7
  93. package/dist/{chunk-PSS6M4CG.js → chunk-75N2WALV.js} +2 -2
  94. package/dist/{chunk-ZQSCMYZO.js → chunk-7643MCD2.js} +6 -3
  95. package/dist/chunk-7IZUUXXO.js +1 -0
  96. package/dist/{chunk-GXWM5KNS.js → chunk-7PWXPN53.js} +40 -45
  97. package/dist/{chunk-C7TLGL3R.js → chunk-7VMA3KCN.js} +30 -4
  98. package/dist/{chunk-IDC5CVBR.js → chunk-A66TIJWU.js} +1 -1
  99. package/dist/chunk-ACZ5JNSL.js +78 -0
  100. package/dist/chunk-AG2RDHYZ.js +45 -0
  101. package/dist/{chunk-LNSNA3W4.js → chunk-C4XK472G.js} +4 -3
  102. package/dist/chunk-D4M5K6JN.js +25 -0
  103. package/dist/{chunk-F6WLHVMQ.js → chunk-D4R3FQED.js} +1 -1
  104. package/dist/{chunk-URLTBVRX.js → chunk-DW5X4BC7.js} +3 -3
  105. package/dist/chunk-FRY6PBT6.js +31 -0
  106. package/dist/{chunk-JYITKUUB.js → chunk-G5WUX7VE.js} +1 -1
  107. package/dist/{chunk-VPZJ7ZTL.js → chunk-HHEDRZOJ.js} +1 -1
  108. package/dist/{chunk-2WM4TNDF.js → chunk-HLN7A4GL.js} +1 -1
  109. package/dist/{chunk-DYROJGI2.js → chunk-HNVLINPI.js} +1 -1
  110. package/dist/{chunk-NFGAXWCN.js → chunk-J4R7MHV2.js} +31 -13
  111. package/dist/chunk-JT7GHHMV.js +56 -0
  112. package/dist/chunk-KMNHNCVG.js +20 -0
  113. package/dist/chunk-KQKUXIUD.js +25 -0
  114. package/dist/chunk-MDBXGN6W.js +13 -0
  115. package/dist/{chunk-IWNJCRXW.js → chunk-MIKVCYGX.js} +125 -118
  116. package/dist/{chunk-GQN4BGK6.js → chunk-MKU5ZORB.js} +2 -31
  117. package/dist/chunk-MOACHHOJ.js +20 -0
  118. package/dist/{chunk-M5JIHQ42.js → chunk-NBNDH2J6.js} +2 -2
  119. package/dist/{chunk-YRQS7VAH.js → chunk-NH7K252M.js} +6 -4
  120. package/dist/chunk-NHDRA4Y5.js +6 -0
  121. package/dist/{chunk-SLFYTELD.js → chunk-NWEIHCSE.js} +3 -1
  122. package/dist/{chunk-EATJPSTS.js → chunk-O5LQUBBN.js} +1 -1
  123. package/dist/chunk-OCNODBH4.js +2 -0
  124. package/dist/{chunk-TP32MRXV.js → chunk-OEHIXCYS.js} +2 -2
  125. package/dist/{chunk-Y6SHFILE.js → chunk-OEOSR5EG.js} +1 -1
  126. package/dist/{chunk-KG5IEV7I.js → chunk-ORSQKTMN.js} +1 -1
  127. package/dist/{chunk-SVHPILS3.js → chunk-P7S45DD7.js} +1 -1
  128. package/dist/chunk-PVY7X5UR.js +21 -0
  129. package/dist/{chunk-HN7GVGWC.js → chunk-Q2OE32TH.js} +3 -3
  130. package/dist/chunk-RMPXSEEU.js +62 -0
  131. package/dist/{chunk-THXELZTQ.js → chunk-RUV6DCKL.js} +1 -1
  132. package/dist/{chunk-2WDWQI7K.js → chunk-RYR6N4X4.js} +1 -1
  133. package/dist/{chunk-ODOV76VW.js → chunk-STIVFCWM.js} +1 -1
  134. package/dist/{chunk-6BFQI3ZE.js → chunk-TLKLHSRJ.js} +2 -2
  135. package/dist/chunk-TPHOIE4I.js +73 -0
  136. package/dist/{chunk-SBPUFTMP.js → chunk-UMF5OILQ.js} +2 -2
  137. package/dist/chunk-WYNDBJG7.js +66 -0
  138. package/dist/{chunk-OWZWRP7Y.js → chunk-XAPSYDVT.js} +2 -2
  139. package/dist/{chunk-PAYCK7FC.js → chunk-XJZLXUTG.js} +1 -1
  140. package/dist/{chunk-YEX5RAEU.js → chunk-Y7DZ2ND2.js} +38 -27
  141. package/dist/{chunk-AYQEIMGS.js → chunk-YJ6PRJ7Y.js} +103 -22
  142. package/dist/chunk-Z4XJOVQX.js +9 -0
  143. package/dist/{chunk-6DXQHNZK.js → chunk-Z62W7Q3T.js} +1 -1
  144. package/dist/client/index.d.ts +8 -8
  145. package/dist/client/index.js +9 -8
  146. package/dist/config/index.d.ts +1 -1
  147. package/dist/contracts/broadcast-layouts.d.ts +8 -0
  148. package/dist/contracts/crm-disposition.d.ts +87 -0
  149. package/dist/contracts/decision-roles.d.ts +39 -0
  150. package/dist/contracts/entries.d.ts +1 -1
  151. package/dist/contracts/funnels.d.ts +85 -2
  152. package/dist/contracts/portfolio.d.ts +1 -1
  153. package/dist/contracts/publication-branding.d.ts +3 -3
  154. package/dist/contracts/resonance-constants.d.ts +4 -0
  155. package/dist/contracts/resonance.d.ts +8461 -0
  156. package/dist/contracts/signal-experiments.d.ts +219 -0
  157. package/dist/contracts/site-edit.d.ts +2 -2
  158. package/dist/contracts/sites.d.ts +1 -1
  159. package/dist/contracts/slots.d.ts +2 -2
  160. package/dist/contracts/wire-schema.d.ts +36 -0
  161. package/dist/controls-KLG6VQLO.js +14 -0
  162. package/dist/cta-bar/CtaBar.d.ts +1 -1
  163. package/dist/cta-bar/client.js +3 -2
  164. package/dist/cta-bar/index.d.ts +4 -4
  165. package/dist/cta-bar/index.js +4 -3
  166. package/dist/fleet/FleetHeartbeat.d.ts +2 -2
  167. package/dist/fleet/contract.d.ts +1 -1
  168. package/dist/fleet/heartbeat.d.ts +2 -2
  169. package/dist/fleet/index.d.ts +6 -6
  170. package/dist/fleet/index.js +4 -5
  171. package/dist/forms/AddressAutocomplete.d.ts +20 -0
  172. package/dist/forms/FileField.d.ts +1 -1
  173. package/dist/forms/FormClient.d.ts +4 -3
  174. package/dist/forms/FormEnhancer.d.ts +3 -2
  175. package/dist/forms/FormField.d.ts +3 -1
  176. package/dist/forms/FormSpotlight.d.ts +2 -2
  177. package/dist/forms/FormStage.d.ts +2 -2
  178. package/dist/forms/ManagedForm.d.ts +2 -2
  179. package/dist/forms/PrivateFileField.d.ts +1 -1
  180. package/dist/forms/ServerForm.d.ts +5 -4
  181. package/dist/forms/StaticForm.d.ts +1 -1
  182. package/dist/forms/contract.d.ts +1 -1
  183. package/dist/forms/controls.d.ts +5 -0
  184. package/dist/forms/experience-plan.d.ts +1 -1
  185. package/dist/forms/field-autocomplete.d.ts +1 -1
  186. package/dist/forms/field-controls.d.ts +4 -2
  187. package/dist/forms/field-rules.d.ts +1 -1
  188. package/dist/forms/form-dom-values.d.ts +1 -1
  189. package/dist/forms/index.d.ts +18 -18
  190. package/dist/forms/index.js +21 -11
  191. package/dist/forms/normalize-config.d.ts +1 -1
  192. package/dist/forms/server.d.ts +4 -4
  193. package/dist/forms/server.js +5 -5
  194. package/dist/forms/static.d.ts +2 -2
  195. package/dist/forms/static.js +2 -2
  196. package/dist/forms/submitForm.d.ts +2 -2
  197. package/dist/forms/tracking-session.d.ts +1 -1
  198. package/dist/forms/types.d.ts +9 -0
  199. package/dist/forms/useForm.d.ts +2 -2
  200. package/dist/forms/webmcp.d.ts +2 -2
  201. package/dist/images/api.d.ts +1 -1
  202. package/dist/images/index.d.ts +6 -6
  203. package/dist/images/index.js +2 -4
  204. package/dist/images/server.d.ts +2 -2
  205. package/dist/index.d.ts +13 -13
  206. package/dist/index.js +1 -1
  207. package/dist/landing/contract.d.ts +1 -1
  208. package/dist/landing/contract.js +2 -1
  209. package/dist/landing/index.d.ts +3 -3
  210. package/dist/landing/index.js +3 -2
  211. package/dist/landing/managed-server.d.ts +2 -2
  212. package/dist/landing/managed.d.ts +10 -2
  213. package/dist/landing/server.d.ts +7 -7
  214. package/dist/landing/server.js +13 -8
  215. package/dist/layout/AiDiscoveryLinks.d.ts +1 -1
  216. package/dist/layout/SiteKitClientProviders.d.ts +1 -1
  217. package/dist/layout/SiteKitLayout.d.ts +2 -2
  218. package/dist/layout/client.d.ts +1 -1
  219. package/dist/layout/client.js +15 -11
  220. package/dist/layout/index.d.ts +5 -5
  221. package/dist/layout/index.js +17 -13
  222. package/dist/layout/types.d.ts +2 -2
  223. package/dist/llms/AEOComponents.d.ts +1 -1
  224. package/dist/llms/SpeakableSchema.d.ts +1 -1
  225. package/dist/llms/api.d.ts +1 -1
  226. package/dist/llms/client.d.ts +3 -3
  227. package/dist/llms/contract.d.ts +1 -1
  228. package/dist/llms/generateLLMsTxt.d.ts +1 -1
  229. package/dist/llms/handlers.d.ts +1 -1
  230. package/dist/llms/index.d.ts +21 -21
  231. package/dist/llms/index.js +5 -5
  232. package/dist/llms/merge.d.ts +1 -1
  233. package/dist/llms/sourcedFacts.d.ts +1 -1
  234. package/dist/llms/types.d.ts +5 -5
  235. package/dist/llms/writeLLMsTxt.d.ts +3 -3
  236. package/dist/maps/GoogleMap.d.ts +1 -1
  237. package/dist/maps/NeighborhoodMap.d.ts +1 -1
  238. package/dist/maps/api.d.ts +1 -1
  239. package/dist/maps/index.d.ts +5 -5
  240. package/dist/maps/index.js +8 -80
  241. package/dist/maps/places-library.d.ts +34 -0
  242. package/dist/mcp/WebMcpTools.d.ts +1 -1
  243. package/dist/mcp/client.d.ts +2 -2
  244. package/dist/mcp/discovery.d.ts +2 -2
  245. package/dist/mcp/handlers.d.ts +4 -4
  246. package/dist/mcp/index.d.ts +12 -12
  247. package/dist/mcp/protocol.d.ts +1 -1
  248. package/dist/mcp/report.d.ts +1 -1
  249. package/dist/mcp/serverCard.d.ts +1 -1
  250. package/dist/mcp/sonor.d.ts +5 -5
  251. package/dist/mcp/sonor.js +12 -12
  252. package/dist/mcp/transport.d.ts +1 -1
  253. package/dist/motion/Parallax.d.ts +1 -1
  254. package/dist/motion/ScrollScene.d.ts +1 -1
  255. package/dist/motion/gsap.d.ts +2 -2
  256. package/dist/motion/index.d.ts +9 -9
  257. package/dist/motion/three.d.ts +1 -1
  258. package/dist/og/index.d.ts +5 -5
  259. package/dist/og/pages.d.ts +1 -1
  260. package/dist/og/route-fit.d.ts +17 -0
  261. package/dist/og/template.d.ts +1 -1
  262. package/dist/places-library-RU2YNKFK.js +54 -0
  263. package/dist/portfolio/contract.d.ts +1 -1
  264. package/dist/press-kit/articles/Article.d.ts +2 -2
  265. package/dist/press-kit/articles/ArticleFaqSection.d.ts +1 -1
  266. package/dist/press-kit/articles/ArticleList.d.ts +2 -2
  267. package/dist/press-kit/articles/AuthorCard.d.ts +1 -1
  268. package/dist/press-kit/articles/AuthorPage.d.ts +1 -1
  269. package/dist/press-kit/articles/ClusterLandingPage.d.ts +2 -2
  270. package/dist/press-kit/articles/ClusterNavigation.d.ts +2 -2
  271. package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +2 -2
  272. package/dist/press-kit/articles/PublicationLayout.d.ts +2 -2
  273. package/dist/press-kit/articles/PublicationSidebar.d.ts +1 -1
  274. package/dist/press-kit/articles/RelatedPosts.d.ts +2 -2
  275. package/dist/press-kit/articles/TableOfContents.d.ts +1 -1
  276. package/dist/press-kit/articles/article-body.d.ts +1 -1
  277. package/dist/press-kit/articles/article-headings.d.ts +1 -1
  278. package/dist/press-kit/articles/article-photos.d.ts +1 -1
  279. package/dist/press-kit/articles/artwork.d.ts +2 -2
  280. package/dist/press-kit/articles/author-schema.d.ts +2 -2
  281. package/dist/press-kit/articles/author-social.d.ts +1 -1
  282. package/dist/press-kit/articles/index.d.ts +23 -23
  283. package/dist/press-kit/articles/news-sitemap.d.ts +2 -2
  284. package/dist/press-kit/articles/public-reads.d.ts +1 -1
  285. package/dist/press-kit/articles/publication-reads.d.ts +2 -2
  286. package/dist/press-kit/articles/reading-time.d.ts +1 -1
  287. package/dist/press-kit/articles/server-core.d.ts +20 -20
  288. package/dist/press-kit/articles/server-ui.d.ts +20 -20
  289. package/dist/press-kit/articles/types.d.ts +1 -1
  290. package/dist/proxy/index.d.ts +5 -5
  291. package/dist/proxy/index.js +1 -1
  292. package/dist/reputation/TestimonialSection.d.ts +1 -1
  293. package/dist/reputation/VisualReviewCard.d.ts +1 -1
  294. package/dist/reputation/api.d.ts +1 -1
  295. package/dist/reputation/index.d.ts +4 -4
  296. package/dist/reputation/server.d.ts +3 -3
  297. package/dist/resonance/ResonanceRuntime.d.ts +7 -0
  298. package/dist/resonance/bridge.d.ts +16 -0
  299. package/dist/resonance/consent-adapter.d.ts +26 -0
  300. package/dist/resonance/controller-registry.d.ts +14 -0
  301. package/dist/resonance/controller.d.ts +103 -0
  302. package/dist/resonance/form-context.d.ts +5 -0
  303. package/dist/resonance/index.d.ts +4 -0
  304. package/dist/resonance/index.js +9 -0
  305. package/dist/resonance/meta-pixel.d.ts +67 -0
  306. package/dist/resonance/providers.d.ts +32 -0
  307. package/dist/resonance/runtime-core.d.ts +5 -0
  308. package/dist/revalidate/index.d.ts +3 -3
  309. package/dist/revalidate/index.js +2 -2
  310. package/dist/robots/index.d.ts +3 -3
  311. package/dist/robots/indexnow.js +2 -2
  312. package/dist/runtime/index.d.ts +7 -7
  313. package/dist/runtime/index.js +4 -5
  314. package/dist/runtime-core-EU2RZMOL.js +2213 -0
  315. package/dist/seo/ManagedFAQ.d.ts +1 -1
  316. package/dist/seo/ManagedInternalLinks.d.ts +1 -1
  317. package/dist/seo/ManagedSchema.d.ts +1 -1
  318. package/dist/seo/ManagedScripts.d.ts +1 -1
  319. package/dist/seo/client.d.ts +1 -1
  320. package/dist/seo/client.js +3 -5
  321. package/dist/seo/entry-indexnow.d.ts +1 -1
  322. package/dist/seo/entry-llms-client.d.ts +1 -1
  323. package/dist/seo/entry-llms-contract.d.ts +1 -1
  324. package/dist/seo/entry-llms.d.ts +1 -1
  325. package/dist/seo/entry-meta-contract.d.ts +1 -1
  326. package/dist/seo/entry-og-route.d.ts +1 -1
  327. package/dist/seo/entry-og.d.ts +1 -1
  328. package/dist/seo/entry-pages-contract.d.ts +1 -1
  329. package/dist/seo/entry-redirects.d.ts +1 -1
  330. package/dist/seo/entry-robots.d.ts +1 -1
  331. package/dist/seo/entry-sitemap.d.ts +1 -1
  332. package/dist/seo/getManagedMetadata.d.ts +1 -1
  333. package/dist/seo/index.d.ts +12 -12
  334. package/dist/seo/index.js +9 -11
  335. package/dist/seo/indexnow.d.ts +1 -1
  336. package/dist/seo/indexnow.js +2 -2
  337. package/dist/seo/llms/client.d.ts +1 -1
  338. package/dist/seo/llms/contract.d.ts +1 -1
  339. package/dist/seo/llms.d.ts +1 -1
  340. package/dist/seo/llms.js +5 -5
  341. package/dist/seo/meta/contract.d.ts +1 -1
  342. package/dist/seo/og.d.ts +1 -1
  343. package/dist/seo/pages/contract.d.ts +1 -1
  344. package/dist/seo/redirects.d.ts +1 -1
  345. package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
  346. package/dist/seo/register-sitemap-cli.js +1 -1
  347. package/dist/seo/robots.d.ts +1 -1
  348. package/dist/seo/routing.d.ts +1 -1
  349. package/dist/seo/server.d.ts +4 -4
  350. package/dist/seo/server.js +3 -3
  351. package/dist/seo/sitemap.d.ts +1 -1
  352. package/dist/seo/sitemap.js +3 -3
  353. package/dist/seo/types.d.ts +1 -1
  354. package/dist/seo-meta/contract.d.ts +1 -1
  355. package/dist/seo-pages/contract.d.ts +1 -1
  356. package/dist/server/index.d.ts +5 -5
  357. package/dist/server/index.js +3 -3
  358. package/dist/server/mint-site-token.d.ts +1 -1
  359. package/dist/server/server-fetch.d.ts +8 -0
  360. package/dist/{server-api-XIKDWSNO.js → server-api-A34TABT2.js} +2 -2
  361. package/dist/shared/build-entries.d.ts +3 -1
  362. package/dist/shared/color.d.ts +1 -1
  363. package/dist/shared/fetchWithRetry.d.ts +6 -0
  364. package/dist/shared/frame.d.ts +1 -1
  365. package/dist/shared/identity-storage.d.ts +6 -4
  366. package/dist/shared/identity.d.ts +1 -3
  367. package/dist/shared/index.d.ts +5 -5
  368. package/dist/shared/index.js +1 -1
  369. package/dist/shared/measurement-analytics.d.ts +1 -0
  370. package/dist/shared/measurement-policy.d.ts +6 -0
  371. package/dist/shared/measurement-proof.d.ts +5 -0
  372. package/dist/shared/measurement-store.d.ts +34 -0
  373. package/dist/shared/measurement-writer.d.ts +6 -0
  374. package/dist/shared/publishCredential.d.ts +1 -1
  375. package/dist/shared/reporting-gate.d.ts +3 -1
  376. package/dist/shared/site-token-claims.d.ts +18 -0
  377. package/dist/shared/site-token-configuration.d.ts +9 -0
  378. package/dist/shared/site-token-refresh.d.ts +7 -0
  379. package/dist/shared/site-token-state.d.ts +23 -0
  380. package/dist/shared/siteToken.d.ts +5 -39
  381. package/dist/shared/sonor-auth-state.d.ts +3 -0
  382. package/dist/shared/sonor-beacon.d.ts +13 -0
  383. package/dist/shared/sonor-fetch-runtime.d.ts +2 -0
  384. package/dist/shared/sonor-fetch.d.ts +7 -0
  385. package/dist/shared/sonorFetch.d.ts +4 -49
  386. package/dist/shared/version.d.ts +1 -1
  387. package/dist/signal/ReviewedSignalExperiment.d.ts +9 -0
  388. package/dist/signal/SignalBridge.d.ts +4 -4
  389. package/dist/signal/SignalCore.d.ts +2 -1
  390. package/dist/signal/SignalExperiment.d.ts +13 -5
  391. package/dist/signal/index.d.ts +3 -3
  392. package/dist/signal/index.js +4 -73
  393. package/dist/signal/store.d.ts +10 -7
  394. package/dist/signal/types.d.ts +4 -0
  395. package/dist/sitemap/index.d.ts +5 -5
  396. package/dist/sitemap/index.js +3 -3
  397. package/dist/sites/contract.d.ts +1 -1
  398. package/dist/sites/normalize.d.ts +1 -1
  399. package/dist/slots/ManagedLink.d.ts +2 -2
  400. package/dist/slots/ManagedList.d.ts +2 -2
  401. package/dist/slots/ManagedRichText.d.ts +1 -1
  402. package/dist/slots/ManagedSlot.d.ts +1 -1
  403. package/dist/slots/contract.d.ts +1 -1
  404. package/dist/slots/edit/locate.d.ts +1 -1
  405. package/dist/slots/index.d.ts +14 -14
  406. package/dist/slots/index.js +2 -2
  407. package/dist/slots/server-api.d.ts +1 -1
  408. package/dist/{chunk-FLOJUMFR.js → sonor-fetch-runtime-SLPBNZY4.js} +27 -36
  409. package/dist/sync/AddToCalendar.d.ts +1 -1
  410. package/dist/sync/BookingWidget.d.ts +1 -1
  411. package/dist/sync/MeetingFormatStep.d.ts +1 -1
  412. package/dist/sync/api.d.ts +2 -2
  413. package/dist/sync/booking-flow.d.ts +1 -1
  414. package/dist/sync/index.d.ts +3 -3
  415. package/dist/sync/index.js +6 -7
  416. package/dist/types.d.ts +6 -6
  417. package/dist/website/BlocksPopup.d.ts +1 -1
  418. package/dist/website/PopupBlocks.d.ts +1 -1
  419. package/dist/website/SiteDesignReporter.d.ts +2 -2
  420. package/dist/website/SitePopups.d.ts +1 -1
  421. package/dist/website/contract.d.ts +1 -1
  422. package/dist/website/cta-bar.d.ts +1 -1
  423. package/dist/website/cta-bar.js +4 -3
  424. package/dist/website/design.d.ts +2 -2
  425. package/dist/website/images/server.d.ts +1 -1
  426. package/dist/website/images-server.d.ts +1 -1
  427. package/dist/website/images.d.ts +1 -1
  428. package/dist/website/images.js +2 -4
  429. package/dist/website/index.d.ts +4 -4
  430. package/dist/website/index.js +5 -6
  431. package/dist/website/landing/server.d.ts +1 -1
  432. package/dist/website/landing/server.js +13 -8
  433. package/dist/website/landing-server.d.ts +1 -1
  434. package/dist/website/landing.d.ts +1 -1
  435. package/dist/website/landing.js +3 -2
  436. package/dist/website/popup-rules.d.ts +2 -2
  437. package/dist/website/popup-types.d.ts +1 -1
  438. package/dist/website/popups.d.ts +4 -4
  439. package/dist/website/popups.js +14 -8
  440. package/dist/website/slots/contract.d.ts +1 -1
  441. package/dist/website/slots-contract.d.ts +1 -1
  442. package/dist/website/slots.d.ts +2 -2
  443. package/dist/website/slots.js +2 -2
  444. package/dist/{writeLLMsTxt-4HHUAOA6.js → writeLLMsTxt-2CBYGKZO.js} +2 -2
  445. package/docs.json +5 -0
  446. package/package.json +8 -2
  447. package/src/analytics/README.md +21 -0
  448. package/src/cta-bar/README.md +4 -0
  449. package/src/forms/README.md +76 -0
  450. package/src/landing/README.md +14 -0
  451. package/src/layout/README.md +3 -0
  452. package/src/resonance/README.md +273 -0
  453. package/src/runtime/README.md +6 -1
  454. package/src/signal/README.md +21 -0
  455. package/src/website/README.md +14 -2
  456. package/dist/AnalyticsProvider-7SBJ27SI.js +0 -13
  457. package/dist/ChatWidget-V46UBDOM.js +0 -20
  458. package/dist/ManagedForm-DDDVMKLJ.js +0 -19
  459. package/dist/SitePopups-VU2C3Z6B.js +0 -13
  460. package/dist/SitemapSync-C4H3HF3L.js +0 -9
  461. package/dist/chunk-5ROTTMBL.js +0 -19
  462. package/dist/chunk-5TM3WPCI.js +0 -7
  463. package/dist/chunk-7HW4TZB5.js +0 -148
  464. package/dist/chunk-IPQKQEWI.js +0 -52
  465. package/dist/chunk-LCDVPAMR.js +0 -24
  466. package/dist/chunk-LQJC5S2M.js +0 -236
  467. package/dist/chunk-SHAUX2MQ.js +0 -163
  468. /package/dist/{chunk-3MJNBOUO.js → chunk-2QPVU63T.js} +0 -0
@@ -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/widget-styles';
2
+ export * from "../press-kit/articles/widget-styles.js";
@@ -13,7 +13,7 @@
13
13
  * This is static file analysis (a brace-aware scan plus regex, not a full CSS
14
14
  * parser) — runs at build time in Node.
15
15
  */
16
- import { colorLuminance } from '../shared/color';
16
+ import { colorLuminance } from "../shared/color.js";
17
17
  /**
18
18
  * Version of the extraction contract, sent with every push. Version 1 (no
19
19
  * field) labelled any site whose CSS merely *mentioned* dark — a Tailwind
@@ -11,7 +11,7 @@
11
11
  * - Proper AI → Live → Offline sequence routing
12
12
  */
13
13
  import React from 'react';
14
- import type { ChatConfig } from './types';
14
+ import type { ChatConfig } from "./types.js";
15
15
  interface ChatWidgetProps {
16
16
  /** Optional: resolved from API key via project-info when not provided */
17
17
  projectId?: string;
@@ -14,7 +14,7 @@
14
14
  * portfolio view; a site with its own chat UI handles it.
15
15
  */
16
16
  import React from 'react';
17
- import type { UiAction } from './types';
17
+ import type { UiAction } from "./types.js";
18
18
  /** A path / URL / scheme we should navigate to rather than send as a chat turn. */
19
19
  declare function isNavigable(action: string): boolean;
20
20
  export interface EchoUiActionsProps {
@@ -9,8 +9,8 @@
9
9
  * project's chat is switched on in Sonor (see ChatWidget's isChatEnabled).
10
10
  */
11
11
  import React from 'react';
12
- import type { ChatLauncherPlacement } from './types';
13
- import { type AnalyticsGateOptions } from '../shared/reporting-gate';
12
+ import type { ChatLauncherPlacement } from "./types.js";
13
+ import { type AnalyticsGateOptions } from "../shared/reporting-gate.js";
14
14
  export interface SiteChatProps extends ChatLauncherPlacement, AnalyticsGateOptions {
15
15
  apiUrl?: string;
16
16
  apiKey?: string;
@@ -12,7 +12,7 @@
12
12
  * drawn by `startChat` and again when the session came up, so every AI-mode
13
13
  * visitor who started from a chip saw it twice.
14
14
  */
15
- import type { UiAction } from './types';
15
+ import type { UiAction } from "./types.js";
16
16
  export interface MessageAttachment {
17
17
  name: string;
18
18
  url: string;
@@ -6,10 +6,10 @@
6
6
  * (idle-deferred, gated like analytics), and `ChatWidget` is the widget
7
7
  * itself.
8
8
  */
9
- export { SiteChat, type SiteChatProps } from './SiteChat';
10
- export { ChatWidget, EchoChat, isChatEnabled } from './ChatWidget';
11
- export { chatLauncherStyles, DEFAULT_LAUNCHER_OFFSET_BOTTOM } from './launcher-placement';
12
- export type { ChatLauncherStyles } from './launcher-placement';
13
- export { SONOR_PUBLIC_ECHO_DEFAULTS, getEchoWidgetProps } from './echo-config';
14
- export type { EchoPublicConfig } from './echo-config';
15
- export type { ChatAvailability, ChatConfig, ChatConversation, ChatLauncherPlacement, ChatLauncherPosition, ChatMessage, UiAction, UiActionType, } from './types';
9
+ export { SiteChat, type SiteChatProps } from "./SiteChat.js";
10
+ export { ChatWidget, EchoChat, isChatEnabled } from "./ChatWidget.js";
11
+ export { chatLauncherStyles, DEFAULT_LAUNCHER_OFFSET_BOTTOM } from "./launcher-placement.js";
12
+ export type { ChatLauncherStyles } from "./launcher-placement.js";
13
+ export { SONOR_PUBLIC_ECHO_DEFAULTS, getEchoWidgetProps } from "./echo-config.js";
14
+ export type { EchoPublicConfig } from "./echo-config.js";
15
+ export type { ChatAvailability, ChatConfig, ChatConversation, ChatLauncherPlacement, ChatLauncherPosition, ChatMessage, UiAction, UiActionType, } from "./types.js";
@@ -1,26 +1,34 @@
1
1
  'use client';
2
- export { ChatWidget, DEFAULT_LAUNCHER_OFFSET_BOTTOM, EchoChat, chatLauncherStyles, isChatEnabled } from '../chunk-TP32MRXV.js';
3
- export { SiteChat } from '../chunk-SBPUFTMP.js';
2
+ export { ChatWidget, DEFAULT_LAUNCHER_OFFSET_BOTTOM, EchoChat, chatLauncherStyles, isChatEnabled } from '../chunk-OEHIXCYS.js';
3
+ export { SiteChat } from '../chunk-UMF5OILQ.js';
4
4
  import '../chunk-6T6CQVNL.js';
5
5
  import '../chunk-JE4A5S4F.js';
6
6
  import '../chunk-27FISYK4.js';
7
- import '../chunk-IWNJCRXW.js';
7
+ import '../chunk-MIKVCYGX.js';
8
8
  import '../chunk-Q6E4OPGG.js';
9
- import '../chunk-5ROTTMBL.js';
9
+ import '../chunk-MDBXGN6W.js';
10
+ import '../chunk-PVY7X5UR.js';
10
11
  import '../chunk-C2FZBUSS.js';
11
12
  import '../chunk-TYSIAWC3.js';
12
13
  import '../chunk-HW7B43E5.js';
13
14
  import '../chunk-NJCTQH2P.js';
14
15
  import '../chunk-S22FSH7C.js';
15
16
  import '../chunk-L2V5PUFN.js';
17
+ import '../chunk-ACZ5JNSL.js';
18
+ import '../chunk-NHDRA4Y5.js';
19
+ import '../chunk-D4M5K6JN.js';
16
20
  import '../chunk-GJWI74ZZ.js';
17
- import '../chunk-5TM3WPCI.js';
18
- import '../chunk-ZQSCMYZO.js';
21
+ import '../chunk-NZOJHERI.js';
22
+ import '../chunk-KMNHNCVG.js';
23
+ import '../chunk-5IVD6G77.js';
24
+ import '../chunk-D4R3FQED.js';
25
+ import '../chunk-7643MCD2.js';
19
26
  import '../chunk-64XODP7M.js';
20
- import '../chunk-FLOJUMFR.js';
21
- import '../chunk-7HW4TZB5.js';
27
+ import '../chunk-Z4XJOVQX.js';
22
28
  import '../chunk-W7OPEMGJ.js';
23
- import '../chunk-F6WLHVMQ.js';
29
+ import '../chunk-A4CC4ZG3.js';
30
+ import '../chunk-MOACHHOJ.js';
31
+ import '../chunk-FRY6PBT6.js';
24
32
  import '../chunk-PKBMQBKP.js';
25
33
 
26
34
  // src/chat/echo-config.ts
@@ -11,7 +11,7 @@
11
11
  * input row. Deriving both from one clearance makes that impossible.
12
12
  */
13
13
  import type { CSSProperties } from 'react';
14
- import type { ChatLauncherPlacement } from './types';
14
+ import type { ChatLauncherPlacement } from "./types.js";
15
15
  /** Launcher clearance above the bottom edge when a site sets nothing. */
16
16
  export declare const DEFAULT_LAUNCHER_OFFSET_BOTTOM = "20px";
17
17
  /**
@@ -1,5 +1,6 @@
1
+ import { configureSiteCredential } from './chunk-TPHOIE4I.js';
1
2
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
2
- import { configureSiteCredential, currentCredential } from './chunk-7HW4TZB5.js';
3
+ import { currentCredential } from './chunk-D4M5K6JN.js';
3
4
 
4
5
  // src/shared/publishCredential.ts
5
6
  function publishSiteCredential({
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+ import { useDeferredActivation } from './chunk-YC7ELZS3.js';
3
+ import { primeMeasurementPolicy } from './chunk-FRY6PBT6.js';
4
+ import { useRef, useEffect } from 'react';
5
+ import { usePathname } from 'next/navigation';
6
+
7
+ function ResonanceRuntime({ site, apiUrl, apiKey }) {
8
+ primeMeasurementPolicy();
9
+ const pathname = usePathname();
10
+ const ready = useDeferredActivation(true);
11
+ const latestPath = useRef(pathname);
12
+ latestPath.current = pathname;
13
+ const active = useRef(void 0);
14
+ useEffect(() => {
15
+ if (!ready) return;
16
+ let cancelled = false;
17
+ void import('./runtime-core-EU2RZMOL.js').then(({ mountResonanceRuntime }) => {
18
+ if (cancelled) return;
19
+ const runtime = mountResonanceRuntime({ site, apiUrl, apiKey });
20
+ active.current = runtime;
21
+ if (latestPath.current) runtime?.navigate(latestPath.current);
22
+ }).catch(() => {
23
+ });
24
+ return () => {
25
+ cancelled = true;
26
+ active.current?.stop();
27
+ active.current = void 0;
28
+ };
29
+ }, [site, apiUrl, apiKey, ready]);
30
+ useEffect(() => {
31
+ if (pathname) active.current?.navigate(pathname);
32
+ }, [pathname]);
33
+ return null;
34
+ }
35
+
36
+ export { ResonanceRuntime };
@@ -1,4 +1,4 @@
1
- import { getSEOPageData, ensureMetadata, getABTest, recordABImpression, getRedirectData, getRobotsData, getSitemapEntries } from './chunk-ODOV76VW.js';
1
+ import { getSEOPageData, ensureMetadata, getABTest, recordABImpression, getRedirectData, getRobotsData, getSitemapEntries } from './chunk-STIVFCWM.js';
2
2
  import { titleProblem, descriptionProblem } from './chunk-ISRBSTB7.js';
3
3
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
4
4
 
@@ -232,7 +232,7 @@ async function generateSitemap(options) {
232
232
  }));
233
233
  }
234
234
  async function registerLocalSitemap(options) {
235
- const { registerSitemap } = await import('./server-api-XIKDWSNO.js');
235
+ const { registerSitemap } = await import('./server-api-A34TABT2.js');
236
236
  let entries = options.entries || [];
237
237
  if (options.autoDiscover && entries.length === 0) {
238
238
  try {
@@ -425,6 +425,15 @@ function FormField({ field, value, error, onChange, onFocus, onBlur, classPrefix
425
425
  ),
426
426
  showValid && /* @__PURE__ */ jsx(FieldValidTick, {})
427
427
  ] }),
428
+ controls?.Address && /* @__PURE__ */ jsx(
429
+ controls.Address,
430
+ {
431
+ value,
432
+ onChange,
433
+ field,
434
+ options: controls.address
435
+ }
436
+ ),
428
437
  field.field_type === "textarea" && /* @__PURE__ */ jsx(
429
438
  "textarea",
430
439
  {
@@ -0,0 +1,147 @@
1
+ 'use client';
2
+ import { measurementPolicySnapshot, subscribeMeasurementPolicy, analyticsPurposePermitted, serverMeasurementPolicySnapshot } from './chunk-FRY6PBT6.js';
3
+ import { useSyncExternalStore, useEffect } from 'react';
4
+ import dynamic from 'next/dynamic';
5
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
6
+
7
+ var pendingEvents = [];
8
+ var pendingOutcomes = [];
9
+ var MAX_PENDING = 100;
10
+ var warnedNoBridge = false;
11
+ var core = null;
12
+ var queueEpoch = measurementPolicySnapshot().collectionEpoch;
13
+ subscribeMeasurementPolicy(() => {
14
+ const epoch = measurementPolicySnapshot().collectionEpoch;
15
+ if (!analyticsPurposePermitted() || epoch !== queueEpoch) {
16
+ pendingEvents.length = 0;
17
+ pendingOutcomes.length = 0;
18
+ }
19
+ queueEpoch = epoch;
20
+ });
21
+ function trackEvent(event) {
22
+ if (!analyticsPurposePermitted()) return;
23
+ if (core) {
24
+ core.trackEvent(event);
25
+ return;
26
+ }
27
+ if (pendingEvents.length < MAX_PENDING) pendingEvents.push(event);
28
+ else if (!warnedNoBridge) {
29
+ warnedNoBridge = true;
30
+ console.warn("[site-kit] Signal events are queuing but no SignalBridge has mounted \u2014 is signal enabled on SiteKitLayout?");
31
+ }
32
+ }
33
+ function trackOutcome(outcome) {
34
+ if (!analyticsPurposePermitted()) return;
35
+ if (core) {
36
+ core.trackOutcome(outcome);
37
+ return;
38
+ }
39
+ if (pendingOutcomes.length < MAX_PENDING) pendingOutcomes.push(outcome);
40
+ }
41
+ var signalQueueApi = {
42
+ trackEvent,
43
+ trackOutcome,
44
+ getExperiment: (experimentId) => core?.getExperiment(experimentId) ?? null,
45
+ refreshConfig: async () => {
46
+ await core?.refreshConfig();
47
+ }
48
+ };
49
+ function registerSignalCore(api) {
50
+ core = api;
51
+ if (!api) return;
52
+ while (pendingEvents.length && analyticsPurposePermitted() && queueEpoch === measurementPolicySnapshot().collectionEpoch) api.trackEvent(pendingEvents.shift());
53
+ while (pendingOutcomes.length && analyticsPurposePermitted() && queueEpoch === measurementPolicySnapshot().collectionEpoch) api.trackOutcome(pendingOutcomes.shift());
54
+ }
55
+ var STUB = Object.freeze({ config: null, loading: true, error: null, ...signalQueueApi });
56
+ var current = STUB;
57
+ var listeners = /* @__PURE__ */ new Set();
58
+ function emit() {
59
+ for (const listener of listeners) listener();
60
+ }
61
+ function publishSignal(value) {
62
+ current = value;
63
+ emit();
64
+ }
65
+ function publishSignalCoreState(state) {
66
+ publishSignal({ config: state.config, loading: state.loading, error: state.error, ...signalQueueApi });
67
+ }
68
+ function resetSignal() {
69
+ core = null;
70
+ pendingEvents.length = 0;
71
+ pendingOutcomes.length = 0;
72
+ current = STUB;
73
+ emit();
74
+ }
75
+ function subscribe(onChange) {
76
+ listeners.add(onChange);
77
+ return () => {
78
+ listeners.delete(onChange);
79
+ };
80
+ }
81
+ var getSnapshot = () => current;
82
+ var getServerSnapshot = () => STUB;
83
+ function useSignal() {
84
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
85
+ }
86
+ var LazySignalCore = dynamic(
87
+ () => import('./SignalCore-IP7FE6SN.js').then((m) => ({ default: m.SignalCore })),
88
+ { ssr: false }
89
+ );
90
+ function SignalBridge({
91
+ enabled = true,
92
+ realtime = true,
93
+ experiments = true,
94
+ behaviorTracking = true,
95
+ visitorId: externalVisitorId,
96
+ sessionId: externalSessionId,
97
+ pageMetadataRef,
98
+ children
99
+ }) {
100
+ useEffect(() => {
101
+ publishSignalCoreState({ config: null, loading: true, error: null });
102
+ return () => resetSignal();
103
+ }, []);
104
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
105
+ children,
106
+ enabled && /* @__PURE__ */ jsx(
107
+ LazySignalCore,
108
+ {
109
+ enabled,
110
+ realtime,
111
+ experiments,
112
+ behaviorTracking,
113
+ externalVisitorId,
114
+ externalSessionId,
115
+ pageMetadataRef,
116
+ onRegister: registerSignalCore,
117
+ onState: publishSignalCoreState
118
+ }
119
+ )
120
+ ] });
121
+ }
122
+ function useSignalConfig() {
123
+ const { config } = useSignal();
124
+ return config;
125
+ }
126
+ function useSignalEvent() {
127
+ const { trackEvent: trackEvent2 } = useSignal();
128
+ return trackEvent2;
129
+ }
130
+ function useSignalOutcome() {
131
+ const { trackOutcome: trackOutcome2 } = useSignal();
132
+ return { trackOutcome: trackOutcome2 };
133
+ }
134
+ function useSignalExperiment(experimentId) {
135
+ const { getExperiment, config } = useSignal();
136
+ useSyncExternalStore(subscribeMeasurementPolicy, measurementPolicySnapshot, serverMeasurementPolicySnapshot);
137
+ const assignment = getExperiment(experimentId);
138
+ const experiment = config?.experiments?.find((e) => e.id === experimentId);
139
+ const isRunning = experiment?.status === "running";
140
+ return {
141
+ assignment: isRunning ? assignment : null,
142
+ variant: isRunning && assignment ? assignment.variant_key : null,
143
+ isControl: !isRunning || !assignment || assignment.variant_key === "control"
144
+ };
145
+ }
146
+
147
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome };
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { trackEvent } from './chunk-LCDVPAMR.js';
2
+ import { trackEvent } from './chunk-AG2RDHYZ.js';
3
3
  import { useRef, useEffect } from 'react';
4
4
  import { usePathname } from 'next/navigation';
5
5
  import { jsx } from 'react/jsx-runtime';
@@ -0,0 +1,37 @@
1
+ import { measurementPolicySnapshot, subscribeMeasurementPolicy, analyticsPurposePermitted } from './chunk-FRY6PBT6.js';
2
+
3
+ // src/shared/identity-storage.ts
4
+ var VISITOR_ID_KEY = "_sk_vid";
5
+ var SESSION_ID_KEY = "_sk_sid";
6
+ var SESSION_TIME_KEY = "_sk_stime";
7
+ var makeMemory = () => ({ visitorId: "", sessionId: "" });
8
+ var memoryIdentity = typeof window === "undefined" ? makeMemory() : window.__SONOR_ANALYTICS_MEMORY_V1__ ?? (window.__SONOR_ANALYTICS_MEMORY_V1__ = makeMemory());
9
+ function identityStorageKeys() {
10
+ const scope = measurementPolicySnapshot().identityScope;
11
+ const suffix = scope ? `:${encodeURIComponent(scope)}` : "";
12
+ return { visitor: VISITOR_ID_KEY + suffix, session: SESSION_ID_KEY + suffix, time: SESSION_TIME_KEY + suffix };
13
+ }
14
+ var previousScope = measurementPolicySnapshot().identityScope;
15
+ var previousKeys = identityStorageKeys();
16
+ subscribeMeasurementPolicy(() => {
17
+ const scope = measurementPolicySnapshot().identityScope;
18
+ if (!analyticsPurposePermitted() || scope !== previousScope) {
19
+ memoryIdentity.visitorId = "";
20
+ memoryIdentity.sessionId = "";
21
+ if (["denied", "withdrawn"].includes(measurementPolicySnapshot().choices.analytics_storage) && typeof window !== "undefined") {
22
+ try {
23
+ window.localStorage.removeItem(previousKeys.visitor);
24
+ } catch {
25
+ }
26
+ try {
27
+ window.sessionStorage.removeItem(previousKeys.session);
28
+ window.sessionStorage.removeItem(previousKeys.time);
29
+ } catch {
30
+ }
31
+ }
32
+ }
33
+ previousScope = scope;
34
+ previousKeys = identityStorageKeys();
35
+ });
36
+
37
+ export { identityStorageKeys, memoryIdentity };
@@ -0,0 +1,77 @@
1
+ import { monotonicMs } from './chunk-MH2DSGC6.js';
2
+ import { sonorFetch } from './chunk-Z4XJOVQX.js';
3
+ import { getClientApiConfig } from './chunk-W7OPEMGJ.js';
4
+
5
+ // src/maps/api.ts
6
+ function getApiConfig() {
7
+ const { apiUrl, apiKey } = getClientApiConfig({ serverKey: true });
8
+ return { apiUrl, apiKey: apiKey ?? "" };
9
+ }
10
+ var configCache = null;
11
+ var CONFIG_CACHE_TTL = 3e5;
12
+ var placesCache = /* @__PURE__ */ new Map();
13
+ var PLACES_CACHE_TTL = 6e4;
14
+ async function fetchMapsConfig() {
15
+ if (configCache && monotonicMs() - configCache.timestamp < CONFIG_CACHE_TTL) {
16
+ return configCache.data;
17
+ }
18
+ const { apiUrl, apiKey } = getApiConfig();
19
+ if (apiKey) {
20
+ try {
21
+ const res = await sonorFetch(
22
+ `${apiUrl}/api/public/maps/config`,
23
+ { headers: { "Content-Type": "application/json" } },
24
+ { apiKey }
25
+ );
26
+ if (res.ok) {
27
+ const data = await res.json();
28
+ if (data.apiKey) {
29
+ configCache = { data, timestamp: monotonicMs() };
30
+ return data;
31
+ }
32
+ }
33
+ } catch {
34
+ }
35
+ }
36
+ const fallbackKey = typeof window !== "undefined" ? "" : process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY || "";
37
+ const fallbackMapId = typeof window !== "undefined" ? "" : process.env.NEXT_PUBLIC_GOOGLE_MAPS_MAP_ID || "";
38
+ if (fallbackKey) {
39
+ const data = { apiKey: fallbackKey, mapId: fallbackMapId || "fcca3cd2bb19cf9a960994e7" };
40
+ configCache = { data, timestamp: monotonicMs() };
41
+ return data;
42
+ }
43
+ return null;
44
+ }
45
+ async function fetchNearbyPlaces(params) {
46
+ const cacheKey = `${params.lat},${params.lng}:${params.type}`;
47
+ const cached = placesCache.get(cacheKey);
48
+ if (cached && monotonicMs() - cached.timestamp < PLACES_CACHE_TTL) {
49
+ return cached.data;
50
+ }
51
+ const { apiUrl, apiKey } = getApiConfig();
52
+ if (!apiKey) return [];
53
+ try {
54
+ const searchParams = new URLSearchParams({
55
+ lat: String(params.lat),
56
+ lng: String(params.lng),
57
+ type: params.type
58
+ });
59
+ if (params.radius) searchParams.set("radius", String(params.radius));
60
+ if (params.limit) searchParams.set("limit", String(params.limit));
61
+ const res = await sonorFetch(
62
+ `${apiUrl}/api/public/maps/nearby-places?${searchParams}`,
63
+ { headers: { "Content-Type": "application/json" } },
64
+ { apiKey }
65
+ );
66
+ if (!res.ok) return [];
67
+ const data = await res.json();
68
+ const places = data.places || [];
69
+ placesCache.set(cacheKey, { data: places, timestamp: monotonicMs() });
70
+ return places;
71
+ } catch (err) {
72
+ console.warn("[site-kit/maps] Failed to fetch nearby places:", err);
73
+ return [];
74
+ }
75
+ }
76
+
77
+ export { fetchMapsConfig, fetchNearbyPlaces };
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- import { countStageViews, countStageQuestions, useFieldControls } from './chunk-GQN4BGK6.js';
3
- import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-IWNJCRXW.js';
2
+ import { countStageViews, countStageQuestions, useFieldControls } from './chunk-MKU5ZORB.js';
3
+ import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-MIKVCYGX.js';
4
4
  import { readAgentSubmit, formToolAttributes } from './chunk-Q6E4OPGG.js';
5
5
  import { isFieldVisible, validateField, isFieldComplete, isDisplayOnly, unseenControlValues } from './chunk-C2FZBUSS.js';
6
6
  import { HoneypotField } from './chunk-DXO6SBMD.js';
7
- import { DelightStyles, FormMomentum, FormField } from './chunk-CVADNHJ4.js';
7
+ import { DelightStyles, FormMomentum, FormField } from './chunk-3WMNHFZH.js';
8
8
  import { DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-TYSIAWC3.js';
9
9
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
10
10
  import { useState, useRef, useMemo, useEffect, useCallback } from 'react';
@@ -17,7 +17,8 @@ function FormClient({
17
17
  onError,
18
18
  customRender,
19
19
  experience,
20
- defaultValues
20
+ defaultValues,
21
+ addressAutocomplete
21
22
  }) {
22
23
  const [values, setValues] = useState(() => {
23
24
  const defaults = {};
@@ -43,7 +44,7 @@ function FormClient({
43
44
  const questionCount = useMemo(() => countStageQuestions(config), [config]);
44
45
  const requested = experience ?? (config.layout === "stage" ? "stage" : config.layout === "classic" ? "classic" : "spotlight");
45
46
  const resolvedExperience = !customRender && questionCount > 0 && requested !== "classic" ? requested : "classic";
46
- const fieldControls = useFieldControls(config.fields);
47
+ const fieldControls = useFieldControls(config.fields, addressAutocomplete);
47
48
  const [Celebration, setCelebration] = useState(null);
48
49
  useEffect(() => {
49
50
  if (!isSubmitting && !isComplete) return;
@@ -63,7 +64,7 @@ function FormClient({
63
64
  return;
64
65
  }
65
66
  let cancelled = false;
66
- const load = resolvedExperience === "stage" ? import('./FormStage-4T5PJR5K.js').then((m) => m.FormStage) : import('./FormSpotlight-NQPQFZS7.js').then((m) => m.FormSpotlight);
67
+ const load = resolvedExperience === "stage" ? import('./FormStage-3G46OPPO.js').then((m) => m.FormStage) : import('./FormSpotlight-2BSE7PD2.js').then((m) => m.FormSpotlight);
67
68
  load.then((Component) => {
68
69
  if (!cancelled) setExperience(() => Component);
69
70
  }).catch((err) => {
@@ -290,6 +291,7 @@ function FormClient({
290
291
  }
291
292
  if (resolvedExperience !== "classic" && Experience) {
292
293
  const bundle = {
294
+ addressAutocomplete,
293
295
  config,
294
296
  values,
295
297
  errors,
@@ -452,6 +454,7 @@ function ManagedForm({
452
454
  initialConfig,
453
455
  experience,
454
456
  defaultValues,
457
+ addressAutocomplete,
455
458
  children
456
459
  }) {
457
460
  const {
@@ -489,7 +492,8 @@ function ManagedForm({
489
492
  onError,
490
493
  customRender: children,
491
494
  experience,
492
- defaultValues
495
+ defaultValues,
496
+ addressAutocomplete
493
497
  }
494
498
  );
495
499
  }
@@ -1,5 +1,5 @@
1
- import { readAnalyticsIdentity } from './chunk-5ROTTMBL.js';
2
- import { sonorFetch } from './chunk-FLOJUMFR.js';
1
+ import { readAnalyticsIdentity } from './chunk-PVY7X5UR.js';
2
+ import { sonorFetch } from './chunk-Z4XJOVQX.js';
3
3
  import { getClientApiConfig } from './chunk-W7OPEMGJ.js';
4
4
 
5
5
  // src/sync/api.ts
@@ -49,6 +49,10 @@ function announceFrameReady() {
49
49
  function isPrivatePreview() {
50
50
  return typeof document !== "undefined" && !!document.querySelector("[data-sk-private-preview]");
51
51
  }
52
+ function isLocalHostname(raw) {
53
+ const hostname = raw.toLowerCase().replace(/\.+$/, "");
54
+ return hostname === "localhost" || hostname.endsWith(".localhost") || hostname === "127.0.0.1" || hostname === "[::1]" || hostname === "::1" || hostname === "0.0.0.0";
55
+ }
52
56
  var announcedSuppression = false;
53
57
  function resolveAnalyticsTarget(options = {}) {
54
58
  if (isPrivatePreview()) return null;
@@ -57,8 +61,7 @@ function resolveAnalyticsTarget(options = {}) {
57
61
  const apiUrl = options.apiUrl || published.apiUrl || DEFAULT_SONOR_API_URL;
58
62
  const apiKey = options.apiKey || published.apiKey;
59
63
  if (!apiKey) return null;
60
- const hostname = (config?.location?.hostname || "").toLowerCase().replace(/\.+$/, "");
61
- const local = hostname === "localhost" || hostname.endsWith(".localhost") || hostname === "127.0.0.1" || hostname === "[::1]" || hostname === "::1" || hostname === "0.0.0.0";
64
+ const local = isLocalHostname(config?.location?.hostname || "");
62
65
  const optIn = local && options.allowLocalhost !== true ? "allowLocalhost" : !options.allowInFrame && isCrossOriginFrame() ? "allowInFrame" : null;
63
66
  if (optIn) {
64
67
  if (options.debug && !announcedSuppression) {
@@ -70,4 +73,4 @@ function resolveAnalyticsTarget(options = {}) {
70
73
  return { apiUrl, apiKey };
71
74
  }
72
75
 
73
- export { announceFrameReady, isCrossOriginFrame, isFramed, isPrivatePreview, isTopFrameSameOrigin, resolveAnalyticsTarget };
76
+ export { announceFrameReady, isCrossOriginFrame, isFramed, isLocalHostname, isPrivatePreview, isTopFrameSameOrigin, resolveAnalyticsTarget };
@@ -0,0 +1 @@
1
+