@sonordev/site-kit 7.0.0 → 7.0.2

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 (90) hide show
  1. package/CHANGELOG.md +3539 -0
  2. package/README.md +12 -13
  3. package/agent-manifest.json +1 -1
  4. package/dist/{AnalyticsProvider-GJ6JFQO5.js → AnalyticsProvider-XXWTFKJH.js} +4 -4
  5. package/dist/{ArticleViewTracker-FEA5SBKW.js → ArticleViewTracker-V4KZB6QN.js} +3 -3
  6. package/dist/{BlocksPopup-MNK4SDZM.js → BlocksPopup-JHGHB6XW.js} +4 -4
  7. package/dist/{ChatWidget-M2YNLRYW.js → ChatWidget-CG32POI3.js} +5 -5
  8. package/dist/{EngageWidget-RR63JQCA.js → EngageWidget-LQMR4LEX.js} +4 -4
  9. package/dist/{FileField-JFBXXD43.js → FileField-KUG3CKXG.js} +3 -3
  10. package/dist/{FormSpotlight-QE3J3VB5.js → FormSpotlight-FVNPOCU3.js} +1 -1
  11. package/dist/{FormStage-OTPKEWID.js → FormStage-C7VKRURJ.js} +1 -1
  12. package/dist/{ManagedForm-3VRALWUD.js → ManagedForm-VLNJKV65.js} +6 -6
  13. package/dist/{ManagedNewsletterForm-A2FE6L5C.js → ManagedNewsletterForm-KJEU23BV.js} +4 -4
  14. package/dist/{SignalCore-S6DO3VQV.js → SignalCore-K2O46QG7.js} +3 -3
  15. package/dist/{SiteDesignReporter-2WZVWJMA.js → SiteDesignReporter-D7MD66GI.js} +5 -5
  16. package/dist/SitemapSync-NMXGMPCQ.js +8 -0
  17. package/dist/_client/booking-widget.js +5 -5
  18. package/dist/affiliates/index.js +3 -3
  19. package/dist/analytics/index.js +4 -4
  20. package/dist/articles/index.js +1 -1
  21. package/dist/articles/server-ui.js +1 -1
  22. package/dist/chat/index.js +5 -5
  23. package/dist/{chunk-XZMVNORA.js → chunk-42OXY4JV.js} +1 -1
  24. package/dist/{chunk-5YSI5KFD.js → chunk-56JNI463.js} +1 -1
  25. package/dist/{chunk-M4ZY2FVB.js → chunk-5FBY2ZIH.js} +1 -1
  26. package/dist/{chunk-3XHK5DFX.js → chunk-7JIKGKWD.js} +7 -7
  27. package/dist/{chunk-7ZHJIRM3.js → chunk-B6RZ2NRH.js} +1 -1
  28. package/dist/{chunk-UINSEWQ3.js → chunk-BEL7YFMC.js} +1 -1
  29. package/dist/{chunk-R3TOKUDJ.js → chunk-BS7FWUOY.js} +1 -1
  30. package/dist/{chunk-MZFF5F7R.js → chunk-DKTSGYLM.js} +2 -2
  31. package/dist/{chunk-LT5ITURG.js → chunk-GGD4P7UW.js} +1 -1
  32. package/dist/{chunk-OO2GZ272.js → chunk-GYY6ETGB.js} +1 -1
  33. package/dist/{chunk-I6WUCBKI.js → chunk-K5WZX776.js} +2 -2
  34. package/dist/{chunk-B52EXDWI.js → chunk-LJZ3SUET.js} +2 -2
  35. package/dist/{chunk-OSQHWIM5.js → chunk-O52CH273.js} +1 -1
  36. package/dist/{chunk-HPUXKMNR.js → chunk-OIETJKIL.js} +1 -1
  37. package/dist/{chunk-5UZN5V52.js → chunk-P2GIIQH5.js} +1 -1
  38. package/dist/{chunk-5C4WVOVO.js → chunk-P72ZJRSX.js} +3 -3
  39. package/dist/{chunk-4WI3FU5L.js → chunk-RU2RMTGT.js} +2 -2
  40. package/dist/{chunk-GYBMMWGF.js → chunk-SAUTJMK6.js} +1 -1
  41. package/dist/{chunk-JMRESWQT.js → chunk-SWP36NCB.js} +1 -1
  42. package/dist/{chunk-WFHI6HXP.js → chunk-T4SY3FMN.js} +3 -3
  43. package/dist/{chunk-6ZB3XNAT.js → chunk-ZRE4ZYEG.js} +1 -1
  44. package/dist/{chunk-6CUFRMMF.js → chunk-ZSLRAMCK.js} +1 -1
  45. package/dist/client/index.js +3 -3
  46. package/dist/commerce/index.js +4 -4
  47. package/dist/engage/index.js +6 -6
  48. package/dist/fleet/index.js +4 -4
  49. package/dist/forms/index.js +7 -7
  50. package/dist/forms/server.js +2 -2
  51. package/dist/forms/types.d.ts +3 -1
  52. package/dist/images/index.js +4 -4
  53. package/dist/index.js +1 -1
  54. package/dist/layout/client.js +7 -7
  55. package/dist/layout/index.js +8 -8
  56. package/dist/maps/index.js +3 -3
  57. package/dist/mcp/sonor.js +9 -7
  58. package/dist/seo/client.js +4 -4
  59. package/dist/seo/index.js +4 -4
  60. package/dist/server/index.js +2 -2
  61. package/dist/shared/version.d.ts +1 -1
  62. package/dist/signal/index.js +2 -2
  63. package/dist/sync/index.js +5 -5
  64. package/dist/website/images.js +4 -4
  65. package/dist/website/index.js +5 -5
  66. package/dist/website/popups.js +4 -4
  67. package/docs/MIGRATING-TO-7.md +146 -0
  68. package/docs.json +67 -0
  69. package/package.json +9 -4
  70. package/src/admin-auth/README.md +88 -0
  71. package/src/analytics/README.md +264 -0
  72. package/src/articles/README.md +325 -0
  73. package/src/commerce/README.md +109 -0
  74. package/src/cta-bar/README.md +154 -0
  75. package/src/engage/README.md +241 -0
  76. package/src/forms/README.md +219 -0
  77. package/src/images/README.md +74 -0
  78. package/src/layout/README.md +66 -0
  79. package/src/llms/README.md +723 -0
  80. package/src/mcp/README.md +376 -0
  81. package/src/motion/README.md +372 -0
  82. package/src/og/README.md +304 -0
  83. package/src/proxy/README.md +152 -0
  84. package/src/redirects/README.md +74 -0
  85. package/src/reputation/README.md +64 -0
  86. package/src/seo/README.md +359 -0
  87. package/src/signal/README.md +115 -0
  88. package/src/sitemap/README.md +127 -0
  89. package/src/sync/README.md +115 -0
  90. package/dist/SitemapSync-IKNKPT2G.js +0 -8
