@sonordev/site-kit 6.4.0 → 7.0.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 (1621) hide show
  1. package/AGENTS.md +18 -3
  2. package/README.md +50 -34
  3. package/agent-manifest.json +282 -52
  4. package/dist/AnalyticsProvider-GJ6JFQO5.js +11 -0
  5. package/dist/ArticleFaqSection-3Q26DP7P.js +9 -0
  6. package/dist/ArticleViewTracker-FEA5SBKW.js +49 -0
  7. package/dist/BlocksPopup-MNK4SDZM.js +43 -0
  8. package/dist/ChatWidget-M2YNLRYW.js +15 -0
  9. package/dist/DatePicker-JEBV6WYJ.js +2 -0
  10. package/dist/EngageWidget-RR63JQCA.js +11 -0
  11. package/dist/FileField-JFBXXD43.js +83 -0
  12. package/dist/FormCelebration-OVGAGBKF.js +2 -0
  13. package/dist/FormSpotlight-QE3J3VB5.js +754 -0
  14. package/dist/FormStage-OTPKEWID.js +418 -0
  15. package/dist/ManagedForm-3VRALWUD.js +14 -0
  16. package/dist/ManagedNewsletterForm-A2FE6L5C.js +62 -0
  17. package/dist/SignalCore-S6DO3VQV.js +322 -0
  18. package/dist/SiteDesignReporter-2WZVWJMA.js +11 -0
  19. package/dist/SitemapSync-IKNKPT2G.js +8 -0
  20. package/dist/SitemapSync.d.ts +0 -1
  21. package/dist/_client/booking-widget.d.ts +4 -0
  22. package/dist/_client/booking-widget.js +7 -0
  23. package/dist/_client/testimonial-section.d.ts +11 -0
  24. package/dist/_client/testimonial-section.js +5 -0
  25. package/dist/admin-auth/index.d.ts +0 -1
  26. package/dist/admin-auth/index.js +0 -0
  27. package/dist/admin-auth/session.d.ts +0 -1
  28. package/dist/affiliates/AffiliatesWidget.d.ts +0 -1
  29. package/dist/affiliates/api.d.ts +0 -1
  30. package/dist/affiliates/index.d.ts +0 -1
  31. package/dist/affiliates/index.js +149 -0
  32. package/dist/affiliates/types.d.ts +0 -1
  33. package/dist/affiliates/useAffiliates.d.ts +0 -1
  34. package/dist/analytics/AnalyticsProvider.d.ts +0 -1
  35. package/dist/analytics/WebVitals.d.ts +0 -1
  36. package/dist/analytics/dispatch.d.ts +0 -1
  37. package/dist/analytics/index.d.ts +0 -1
  38. package/dist/analytics/index.js +12 -66
  39. package/dist/analytics/measurement-context.d.ts +0 -1
  40. package/dist/analytics/page-observation.d.ts +0 -1
  41. package/dist/analytics/send-gate.d.ts +0 -1
  42. package/dist/analytics/types.d.ts +0 -1
  43. package/dist/analytics/useContactTracking.d.ts +0 -1
  44. package/dist/article-styles-6CM5FUMV.js +590 -0
  45. package/dist/article-tables-AXSZOGNW.js +2 -0
  46. package/dist/articles/Article.d.ts +0 -1
  47. package/dist/articles/ArticleFAQ.d.ts +0 -1
  48. package/dist/articles/ArticleFaqSection.d.ts +0 -1
  49. package/dist/articles/ArticleList.d.ts +0 -1
  50. package/dist/articles/ArticleViewTracker.d.ts +0 -1
  51. package/dist/articles/AuthorCard.d.ts +0 -1
  52. package/dist/articles/AuthorPage.d.ts +0 -1
  53. package/dist/articles/ClusterLandingPage.d.ts +0 -1
  54. package/dist/articles/ClusterNavigation.d.ts +0 -1
  55. package/dist/articles/ManagedNewsletterForm.d.ts +0 -1
  56. package/dist/articles/NewsletterShell.d.ts +0 -1
  57. package/dist/articles/NewsletterWidget.d.ts +0 -1
  58. package/dist/articles/PublicationLayout.d.ts +0 -1
  59. package/dist/articles/PublicationSidebar.d.ts +0 -1
  60. package/dist/articles/RelatedPosts.d.ts +0 -1
  61. package/dist/articles/ServiceCallout.d.ts +0 -1
  62. package/dist/articles/TableOfContents.d.ts +0 -1
  63. package/dist/articles/article-styles.d.ts +0 -1
  64. package/dist/articles/article-tables.d.ts +0 -1
  65. package/dist/articles/artwork.d.ts +0 -1
  66. package/dist/articles/author-schema.d.ts +0 -1
  67. package/dist/articles/author-social.d.ts +0 -1
  68. package/dist/articles/excerpt.d.ts +0 -1
  69. package/dist/articles/index.d.ts +0 -1
  70. package/dist/articles/index.js +87 -147
  71. package/dist/articles/news-sitemap.d.ts +0 -1
  72. package/dist/articles/processArticleHtml.d.ts +0 -1
  73. package/dist/articles/public-reads.d.ts +0 -1
  74. package/dist/articles/reading-time.d.ts +0 -1
  75. package/dist/articles/routes.d.ts +0 -1
  76. package/dist/articles/server-core.d.ts +0 -14
  77. package/dist/articles/server-ui.d.ts +0 -1
  78. package/dist/articles/server-ui.js +221 -265
  79. package/dist/articles/server.d.ts +0 -14
  80. package/dist/articles/server.js +10 -252
  81. package/dist/articles/types.d.ts +6 -1
  82. package/dist/articles/widget-styles.d.ts +0 -1
  83. package/dist/brand/extract-brand-profile.d.ts +0 -1
  84. package/dist/chat/index.d.ts +11 -0
  85. package/dist/chat/index.js +16 -0
  86. package/dist/chunk-24QZEO3Q.js +41 -0
  87. package/dist/chunk-3XHK5DFX.js +184 -0
  88. package/dist/chunk-43OCZ3JA.js +67 -0
  89. package/dist/chunk-4KZ6W3ZH.js +8 -0
  90. package/dist/chunk-4WI3FU5L.js +129 -0
  91. package/dist/chunk-4Y5FWDPM.js +97 -0
  92. package/dist/chunk-5C4WVOVO.js +478 -0
  93. package/dist/chunk-5SQK3D53.js +24 -0
  94. package/dist/chunk-5UZN5V52.js +52 -0
  95. package/dist/chunk-5YSI5KFD.js +19 -0
  96. package/dist/chunk-6CUFRMMF.js +937 -0
  97. package/dist/chunk-6HDT4G4A.js +253 -0
  98. package/dist/chunk-6T6CQVNL.js +37 -0
  99. package/dist/chunk-6ZB3XNAT.js +54 -0
  100. package/dist/chunk-7KJGO77W.js +1 -0
  101. package/dist/chunk-7L5AARVY.js +68 -0
  102. package/dist/chunk-7ZHJIRM3.js +4 -0
  103. package/dist/chunk-7ZWO5HDQ.js +1 -0
  104. package/dist/chunk-A4CC4ZG3.js +15 -0
  105. package/dist/chunk-AQSNPZY4.js +92 -0
  106. package/dist/chunk-B52EXDWI.js +1803 -0
  107. package/dist/chunk-BQR4IPBW.js +146 -0
  108. package/dist/chunk-BR4ZKUHH.js +227 -0
  109. package/dist/chunk-BU66S5B7.js +1 -0
  110. package/dist/chunk-C4G3NW2E.js +25 -0
  111. package/dist/chunk-D7SLSJS4.js +1 -0
  112. package/dist/chunk-DIKNRN34.js +28 -0
  113. package/dist/chunk-DXO6SBMD.js +43 -0
  114. package/dist/chunk-EDYHROQ7.js +77 -0
  115. package/dist/chunk-EKBEOXTH.js +114 -0
  116. package/dist/chunk-FESKKJAS.js +19 -0
  117. package/dist/chunk-FV2VD7WM.js +347 -0
  118. package/dist/chunk-FYAB6CXS.js +265 -0
  119. package/dist/chunk-G3NHWMP5.js +233 -0
  120. package/dist/chunk-GJWI74ZZ.js +27 -0
  121. package/dist/chunk-GKGSXUVQ.js +218 -0
  122. package/dist/chunk-GLHQ3LRO.js +97 -0
  123. package/dist/chunk-GW7GSBO7.js +66 -0
  124. package/dist/chunk-GYBMMWGF.js +163 -0
  125. package/dist/chunk-GYF2ULVO.js +14 -0
  126. package/dist/chunk-HPUXKMNR.js +148 -0
  127. package/dist/chunk-HXJ54KAM.js +122 -0
  128. package/dist/chunk-I6WUCBKI.js +99 -0
  129. package/dist/chunk-IHG36STL.js +286 -0
  130. package/dist/chunk-J4FSB4OG.js +200 -0
  131. package/dist/chunk-JE4A5S4F.js +48 -0
  132. package/dist/chunk-JJ4JS3LD.js +26 -0
  133. package/dist/chunk-JMRESWQT.js +130 -0
  134. package/dist/chunk-JSZN6LDZ.js +338 -0
  135. package/dist/chunk-KPAZG65P.js +138 -0
  136. package/dist/chunk-KV4LOKOU.js +154 -0
  137. package/dist/chunk-KXPBMCFL.js +39 -0
  138. package/dist/chunk-L2V5PUFN.js +15 -0
  139. package/dist/chunk-L3AQCDCY.js +386 -0
  140. package/dist/chunk-L5UOHS6E.js +45 -0
  141. package/dist/chunk-LCDVPAMR.js +24 -0
  142. package/dist/chunk-LE7ZOTHB.js +43 -0
  143. package/dist/chunk-LNSNA3W4.js +217 -0
  144. package/dist/chunk-LQJC5S2M.js +236 -0
  145. package/dist/chunk-LT5ITURG.js +1071 -0
  146. package/dist/chunk-LVESVYCE.js +270 -0
  147. package/dist/chunk-M4ZY2FVB.js +177 -0
  148. package/dist/chunk-MH2DSGC6.js +10 -0
  149. package/dist/chunk-MJP63SSS.js +14 -0
  150. package/dist/chunk-MVLMXC44.js +9 -0
  151. package/dist/chunk-MZFF5F7R.js +407 -0
  152. package/dist/chunk-N2UVOR3X.js +238 -0
  153. package/dist/chunk-NDF4A5JM.js +37 -0
  154. package/dist/chunk-NJCTQH2P.js +62 -0
  155. package/dist/chunk-NZOJHERI.js +32 -0
  156. package/dist/chunk-OO2GZ272.js +1241 -0
  157. package/dist/chunk-OPRBF7VE.js +41 -0
  158. package/dist/chunk-OSQHWIM5.js +523 -0
  159. package/dist/chunk-OSYCOC3K.js +21 -0
  160. package/dist/chunk-P5GB6NEO.js +66 -0
  161. package/dist/chunk-PKBMQBKP.js +5 -0
  162. package/dist/chunk-PO2TRJPY.js +40 -0
  163. package/dist/chunk-PSAG45YF.js +451 -0
  164. package/dist/chunk-PXKIGZ2F.js +31 -0
  165. package/dist/chunk-QLTDFUJ7.js +94 -0
  166. package/dist/chunk-QPEEKFCA.js +533 -0
  167. package/dist/chunk-QXMIKDOL.js +125 -0
  168. package/dist/chunk-R3TOKUDJ.js +191 -0
  169. package/dist/chunk-S22FSH7C.js +94 -0
  170. package/dist/chunk-SC4MZGWZ.js +63 -0
  171. package/dist/chunk-SOD2F6C2.js +281 -0
  172. package/dist/chunk-SS636UDN.js +35 -0
  173. package/dist/chunk-SSUQKA7L.js +746 -0
  174. package/dist/chunk-SWKE6FWH.js +47 -0
  175. package/dist/chunk-T22VK4NJ.js +49 -0
  176. package/dist/chunk-TT63HHIT.js +543 -0
  177. package/dist/chunk-TXBAOEKG.js +1084 -0
  178. package/dist/chunk-UINSEWQ3.js +127 -0
  179. package/dist/chunk-UPFU63L4.js +126 -0
  180. package/dist/chunk-UVPGW4R7.js +222 -0
  181. package/dist/chunk-VX5CMNMM.js +26 -0
  182. package/dist/chunk-WFHI6HXP.js +837 -0
  183. package/dist/chunk-WMVK77ND.js +53 -0
  184. package/dist/chunk-X6F6SO4S.js +135 -0
  185. package/dist/chunk-XTRZGXB2.js +34 -0
  186. package/dist/chunk-XZMVNORA.js +100 -0
  187. package/dist/chunk-Y3INC4QJ.js +133 -0
  188. package/dist/chunk-YC7ELZS3.js +51 -0
  189. package/dist/chunk-YGGDU6C3.js +93 -0
  190. package/dist/chunk-YVKRYQRG.js +70 -0
  191. package/dist/chunk-Z22QVHT4.js +57 -0
  192. package/dist/chunk-ZEGVKVD5.js +80 -0
  193. package/dist/chunk-ZTZQPYP6.js +55 -0
  194. package/dist/client/SiteKitCredential.d.ts +0 -1
  195. package/dist/client/index.d.ts +0 -1
  196. package/dist/client/index.js +13 -53
  197. package/dist/cms/CmsPage.d.ts +0 -1
  198. package/dist/cms/CmsPreview.d.ts +0 -1
  199. package/dist/cms/CmsSection.d.ts +0 -1
  200. package/dist/cms/PortableTextRenderer.d.ts +0 -1
  201. package/dist/cms/index.d.ts +1 -2
  202. package/dist/cms/index.js +5 -410
  203. package/dist/cms/sanity-image.d.ts +0 -1
  204. package/dist/cms/sections/CtaSection.d.ts +0 -1
  205. package/dist/cms/sections/CustomSection.d.ts +0 -1
  206. package/dist/cms/sections/FaqSection.d.ts +0 -1
  207. package/dist/cms/sections/FormSection.d.ts +0 -1
  208. package/dist/cms/sections/GallerySection.d.ts +0 -1
  209. package/dist/cms/sections/HeroSection.d.ts +0 -1
  210. package/dist/cms/sections/RichTextSection.d.ts +0 -1
  211. package/dist/cms/sections/TestimonialsSection.d.ts +0 -1
  212. package/dist/cms/sections/index.d.ts +0 -1
  213. package/dist/cms/server-api.d.ts +0 -1
  214. package/dist/cms/server.d.ts +0 -1
  215. package/dist/cms/server.js +5 -22
  216. package/dist/cms/types.d.ts +0 -1
  217. package/dist/commerce/CalendarView.d.ts +0 -1
  218. package/dist/commerce/CheckoutForm.d.ts +0 -1
  219. package/dist/commerce/EventCalendar.d.ts +0 -1
  220. package/dist/commerce/EventCheckout.d.ts +0 -1
  221. package/dist/commerce/EventEmbed.d.ts +0 -1
  222. package/dist/commerce/EventModal.d.ts +0 -1
  223. package/dist/commerce/EventTile.d.ts +0 -1
  224. package/dist/commerce/EventsAgenda.d.ts +0 -1
  225. package/dist/commerce/EventsWidget.d.ts +0 -1
  226. package/dist/commerce/OfferingCard.d.ts +0 -1
  227. package/dist/commerce/OfferingList.d.ts +0 -1
  228. package/dist/commerce/ProductDetail.d.ts +0 -1
  229. package/dist/commerce/ProductEmbed.d.ts +0 -1
  230. package/dist/commerce/ProductGrid.d.ts +0 -1
  231. package/dist/commerce/ProductPage.d.ts +0 -1
  232. package/dist/commerce/RegistrationForm.d.ts +0 -1
  233. package/dist/commerce/SizeChart.d.ts +0 -1
  234. package/dist/commerce/UpcomingEvents.d.ts +0 -1
  235. package/dist/commerce/api.d.ts +0 -1
  236. package/dist/commerce/events-extras.d.ts +0 -1
  237. package/dist/commerce/index.d.ts +0 -1
  238. package/dist/commerce/index.js +8021 -227
  239. package/dist/commerce/server.d.ts +0 -1
  240. package/dist/commerce/server.js +2 -251
  241. package/dist/commerce/types.d.ts +0 -1
  242. package/dist/commerce/useEventModal.d.ts +0 -1
  243. package/dist/commerce/utils.d.ts +0 -1
  244. package/dist/config/index.d.ts +0 -1
  245. package/dist/config/index.js +7 -11
  246. package/dist/contracts/color.d.ts +38 -0
  247. package/dist/contracts/entries.d.ts +8 -0
  248. package/dist/contracts/fleet.d.ts +96 -0
  249. package/dist/contracts/forms.d.ts +89 -0
  250. package/dist/contracts/llms.d.ts +54 -0
  251. package/dist/contracts/portfolio.d.ts +158 -0
  252. package/dist/contracts/seo-meta.d.ts +56 -0
  253. package/dist/contracts/seo-pages.d.ts +124 -0
  254. package/dist/contracts/sites-normalize.d.ts +35 -0
  255. package/dist/contracts/sites.d.ts +48 -0
  256. package/dist/contracts/slots.d.ts +81 -0
  257. package/dist/contracts/website.d.ts +148 -0
  258. package/dist/cta-bar/CtaBar.d.ts +0 -1
  259. package/dist/cta-bar/CtaBarBehavior.d.ts +0 -1
  260. package/dist/cta-bar/client.d.ts +0 -1
  261. package/dist/cta-bar/client.js +3 -22
  262. package/dist/cta-bar/index.d.ts +0 -1
  263. package/dist/cta-bar/index.js +5 -227
  264. package/dist/cta-bar/styles.d.ts +0 -1
  265. package/dist/discover-3YYOHOQP.js +2 -0
  266. package/dist/engage/ChatWidget.d.ts +0 -1
  267. package/dist/engage/DesignRenderer.d.ts +0 -1
  268. package/dist/engage/EchoUiActions.d.ts +0 -1
  269. package/dist/engage/EngageWidget.d.ts +2 -1
  270. package/dist/engage/brand-color.d.ts +0 -1
  271. package/dist/engage/chat-messages.d.ts +0 -1
  272. package/dist/engage/echo-config.d.ts +0 -1
  273. package/dist/engage/element-rules.d.ts +0 -1
  274. package/dist/engage/index.d.ts +0 -1
  275. package/dist/engage/index.js +20 -36
  276. package/dist/engage/launcher-placement.d.ts +0 -1
  277. package/dist/engage/socket-loader.d.ts +0 -1
  278. package/dist/engage/types.d.ts +18 -1
  279. package/dist/fleet/FleetHeartbeat.d.ts +0 -1
  280. package/dist/fleet/contract.d.ts +1 -98
  281. package/dist/fleet/contract.js +2 -53
  282. package/dist/fleet/heartbeat.d.ts +0 -1
  283. package/dist/fleet/index.d.ts +0 -1
  284. package/dist/fleet/index.js +9 -75
  285. package/dist/forms/DatePicker.d.ts +0 -1
  286. package/dist/forms/FileField.d.ts +0 -1
  287. package/dist/forms/FormCelebration.d.ts +0 -1
  288. package/dist/forms/FormClient.d.ts +0 -1
  289. package/dist/forms/FormEnhancer.d.ts +0 -1
  290. package/dist/forms/FormField.d.ts +0 -1
  291. package/dist/forms/FormSpotlight.d.ts +0 -1
  292. package/dist/forms/FormStage.d.ts +0 -1
  293. package/dist/forms/HoneypotField.d.ts +0 -1
  294. package/dist/forms/ManagedForm.d.ts +0 -1
  295. package/dist/forms/ServerForm.d.ts +0 -1
  296. package/dist/forms/StaticForm.d.ts +0 -1
  297. package/dist/forms/contract.d.ts +1 -91
  298. package/dist/forms/contract.js +2 -37
  299. package/dist/forms/defaultSuccessMessage.d.ts +0 -1
  300. package/dist/forms/delight.d.ts +0 -1
  301. package/dist/forms/experience-chrome.d.ts +0 -1
  302. package/dist/forms/experience-plan.d.ts +0 -1
  303. package/dist/forms/field-controls.d.ts +0 -1
  304. package/dist/forms/field-interactions.d.ts +0 -1
  305. package/dist/forms/field-rules.d.ts +0 -1
  306. package/dist/forms/form-loaded-at.d.ts +12 -0
  307. package/dist/forms/form-values.d.ts +0 -1
  308. package/dist/forms/formsApi.d.ts +0 -1
  309. package/dist/forms/ga4-identity.d.ts +0 -1
  310. package/dist/forms/index.d.ts +0 -1
  311. package/dist/forms/index.js +20 -64
  312. package/dist/forms/normalize-config.d.ts +0 -1
  313. package/dist/forms/recaptcha-warmup.d.ts +0 -1
  314. package/dist/forms/recaptcha.d.ts +0 -1
  315. package/dist/forms/server.d.ts +0 -1
  316. package/dist/forms/server.js +11 -67
  317. package/dist/forms/static.d.ts +0 -1
  318. package/dist/forms/static.js +6 -17
  319. package/dist/forms/submitForm.d.ts +0 -1
  320. package/dist/forms/tracking-session.d.ts +0 -1
  321. package/dist/forms/types.d.ts +0 -1
  322. package/dist/forms/useForm.d.ts +0 -1
  323. package/dist/forms/useFormTracking.d.ts +0 -1
  324. package/dist/images/ManagedFavicon.d.ts +0 -1
  325. package/dist/images/ManagedImage.d.ts +0 -1
  326. package/dist/images/api.d.ts +0 -1
  327. package/dist/images/index.d.ts +0 -1
  328. package/dist/images/index.js +6 -49
  329. package/dist/images/server.d.ts +0 -1
  330. package/dist/images/server.js +3 -21
  331. package/dist/index.d.ts +13 -56
  332. package/dist/index.js +2 -426
  333. package/dist/landing/LandingPage.d.ts +0 -1
  334. package/dist/landing/contract.d.ts +0 -1
  335. package/dist/landing/index.d.ts +0 -1
  336. package/dist/landing/index.js +3 -22
  337. package/dist/landing/metadata.d.ts +0 -1
  338. package/dist/landing/server.d.ts +0 -1
  339. package/dist/landing/server.js +3 -17
  340. package/dist/layout/SiteKitClientProviders.d.ts +12 -3
  341. package/dist/layout/SiteKitLayout.d.ts +19 -4
  342. package/dist/layout/SpeculationRules.d.ts +0 -1
  343. package/dist/layout/client.d.ts +12 -3
  344. package/dist/layout/client.js +16 -26
  345. package/dist/layout/index.d.ts +0 -1
  346. package/dist/layout/index.js +43 -40
  347. package/dist/layout/types.d.ts +19 -1
  348. package/dist/llms/AEOComponents.d.ts +0 -1
  349. package/dist/llms/SpeakableSchema.d.ts +0 -1
  350. package/dist/llms/agent-access.d.ts +43 -0
  351. package/dist/llms/aiRobots.d.ts +0 -10
  352. package/dist/llms/api.d.ts +0 -1
  353. package/dist/llms/client.d.ts +0 -1
  354. package/dist/llms/client.js +4 -66
  355. package/dist/llms/contract.d.ts +1 -42
  356. package/dist/llms/contract.js +2 -41
  357. package/dist/llms/discovery-headers.d.ts +6 -1
  358. package/dist/llms/generateLLMsTxt.d.ts +0 -1
  359. package/dist/llms/handlers.d.ts +0 -1
  360. package/dist/llms/humanize-industry.d.ts +0 -1
  361. package/dist/llms/index.d.ts +3 -2
  362. package/dist/llms/index.js +17 -448
  363. package/dist/llms/links.d.ts +0 -1
  364. package/dist/llms/revalidate.d.ts +0 -1
  365. package/dist/llms/seo-revalidate.d.ts +0 -1
  366. package/dist/llms/sourcedFacts.d.ts +0 -1
  367. package/dist/llms/types.d.ts +6 -1
  368. package/dist/llms/writeLLMsTxt.d.ts +10 -1
  369. package/dist/manifest/index.d.ts +0 -1
  370. package/dist/manifest/index.js +4 -8
  371. package/dist/maps/GoogleMap.d.ts +0 -1
  372. package/dist/maps/NeighborhoodMap.d.ts +0 -1
  373. package/dist/maps/api.d.ts +0 -1
  374. package/dist/maps/index.d.ts +0 -1
  375. package/dist/maps/index.js +85 -92
  376. package/dist/maps/types.d.ts +0 -1
  377. package/dist/mcp/WebMcpTools.d.ts +0 -1
  378. package/dist/mcp/client.d.ts +0 -1
  379. package/dist/mcp/client.js +9 -12
  380. package/dist/mcp/declarative.d.ts +0 -1
  381. package/dist/mcp/handlers.d.ts +15 -2
  382. package/dist/mcp/index.d.ts +2 -3
  383. package/dist/mcp/index.js +50 -298
  384. package/dist/mcp/protocol.d.ts +0 -1
  385. package/dist/mcp/report.d.ts +27 -0
  386. package/dist/mcp/serverCard.d.ts +0 -1
  387. package/dist/mcp/sonor.d.ts +99 -0
  388. package/dist/mcp/sonor.js +482 -0
  389. package/dist/mcp/transport.d.ts +0 -1
  390. package/dist/mcp/transport.js +8 -24
  391. package/dist/mcp/types.d.ts +21 -1
  392. package/dist/motion/CountUp.d.ts +0 -1
  393. package/dist/motion/Parallax.d.ts +0 -1
  394. package/dist/motion/Reveal.d.ts +0 -1
  395. package/dist/motion/ScrollScene.d.ts +0 -1
  396. package/dist/motion/engine.d.ts +0 -1
  397. package/dist/motion/failsafe.d.ts +0 -1
  398. package/dist/motion/gsap.d.ts +0 -1
  399. package/dist/motion/gsap.js +17 -29
  400. package/dist/motion/index.d.ts +0 -1
  401. package/dist/motion/index.js +25 -51
  402. package/dist/motion/three.d.ts +0 -1
  403. package/dist/motion/three.js +16 -23
  404. package/dist/og/config.d.ts +0 -1
  405. package/dist/og/contrast.d.ts +0 -1
  406. package/dist/og/index.d.ts +0 -1
  407. package/dist/og/index.js +4 -43
  408. package/dist/og/pages.d.ts +0 -1
  409. package/dist/og/route-fit.d.ts +0 -1
  410. package/dist/og/route.d.ts +0 -1
  411. package/dist/og/route.js +3 -245
  412. package/dist/og/template.d.ts +0 -1
  413. package/dist/portfolio/contract.d.ts +1 -60
  414. package/dist/portfolio/contract.js +2 -43
  415. package/dist/proxy/index.d.ts +16 -14
  416. package/dist/proxy/index.js +20 -36
  417. package/dist/proxy/securityHeaders.d.ts +0 -1
  418. package/dist/proxy/segment.d.ts +0 -1
  419. package/dist/redirects/index.d.ts +0 -8
  420. package/dist/redirects/index.js +6 -41
  421. package/dist/reputation/TestimonialSection.d.ts +0 -1
  422. package/dist/reputation/api.d.ts +0 -1
  423. package/dist/reputation/index.d.ts +0 -1
  424. package/dist/reputation/index.js +4 -22
  425. package/dist/reputation/server.d.ts +0 -1
  426. package/dist/reputation/server.js +3 -17
  427. package/dist/reputation/types.d.ts +0 -1
  428. package/dist/robots/index.d.ts +1 -2
  429. package/dist/robots/index.js +4 -78
  430. package/dist/robots/indexnow.d.ts +0 -1
  431. package/dist/robots/indexnow.js +4 -39
  432. package/dist/robots/next-internals.d.ts +0 -1
  433. package/dist/seo/ManagedContent.d.ts +0 -1
  434. package/dist/seo/ManagedFAQ.d.ts +0 -1
  435. package/dist/seo/ManagedInternalLinks.d.ts +0 -1
  436. package/dist/seo/ManagedSchema.d.ts +0 -1
  437. package/dist/seo/ManagedScripts.d.ts +0 -1
  438. package/dist/seo/api.d.ts +0 -1
  439. package/dist/seo/client.d.ts +0 -1
  440. package/dist/seo/client.js +8 -18
  441. package/dist/seo/entry-indexnow.d.ts +2 -0
  442. package/dist/seo/entry-llms-client.d.ts +2 -0
  443. package/dist/seo/entry-llms-contract.d.ts +2 -0
  444. package/dist/seo/entry-llms.d.ts +2 -0
  445. package/dist/seo/entry-meta-contract.d.ts +2 -0
  446. package/dist/seo/entry-og-route.d.ts +2 -0
  447. package/dist/seo/entry-og.d.ts +2 -0
  448. package/dist/seo/entry-pages-contract.d.ts +2 -0
  449. package/dist/seo/entry-redirects.d.ts +2 -0
  450. package/dist/seo/entry-robots.d.ts +2 -0
  451. package/dist/seo/entry-sitemap.d.ts +2 -0
  452. package/dist/seo/getManagedMetadata.d.ts +0 -1
  453. package/dist/seo/groundingSchema.d.ts +0 -1
  454. package/dist/seo/index.d.ts +0 -2
  455. package/dist/seo/index.js +88 -317
  456. package/dist/seo/indexnow.d.ts +2 -0
  457. package/dist/seo/indexnow.js +4 -0
  458. package/dist/seo/llms/client.d.ts +2 -0
  459. package/dist/seo/llms/client.js +4 -0
  460. package/dist/seo/llms/contract.d.ts +2 -0
  461. package/dist/seo/llms/contract.js +2 -0
  462. package/dist/seo/llms.d.ts +2 -0
  463. package/dist/seo/llms.js +17 -0
  464. package/dist/seo/load-env.d.ts +12 -0
  465. package/dist/seo/meta/contract.d.ts +2 -0
  466. package/dist/seo/meta/contract.js +2 -0
  467. package/dist/seo/og/route.d.ts +2 -0
  468. package/dist/seo/og/route.js +3 -0
  469. package/dist/seo/og.d.ts +2 -0
  470. package/dist/seo/og.js +4 -0
  471. package/dist/seo/pages/contract.d.ts +2 -0
  472. package/dist/seo/pages/contract.js +4 -0
  473. package/dist/seo/redirects.d.ts +2 -0
  474. package/dist/seo/redirects.js +6 -0
  475. package/dist/seo/register-sitemap-cli-impl.d.ts +6 -1
  476. package/dist/seo/register-sitemap-cli.d.ts +1 -1
  477. package/dist/seo/register-sitemap-cli.js +73 -66
  478. package/dist/seo/register-sitemap-request.d.ts +0 -1
  479. package/dist/seo/robots.d.ts +2 -0
  480. package/dist/seo/robots.js +4 -0
  481. package/dist/seo/routing.d.ts +0 -1
  482. package/dist/seo/safeJsonLd.d.ts +0 -1
  483. package/dist/seo/schema-filter.d.ts +0 -1
  484. package/dist/seo/server-api.d.ts +0 -1
  485. package/dist/seo/server.d.ts +0 -1
  486. package/dist/seo/server.js +10 -80
  487. package/dist/seo/sitemap.d.ts +2 -0
  488. package/dist/seo/sitemap.js +15 -0
  489. package/dist/seo/types.d.ts +0 -1
  490. package/dist/seo/withManagedMetadata.d.ts +0 -1
  491. package/dist/seo-meta/contract.d.ts +1 -60
  492. package/dist/seo-meta/contract.js +2 -41
  493. package/dist/seo-pages/contract.d.ts +1 -61
  494. package/dist/seo-pages/contract.js +4 -49
  495. package/dist/server/index.d.ts +0 -1
  496. package/dist/server/index.js +6 -32
  497. package/dist/server/mint-site-token.d.ts +0 -1
  498. package/dist/server/server-fetch.d.ts +0 -1
  499. package/dist/server-api-GJJQZVG7.js +8 -0
  500. package/dist/shared/build-entries.d.ts +53 -14
  501. package/dist/shared/clock.d.ts +20 -0
  502. package/dist/shared/color.d.ts +1 -39
  503. package/dist/shared/defer.d.ts +0 -1
  504. package/dist/shared/fetchWithRetry.d.ts +0 -1
  505. package/dist/shared/frame.d.ts +8 -1
  506. package/dist/shared/fresh-fetch.d.ts +0 -1
  507. package/dist/shared/glass.d.ts +0 -1
  508. package/dist/shared/identity.d.ts +0 -1
  509. package/dist/shared/markdown.d.ts +40 -0
  510. package/dist/shared/next-files.d.ts +0 -1
  511. package/dist/shared/page-leave.d.ts +0 -1
  512. package/dist/shared/publishCredential.d.ts +0 -1
  513. package/dist/shared/reporting-gate.d.ts +0 -1
  514. package/dist/shared/request-guards.d.ts +0 -1
  515. package/dist/shared/siteToken.d.ts +0 -1
  516. package/dist/shared/sonorFetch.d.ts +0 -1
  517. package/dist/shared/source-graph.d.ts +0 -1
  518. package/dist/shared/uuid.d.ts +0 -1
  519. package/dist/shared/version.d.ts +1 -2
  520. package/dist/shared/visual-viewport-gap.d.ts +0 -1
  521. package/dist/signal/SignalBridge.d.ts +0 -1
  522. package/dist/signal/SignalCore.d.ts +0 -1
  523. package/dist/signal/SignalExperiment.d.ts +0 -1
  524. package/dist/signal/index.d.ts +0 -1
  525. package/dist/signal/index.js +72 -44
  526. package/dist/signal/store.d.ts +0 -1
  527. package/dist/signal/types.d.ts +0 -1
  528. package/dist/site-config/index.d.ts +0 -1
  529. package/dist/site-config/index.js +2 -17
  530. package/dist/sitemap/discover.d.ts +0 -1
  531. package/dist/sitemap/index.d.ts +6 -1
  532. package/dist/sitemap/index.js +15 -553
  533. package/dist/sitemap/shared.d.ts +0 -1
  534. package/dist/sites/contract.d.ts +1 -51
  535. package/dist/sites/contract.js +3 -38
  536. package/dist/sites/normalize.d.ts +1 -36
  537. package/dist/sites/resolve.d.ts +0 -1
  538. package/dist/sites/site-param.d.ts +0 -1
  539. package/dist/slots/ManagedSlot.d.ts +0 -1
  540. package/dist/slots/contract.d.ts +1 -82
  541. package/dist/slots/contract.js +2 -41
  542. package/dist/slots/index.d.ts +0 -1
  543. package/dist/slots/index.js +5 -182
  544. package/dist/slots/revalidate.d.ts +0 -1
  545. package/dist/slots/server-api.d.ts +0 -1
  546. package/dist/socket-loader-R24ZSRSQ.js +12 -0
  547. package/dist/sync/AddToCalendar.d.ts +0 -1
  548. package/dist/sync/BookingWidget.d.ts +0 -1
  549. package/dist/sync/MeetingFormatStep.d.ts +0 -1
  550. package/dist/sync/api.d.ts +0 -1
  551. package/dist/sync/booking-flow.d.ts +0 -1
  552. package/dist/sync/index.d.ts +0 -1
  553. package/dist/sync/index.js +6 -64
  554. package/dist/sync/types.d.ts +0 -1
  555. package/dist/types.d.ts +0 -63
  556. package/dist/web-vitals.attribution-N2PCCF4Q.js +522 -0
  557. package/dist/website/BlocksPopup.d.ts +25 -0
  558. package/dist/website/PopupBlocks.d.ts +57 -0
  559. package/dist/website/SiteDesignReporter.d.ts +28 -0
  560. package/dist/website/cms/server.d.ts +2 -0
  561. package/dist/website/cms/server.js +5 -0
  562. package/dist/website/cms-server.d.ts +2 -0
  563. package/dist/website/cms.d.ts +2 -0
  564. package/dist/website/cms.js +5 -0
  565. package/dist/website/contract.d.ts +1 -0
  566. package/dist/website/contract.js +3 -0
  567. package/dist/website/cta-bar.d.ts +2 -0
  568. package/dist/website/cta-bar.js +5 -0
  569. package/dist/website/design.d.ts +165 -0
  570. package/dist/website/images/server.d.ts +2 -0
  571. package/dist/website/images/server.js +3 -0
  572. package/dist/website/images-server.d.ts +2 -0
  573. package/dist/website/images.d.ts +2 -0
  574. package/dist/website/images.js +6 -0
  575. package/dist/website/index.d.ts +17 -0
  576. package/dist/website/index.js +13 -0
  577. package/dist/website/landing/server.d.ts +2 -0
  578. package/dist/website/landing/server.js +3 -0
  579. package/dist/website/landing-server.d.ts +2 -0
  580. package/dist/website/landing.d.ts +2 -0
  581. package/dist/website/landing.js +3 -0
  582. package/dist/website/popups.d.ts +17 -0
  583. package/dist/website/popups.js +22 -0
  584. package/dist/website/slots/contract.d.ts +2 -0
  585. package/dist/website/slots/contract.js +2 -0
  586. package/dist/website/slots-contract.d.ts +2 -0
  587. package/dist/website/slots.d.ts +3 -0
  588. package/dist/website/slots.js +5 -0
  589. package/dist/writeLLMsTxt-UMHKGNRR.js +11 -0
  590. package/package.json +175 -147
  591. package/skills/site-kit/SKILL.md +9 -3
  592. package/dist/AnalyticsProvider-4K5T7OQ7.mjs +0 -12
  593. package/dist/AnalyticsProvider-4K5T7OQ7.mjs.map +0 -1
  594. package/dist/AnalyticsProvider-QXZN5O6D.js +0 -33
  595. package/dist/AnalyticsProvider-QXZN5O6D.js.map +0 -1
  596. package/dist/ArticleFaqSection-3KZ24MFS.js +0 -13
  597. package/dist/ArticleFaqSection-3KZ24MFS.js.map +0 -1
  598. package/dist/ArticleFaqSection-XZPXJVH4.mjs +0 -11
  599. package/dist/ArticleFaqSection-XZPXJVH4.mjs.map +0 -1
  600. package/dist/ArticleViewTracker-BUG2TOHS.mjs +0 -51
  601. package/dist/ArticleViewTracker-BUG2TOHS.mjs.map +0 -1
  602. package/dist/ArticleViewTracker-FFMHR7AY.js +0 -54
  603. package/dist/ArticleViewTracker-FFMHR7AY.js.map +0 -1
  604. package/dist/ChatWidget-CRQPBDEF.mjs +0 -17
  605. package/dist/ChatWidget-CRQPBDEF.mjs.map +0 -1
  606. package/dist/ChatWidget-XFYLVXAX.js +0 -34
  607. package/dist/ChatWidget-XFYLVXAX.js.map +0 -1
  608. package/dist/DatePicker-4WNKNNCV.mjs +0 -4
  609. package/dist/DatePicker-4WNKNNCV.mjs.map +0 -1
  610. package/dist/DatePicker-VPZR7RU3.js +0 -13
  611. package/dist/DatePicker-VPZR7RU3.js.map +0 -1
  612. package/dist/EngageWidget-S234YAT2.js +0 -21
  613. package/dist/EngageWidget-S234YAT2.js.map +0 -1
  614. package/dist/EngageWidget-SQU4T7CI.mjs +0 -12
  615. package/dist/EngageWidget-SQU4T7CI.mjs.map +0 -1
  616. package/dist/FileField-HNEBEBLB.mjs +0 -85
  617. package/dist/FileField-HNEBEBLB.mjs.map +0 -1
  618. package/dist/FileField-XG4EYAZW.js +0 -91
  619. package/dist/FileField-XG4EYAZW.js.map +0 -1
  620. package/dist/FormCelebration-7CBANVNS.mjs +0 -4
  621. package/dist/FormCelebration-7CBANVNS.mjs.map +0 -1
  622. package/dist/FormCelebration-O2O5S6JI.js +0 -13
  623. package/dist/FormCelebration-O2O5S6JI.js.map +0 -1
  624. package/dist/FormSpotlight-IODREOPN.js +0 -761
  625. package/dist/FormSpotlight-IODREOPN.js.map +0 -1
  626. package/dist/FormSpotlight-VKD774PZ.mjs +0 -756
  627. package/dist/FormSpotlight-VKD774PZ.mjs.map +0 -1
  628. package/dist/FormStage-37KKZQH4.js +0 -422
  629. package/dist/FormStage-37KKZQH4.js.map +0 -1
  630. package/dist/FormStage-PRZNRYNC.mjs +0 -420
  631. package/dist/FormStage-PRZNRYNC.mjs.map +0 -1
  632. package/dist/ManagedForm-4PZOCKCV.mjs +0 -16
  633. package/dist/ManagedForm-4PZOCKCV.mjs.map +0 -1
  634. package/dist/ManagedForm-JCMEE626.js +0 -25
  635. package/dist/ManagedForm-JCMEE626.js.map +0 -1
  636. package/dist/ManagedNewsletterForm-CTC33B2U.js +0 -66
  637. package/dist/ManagedNewsletterForm-CTC33B2U.js.map +0 -1
  638. package/dist/ManagedNewsletterForm-KMZG24OE.mjs +0 -64
  639. package/dist/ManagedNewsletterForm-KMZG24OE.mjs.map +0 -1
  640. package/dist/SignalCore-YHT7WPXV.js +0 -326
  641. package/dist/SignalCore-YHT7WPXV.js.map +0 -1
  642. package/dist/SignalCore-YIPKKIUG.mjs +0 -324
  643. package/dist/SignalCore-YIPKKIUG.mjs.map +0 -1
  644. package/dist/SitemapSync-GN4OXIM2.js +0 -18
  645. package/dist/SitemapSync-GN4OXIM2.js.map +0 -1
  646. package/dist/SitemapSync-NG763CGN.mjs +0 -9
  647. package/dist/SitemapSync-NG763CGN.mjs.map +0 -1
  648. package/dist/SitemapSync.d.ts.map +0 -1
  649. package/dist/admin-auth/index.d.ts.map +0 -1
  650. package/dist/admin-auth/index.js.map +0 -1
  651. package/dist/admin-auth/index.mjs +0 -0
  652. package/dist/admin-auth/index.mjs.map +0 -1
  653. package/dist/admin-auth/session.d.ts.map +0 -1
  654. package/dist/affiliates/AffiliatesWidget.d.ts.map +0 -1
  655. package/dist/affiliates/api.d.ts.map +0 -1
  656. package/dist/affiliates/index.d.ts.map +0 -1
  657. package/dist/affiliates/types.d.ts.map +0 -1
  658. package/dist/affiliates/useAffiliates.d.ts.map +0 -1
  659. package/dist/analytics/AnalyticsProvider.d.ts.map +0 -1
  660. package/dist/analytics/WebVitals.d.ts.map +0 -1
  661. package/dist/analytics/dispatch.d.ts.map +0 -1
  662. package/dist/analytics/index.d.ts.map +0 -1
  663. package/dist/analytics/index.js.map +0 -1
  664. package/dist/analytics/index.mjs +0 -14
  665. package/dist/analytics/index.mjs.map +0 -1
  666. package/dist/analytics/measurement-context.d.ts.map +0 -1
  667. package/dist/analytics/page-observation.d.ts.map +0 -1
  668. package/dist/analytics/send-gate.d.ts.map +0 -1
  669. package/dist/analytics/types.d.ts.map +0 -1
  670. package/dist/analytics/useContactTracking.d.ts.map +0 -1
  671. package/dist/api-D745LGGU.mjs +0 -183
  672. package/dist/api-XR5APCH3.js +0 -201
  673. package/dist/article-styles-DACUAOVT.mjs +0 -592
  674. package/dist/article-styles-DACUAOVT.mjs.map +0 -1
  675. package/dist/article-styles-JHHTNHOK.js +0 -595
  676. package/dist/article-styles-JHHTNHOK.js.map +0 -1
  677. package/dist/article-tables-EWXG4LNP.js +0 -17
  678. package/dist/article-tables-EWXG4LNP.js.map +0 -1
  679. package/dist/article-tables-OGE52LNT.mjs +0 -4
  680. package/dist/article-tables-OGE52LNT.mjs.map +0 -1
  681. package/dist/articles/Article.d.ts.map +0 -1
  682. package/dist/articles/ArticleFAQ.d.ts.map +0 -1
  683. package/dist/articles/ArticleFaqSection.d.ts.map +0 -1
  684. package/dist/articles/ArticleList.d.ts.map +0 -1
  685. package/dist/articles/ArticleViewTracker.d.ts.map +0 -1
  686. package/dist/articles/AuthorCard.d.ts.map +0 -1
  687. package/dist/articles/AuthorPage.d.ts.map +0 -1
  688. package/dist/articles/ClusterLandingPage.d.ts.map +0 -1
  689. package/dist/articles/ClusterNavigation.d.ts.map +0 -1
  690. package/dist/articles/ManagedNewsletterForm.d.ts.map +0 -1
  691. package/dist/articles/NewsletterShell.d.ts.map +0 -1
  692. package/dist/articles/NewsletterWidget.d.ts.map +0 -1
  693. package/dist/articles/PublicationLayout.d.ts.map +0 -1
  694. package/dist/articles/PublicationSidebar.d.ts.map +0 -1
  695. package/dist/articles/RelatedPosts.d.ts.map +0 -1
  696. package/dist/articles/ServiceCallout.d.ts.map +0 -1
  697. package/dist/articles/TableOfContents.d.ts.map +0 -1
  698. package/dist/articles/article-styles.d.ts.map +0 -1
  699. package/dist/articles/article-tables.d.ts.map +0 -1
  700. package/dist/articles/artwork.d.ts.map +0 -1
  701. package/dist/articles/author-schema.d.ts.map +0 -1
  702. package/dist/articles/author-social.d.ts.map +0 -1
  703. package/dist/articles/excerpt.d.ts.map +0 -1
  704. package/dist/articles/index.d.ts.map +0 -1
  705. package/dist/articles/index.js.map +0 -1
  706. package/dist/articles/index.mjs +0 -457
  707. package/dist/articles/index.mjs.map +0 -1
  708. package/dist/articles/news-sitemap.d.ts.map +0 -1
  709. package/dist/articles/processArticleHtml.d.ts.map +0 -1
  710. package/dist/articles/public-reads.d.ts.map +0 -1
  711. package/dist/articles/reading-time.d.ts.map +0 -1
  712. package/dist/articles/routes.d.ts.map +0 -1
  713. package/dist/articles/server-core.d.ts.map +0 -1
  714. package/dist/articles/server-ui.d.ts.map +0 -1
  715. package/dist/articles/server-ui.js.map +0 -1
  716. package/dist/articles/server-ui.mjs +0 -1098
  717. package/dist/articles/server-ui.mjs.map +0 -1
  718. package/dist/articles/server.d.ts.map +0 -1
  719. package/dist/articles/server.js.map +0 -1
  720. package/dist/articles/server.mjs +0 -11
  721. package/dist/articles/server.mjs.map +0 -1
  722. package/dist/articles/types.d.ts.map +0 -1
  723. package/dist/articles/widget-styles.d.ts.map +0 -1
  724. package/dist/brand/extract-brand-profile.d.ts.map +0 -1
  725. package/dist/chunk-24LFAQEG.mjs +0 -480
  726. package/dist/chunk-24LFAQEG.mjs.map +0 -1
  727. package/dist/chunk-2FEQ6TYD.mjs +0 -37
  728. package/dist/chunk-2FEQ6TYD.mjs.map +0 -1
  729. package/dist/chunk-3AOKYAZ2.js +0 -135
  730. package/dist/chunk-3AOKYAZ2.js.map +0 -1
  731. package/dist/chunk-3DWIYCQX.js +0 -30
  732. package/dist/chunk-3DWIYCQX.js.map +0 -1
  733. package/dist/chunk-3SDMJMN2.js +0 -71
  734. package/dist/chunk-3SDMJMN2.js.map +0 -1
  735. package/dist/chunk-3T2CVHFO.mjs +0 -453
  736. package/dist/chunk-3T2CVHFO.mjs.map +0 -1
  737. package/dist/chunk-4BEGKFMN.js +0 -133
  738. package/dist/chunk-4BEGKFMN.js.map +0 -1
  739. package/dist/chunk-4C3INRHE.mjs +0 -1073
  740. package/dist/chunk-4C3INRHE.mjs.map +0 -1
  741. package/dist/chunk-4KAMU5HD.mjs +0 -16
  742. package/dist/chunk-4KAMU5HD.mjs.map +0 -1
  743. package/dist/chunk-4U5NCKQY.mjs +0 -39
  744. package/dist/chunk-4U5NCKQY.mjs.map +0 -1
  745. package/dist/chunk-4WCA2HM6.mjs +0 -57
  746. package/dist/chunk-4WCA2HM6.mjs.map +0 -1
  747. package/dist/chunk-54CARHDR.mjs +0 -95
  748. package/dist/chunk-54CARHDR.mjs.map +0 -1
  749. package/dist/chunk-55J2KE7D.js +0 -60
  750. package/dist/chunk-55J2KE7D.js.map +0 -1
  751. package/dist/chunk-5BARLEAI.mjs +0 -102
  752. package/dist/chunk-5BARLEAI.mjs.map +0 -1
  753. package/dist/chunk-5F2FIM5A.mjs +0 -135
  754. package/dist/chunk-5F2FIM5A.mjs.map +0 -1
  755. package/dist/chunk-5RNAUYWE.js +0 -50
  756. package/dist/chunk-5RNAUYWE.js.map +0 -1
  757. package/dist/chunk-5SANRSX3.mjs +0 -17
  758. package/dist/chunk-5SANRSX3.mjs.map +0 -1
  759. package/dist/chunk-5T3J24K4.mjs +0 -131
  760. package/dist/chunk-5T3J24K4.mjs.map +0 -1
  761. package/dist/chunk-5W4S7XQD.js +0 -141
  762. package/dist/chunk-5W4S7XQD.js.map +0 -1
  763. package/dist/chunk-5XFFUP6D.js +0 -100
  764. package/dist/chunk-5XFFUP6D.js.map +0 -1
  765. package/dist/chunk-5YVQWLSQ.mjs +0 -47
  766. package/dist/chunk-5YVQWLSQ.mjs.map +0 -1
  767. package/dist/chunk-64BOVMXG.mjs +0 -68
  768. package/dist/chunk-64BOVMXG.mjs.map +0 -1
  769. package/dist/chunk-662YHKWW.mjs +0 -10
  770. package/dist/chunk-662YHKWW.mjs.map +0 -1
  771. package/dist/chunk-6C47333H.mjs +0 -55
  772. package/dist/chunk-6C47333H.mjs.map +0 -1
  773. package/dist/chunk-6EDVCUAG.mjs +0 -29
  774. package/dist/chunk-6EDVCUAG.mjs.map +0 -1
  775. package/dist/chunk-6FNFM7JL.js +0 -113
  776. package/dist/chunk-6FNFM7JL.js.map +0 -1
  777. package/dist/chunk-6PJTLBRR.mjs +0 -11
  778. package/dist/chunk-6PJTLBRR.mjs.map +0 -1
  779. package/dist/chunk-6QPKC6XP.mjs +0 -1416
  780. package/dist/chunk-6QPKC6XP.mjs.map +0 -1
  781. package/dist/chunk-6XNEGG5B.mjs +0 -137
  782. package/dist/chunk-6XNEGG5B.mjs.map +0 -1
  783. package/dist/chunk-7K6L33BX.mjs +0 -24842
  784. package/dist/chunk-7RLL67F3.js +0 -47
  785. package/dist/chunk-7RLL67F3.js.map +0 -1
  786. package/dist/chunk-7THQ4UW3.js +0 -69
  787. package/dist/chunk-7THQ4UW3.js.map +0 -1
  788. package/dist/chunk-A6UYV475.mjs +0 -45
  789. package/dist/chunk-A6UYV475.mjs.map +0 -1
  790. package/dist/chunk-AAZNH3MA.mjs +0 -23
  791. package/dist/chunk-AAZNH3MA.mjs.map +0 -1
  792. package/dist/chunk-AEN7EL6N.js +0 -161
  793. package/dist/chunk-AEN7EL6N.js.map +0 -1
  794. package/dist/chunk-AGIMH67E.mjs +0 -26
  795. package/dist/chunk-AGIMH67E.mjs.map +0 -1
  796. package/dist/chunk-AS2HUIDW.mjs +0 -16
  797. package/dist/chunk-AS2HUIDW.mjs.map +0 -1
  798. package/dist/chunk-ATPQ6264.js +0 -24860
  799. package/dist/chunk-B22WSN4L.mjs +0 -59
  800. package/dist/chunk-B22WSN4L.mjs.map +0 -1
  801. package/dist/chunk-BBBJHYPH.js +0 -19
  802. package/dist/chunk-BBBJHYPH.js.map +0 -1
  803. package/dist/chunk-BEXTDHO4.mjs +0 -57
  804. package/dist/chunk-BEXTDHO4.mjs.map +0 -1
  805. package/dist/chunk-BI7DH42Z.mjs +0 -101
  806. package/dist/chunk-BI7DH42Z.mjs.map +0 -1
  807. package/dist/chunk-BQP6JIE2.mjs +0 -28
  808. package/dist/chunk-BQP6JIE2.mjs.map +0 -1
  809. package/dist/chunk-BZR6RUIN.mjs +0 -128
  810. package/dist/chunk-BZR6RUIN.mjs.map +0 -1
  811. package/dist/chunk-C2CTLLIO.mjs +0 -72
  812. package/dist/chunk-C2CTLLIO.mjs.map +0 -1
  813. package/dist/chunk-C5VITBN7.mjs +0 -220
  814. package/dist/chunk-C5VITBN7.mjs.map +0 -1
  815. package/dist/chunk-C7J4XLBN.js +0 -134
  816. package/dist/chunk-C7J4XLBN.js.map +0 -1
  817. package/dist/chunk-CDRQYJUT.js +0 -355
  818. package/dist/chunk-CDRQYJUT.js.map +0 -1
  819. package/dist/chunk-CFRJ2MK5.mjs +0 -16
  820. package/dist/chunk-CFRJ2MK5.mjs.map +0 -1
  821. package/dist/chunk-CIB3RHNZ.js +0 -8
  822. package/dist/chunk-CIB3RHNZ.js.map +0 -1
  823. package/dist/chunk-CIM5W3UO.js +0 -26
  824. package/dist/chunk-CIM5W3UO.js.map +0 -1
  825. package/dist/chunk-CLO3K7PF.js +0 -19
  826. package/dist/chunk-CLO3K7PF.js.map +0 -1
  827. package/dist/chunk-CU6OGBKK.mjs +0 -68
  828. package/dist/chunk-CU6OGBKK.mjs.map +0 -1
  829. package/dist/chunk-CUNZAD46.js +0 -53
  830. package/dist/chunk-CUNZAD46.js.map +0 -1
  831. package/dist/chunk-CUZ3I6CO.js +0 -23
  832. package/dist/chunk-CUZ3I6CO.js.map +0 -1
  833. package/dist/chunk-CXAXZFFW.js +0 -157
  834. package/dist/chunk-CXAXZFFW.js.map +0 -1
  835. package/dist/chunk-DA7IANFG.mjs +0 -37
  836. package/dist/chunk-DA7IANFG.mjs.map +0 -1
  837. package/dist/chunk-DV2LJYFD.js +0 -14
  838. package/dist/chunk-DV2LJYFD.js.map +0 -1
  839. package/dist/chunk-DV5KVNA7.js +0 -45
  840. package/dist/chunk-DV5KVNA7.js.map +0 -1
  841. package/dist/chunk-DVYYGHSG.js +0 -285
  842. package/dist/chunk-DVYYGHSG.js.map +0 -1
  843. package/dist/chunk-EDLNMGQC.mjs +0 -65
  844. package/dist/chunk-EDLNMGQC.mjs.map +0 -1
  845. package/dist/chunk-EHJANA5C.js +0 -231
  846. package/dist/chunk-EHJANA5C.js.map +0 -1
  847. package/dist/chunk-EMHSHAVW.js +0 -19
  848. package/dist/chunk-EMHSHAVW.js.map +0 -1
  849. package/dist/chunk-ESP5RMB7.js +0 -42
  850. package/dist/chunk-ESP5RMB7.js.map +0 -1
  851. package/dist/chunk-EWDWLY74.js +0 -158
  852. package/dist/chunk-EWDWLY74.js.map +0 -1
  853. package/dist/chunk-F2GECCK7.js +0 -483
  854. package/dist/chunk-F2GECCK7.js.map +0 -1
  855. package/dist/chunk-FCAHV5P3.mjs +0 -45
  856. package/dist/chunk-FCAHV5P3.mjs.map +0 -1
  857. package/dist/chunk-G6WF4G3E.js +0 -43
  858. package/dist/chunk-G6WF4G3E.js.map +0 -1
  859. package/dist/chunk-GCPPXUAI.js +0 -72
  860. package/dist/chunk-GCPPXUAI.js.map +0 -1
  861. package/dist/chunk-GFSQMK35.mjs +0 -127
  862. package/dist/chunk-GFSQMK35.mjs.map +0 -1
  863. package/dist/chunk-GGGX54ZE.js +0 -8071
  864. package/dist/chunk-GGGX54ZE.js.map +0 -1
  865. package/dist/chunk-GSRT66PA.js +0 -80
  866. package/dist/chunk-GSRT66PA.js.map +0 -1
  867. package/dist/chunk-GSU6VTCZ.mjs +0 -165
  868. package/dist/chunk-GSU6VTCZ.mjs.map +0 -1
  869. package/dist/chunk-GXSSFQ5D.js +0 -1677
  870. package/dist/chunk-GXSSFQ5D.js.map +0 -1
  871. package/dist/chunk-H4TSADY3.mjs +0 -761
  872. package/dist/chunk-H4TSADY3.mjs.map +0 -1
  873. package/dist/chunk-H6AU3WKF.js +0 -108
  874. package/dist/chunk-H6AU3WKF.js.map +0 -1
  875. package/dist/chunk-HGNSJXWT.js +0 -55
  876. package/dist/chunk-HGNSJXWT.js.map +0 -1
  877. package/dist/chunk-HIZJD7TU.mjs +0 -326
  878. package/dist/chunk-HIZJD7TU.mjs.map +0 -1
  879. package/dist/chunk-HPGPOUHU.mjs +0 -105
  880. package/dist/chunk-HPGPOUHU.mjs.map +0 -1
  881. package/dist/chunk-HSLPN3QK.js +0 -106
  882. package/dist/chunk-HSLPN3QK.js.map +0 -1
  883. package/dist/chunk-HTCNRTN6.js +0 -791
  884. package/dist/chunk-HTCNRTN6.js.map +0 -1
  885. package/dist/chunk-HXHDOIV6.js +0 -41
  886. package/dist/chunk-HXHDOIV6.js.map +0 -1
  887. package/dist/chunk-IBJOGXQI.js +0 -33
  888. package/dist/chunk-IBJOGXQI.js.map +0 -1
  889. package/dist/chunk-IMWON7OV.mjs +0 -27
  890. package/dist/chunk-IMWON7OV.mjs.map +0 -1
  891. package/dist/chunk-IWSN4DGG.js +0 -132
  892. package/dist/chunk-IWSN4DGG.js.map +0 -1
  893. package/dist/chunk-J7QI3GDX.js +0 -12
  894. package/dist/chunk-J7QI3GDX.js.map +0 -1
  895. package/dist/chunk-JA77WXRE.js +0 -30
  896. package/dist/chunk-JA77WXRE.js.map +0 -1
  897. package/dist/chunk-JONWE26J.js +0 -81
  898. package/dist/chunk-JONWE26J.js.map +0 -1
  899. package/dist/chunk-JP5WGL75.js +0 -62
  900. package/dist/chunk-JP5WGL75.js.map +0 -1
  901. package/dist/chunk-JSXLTZUP.mjs +0 -255
  902. package/dist/chunk-JSXLTZUP.mjs.map +0 -1
  903. package/dist/chunk-JX3PO2MH.js +0 -53
  904. package/dist/chunk-JX3PO2MH.js.map +0 -1
  905. package/dist/chunk-JXRGIE3V.mjs +0 -1669
  906. package/dist/chunk-JXRGIE3V.mjs.map +0 -1
  907. package/dist/chunk-K3PVUXKB.mjs +0 -6
  908. package/dist/chunk-K3PVUXKB.mjs.map +0 -1
  909. package/dist/chunk-KHPJ3CEL.js +0 -72
  910. package/dist/chunk-KHPJ3CEL.js.map +0 -1
  911. package/dist/chunk-KOPFFKG2.mjs +0 -132
  912. package/dist/chunk-KOPFFKG2.mjs.map +0 -1
  913. package/dist/chunk-KP5BFPGT.js +0 -44
  914. package/dist/chunk-KP5BFPGT.js.map +0 -1
  915. package/dist/chunk-KR7ATPAN.js +0 -52
  916. package/dist/chunk-KR7ATPAN.js.map +0 -1
  917. package/dist/chunk-KZBDH5A3.js +0 -130
  918. package/dist/chunk-KZBDH5A3.js.map +0 -1
  919. package/dist/chunk-KZVSB5WE.mjs +0 -21
  920. package/dist/chunk-KZVSB5WE.mjs.map +0 -1
  921. package/dist/chunk-LPDXS2B2.mjs +0 -932
  922. package/dist/chunk-LPDXS2B2.mjs.map +0 -1
  923. package/dist/chunk-LVGSOW2F.js +0 -32
  924. package/dist/chunk-LVGSOW2F.js.map +0 -1
  925. package/dist/chunk-M2N7NY3V.js +0 -103
  926. package/dist/chunk-M2N7NY3V.js.map +0 -1
  927. package/dist/chunk-M3JCHPK3.mjs +0 -782
  928. package/dist/chunk-M3JCHPK3.mjs.map +0 -1
  929. package/dist/chunk-M62L2N5A.mjs +0 -193
  930. package/dist/chunk-M62L2N5A.mjs.map +0 -1
  931. package/dist/chunk-MLVHVKFT.mjs +0 -148
  932. package/dist/chunk-MLVHVKFT.mjs.map +0 -1
  933. package/dist/chunk-MU3D5IO7.mjs +0 -283
  934. package/dist/chunk-MU3D5IO7.mjs.map +0 -1
  935. package/dist/chunk-MU7DTEUF.mjs +0 -77
  936. package/dist/chunk-MU7DTEUF.mjs.map +0 -1
  937. package/dist/chunk-MVHR77V4.js +0 -205
  938. package/dist/chunk-MVHR77V4.js.map +0 -1
  939. package/dist/chunk-NBOBOYMT.js +0 -52
  940. package/dist/chunk-NBOBOYMT.js.map +0 -1
  941. package/dist/chunk-NE6QGHFT.mjs +0 -240
  942. package/dist/chunk-NE6QGHFT.mjs.map +0 -1
  943. package/dist/chunk-NSWO43XW.mjs +0 -39
  944. package/dist/chunk-NSWO43XW.mjs.map +0 -1
  945. package/dist/chunk-NYXENHD2.mjs +0 -96
  946. package/dist/chunk-NYXENHD2.mjs.map +0 -1
  947. package/dist/chunk-O5GHP7UO.js +0 -142
  948. package/dist/chunk-O5GHP7UO.js.map +0 -1
  949. package/dist/chunk-OBKS3CPP.mjs +0 -50
  950. package/dist/chunk-OBKS3CPP.mjs.map +0 -1
  951. package/dist/chunk-OGNX6JT4.js +0 -222
  952. package/dist/chunk-OGNX6JT4.js.map +0 -1
  953. package/dist/chunk-OIPG3EGM.js +0 -771
  954. package/dist/chunk-OIPG3EGM.js.map +0 -1
  955. package/dist/chunk-OSU4QA5M.js +0 -260
  956. package/dist/chunk-OSU4QA5M.js.map +0 -1
  957. package/dist/chunk-P4Y75QSU.js +0 -19
  958. package/dist/chunk-P4Y75QSU.js.map +0 -1
  959. package/dist/chunk-PENNTSJE.mjs +0 -99
  960. package/dist/chunk-PENNTSJE.mjs.map +0 -1
  961. package/dist/chunk-PRAHDLKT.js +0 -67
  962. package/dist/chunk-PRAHDLKT.js.map +0 -1
  963. package/dist/chunk-QAQTDHHT.mjs +0 -1102
  964. package/dist/chunk-QAQTDHHT.mjs.map +0 -1
  965. package/dist/chunk-QOKMH2TD.mjs +0 -21
  966. package/dist/chunk-QOKMH2TD.mjs.map +0 -1
  967. package/dist/chunk-QRHVMTHF.mjs +0 -94
  968. package/dist/chunk-QRHVMTHF.mjs.map +0 -1
  969. package/dist/chunk-QZF5NTXQ.mjs +0 -28
  970. package/dist/chunk-QZF5NTXQ.mjs.map +0 -1
  971. package/dist/chunk-R5F2JQVX.mjs +0 -41
  972. package/dist/chunk-R5F2JQVX.mjs.map +0 -1
  973. package/dist/chunk-RC4WWQXR.js +0 -47
  974. package/dist/chunk-RC4WWQXR.js.map +0 -1
  975. package/dist/chunk-RCB6HEHM.mjs +0 -349
  976. package/dist/chunk-RCB6HEHM.mjs.map +0 -1
  977. package/dist/chunk-RH4XEXTK.mjs +0 -323
  978. package/dist/chunk-RI6DFQCA.js +0 -539
  979. package/dist/chunk-RI6DFQCA.js.map +0 -1
  980. package/dist/chunk-RLUNEEGM.js +0 -336
  981. package/dist/chunk-RLUNEEGM.js.map +0 -1
  982. package/dist/chunk-RQROZLH3.js +0 -1153
  983. package/dist/chunk-RQROZLH3.js.map +0 -1
  984. package/dist/chunk-S5QKNXLQ.js +0 -1430
  985. package/dist/chunk-S5QKNXLQ.js.map +0 -1
  986. package/dist/chunk-SBTA6B6Y.mjs +0 -8014
  987. package/dist/chunk-SBTA6B6Y.mjs.map +0 -1
  988. package/dist/chunk-SFMNUVDN.mjs +0 -49
  989. package/dist/chunk-SFMNUVDN.mjs.map +0 -1
  990. package/dist/chunk-SG7CWD2R.js +0 -138
  991. package/dist/chunk-SG7CWD2R.js.map +0 -1
  992. package/dist/chunk-SHLWA6JY.mjs +0 -26
  993. package/dist/chunk-SHLWA6JY.mjs.map +0 -1
  994. package/dist/chunk-SNAQBZPT.js +0 -68
  995. package/dist/chunk-SNAQBZPT.js.map +0 -1
  996. package/dist/chunk-SWIKKSKL.js +0 -19
  997. package/dist/chunk-SWIKKSKL.js.map +0 -1
  998. package/dist/chunk-TBXWJJGT.js +0 -468
  999. package/dist/chunk-TBXWJJGT.js.map +0 -1
  1000. package/dist/chunk-TIFVAASU.mjs +0 -14279
  1001. package/dist/chunk-TMVKRQGJ.mjs +0 -64
  1002. package/dist/chunk-TMVKRQGJ.mjs.map +0 -1
  1003. package/dist/chunk-TPDDSEL3.mjs +0 -75
  1004. package/dist/chunk-TPDDSEL3.mjs.map +0 -1
  1005. package/dist/chunk-TST2IKYO.js +0 -264
  1006. package/dist/chunk-TST2IKYO.js.map +0 -1
  1007. package/dist/chunk-TULCHQX2.js +0 -29
  1008. package/dist/chunk-TULCHQX2.js.map +0 -1
  1009. package/dist/chunk-U4CYO4NG.js +0 -195
  1010. package/dist/chunk-U4CYO4NG.js.map +0 -1
  1011. package/dist/chunk-U5NFIHLY.js +0 -158
  1012. package/dist/chunk-U5NFIHLY.js.map +0 -1
  1013. package/dist/chunk-UCMMIGC6.mjs +0 -156
  1014. package/dist/chunk-UCMMIGC6.mjs.map +0 -1
  1015. package/dist/chunk-UHYRVALN.mjs +0 -98
  1016. package/dist/chunk-UHYRVALN.mjs.map +0 -1
  1017. package/dist/chunk-UO6KTHBQ.mjs +0 -125
  1018. package/dist/chunk-UO6KTHBQ.mjs.map +0 -1
  1019. package/dist/chunk-USQPRLSG.mjs +0 -151
  1020. package/dist/chunk-USQPRLSG.mjs.map +0 -1
  1021. package/dist/chunk-UZKXOZHR.js +0 -23
  1022. package/dist/chunk-UZKXOZHR.js.map +0 -1
  1023. package/dist/chunk-VDEQVXNV.js +0 -176
  1024. package/dist/chunk-VDEQVXNV.js.map +0 -1
  1025. package/dist/chunk-VIGRGMWR.mjs +0 -229
  1026. package/dist/chunk-VIGRGMWR.mjs.map +0 -1
  1027. package/dist/chunk-VJMPIRSD.js +0 -31
  1028. package/dist/chunk-VJMPIRSD.js.map +0 -1
  1029. package/dist/chunk-VMNPLCZB.js +0 -533
  1030. package/dist/chunk-VMNPLCZB.js.map +0 -1
  1031. package/dist/chunk-VQL7XDIY.mjs +0 -43
  1032. package/dist/chunk-VQL7XDIY.mjs.map +0 -1
  1033. package/dist/chunk-VS67QHNX.mjs +0 -34
  1034. package/dist/chunk-VS67QHNX.mjs.map +0 -1
  1035. package/dist/chunk-W7IAG5YD.js +0 -108
  1036. package/dist/chunk-W7IAG5YD.js.map +0 -1
  1037. package/dist/chunk-WIWHM47B.mjs +0 -525
  1038. package/dist/chunk-WIWHM47B.mjs.map +0 -1
  1039. package/dist/chunk-WRRVYPMY.mjs +0 -535
  1040. package/dist/chunk-WRRVYPMY.mjs.map +0 -1
  1041. package/dist/chunk-WS7MH3GD.js +0 -40
  1042. package/dist/chunk-WS7MH3GD.js.map +0 -1
  1043. package/dist/chunk-WSPGXSBU.mjs +0 -202
  1044. package/dist/chunk-WSPGXSBU.mjs.map +0 -1
  1045. package/dist/chunk-XXSSUCJB.js +0 -14285
  1046. package/dist/chunk-XZHR4E2D.js +0 -83
  1047. package/dist/chunk-XZHR4E2D.js.map +0 -1
  1048. package/dist/chunk-Y2CP5J6Q.js +0 -116
  1049. package/dist/chunk-Y2CP5J6Q.js.map +0 -1
  1050. package/dist/chunk-YACU35MY.js +0 -937
  1051. package/dist/chunk-YACU35MY.js.map +0 -1
  1052. package/dist/chunk-YBKALLBH.js +0 -46
  1053. package/dist/chunk-YBKALLBH.js.map +0 -1
  1054. package/dist/chunk-YMZNEDFP.js +0 -39
  1055. package/dist/chunk-YMZNEDFP.js.map +0 -1
  1056. package/dist/chunk-YPGUV6BT.mjs +0 -30
  1057. package/dist/chunk-YPGUV6BT.mjs.map +0 -1
  1058. package/dist/chunk-YRKWJCML.mjs +0 -150
  1059. package/dist/chunk-YRKWJCML.mjs.map +0 -1
  1060. package/dist/chunk-YU7QZ3PP.mjs +0 -45
  1061. package/dist/chunk-YU7QZ3PP.mjs.map +0 -1
  1062. package/dist/chunk-YVJASVVK.js +0 -97
  1063. package/dist/chunk-YVJASVVK.js.map +0 -1
  1064. package/dist/chunk-YZJ22HUQ.js +0 -29
  1065. package/dist/chunk-YZJ22HUQ.js.map +0 -1
  1066. package/dist/chunk-Z2URIOKG.mjs +0 -36
  1067. package/dist/chunk-Z2URIOKG.mjs.map +0 -1
  1068. package/dist/chunk-ZEBOOUBP.mjs +0 -128
  1069. package/dist/chunk-ZEBOOUBP.mjs.map +0 -1
  1070. package/dist/chunk-ZN4HBK5C.mjs +0 -17
  1071. package/dist/chunk-ZN4HBK5C.mjs.map +0 -1
  1072. package/dist/chunk-ZOBUA65N.js +0 -1079
  1073. package/dist/chunk-ZOBUA65N.js.map +0 -1
  1074. package/dist/chunk-ZUQSVCMD.js +0 -325
  1075. package/dist/chunk-ZVBLXXNJ.mjs +0 -53
  1076. package/dist/chunk-ZVBLXXNJ.mjs.map +0 -1
  1077. package/dist/chunk-ZZQAGCSI.mjs +0 -43
  1078. package/dist/chunk-ZZQAGCSI.mjs.map +0 -1
  1079. package/dist/cli/agent/checks.d.ts +0 -96
  1080. package/dist/cli/agent/checks.d.ts.map +0 -1
  1081. package/dist/cli/agent/context.d.ts +0 -50
  1082. package/dist/cli/agent/context.d.ts.map +0 -1
  1083. package/dist/cli/agent/envelope.d.ts +0 -98
  1084. package/dist/cli/agent/envelope.d.ts.map +0 -1
  1085. package/dist/cli/agent/errors.d.ts +0 -36
  1086. package/dist/cli/agent/errors.d.ts.map +0 -1
  1087. package/dist/cli/agent/output.d.ts +0 -41
  1088. package/dist/cli/agent/output.d.ts.map +0 -1
  1089. package/dist/cli/agent/ssr-bailout.d.ts +0 -27
  1090. package/dist/cli/agent/ssr-bailout.d.ts.map +0 -1
  1091. package/dist/cli/api/sonor.d.ts +0 -39
  1092. package/dist/cli/api/sonor.d.ts.map +0 -1
  1093. package/dist/cli/codemod/diff.d.ts +0 -14
  1094. package/dist/cli/codemod/diff.d.ts.map +0 -1
  1095. package/dist/cli/codemod/engine.d.ts +0 -26
  1096. package/dist/cli/codemod/engine.d.ts.map +0 -1
  1097. package/dist/cli/codemod/transforms.d.ts +0 -31
  1098. package/dist/cli/codemod/transforms.d.ts.map +0 -1
  1099. package/dist/cli/commands/api-routes.d.ts +0 -13
  1100. package/dist/cli/commands/api-routes.d.ts.map +0 -1
  1101. package/dist/cli/commands/codemod.d.ts +0 -21
  1102. package/dist/cli/commands/codemod.d.ts.map +0 -1
  1103. package/dist/cli/commands/doctor.d.ts +0 -27
  1104. package/dist/cli/commands/doctor.d.ts.map +0 -1
  1105. package/dist/cli/commands/faqs.d.ts +0 -16
  1106. package/dist/cli/commands/faqs.d.ts.map +0 -1
  1107. package/dist/cli/commands/geo.d.ts +0 -18
  1108. package/dist/cli/commands/geo.d.ts.map +0 -1
  1109. package/dist/cli/commands/images.d.ts +0 -85
  1110. package/dist/cli/commands/images.d.ts.map +0 -1
  1111. package/dist/cli/commands/init.d.ts +0 -21
  1112. package/dist/cli/commands/init.d.ts.map +0 -1
  1113. package/dist/cli/commands/install.d.ts +0 -15
  1114. package/dist/cli/commands/install.d.ts.map +0 -1
  1115. package/dist/cli/commands/locations.d.ts +0 -55
  1116. package/dist/cli/commands/locations.d.ts.map +0 -1
  1117. package/dist/cli/commands/manifest.d.ts +0 -17
  1118. package/dist/cli/commands/manifest.d.ts.map +0 -1
  1119. package/dist/cli/commands/migrate.d.ts +0 -19
  1120. package/dist/cli/commands/migrate.d.ts.map +0 -1
  1121. package/dist/cli/commands/next16.d.ts +0 -10
  1122. package/dist/cli/commands/next16.d.ts.map +0 -1
  1123. package/dist/cli/commands/og.d.ts +0 -117
  1124. package/dist/cli/commands/og.d.ts.map +0 -1
  1125. package/dist/cli/commands/scaffold.d.ts +0 -22
  1126. package/dist/cli/commands/scaffold.d.ts.map +0 -1
  1127. package/dist/cli/commands/scan.d.ts +0 -18
  1128. package/dist/cli/commands/scan.d.ts.map +0 -1
  1129. package/dist/cli/commands/setup.d.ts +0 -35
  1130. package/dist/cli/commands/setup.d.ts.map +0 -1
  1131. package/dist/cli/commands/sync.d.ts +0 -22
  1132. package/dist/cli/commands/sync.d.ts.map +0 -1
  1133. package/dist/cli/commands/upgrade.d.ts +0 -15
  1134. package/dist/cli/commands/upgrade.d.ts.map +0 -1
  1135. package/dist/cli/commands/verify.d.ts +0 -22
  1136. package/dist/cli/commands/verify.d.ts.map +0 -1
  1137. package/dist/cli/config.d.ts +0 -31
  1138. package/dist/cli/config.d.ts.map +0 -1
  1139. package/dist/cli/generators/index.d.ts +0 -60
  1140. package/dist/cli/generators/index.d.ts.map +0 -1
  1141. package/dist/cli/index.d.ts +0 -15
  1142. package/dist/cli/index.d.ts.map +0 -1
  1143. package/dist/cli/index.js +0 -32904
  1144. package/dist/cli/index.mjs +0 -32872
  1145. package/dist/cli/migrator/index.d.ts +0 -92
  1146. package/dist/cli/migrator/index.d.ts.map +0 -1
  1147. package/dist/cli/scanner/index.d.ts +0 -129
  1148. package/dist/cli/scanner/index.d.ts.map +0 -1
  1149. package/dist/cli/state.d.ts +0 -7
  1150. package/dist/cli/state.d.ts.map +0 -1
  1151. package/dist/client/SiteKitCredential.d.ts.map +0 -1
  1152. package/dist/client/index.d.ts.map +0 -1
  1153. package/dist/client/index.js.map +0 -1
  1154. package/dist/client/index.mjs +0 -27
  1155. package/dist/client/index.mjs.map +0 -1
  1156. package/dist/cms/CmsPage.d.ts.map +0 -1
  1157. package/dist/cms/CmsPreview.d.ts.map +0 -1
  1158. package/dist/cms/CmsSection.d.ts.map +0 -1
  1159. package/dist/cms/PortableTextRenderer.d.ts.map +0 -1
  1160. package/dist/cms/index.d.ts.map +0 -1
  1161. package/dist/cms/index.js.map +0 -1
  1162. package/dist/cms/index.mjs +0 -389
  1163. package/dist/cms/index.mjs.map +0 -1
  1164. package/dist/cms/sanity-image.d.ts.map +0 -1
  1165. package/dist/cms/sections/CtaSection.d.ts.map +0 -1
  1166. package/dist/cms/sections/CustomSection.d.ts.map +0 -1
  1167. package/dist/cms/sections/FaqSection.d.ts.map +0 -1
  1168. package/dist/cms/sections/FormSection.d.ts.map +0 -1
  1169. package/dist/cms/sections/GallerySection.d.ts.map +0 -1
  1170. package/dist/cms/sections/HeroSection.d.ts.map +0 -1
  1171. package/dist/cms/sections/RichTextSection.d.ts.map +0 -1
  1172. package/dist/cms/sections/TestimonialsSection.d.ts.map +0 -1
  1173. package/dist/cms/sections/index.d.ts.map +0 -1
  1174. package/dist/cms/server-api.d.ts.map +0 -1
  1175. package/dist/cms/server.d.ts.map +0 -1
  1176. package/dist/cms/server.js.map +0 -1
  1177. package/dist/cms/server.mjs +0 -5
  1178. package/dist/cms/server.mjs.map +0 -1
  1179. package/dist/cms/types.d.ts.map +0 -1
  1180. package/dist/commerce/CalendarView.d.ts.map +0 -1
  1181. package/dist/commerce/CheckoutForm.d.ts.map +0 -1
  1182. package/dist/commerce/EventCalendar.d.ts.map +0 -1
  1183. package/dist/commerce/EventCheckout.d.ts.map +0 -1
  1184. package/dist/commerce/EventEmbed.d.ts.map +0 -1
  1185. package/dist/commerce/EventModal.d.ts.map +0 -1
  1186. package/dist/commerce/EventTile.d.ts.map +0 -1
  1187. package/dist/commerce/EventsAgenda.d.ts.map +0 -1
  1188. package/dist/commerce/EventsWidget.d.ts.map +0 -1
  1189. package/dist/commerce/OfferingCard.d.ts.map +0 -1
  1190. package/dist/commerce/OfferingList.d.ts.map +0 -1
  1191. package/dist/commerce/ProductDetail.d.ts.map +0 -1
  1192. package/dist/commerce/ProductEmbed.d.ts.map +0 -1
  1193. package/dist/commerce/ProductGrid.d.ts.map +0 -1
  1194. package/dist/commerce/ProductPage.d.ts.map +0 -1
  1195. package/dist/commerce/RegistrationForm.d.ts.map +0 -1
  1196. package/dist/commerce/SizeChart.d.ts.map +0 -1
  1197. package/dist/commerce/UpcomingEvents.d.ts.map +0 -1
  1198. package/dist/commerce/api.d.ts.map +0 -1
  1199. package/dist/commerce/events-extras.d.ts.map +0 -1
  1200. package/dist/commerce/index.d.ts.map +0 -1
  1201. package/dist/commerce/index.js.map +0 -1
  1202. package/dist/commerce/index.mjs +0 -15
  1203. package/dist/commerce/index.mjs.map +0 -1
  1204. package/dist/commerce/server.d.ts.map +0 -1
  1205. package/dist/commerce/server.js.map +0 -1
  1206. package/dist/commerce/server.mjs +0 -237
  1207. package/dist/commerce/server.mjs.map +0 -1
  1208. package/dist/commerce/types.d.ts.map +0 -1
  1209. package/dist/commerce/useEventModal.d.ts.map +0 -1
  1210. package/dist/commerce/utils.d.ts.map +0 -1
  1211. package/dist/config/index.d.ts.map +0 -1
  1212. package/dist/config/index.js.map +0 -1
  1213. package/dist/config/index.mjs +0 -116
  1214. package/dist/config/index.mjs.map +0 -1
  1215. package/dist/cta-bar/CtaBar.d.ts.map +0 -1
  1216. package/dist/cta-bar/CtaBarBehavior.d.ts.map +0 -1
  1217. package/dist/cta-bar/client.d.ts.map +0 -1
  1218. package/dist/cta-bar/client.js.map +0 -1
  1219. package/dist/cta-bar/client.mjs +0 -6
  1220. package/dist/cta-bar/client.mjs.map +0 -1
  1221. package/dist/cta-bar/index.d.ts.map +0 -1
  1222. package/dist/cta-bar/index.js.map +0 -1
  1223. package/dist/cta-bar/index.mjs +0 -221
  1224. package/dist/cta-bar/index.mjs.map +0 -1
  1225. package/dist/cta-bar/styles.d.ts.map +0 -1
  1226. package/dist/discover-LPN55L5B.js +0 -21
  1227. package/dist/discover-LPN55L5B.js.map +0 -1
  1228. package/dist/discover-QGA6QFSR.mjs +0 -4
  1229. package/dist/discover-QGA6QFSR.mjs.map +0 -1
  1230. package/dist/engage/ChatWidget.d.ts.map +0 -1
  1231. package/dist/engage/DesignRenderer.d.ts.map +0 -1
  1232. package/dist/engage/EchoUiActions.d.ts.map +0 -1
  1233. package/dist/engage/EngageWidget.d.ts.map +0 -1
  1234. package/dist/engage/brand-color.d.ts.map +0 -1
  1235. package/dist/engage/chat-messages.d.ts.map +0 -1
  1236. package/dist/engage/echo-config.d.ts.map +0 -1
  1237. package/dist/engage/element-rules.d.ts.map +0 -1
  1238. package/dist/engage/index.d.ts.map +0 -1
  1239. package/dist/engage/index.js.map +0 -1
  1240. package/dist/engage/index.mjs +0 -50
  1241. package/dist/engage/index.mjs.map +0 -1
  1242. package/dist/engage/launcher-placement.d.ts.map +0 -1
  1243. package/dist/engage/socket-loader.d.ts.map +0 -1
  1244. package/dist/engage/types.d.ts.map +0 -1
  1245. package/dist/fleet/FleetHeartbeat.d.ts.map +0 -1
  1246. package/dist/fleet/contract.d.ts.map +0 -1
  1247. package/dist/fleet/contract.js.map +0 -1
  1248. package/dist/fleet/contract.mjs +0 -4
  1249. package/dist/fleet/contract.mjs.map +0 -1
  1250. package/dist/fleet/heartbeat.d.ts.map +0 -1
  1251. package/dist/fleet/index.d.ts.map +0 -1
  1252. package/dist/fleet/index.js.map +0 -1
  1253. package/dist/fleet/index.mjs +0 -11
  1254. package/dist/fleet/index.mjs.map +0 -1
  1255. package/dist/forms/DatePicker.d.ts.map +0 -1
  1256. package/dist/forms/FileField.d.ts.map +0 -1
  1257. package/dist/forms/FormCelebration.d.ts.map +0 -1
  1258. package/dist/forms/FormClient.d.ts.map +0 -1
  1259. package/dist/forms/FormEnhancer.d.ts.map +0 -1
  1260. package/dist/forms/FormField.d.ts.map +0 -1
  1261. package/dist/forms/FormSpotlight.d.ts.map +0 -1
  1262. package/dist/forms/FormStage.d.ts.map +0 -1
  1263. package/dist/forms/HoneypotField.d.ts.map +0 -1
  1264. package/dist/forms/ManagedForm.d.ts.map +0 -1
  1265. package/dist/forms/ServerForm.d.ts.map +0 -1
  1266. package/dist/forms/StaticForm.d.ts.map +0 -1
  1267. package/dist/forms/contract.d.ts.map +0 -1
  1268. package/dist/forms/contract.js.map +0 -1
  1269. package/dist/forms/contract.mjs +0 -4
  1270. package/dist/forms/contract.mjs.map +0 -1
  1271. package/dist/forms/defaultSuccessMessage.d.ts.map +0 -1
  1272. package/dist/forms/delight.d.ts.map +0 -1
  1273. package/dist/forms/experience-chrome.d.ts.map +0 -1
  1274. package/dist/forms/experience-plan.d.ts.map +0 -1
  1275. package/dist/forms/field-controls.d.ts.map +0 -1
  1276. package/dist/forms/field-interactions.d.ts.map +0 -1
  1277. package/dist/forms/field-rules.d.ts.map +0 -1
  1278. package/dist/forms/form-values.d.ts.map +0 -1
  1279. package/dist/forms/formsApi.d.ts.map +0 -1
  1280. package/dist/forms/ga4-identity.d.ts.map +0 -1
  1281. package/dist/forms/index.d.ts.map +0 -1
  1282. package/dist/forms/index.js.map +0 -1
  1283. package/dist/forms/index.mjs +0 -341
  1284. package/dist/forms/index.mjs.map +0 -1
  1285. package/dist/forms/normalize-config.d.ts.map +0 -1
  1286. package/dist/forms/recaptcha-warmup.d.ts.map +0 -1
  1287. package/dist/forms/recaptcha.d.ts.map +0 -1
  1288. package/dist/forms/server.d.ts.map +0 -1
  1289. package/dist/forms/server.js.map +0 -1
  1290. package/dist/forms/server.mjs +0 -61
  1291. package/dist/forms/server.mjs.map +0 -1
  1292. package/dist/forms/static.d.ts.map +0 -1
  1293. package/dist/forms/static.js.map +0 -1
  1294. package/dist/forms/static.mjs +0 -8
  1295. package/dist/forms/static.mjs.map +0 -1
  1296. package/dist/forms/submitForm.d.ts.map +0 -1
  1297. package/dist/forms/tracking-session.d.ts.map +0 -1
  1298. package/dist/forms/types.d.ts.map +0 -1
  1299. package/dist/forms/useForm.d.ts.map +0 -1
  1300. package/dist/forms/useFormTracking.d.ts.map +0 -1
  1301. package/dist/images/ManagedFavicon.d.ts.map +0 -1
  1302. package/dist/images/ManagedImage.d.ts.map +0 -1
  1303. package/dist/images/api.d.ts.map +0 -1
  1304. package/dist/images/index.d.ts.map +0 -1
  1305. package/dist/images/index.js.map +0 -1
  1306. package/dist/images/index.mjs +0 -8
  1307. package/dist/images/index.mjs.map +0 -1
  1308. package/dist/images/server.d.ts.map +0 -1
  1309. package/dist/images/server.js.map +0 -1
  1310. package/dist/images/server.mjs +0 -4
  1311. package/dist/images/server.mjs.map +0 -1
  1312. package/dist/index.d.ts.map +0 -1
  1313. package/dist/index.js.map +0 -1
  1314. package/dist/index.mjs +0 -172
  1315. package/dist/index.mjs.map +0 -1
  1316. package/dist/landing/LandingPage.d.ts.map +0 -1
  1317. package/dist/landing/contract.d.ts.map +0 -1
  1318. package/dist/landing/index.d.ts.map +0 -1
  1319. package/dist/landing/index.js.map +0 -1
  1320. package/dist/landing/index.mjs +0 -5
  1321. package/dist/landing/index.mjs.map +0 -1
  1322. package/dist/landing/metadata.d.ts.map +0 -1
  1323. package/dist/landing/server.d.ts.map +0 -1
  1324. package/dist/landing/server.js.map +0 -1
  1325. package/dist/landing/server.mjs +0 -4
  1326. package/dist/landing/server.mjs.map +0 -1
  1327. package/dist/layout/SiteKitClientProviders.d.ts.map +0 -1
  1328. package/dist/layout/SiteKitLayout.d.ts.map +0 -1
  1329. package/dist/layout/SpeculationRules.d.ts.map +0 -1
  1330. package/dist/layout/client.d.ts.map +0 -1
  1331. package/dist/layout/client.js.map +0 -1
  1332. package/dist/layout/client.mjs +0 -18
  1333. package/dist/layout/client.mjs.map +0 -1
  1334. package/dist/layout/index.d.ts.map +0 -1
  1335. package/dist/layout/index.js.map +0 -1
  1336. package/dist/layout/index.mjs +0 -105
  1337. package/dist/layout/index.mjs.map +0 -1
  1338. package/dist/layout/types.d.ts.map +0 -1
  1339. package/dist/lib-6GWWPDJR.js +0 -28
  1340. package/dist/lib-BD4KKQBI.mjs +0 -4
  1341. package/dist/lib-N5PD6JNJ.mjs +0 -3
  1342. package/dist/lib-WFB5RLEQ.js +0 -31
  1343. package/dist/llms/AEOComponents.d.ts.map +0 -1
  1344. package/dist/llms/SpeakableSchema.d.ts.map +0 -1
  1345. package/dist/llms/aiRobots.d.ts.map +0 -1
  1346. package/dist/llms/api.d.ts.map +0 -1
  1347. package/dist/llms/client.d.ts.map +0 -1
  1348. package/dist/llms/client.js.map +0 -1
  1349. package/dist/llms/client.mjs +0 -5
  1350. package/dist/llms/client.mjs.map +0 -1
  1351. package/dist/llms/contract.d.ts.map +0 -1
  1352. package/dist/llms/contract.js.map +0 -1
  1353. package/dist/llms/contract.mjs +0 -4
  1354. package/dist/llms/contract.mjs.map +0 -1
  1355. package/dist/llms/discovery-headers.d.ts.map +0 -1
  1356. package/dist/llms/generateLLMsTxt.d.ts.map +0 -1
  1357. package/dist/llms/handlers.d.ts.map +0 -1
  1358. package/dist/llms/humanize-industry.d.ts.map +0 -1
  1359. package/dist/llms/index.d.ts.map +0 -1
  1360. package/dist/llms/index.js.map +0 -1
  1361. package/dist/llms/index.mjs +0 -286
  1362. package/dist/llms/index.mjs.map +0 -1
  1363. package/dist/llms/links.d.ts.map +0 -1
  1364. package/dist/llms/revalidate.d.ts.map +0 -1
  1365. package/dist/llms/seo-revalidate.d.ts.map +0 -1
  1366. package/dist/llms/sourcedFacts.d.ts.map +0 -1
  1367. package/dist/llms/types.d.ts.map +0 -1
  1368. package/dist/llms/wiring.d.ts +0 -103
  1369. package/dist/llms/wiring.d.ts.map +0 -1
  1370. package/dist/llms/writeLLMsTxt.d.ts.map +0 -1
  1371. package/dist/manifest/index.d.ts.map +0 -1
  1372. package/dist/manifest/index.js.map +0 -1
  1373. package/dist/manifest/index.mjs +0 -83
  1374. package/dist/manifest/index.mjs.map +0 -1
  1375. package/dist/maps/GoogleMap.d.ts.map +0 -1
  1376. package/dist/maps/NeighborhoodMap.d.ts.map +0 -1
  1377. package/dist/maps/api.d.ts.map +0 -1
  1378. package/dist/maps/index.d.ts.map +0 -1
  1379. package/dist/maps/index.js.map +0 -1
  1380. package/dist/maps/index.mjs +0 -361
  1381. package/dist/maps/index.mjs.map +0 -1
  1382. package/dist/maps/types.d.ts.map +0 -1
  1383. package/dist/mcp/WebMcpTools.d.ts.map +0 -1
  1384. package/dist/mcp/client.d.ts.map +0 -1
  1385. package/dist/mcp/client.js.map +0 -1
  1386. package/dist/mcp/client.mjs +0 -129
  1387. package/dist/mcp/client.mjs.map +0 -1
  1388. package/dist/mcp/declarative.d.ts.map +0 -1
  1389. package/dist/mcp/handlers.d.ts.map +0 -1
  1390. package/dist/mcp/index.d.ts.map +0 -1
  1391. package/dist/mcp/index.js.map +0 -1
  1392. package/dist/mcp/index.mjs +0 -509
  1393. package/dist/mcp/index.mjs.map +0 -1
  1394. package/dist/mcp/protocol.d.ts.map +0 -1
  1395. package/dist/mcp/serverCard.d.ts.map +0 -1
  1396. package/dist/mcp/transport.d.ts.map +0 -1
  1397. package/dist/mcp/transport.js.map +0 -1
  1398. package/dist/mcp/transport.mjs +0 -123
  1399. package/dist/mcp/transport.mjs.map +0 -1
  1400. package/dist/mcp/types.d.ts.map +0 -1
  1401. package/dist/motion/CountUp.d.ts.map +0 -1
  1402. package/dist/motion/Parallax.d.ts.map +0 -1
  1403. package/dist/motion/Reveal.d.ts.map +0 -1
  1404. package/dist/motion/ScrollScene.d.ts.map +0 -1
  1405. package/dist/motion/engine.d.ts.map +0 -1
  1406. package/dist/motion/failsafe.d.ts.map +0 -1
  1407. package/dist/motion/gsap.d.ts.map +0 -1
  1408. package/dist/motion/gsap.js.map +0 -1
  1409. package/dist/motion/gsap.mjs +0 -220
  1410. package/dist/motion/gsap.mjs.map +0 -1
  1411. package/dist/motion/index.d.ts.map +0 -1
  1412. package/dist/motion/index.js.map +0 -1
  1413. package/dist/motion/index.mjs +0 -209
  1414. package/dist/motion/index.mjs.map +0 -1
  1415. package/dist/motion/three.d.ts.map +0 -1
  1416. package/dist/motion/three.js.map +0 -1
  1417. package/dist/motion/three.mjs +0 -145
  1418. package/dist/motion/three.mjs.map +0 -1
  1419. package/dist/og/config.d.ts.map +0 -1
  1420. package/dist/og/contrast.d.ts.map +0 -1
  1421. package/dist/og/index.d.ts.map +0 -1
  1422. package/dist/og/index.js.map +0 -1
  1423. package/dist/og/index.mjs +0 -6
  1424. package/dist/og/index.mjs.map +0 -1
  1425. package/dist/og/pages.d.ts.map +0 -1
  1426. package/dist/og/route-copy.d.ts +0 -34
  1427. package/dist/og/route-copy.d.ts.map +0 -1
  1428. package/dist/og/route-fit.d.ts.map +0 -1
  1429. package/dist/og/route.d.ts.map +0 -1
  1430. package/dist/og/route.js.map +0 -1
  1431. package/dist/og/route.mjs +0 -239
  1432. package/dist/og/route.mjs.map +0 -1
  1433. package/dist/og/template.d.ts.map +0 -1
  1434. package/dist/og/wiring.d.ts +0 -100
  1435. package/dist/og/wiring.d.ts.map +0 -1
  1436. package/dist/portfolio/contract.d.ts.map +0 -1
  1437. package/dist/portfolio/contract.js.map +0 -1
  1438. package/dist/portfolio/contract.mjs +0 -38
  1439. package/dist/portfolio/contract.mjs.map +0 -1
  1440. package/dist/proxy/index.d.ts.map +0 -1
  1441. package/dist/proxy/index.js.map +0 -1
  1442. package/dist/proxy/index.mjs +0 -170
  1443. package/dist/proxy/index.mjs.map +0 -1
  1444. package/dist/proxy/securityHeaders.d.ts.map +0 -1
  1445. package/dist/proxy/segment.d.ts.map +0 -1
  1446. package/dist/redirects/index.d.ts.map +0 -1
  1447. package/dist/redirects/index.js.map +0 -1
  1448. package/dist/redirects/index.mjs +0 -8
  1449. package/dist/redirects/index.mjs.map +0 -1
  1450. package/dist/redirects/not-found.d.ts +0 -31
  1451. package/dist/redirects/not-found.d.ts.map +0 -1
  1452. package/dist/redirects/not-found.js +0 -47
  1453. package/dist/redirects/not-found.js.map +0 -1
  1454. package/dist/redirects/not-found.mjs +0 -45
  1455. package/dist/redirects/not-found.mjs.map +0 -1
  1456. package/dist/reputation/TestimonialSection.d.ts.map +0 -1
  1457. package/dist/reputation/api.d.ts.map +0 -1
  1458. package/dist/reputation/index.d.ts.map +0 -1
  1459. package/dist/reputation/index.js.map +0 -1
  1460. package/dist/reputation/index.mjs +0 -5
  1461. package/dist/reputation/index.mjs.map +0 -1
  1462. package/dist/reputation/server.d.ts.map +0 -1
  1463. package/dist/reputation/server.js.map +0 -1
  1464. package/dist/reputation/server.mjs +0 -4
  1465. package/dist/reputation/server.mjs.map +0 -1
  1466. package/dist/reputation/types.d.ts.map +0 -1
  1467. package/dist/robots/index.d.ts.map +0 -1
  1468. package/dist/robots/index.js.map +0 -1
  1469. package/dist/robots/index.mjs +0 -53
  1470. package/dist/robots/index.mjs.map +0 -1
  1471. package/dist/robots/indexnow.d.ts.map +0 -1
  1472. package/dist/robots/indexnow.js.map +0 -1
  1473. package/dist/robots/indexnow.mjs +0 -34
  1474. package/dist/robots/indexnow.mjs.map +0 -1
  1475. package/dist/robots/next-internals.d.ts.map +0 -1
  1476. package/dist/search/contract.d.ts +0 -62
  1477. package/dist/search/contract.d.ts.map +0 -1
  1478. package/dist/search/contract.js +0 -17
  1479. package/dist/search/contract.js.map +0 -1
  1480. package/dist/search/contract.mjs +0 -4
  1481. package/dist/search/contract.mjs.map +0 -1
  1482. package/dist/search/index.d.ts +0 -52
  1483. package/dist/search/index.d.ts.map +0 -1
  1484. package/dist/search/index.js +0 -105
  1485. package/dist/search/index.js.map +0 -1
  1486. package/dist/search/index.mjs +0 -99
  1487. package/dist/search/index.mjs.map +0 -1
  1488. package/dist/seo/LocationPageContent.d.ts +0 -64
  1489. package/dist/seo/LocationPageContent.d.ts.map +0 -1
  1490. package/dist/seo/ManagedContent.d.ts.map +0 -1
  1491. package/dist/seo/ManagedFAQ.d.ts.map +0 -1
  1492. package/dist/seo/ManagedInternalLinks.d.ts.map +0 -1
  1493. package/dist/seo/ManagedSchema.d.ts.map +0 -1
  1494. package/dist/seo/ManagedScripts.d.ts.map +0 -1
  1495. package/dist/seo/api.d.ts.map +0 -1
  1496. package/dist/seo/client.d.ts.map +0 -1
  1497. package/dist/seo/client.js.map +0 -1
  1498. package/dist/seo/client.mjs +0 -10
  1499. package/dist/seo/client.mjs.map +0 -1
  1500. package/dist/seo/getManagedMetadata.d.ts.map +0 -1
  1501. package/dist/seo/groundingSchema.d.ts.map +0 -1
  1502. package/dist/seo/index.d.ts.map +0 -1
  1503. package/dist/seo/index.js.map +0 -1
  1504. package/dist/seo/index.mjs +0 -701
  1505. package/dist/seo/index.mjs.map +0 -1
  1506. package/dist/seo/register-sitemap-cli-impl.d.ts.map +0 -1
  1507. package/dist/seo/register-sitemap-cli.d.ts.map +0 -1
  1508. package/dist/seo/register-sitemap-cli.mjs +0 -528
  1509. package/dist/seo/register-sitemap-request.d.ts.map +0 -1
  1510. package/dist/seo/routing.d.ts.map +0 -1
  1511. package/dist/seo/safeJsonLd.d.ts.map +0 -1
  1512. package/dist/seo/schema-filter.d.ts.map +0 -1
  1513. package/dist/seo/server-api.d.ts.map +0 -1
  1514. package/dist/seo/server.d.ts.map +0 -1
  1515. package/dist/seo/server.js.map +0 -1
  1516. package/dist/seo/server.mjs +0 -11
  1517. package/dist/seo/server.mjs.map +0 -1
  1518. package/dist/seo/types.d.ts.map +0 -1
  1519. package/dist/seo/withManagedMetadata.d.ts.map +0 -1
  1520. package/dist/seo-meta/contract.d.ts.map +0 -1
  1521. package/dist/seo-meta/contract.js.map +0 -1
  1522. package/dist/seo-meta/contract.mjs +0 -4
  1523. package/dist/seo-meta/contract.mjs.map +0 -1
  1524. package/dist/seo-pages/contract.d.ts.map +0 -1
  1525. package/dist/seo-pages/contract.js.map +0 -1
  1526. package/dist/seo-pages/contract.mjs +0 -45
  1527. package/dist/seo-pages/contract.mjs.map +0 -1
  1528. package/dist/server/index.d.ts.map +0 -1
  1529. package/dist/server/index.js.map +0 -1
  1530. package/dist/server/index.mjs +0 -7
  1531. package/dist/server/index.mjs.map +0 -1
  1532. package/dist/server/mint-site-token.d.ts.map +0 -1
  1533. package/dist/server/server-fetch.d.ts.map +0 -1
  1534. package/dist/server-api-7F5P6CSH.mjs +0 -9
  1535. package/dist/server-api-7F5P6CSH.mjs.map +0 -1
  1536. package/dist/server-api-OC5JNK6R.js +0 -86
  1537. package/dist/server-api-OC5JNK6R.js.map +0 -1
  1538. package/dist/setup/index.d.ts +0 -12
  1539. package/dist/setup/index.d.ts.map +0 -1
  1540. package/dist/setup/index.js +0 -4
  1541. package/dist/setup/index.js.map +0 -1
  1542. package/dist/setup/index.mjs +0 -3
  1543. package/dist/setup/index.mjs.map +0 -1
  1544. package/dist/shared/build-entries.d.ts.map +0 -1
  1545. package/dist/shared/color.d.ts.map +0 -1
  1546. package/dist/shared/defer.d.ts.map +0 -1
  1547. package/dist/shared/fetchWithRetry.d.ts.map +0 -1
  1548. package/dist/shared/frame.d.ts.map +0 -1
  1549. package/dist/shared/fresh-fetch.d.ts.map +0 -1
  1550. package/dist/shared/glass.d.ts.map +0 -1
  1551. package/dist/shared/identity.d.ts.map +0 -1
  1552. package/dist/shared/next-files.d.ts.map +0 -1
  1553. package/dist/shared/page-leave.d.ts.map +0 -1
  1554. package/dist/shared/publishCredential.d.ts.map +0 -1
  1555. package/dist/shared/reporting-gate.d.ts.map +0 -1
  1556. package/dist/shared/request-guards.d.ts.map +0 -1
  1557. package/dist/shared/siteToken.d.ts.map +0 -1
  1558. package/dist/shared/sonorFetch.d.ts.map +0 -1
  1559. package/dist/shared/source-graph.d.ts.map +0 -1
  1560. package/dist/shared/uuid.d.ts.map +0 -1
  1561. package/dist/shared/version.d.ts.map +0 -1
  1562. package/dist/shared/visual-viewport-gap.d.ts.map +0 -1
  1563. package/dist/signal/SignalBridge.d.ts.map +0 -1
  1564. package/dist/signal/SignalCore.d.ts.map +0 -1
  1565. package/dist/signal/SignalExperiment.d.ts.map +0 -1
  1566. package/dist/signal/index.d.ts.map +0 -1
  1567. package/dist/signal/index.js.map +0 -1
  1568. package/dist/signal/index.mjs +0 -6
  1569. package/dist/signal/index.mjs.map +0 -1
  1570. package/dist/signal/store.d.ts.map +0 -1
  1571. package/dist/signal/types.d.ts.map +0 -1
  1572. package/dist/site-config/index.d.ts.map +0 -1
  1573. package/dist/site-config/index.js.map +0 -1
  1574. package/dist/site-config/index.mjs +0 -4
  1575. package/dist/site-config/index.mjs.map +0 -1
  1576. package/dist/sitemap/discover.d.ts.map +0 -1
  1577. package/dist/sitemap/index.d.ts.map +0 -1
  1578. package/dist/sitemap/index.js.map +0 -1
  1579. package/dist/sitemap/index.mjs +0 -549
  1580. package/dist/sitemap/index.mjs.map +0 -1
  1581. package/dist/sitemap/shared.d.ts.map +0 -1
  1582. package/dist/sites/contract.d.ts.map +0 -1
  1583. package/dist/sites/contract.js.map +0 -1
  1584. package/dist/sites/contract.mjs +0 -5
  1585. package/dist/sites/contract.mjs.map +0 -1
  1586. package/dist/sites/normalize.d.ts.map +0 -1
  1587. package/dist/sites/resolve.d.ts.map +0 -1
  1588. package/dist/sites/site-param.d.ts.map +0 -1
  1589. package/dist/slots/ManagedSlot.d.ts.map +0 -1
  1590. package/dist/slots/contract.d.ts.map +0 -1
  1591. package/dist/slots/contract.js.map +0 -1
  1592. package/dist/slots/contract.mjs +0 -4
  1593. package/dist/slots/contract.mjs.map +0 -1
  1594. package/dist/slots/index.d.ts.map +0 -1
  1595. package/dist/slots/index.js.map +0 -1
  1596. package/dist/slots/index.mjs +0 -142
  1597. package/dist/slots/index.mjs.map +0 -1
  1598. package/dist/slots/revalidate.d.ts.map +0 -1
  1599. package/dist/slots/server-api.d.ts.map +0 -1
  1600. package/dist/socket-loader-2NYBMBFQ.js +0 -16
  1601. package/dist/socket-loader-2NYBMBFQ.js.map +0 -1
  1602. package/dist/socket-loader-JA2DI2RT.mjs +0 -14
  1603. package/dist/socket-loader-JA2DI2RT.mjs.map +0 -1
  1604. package/dist/sync/AddToCalendar.d.ts.map +0 -1
  1605. package/dist/sync/BookingWidget.d.ts.map +0 -1
  1606. package/dist/sync/MeetingFormatStep.d.ts.map +0 -1
  1607. package/dist/sync/api.d.ts.map +0 -1
  1608. package/dist/sync/booking-flow.d.ts.map +0 -1
  1609. package/dist/sync/index.d.ts.map +0 -1
  1610. package/dist/sync/index.js.map +0 -1
  1611. package/dist/sync/index.mjs +0 -7
  1612. package/dist/sync/index.mjs.map +0 -1
  1613. package/dist/sync/types.d.ts.map +0 -1
  1614. package/dist/types.d.ts.map +0 -1
  1615. package/dist/web-vitals.attribution-CHXXWO72.mjs +0 -524
  1616. package/dist/web-vitals.attribution-CHXXWO72.mjs.map +0 -1
  1617. package/dist/web-vitals.attribution-SQVZNHN3.js +0 -535
  1618. package/dist/web-vitals.attribution-SQVZNHN3.js.map +0 -1
  1619. package/dist/writeLLMsTxt-IYJILIU3.mjs +0 -11
  1620. package/dist/writeLLMsTxt-SQG4B63X.js +0 -20
  1621. package/scripts/postinstall.cjs +0 -67
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/analytics/page-observation.ts","../src/analytics/measurement-context.ts","../src/analytics/send-gate.ts","../src/analytics/WebVitals.tsx","../src/analytics/AnalyticsProvider.tsx"],"names":["propApiUrl","propApiKey","propSite","allowInFrame","allowLocalhost","debug","visitorId","sessionId","sessionTimeout","wordCount","usePathname","useEffect","useRef"],"mappings":"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","file":"chunk-4C3INRHE.mjs","sourcesContent":["/** Browser-observed values, never substituted with managed SEO configuration. */\nexport function collectPageObservation() {\n const observedAt = new Date().toISOString()\n const observed = (value: unknown, source: string) => ({ state: 'observed', value, source })\n const unknown = { state: 'not_checked', value: null, source: null }\n const nav = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming | undefined\n // A document's HTTP response does not describe a later SPA route.\n const samePage = nav && new URL(nav.name).pathname === location.pathname\n const status = samePage && nav.responseStatus >= 100 ? nav.responseStatus : null\n const schema = Array.from(document.querySelectorAll('script[type=\"application/ld+json\"]')).map(el => {\n try { return { validJson: true, value: JSON.parse(el.textContent || '') } }\n catch { return { validJson: false, value: null } }\n })\n return {\n version: 1,\n observedAt,\n pageUrl: location.origin + location.pathname,\n source: 'site-kit/browser',\n fields: {\n httpStatus: status === null ? unknown : observed(status, 'navigation.responseStatus'),\n canonical: observed(document.querySelector('link[rel=\"canonical\"]')?.getAttribute('href') || null, 'DOM link[rel=canonical]'),\n robots: observed(document.querySelector('meta[name=\"robots\"]')?.getAttribute('content') || null, 'DOM meta[name=robots]'),\n xRobotsTag: unknown,\n schema: observed(schema, 'DOM script[type=application/ld+json]'),\n },\n }\n}\n","import { getOrCreateSessionId, getOrCreateVisitorId } from '../shared/identity'\n\nexport function getDeviceType(): 'desktop' | 'mobile' | 'tablet' {\n if (typeof window === 'undefined') return 'desktop'\n \n const ua = navigator.userAgent\n if (/tablet|ipad|playbook|silk/i.test(ua)) return 'tablet'\n if (/mobile|iphone|ipod|android|blackberry|opera mini|iemobile/i.test(ua)) return 'mobile'\n return 'desktop'\n}\n\n/** Same identity as page views; unavailable browser context stays unknown. */\nexport function getMeasurementContext(options: { visitorId?: string; sessionId?: string; sessionTimeout?: number } = {}) {\n let visitorId = options.visitorId\n let sessionId = options.sessionId\n try {\n visitorId ||= getOrCreateVisitorId()\n sessionId ||= getOrCreateSessionId(options.sessionTimeout)\n } catch {\n // Browsers can deny storage. Continue measuring without inventing linkage.\n }\n const connection = typeof navigator === 'undefined' ? undefined :\n (navigator as Navigator & { connection?: { effectiveType?: string; type?: string } }).connection\n return {\n visitorId: visitorId || undefined,\n sessionId: sessionId || undefined,\n deviceType: getDeviceType(),\n connectionType: connection?.effectiveType || connection?.type || undefined,\n }\n}\n","/**\n * @sonordev/site-kit/analytics — the ONE analytics send decision\n *\n * SINGLE SOURCE OF TRUTH for \"may this document report analytics, and where\n * to\". Every phone-home in the analytics module — page views, journey /\n * session rows, scroll depth, heatmap clicks, web vitals, custom events,\n * conversions, and the sitemap-validation read — resolves through\n * {@link resolveAnalyticsTarget} and sends through {@link analyticsSend} /\n * {@link analyticsBeacon}. Do NOT call sonorFetch/sonorBeacon directly from\n * this module, and do not re-fork the credential resolution below; the\n * eight hand-rolled copies this replaced are exactly how a rule gets fixed\n * in one place and left broken in seven (see CLAUDE.md, \"Code Hygiene\").\n * `send-gate.test.ts` fails the build if a new direct call appears.\n *\n * Fleet, client SitemapSync and Engage also consult this gate. Local browser\n * hosts are blocked regardless of configured production site identity. Node\n * build callers retain their existing behavior.\n *\n * It also checks:\n *\n * 1. IS THIS DOCUMENT SOMEONE ELSE'S EMBED? A site loaded in a cross-origin\n * iframe must not report traffic against its own Sonor project. The\n * visitor is not on that site; they are on whatever page framed it, and\n * every metric the frame produces is phantom traffic in the analytics its\n * owner reads (and, for an agency, reports to the client).\n *\n * 2. IS THERE A CREDENTIAL? Unchanged behavior — no key, no send.\n *\n * ─── Why this landed on 2026-09-08, and what was measured ──────────────────\n *\n * Upforge case studies embed each client's whole production site in three\n * eager iframes per study (agency-site-kit `DeviceTrifolio`), and\n * `securityHeaders`' DEFAULT_FRAME_ANCESTORS has allowed https://upforge.io\n * to frame every managed site since it was introduced. DeviceTrifolio's own\n * doc comment reasons that nobody is affected because its cross-origin load\n * detection can never succeed, so the screenshot overlay never fades. That is\n * true of the PIXELS and false of the JAVASCRIPT: the overlay is an opacity\n * layer over a live frame, so the embedded site loads, hydrates and runs its\n * analytics whether or not it is ever revealed.\n *\n * Measured in the Sonor analytics table before this change (2026-09-08), the\n * signature is unmistakable — from `analytics_page_views`, three views of `/`\n * sharing ONE session_id and ONE visitor_id, milliseconds apart, with\n * referrer `https://upforge.io/`:\n *\n * abbeyglenapts.com 20:02:13.852 / .900 / .921 (48ms, 21ms apart)\n * goldenmilenky.com 04:12:23.840 / .868 / 24.624\n * queencityriverboats 22:12:33.609 / .690 / .784\n *\n * Three loads of one page inside 70 milliseconds is not a person; it is the\n * desktop + tablet + mobile frames of one trifolio, sharing storage because\n * they share the embedded site's origin. 23 client sites carried this traffic\n * on the day of the fix, the oldest from 2026-06-11. The widening of\n * frame-ancestors to upforgelabs.com (upforge-nextjs 0c12be5) does not start\n * this problem — it multiplies one that was already live.\n *\n * ─── Same-origin frames are ALLOWED, deliberately ──────────────────────────\n *\n * The block is on CROSS-origin embedding, not on being framed at all. A site\n * embedding itself (a preview pane, a print view, an on-domain booking frame)\n * has a real visitor really on that site and no other tenant to pollute, so\n * it keeps reporting. How that is detected, and why `window.top` rather than\n * `window.parent`, lives with the primitive in `shared/frame.ts` — this file\n * owns the analytics POLICY, that file owns the frame FACT.\n */\n\nimport { sonorBeacon, sonorFetch } from '../shared/sonorFetch'\nimport { resolveAnalyticsTarget, type AnalyticsGateOptions } from '../shared/reporting-gate'\nexport {\n resolveAnalyticsTarget,\n __resetSendGate,\n isCrossOriginFrame,\n isFramed,\n isTopFrameSameOrigin,\n type AnalyticsGateOptions,\n type AnalyticsTarget,\n} from '../shared/reporting-gate'\n\n/**\n * POST an analytics payload. Resolves the gate itself and no-ops when it\n * says no — so a caller that forgets its own early bail still cannot send\n * from a blocked document. That belt-and-braces is the point: this is the\n * choke point, and it does not rely on every call site remembering.\n *\n * `retries: 0` by default — every analytics endpoint here is non-idempotent\n * from the client's side (a retried page view after a lost response\n * double-counts). Never resolves to a rejected promise; tracking must not\n * break a page.\n */\nexport async function analyticsSend(\n path: string,\n body: unknown,\n options: AnalyticsGateOptions & {\n retries?: number\n method?: string\n /** Let the request outlive the page (scroll depth flushed on unmount). */\n keepalive?: boolean\n } = {},\n): Promise<Response | null> {\n const target = resolveAnalyticsTarget(options)\n if (!target) return null\n try {\n return await sonorFetch(\n `${target.apiUrl}${path}`,\n {\n method: options.method || 'POST',\n headers: { 'Content-Type': 'application/json' },\n ...(options.keepalive ? { keepalive: true } : {}),\n ...(body === undefined ? {} : { body: JSON.stringify(body) }),\n },\n { apiKey: target.apiKey, retries: options.retries ?? 0 },\n )\n } catch {\n // Network failures are expected and non-fatal — callers log under debug.\n return null\n }\n}\n\n/**\n * Unload-time twin of {@link analyticsSend}, through the keepalive beacon so\n * the credential stays in a header. Gated identically.\n */\nexport function analyticsBeacon(\n path: string,\n body: unknown,\n options: AnalyticsGateOptions = {},\n): void {\n const target = resolveAnalyticsTarget(options)\n if (!target) return\n sonorBeacon(`${target.apiUrl}${path}`, body, target.apiKey)\n}\n","/**\n * @sonordev/site-kit/analytics - Web Vitals Component\n *\n * Reports Core Web Vitals to the Sonor API, per route and with attribution.\n *\n * Two things make this more than a number stream (web-vitals v6):\n *\n * 1. SOFT NAVIGATIONS. Vitals used to finalize once per document, so on an\n * App Router site every metric was attributed to the LANDING path — a\n * visitor who arrived on / and browsed to /services produced no data for\n * /services at all. With `reportSoftNavs`, the library re-measures across\n * in-session route changes and tells us which URL each metric belongs to\n * (`metric.navigationURL`), so per-page vitals finally reflect the journey\n * rather than the entry point.\n *\n * 2. ATTRIBUTION. The attribution build answers \"what was slow\": the LCP\n * element and its image URL, the element an interaction hit and which\n * phase dominated INP, the node responsible for the largest layout shift.\n * A value says a page is slow; this says what to fix.\n *\n * Ratings come from the library (`metric.rating`) rather than thresholds\n * copied into this file, so they can't drift from the official buckets.\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { usePathname } from 'next/navigation'\nimport type { MetricWithAttribution } from 'web-vitals/attribution'\n// Same send gate as the rest of the analytics module — credential resolution\n// and the cross-origin-frame guard. This file used to carry its own copy of\n// the credential resolution; it does not any more, and must not again.\nimport { analyticsBeacon, analyticsSend, resolveAnalyticsTarget } from './send-gate'\nimport { getMeasurementContext } from './measurement-context'\n\ninterface WebVitalsProps {\n visitorId?: string\n sessionId?: string\n sessionTimeout?: number\n apiUrl?: string\n apiKey?: string\n /** Sub-site identifier (matches AnalyticsConfig.site). Tagged on every Web Vital event. */\n site?: string\n /**\n * Report vitals from inside a cross-origin frame. Default false — see\n * send-gate.ts. AnalyticsProvider passes its own `allowInFrame` down, so a\n * site that opts in gets vitals too; standalone mounts pass their own.\n */\n allowInFrame?: boolean\n /** Report from localhost/loopback browser hosts. Default false. */\n allowLocalhost?: boolean\n debug?: boolean\n}\n\n/** Path a metric belongs to. Soft-nav metrics carry the URL they were\n measured for, which is NOT necessarily the route showing when they\n report — trusting the current pathname would misattribute them. */\nfunction pathForMetric(metric: MetricWithAttribution, fallback: string): string {\n const url = (metric as { navigationURL?: string }).navigationURL\n if (url) {\n try {\n return new URL(url, window.location.origin).pathname || fallback\n } catch {\n /* fall through */\n }\n }\n return fallback\n}\n\n/**\n * Trim the library's attribution to the fields that answer \"what do I fix?\".\n * Kept small on purpose: this rides on every metric report, and the raw\n * objects carry PerformanceEntry arrays we have no use for downstream.\n */\nfunction summarizeAttribution(metric: MetricWithAttribution): Record<string, unknown> | undefined {\n const a = metric.attribution as Record<string, any> | undefined\n if (!a) return undefined\n const pick = (keys: string[]) => {\n const out: Record<string, unknown> = {}\n for (const key of keys) {\n const value = a[key]\n if (value !== undefined && value !== null && value !== '') out[key] = value\n }\n return Object.keys(out).length ? out : undefined\n }\n switch (metric.name) {\n case 'LCP':\n // target = the element; url = its image; the rest is the load broken\n // into the four subparts you can actually act on.\n return pick([\n 'target',\n 'url',\n 'timeToFirstByte',\n 'resourceLoadDelay',\n 'resourceLoadDuration',\n 'elementRenderDelay',\n ])\n case 'INP':\n return pick([\n 'interactionTarget',\n 'interactionType',\n 'inputDelay',\n 'processingDuration',\n 'presentationDelay',\n 'loadState',\n ])\n case 'CLS':\n return pick(['largestShiftTarget', 'largestShiftValue', 'largestShiftTime', 'loadState'])\n case 'FCP':\n return pick(['timeToFirstByte', 'firstByteToFCP', 'loadState'])\n case 'TTFB':\n return pick(['waitingDuration', 'dnsDuration', 'connectionDuration', 'requestDuration'])\n default:\n return undefined\n }\n}\n\nexport function WebVitals({\n apiUrl: propApiUrl,\n apiKey: propApiKey,\n site: propSite,\n allowInFrame = false,\n allowLocalhost = false,\n debug = false,\n visitorId,\n sessionId,\n sessionTimeout,\n}: WebVitalsProps) {\n const pathname = usePathname()\n\n // Observers register exactly once (mount): re-registering per pathname\n // leaked listeners on every navigation and re-reported the landing page's\n // LCP under later routes. Soft-navigation support means one registration\n // now covers the whole session, and each metric says which URL it is for.\n const landingPathRef = useRef<string>(pathname || '/')\n const propsRef = useRef({ propApiUrl, propApiKey, propSite, allowInFrame, allowLocalhost, debug, visitorId, sessionId, sessionTimeout })\n propsRef.current = { propApiUrl, propApiKey, propSite, allowInFrame, allowLocalhost, debug, visitorId, sessionId, sessionTimeout }\n\n useEffect(() => {\n let cancelled = false\n let teardown: (() => void) | undefined\n\n // Dynamic import to avoid SSR issues; catch ChunkLoadError (e.g. Turbopack dev)\n import('web-vitals/attribution').then(({ onCLS, onLCP, onTTFB, onINP, onFCP }) => {\n if (cancelled) return\n const { propApiUrl, propApiKey, propSite, allowInFrame, allowLocalhost, debug, visitorId, sessionId, sessionTimeout } = propsRef.current\n\n // Metric instances already sent. Metrics can report repeatedly as a\n // page evolves (and once more at page hide); the id is stable per\n // instance, so this keeps the last value per instance without\n // double-counting.\n const sent = new Map<string, number>()\n\n const report = (metric: MetricWithAttribution, viaBeacon = false) => {\n if (!resolveAnalyticsTarget({ apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug })) return\n if (sent.get(metric.id) === metric.value) return\n sent.set(metric.id, metric.value)\n\n const site =\n propSite ||\n (typeof window !== 'undefined'\n ? (window as { __SITE_KIT_SITE__?: string }).__SITE_KIT_SITE__ ||\n window.location.host\n : '')\n\n const data = {\n ...getMeasurementContext(propsRef.current),\n site,\n pagePath: pathForMetric(metric, landingPathRef.current),\n metricName: metric.name,\n metricValue: metric.value,\n // The library's own rating — no thresholds duplicated here.\n metricRating: metric.rating,\n metricDelta: metric.delta,\n metricId: metric.id,\n navigationType: metric.navigationType,\n attribution: summarizeAttribution(metric),\n }\n\n if (debug) console.log('[Analytics] Web Vital:', data)\n\n const endpoint = '/api/public/analytics/web-vitals'\n const gate = { apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug, visitorId, sessionId, sessionTimeout }\n if (viaBeacon) {\n // Page is going away: keepalive fetch keeps the credential in the\n // header (raw sendBeacon can't set one).\n analyticsBeacon(endpoint, data, gate)\n return\n }\n void analyticsSend(endpoint, data, gate)\n }\n\n // reportSoftNavs: measure across in-session route changes, not just the\n // initial document. Without it, everything below the entry page is dark.\n const opts = { reportSoftNavs: true }\n const pending: MetricWithAttribution[] = []\n const collect = (metric: MetricWithAttribution) => {\n pending.push(metric)\n report(metric)\n }\n\n onLCP(collect, opts)\n onCLS(collect, opts)\n onTTFB(collect, opts)\n onINP(collect, opts)\n onFCP(collect, opts)\n\n // At page hide, flush final values (CLS and INP in particular keep\n // changing until the very end) using the beacon path.\n const handleVisibilityChange = () => {\n if (document.visibilityState !== 'hidden') return\n for (const metric of pending) report(metric, true)\n }\n document.addEventListener('visibilitychange', handleVisibilityChange)\n\n teardown = () => {\n document.removeEventListener('visibilitychange', handleVisibilityChange)\n }\n }).catch((err) => {\n // ChunkLoadError in Turbopack/dev - Web Vitals are optional\n if (propsRef.current.debug) console.warn('[Analytics] Web Vitals import failed:', err)\n })\n\n return () => {\n cancelled = true\n teardown?.()\n }\n // Mount-once by design — see comment above. Props are read via propsRef.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n return null\n}\n","import { collectPageObservation } from './page-observation'\nimport { getDeviceType } from './measurement-context'\n/**\n * @sonordev/site-kit/analytics - Analytics Provider\n * \n * Provides analytics context and automatic page view tracking.\n * All data goes through Portal API with API key auth - never Supabase directly.\n */\n\n'use client'\n\nimport React, { createContext, useContext, useEffect, useRef, useCallback, useMemo, useState } from 'react'\nimport { usePathname } from 'next/navigation'\nimport type { AnalyticsContextValue, TrackEventOptions, TrackConversionOptions } from './types'\nimport { registerAnalyticsDispatcher } from './dispatch'\nimport { WebVitals } from './WebVitals'\n// Single source of truth for visitor/session IDs (storage keys _sk_vid/_sk_sid)\n// — shared with SignalBridge and EngageWidget. Includes the crypto.randomUUID\n// fallback for older browsers; do NOT re-fork ID logic into this module.\nimport { getOrCreateVisitorId, getOrCreateSessionId } from '../shared/identity'\n// THE single analytics send decision — credential resolution AND the\n// cross-origin-frame guard, in one place. Every phone-home below goes through\n// it; this module must never call sonorFetch/sonorBeacon directly (send-gate.ts\n// explains why, and send-gate.test.ts enforces it).\nimport {\n analyticsBeacon,\n analyticsSend,\n resolveAnalyticsTarget,\n} from './send-gate'\nimport { onPageLeave } from '../shared/page-leave'\n\nconst AnalyticsContext = createContext<AnalyticsContextValue | null>(null)\n\n// ============================================\n// Utility Functions\n// ============================================\n\n/**\n * Schedule a callback to run during browser idle time.\n * Safari has no requestIdleCallback — use a short real delay there so the\n * work lands after the post-hydration burst instead of right inside it.\n */\nfunction scheduleIdleTask(callback: () => void, timeout = 2000): void {\n if (typeof window !== 'undefined' && 'requestIdleCallback' in window) {\n ;(window as typeof window & { requestIdleCallback: (cb: () => void, opts?: { timeout: number }) => number }).requestIdleCallback(\n callback,\n { timeout }\n )\n } else {\n setTimeout(callback, 300)\n }\n}\n\n\nfunction getBrowser(): string {\n if (typeof window === 'undefined') return 'unknown'\n \n const ua = navigator.userAgent\n if (ua.includes('Firefox')) return 'Firefox'\n if (ua.includes('Edg')) return 'Edge'\n if (ua.includes('Chrome')) return 'Chrome'\n if (ua.includes('Safari')) return 'Safari'\n if (ua.includes('Opera') || ua.includes('OPR')) return 'Opera'\n return 'Other'\n}\n\nfunction getOS(): string {\n if (typeof window === 'undefined') return 'unknown'\n \n const ua = navigator.userAgent\n if (ua.includes('Windows')) return 'Windows'\n if (ua.includes('Mac OS X') || ua.includes('Macintosh')) return 'macOS'\n if (ua.includes('iPhone') || ua.includes('iPad')) return 'iOS'\n if (ua.includes('Android')) return 'Android'\n if (ua.includes('Linux')) return 'Linux'\n if (ua.includes('CrOS')) return 'ChromeOS'\n return 'Other'\n}\n\nfunction getUserAgent(): string {\n if (typeof window === 'undefined') return ''\n return navigator.userAgent\n}\n\nfunction getUTMParams(): Record<string, string> {\n if (typeof window === 'undefined') return {}\n\n const params = new URLSearchParams(window.location.search)\n const utmParams: Record<string, string> = {}\n\n for (const key of ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']) {\n const value = params.get(key)\n if (value) utmParams[key] = value\n }\n\n return utmParams\n}\n\n/**\n * Ad click IDs (Google/Microsoft auto-tagging sends these with NO utm\n * params). The server classifies gclid/msclkid as paid search — without\n * them, ad traffic silently reports as organic/direct.\n */\nfunction getClickIds(): { gclid?: string; fbclid?: string; msclkid?: string } {\n if (typeof window === 'undefined') return {}\n const params = new URLSearchParams(window.location.search)\n const ids: { gclid?: string; fbclid?: string; msclkid?: string } = {}\n for (const key of ['gclid', 'fbclid', 'msclkid'] as const) {\n const value = params.get(key)\n if (value) ids[key] = value.slice(0, 200)\n }\n return ids\n}\n\n/**\n * Landing-page markers set per-route by <LandingPage campaign=\"...\">\n * (@sonordev/site-kit/landing). Read at SEND time so SPA navigations onto\n * and off a landing route tag exactly the right payloads.\n */\nfunction getLandingContext(): { pageKind?: string; landingCampaign?: string } {\n if (typeof window === 'undefined') return {}\n const w = window as { __SITE_KIT_PAGE_KIND__?: string; __SITE_KIT_CAMPAIGN__?: string }\n if (w.__SITE_KIT_PAGE_KIND__ !== 'landing' || !w.__SITE_KIT_CAMPAIGN__) return {}\n return { pageKind: 'landing', landingCampaign: w.__SITE_KIT_CAMPAIGN__ }\n}\n\n/** Browser locale + IANA timezone — coarse audience signals, no PII. */\nfunction getLocaleInfo(): { language?: string; timezone?: string } {\n if (typeof navigator === 'undefined') return {}\n let timezone: string | undefined\n try {\n timezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n } catch {\n timezone = undefined\n }\n return { language: navigator.language || undefined, timezone }\n}\n\n/**\n * Promise wrapper around scheduleIdleTask so the metadata scrape can yield\n * back to the main thread between slices.\n */\nfunction nextIdleSlice(timeout = 1500): Promise<void> {\n return new Promise(resolve => scheduleIdleTask(resolve, timeout))\n}\n\n/**\n * Extract SEO metadata from the current page.\n * This enriches seo_pages with live data from the actual page.\n *\n * Split into three slices so no single idle callback runs the whole scrape as\n * one long task on throttled mobile CPUs (full-tree clones + textContent reads\n * are the expensive part):\n * 1. getLightPageMetadata — meta tags, canonical, H1 (cheap queries)\n * 2. getLinkPageMetadata — word count + link graph (whole-tree text + anchors)\n * 3. getHeavyPageMetadata — images w/ context, content clone, sections, FAQs\n * Callers yield via nextIdleSlice() between them and merge the results; the\n * merged payload shape is identical to the old monolithic getPageMetadata().\n */\nfunction getLightPageMetadata(): Record<string, any> {\n if (typeof document === 'undefined') return {}\n\n const getMeta = (name: string): string | null => {\n const el = document.querySelector(`meta[name=\"${name}\"], meta[property=\"${name}\"]`)\n return el?.getAttribute('content') || null\n }\n \n const getCanonical = (): string | null => {\n const el = document.querySelector('link[rel=\"canonical\"]')\n return el?.getAttribute('href') || null\n }\n \n const getRobots = (): string | null => {\n return getMeta('robots')\n }\n \n const getH1 = (): string | null => {\n const h1 = document.querySelector('h1')\n return h1?.textContent?.trim() || null\n }\n \n const getH1Count = (): number => {\n return document.querySelectorAll('h1').length\n }\n \n return {\n observation: collectPageObservation(),\n metaDescription: getMeta('description'),\n canonical: getCanonical(),\n robots: getRobots(),\n ogTitle: getMeta('og:title'),\n ogDescription: getMeta('og:description'),\n ogImage: getMeta('og:image'),\n h1: getH1(),\n h1Count: getH1Count(),\n }\n}\n\n/** Slice 2: image inventory — per-image ancestor walks + surrounding text. */\nfunction getMediaPageMetadata(): Record<string, any> {\n if (typeof document === 'undefined') return {}\n\n interface PageImageReport {\n src: string\n alt: string | null\n elementType: 'img' | 'Image' | 'ManagedImage' | 'picture' | 'background'\n slotId?: string\n position: 'hero' | 'content' | 'sidebar' | 'footer' | 'header' | 'unknown'\n width?: number\n height?: number\n surroundingText?: string\n }\n\n // Helper to determine element position in page\n const getElementPosition = (el: Element): PageImageReport['position'] => {\n let current: Element | null = el\n while (current) {\n const tag = current.tagName?.toLowerCase()\n const role = current.getAttribute('role')\n const className = current.className?.toString?.() || ''\n \n // Check for hero sections\n if (className.includes('hero') || current.id?.includes('hero')) return 'hero'\n if (tag === 'header' || role === 'banner') return 'header'\n if (tag === 'nav' || role === 'navigation') return 'header'\n if (tag === 'footer' || role === 'contentinfo') return 'footer'\n if (tag === 'aside' || role === 'complementary') return 'sidebar'\n if (tag === 'main' || tag === 'article' || role === 'main') return 'content'\n \n current = current.parentElement\n }\n return 'unknown'\n }\n\n // Get surrounding text context for an image\n const getSurroundingText = (el: Element): string => {\n // Find closest paragraph, figcaption, or container\n const container = el.closest('figure, p, div, section, article')\n if (!container) return ''\n \n // Get text excluding script/style content\n const text = container.textContent?.replace(/\\s+/g, ' ').trim() || ''\n return text.slice(0, 300) // Limit to 300 chars\n }\n\n const getImageDetails = (): PageImageReport[] => {\n const images = document.querySelectorAll('img, [data-managed-image]')\n const seen = new Set<string>()\n const results: PageImageReport[] = []\n \n images.forEach(el => {\n const img = el as HTMLImageElement\n const src = img.getAttribute('src') || img.getAttribute('data-src') || ''\n \n // Skip duplicates, data URIs, and empty src\n if (!src || src.startsWith('data:') || seen.has(src)) return\n seen.add(src)\n \n // Detect if it's a ManagedImage\n const slotId = img.getAttribute('data-slot-id') || undefined\n const isManagedImage = img.hasAttribute('data-managed-image') || !!slotId\n \n results.push({\n src,\n alt: img.alt || null,\n elementType: isManagedImage ? 'ManagedImage' : 'img',\n slotId,\n position: getElementPosition(img),\n width: img.naturalWidth || parseInt(img.getAttribute('width') || '0') || undefined,\n height: img.naturalHeight || parseInt(img.getAttribute('height') || '0') || undefined,\n surroundingText: getSurroundingText(img),\n })\n })\n \n return results\n }\n\n const getImageStats = (): { count: number; withoutAlt: number; images: PageImageReport[] } => {\n const images = getImageDetails()\n let withoutAlt = 0\n images.forEach(img => {\n if (!img.alt || img.alt.trim() === '') withoutAlt++\n })\n return { count: images.length, withoutAlt, images }\n }\n\n const imageStats = getImageStats()\n return {\n imagesCount: imageStats.count,\n imagesWithoutAlt: imageStats.withoutAlt,\n images: imageStats.images, // Full image details for SEO optimization\n }\n}\n\n/** Slice 3: word count, link graph, and content extraction for Signal AI. */\nfunction getContentPageMetadata(): Record<string, any> {\n if (typeof document === 'undefined') return {}\n\n const getWordCount = (): number => {\n // Get main content, fallback to body\n const main = document.querySelector('main, article, [role=\"main\"]') || document.body\n const text = main.textContent || ''\n return text.split(/\\s+/).filter(w => w.length > 0).length\n }\n\n interface InternalLink {\n targetPath: string\n anchorText: string\n position: 'header' | 'nav' | 'content' | 'footer' | 'sidebar' | 'unknown'\n isNofollow: boolean\n }\n \n const getLinkStats = (): { \n internal: number\n external: number\n internalLinks: InternalLink[]\n } => {\n const links = document.querySelectorAll('a[href]')\n const currentHost = window.location.host\n let internal = 0\n let external = 0\n const internalLinks: InternalLink[] = []\n \n // Helper to determine link position in page\n const getLinkPosition = (el: Element): InternalLink['position'] => {\n let current: Element | null = el\n while (current) {\n const tag = current.tagName?.toLowerCase()\n const role = current.getAttribute('role')\n \n if (tag === 'header' || role === 'banner') return 'header'\n if (tag === 'nav' || role === 'navigation') return 'nav'\n if (tag === 'footer' || role === 'contentinfo') return 'footer'\n if (tag === 'aside' || role === 'complementary') return 'sidebar'\n if (tag === 'main' || tag === 'article' || role === 'main') return 'content'\n \n current = current.parentElement\n }\n return 'unknown'\n }\n \n links.forEach(link => {\n const href = link.getAttribute('href') || ''\n const rel = link.getAttribute('rel') || ''\n const isNofollow = rel.includes('nofollow')\n \n let isInternal = false\n let targetPath = ''\n \n if (href.startsWith('/') && !href.startsWith('//')) {\n isInternal = true\n targetPath = href.split('?')[0].split('#')[0] // Remove query/hash\n } else if (href.startsWith('#')) {\n // Same page anchor - skip\n internal++\n return\n } else if (href.startsWith('http')) {\n try {\n const url = new URL(href)\n if (url.host === currentHost) {\n isInternal = true\n targetPath = url.pathname\n } else {\n external++\n }\n } catch {\n // Invalid URL\n }\n }\n \n if (isInternal && targetPath) {\n internal++\n // Normalize path\n if (!targetPath.startsWith('/')) targetPath = '/' + targetPath\n if (targetPath !== '/' && targetPath.endsWith('/')) {\n targetPath = targetPath.slice(0, -1)\n }\n \n internalLinks.push({\n targetPath,\n anchorText: (link.textContent || '').trim().slice(0, 200),\n position: getLinkPosition(link),\n isNofollow,\n })\n }\n })\n \n return { internal, external, internalLinks }\n }\n\n // ============================================\n // Content Extraction for Signal AI Analysis\n // ============================================\n \n interface HeadingInfo {\n level: number\n text: string\n id?: string\n }\n\n interface ContentSection {\n heading?: string\n headingLevel?: number\n text: string\n wordCount: number\n }\n\n interface FAQItem {\n question: string\n answer: string\n }\n\n const getHeadingStructure = (): HeadingInfo[] => {\n const headings: HeadingInfo[] = []\n const elements = document.querySelectorAll('h1, h2, h3, h4, h5, h6')\n \n elements.forEach(el => {\n const level = parseInt(el.tagName[1])\n const text = el.textContent?.trim() || ''\n if (text) {\n headings.push({\n level,\n text: text.slice(0, 200), // Limit length\n id: el.id || undefined\n })\n }\n })\n \n return headings\n }\n\n const getContentText = (): { text: string; hash: string } => {\n // Get main content area\n const main = document.querySelector('main, article, [role=\"main\"]') || document.body\n \n // Clone to avoid modifying the page\n const clone = main.cloneNode(true) as Element\n \n // Remove script, style, nav, header, footer from clone\n clone.querySelectorAll('script, style, nav, header, footer, [role=\"navigation\"], [role=\"banner\"], [role=\"contentinfo\"]').forEach(el => el.remove())\n \n // Get clean text\n let text = clone.textContent || ''\n text = text.replace(/\\s+/g, ' ').trim()\n \n // Limit to 10KB for storage\n text = text.slice(0, 10000)\n \n // Simple hash for change detection\n let hash = 0\n for (let i = 0; i < text.length; i++) {\n const chr = text.charCodeAt(i)\n hash = ((hash << 5) - hash) + chr\n hash |= 0\n }\n \n return { text, hash: hash.toString(16) }\n }\n\n const getContentSections = (): ContentSection[] => {\n const sections: ContentSection[] = []\n const main = document.querySelector('main, article, [role=\"main\"]') || document.body\n \n // Find all heading + content pairs\n const headings = main.querySelectorAll('h1, h2, h3')\n \n headings.forEach((heading, idx) => {\n const headingText = heading.textContent?.trim() || ''\n const level = parseInt(heading.tagName[1])\n \n // Get content between this heading and the next\n let content = ''\n let sibling = heading.nextElementSibling\n \n while (sibling && !['H1', 'H2', 'H3'].includes(sibling.tagName)) {\n if (sibling.tagName === 'P' || sibling.tagName === 'UL' || sibling.tagName === 'OL' || sibling.tagName === 'DIV') {\n content += (sibling.textContent || '') + ' '\n }\n sibling = sibling.nextElementSibling\n }\n \n content = content.replace(/\\s+/g, ' ').trim().slice(0, 1000)\n const wordCount = content.split(/\\s+/).filter(w => w.length > 0).length\n \n if (content && wordCount > 10) {\n sections.push({\n heading: headingText.slice(0, 200),\n headingLevel: level,\n text: content,\n wordCount\n })\n }\n })\n \n return sections.slice(0, 20) // Limit to 20 sections\n }\n\n const detectFAQContent = (): FAQItem[] => {\n const faqs: FAQItem[] = []\n \n // Look for FAQ schema\n const scripts = document.querySelectorAll('script[type=\"application/ld+json\"]')\n scripts.forEach(script => {\n try {\n const data = JSON.parse(script.textContent || '')\n if (data['@type'] === 'FAQPage' && data.mainEntity) {\n data.mainEntity.forEach((item: any) => {\n if (item['@type'] === 'Question') {\n faqs.push({\n question: item.name?.slice(0, 200) || '',\n answer: (item.acceptedAnswer?.text || '').slice(0, 500)\n })\n }\n })\n }\n } catch { /* ignore parse errors */ }\n })\n \n // Look for common FAQ patterns in HTML\n if (faqs.length === 0) {\n // details/summary pattern\n const details = document.querySelectorAll('details')\n details.forEach(detail => {\n const summary = detail.querySelector('summary')\n if (summary) {\n const question = summary.textContent?.trim() || ''\n const answer = detail.textContent?.replace(question, '').trim().slice(0, 500) || ''\n if (question && answer) {\n faqs.push({ question: question.slice(0, 200), answer })\n }\n }\n })\n \n // Accordion pattern (common class names)\n const accordionItems = document.querySelectorAll('[class*=\"accordion\"], [class*=\"faq\"], [data-faq]')\n accordionItems.forEach(item => {\n const questionEl = item.querySelector('[class*=\"question\"], [class*=\"title\"], button, h3, h4')\n const answerEl = item.querySelector('[class*=\"answer\"], [class*=\"content\"], [class*=\"panel\"], p')\n if (questionEl && answerEl) {\n const question = questionEl.textContent?.trim() || ''\n const answer = answerEl.textContent?.trim().slice(0, 500) || ''\n if (question && answer && question.includes('?')) {\n faqs.push({ question: question.slice(0, 200), answer })\n }\n }\n })\n }\n \n return faqs.slice(0, 20) // Limit to 20 FAQs\n }\n\n const detectLists = (): { type: 'ul' | 'ol'; items: string[] }[] => {\n const lists: { type: 'ul' | 'ol'; items: string[] }[] = []\n const main = document.querySelector('main, article, [role=\"main\"]') || document.body\n \n main.querySelectorAll('ul, ol').forEach(list => {\n const type = list.tagName.toLowerCase() as 'ul' | 'ol'\n const items: string[] = []\n \n list.querySelectorAll(':scope > li').forEach(li => {\n const text = li.textContent?.trim().slice(0, 200) || ''\n if (text) items.push(text)\n })\n \n // Only include substantial lists (3+ items)\n if (items.length >= 3) {\n lists.push({ type, items: items.slice(0, 10) })\n }\n })\n \n return lists.slice(0, 10) // Limit to 10 lists\n }\n\n const estimateReadingTime = (wordCount: number): number => {\n // Average reading speed: 200-250 words per minute\n return Math.ceil(wordCount / 225)\n }\n \n const linkStats = getLinkStats()\n const headingStructure = getHeadingStructure()\n const contentData = getContentText()\n const contentSections = getContentSections()\n const faqContent = detectFAQContent()\n const listContent = detectLists()\n const wordCount = getWordCount()\n\n return {\n wordCount,\n internalLinks: linkStats.internal,\n internalLinkTargets: linkStats.internalLinks, // Full link graph data\n externalLinks: linkStats.external,\n // Content analysis data\n content: {\n text: contentData.text,\n hash: contentData.hash,\n headings: headingStructure,\n sections: contentSections,\n faqs: faqContent.length > 0 ? faqContent : undefined,\n lists: listContent.length > 0 ? listContent : undefined,\n readingTime: estimateReadingTime(wordCount),\n },\n }\n}\n\n/**\n * Collect full page metadata across three idle slices so the scrape never\n * runs as one long main-thread task. `isStale` is checked between slices —\n * if the user SPA-navigates mid-scrape, later slices would read the NEW\n * page's DOM under the old path, so we stop and return only the slices\n * scraped while the page was still current (partial metadata beats corrupt\n * metadata, and the page view itself is still recorded).\n */\nasync function collectPageMetadata(isStale: () => boolean): Promise<Record<string, any>> {\n const light = getLightPageMetadata()\n await nextIdleSlice()\n if (isStale()) return light\n const media = getMediaPageMetadata()\n await nextIdleSlice()\n if (isStale()) return { ...light, ...media }\n const content = getContentPageMetadata()\n return { ...light, ...media, ...content }\n}\n\n// ============================================\n// Provider Component\n// ============================================\n\ninterface AnalyticsProviderProps {\n /**\n * Optional. AnalyticsProvider is normally mounted as a CHILDLESS sibling of\n * page content (see SiteKitClientProviders) — it tracks via effects and a\n * metadata ref, it does not need to enclose the page. When rendered\n * childless, the AnalyticsContext simply has no consumers; components that\n * need it should use `useAnalyticsOptional()`.\n */\n children?: React.ReactNode\n apiUrl?: string\n apiKey?: string\n trackPageViews?: boolean\n trackWebVitals?: boolean\n trackScrollDepth?: boolean\n trackClicks?: boolean\n trackJourneys?: boolean // NEW: Track user journey paths\n sessionTimeout?: number\n excludePaths?: string[]\n validateAgainstSitemap?: boolean // Log debug warnings for paths not in sitemap (informational only, never blocks tracking)\n debug?: boolean\n /** External visitor ID from shared identity (used by SiteKitLayout) */\n externalVisitorId?: string\n /** External session ID from shared identity (used by SiteKitLayout) */\n externalSessionId?: string\n /** Callback invoked with page metadata after each page view (used by Signal bridge) */\n onPageMetadata?: (metadata: Record<string, unknown>) => void\n /**\n * Sub-site identifier (e.g. `ohiopowerstudies.com`). Every event tagged with\n * this string so a single Sonor project can host many sites and the\n * dashboard can filter / roll up per site. Normally passed in by\n * SiteKitClientProviders; if omitted, falls back to\n * `window.__SITE_KIT_SITE__` then `window.location.host`.\n */\n site?: string\n /**\n * Report analytics even when this page is rendered inside a CROSS-ORIGIN\n * iframe. Default false: an embedded page's traffic belongs to whoever\n * framed it, not to this project (see send-gate.ts for the measurement that\n * prompted this). Turn it on only for a site deliberately distributed as an\n * embed, where the frame is the product.\n *\n * Same-origin frames are unaffected — they always report.\n */\n allowInFrame?: boolean\n /** Report from localhost/loopback browser hosts. Default false. */\n allowLocalhost?: boolean\n}\n\nexport function AnalyticsProvider({\n children,\n apiUrl: propApiUrl,\n apiKey: propApiKey,\n trackPageViews = true,\n trackWebVitals = true,\n trackScrollDepth = true,\n trackClicks = true,\n trackJourneys = true, // NEW: Enable journey tracking by default\n sessionTimeout = 30,\n excludePaths = [],\n validateAgainstSitemap = false,\n debug = false,\n externalVisitorId,\n externalSessionId,\n onPageMetadata,\n site: propSite,\n allowInFrame = false,\n allowLocalhost = false,\n}: AnalyticsProviderProps) {\n const pathname = usePathname()\n // Use state to track query string changes instead of useSearchParams (avoids Suspense requirement)\n const [queryString, setQueryString] = useState('')\n\n // Sub-site identifier — every event body below carries this so a single\n // Sonor project can host many sites and the dashboard can filter / roll up\n // per site. Resolution: prop > window global (set by SiteKitClientProviders)\n // > window.location.host. Empty string is acceptable (older clients).\n const site =\n propSite ||\n (typeof window !== 'undefined'\n ? (window as { __SITE_KIT_SITE__?: string }).__SITE_KIT_SITE__ ||\n window.location.host\n : '')\n\n // Everything the send gate needs, resolved once. Every effect and callback\n // below passes THIS object to resolveAnalyticsTarget / analyticsSend /\n // analyticsBeacon — there is no second place that decides whether a send\n // may happen, and no second copy of the prop-over-global fallback.\n const gate = useMemo(\n () => ({ apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug }),\n [propApiUrl, propApiKey, allowInFrame, allowLocalhost, debug],\n )\n\n // Listen for URL changes including query string\n useEffect(() => {\n if (typeof window === 'undefined') return\n \n // Set initial query string\n setQueryString(window.location.search)\n \n // Listen for popstate (back/forward navigation)\n const handlePopState = () => {\n setQueryString(window.location.search)\n }\n \n window.addEventListener('popstate', handlePopState)\n return () => window.removeEventListener('popstate', handlePopState)\n }, [pathname]) // Re-check when pathname changes\n \n const visitorIdRef = useRef<string>('')\n const sessionIdRef = useRef<string>('')\n const lastPathRef = useRef<string>('')\n const validPathsRef = useRef<Set<string> | null>(null)\n const sitemapLoadedRef = useRef<boolean>(false)\n \n // Journey tracking state\n const journeyStartTimeRef = useRef<number>(0)\n const pageEnterTimeRef = useRef<number>(0)\n const currentScrollDepthRef = useRef<number>(0)\n \n // Initialize IDs — use external (shared) IDs when provided by SiteKitLayout\n useEffect(() => {\n visitorIdRef.current = externalVisitorId || getOrCreateVisitorId()\n sessionIdRef.current = externalSessionId || getOrCreateSessionId(sessionTimeout)\n }, [sessionTimeout, externalVisitorId, externalSessionId])\n \n // Fetch valid pages from seo_pages (populated by SitemapSync from SEO module)\n useEffect(() => {\n if (!validateAgainstSitemap) {\n if (debug) console.log('[Analytics] Page validation disabled')\n return\n }\n \n const fetchValidPages = async () => {\n try {\n // Fetch seo_pages which is the canonical source of truth\n // (populated by SitemapSync component from the SEO module).\n // Gated like every other call: a cross-origin frame should not spend\n // the project's rate limit on data it will never report against.\n const response = await analyticsSend(\n '/api/public/seo/pages',\n undefined,\n { ...gate, method: 'GET', retries: 2 },\n )\n if (!response) {\n if (debug) console.warn('[Analytics] Page validation skipped (no key, or embedded)')\n sitemapLoadedRef.current = true\n return\n }\n\n if (response.ok) {\n const data = await response.json()\n const pages = data?.pages || []\n validPathsRef.current = new Set(\n pages.map((p: any) => p.path).filter(Boolean)\n )\n sitemapLoadedRef.current = true\n\n if (debug) {\n console.log('[Analytics] Loaded', validPathsRef.current.size, 'valid pages from seo_pages')\n }\n } else {\n sitemapLoadedRef.current = true // Mark as loaded even on failure so we don't block\n if (debug) {\n console.error('[Analytics] Pages fetch failed:', response.statusText)\n }\n }\n } catch (error) {\n sitemapLoadedRef.current = true // Mark as loaded even on error so we don't block\n if (debug) console.error('[Analytics] Error fetching valid pages:', error)\n }\n }\n \n fetchValidPages()\n }, [gate, validateAgainstSitemap, debug])\n \n // Track page views\n useEffect(() => {\n if (!trackPageViews) return\n if (!pathname) return\n\n // Normalize path: strip trailing slashes (except root)\n const normalizedPath = pathname === '/' ? '/' : pathname.replace(/\\/+$/, '')\n\n if (excludePaths.some(p => normalizedPath.startsWith(p))) return\n if (normalizedPath === lastPathRef.current) return\n\n lastPathRef.current = normalizedPath\n \n const trackPageView = async () => {\n // Resolve BEFORE the metadata scrape: no point burning three idle\n // slices of the visitor's main thread on a DOM scrape whose result can\n // never be sent (no key, or a cross-origin embed).\n if (!resolveAnalyticsTarget(gate)) {\n if (debug) console.warn('[Analytics] Page view skipped (no key, or embedded)')\n return\n }\n\n const utmParams = getUTMParams()\n // Captured before the sliced scrape yields — the title must belong to\n // THIS page even if the user navigates while slices are pending.\n const pageTitle = document.title\n // Sliced scrape: yields to the main thread between phases; on SPA\n // navigation mid-scrape it returns only the slices read from this\n // page's DOM (the page view still records, with partial metadata).\n const pageMetadata = await collectPageMetadata(\n () => lastPathRef.current !== normalizedPath,\n )\n\n // Share page metadata with Signal bridge via callback\n if (onPageMetadata) {\n onPageMetadata(pageMetadata)\n }\n\n const clickIds = getClickIds()\n const locale = getLocaleInfo()\n const landing = getLandingContext()\n const pageView = {\n sessionId: sessionIdRef.current,\n visitorId: visitorIdRef.current,\n site,\n pageKind: landing.pageKind,\n landingCampaign: landing.landingCampaign,\n pagePath: normalizedPath,\n pageTitle,\n referrer: document.referrer || null,\n deviceType: getDeviceType(),\n browser: getBrowser(),\n os: getOS(),\n userAgent: getUserAgent(),\n language: locale.language,\n timezone: locale.timezone,\n utmSource: utmParams.utm_source,\n utmMedium: utmParams.utm_medium,\n utmCampaign: utmParams.utm_campaign,\n utmTerm: utmParams.utm_term,\n utmContent: utmParams.utm_content,\n gclid: clickIds.gclid,\n fbclid: clickIds.fbclid,\n msclkid: clickIds.msclkid,\n // SEO enrichment data - updates seo_pages\n seo: pageMetadata,\n }\n\n if (debug) {\n console.log('[Analytics] Page view:', pageView)\n }\n\n // retries: 0 (the gate's default) — a retried page-view after a lost\n // response would double-count.\n const response = await analyticsSend('/api/public/analytics/page-view', pageView, gate)\n\n if (debug && response) {\n console.log('[Analytics] Page view response:', response.status, response.statusText)\n if (!response.ok) {\n const text = await response.text().catch(() => '')\n console.error('[Analytics] Error tracking page view:', response.status, response.statusText, text)\n }\n }\n\n // Informational sitemap validation (never blocks tracking)\n if (validateAgainstSitemap && debug) {\n if (sitemapLoadedRef.current && validPathsRef.current && validPathsRef.current.size > 0) {\n if (!validPathsRef.current.has(normalizedPath)) {\n console.log('[Analytics] Note: path not found in sitemap (tracked anyway):', normalizedPath)\n }\n } else if (!sitemapLoadedRef.current) {\n console.log('[Analytics] Sitemap not yet loaded, tracked anyway:', normalizedPath)\n }\n }\n }\n \n // Use requestIdleCallback to defer tracking until browser is idle\n scheduleIdleTask(() => trackPageView())\n }, [pathname, queryString, gate, trackPageViews, excludePaths, debug, validateAgainstSitemap])\n\n // ============================================\n // Journey Path Tracking\n // ============================================\n useEffect(() => {\n if (!trackJourneys) return\n if (!pathname) return\n if (typeof window === 'undefined') return\n\n // Resolve up front so an embedded page never registers the pagehide\n // listener below — the guard should save the work, not just the request.\n if (!resolveAnalyticsTarget(gate)) return\n\n const now = Date.now()\n const previousPath = lastPathRef.current\n const previousDuration = pageEnterTimeRef.current > 0 \n ? Math.round((now - pageEnterTimeRef.current) / 1000) \n : 0\n const previousScrollDepth = currentScrollDepthRef.current\n\n // Update tracking refs for next navigation\n pageEnterTimeRef.current = now\n currentScrollDepthRef.current = 0\n\n // Determine if this is a new session or continuation\n const isNewSession = !previousPath || journeyStartTimeRef.current === 0\n \n if (isNewSession) {\n journeyStartTimeRef.current = now\n }\n\n const trackJourneyStep = async () => {\n // Landing markers ride on EVERY session action (not just 'start'): a\n // visitor can enter elsewhere and reach the landing page mid-session —\n // the server stamps the campaign first-touch either way.\n const landing = getLandingContext()\n const sessionData: Record<string, any> = {\n sessionId: sessionIdRef.current,\n visitorId: visitorIdRef.current,\n site,\n action: isNewSession ? 'start' : 'update',\n lastPage: pathname,\n userAgent: getUserAgent(),\n pageKind: landing.pageKind,\n landingCampaign: landing.landingCampaign,\n // Journey step data\n journeyStep: {\n page: pathname,\n timestamp: new Date().toISOString(),\n },\n }\n\n // Include previous page duration when navigating\n if (!isNewSession && previousDuration > 0) {\n sessionData.previousPageDuration = previousDuration\n sessionData.previousPageScrollDepth = previousScrollDepth\n }\n\n // Include first page for new sessions\n if (isNewSession) {\n sessionData.firstPage = pathname\n const utmParams = getUTMParams()\n const clickIds = getClickIds()\n sessionData.referrer = document.referrer || null\n sessionData.utmSource = utmParams.utm_source\n sessionData.utmMedium = utmParams.utm_medium\n sessionData.utmCampaign = utmParams.utm_campaign\n sessionData.utmTerm = utmParams.utm_term\n sessionData.utmContent = utmParams.utm_content\n sessionData.gclid = clickIds.gclid\n sessionData.fbclid = clickIds.fbclid\n sessionData.msclkid = clickIds.msclkid\n sessionData.screenWidth = window.screen.width\n sessionData.screenHeight = window.screen.height\n }\n\n if (debug) {\n console.log('[Analytics] Journey step:', sessionData)\n }\n\n await analyticsSend('/api/public/analytics/session', sessionData, gate)\n }\n\n scheduleIdleTask(() => trackJourneyStep())\n\n // Track session end when the page is being hidden/unloaded. `pagehide`\n // (not `beforeunload`): beforeunload never fires on iOS Safari and makes\n // pages ineligible for the back/forward cache in Firefox.\n const handleUnload = () => {\n const duration = Math.round((Date.now() - journeyStartTimeRef.current) / 1000)\n // keepalive transport keeps the key in headers — never in the URL,\n // where server/CDN access logs would capture it.\n analyticsBeacon(\n '/api/public/analytics/session',\n {\n sessionId: sessionIdRef.current,\n site,\n action: 'end',\n duration,\n lastPage: pathname,\n previousPageDuration: Math.round((Date.now() - pageEnterTimeRef.current) / 1000),\n previousPageScrollDepth: currentScrollDepthRef.current,\n },\n gate,\n )\n }\n\n window.addEventListener('pagehide', handleUnload)\n\n return () => {\n window.removeEventListener('pagehide', handleUnload)\n }\n }, [pathname, gate, trackJourneys, debug])\n\n // ============================================\n // Scroll Depth Tracking\n // ============================================\n useEffect(() => {\n if (typeof window === 'undefined') return\n \n if (debug) console.log('[Analytics] Scroll tracking setup:', { trackScrollDepth, hasApiKey: !!propApiKey })\n \n if (!trackScrollDepth) return\n\n // Resolve before attaching the scroll listener: an embedded page should\n // not run scroll math on every frame for data it cannot report.\n if (!resolveAnalyticsTarget(gate)) {\n if (debug) console.warn('[Analytics] Scroll tracking disabled (no key, or embedded)')\n return\n }\n\n if (debug) console.log('[Analytics] Scroll tracking enabled for:', pathname)\n\n let maxDepth = 0\n let startTime = Date.now()\n let milestone25: number | null = null\n let milestone50: number | null = null\n let milestone75: number | null = null\n let milestone100: number | null = null\n let hasTracked = false\n\n const calculateScrollDepth = () => {\n const scrollTop = window.scrollY\n const docHeight = document.documentElement.scrollHeight\n const winHeight = window.innerHeight\n const scrollableHeight = docHeight - winHeight\n \n if (scrollableHeight <= 0) return 100\n return Math.min(100, Math.round((scrollTop / scrollableHeight) * 100))\n }\n\n const handleScroll = () => {\n const depth = calculateScrollDepth()\n const elapsed = (Date.now() - startTime) / 1000\n\n if (depth > maxDepth) {\n maxDepth = depth\n currentScrollDepthRef.current = depth // Update ref for journey tracking\n if (debug && depth % 25 === 0) console.log('[Analytics] Scroll milestone:', depth + '%')\n \n if (depth >= 25 && milestone25 === null) milestone25 = elapsed\n if (depth >= 50 && milestone50 === null) milestone50 = elapsed\n if (depth >= 75 && milestone75 === null) milestone75 = elapsed\n if (depth >= 100 && milestone100 === null) milestone100 = elapsed\n }\n }\n\n const sendScrollData = async (useBeacon = false) => {\n if (hasTracked || maxDepth === 0) return\n hasTracked = true\n\n const totalTime = (Date.now() - startTime) / 1000\n \n const payload = {\n sessionId: sessionIdRef.current,\n visitorId: visitorIdRef.current,\n site,\n pagePath: pathname,\n maxDepthPercent: maxDepth,\n timeTo25: milestone25,\n timeTo50: milestone50,\n timeTo75: milestone75,\n timeTo100: milestone100,\n totalTimeSeconds: totalTime,\n deviceType: getDeviceType(),\n }\n\n // Unload sends go through the beacon (keepalive fetch) so the key stays\n // in headers instead of the URL; regular sends use the shared transport.\n if (useBeacon) {\n analyticsBeacon('/api/public/analytics/scroll-depth', payload, gate)\n } else {\n // keepalive: this also runs on unmount (SPA navigation), where a\n // plain fetch would be cancelled with the outgoing page.\n await analyticsSend('/api/public/analytics/scroll-depth', payload, {\n ...gate,\n keepalive: true,\n })\n }\n if (debug) console.log('[Analytics] Scroll depth:', { maxDepth, totalTime, useBeacon })\n }\n\n // Reset on page change\n maxDepth = 0\n startTime = Date.now()\n milestone25 = null\n milestone50 = null\n milestone75 = null\n milestone100 = null\n hasTracked = false\n\n window.addEventListener('scroll', handleScroll, { passive: true })\n\n // Capture the current position immediately — the provider mounts deferred\n // (idle/first-interaction), so the user may have already scrolled.\n handleScroll()\n\n // Send on page hide/unload via the beacon path (shared/page-leave.ts).\n const stopLeaveListener = onPageLeave(() => sendScrollData(true))\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n stopLeaveListener()\n sendScrollData(false) // Send when component unmounts (navigation) - can use fetch here\n }\n }, [pathname, gate, trackScrollDepth, debug])\n\n // ============================================\n // Click/Heatmap Tracking\n // ============================================\n useEffect(() => {\n if (!trackClicks) return\n if (typeof window === 'undefined') return\n\n // Resolve before attaching the document-wide click listener — an embedded\n // page should not run element inspection on every click for nothing.\n if (!resolveAnalyticsTarget(gate)) return\n\n const handleClick = async (e: MouseEvent) => {\n const target = e.target as HTMLElement\n if (!target) return\n\n const docHeight = document.documentElement.scrollHeight\n const viewportWidth = window.innerWidth\n const viewportHeight = window.innerHeight\n\n // Calculate click position as percentage\n // Both axes in document space (pageX over the document's scrollWidth,\n // pageY over its scrollHeight) so heat positions reconstruct on the\n // page, not the viewport. pageX / viewportWidth overflowed 100% on\n // any horizontally-scrolled page.\n const docWidth = document.documentElement.scrollWidth || viewportWidth\n const xPercent = Math.round((e.pageX / docWidth) * 100)\n const yPercent = Math.round(((e.pageY) / docHeight) * 100)\n\n // Get element info\n const elementTag = target.tagName.toLowerCase()\n const elementId = target.id || null\n const elementClass = target.className && typeof target.className === 'string' \n ? target.className.split(' ').slice(0, 3).join(' ') \n : null\n const elementText = target.textContent?.slice(0, 50) || null\n\n const clickData = {\n sessionId: sessionIdRef.current,\n site,\n pagePath: pathname,\n xPercent,\n yPercent,\n xAbsolute: e.pageX,\n yAbsolute: e.pageY,\n viewportWidth,\n viewportHeight,\n pageHeight: docHeight,\n elementTag,\n elementId,\n elementClass,\n elementText,\n }\n\n if (debug) console.log('[Analytics] Click:', clickData)\n\n scheduleIdleTask(() => {\n void analyticsSend('/api/public/analytics/heatmap-click', clickData, gate)\n }, 500)\n }\n\n document.addEventListener('click', handleClick, { passive: true })\n\n return () => {\n document.removeEventListener('click', handleClick)\n }\n }, [pathname, gate, trackClicks, debug])\n\n // Track event function - uses idle callback for non-critical events\n const trackEvent = useCallback((options: TrackEventOptions) => {\n const doTrack = async () => {\n const event = {\n sessionId: sessionIdRef.current,\n visitorId: visitorIdRef.current,\n site,\n eventName: options.name,\n eventCategory: options.category,\n eventLabel: options.label,\n eventValue: options.value,\n properties: options.properties,\n pagePath: pathname,\n }\n \n if (debug) {\n console.log('[Analytics] Event:', event)\n }\n \n const response = await analyticsSend('/api/public/analytics/event', event, gate)\n if (response && !response.ok && debug) {\n console.error('[Analytics] Error tracking event:', response.statusText)\n }\n }\n\n // Defer event tracking to idle time\n scheduleIdleTask(doTrack, 1000)\n }, [gate, site, pathname, debug])\n \n // Track conversion function - runs immediately (conversions are high priority)\n const trackConversion = useCallback((options: TrackConversionOptions) => {\n const doTrack = async () => {\n const conversion = {\n sessionId: sessionIdRef.current,\n visitorId: visitorIdRef.current,\n site,\n conversionType: options.type,\n value: options.value,\n currency: options.currency,\n metadata: options.metadata,\n pagePath: pathname,\n referrer: document.referrer || null,\n deviceType: getDeviceType(),\n }\n \n if (debug) {\n console.log('[Analytics] Conversion:', conversion)\n }\n \n const response = await analyticsSend('/api/public/analytics/conversion', conversion, gate)\n if (response && !response.ok && debug) {\n console.error('[Analytics] Error tracking conversion:', response.statusText)\n }\n }\n\n // Conversions run immediately (not deferred) since they're high-value events\n doTrack()\n }, [gate, site, pathname, debug])\n \n // Bridge for code outside this provider's tree (the childless-sibling\n // mount pattern leaves the whole page un-provided): register the REAL\n // track functions with the standalone dispatch module, which queues any\n // calls made before this (idle-deferred) provider mounted.\n useEffect(() => {\n registerAnalyticsDispatcher({ trackEvent, trackConversion })\n return () => registerAnalyticsDispatcher(null)\n }, [trackEvent, trackConversion])\n\n const contextValue = useMemo<AnalyticsContextValue>(() => ({\n trackEvent,\n trackConversion,\n sessionId: sessionIdRef.current,\n visitorId: visitorIdRef.current,\n }), [trackEvent, trackConversion])\n \n return (\n <AnalyticsContext.Provider value={contextValue}>\n {trackWebVitals && (\n <WebVitals\n apiUrl={propApiUrl}\n apiKey={propApiKey}\n site={site}\n visitorId={externalVisitorId}\n sessionId={externalSessionId}\n sessionTimeout={sessionTimeout}\n allowInFrame={allowInFrame}\n allowLocalhost={allowLocalhost}\n debug={debug}\n />\n )}\n {children}\n </AnalyticsContext.Provider>\n )\n}\n\n// ============================================\n// Hooks\n// ============================================\n\nexport function useAnalytics(): AnalyticsContextValue {\n const context = useContext(AnalyticsContext)\n if (!context) {\n throw new Error('useAnalytics must be used within an AnalyticsProvider')\n }\n return context\n}\n\n/**\n * Safe version of useAnalytics that returns null when used outside of AnalyticsProvider.\n * Use this in components that may be rendered without an AnalyticsProvider in the tree.\n */\nexport function useAnalyticsOptional(): AnalyticsContextValue | null {\n return useContext(AnalyticsContext)\n}\n\nexport function useTrackEvent() {\n const { trackEvent, trackConversion } = useAnalytics()\n return { trackEvent, trackConversion }\n}\n"]}
@@ -1,16 +0,0 @@
1
- // src/articles/widget-styles.ts
2
- var widgetStyle = {
3
- padding: 20,
4
- backgroundColor: "var(--sk-bg-elevated)",
5
- borderRadius: 12
6
- };
7
- var widgetTitleStyle = {
8
- margin: "0 0 16px",
9
- fontSize: 16,
10
- fontWeight: 600,
11
- color: "var(--sk-text-primary)"
12
- };
13
-
14
- export { widgetStyle, widgetTitleStyle };
15
- //# sourceMappingURL=chunk-4KAMU5HD.mjs.map
16
- //# sourceMappingURL=chunk-4KAMU5HD.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/articles/widget-styles.ts"],"names":[],"mappings":";AAOO,IAAM,WAAA,GAAmC;AAAA,EAC9C,OAAA,EAAS,EAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,YAAA,EAAc;AAChB;AAEO,IAAM,gBAAA,GAAwC;AAAA,EACnD,MAAA,EAAQ,UAAA;AAAA,EACR,QAAA,EAAU,EAAA;AAAA,EACV,UAAA,EAAY,GAAA;AAAA,EACZ,KAAA,EAAO;AACT","file":"chunk-4KAMU5HD.mjs","sourcesContent":["import type React from 'react'\n\n/**\n * Shared sidebar-widget chrome, extracted from PublicationSidebar so the client-side\n * NewsletterWidget (its own module — it needs hooks, and PublicationSidebar is also\n * bundled into the un-stamped server entry articles/server-ui) can reuse it.\n */\nexport const widgetStyle: React.CSSProperties = {\n padding: 20,\n backgroundColor: 'var(--sk-bg-elevated)',\n borderRadius: 12,\n}\n\nexport const widgetTitleStyle: React.CSSProperties = {\n margin: '0 0 16px',\n fontSize: 16,\n fontWeight: 600,\n color: 'var(--sk-text-primary)',\n}\n"]}
@@ -1,39 +0,0 @@
1
- import { VISUAL_VIEWPORT_GAP_PROPERTY } from './chunk-NSWO43XW.mjs';
2
-
3
- // src/engage/launcher-placement.ts
4
- var DEFAULT_LAUNCHER_OFFSET_BOTTOM = "20px";
5
- var DEFAULT_ENGAGE_Z_INDEX = 9999;
6
- var LAUNCHER_OFFSET_PROPERTY = "--sk-echo-offset-bottom";
7
- var SIDE_GUTTER = "20px";
8
- var POPUP_ABOVE_LAUNCHER = "70px";
9
- var POPUP_VERTICAL_RESERVE = "100px";
10
- function toCssLength(value) {
11
- if (typeof value === "number") return Number.isFinite(value) ? `${value}px` : void 0;
12
- const trimmed = value?.trim();
13
- return trimmed ? trimmed : void 0;
14
- }
15
- function chatLauncherStyles({ position, offsetBottom, zIndex } = {}) {
16
- const side = position === "bottom-left" ? { left: SIDE_GUTTER } : { right: SIDE_GUTTER };
17
- const offset = toCssLength(offsetBottom) ?? DEFAULT_LAUNCHER_OFFSET_BOTTOM;
18
- const layer = typeof zIndex === "number" && Number.isFinite(zIndex) ? zIndex : DEFAULT_ENGAGE_Z_INDEX;
19
- const clearance = `var(${LAUNCHER_OFFSET_PROPERTY}, ${offset}) + env(safe-area-inset-bottom, 0px) + var(${VISUAL_VIEWPORT_GAP_PROPERTY}, 0px)`;
20
- return {
21
- launcher: {
22
- ...side,
23
- bottom: `calc(${clearance})`
24
- },
25
- popup: {
26
- ...side,
27
- bottom: `calc(${clearance} + ${POPUP_ABOVE_LAUNCHER})`,
28
- maxHeight: `calc(100dvh - (${clearance}) - ${POPUP_VERTICAL_RESERVE})`
29
- },
30
- // One beneath the launcher. At 0 or below, the same layer instead: -1
31
- // would paint the popup behind the page's own content, and at a shared
32
- // layer the launcher, which renders after the popup, still paints on top.
33
- zIndex: { launcher: layer, popup: layer > 0 ? layer - 1 : layer }
34
- };
35
- }
36
-
37
- export { DEFAULT_ENGAGE_Z_INDEX, chatLauncherStyles };
38
- //# sourceMappingURL=chunk-4U5NCKQY.mjs.map
39
- //# sourceMappingURL=chunk-4U5NCKQY.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/engage/launcher-placement.ts"],"names":[],"mappings":";;;AAkBO,IAAM,8BAAA,GAAiC,MAAA;AAOvC,IAAM,sBAAA,GAAyB;AAO/B,IAAM,wBAAA,GAA2B,yBAAA;AAGxC,IAAM,WAAA,GAAc,MAAA;AAEpB,IAAM,oBAAA,GAAuB,MAAA;AAE7B,IAAM,sBAAA,GAAyB,OAAA;AAe/B,SAAS,YAAY,KAAA,EAAwD;AAC3E,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,MAAA,CAAO,SAAS,KAAK,CAAA,GAAI,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,MAAA;AAC9E,EAAA,MAAM,OAAA,GAAU,OAAO,IAAA,EAAK;AAC5B,EAAA,OAAO,UAAU,OAAA,GAAU,MAAA;AAC7B;AAaO,SAAS,mBACd,EAAE,QAAA,EAAU,cAAc,MAAA,EAAO,GAA2B,EAAC,EACzC;AACpB,EAAA,MAAM,IAAA,GACJ,aAAa,aAAA,GAAgB,EAAE,MAAM,WAAA,EAAY,GAAI,EAAE,KAAA,EAAO,WAAA,EAAY;AAC5E,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,YAAY,CAAA,IAAK,8BAAA;AAC5C,EAAA,MAAM,KAAA,GACJ,OAAO,MAAA,KAAW,QAAA,IAAY,OAAO,QAAA,CAAS,MAAM,IAAI,MAAA,GAAS,sBAAA;AAMnE,EAAA,MAAM,YACJ,CAAA,IAAA,EAAO,wBAAwB,CAAA,EAAA,EAAK,MAAM,8CAEhC,4BAA4B,CAAA,MAAA,CAAA;AAExC,EAAA,OAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,GAAG,IAAA;AAAA,MACH,MAAA,EAAQ,QAAQ,SAAS,CAAA,CAAA;AAAA,KAC3B;AAAA,IACA,KAAA,EAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,MAAA,EAAQ,CAAA,KAAA,EAAQ,SAAS,CAAA,GAAA,EAAM,oBAAoB,CAAA,CAAA,CAAA;AAAA,MACnD,SAAA,EAAW,CAAA,eAAA,EAAkB,SAAS,CAAA,IAAA,EAAO,sBAAsB,CAAA,CAAA;AAAA,KACrE;AAAA;AAAA;AAAA;AAAA,IAIA,MAAA,EAAQ,EAAE,QAAA,EAAU,KAAA,EAAO,OAAO,KAAA,GAAQ,CAAA,GAAI,KAAA,GAAQ,CAAA,GAAI,KAAA;AAAM,GAClE;AACF","file":"chunk-4U5NCKQY.mjs","sourcesContent":["/**\n * @sonordev/site-kit/engage - Chat launcher placement\n *\n * Single source of truth for where the Echo launcher sits and, derived from\n * it, where the chat popup opens, on screen and in the stacking order.\n * ChatWidget styles both elements from here.\n *\n * The popup used to be positioned by its own hardcoded numbers, so a site\n * that lifted the launcher with `!important` (the only way past an inline\n * style) left the popup behind, and the launcher then sat over the popup's\n * input row. Deriving both from one clearance makes that impossible.\n */\n\nimport type { CSSProperties } from 'react'\nimport { VISUAL_VIEWPORT_GAP_PROPERTY } from '../shared/visual-viewport-gap'\nimport type { ChatLauncherPlacement } from './types'\n\n/** Launcher clearance above the bottom edge when a site sets nothing. */\nexport const DEFAULT_LAUNCHER_OFFSET_BOTTOM = '20px'\n\n/**\n * Layer everything Engage renders stacks on when a site sets nothing:\n * popups, nudges, bars and the chat launcher, with the chat popup one below.\n * EngageWidget's default comes from here too.\n */\nexport const DEFAULT_ENGAGE_Z_INDEX = 9999\n\n/**\n * Custom property a stylesheet can set to move the launcher. Wins over the\n * `offsetBottom` option. Deliberately never declared by the kit: a property\n * with a value can never fall through to its own `var()` fallback.\n */\nexport const LAUNCHER_OFFSET_PROPERTY = '--sk-echo-offset-bottom'\n\n/** The launcher's gutter from the side edge. */\nconst SIDE_GUTTER = '20px'\n/** Launcher height (60px) plus the 10px gap the popup keeps above it. */\nconst POPUP_ABOVE_LAUNCHER = '70px'\n/** What the popup's max height gives up: 70px beneath it, 30px clear of the top edge. */\nconst POPUP_VERTICAL_RESERVE = '100px'\n\nexport interface ChatLauncherStyles {\n /** Spread into the launcher's inline style. */\n launcher: CSSProperties\n /** Spread into the popup's inline style. */\n popup: CSSProperties\n /**\n * Each element's `z-index`. Kept out of the spreads so it stays in the\n * slot it always had in each inline style, and the default markup is\n * byte-identical to 5.4's.\n */\n zIndex: { launcher: number; popup: number }\n}\n\nfunction toCssLength(value: string | number | undefined): string | undefined {\n if (typeof value === 'number') return Number.isFinite(value) ? `${value}px` : undefined\n const trimmed = value?.trim()\n return trimmed ? trimmed : undefined\n}\n\n/**\n * Placement styles for the launcher and popup. Everything that is not\n * placement stays in ChatWidget.\n *\n * With no options this resolves to the pre-5.5 geometry: launcher 20px above\n * the safe-area inset, popup 90px above it, popup at most `100dvh - 120px`\n * tall, launcher on z-index 9999 and popup on 9998. The difference is that\n * the inset and the visual viewport gap now also come off the popup's max\n * height, so a tall popup can't run past the top of the screen on a phone\n * with a home indicator.\n */\nexport function chatLauncherStyles(\n { position, offsetBottom, zIndex }: ChatLauncherPlacement = {},\n): ChatLauncherStyles {\n const side: CSSProperties =\n position === 'bottom-left' ? { left: SIDE_GUTTER } : { right: SIDE_GUTTER }\n const offset = toCssLength(offsetBottom) ?? DEFAULT_LAUNCHER_OFFSET_BOTTOM\n const layer =\n typeof zIndex === 'number' && Number.isFinite(zIndex) ? zIndex : DEFAULT_ENGAGE_Z_INDEX\n\n // The launcher's height above the bottom of what the visitor can see: the\n // site's offset (stylesheet token first, so it can vary by page or\n // breakpoint), then the home-indicator inset, then any layout/visual\n // viewport gap (0 unless the site mounts VisualViewportGap).\n const clearance =\n `var(${LAUNCHER_OFFSET_PROPERTY}, ${offset})` +\n ' + env(safe-area-inset-bottom, 0px)' +\n ` + var(${VISUAL_VIEWPORT_GAP_PROPERTY}, 0px)`\n\n return {\n launcher: {\n ...side,\n bottom: `calc(${clearance})`,\n },\n popup: {\n ...side,\n bottom: `calc(${clearance} + ${POPUP_ABOVE_LAUNCHER})`,\n maxHeight: `calc(100dvh - (${clearance}) - ${POPUP_VERTICAL_RESERVE})`,\n },\n // One beneath the launcher. At 0 or below, the same layer instead: -1\n // would paint the popup behind the page's own content, and at a shared\n // layer the launcher, which renders after the popup, still paints on top.\n zIndex: { launcher: layer, popup: layer > 0 ? layer - 1 : layer },\n }\n}\n"]}
@@ -1,57 +0,0 @@
1
- // src/fleet/contract.ts
2
- var FLEET_CONTRACT_VERSION = 1;
3
- var FLEET_MODULES = [
4
- "analytics",
5
- "engage",
6
- "signal",
7
- "sitemapSync",
8
- "forms",
9
- "commerce",
10
- "sync",
11
- "maps",
12
- "slots"
13
- ];
14
- var FLEET_MODULES_MAX = 32;
15
- var FLEET_VERSION_MAX_LENGTH = 40;
16
- var FLEET_VERSION_PATTERN = /^[0-9]+\.[0-9]+\.[0-9]+(?:[-+][0-9A-Za-z.-]+)?$/;
17
- var FLEET_SITE_MAX_LENGTH = 253;
18
- function isFleetModule(x) {
19
- return typeof x === "string" && FLEET_MODULES.includes(x);
20
- }
21
- function normalizeFleetModules(input) {
22
- if (!Array.isArray(input)) return [];
23
- const seen = /* @__PURE__ */ new Set();
24
- for (const item of input) {
25
- if (isFleetModule(item)) seen.add(item);
26
- if (seen.size >= FLEET_MODULES_MAX) break;
27
- }
28
- return FLEET_MODULES.filter((m) => seen.has(m));
29
- }
30
- function sanitizeFleetVersion(raw) {
31
- if (typeof raw !== "string") return null;
32
- const s = raw.trim();
33
- if (!s || s.length > FLEET_VERSION_MAX_LENGTH) return null;
34
- return FLEET_VERSION_PATTERN.test(s) ? s : null;
35
- }
36
- function normalizeFleetSite(raw) {
37
- if (typeof raw !== "string") return null;
38
- let s = raw.trim().toLowerCase();
39
- if (!s) return null;
40
- s = s.replace(/^https?:\/\//, "").replace(/\/.*$/, "").replace(/:\d+$/, "");
41
- if (!s || s.length > FLEET_SITE_MAX_LENGTH) return null;
42
- return s;
43
- }
44
- function buildFleetHeartbeatPayload(input) {
45
- return {
46
- contract_version: FLEET_CONTRACT_VERSION,
47
- kit_version: input.kitVersion,
48
- next_version: sanitizeFleetVersion(input.nextVersion ?? null),
49
- modules: normalizeFleetModules(input.modules),
50
- site: normalizeFleetSite(input.site ?? null),
51
- source: input.source === "build" ? "build" : "client"
52
- };
53
- }
54
-
55
- export { FLEET_CONTRACT_VERSION, FLEET_MODULES, FLEET_MODULES_MAX, FLEET_SITE_MAX_LENGTH, FLEET_VERSION_MAX_LENGTH, FLEET_VERSION_PATTERN, buildFleetHeartbeatPayload, isFleetModule, normalizeFleetModules, normalizeFleetSite, sanitizeFleetVersion };
56
- //# sourceMappingURL=chunk-4WCA2HM6.mjs.map
57
- //# sourceMappingURL=chunk-4WCA2HM6.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/fleet/contract.ts"],"names":[],"mappings":";AAwBO,IAAM,sBAAA,GAAyB;AAuB/B,IAAM,aAAA,GAAwC;AAAA,EACnD,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAMO,IAAM,iBAAA,GAAoB;AAE1B,IAAM,wBAAA,GAA2B;AAEjC,IAAM,qBAAA,GAAwB;AAE9B,IAAM,qBAAA,GAAwB;AA4B9B,SAAS,cAAc,CAAA,EAA8B;AAC1D,EAAA,OAAO,OAAO,CAAA,KAAM,QAAA,IAAa,aAAA,CAAoC,SAAS,CAAC,CAAA;AACjF;AAMO,SAAS,sBAAsB,KAAA,EAA+B;AACnE,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,SAAU,EAAC;AACnC,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAiB;AAClC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,aAAA,CAAc,IAAI,CAAA,EAAG,IAAA,CAAK,IAAI,IAAI,CAAA;AACtC,IAAA,IAAI,IAAA,CAAK,QAAQ,iBAAA,EAAmB;AAAA,EACtC;AACA,EAAA,OAAO,cAAc,MAAA,CAAO,CAAC,MAAM,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,CAAA;AAChD;AAGO,SAAS,qBAAqB,GAAA,EAA6B;AAChE,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,IAAA;AACpC,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,EAAK;AACnB,EAAA,IAAI,CAAC,CAAA,IAAK,CAAA,CAAE,MAAA,GAAS,0BAA0B,OAAO,IAAA;AACtD,EAAA,OAAO,qBAAA,CAAsB,IAAA,CAAK,CAAC,CAAA,GAAI,CAAA,GAAI,IAAA;AAC7C;AAQO,SAAS,mBAAmB,GAAA,EAA6B;AAC9D,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,IAAA;AACpC,EAAA,IAAI,CAAA,GAAI,GAAA,CAAI,IAAA,EAAK,CAAE,WAAA,EAAY;AAC/B,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,CAAA,GAAI,CAAA,CACD,OAAA,CAAQ,cAAA,EAAgB,EAAE,CAAA,CAC1B,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CACnB,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AACtB,EAAA,IAAI,CAAC,CAAA,IAAK,CAAA,CAAE,MAAA,GAAS,uBAAuB,OAAO,IAAA;AACnD,EAAA,OAAO,CAAA;AACT;AAOO,SAAS,2BAA2B,KAAA,EAMjB;AACxB,EAAA,OAAO;AAAA,IACL,gBAAA,EAAkB,sBAAA;AAAA,IAClB,aAAa,KAAA,CAAM,UAAA;AAAA,IACnB,YAAA,EAAc,oBAAA,CAAqB,KAAA,CAAM,WAAA,IAAe,IAAI,CAAA;AAAA,IAC5D,OAAA,EAAS,qBAAA,CAAsB,KAAA,CAAM,OAAO,CAAA;AAAA,IAC5C,IAAA,EAAM,kBAAA,CAAmB,KAAA,CAAM,IAAA,IAAQ,IAAI,CAAA;AAAA,IAC3C,MAAA,EAAQ,KAAA,CAAM,MAAA,KAAW,OAAA,GAAU,OAAA,GAAU;AAAA,GAC/C;AACF","file":"chunk-4WCA2HM6.mjs","sourcesContent":["/**\n * @sonordev/site-kit/fleet/contract — Fleet heartbeat wire contract (v1)\n *\n * Single source of truth for the heartbeat payload shape, shared by site-kit\n * (send side) and sonor-api (ingest side) — the same pattern as\n * `@sonordev/site-kit/llms/contract` and `@sonordev/site-kit/slots/contract`.\n * Import THIS module (never the React component) from the Nest APIs.\n *\n * Why it exists: ~24+ client sites run site-kit at wildly drifted versions and\n * the platform could not answer \"which version / modules / key state is each\n * site running\" without shelling into every local repo. The heartbeat answers\n * that from live traffic. It is fire-and-forget, deferred to idle (never in the\n * hydration path), and carries NO visitor data — only the site's own build\n * fingerprint. Project identity is resolved server-side from the x-api-key\n * header, exactly like every other /api/public/* endpoint; sites never send\n * project IDs.\n *\n * The x-sitekit-version header (set by shared/sonorFetch on every request)\n * already gives the platform a passive \"last seen version\" for ALL traffic,\n * including server-only module fetches. The heartbeat adds the things a header\n * can't carry: the active module set and the host Next.js version.\n */\n\n/** Bump on breaking payload changes. Ingest accepts the current version. */\nexport const FLEET_CONTRACT_VERSION = 1\n\n/**\n * Client-observable site-kit modules — the set a site can honestly self-report\n * from a client boot, because SiteKitClientProviders actually mounts them.\n *\n * Server-only modules (seo, article, images, reputation, redirects, llms) are\n * intentionally absent: they render on the server and cannot be observed from\n * the browser. Their usage still surfaces passively through the\n * x-sitekit-version header on their own server fetches.\n */\nexport type FleetModule =\n | 'analytics'\n | 'engage'\n | 'signal'\n | 'sitemapSync'\n | 'forms'\n | 'commerce'\n | 'sync'\n | 'maps'\n | 'slots'\n\n/** Canonical order — used to serialize equal module sets identically. */\nexport const FLEET_MODULES: readonly FleetModule[] = [\n 'analytics',\n 'engage',\n 'signal',\n 'sitemapSync',\n 'forms',\n 'commerce',\n 'sync',\n 'maps',\n 'slots',\n] as const\n\n/** Where a heartbeat originated. */\nexport type FleetHeartbeatSource = 'client' | 'build'\n\n/** Hard cap on modules accepted in one payload (junk guard). */\nexport const FLEET_MODULES_MAX = 32\n/** Hard cap on the free-form version strings we accept. */\nexport const FLEET_VERSION_MAX_LENGTH = 40\n/** Semver-ish shape. Non-matching values are stored as null, never rejected. */\nexport const FLEET_VERSION_PATTERN = /^[0-9]+\\.[0-9]+\\.[0-9]+(?:[-+][0-9A-Za-z.-]+)?$/\n/** Max host length per RFC 1035. */\nexport const FLEET_SITE_MAX_LENGTH = 253\n\n/**\n * The heartbeat body a site POSTs to `/api/public/fleet/heartbeat`.\n * All wire fields are snake_case to match the other contract modules and the\n * agent-facing read endpoints.\n */\nexport interface FleetHeartbeatPayload {\n contract_version: number\n /** SITE_KIT_VERSION at runtime, e.g. \"3.2.0\". */\n kit_version: string\n /** Installed Next.js version if detectable, else null. */\n next_version?: string | null\n /** Client-observable active modules — deduped, validated, canonical order. */\n modules: FleetModule[]\n /** Normalized lowercase host (multi-site sub-dimension; see CLAUDE.md). */\n site?: string | null\n /** 'client' (runtime boot) or 'build' (CI/build step). Default 'client'. */\n source?: FleetHeartbeatSource\n}\n\n/** The ingest endpoint's response. `received_at` is server-stamped ISO 8601. */\nexport interface FleetHeartbeatResponse {\n ok: boolean\n contract_version: number\n received_at: string\n}\n\nexport function isFleetModule(x: unknown): x is FleetModule {\n return typeof x === 'string' && (FLEET_MODULES as readonly string[]).includes(x)\n}\n\n/**\n * Dedupe + validate a modules array: drop unknowns, cap length, emit in the\n * canonical FLEET_MODULES order so equal sets always serialize identically.\n */\nexport function normalizeFleetModules(input: unknown): FleetModule[] {\n if (!Array.isArray(input)) return []\n const seen = new Set<FleetModule>()\n for (const item of input) {\n if (isFleetModule(item)) seen.add(item)\n if (seen.size >= FLEET_MODULES_MAX) break\n }\n return FLEET_MODULES.filter((m) => seen.has(m))\n}\n\n/** Coerce a version-ish string to a clean value or null (never throws). */\nexport function sanitizeFleetVersion(raw: unknown): string | null {\n if (typeof raw !== 'string') return null\n const s = raw.trim()\n if (!s || s.length > FLEET_VERSION_MAX_LENGTH) return null\n return FLEET_VERSION_PATTERN.test(s) ? s : null\n}\n\n/**\n * Light client-side site normalization to the canonical host shape (lowercase,\n * no protocol/path/port). sonor-api's IngestService.normalizeSite is the\n * AUTHORITATIVE normalizer and re-runs on ingest — this just avoids sending\n * obvious noise. Keep the two shapes aligned (see CLAUDE.md \"site\" convention).\n */\nexport function normalizeFleetSite(raw: unknown): string | null {\n if (typeof raw !== 'string') return null\n let s = raw.trim().toLowerCase()\n if (!s) return null\n s = s\n .replace(/^https?:\\/\\//, '')\n .replace(/\\/.*$/, '')\n .replace(/:\\d+$/, '')\n if (!s || s.length > FLEET_SITE_MAX_LENGTH) return null\n return s\n}\n\n/**\n * Build a validated heartbeat payload from loose inputs. Used by BOTH the\n * client component and the build-time sender so the wire shape is produced in\n * exactly one place (single source of truth for the heartbeat body).\n */\nexport function buildFleetHeartbeatPayload(input: {\n kitVersion: string\n nextVersion?: string | null\n modules?: unknown\n site?: string | null\n source?: FleetHeartbeatSource\n}): FleetHeartbeatPayload {\n return {\n contract_version: FLEET_CONTRACT_VERSION,\n kit_version: input.kitVersion,\n next_version: sanitizeFleetVersion(input.nextVersion ?? null),\n modules: normalizeFleetModules(input.modules),\n site: normalizeFleetSite(input.site ?? null),\n source: input.source === 'build' ? 'build' : 'client',\n }\n}\n"]}
@@ -1,95 +0,0 @@
1
- 'use client';
2
- import { useEffect } from 'react';
3
- import { jsxs, jsx } from 'react/jsx-runtime';
4
-
5
- // src/forms/FormCelebration.tsx
6
- var STYLE_ID = "sk-celebration-css";
7
- var CSS = `
8
- @keyframes sk-cel-pop { 0% { transform: scale(.4); opacity: 0 } 70% { transform: scale(1.08) } 100% { transform: scale(1); opacity: 1 } }
9
- @keyframes sk-cel-draw { to { stroke-dashoffset: 0 } }
10
- @keyframes sk-cel-rise { from { transform: translateY(10px); opacity: 0 } to { transform: translateY(0); opacity: 1 } }
11
- @keyframes sk-cel-burst {
12
- 0% { transform: rotate(var(--sk-cel-a)) translateY(0) scale(1); opacity: 0 }
13
- 12% { opacity: 1 }
14
- 100% { transform: rotate(var(--sk-cel-a)) translateY(calc(var(--sk-cel-d) * -1)) scale(.2); opacity: 0 }
15
- }
16
- .sk-cel { text-align: center; padding: 1.5rem 0; }
17
- .sk-cel-stage { position: relative; width: 92px; height: 92px; margin: 0 auto 1.1rem; }
18
- /* Disc/particles mix toward currentColor so they stay visible on sections
19
- painted with the brand color itself (same contrast guarantee as delight.tsx). */
20
- .sk-cel-disc {
21
- width: 92px; height: 92px; border-radius: 50%;
22
- background: color-mix(in srgb, var(--sk-primary, #2563eb) 72%, currentColor);
23
- display: flex; align-items: center; justify-content: center;
24
- animation: sk-cel-pop .45s cubic-bezier(.22,1.4,.36,1) both;
25
- }
26
- .sk-cel-check { stroke-dasharray: 26; stroke-dashoffset: 26; animation: sk-cel-draw .35s ease-out .28s forwards; }
27
- .sk-cel-p {
28
- position: absolute; top: 50%; left: 50%; width: 7px; height: 7px; margin: -3.5px;
29
- border-radius: 50%; background: color-mix(in srgb, var(--sk-primary, #2563eb) 72%, currentColor); opacity: 0; pointer-events: none;
30
- animation: sk-cel-burst .7s ease-out .3s both;
31
- }
32
- .sk-cel-p:nth-child(even) { width: 5px; height: 5px; border-radius: 1px; background: color-mix(in srgb, var(--sk-primary, #2563eb) 40%, currentColor); }
33
- .sk-cel-msg { animation: sk-cel-rise .4s ease-out .35s both; font-size: 1.15rem; line-height: 1.6; }
34
- @media (prefers-reduced-motion: reduce) {
35
- .sk-cel-disc, .sk-cel-msg { animation: none }
36
- .sk-cel-check { animation: none; stroke-dashoffset: 0 }
37
- .sk-cel-p { display: none }
38
- }
39
- `;
40
- var PARTICLES = Array.from({ length: 12 }, (_, i) => ({
41
- angle: i * 30,
42
- distance: 46 + i % 3 * 14
43
- }));
44
- function FormCelebration({ message, className }) {
45
- useEffect(() => {
46
- try {
47
- if (!window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
48
- navigator.vibrate?.(15);
49
- }
50
- } catch {
51
- }
52
- }, []);
53
- return /* @__PURE__ */ jsxs("div", { className, "data-sk-part": "celebration", children: [
54
- /* @__PURE__ */ jsx("style", { id: STYLE_ID, dangerouslySetInnerHTML: { __html: CSS } }),
55
- /* @__PURE__ */ jsxs("div", { className: "sk-cel", children: [
56
- /* @__PURE__ */ jsxs("div", { className: "sk-cel-stage", "aria-hidden": "true", "data-sk-part": "celebration-stage", children: [
57
- PARTICLES.map((p, i) => /* @__PURE__ */ jsx(
58
- "span",
59
- {
60
- className: "sk-cel-p",
61
- "data-sk-part": "celebration-particle",
62
- style: { ["--sk-cel-a"]: `${p.angle}deg`, ["--sk-cel-d"]: `${p.distance}px` }
63
- },
64
- i
65
- )),
66
- /* @__PURE__ */ jsx("div", { className: "sk-cel-disc", "data-sk-part": "celebration-disc", children: /* @__PURE__ */ jsx("svg", { width: "44", height: "44", viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx(
67
- "path",
68
- {
69
- className: "sk-cel-check",
70
- d: "M5 12.5l4.2 4.3L19 7",
71
- stroke: "var(--sk-form-success-check, #fff)",
72
- strokeWidth: "2.6",
73
- strokeLinecap: "round",
74
- strokeLinejoin: "round"
75
- }
76
- ) }) })
77
- ] }),
78
- /* @__PURE__ */ jsx(
79
- "p",
80
- {
81
- className: "sk-cel-msg",
82
- "data-sk-part": "celebration-message",
83
- role: "status",
84
- "aria-live": "polite",
85
- style: { margin: 0, color: "var(--sk-form-success-text, inherit)" },
86
- children: message
87
- }
88
- )
89
- ] })
90
- ] });
91
- }
92
-
93
- export { FormCelebration };
94
- //# sourceMappingURL=chunk-54CARHDR.mjs.map
95
- //# sourceMappingURL=chunk-54CARHDR.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/forms/FormCelebration.tsx"],"names":[],"mappings":"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","file":"chunk-54CARHDR.mjs","sourcesContent":["'use client'\n\n/**\n * FormCelebration — the payoff moment.\n *\n * Forms are the whole point of a marketing site: they capture the lead.\n * The success state should feel like something HAPPENED — closer to a\n * payment-confirmed screen than a printed receipt. This renders:\n *\n * 1. a brand-colored disc that springs in\n * 2. an SVG check that DRAWS itself (stroke-dashoffset)\n * 3. a one-shot radial burst of particles in the brand color\n * 4. the success message rising in underneath\n *\n * Constraints honored:\n * - Zero dependencies; one injected <style> tag (deduped by id).\n * - Brand-driven: everything derives from --sk-primary, so it matches the\n * site automatically. data-sk-part hooks on every element for overrides.\n * - prefers-reduced-motion: static check + message, no burst, no springs.\n * - a11y: the live region is the message, not the fireworks; particles are\n * aria-hidden and pure CSS (no timers, no cleanup, GC-free).\n */\n\nimport React, { useEffect } from 'react'\n\nconst STYLE_ID = 'sk-celebration-css'\n\nconst CSS = `\n@keyframes sk-cel-pop { 0% { transform: scale(.4); opacity: 0 } 70% { transform: scale(1.08) } 100% { transform: scale(1); opacity: 1 } }\n@keyframes sk-cel-draw { to { stroke-dashoffset: 0 } }\n@keyframes sk-cel-rise { from { transform: translateY(10px); opacity: 0 } to { transform: translateY(0); opacity: 1 } }\n@keyframes sk-cel-burst {\n 0% { transform: rotate(var(--sk-cel-a)) translateY(0) scale(1); opacity: 0 }\n 12% { opacity: 1 }\n 100% { transform: rotate(var(--sk-cel-a)) translateY(calc(var(--sk-cel-d) * -1)) scale(.2); opacity: 0 }\n}\n.sk-cel { text-align: center; padding: 1.5rem 0; }\n.sk-cel-stage { position: relative; width: 92px; height: 92px; margin: 0 auto 1.1rem; }\n/* Disc/particles mix toward currentColor so they stay visible on sections\n painted with the brand color itself (same contrast guarantee as delight.tsx). */\n.sk-cel-disc {\n width: 92px; height: 92px; border-radius: 50%;\n background: color-mix(in srgb, var(--sk-primary, #2563eb) 72%, currentColor);\n display: flex; align-items: center; justify-content: center;\n animation: sk-cel-pop .45s cubic-bezier(.22,1.4,.36,1) both;\n}\n.sk-cel-check { stroke-dasharray: 26; stroke-dashoffset: 26; animation: sk-cel-draw .35s ease-out .28s forwards; }\n.sk-cel-p {\n position: absolute; top: 50%; left: 50%; width: 7px; height: 7px; margin: -3.5px;\n border-radius: 50%; background: color-mix(in srgb, var(--sk-primary, #2563eb) 72%, currentColor); opacity: 0; pointer-events: none;\n animation: sk-cel-burst .7s ease-out .3s both;\n}\n.sk-cel-p:nth-child(even) { width: 5px; height: 5px; border-radius: 1px; background: color-mix(in srgb, var(--sk-primary, #2563eb) 40%, currentColor); }\n.sk-cel-msg { animation: sk-cel-rise .4s ease-out .35s both; font-size: 1.15rem; line-height: 1.6; }\n@media (prefers-reduced-motion: reduce) {\n .sk-cel-disc, .sk-cel-msg { animation: none }\n .sk-cel-check { animation: none; stroke-dashoffset: 0 }\n .sk-cel-p { display: none }\n}\n`\n\n/** 12 particles: evenly fanned angles, staggered distances. Deterministic — no Math.random (SSR/hydration-safe). */\nconst PARTICLES = Array.from({ length: 12 }, (_, i) => ({\n angle: i * 30,\n distance: 46 + (i % 3) * 14,\n}))\n\nexport interface FormCelebrationProps {\n message: string\n className?: string\n}\n\nexport function FormCelebration({ message, className }: FormCelebrationProps) {\n // One soft haptic tick on mobile — the \"you got paid\" buzz. Gated behind\n // reduced-motion as the closest thing to a reduced-haptics preference.\n useEffect(() => {\n try {\n if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n navigator.vibrate?.(15)\n }\n } catch {\n // vibration is a bonus, never a failure\n }\n }, [])\n\n return (\n <div className={className} data-sk-part=\"celebration\">\n <style id={STYLE_ID} dangerouslySetInnerHTML={{ __html: CSS }} />\n <div className=\"sk-cel\">\n <div className=\"sk-cel-stage\" aria-hidden=\"true\" data-sk-part=\"celebration-stage\">\n {PARTICLES.map((p, i) => (\n <span\n key={i}\n className=\"sk-cel-p\"\n data-sk-part=\"celebration-particle\"\n style={{ ['--sk-cel-a' as string]: `${p.angle}deg`, ['--sk-cel-d' as string]: `${p.distance}px` }}\n />\n ))}\n <div className=\"sk-cel-disc\" data-sk-part=\"celebration-disc\">\n <svg width=\"44\" height=\"44\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n className=\"sk-cel-check\"\n d=\"M5 12.5l4.2 4.3L19 7\"\n stroke=\"var(--sk-form-success-check, #fff)\"\n strokeWidth=\"2.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <p\n className=\"sk-cel-msg\"\n data-sk-part=\"celebration-message\"\n role=\"status\"\n aria-live=\"polite\"\n style={{ margin: 0, color: 'var(--sk-form-success-text, inherit)' }}\n >\n {message}\n </p>\n </div>\n </div>\n )\n}\n"]}
@@ -1,60 +0,0 @@
1
- 'use strict';
2
-
3
- // src/articles/routes.ts
4
- var DEFAULT_PUBLICATION_PATH = "/articles";
5
- function articleCategorySlug(category) {
6
- const value = typeof category === "string" ? category : category?.slug || category?.name || "";
7
- return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
8
- }
9
- function localPath(path) {
10
- const value = path.trim();
11
- if (!value || /^[a-z][a-z\d+.-]*:/i.test(value) || value.startsWith("//") || value.includes("\\")) {
12
- throw new Error("Publication routes must be local paths, such as /theforge/guides/story.");
13
- }
14
- return value.startsWith("/") ? value : `/${value}`;
15
- }
16
- function createPublicationRoutes(options = {}) {
17
- const raw = (options.basePath ?? DEFAULT_PUBLICATION_PATH).trim() || DEFAULT_PUBLICATION_PATH;
18
- const index = localPath(raw).replace(/\/+$/, "") || "/";
19
- const prefix = index === "/" ? "" : index;
20
- return {
21
- index,
22
- post(post) {
23
- if (options.postPath) return localPath(options.postPath(post));
24
- const category = articleCategorySlug(post.category || options.category);
25
- return `${prefix}${options.includeCategoryInPath && category ? `/${encodeURIComponent(category)}` : ""}/${encodeURIComponent(post.slug)}`;
26
- },
27
- category(slug) {
28
- const normalized = articleCategorySlug(slug);
29
- return options.categoryPath ? localPath(options.categoryPath(normalized)) : `${prefix}/category/${encodeURIComponent(normalized)}`;
30
- },
31
- cluster: (slug) => `${prefix}/cluster/${encodeURIComponent(slug)}`,
32
- author: (slug) => typeof options.authorPages === "function" ? localPath(options.authorPages(slug)) : `${prefix}/author/${encodeURIComponent(slug)}`,
33
- rss: `${prefix}/rss.xml`,
34
- atom: `${prefix}/feed.xml`
35
- };
36
- }
37
- function resolvePublicationUrl(path, siteUrl = "") {
38
- return `${siteUrl.replace(/\/+$/, "")}${localPath(path)}`;
39
- }
40
- function resolveArticleUrl(post, options = {}) {
41
- const canonical = post.canonical_url?.trim();
42
- if (canonical) {
43
- if (/^https?:\/\//i.test(canonical)) {
44
- try {
45
- return new URL(canonical).toString();
46
- } catch {
47
- }
48
- } else if (canonical.startsWith("/") && !canonical.startsWith("//") && !canonical.includes("\\")) {
49
- return resolvePublicationUrl(canonical, options.siteUrl);
50
- }
51
- }
52
- return resolvePublicationUrl(createPublicationRoutes(options).post(post), options.siteUrl);
53
- }
54
-
55
- exports.articleCategorySlug = articleCategorySlug;
56
- exports.createPublicationRoutes = createPublicationRoutes;
57
- exports.resolveArticleUrl = resolveArticleUrl;
58
- exports.resolvePublicationUrl = resolvePublicationUrl;
59
- //# sourceMappingURL=chunk-55J2KE7D.js.map
60
- //# sourceMappingURL=chunk-55J2KE7D.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/articles/routes.ts"],"names":[],"mappings":"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","file":"chunk-55J2KE7D.js","sourcesContent":["/** Shared, environment-free publication routes for server helpers and article UI. */\nexport interface ArticleRoutePost {\n slug: string\n category?: string | { slug?: string; name?: string } | null\n canonical_url?: string | null\n}\n\n/**\n * Where a publication lives when a site doesn't say. A site whose articles\n * already live at another path (/article, /insights, /theforge) passes basePath;\n * changing a live URL is an SEO decision, never a default's.\n */\nexport const DEFAULT_PUBLICATION_PATH = '/articles'\n\nexport interface PublicationRoutingOptions {\n /** Publication root, e.g. /theforge or /news. Defaults to DEFAULT_PUBLICATION_PATH (/articles). */\n basePath?: string\n /** Use /publication/category/post instead of /publication/post. */\n includeCategoryInPath?: boolean\n /** Fallback category for partial cluster records. */\n category?: string\n /** A custom local article path. Receives the post's slug and category. */\n postPath?: (post: ArticleRoutePost) => string\n /** A custom category destination, for example /theforge?category=guides. */\n categoryPath?: (slug: string) => string\n /**\n * Whether this site serves author pages. `true` means they live at the\n * default `<publication>/author/<slug>`; a function gives a custom path, for\n * example ``(slug) => `/author/${slug}` `` when author pages sit at the site\n * root. Article JSON-LD links bylines to author pages ONLY when this is set\n * (or the author row has `author_page_url`), because most sites have none\n * and a byline URL that 404s is worse than no URL.\n */\n authorPages?: boolean | ((slug: string) => string)\n}\n\nexport function articleCategorySlug(category: ArticleRoutePost['category']): string {\n const value = typeof category === 'string' ? category : category?.slug || category?.name || ''\n return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '')\n}\n\nfunction localPath(path: string): string {\n const value = path.trim()\n if (!value || /^[a-z][a-z\\d+.-]*:/i.test(value) || value.startsWith('//') || value.includes('\\\\')) {\n throw new Error('Publication routes must be local paths, such as /theforge/guides/story.')\n }\n return value.startsWith('/') ? value : `/${value}`\n}\n\n/** Single source of truth for publication paths. Custom routes never change OG artwork. */\nexport function createPublicationRoutes(options: PublicationRoutingOptions = {}) {\n const raw = (options.basePath ?? DEFAULT_PUBLICATION_PATH).trim() || DEFAULT_PUBLICATION_PATH\n const index = localPath(raw).replace(/\\/+$/, '') || '/'\n const prefix = index === '/' ? '' : index\n return {\n index,\n post(post: ArticleRoutePost): string {\n if (options.postPath) return localPath(options.postPath(post))\n const category = articleCategorySlug(post.category || options.category)\n return `${prefix}${options.includeCategoryInPath && category ? `/${encodeURIComponent(category)}` : ''}/${encodeURIComponent(post.slug)}`\n },\n category(slug: string): string {\n const normalized = articleCategorySlug(slug)\n return options.categoryPath\n ? localPath(options.categoryPath(normalized))\n : `${prefix}/category/${encodeURIComponent(normalized)}`\n },\n cluster: (slug: string) => `${prefix}/cluster/${encodeURIComponent(slug)}`,\n author: (slug: string) =>\n typeof options.authorPages === 'function'\n ? localPath(options.authorPages(slug))\n : `${prefix}/author/${encodeURIComponent(slug)}`,\n rss: `${prefix}/rss.xml`,\n atom: `${prefix}/feed.xml`,\n }\n}\n\nexport function resolvePublicationUrl(path: string, siteUrl = ''): string {\n return `${siteUrl.replace(/\\/+$/, '')}${localPath(path)}`\n}\n\n/** Metadata, feeds, sitemaps and generated schemas agree on a supplied canonical. */\nexport function resolveArticleUrl(post: ArticleRoutePost, options: PublicationRoutingOptions & { siteUrl?: string } = {}): string {\n const canonical = post.canonical_url?.trim()\n if (canonical) {\n if (/^https?:\\/\\//i.test(canonical)) {\n try { return new URL(canonical).toString() } catch { /* use the local route */ }\n } else if (canonical.startsWith('/') && !canonical.startsWith('//') && !canonical.includes('\\\\')) {\n return resolvePublicationUrl(canonical, options.siteUrl)\n }\n }\n return resolvePublicationUrl(createPublicationRoutes(options).post(post), options.siteUrl)\n}\n"]}