@sonordev/site-kit 7.0.1 → 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-EMM2TKRE.js → AnalyticsProvider-XXWTFKJH.js} +4 -4
  5. package/dist/{ArticleViewTracker-RA64BGL6.js → ArticleViewTracker-V4KZB6QN.js} +3 -3
  6. package/dist/{BlocksPopup-D25RFNOV.js → BlocksPopup-JHGHB6XW.js} +4 -4
  7. package/dist/{ChatWidget-RYI7BMJJ.js → ChatWidget-CG32POI3.js} +5 -5
  8. package/dist/{EngageWidget-UKFCN33M.js → EngageWidget-LQMR4LEX.js} +4 -4
  9. package/dist/{FileField-MUHA7LZR.js → FileField-KUG3CKXG.js} +3 -3
  10. package/dist/{FormSpotlight-TCLPWPLL.js → FormSpotlight-FVNPOCU3.js} +1 -1
  11. package/dist/{FormStage-CNYLP6I6.js → FormStage-C7VKRURJ.js} +1 -1
  12. package/dist/{ManagedForm-7ZL5SKTO.js → ManagedForm-VLNJKV65.js} +6 -6
  13. package/dist/{ManagedNewsletterForm-33B4JLX7.js → ManagedNewsletterForm-KJEU23BV.js} +4 -4
  14. package/dist/{SignalCore-L5FVDHFE.js → SignalCore-K2O46QG7.js} +3 -3
  15. package/dist/{SiteDesignReporter-4JOFL4FP.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-QANVUXKH.js → chunk-42OXY4JV.js} +1 -1
  24. package/dist/{chunk-GYESATRY.js → chunk-56JNI463.js} +1 -1
  25. package/dist/{chunk-MV2MBTC3.js → chunk-5FBY2ZIH.js} +1 -1
  26. package/dist/{chunk-BMO3VGMR.js → chunk-7JIKGKWD.js} +7 -7
  27. package/dist/{chunk-QGHSMJKW.js → chunk-B6RZ2NRH.js} +1 -1
  28. package/dist/{chunk-OFOAHPUV.js → chunk-BEL7YFMC.js} +1 -1
  29. package/dist/{chunk-WATH55UY.js → chunk-BS7FWUOY.js} +1 -1
  30. package/dist/{chunk-FL4EPUWA.js → chunk-DKTSGYLM.js} +2 -2
  31. package/dist/{chunk-HGCK465A.js → chunk-GGD4P7UW.js} +1 -1
  32. package/dist/{chunk-FYBZ5SNP.js → chunk-GYY6ETGB.js} +1 -1
  33. package/dist/{chunk-CVTVNC2U.js → chunk-K5WZX776.js} +2 -2
  34. package/dist/{chunk-4IQ52CXL.js → chunk-LJZ3SUET.js} +2 -2
  35. package/dist/{chunk-P5J7VMQ3.js → chunk-O52CH273.js} +1 -1
  36. package/dist/{chunk-3KUUH2YP.js → chunk-OIETJKIL.js} +1 -1
  37. package/dist/{chunk-V6LSQRTH.js → chunk-P2GIIQH5.js} +1 -1
  38. package/dist/{chunk-4RMVXRBO.js → chunk-P72ZJRSX.js} +3 -3
  39. package/dist/{chunk-EGOD74PP.js → chunk-RU2RMTGT.js} +2 -2
  40. package/dist/{chunk-QZZIKMAT.js → chunk-SAUTJMK6.js} +1 -1
  41. package/dist/{chunk-T3MC4HOD.js → chunk-SWP36NCB.js} +1 -1
  42. package/dist/{chunk-5SEM2V4A.js → chunk-T4SY3FMN.js} +3 -3
  43. package/dist/{chunk-P4GRY6QP.js → chunk-ZRE4ZYEG.js} +1 -1
  44. package/dist/{chunk-UZN4ZYR2.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 +6 -6
  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-7WKY4HXI.js +0 -8
@@ -2,7 +2,7 @@
2
2
  import { DEFAULT_ENGAGE_Z_INDEX } from './chunk-NDF4A5JM.js';
3
3
  import { getOrCreateVisitorId } from './chunk-24QZEO3Q.js';
4
4
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
5
- import { sonorFetch } from './chunk-EGOD74PP.js';
5
+ import { sonorFetch } from './chunk-RU2RMTGT.js';
6
6
  import React, { useState, useEffect, useCallback, useRef, createElement } from 'react';
7
7
  import ReactDOM from 'react-dom';
8
8
  import dynamic from 'next/dynamic';
@@ -339,11 +339,11 @@ function DesignRenderer({
339
339
  )) });