package/README.md CHANGED
@@ -73,7 +73,7 @@ export const config = {
73
73
  }
74
74
  ```
75
75
 
76
- Handles Portal-managed redirects, security headers, and AI discovery headers.
76
+ Handles Sonor-managed redirects, security headers, and AI discovery headers.
77
77
 
78
78
  **CLI (optional — scaffolds everything):**
79
79
 
@@ -96,15 +96,15 @@ Every module has its own README in `src/<module>/README.md` with full API docs,
96
96
  | **Layout** | `@sonordev/site-kit/layout` | RSC layout that composes all features | [README](src/layout/README.md) |
97
97
  | **SEO** | `@sonordev/site-kit/seo` | Managed metadata, schemas, FAQs, internal links | [README](src/seo/README.md) |
98
98
  | **Analytics** | `@sonordev/site-kit/analytics` | Page views, events, conversions, Web Vitals | [README](src/analytics/README.md) |
99
- | **Sitemap** | `@sonordev/site-kit/seo/sitemap` | Auto-generated sitemap with Portal sync. URLs follow next.config `trailingSlash` | [README](src/sitemap/README.md) |
99
+ | **Sitemap** | `@sonordev/site-kit/seo/sitemap` | Auto-generated sitemap with Sonor sync. URLs follow next.config `trailingSlash` | [README](src/sitemap/README.md) |
100
100
  | **Proxy** | `@sonordev/site-kit/proxy` | Redirects, security headers, AI discovery (`./middleware` is its 7.x alias) | [README](src/proxy/README.md) |
101
- | **Redirects** | `@sonordev/site-kit/seo/redirects` | Portal-managed 301/302 redirect rules | [README](src/redirects/README.md) |
101
+ | **Redirects** | `@sonordev/site-kit/seo/redirects` | Sonor-managed 301/302 redirect rules | [README](src/redirects/README.md) |
102
102
 
103
103
  ### Content
104
104
 
105
105
  | Module | Import | Purpose | Docs |
106
106
  |--------|--------|---------|------|
107
- | **Articles** | `@sonordev/site-kit/articles` | Portal-managed article with SSG, topic clusters, E-E-A-T | [README](src/article/README.md) |
107
+ | **Articles** | `@sonordev/site-kit/articles` | Sonor-managed articles with SSG, topic clusters, E-E-A-T | [README](src/articles/README.md) |
108
108
  | **Images** | `@sonordev/site-kit/website/images` | Managed image slots with dev-mode editing | [README](src/images/README.md) |
109
109
  | **Reputation** | `@sonordev/site-kit/reputation` | Reviews, testimonials, rating stats | [README](src/reputation/README.md) |
110
110
 
@@ -161,7 +161,7 @@ SONOR_API_KEY in .env.local
161
161
  ▼
162
162
  SiteKitLayout (RSC server component)
163
163
  ├── Server-side:
164
- │ ├── ManagedFavicon (Portal logo → <link> tags)
164
+ │ ├── ManagedFavicon (Sonor logo → <link> tags)
165
165
  │ ├── ManagedScripts (tracking pixels, analytics tags)
166
166
  │ └── API preconnect hints
167
167
  │
@@ -173,12 +173,12 @@ SiteKitLayout (RSC server component)
173
173
  │ └── FleetHeartbeat (kit version + modules, once per session)
174
174
  │
175
175
  └── Middleware (separate):
176
- ├── Redirects (Portal-managed 301/302)
176
+ ├── Redirects (Sonor-managed 301/302)
177
177
  ├── Security headers (CSP frame-ancestors, nosniff, etc.)
178
178
  └── AI discovery (Link: rel="describedby" → /llms.txt)
179
179
  ```