340
340
  }
341
341
  var LazyBlocksPopup = dynamic(
342
- () => import('./BlocksPopup-D25RFNOV.js').then((m) => ({ default: m.BlocksPopup })),
342
+ () => import('./BlocksPopup-JHGHB6XW.js').then((m) => ({ default: m.BlocksPopup })),
343
343
  { ssr: false }
344
344
  );
345
345
  var LazyChatWidget = dynamic(
346
- () => import('./ChatWidget-RYI7BMJJ.js').then((m) => ({ default: m.ChatWidget })),
346
+ () => import('./ChatWidget-CG32POI3.js').then((m) => ({ default: m.ChatWidget })),
347
347
  { ssr: false }
348
348
  );
349
349
  function EngageWidget(props) {
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-FL4EPUWA.js';
2
+ import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-DKTSGYLM.js';
3
3
  import { designTokensHash } from './chunk-IHG36STL.js';
4
4
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
5
5
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
@@ -4,7 +4,7 @@ import { normalizeFormConfig } from './chunk-5SQK3D53.js';
4
4
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
5
5
  import { onPageLeave } from './chunk-L2V5PUFN.js';
6
6
  import { uuid } from './chunk-GJWI74ZZ.js';
7
- import { sonorFetch, sonorBeacon } from './chunk-EGOD74PP.js';
7
+ import { sonorFetch, sonorBeacon } from './chunk-RU2RMTGT.js';
8
8
  import { useRef, useCallback, useEffect, useState, useMemo } from 'react';
9
9
 
10
10
  // src/forms/field-interactions.ts
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { publishSiteCredential } from '../chunk-GYESATRY.js';
2
+ import { publishSiteCredential } from '../chunk-56JNI463.js';
3
3
  export { useDeferredActivation } from '../chunk-YC7ELZS3.js';
4
4
  import '../chunk-FESKKJAS.js';
5
5
  import '../chunk-A4CC4ZG3.js';
@@ -7,8 +7,8 @@ export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
7
7
  export { VISUAL_VIEWPORT_GAP_PROPERTY, VisualViewportGap, useVisualViewportGap } from '../chunk-6T6CQVNL.js';
8
8
  export { getOrCreateSessionId, getOrCreateVisitorId, useSiteKitIdentity } from '../chunk-24QZEO3Q.js';
9
9
  import '../chunk-GJWI74ZZ.js';
10
- import '../chunk-3KUUH2YP.js';
11
- import '../chunk-QGHSMJKW.js';
10
+ import '../chunk-OIETJKIL.js';
11
+ import '../chunk-B6RZ2NRH.js';
12
12
  import '../chunk-PKBMQBKP.js';
13
13
 
14
14
  // src/client/SiteKitCredential.tsx
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import '../chunk-P5GB6NEO.js';
3
- import { useAnalyticsOptional } from '../chunk-HGCK465A.js';
3
+ import { useAnalyticsOptional } from '../chunk-GGD4P7UW.js';
4
4
  import '../chunk-LCDVPAMR.js';
5
5
  import '../chunk-24QZEO3Q.js';
6
6
  import '../chunk-L2V5PUFN.js';
7
7
  import '../chunk-GJWI74ZZ.js';
8
8
  import '../chunk-43OCZ3JA.js';
9
9
  import '../chunk-EKBEOXTH.js';
10
- import { sonorFetch } from '../chunk-EGOD74PP.js';
11
- import '../chunk-3KUUH2YP.js';
12
- import '../chunk-QGHSMJKW.js';
10
+ import { sonorFetch } from '../chunk-RU2RMTGT.js';
11
+ import '../chunk-OIETJKIL.js';
12
+ import '../chunk-B6RZ2NRH.js';
13
13
  import '../chunk-PKBMQBKP.js';
14
14
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
15
15
  import React5, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { ChatWidget } from '../chunk-4IQ52CXL.js';
2
+ export { ChatWidget } from '../chunk-LJZ3SUET.js';
3
3
  import '../chunk-JE4A5S4F.js';
4
- export { DesignRenderer, EngageWidget } from '../chunk-5SEM2V4A.js';
4
+ export { DesignRenderer, EngageWidget } from '../chunk-T4SY3FMN.js';
5
5
  import '../chunk-NDF4A5JM.js';
6
6
  import '../chunk-6T6CQVNL.js';
7
- import '../chunk-UZN4ZYR2.js';
7
+ import '../chunk-ZSLRAMCK.js';
8
8
  import '../chunk-AQSNPZY4.js';
9
9
  import '../chunk-5SQK3D53.js';
10
10
  import '../chunk-NJCTQH2P.js';
@@ -14,9 +14,9 @@ import '../chunk-L2V5PUFN.js';
14
14
  import '../chunk-GJWI74ZZ.js';
15
15
  import '../chunk-43OCZ3JA.js';
16
16
  import '../chunk-EKBEOXTH.js';
17
- import '../chunk-EGOD74PP.js';
18
- import '../chunk-3KUUH2YP.js';
19
- import '../chunk-QGHSMJKW.js';
17
+ import '../chunk-RU2RMTGT.js';
18
+ import '../chunk-OIETJKIL.js';
19
+ import '../chunk-B6RZ2NRH.js';
20
20
  import '../chunk-PKBMQBKP.js';
21
21
 
22
22
  // src/engage/echo-config.ts
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-CVTVNC2U.js';
2
+ export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-K5WZX776.js';
3
3
  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 } from '../chunk-ZTZQPYP6.js';
4
4
  import '../chunk-YC7ELZS3.js';
5
5
  import '../chunk-43OCZ3JA.js';
6
6
  import '../chunk-EKBEOXTH.js';
7
- import '../chunk-EGOD74PP.js';
8
- import '../chunk-3KUUH2YP.js';
9
- import '../chunk-QGHSMJKW.js';
7
+ import '../chunk-RU2RMTGT.js';
8
+ import '../chunk-OIETJKIL.js';
9
+ import '../chunk-B6RZ2NRH.js';
10
10
  import '../chunk-PKBMQBKP.js';
@@ -1,21 +1,21 @@
1
1
  'use client';
2
- export { FormClient, ManagedForm } from '../chunk-4RMVXRBO.js';
3
- import '../chunk-T3MC4HOD.js';
2
+ export { FormClient, ManagedForm } from '../chunk-P72ZJRSX.js';
3
+ import '../chunk-SWP36NCB.js';
4
4
  export { DatePicker } from '../chunk-SOD2F6C2.js';
5
5
  export { FormCelebration } from '../chunk-YGGDU6C3.js';
6
- export { FormEnhancer } from '../chunk-QANVUXKH.js';
6
+ export { FormEnhancer } from '../chunk-42OXY4JV.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
8
  import '../chunk-DXO6SBMD.js';
9
9
  export { FormField as FormFieldComponent } from '../chunk-QPEEKFCA.js';
10
- export { useForm, useFormTracking } from '../chunk-UZN4ZYR2.js';
10
+ export { useForm, useFormTracking } from '../chunk-ZSLRAMCK.js';
11
11
  import '../chunk-AQSNPZY4.js';
12
12
  export { DEFAULT_FORM_SUCCESS_MESSAGE } from '../chunk-5SQK3D53.js';
13
13
  import '../chunk-NJCTQH2P.js';
14
14
  import '../chunk-L2V5PUFN.js';
15
15
  import '../chunk-GJWI74ZZ.js';
16
- import { sonorFetch } from '../chunk-EGOD74PP.js';
17
- import '../chunk-3KUUH2YP.js';
18
- import '../chunk-QGHSMJKW.js';
16
+ import { sonorFetch } from '../chunk-RU2RMTGT.js';
17
+ import '../chunk-OIETJKIL.js';
18
+ import '../chunk-B6RZ2NRH.js';
19
19
  import '../chunk-PKBMQBKP.js';
20
20
 
21
21
  // src/forms/formsApi.ts
@@ -1,5 +1,5 @@
1
- export { ServerForm, getFormConfig } from '../chunk-V6LSQRTH.js';
2
- import '../chunk-QANVUXKH.js';
1
+ export { ServerForm, getFormConfig } from '../chunk-P2GIIQH5.js';
2
+ import '../chunk-42OXY4JV.js';
3
3
  import '../chunk-YC7ELZS3.js';
4
4
  export { StaticForm } from '../chunk-OPRBF7VE.js';
5
5
  import '../chunk-DXO6SBMD.js';