180
180
 
181
- All data flows through the Portal API (`api.sonor.io`) authenticated by your API key. No direct database access, no Supabase keys exposed to the client.
181
+ All data flows through the Sonor API (`api.sonor.io`) authenticated by your API key. No direct database access, no Supabase keys exposed to the client.
182
182
 
183
183
  ---
184
184
 
@@ -261,9 +261,8 @@ import '@sonordev/site-kit/forms/styles.css'
261
261
  SONOR_API_KEY=sonor_xxxxxxxx_xxxxx
262
262
 
263
263
  # Optional:
264
- SONOR_API_URL=https://api.sonor.io # Portal API (default)
264
+ SONOR_API_URL=https://api.sonor.io # Sonor API (default)
265
265
  NEXT_PUBLIC_SITE_URL=https://example.com # For CLI status checks + sitemap
266
- NEXT_PUBLIC_RECAPTCHA_SITE_KEY=6Le... # reCAPTCHA Enterprise (forms)
267
266
  REVALIDATION_SECRET=your_secret # On-demand ISR for llms.txt
268
267
  MCP_TRANSPORT_SECRET=... # Netlify MCP relay (npx sonor-setup mcp writes it)
269
268
  ```
@@ -288,7 +287,7 @@ Commands:
288
287
  setup AI-powered SEO setup (metadata, schemas, FAQs)
289
288
  scan Scan codebase for integration opportunities
290
289
  migrate Migrate detected components to site-kit
291
- sync Sync local content to Portal
290
+ sync Sync local content to Sonor
292
291
  status Health check (API, llms.txt, sitemap, layout)
293
292
  geo Check GEO/llms.txt wiring
294
293
  images Scan, upload, and manage images
@@ -320,11 +319,11 @@ import type { SiteKitLayoutProps } from '@sonordev/site-kit/layout'
320
319
 
321
320
  ## Architecture Note
322
321
 
323
- `@sonordev/site-kit` is the client bridge between Next.js marketing sites and the Sonor platform. All persistent data (forms, articles, SEO config, analytics) lives in the Portal API — site-kit fetches, renders, and tracks.
322
+ `@sonordev/site-kit` is the client bridge between Next.js marketing sites and the Sonor platform. All persistent data (forms, articles, SEO config, analytics) lives in Sonor — site-kit fetches, renders, and tracks.
324
323
 
325
324
  - **Server components** (SEO, Articles, Images): Import directly, RSC-compatible, no provider needed
326
325
  - **Client modules** (Analytics, Engage, Signal): Lazy-loaded via `SiteKitLayout`, tree-shaken
327
- - **Build-time** (Sitemap, llms.txt): Run during `next build`, sync to Portal
326
+ - **Build-time** (Sitemap, llms.txt): Run during `next build`, sync to Sonor
328
327
  - **Middleware** (Redirects, Security, AI Discovery): Runs on every request edge
329
328
 
330
- For the full platform architecture, see the root `CLAUDE.md`.
329
+ Full docs for every module: [sonor.dev](https://sonor.dev).
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@sonordev/site-kit",
4
- "version": "7.0.0",
4
+ "version": "7.0.2",
5
5
  "description": "Machine-readable manifest for coding agents integrating a site with Sonor. See AGENTS.md (shipped) and docs/SITE-KIT-AGENT-NATIVE.md.",
6
6
  "env": {
7
7
  "required": [
@@ -1,11 +1,11 @@
1
- export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-LT5ITURG.js';
1
+ export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-GGD4P7UW.js';
2
2
  import './chunk-LCDVPAMR.js';
3
3
  import './chunk-24QZEO3Q.js';
4
4
  import './chunk-L2V5PUFN.js';
5
5
  import './chunk-GJWI74ZZ.js';
6
6
  import './chunk-43OCZ3JA.js';
7
7
  import './chunk-EKBEOXTH.js';
8
- import './chunk-4WI3FU5L.js';
9
- import './chunk-HPUXKMNR.js';
10
- import './chunk-7ZHJIRM3.js';
8
+ import './chunk-RU2RMTGT.js';
9
+ import './chunk-OIETJKIL.js';
10
+ import './chunk-B6RZ2NRH.js';
11
11
  import './chunk-PKBMQBKP.js';
@@ -3,9 +3,9 @@ import { useDeferredActivation } from './chunk-YC7ELZS3.js';
3
3
  import { withSiteBody } from './chunk-MJP63SSS.js';
4
4
  import './chunk-FESKKJAS.js';
5
5
  import './chunk-A4CC4ZG3.js';
6
- import { sonorFetch } from './chunk-4WI3FU5L.js';
7
- import './chunk-HPUXKMNR.js';
8
- import './chunk-7ZHJIRM3.js';
6
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
7
+ import './chunk-OIETJKIL.js';
8
+ import './chunk-B6RZ2NRH.js';
9
9
  import './chunk-PKBMQBKP.js';
10
10
  import { useEffect } from 'react';
11
11
 
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- import { getSiteDesignTokens } from './chunk-MZFF5F7R.js';
2
+ import { getSiteDesignTokens } from './chunk-DKTSGYLM.js';
3
3
  import { DEFAULT_POPUP_TOKENS, PopupBlocks } from './chunk-JSZN6LDZ.js';
4
4
  import { normalizePopupBlocks, toHexColor, readableOn } from './chunk-IHG36STL.js';
5
5
  import './chunk-S22FSH7C.js';
6
6
  import './chunk-43OCZ3JA.js';
7
7
  import './chunk-EKBEOXTH.js';
8
- import './chunk-4WI3FU5L.js';
9
- import './chunk-HPUXKMNR.js';
10
- import './chunk-7ZHJIRM3.js';
8
+ import './chunk-RU2RMTGT.js';
9
+ import './chunk-OIETJKIL.js';
10
+ import './chunk-B6RZ2NRH.js';
11
11
  import './chunk-PKBMQBKP.js';
12
12
  import { useState } from 'react';
13
13
  import { jsx } from 'react/jsx-runtime';
@@ -1,15 +1,15 @@
1
- export { ChatWidget, EchoChat, isChatEnabled } from './chunk-B52EXDWI.js';
1
+ export { ChatWidget, EchoChat, isChatEnabled } from './chunk-LJZ3SUET.js';
2
2
  import './chunk-JE4A5S4F.js';
3
3
  import './chunk-NDF4A5JM.js';
4
4
  import './chunk-6T6CQVNL.js';
5
- import './chunk-6CUFRMMF.js';
5
+ import './chunk-ZSLRAMCK.js';
6
6
  import './chunk-AQSNPZY4.js';
7
7
  import './chunk-5SQK3D53.js';
8
8
  import './chunk-NJCTQH2P.js';
9
9
  import './chunk-S22FSH7C.js';
10
10
  import './chunk-L2V5PUFN.js';
11
11
  import './chunk-GJWI74ZZ.js';
12
- import './chunk-4WI3FU5L.js';
13
- import './chunk-HPUXKMNR.js';
14
- import './chunk-7ZHJIRM3.js';
12
+ import './chunk-RU2RMTGT.js';
13
+ import './chunk-OIETJKIL.js';
14
+ import './chunk-B6RZ2NRH.js';
15
15
  import './chunk-PKBMQBKP.js';
@@ -1,11 +1,11 @@
1
- export { EngageWidget } from './chunk-WFHI6HXP.js';
1
+ export { EngageWidget } from './chunk-T4SY3FMN.js';
2
2
  import './chunk-NDF4A5JM.js';
3
3
  import './chunk-6T6CQVNL.js';
4
4
  import './chunk-24QZEO3Q.js';
5
5
  import './chunk-GJWI74ZZ.js';
6
6
  import './chunk-43OCZ3JA.js';
7
7
  import './chunk-EKBEOXTH.js';
8
- import './chunk-4WI3FU5L.js';
9
- import './chunk-HPUXKMNR.js';
10
- import './chunk-7ZHJIRM3.js';
8
+ import './chunk-RU2RMTGT.js';
9
+ import './chunk-OIETJKIL.js';
10
+ import './chunk-B6RZ2NRH.js';
11
11
  import './chunk-PKBMQBKP.js';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { sonorFetch } from './chunk-4WI3FU5L.js';
3
- import './chunk-HPUXKMNR.js';
4
- import './chunk-7ZHJIRM3.js';
2
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
3
+ import './chunk-OIETJKIL.js';
4
+ import './chunk-B6RZ2NRH.js';
5
5
  import './chunk-PKBMQBKP.js';
6
6
  import React from 'react';
7
7
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { StageStyles, SummaryTick } from './chunk-J4FSB4OG.js';
3
- import { stageFirstName, useFieldControls, stageViews, stageEstimate, AUTO_ADVANCE_TYPES } from './chunk-JMRESWQT.js';
3
+ import { stageFirstName, useFieldControls, stageViews, stageEstimate, AUTO_ADVANCE_TYPES } from './chunk-SWP36NCB.js';
4
4
  import { FormField } from './chunk-QPEEKFCA.js';
5
5
  import { isEmptyValue, isDisplayOnly } from './chunk-AQSNPZY4.js';
6
6
  import './chunk-PKBMQBKP.js';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { StageStyles, SummaryTick } from './chunk-J4FSB4OG.js';
3
- import { useFieldControls, stageViews, stageFirstName, stageEstimate, formatAnswer, AUTO_ADVANCE_TYPES } from './chunk-JMRESWQT.js';
3
+ import { useFieldControls, stageViews, stageFirstName, stageEstimate, formatAnswer, AUTO_ADVANCE_TYPES } from './chunk-SWP36NCB.js';
4
4
  import { FormField } from './chunk-QPEEKFCA.js';
5
5
  import { isEmptyValue } from './chunk-AQSNPZY4.js';
6
6
  import './chunk-PKBMQBKP.js';
@@ -1,14 +1,14 @@
1
- export { ManagedForm } from './chunk-5C4WVOVO.js';
2
- import './chunk-JMRESWQT.js';
1
+ export { ManagedForm } from './chunk-P72ZJRSX.js';
2
+ import './chunk-SWP36NCB.js';
3
3
  import './chunk-DXO6SBMD.js';
4
4
  import './chunk-QPEEKFCA.js';
5
- import './chunk-6CUFRMMF.js';
5
+ import './chunk-ZSLRAMCK.js';
6
6
  import './chunk-AQSNPZY4.js';
7
7
  import './chunk-5SQK3D53.js';
8
8
  import './chunk-NJCTQH2P.js';
9
9
  import './chunk-L2V5PUFN.js';
10
10
  import './chunk-GJWI74ZZ.js';
11
- import './chunk-4WI3FU5L.js';
12
- import './chunk-HPUXKMNR.js';
13
- import './chunk-7ZHJIRM3.js';
11
+ import './chunk-RU2RMTGT.js';
12
+ import './chunk-OIETJKIL.js';
13
+ import './chunk-B6RZ2NRH.js';
14
14
  import './chunk-PKBMQBKP.js';
@@ -1,14 +1,14 @@
1
1
  import { NewsletterShell } from './chunk-SC4MZGWZ.js';
2
2
  import './chunk-GYF2ULVO.js';
3
- import { useForm } from './chunk-6CUFRMMF.js';
3
+ import { useForm } from './chunk-ZSLRAMCK.js';
4
4
  import './chunk-AQSNPZY4.js';
5
5
  import './chunk-5SQK3D53.js';
6
6
  import './chunk-NJCTQH2P.js';
7
7
  import './chunk-L2V5PUFN.js';
8
8
  import './chunk-GJWI74ZZ.js';
9
- import './chunk-4WI3FU5L.js';
10
- import './chunk-HPUXKMNR.js';
11
- import './chunk-7ZHJIRM3.js';
9
+ import './chunk-RU2RMTGT.js';
10
+ import './chunk-OIETJKIL.js';
11
+ import './chunk-B6RZ2NRH.js';
12
12
  import './chunk-PKBMQBKP.js';
13
13
  import { jsx } from 'react/jsx-runtime';
14
14
 
@@ -2,9 +2,9 @@
2
2
  import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-24QZEO3Q.js';
3
3
  import { onPageLeave } from './chunk-L2V5PUFN.js';
4
4
  import './chunk-GJWI74ZZ.js';
5
- import { sonorFetch } from './chunk-4WI3FU5L.js';
6
- import { getFreshCredential, isSiteToken } from './chunk-HPUXKMNR.js';
7
- import './chunk-7ZHJIRM3.js';
5
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
6
+ import { getFreshCredential, isSiteToken } from './chunk-OIETJKIL.js';
7
+ import './chunk-B6RZ2NRH.js';
8
8
  import './chunk-PKBMQBKP.js';
9
9
  import { useState, useRef, useEffect, useCallback } from 'react';
10
10
 
@@ -1,11 +1,11 @@
1
- export { SiteDesignReporter } from './chunk-6ZB3XNAT.js';
2
- import './chunk-MZFF5F7R.js';
1
+ export { SiteDesignReporter } from './chunk-ZRE4ZYEG.js';
2
+ import './chunk-DKTSGYLM.js';
3
3
  import './chunk-IHG36STL.js';
4
4
  import './chunk-YC7ELZS3.js';
5
5
  import './chunk-S22FSH7C.js';
6
6
  import './chunk-43OCZ3JA.js';
7
7
  import './chunk-EKBEOXTH.js';
8
- import './chunk-4WI3FU5L.js';
9
- import './chunk-HPUXKMNR.js';
10
- import './chunk-7ZHJIRM3.js';
8
+ import './chunk-RU2RMTGT.js';
9
+ import './chunk-OIETJKIL.js';
10
+ import './chunk-B6RZ2NRH.js';
11
11
  import './chunk-PKBMQBKP.js';
@@ -0,0 +1,8 @@
1
+ export { SitemapSync } from './chunk-BS7FWUOY.js';
2
+ import './chunk-YVKRYQRG.js';
3
+ import './chunk-43OCZ3JA.js';
4
+ import './chunk-EKBEOXTH.js';
5
+ import './chunk-RU2RMTGT.js';
6
+ import './chunk-OIETJKIL.js';
7
+ import './chunk-B6RZ2NRH.js';
8
+ import './chunk-PKBMQBKP.js';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- export { BookingWidget, BookingWidget_default as default } from '../chunk-OO2GZ272.js';
3
- import '../chunk-M4ZY2FVB.js';
4
- import '../chunk-4WI3FU5L.js';
5
- import '../chunk-HPUXKMNR.js';
6
- import '../chunk-7ZHJIRM3.js';
2
+ export { BookingWidget, BookingWidget_default as default } from '../chunk-GYY6ETGB.js';
3
+ import '../chunk-5FBY2ZIH.js';
4
+ import '../chunk-RU2RMTGT.js';
5
+ import '../chunk-OIETJKIL.js';
6
+ import '../chunk-B6RZ2NRH.js';
7
7
  import '../chunk-PKBMQBKP.js';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { sonorFetch } from '../chunk-4WI3FU5L.js';
3
- import '../chunk-HPUXKMNR.js';
4
- import '../chunk-7ZHJIRM3.js';
2
+ import { sonorFetch } from '../chunk-RU2RMTGT.js';
3
+ import '../chunk-OIETJKIL.js';
4
+ import '../chunk-B6RZ2NRH.js';
5
5
  import '../chunk-PKBMQBKP.js';
6
6
  import { useState, useEffect } from 'react';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
  export { ContactTracking, useContactTracking } from '../chunk-P5GB6NEO.js';
3
- export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent } from '../chunk-LT5ITURG.js';
3
+ export { AnalyticsProvider, WebVitals, useAnalytics, useAnalyticsOptional, useTrackEvent } from '../chunk-GGD4P7UW.js';
4
4
  export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
5
5
  import '../chunk-24QZEO3Q.js';
6
6
  import '../chunk-L2V5PUFN.js';
7
7
  import '../chunk-GJWI74ZZ.js';
8
8
  export { isCrossOriginFrame, isFramed, isTopFrameSameOrigin } from '../chunk-43OCZ3JA.js';
9
9
  import '../chunk-EKBEOXTH.js';
10
- import '../chunk-4WI3FU5L.js';
11
- import '../chunk-HPUXKMNR.js';
12
- import '../chunk-7ZHJIRM3.js';
10
+ import '../chunk-RU2RMTGT.js';
11
+ import '../chunk-OIETJKIL.js';
12
+ import '../chunk-B6RZ2NRH.js';
13
13
  import '../chunk-PKBMQBKP.js';
@@ -15,7 +15,7 @@ import '../chunk-PKBMQBKP.js';
15
15
  import React, { useState, Suspense, useEffect } from 'react';
16
16
  import { jsx, jsxs } from 'react/jsx-runtime';
17
17
 
18
- var ManagedNewsletterForm = React.lazy(() => import('../ManagedNewsletterForm-A2FE6L5C.js'));
18
+ var ManagedNewsletterForm = React.lazy(() => import('../ManagedNewsletterForm-KJEU23BV.js'));
19
19
  function NewsletterWidget({
20
20
  title = "Subscribe to Our Newsletter",
21
21
  description = "Get the latest posts delivered straight to your inbox.",
@@ -132,7 +132,7 @@ async function Article({
132
132
  ...item,
133
133
  answer: addExternalLinkTargets(item.answer || "", siteUrlResolved)
134
134
  })) ?? faqRaw;
135
- const { ArticleViewTracker } = await import('../ArticleViewTracker-FEA5SBKW.js');
135
+ const { ArticleViewTracker } = await import('../ArticleViewTracker-V4KZB6QN.js');
136
136
  if (children) {
137
137
  return /* @__PURE__ */ jsxs(Fragment, { children: [
138
138
  /* @__PURE__ */ jsx(ArticleViewTracker, { slug: post.slug, site }),
@@ -1,16 +1,16 @@
1
1
  'use client';
2
- export { ChatWidget, EchoChat, isChatEnabled } from '../chunk-B52EXDWI.js';
2
+ export { ChatWidget, EchoChat, isChatEnabled } from '../chunk-LJZ3SUET.js';
3
3
  import '../chunk-JE4A5S4F.js';
4
4
  export { DEFAULT_LAUNCHER_OFFSET_BOTTOM, chatLauncherStyles } from '../chunk-NDF4A5JM.js';
5
5
  import '../chunk-6T6CQVNL.js';
6
- import '../chunk-6CUFRMMF.js';
6
+ import '../chunk-ZSLRAMCK.js';
7
7
  import '../chunk-AQSNPZY4.js';
8
8
  import '../chunk-5SQK3D53.js';
9
9
  import '../chunk-NJCTQH2P.js';
10
10
  import '../chunk-S22FSH7C.js';
11
11
  import '../chunk-L2V5PUFN.js';
12
12
  import '../chunk-GJWI74ZZ.js';
13
- import '../chunk-4WI3FU5L.js';
14
- import '../chunk-HPUXKMNR.js';
15
- import '../chunk-7ZHJIRM3.js';
13
+ import '../chunk-RU2RMTGT.js';
14
+ import '../chunk-OIETJKIL.js';
15
+ import '../chunk-B6RZ2NRH.js';
16
16
  import '../chunk-PKBMQBKP.js';
@@ -4,7 +4,7 @@ import React, { lazy, useRef, useEffect, useState, Suspense } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  var InteractiveForm = lazy(
7
- () => import('./ManagedForm-3VRALWUD.js').then((m) => ({ default: m.ManagedForm }))
7
+ () => import('./ManagedForm-VLNJKV65.js').then((m) => ({ default: m.ManagedForm }))
8
8
  );
9
9
  function FormEnhancer({
10
10
  formId,
@@ -1,5 +1,5 @@
1
1
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
2
- import { configureSiteCredential, currentCredential } from './chunk-HPUXKMNR.js';
2
+ import { configureSiteCredential, currentCredential } from './chunk-OIETJKIL.js';
3
3
 
4
4
  // src/shared/publishCredential.ts
5
5
  function publishSiteCredential({
@@ -1,4 +1,4 @@
1
- import { sonorFetch } from './chunk-4WI3FU5L.js';
1
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
2
2
 
3
3
  // src/sync/api.ts
4
4
  var DEFAULT_API_URL = "https://api.sonor.io";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
- import { publishSiteCredential } from './chunk-5YSI5KFD.js';
3
- import { FleetHeartbeat } from './chunk-I6WUCBKI.js';
4
- import { SignalBridge } from './chunk-GYBMMWGF.js';
2
+ import { publishSiteCredential } from './chunk-56JNI463.js';
3
+ import { FleetHeartbeat } from './chunk-K5WZX776.js';
4
+ import { SignalBridge } from './chunk-SAUTJMK6.js';
5
5
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
6
6
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
7
7
  import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-24QZEO3Q.js';
@@ -11,19 +11,19 @@ import dynamic from 'next/dynamic';
11
11
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
12
12
 
13
13
  var LazyAnalyticsProvider = dynamic(
14
- () => import('./AnalyticsProvider-GJ6JFQO5.js').then((m) => ({ default: m.AnalyticsProvider })),
14
+ () => import('./AnalyticsProvider-XXWTFKJH.js').then((m) => ({ default: m.AnalyticsProvider })),
15
15
  { ssr: false }
16
16
  );
17
17
  var LazyEngageWidget = dynamic(
18
- () => import('./EngageWidget-RR63JQCA.js').then((m) => ({ default: m.EngageWidget })),
18
+ () => import('./EngageWidget-LQMR4LEX.js').then((m) => ({ default: m.EngageWidget })),
19
19
  { ssr: false }
20
20
  );
21
21
  var LazySiteDesignReporter = dynamic(
22
- () => import('./SiteDesignReporter-2WZVWJMA.js').then((m) => ({ default: m.SiteDesignReporter })),
22
+ () => import('./SiteDesignReporter-D7MD66GI.js').then((m) => ({ default: m.SiteDesignReporter })),
23
23
  { ssr: false }
24
24
  );
25
25
  var LazySitemapSync = dynamic(
26
- () => import('./SitemapSync-IKNKPT2G.js').then((m) => ({ default: m.SitemapSync })),
26
+ () => import('./SitemapSync-NMXGMPCQ.js').then((m) => ({ default: m.SitemapSync })),
27
27
  { ssr: false }
28
28
  );
29
29
  function SiteKitClientProviders({
@@ -1,4 +1,4 @@
1
1
  // src/shared/version.ts
2
- var SITE_KIT_VERSION = "7.0.0";
2
+ var SITE_KIT_VERSION = "7.0.2";
3
3
 
4
4
  export { SITE_KIT_VERSION };
@@ -1,6 +1,6 @@
1
1
  import { resolveFetch } from './chunk-VX5CMNMM.js';
2
2
  import { monotonicMs } from './chunk-MH2DSGC6.js';
3
- import { SITE_KIT_VERSION } from './chunk-7ZHJIRM3.js';
3
+ import { SITE_KIT_VERSION } from './chunk-B6RZ2NRH.js';
4
4
  import 'server-only';
5
5
 
6
6
  var MINT_PATH = "/api/public/site-token";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { locToPath, isMalformedSitemapPath, inferPageType } from './chunk-YVKRYQRG.js';
3
3
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
4
- import { sonorFetch } from './chunk-4WI3FU5L.js';
4
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
5
5
  import { useRef, useEffect } from 'react';
6
6
 
7
7
  var SYNC_STAMP_KEY = "_sk_sitemap_synced_at";
@@ -1,8 +1,8 @@
1
1
  import { toHexColor, normalizeDesignTokens, designTokensHash } from './chunk-IHG36STL.js';
2
2
  import { contrastRatio, parseColor, relativeLuminance } from './chunk-S22FSH7C.js';
3
3
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
4
- import { sonorFetch } from './chunk-4WI3FU5L.js';
5
- import { SITE_KIT_VERSION } from './chunk-7ZHJIRM3.js';
4
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
5
+ import { SITE_KIT_VERSION } from './chunk-B6RZ2NRH.js';
6
6
 
7
7
  // src/website/design.ts
8
8
  var SITE_DESIGN_PATH = "/api/public/site/design";
@@ -3,7 +3,7 @@ import { registerAnalyticsDispatcher } from './chunk-LCDVPAMR.js';
3
3
  import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-24QZEO3Q.js';
4
4
  import { onPageLeave } from './chunk-L2V5PUFN.js';
5
5
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
6
- import { sonorFetch, sonorBeacon } from './chunk-4WI3FU5L.js';
6
+ import { sonorFetch, sonorBeacon } from './chunk-RU2RMTGT.js';
7
7
  import { createContext, useRef, useEffect, useState, useMemo, useCallback, useContext } from 'react';
8
8
  import { usePathname } from 'next/navigation';
9
9
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-M4ZY2FVB.js';
2
+ import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-5FBY2ZIH.js';
3
3
  import { useState, useRef, useMemo, useCallback, useEffect, useId } from 'react';
4
4
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
5
 
@@ -2,8 +2,8 @@
2
2
  import { sanitizeFleetVersion, buildFleetHeartbeatPayload } from './chunk-ZTZQPYP6.js';
3
3
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
4
4
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
5
- import { sonorFetch } from './chunk-4WI3FU5L.js';
6
- import { SITE_KIT_VERSION } from './chunk-7ZHJIRM3.js';
5
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
6
+ import { SITE_KIT_VERSION } from './chunk-B6RZ2NRH.js';
7
7
  import { useRef, useEffect } from 'react';
8
8
 
9
9
  // src/fleet/heartbeat.ts
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { GlassStyles } from './chunk-JE4A5S4F.js';
3
3
  import { chatLauncherStyles } from './chunk-NDF4A5JM.js';
4
- import { useForm } from './chunk-6CUFRMMF.js';
4
+ import { useForm } from './chunk-ZSLRAMCK.js';
5
5
  import { parseColor, relativeLuminance, DARK_LUMINANCE, contrastRatio } from './chunk-S22FSH7C.js';
6
- import { sonorFetch } from './chunk-4WI3FU5L.js';
6
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
7
7
  import { useState, useEffect, useRef, useLayoutEffect, useCallback, Fragment as Fragment$1 } from 'react';
8
8
  import { lexer } from 'marked';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { sonorFetch } from './chunk-4WI3FU5L.js';
2
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
3
3
  import { useState, useCallback, useEffect } from 'react';
4
4
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
5
5
 
@@ -1,4 +1,4 @@
1
- import { SITE_KIT_VERSION } from './chunk-7ZHJIRM3.js';
1
+ import { SITE_KIT_VERSION } from './chunk-B6RZ2NRH.js';
2
2
 
3
3
  // src/shared/siteToken.ts
4
4
  var SITE_TOKEN_PREFIX = "st1.";
@@ -1,4 +1,4 @@
1
- import { FormEnhancer } from './chunk-XZMVNORA.js';
1
+ import { FormEnhancer } from './chunk-42OXY4JV.js';
2
2
  import { StaticForm } from './chunk-OPRBF7VE.js';
3
3
  import { serverApiFetch } from './chunk-X6F6SO4S.js';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { countStageViews, countStageQuestions, useFieldControls } from './chunk-JMRESWQT.js';
2
+ import { countStageViews, countStageQuestions, useFieldControls } from './chunk-SWP36NCB.js';
3
3
  import { HoneypotField } from './chunk-DXO6SBMD.js';
4
4
  import { DelightStyles, FormMomentum, FormField } from './chunk-QPEEKFCA.js';
5
- import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-6CUFRMMF.js';
5
+ import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-ZSLRAMCK.js';
6
6
  import { isFieldVisible, validateField, isFieldComplete, isDisplayOnly } from './chunk-AQSNPZY4.js';
7
7
  import { DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-5SQK3D53.js';
8
8
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
@@ -62,7 +62,7 @@ function FormClient({
62
62
  return;
63
63
  }
64
64
  let cancelled = false;
65
- const load = resolvedExperience === "stage" ? import('./FormStage-OTPKEWID.js').then((m) => m.FormStage) : import('./FormSpotlight-QE3J3VB5.js').then((m) => m.FormSpotlight);
65
+ const load = resolvedExperience === "stage" ? import('./FormStage-C7VKRURJ.js').then((m) => m.FormStage) : import('./FormSpotlight-FVNPOCU3.js').then((m) => m.FormSpotlight);
66
66
  load.then((Component) => {
67
67
  if (!cancelled) setExperience(() => Component);
68
68
  }).catch((err) => {
@@ -1,5 +1,5 @@
1
- import { isTokenMode, getFreshCredential, isSiteToken, refreshSiteToken, currentCredential, credentialBreakerId } from './chunk-HPUXKMNR.js';
2
- import { SITE_KIT_VERSION } from './chunk-7ZHJIRM3.js';
1
+ import { isTokenMode, getFreshCredential, isSiteToken, refreshSiteToken, currentCredential, credentialBreakerId } from './chunk-OIETJKIL.js';
2
+ import { SITE_KIT_VERSION } from './chunk-B6RZ2NRH.js';
3
3
 
4
4
  // src/shared/fetchWithRetry.ts
5
5
  function backoffDelay(attempt, response) {
@@ -54,7 +54,7 @@ function useSignal() {
54
54
  return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
55
55
  }
56
56
  var LazySignalCore = dynamic(
57
- () => import('./SignalCore-S6DO3VQV.js').then((m) => ({ default: m.SignalCore })),
57
+ () => import('./SignalCore-K2O46QG7.js').then((m) => ({ default: m.SignalCore })),
58
58
  { ssr: false }
59
59
  );
60
60
  function SignalBridge({
@@ -26,7 +26,7 @@ function useFieldControls(fields) {
26
26
  }
27
27
  if (needsFile && !requested.current.file) {
28
28
  requested.current.file = true;
29
- import('./FileField-JFBXXD43.js').then((m) => {
29
+ import('./FileField-KUG3CKXG.js').then((m) => {
30
30
  if (!cancelled) setControls((prev) => ({ ...prev, File: m.FileField }));
31
31
  }).catch(() => {
32
32
  requested.current.file = false;