@@ -224,7 +224,9 @@ export interface ManagedFormProps {
224
224
  initialConfig?: Record<string, unknown> | null;
225
225
  /**
226
226
  * Rendering experience. Defaults to the form's Sonor config
227
- * (`layout: 'stage'` puts it on stage with no site deploy), else 'classic'.
227
+ * (`layout: 'stage'` puts it on stage, `'classic'` opts out, with no site
228
+ * deploy), else 'spotlight'. A form with nothing answerable falls back to
229
+ * 'classic' whatever is asked for.
228
230
  */
229
231
  experience?: FormExperience;
230
232
  /**
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-P5J7VMQ3.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-O52CH273.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-EGOD74PP.js';
4
- import '../chunk-3KUUH2YP.js';
5
- import '../chunk-QGHSMJKW.js';
3
+ import '../chunk-RU2RMTGT.js';
4
+ import '../chunk-OIETJKIL.js';
5
+ import '../chunk-B6RZ2NRH.js';
6
6
  import '../chunk-PKBMQBKP.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { SITE_KIT_VERSION } from './chunk-QGHSMJKW.js';
1
+ export { SITE_KIT_VERSION } from './chunk-B6RZ2NRH.js';
2
2
  import './chunk-PKBMQBKP.js';
@@ -1,9 +1,9 @@
1
1
  'use client';
2
- export { SiteKitClientProviders } from '../chunk-BMO3VGMR.js';
3
- import '../chunk-GYESATRY.js';
4
- import '../chunk-CVTVNC2U.js';
2
+ export { SiteKitClientProviders } from '../chunk-7JIKGKWD.js';
3
+ import '../chunk-56JNI463.js';
4
+ import '../chunk-K5WZX776.js';
5
5
  import '../chunk-ZTZQPYP6.js';
6
- import '../chunk-QZZIKMAT.js';
6
+ import '../chunk-SAUTJMK6.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
8
  import '../chunk-FESKKJAS.js';
9
9
  import '../chunk-A4CC4ZG3.js';
@@ -11,7 +11,7 @@ import '../chunk-24QZEO3Q.js';
11
11
  import '../chunk-GJWI74ZZ.js';
12
12
  import '../chunk-43OCZ3JA.js';
13
13
  import '../chunk-EKBEOXTH.js';
14
- import '../chunk-EGOD74PP.js';
15
- import '../chunk-3KUUH2YP.js';
16
- import '../chunk-QGHSMJKW.js';
14
+ import '../chunk-RU2RMTGT.js';
15
+ import '../chunk-OIETJKIL.js';
16
+ import '../chunk-B6RZ2NRH.js';
17
17
  import '../chunk-PKBMQBKP.js';
@@ -1,11 +1,11 @@
1
- import { SiteKitClientProviders } from '../chunk-BMO3VGMR.js';
2
- import '../chunk-GYESATRY.js';
3
- import '../chunk-CVTVNC2U.js';
1
+ import { SiteKitClientProviders } from '../chunk-7JIKGKWD.js';
2
+ import '../chunk-56JNI463.js';
3
+ import '../chunk-K5WZX776.js';
4
4
  import '../chunk-ZTZQPYP6.js';
5
5
  import { ManagedFavicon } from '../chunk-GW7GSBO7.js';
6
- import '../chunk-QZZIKMAT.js';
6
+ import '../chunk-SAUTJMK6.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
- import { resolveClientCredential } from '../chunk-OFOAHPUV.js';
8
+ import { resolveClientCredential } from '../chunk-BEL7YFMC.js';
9
9
  import '../chunk-VX5CMNMM.js';
10
10
  import { ManagedScripts } from '../chunk-MVLMXC44.js';
11
11
  import { resolveApiOrigin } from '../chunk-X6F6SO4S.js';
@@ -16,9 +16,9 @@ import '../chunk-24QZEO3Q.js';
16
16
  import '../chunk-GJWI74ZZ.js';
17
17
  import '../chunk-43OCZ3JA.js';
18
18
  import '../chunk-EKBEOXTH.js';
19
- import '../chunk-EGOD74PP.js';
20
- import '../chunk-3KUUH2YP.js';
21
- import '../chunk-QGHSMJKW.js';
19
+ import '../chunk-RU2RMTGT.js';
20
+ import '../chunk-OIETJKIL.js';
21
+ import '../chunk-B6RZ2NRH.js';
22
22
  import '../chunk-PKBMQBKP.js';
23
23
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
24
24
 
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { monotonicMs } from '../chunk-MH2DSGC6.js';
3
- import { sonorFetch } from '../chunk-EGOD74PP.js';
4
- import '../chunk-3KUUH2YP.js';
5
- import '../chunk-QGHSMJKW.js';
3
+ import { sonorFetch } from '../chunk-RU2RMTGT.js';
4
+ import '../chunk-OIETJKIL.js';
5
+ import '../chunk-B6RZ2NRH.js';
6
6
  import '../chunk-PKBMQBKP.js';
7
7
  import { useState, useCallback, useEffect } from 'react';
8
8
  import { APIProvider, Map as Map$1, AdvancedMarker, Pin, InfoWindow } from '@vis.gl/react-google-maps';
package/dist/mcp/sonor.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { toolErrorResult } from '../chunk-FYAB6CXS.js';
2
2
  import { fetchReviews, fetchReviewStats } from '../chunk-EDYHROQ7.js';
3
3
  import { getOfferings } from '../chunk-G3NHWMP5.js';
4
- import { fetchBookingTypes, fetchAvailability } from '../chunk-MV2MBTC3.js';
4
+ import { fetchBookingTypes, fetchAvailability } from '../chunk-5FBY2ZIH.js';
5
5
  import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-GLHQ3LRO.js';
6
- import { getFormConfig } from '../chunk-V6LSQRTH.js';
7
- import '../chunk-QANVUXKH.js';
6
+ import { getFormConfig } from '../chunk-P2GIIQH5.js';
7
+ import '../chunk-42OXY4JV.js';
8
8
  import '../chunk-YC7ELZS3.js';
9
9
  import '../chunk-OPRBF7VE.js';
10
10
  import '../chunk-DXO6SBMD.js';
@@ -22,9 +22,9 @@ import { resolveSiteHost } from '../chunk-FESKKJAS.js';
22
22
  import '../chunk-A4CC4ZG3.js';
23
23
  import '../chunk-5SQK3D53.js';
24
24
  import '../chunk-NJCTQH2P.js';
25
- import '../chunk-EGOD74PP.js';
26
- import '../chunk-3KUUH2YP.js';
27
- import { SITE_KIT_VERSION } from '../chunk-QGHSMJKW.js';
25
+ import '../chunk-RU2RMTGT.js';
26
+ import '../chunk-OIETJKIL.js';
27
+ import { SITE_KIT_VERSION } from '../chunk-B6RZ2NRH.js';
28
28
  import '../chunk-PKBMQBKP.js';
29
29
  import 'server-only';
30
30
  import { after } from 'next/server.js';
@@ -1,9 +1,9 @@
1
1
  'use client';
2
- export { SitemapSync } from '../chunk-WATH55UY.js';
2
+ export { SitemapSync } from '../chunk-BS7FWUOY.js';
3
3
  import '../chunk-YVKRYQRG.js';
4
4
  import '../chunk-43OCZ3JA.js';
5
5
  import '../chunk-EKBEOXTH.js';
6
- import '../chunk-EGOD74PP.js';
7
- import '../chunk-3KUUH2YP.js';
8
- import '../chunk-QGHSMJKW.js';
6
+ import '../chunk-RU2RMTGT.js';
7
+ import '../chunk-OIETJKIL.js';
8
+ import '../chunk-B6RZ2NRH.js';
9
9
  import '../chunk-PKBMQBKP.js';
package/dist/seo/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { ManagedNoScripts, ManagedScripts } from '../chunk-MVLMXC44.js';
2
2
  import { pickManagedLlmSchemaForJsonLd } from '../chunk-4Y5FWDPM.js';
3
3
  import { safeJsonLd } from '../chunk-4KZ6W3ZH.js';
4
- export { SitemapSync } from '../chunk-WATH55UY.js';
4
+ export { SitemapSync } from '../chunk-BS7FWUOY.js';
5
5
  import { getManagedMetadata } from '../chunk-6HDT4G4A.js';
6
6
  export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-6HDT4G4A.js';
7
7
  import { getContentBlock, getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, getEntities, pruneSchemaTypes } from '../chunk-N2UVOR3X.js';
@@ -16,9 +16,9 @@ import '../chunk-FESKKJAS.js';
16
16
  import '../chunk-A4CC4ZG3.js';
17
17
  import '../chunk-43OCZ3JA.js';
18
18
  import '../chunk-EKBEOXTH.js';
19
- import '../chunk-EGOD74PP.js';
20
- import '../chunk-3KUUH2YP.js';
21
- import '../chunk-QGHSMJKW.js';
19
+ import '../chunk-RU2RMTGT.js';
20
+ import '../chunk-OIETJKIL.js';
21
+ import '../chunk-B6RZ2NRH.js';
22
22
  import '../chunk-PKBMQBKP.js';
23
23
  import { Suspense } from 'react';
24
24
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- export { resolveClientCredential } from '../chunk-OFOAHPUV.js';
1
+ export { resolveClientCredential } from '../chunk-BEL7YFMC.js';
2
2
  import '../chunk-VX5CMNMM.js';
3
3
  export { requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-X6F6SO4S.js';
4
4
  import '../chunk-MH2DSGC6.js';
5
- import '../chunk-QGHSMJKW.js';
5
+ import '../chunk-B6RZ2NRH.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -7,4 +7,4 @@
7
7
  * it matches package.json at publish time, and version.test.ts asserts it in
8
8
  * dev, so it can't silently drift.
9
9
  */
10
- export declare const SITE_KIT_VERSION = "7.0.1";
10
+ export declare const SITE_KIT_VERSION = "7.0.2";
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- import { useSignalExperiment, useSignalEvent } from '../chunk-QZZIKMAT.js';
3
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-QZZIKMAT.js';
2
+ import { useSignalExperiment, useSignalEvent } from '../chunk-SAUTJMK6.js';
3
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-SAUTJMK6.js';
4
4
  import '../chunk-PKBMQBKP.js';
5
5
  import React, { useEffect } from 'react';
6
6
  import { jsx, Fragment } from 'react/jsx-runtime';
@@ -1,6 +1,6 @@
1
- export { BookingWidget } from '../chunk-FYBZ5SNP.js';
2
- export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-MV2MBTC3.js';
3
- import '../chunk-EGOD74PP.js';
4
- import '../chunk-3KUUH2YP.js';
5
- import '../chunk-QGHSMJKW.js';
1
+ export { BookingWidget } from '../chunk-GYY6ETGB.js';
2
+ export { createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-5FBY2ZIH.js';
3
+ import '../chunk-RU2RMTGT.js';
4
+ import '../chunk-OIETJKIL.js';
5
+ import '../chunk-B6RZ2NRH.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-P5J7VMQ3.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-O52CH273.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-EGOD74PP.js';
4
- import '../chunk-3KUUH2YP.js';
5
- import '../chunk-QGHSMJKW.js';
3
+ import '../chunk-RU2RMTGT.js';
4
+ import '../chunk-OIETJKIL.js';
5
+ import '../chunk-B6RZ2NRH.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- export { SiteDesignReporter } from '../chunk-P4GRY6QP.js';
3
- export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-FL4EPUWA.js';
2
+ export { SiteDesignReporter } from '../chunk-ZRE4ZYEG.js';
3
+ export { SITE_DESIGN_PATH, cleanFontStack, colorToHex, getSiteDesignTokens, measureSiteDesign, readDeclaredDesign, sendSiteDesign } from '../chunk-DKTSGYLM.js';
4
4
  export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-JSZN6LDZ.js';
5
5
  import '../chunk-IHG36STL.js';
6
6
  import '../chunk-YC7ELZS3.js';
7
7
  import '../chunk-S22FSH7C.js';
8
8
  import '../chunk-43OCZ3JA.js';
9
9
  import '../chunk-EKBEOXTH.js';
10
- import '../chunk-EGOD74PP.js';
11
- import '../chunk-3KUUH2YP.js';
12
- import '../chunk-QGHSMJKW.js';
10
+ import '../chunk-RU2RMTGT.js';
11
+ import '../chunk-OIETJKIL.js';
12
+ import '../chunk-B6RZ2NRH.js';
13
13
  import '../chunk-PKBMQBKP.js';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  export { DEFAULT_POPUP_TOKENS, PopupBlocks } from '../chunk-JSZN6LDZ.js';
3
3
  import '../chunk-IHG36STL.js';
4
- import { EngageWidget } from '../chunk-5SEM2V4A.js';
4
+ import { EngageWidget } from '../chunk-T4SY3FMN.js';
5
5
  import '../chunk-NDF4A5JM.js';
6
6
  import '../chunk-6T6CQVNL.js';
7
7
  import '../chunk-S22FSH7C.js';
@@ -9,9 +9,9 @@ import '../chunk-24QZEO3Q.js';
9
9
  import '../chunk-GJWI74ZZ.js';
10
10
  import '../chunk-43OCZ3JA.js';
11
11
  import '../chunk-EKBEOXTH.js';
12
- import '../chunk-EGOD74PP.js';
13
- import '../chunk-3KUUH2YP.js';
14
- import '../chunk-QGHSMJKW.js';
12
+ import '../chunk-RU2RMTGT.js';
13
+ import '../chunk-OIETJKIL.js';
14
+ import '../chunk-B6RZ2NRH.js';
15
15
  import '../chunk-PKBMQBKP.js';
16
16
  import { jsx } from 'react/jsx-runtime';
17
17
 
@@ -0,0 +1,146 @@
1
+ # Moving a site to site-kit 7
2
+
3
+ site-kit 7 is organised the way Sonor's dashboard is: one entry per module.
4
+ Most sites need no changes at all. Move a site when you next touch it
5
+ ("touch a site, update its deps"); nothing forces it before then, because a
6
+ site's `^6` range never picks up 7.
7
+
8
+ ## The short version
9
+
10
+ ```bash
11
+ pnpm add @sonordev/site-kit@^7
12
+ npx sonor-setup codemod --check # lists what needs moving (writes nothing)
13
+ npx sonor-setup codemod --write # moves it
14
+ pnpm build # a bump you didn't build is a guess
15
+ ```
16
+
17
+ Run the codemod in each app or workspace package that imports site-kit (in a
18
+ monorepo, inside each workspace package too). It's
19
+ idempotent: running it twice changes nothing the second time. It works from
20
+ any 2.x-6.x site: copies of sites on 4.2, 5.8 and 6.5 were migrated with it
21
+ and built.
22
+
23
+ Requirements: Next 16 (every fleet site is on it) and Node 20.19+ or 22.12+
24
+ (Netlify's default is 22).
25
+
26
+ ## What changed, and what the codemod does about it
27
+
28
+ ### 1. The root entry is types-only
29
+
30
+ `@sonordev/site-kit` exports types and `SITE_KIT_VERSION`, nothing that runs.
31
+ A stray root import used to be able to pull commerce, signal or redirect code
32
+ into a page's bundle.
33
+
34
+ | Was | Now |
35
+ |---|---|
36
+ | `import { BookingWidget } from '@sonordev/site-kit'` | `@sonordev/site-kit/sync` |
37
+ | `import { AffiliatesWidget, useAffiliates } from '@sonordev/site-kit'` | `@sonordev/site-kit/affiliates` (new entry) |
38
+ | commerce components and fetchers | `@sonordev/site-kit/commerce` |
39
+ | `ManagedImage` and the image helpers | `@sonordev/site-kit/website/images` |
40
+ | `SignalBridge`, experiments, `useSignal*` | `@sonordev/site-kit/signal` |
41
+ | `TestimonialSection`, `fetchReviews` | `@sonordev/site-kit/reputation` |
42
+ | `handleManagedRedirects` and friends | `@sonordev/site-kit/seo/redirects` |
43
+ | `LandingPage`, `landingPageMetadata` | `@sonordev/site-kit/website/landing` |
44
+ | `formatBookingTime`, `formatBookingDate` | `formatTime`, `formatDate` from `@sonordev/site-kit/sync` |
45
+
46
+ **The codemod rewrites these imports**, including the two renamed ones, and
47
+ keeps type imports on the root. It flags, rather than rewrites, a namespace
48
+ import (`import * as SK`), a `require`, or a re-export from the root. The full
49
+ list is `src/shared/module-map.json` (`rootRuntime`).
50
+
51
+ Across our own sites on 2026-09-26 this touched three repos: one for
52
+ `affiliates`, two for `BookingWidget`.
53
+
54
+ ### 2. The setup CLI is its own package: `sonor-setup`
55
+
56
+ The CLI (init, scaffold, codemods, OG cards, GEO wiring, verify) was 3 MB of
57
+ every site's install and forced a site-kit release for every setup-only fix.
58
+ It's now [`sonor-setup`](../packages/sonor-setup).
59
+
60
+ - **`npx sonor-setup …` keeps working unchanged:** npx fetches the package.
61
+ - **A site whose package.json scripts run `sonor-setup`** (wirsch-law's OG
62
+ step, `sonor-setup og`) needs it as a dev dependency. The codemod adds
63
+ `"sonor-setup": "^7.0.0"` for you.
64
+ - **`sonor-register-sitemap` stays in site-kit**, since 11 sites run it from
65
+ their postbuild. Nothing to change.
66
+ - The `site-kit` bin alias for the CLI is gone (no site used it).
67
+
68
+ ### 3. One entry per Sonor module (old paths still work)
69
+
70
+ New homes, each the same module as before:
71
+
72
+ - Website: `./website/{popups,images,slots,cms,landing,cta-bar}`
73
+ - SEO: `./seo/{sitemap,robots,indexnow,redirects,og,og/route,llms,llms/client,llms/contract,meta/contract,pages/contract}`
74
+ - Website chat: `./chat` (out of `./engage`)
75
+
76
+ **The old paths keep working through 7.x** and are removed in 8.0. The
77
+ codemod moves them anyway, so a touched site is done in one pass.
78
+ `SiteKitLayout` gains `chat` and `popups` props; `engage` is an alias
79
+ (`engage={false}` still turns both off).
80
+
81
+ ### 4. ESM only, Next 16 only
82
+
83
+ site-kit ships ES modules alone (`"type": "module"`). Next, Turbopack and the
84
+ kits don't notice. Node 20.19+/22.12+ can `require()` it too, so a
85
+ `next.config.ts` that imports `@sonordev/site-kit/config` keeps working. A
86
+ site-side script that `require()`s site-kit on an older Node would break; none
87
+ in the fleet does.
88
+
89
+ The `next` peer is `^16`. Next 16 renamed `middleware.ts` to `proxy.ts`, and
90
+ **the codemod moves it**: the file, a named `middleware` export (to `proxy`),
91
+ and `createMiddleware` from `@sonordev/site-kit/middleware` (to `createProxy`
92
+ from `/proxy`). The old names work through 7.x. It won't move a file that
93
+ sets `runtime` (a proxy file can't; the build throws), and says so: remove
94
+ the export, check the logic still runs on your host, rerun. It never moves
95
+ onto an existing `proxy.ts`. `npx sonor-setup next16` runs just this part.
96
+
97
+ ### 5. Removed (no site in the fleet used them)
98
+
99
+ - `@sonordev/site-kit/search` and `/search/contract`
100
+ - `@sonordev/site-kit/redirects/not-found` (`resolveManagedRedirect`), and
101
+ with it the `x-sk-path` request header the proxy stamped for it and the
102
+ `SK_PATH_HEADER` export. Managed redirects run in the proxy.
103
+ - The postinstall GEO bootstrap (`SITE_KIT_AUTO_GEO=1`). Run
104
+ `npx sonor-setup geo` instead. site-kit no longer runs anything at install.
105
+ - `@sonordev/site-kit/setup` (an empty stub since 2.0), `LocationPageContent`
106
+ and `getLocationSection` (they sent a `project_id`), `identifyTopicClusters`
107
+ (use `getTopicCluster`), `formatContentSignals`, and the `SiteKitConfig`
108
+ type (not `withSiteKitConfig`, which stays).
109
+ - Source maps. The package no longer ships `.map` files (7.3 of 6.x's 11 MB).
110
+
111
+ Still accepted and ignored until 8.0, because sites pass them:
112
+ `contentSignals` on `createRobotsTxtHandler`, `nativeReturnTo` on forms, and
113
+ `<ManagedScripts />`.
114
+
115
+ ### 6. Behavior worth knowing
116
+
117
+ - **react-markdown is no longer installed with site-kit.** The chat widget
118
+ renders markdown with `marked`, already a dependency. A site that imports
119
+ `react-markdown` itself without listing it (it only worked because npm
120
+ hoisted site-kit's copy) must add it.
121
+ - **`sonor-register-sitemap` reads .env files the way Next does**: a variable
122
+ the host set wins over every file, then `.env.production.local`,
123
+ `.env.local`, `.env.production`, `.env`. It used to let `.env.local` beat
124
+ the host.
125
+
126
+ ## Optional, and new in 7.0
127
+
128
+ - **Cache Components.** `cacheComponents: true` in next.config works with
129
+ site-kit now (it failed every page through 6.x). Remove route segment
130
+ configs (`dynamic`, `revalidate`) when you turn it on; Next rejects them.
131
+ - **Agent tools.** `npx sonor-setup mcp` gives the site an MCP endpoint with
132
+ the built-in Sonor tools (business profile, services, FAQ, pages, articles,
133
+ reviews; inquiries, availability and offerings when you ask), the server
134
+ card, and on Netlify the rate-limited relay. Sonor's AI Visibility tab then
135
+ shows which agents used them. A site that already runs its own MCP server
136
+ (upforge.io and the other hand-written ones) is left exactly as it is:
137
+ nothing in 7.0 turns anything on for it. To have Sonor see its calls, add
138
+ `onToolCall: reportToolCallsToSonor()` to its `createMcpHandler`.
139
+ - **`@sonordev/contracts`** is for the APIs and the dashboard; sites keep
140
+ importing `@sonordev/site-kit/*/contract`, which is the same code.
141
+
142
+ ## Kits built on site-kit
143
+
144
+ agency-site-kit and re-site-kit import only entries 7 keeps unchanged
145
+ (`/client`, `/server`, `/llms`, `/forms`, `/mcp`, `/portfolio/contract`),
146
+ so their `>=` peer ranges already accept 7.