@sonordev/site-kit 3.6.1 → 3.6.3

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 (149) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/AnalyticsProvider-X243YBPQ.mjs +10 -0
  3. package/dist/{AnalyticsProvider-QW52JAUC.mjs.map → AnalyticsProvider-X243YBPQ.mjs.map} +1 -1
  4. package/dist/AnalyticsProvider-ZJHOU5HI.js +31 -0
  5. package/dist/{AnalyticsProvider-KZB62VRO.js.map → AnalyticsProvider-ZJHOU5HI.js.map} +1 -1
  6. package/dist/ChatWidget-L5E73JUY.mjs +10 -0
  7. package/dist/{ChatWidget-I2VMNZX5.mjs.map → ChatWidget-L5E73JUY.mjs.map} +1 -1
  8. package/dist/ChatWidget-NRQBBRLK.js +19 -0
  9. package/dist/{ChatWidget-RPI4XQLQ.js.map → ChatWidget-NRQBBRLK.js.map} +1 -1
  10. package/dist/EngageWidget-HLBJE4ZB.js +18 -0
  11. package/dist/{EngageWidget-JMLMGLQO.js.map → EngageWidget-HLBJE4ZB.js.map} +1 -1
  12. package/dist/EngageWidget-X7UIQUPC.mjs +9 -0
  13. package/dist/{EngageWidget-Z3JRH3VQ.mjs.map → EngageWidget-X7UIQUPC.mjs.map} +1 -1
  14. package/dist/{SignalCore-VJPTNFM2.js → SignalCore-CWDC45EQ.js} +11 -11
  15. package/dist/{SignalCore-VJPTNFM2.js.map → SignalCore-CWDC45EQ.js.map} +1 -1
  16. package/dist/{SignalCore-PHT4J6B6.mjs → SignalCore-G6MAO72R.mjs} +5 -5
  17. package/dist/{SignalCore-PHT4J6B6.mjs.map → SignalCore-G6MAO72R.mjs.map} +1 -1
  18. package/dist/SitemapSync-FWWORZOF.js +17 -0
  19. package/dist/{SitemapSync-EIT7DPHB.js.map → SitemapSync-FWWORZOF.js.map} +1 -1
  20. package/dist/SitemapSync-QAMSDAF7.mjs +8 -0
  21. package/dist/{SitemapSync-APZY32SB.mjs.map → SitemapSync-QAMSDAF7.mjs.map} +1 -1
  22. package/dist/analytics/index.js +12 -12
  23. package/dist/analytics/index.mjs +5 -5
  24. package/dist/{chunk-5ATLDT36.mjs → chunk-2O2PZII5.mjs} +4 -4
  25. package/dist/{chunk-5ATLDT36.mjs.map → chunk-2O2PZII5.mjs.map} +1 -1
  26. package/dist/{chunk-DCD6VPOO.js → chunk-5OJ36D7M.js} +14 -14
  27. package/dist/{chunk-DCD6VPOO.js.map → chunk-5OJ36D7M.js.map} +1 -1
  28. package/dist/{chunk-UQAG7WXA.mjs → chunk-6B3DEFHU.mjs} +6 -4
  29. package/dist/{chunk-OUHCQEFZ.js.map → chunk-6B3DEFHU.mjs.map} +1 -1
  30. package/dist/chunk-6ZDXUCAX.js +8 -0
  31. package/dist/{chunk-YAFD3N2M.js.map → chunk-6ZDXUCAX.js.map} +1 -1
  32. package/dist/{chunk-RPSMRZTG.js → chunk-7KIXGDUP.js} +14 -14
  33. package/dist/{chunk-RPSMRZTG.js.map → chunk-7KIXGDUP.js.map} +1 -1
  34. package/dist/{chunk-4DLCVLI2.mjs → chunk-BS3P5PTY.mjs} +3 -3
  35. package/dist/{chunk-4DLCVLI2.mjs.map → chunk-BS3P5PTY.mjs.map} +1 -1
  36. package/dist/{chunk-G7GDB4BO.js → chunk-C7EVU7V7.js} +4 -4
  37. package/dist/{chunk-G7GDB4BO.js.map → chunk-C7EVU7V7.js.map} +1 -1
  38. package/dist/{chunk-DUPINYEY.js → chunk-D74AZ6TM.js} +9 -9
  39. package/dist/{chunk-DUPINYEY.js.map → chunk-D74AZ6TM.js.map} +1 -1
  40. package/dist/{chunk-5Q2GTBBO.js → chunk-DCSNIU2V.js} +6 -6
  41. package/dist/{chunk-5Q2GTBBO.js.map → chunk-DCSNIU2V.js.map} +1 -1
  42. package/dist/{chunk-U2KSUWKV.mjs → chunk-DEVPKGCD.mjs} +3 -3
  43. package/dist/{chunk-U2KSUWKV.mjs.map → chunk-DEVPKGCD.mjs.map} +1 -1
  44. package/dist/{chunk-OWFNICLM.mjs → chunk-EDQXJFH2.mjs} +3 -3
  45. package/dist/{chunk-OWFNICLM.mjs.map → chunk-EDQXJFH2.mjs.map} +1 -1
  46. package/dist/{chunk-UZEC5GJW.mjs → chunk-EY2236OY.mjs} +3 -3
  47. package/dist/{chunk-UZEC5GJW.mjs.map → chunk-EY2236OY.mjs.map} +1 -1
  48. package/dist/{chunk-5JEZUNNA.mjs → chunk-FJTER53S.mjs} +4 -4
  49. package/dist/{chunk-5JEZUNNA.mjs.map → chunk-FJTER53S.mjs.map} +1 -1
  50. package/dist/{chunk-CMMAOU43.mjs → chunk-FK342VJY.mjs} +4 -4
  51. package/dist/{chunk-CMMAOU43.mjs.map → chunk-FK342VJY.mjs.map} +1 -1
  52. package/dist/{chunk-5GQZKWVL.js → chunk-FYCFUYPQ.js} +3 -3
  53. package/dist/{chunk-5GQZKWVL.js.map → chunk-FYCFUYPQ.js.map} +1 -1
  54. package/dist/{chunk-FCCYXKGQ.js → chunk-GR4YKNFX.js} +13 -13
  55. package/dist/{chunk-FCCYXKGQ.js.map → chunk-GR4YKNFX.js.map} +1 -1
  56. package/dist/{chunk-H4EJVSP6.mjs → chunk-IJR3ATI5.mjs} +4 -4
  57. package/dist/{chunk-H4EJVSP6.mjs.map → chunk-IJR3ATI5.mjs.map} +1 -1
  58. package/dist/chunk-JYM4I57K.mjs +6 -0
  59. package/dist/{chunk-F23IBAAW.mjs.map → chunk-JYM4I57K.mjs.map} +1 -1
  60. package/dist/{chunk-76C4MEK7.mjs → chunk-KEGWCBLW.mjs} +3 -3
  61. package/dist/{chunk-76C4MEK7.mjs.map → chunk-KEGWCBLW.mjs.map} +1 -1
  62. package/dist/{chunk-PBS5LUTH.mjs → chunk-KYYSS5L7.mjs} +3 -3
  63. package/dist/{chunk-PBS5LUTH.mjs.map → chunk-KYYSS5L7.mjs.map} +1 -1
  64. package/dist/{chunk-6IFYPRRN.mjs → chunk-LSZ6CT6U.mjs} +3 -3
  65. package/dist/{chunk-6IFYPRRN.mjs.map → chunk-LSZ6CT6U.mjs.map} +1 -1
  66. package/dist/{chunk-IJ7RAV6T.js → chunk-O3WBS4VY.js} +9 -9
  67. package/dist/{chunk-IJ7RAV6T.js.map → chunk-O3WBS4VY.js.map} +1 -1
  68. package/dist/{chunk-DVGGOWXD.js → chunk-O4ILWMIB.js} +8 -8
  69. package/dist/{chunk-DVGGOWXD.js.map → chunk-O4ILWMIB.js.map} +1 -1
  70. package/dist/{chunk-OUHCQEFZ.js → chunk-OYT6SFLM.js} +8 -6
  71. package/dist/chunk-OYT6SFLM.js.map +1 -0
  72. package/dist/{chunk-JZL6VD5I.mjs → chunk-PHLJDLRA.mjs} +3 -3
  73. package/dist/{chunk-JZL6VD5I.mjs.map → chunk-PHLJDLRA.mjs.map} +1 -1
  74. package/dist/{chunk-T26I3F5V.mjs → chunk-PUH6YPZY.mjs} +11 -10
  75. package/dist/chunk-PUH6YPZY.mjs.map +1 -0
  76. package/dist/{chunk-CTK2KIUL.js → chunk-PVRE3PYC.js} +4 -4
  77. package/dist/{chunk-CTK2KIUL.js.map → chunk-PVRE3PYC.js.map} +1 -1
  78. package/dist/{chunk-DCKWZGE4.js → chunk-QR7CMR3W.js} +15 -15
  79. package/dist/{chunk-DCKWZGE4.js.map → chunk-QR7CMR3W.js.map} +1 -1
  80. package/dist/{chunk-6FKCXAZ2.js → chunk-T3ARA52J.js} +4 -4
  81. package/dist/{chunk-6FKCXAZ2.js.map → chunk-T3ARA52J.js.map} +1 -1
  82. package/dist/{chunk-XEEGFMIY.js → chunk-TYYTM4WC.js} +14 -13
  83. package/dist/chunk-TYYTM4WC.js.map +1 -0
  84. package/dist/{chunk-JOOLIHFA.mjs → chunk-VOYRWPE3.mjs} +3 -3
  85. package/dist/{chunk-JOOLIHFA.mjs.map → chunk-VOYRWPE3.mjs.map} +1 -1
  86. package/dist/{chunk-NHAWEWSI.js → chunk-VZF3NFCY.js} +7 -7
  87. package/dist/{chunk-NHAWEWSI.js.map → chunk-VZF3NFCY.js.map} +1 -1
  88. package/dist/{chunk-DKFI4RSH.mjs → chunk-WQXSILFH.mjs} +4 -4
  89. package/dist/{chunk-DKFI4RSH.mjs.map → chunk-WQXSILFH.mjs.map} +1 -1
  90. package/dist/{chunk-VTNDPGDP.js → chunk-XHJXIAAW.js} +5 -5
  91. package/dist/{chunk-VTNDPGDP.js.map → chunk-XHJXIAAW.js.map} +1 -1
  92. package/dist/{chunk-JGRWGBXG.mjs → chunk-XS2COTTD.mjs} +3 -3
  93. package/dist/{chunk-JGRWGBXG.mjs.map → chunk-XS2COTTD.mjs.map} +1 -1
  94. package/dist/{chunk-FIBGXNP4.js → chunk-ZQ2JTDPC.js} +15 -15
  95. package/dist/{chunk-FIBGXNP4.js.map → chunk-ZQ2JTDPC.js.map} +1 -1
  96. package/dist/cli/index.js +2 -2
  97. package/dist/cli/index.mjs +1 -1
  98. package/dist/client/index.js +4 -4
  99. package/dist/client/index.mjs +3 -3
  100. package/dist/commerce/index.js +51 -51
  101. package/dist/commerce/index.mjs +6 -6
  102. package/dist/engage/index.js +9 -9
  103. package/dist/engage/index.mjs +6 -6
  104. package/dist/fleet/index.js +8 -8
  105. package/dist/fleet/index.mjs +4 -4
  106. package/dist/forms/index.js +13 -13
  107. package/dist/forms/index.mjs +5 -5
  108. package/dist/images/index.js +11 -11
  109. package/dist/images/index.mjs +4 -4
  110. package/dist/index.js +64 -64
  111. package/dist/index.mjs +10 -10
  112. package/dist/layout/client.d.mts +3 -1
  113. package/dist/layout/client.d.ts +3 -1
  114. package/dist/layout/client.js +8 -8
  115. package/dist/layout/client.mjs +7 -7
  116. package/dist/layout/index.js +11 -10
  117. package/dist/layout/index.js.map +1 -1
  118. package/dist/layout/index.mjs +9 -8
  119. package/dist/layout/index.mjs.map +1 -1
  120. package/dist/maps/index.d.mts +4 -1
  121. package/dist/maps/index.d.ts +4 -1
  122. package/dist/maps/index.js +12 -10
  123. package/dist/maps/index.js.map +1 -1
  124. package/dist/maps/index.mjs +10 -8
  125. package/dist/maps/index.mjs.map +1 -1
  126. package/dist/seo/client.js +5 -5
  127. package/dist/seo/client.mjs +4 -4
  128. package/dist/seo/index.js +5 -5
  129. package/dist/seo/index.mjs +4 -4
  130. package/dist/server/index.js +3 -3
  131. package/dist/server/index.mjs +2 -2
  132. package/dist/signal/index.js +11 -11
  133. package/dist/signal/index.mjs +2 -2
  134. package/dist/sync/index.js +16 -16
  135. package/dist/sync/index.mjs +4 -4
  136. package/package.json +1 -1
  137. package/dist/AnalyticsProvider-KZB62VRO.js +0 -31
  138. package/dist/AnalyticsProvider-QW52JAUC.mjs +0 -10
  139. package/dist/ChatWidget-I2VMNZX5.mjs +0 -10
  140. package/dist/ChatWidget-RPI4XQLQ.js +0 -19
  141. package/dist/EngageWidget-JMLMGLQO.js +0 -18
  142. package/dist/EngageWidget-Z3JRH3VQ.mjs +0 -9
  143. package/dist/SitemapSync-APZY32SB.mjs +0 -8
  144. package/dist/SitemapSync-EIT7DPHB.js +0 -17
  145. package/dist/chunk-F23IBAAW.mjs +0 -6
  146. package/dist/chunk-T26I3F5V.mjs.map +0 -1
  147. package/dist/chunk-UQAG7WXA.mjs.map +0 -1
  148. package/dist/chunk-XEEGFMIY.js.map +0 -1
  149. package/dist/chunk-YAFD3N2M.js +0 -8
package/dist/seo/index.js CHANGED
@@ -3,14 +3,14 @@
3
3
  var chunkDV2LJYFD_js = require('../chunk-DV2LJYFD.js');
4
4
  var chunkATG4FJY6_js = require('../chunk-ATG4FJY6.js');
5
5
  var chunkJ7QI3GDX_js = require('../chunk-J7QI3GDX.js');
6
- var chunkVTNDPGDP_js = require('../chunk-VTNDPGDP.js');
6
+ var chunkXHJXIAAW_js = require('../chunk-XHJXIAAW.js');
7
7
  var chunkVMVEL4WU_js = require('../chunk-VMVEL4WU.js');
8
8
  var chunkQCZBXG7G_js = require('../chunk-QCZBXG7G.js');
9
9
  require('../chunk-QPIKPWAZ.js');
10
10
  require('../chunk-JEOKDUPQ.js');
11
- require('../chunk-FIBGXNP4.js');
12
- require('../chunk-6FKCXAZ2.js');
13
- require('../chunk-YAFD3N2M.js');
11
+ require('../chunk-ZQ2JTDPC.js');
12
+ require('../chunk-T3ARA52J.js');
13
+ require('../chunk-6ZDXUCAX.js');
14
14
  require('../chunk-ZSMWDLMK.js');
15
15
  var react = require('react');
16
16
  var jsxRuntime = require('react/jsx-runtime');
@@ -687,7 +687,7 @@ Object.defineProperty(exports, "ManagedScripts", {
687
687
  });
688
688
  Object.defineProperty(exports, "SitemapSync", {
689
689
  enumerable: true,
690
- get: function () { return chunkVTNDPGDP_js.SitemapSync; }
690
+ get: function () { return chunkXHJXIAAW_js.SitemapSync; }
691
691
  });
692
692
  Object.defineProperty(exports, "generateSitemap", {
693
693
  enumerable: true,
@@ -1,16 +1,16 @@
1
1
  export { ManagedNoScripts, ManagedScripts } from '../chunk-6PJTLBRR.mjs';
2
2
  import { pickManagedLlmSchemaForJsonLd } from '../chunk-H23ZT2I2.mjs';
3
3
  import { safeJsonLd } from '../chunk-662YHKWW.mjs';
4
- export { SitemapSync } from '../chunk-JOOLIHFA.mjs';
4
+ export { SitemapSync } from '../chunk-VOYRWPE3.mjs';
5
5
  import { getManagedMetadata } from '../chunk-QGV7FEUI.mjs';
6
6
  export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-QGV7FEUI.mjs';
7
7
  import { getContentBlock, getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, getEntities } from '../chunk-2CHOHLB7.mjs';
8
8
  export { getABTest, getContentBlock, getEntities, getEntityEnhancedSchema, getFAQData, getInternalLinks, getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap } from '../chunk-2CHOHLB7.mjs';
9
9
  import '../chunk-UDBUK5ZJ.mjs';
10
10
  import '../chunk-QJU6HBSK.mjs';
11
- import '../chunk-5JEZUNNA.mjs';
12
- import '../chunk-4DLCVLI2.mjs';
13
- import '../chunk-F23IBAAW.mjs';
11
+ import '../chunk-FJTER53S.mjs';
12
+ import '../chunk-BS3P5PTY.mjs';
13
+ import '../chunk-JYM4I57K.mjs';
14
14
  import '../chunk-4XPGGLVP.mjs';
15
15
  import { cache, Suspense } from 'react';
16
16
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkG7GDB4BO_js = require('../chunk-G7GDB4BO.js');
3
+ var chunkC7EVU7V7_js = require('../chunk-C7EVU7V7.js');
4
4
  var chunkQPIKPWAZ_js = require('../chunk-QPIKPWAZ.js');
5
- require('../chunk-YAFD3N2M.js');
5
+ require('../chunk-6ZDXUCAX.js');
6
6
  require('../chunk-ZSMWDLMK.js');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "resolveClientCredential", {
11
11
  enumerable: true,
12
- get: function () { return chunkG7GDB4BO_js.resolveClientCredential; }
12
+ get: function () { return chunkC7EVU7V7_js.resolveClientCredential; }
13
13
  });
14
14
  Object.defineProperty(exports, "requireServerApiConfig", {
15
15
  enumerable: true,
@@ -1,6 +1,6 @@
1
- export { resolveClientCredential } from '../chunk-6IFYPRRN.mjs';
1
+ export { resolveClientCredential } from '../chunk-LSZ6CT6U.mjs';
2
2
  export { requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-UDBUK5ZJ.mjs';
3
- import '../chunk-F23IBAAW.mjs';
3
+ import '../chunk-JYM4I57K.mjs';
4
4
  import '../chunk-4XPGGLVP.mjs';
5
5
  //# sourceMappingURL=index.mjs.map
6
6
  //# sourceMappingURL=index.mjs.map
@@ -1,47 +1,47 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkDVGGOWXD_js = require('../chunk-DVGGOWXD.js');
5
- var chunk5GQZKWVL_js = require('../chunk-5GQZKWVL.js');
4
+ var chunkO4ILWMIB_js = require('../chunk-O4ILWMIB.js');
5
+ var chunkFYCFUYPQ_js = require('../chunk-FYCFUYPQ.js');
6
6
  require('../chunk-ZSMWDLMK.js');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "ExperimentConversion", {
11
11
  enumerable: true,
12
- get: function () { return chunkDVGGOWXD_js.ExperimentConversion; }
12
+ get: function () { return chunkO4ILWMIB_js.ExperimentConversion; }
13
13
  });
14
14
  Object.defineProperty(exports, "SignalExperiment", {
15
15
  enumerable: true,
16
- get: function () { return chunkDVGGOWXD_js.SignalExperiment; }
16
+ get: function () { return chunkO4ILWMIB_js.SignalExperiment; }
17
17
  });
18
18
  Object.defineProperty(exports, "useExperimentVariant", {
19
19
  enumerable: true,
20
- get: function () { return chunkDVGGOWXD_js.useExperimentVariant; }
20
+ get: function () { return chunkO4ILWMIB_js.useExperimentVariant; }
21
21
  });
22
22
  Object.defineProperty(exports, "SignalBridge", {
23
23
  enumerable: true,
24
- get: function () { return chunk5GQZKWVL_js.SignalBridge; }
24
+ get: function () { return chunkFYCFUYPQ_js.SignalBridge; }
25
25
  });
26
26
  Object.defineProperty(exports, "useSignal", {
27
27
  enumerable: true,
28
- get: function () { return chunk5GQZKWVL_js.useSignal; }
28
+ get: function () { return chunkFYCFUYPQ_js.useSignal; }
29
29
  });
30
30
  Object.defineProperty(exports, "useSignalConfig", {
31
31
  enumerable: true,
32
- get: function () { return chunk5GQZKWVL_js.useSignalConfig; }
32
+ get: function () { return chunkFYCFUYPQ_js.useSignalConfig; }
33
33
  });
34
34
  Object.defineProperty(exports, "useSignalEvent", {
35
35
  enumerable: true,
36
- get: function () { return chunk5GQZKWVL_js.useSignalEvent; }
36
+ get: function () { return chunkFYCFUYPQ_js.useSignalEvent; }
37
37
  });
38
38
  Object.defineProperty(exports, "useSignalExperiment", {
39
39
  enumerable: true,
40
- get: function () { return chunk5GQZKWVL_js.useSignalExperiment; }
40
+ get: function () { return chunkFYCFUYPQ_js.useSignalExperiment; }
41
41
  });
42
42
  Object.defineProperty(exports, "useSignalOutcome", {
43
43
  enumerable: true,
44
- get: function () { return chunk5GQZKWVL_js.useSignalOutcome; }
44
+ get: function () { return chunkFYCFUYPQ_js.useSignalOutcome; }
45
45
  });
46
46
  //# sourceMappingURL=index.js.map
47
47
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- export { ExperimentConversion, SignalExperiment, useExperimentVariant } from '../chunk-OWFNICLM.mjs';
3
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-U2KSUWKV.mjs';
2
+ export { ExperimentConversion, SignalExperiment, useExperimentVariant } from '../chunk-EDQXJFH2.mjs';
3
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-DEVPKGCD.mjs';
4
4
  import '../chunk-4XPGGLVP.mjs';
5
5
  //# sourceMappingURL=index.mjs.map
6
6
  //# sourceMappingURL=index.mjs.map
@@ -1,60 +1,60 @@
1
1
  'use strict';
2
2
 
3
- var chunkIJ7RAV6T_js = require('../chunk-IJ7RAV6T.js');
4
- require('../chunk-FIBGXNP4.js');
5
- require('../chunk-6FKCXAZ2.js');
6
- require('../chunk-YAFD3N2M.js');
3
+ var chunkO3WBS4VY_js = require('../chunk-O3WBS4VY.js');
4
+ require('../chunk-ZQ2JTDPC.js');
5
+ require('../chunk-T3ARA52J.js');
6
+ require('../chunk-6ZDXUCAX.js');
7
7
  require('../chunk-ZSMWDLMK.js');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "BookingWidget", {
12
12
  enumerable: true,
13
- get: function () { return chunkIJ7RAV6T_js.BookingWidget; }
13
+ get: function () { return chunkO3WBS4VY_js.BookingWidget; }
14
14
  });
15
15
  Object.defineProperty(exports, "createBooking", {
16
16
  enumerable: true,
17
- get: function () { return chunkIJ7RAV6T_js.createBooking; }
17
+ get: function () { return chunkO3WBS4VY_js.createBooking; }
18
18
  });
19
19
  Object.defineProperty(exports, "createSlotHold", {
20
20
  enumerable: true,
21
- get: function () { return chunkIJ7RAV6T_js.createSlotHold; }
21
+ get: function () { return chunkO3WBS4VY_js.createSlotHold; }
22
22
  });
23
23
  Object.defineProperty(exports, "detectTimezone", {
24
24
  enumerable: true,
25
- get: function () { return chunkIJ7RAV6T_js.detectTimezone; }
25
+ get: function () { return chunkO3WBS4VY_js.detectTimezone; }
26
26
  });
27
27
  Object.defineProperty(exports, "fetchAvailability", {
28
28
  enumerable: true,
29
- get: function () { return chunkIJ7RAV6T_js.fetchAvailability; }
29
+ get: function () { return chunkO3WBS4VY_js.fetchAvailability; }
30
30
  });
31
31
  Object.defineProperty(exports, "fetchAvailableDates", {
32
32
  enumerable: true,
33
- get: function () { return chunkIJ7RAV6T_js.fetchAvailableDates; }
33
+ get: function () { return chunkO3WBS4VY_js.fetchAvailableDates; }
34
34
  });
35
35
  Object.defineProperty(exports, "fetchBookingTypeDetails", {
36
36
  enumerable: true,
37
- get: function () { return chunkIJ7RAV6T_js.fetchBookingTypeDetails; }
37
+ get: function () { return chunkO3WBS4VY_js.fetchBookingTypeDetails; }
38
38
  });
39
39
  Object.defineProperty(exports, "fetchBookingTypes", {
40
40
  enumerable: true,
41
- get: function () { return chunkIJ7RAV6T_js.fetchBookingTypes; }
41
+ get: function () { return chunkO3WBS4VY_js.fetchBookingTypes; }
42
42
  });
43
43
  Object.defineProperty(exports, "formatDate", {
44
44
  enumerable: true,
45
- get: function () { return chunkIJ7RAV6T_js.formatDate; }
45
+ get: function () { return chunkO3WBS4VY_js.formatDate; }
46
46
  });
47
47
  Object.defineProperty(exports, "formatDuration", {
48
48
  enumerable: true,
49
- get: function () { return chunkIJ7RAV6T_js.formatDuration; }
49
+ get: function () { return chunkO3WBS4VY_js.formatDuration; }
50
50
  });
51
51
  Object.defineProperty(exports, "formatTime", {
52
52
  enumerable: true,
53
- get: function () { return chunkIJ7RAV6T_js.formatTime; }
53
+ get: function () { return chunkO3WBS4VY_js.formatTime; }
54
54
  });
55
55
  Object.defineProperty(exports, "releaseSlotHold", {
56
56
  enumerable: true,
57
- get: function () { return chunkIJ7RAV6T_js.releaseSlotHold; }
57
+ get: function () { return chunkO3WBS4VY_js.releaseSlotHold; }
58
58
  });
59
59
  //# sourceMappingURL=index.js.map
60
60
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, releaseSlotHold } from '../chunk-UZEC5GJW.mjs';
2
- import '../chunk-5JEZUNNA.mjs';
3
- import '../chunk-4DLCVLI2.mjs';
4
- import '../chunk-F23IBAAW.mjs';
1
+ export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, releaseSlotHold } from '../chunk-EY2236OY.mjs';
2
+ import '../chunk-FJTER53S.mjs';
3
+ import '../chunk-BS3P5PTY.mjs';
4
+ import '../chunk-JYM4I57K.mjs';
5
5
  import '../chunk-4XPGGLVP.mjs';
6
6
  //# sourceMappingURL=index.mjs.map
7
7
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonordev/site-kit",
3
- "version": "3.6.1",
3
+ "version": "3.6.3",
4
4
  "description": "Complete client-side integration kit for Sonor - SEO, Analytics, Engage, Forms, Blog",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -1,31 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkFCCYXKGQ_js = require('./chunk-FCCYXKGQ.js');
4
- require('./chunk-HMFFAUCD.js');
5
- require('./chunk-XB57AM6T.js');
6
- require('./chunk-VJMPIRSD.js');
7
- require('./chunk-FIBGXNP4.js');
8
- require('./chunk-6FKCXAZ2.js');
9
- require('./chunk-YAFD3N2M.js');
10
- require('./chunk-ZSMWDLMK.js');
11
-
12
-
13
-
14
- Object.defineProperty(exports, "AnalyticsProvider", {
15
- enumerable: true,
16
- get: function () { return chunkFCCYXKGQ_js.AnalyticsProvider; }
17
- });
18
- Object.defineProperty(exports, "useAnalytics", {
19
- enumerable: true,
20
- get: function () { return chunkFCCYXKGQ_js.useAnalytics; }
21
- });
22
- Object.defineProperty(exports, "useAnalyticsOptional", {
23
- enumerable: true,
24
- get: function () { return chunkFCCYXKGQ_js.useAnalyticsOptional; }
25
- });
26
- Object.defineProperty(exports, "useTrackEvent", {
27
- enumerable: true,
28
- get: function () { return chunkFCCYXKGQ_js.useTrackEvent; }
29
- });
30
- //# sourceMappingURL=AnalyticsProvider-KZB62VRO.js.map
31
- //# sourceMappingURL=AnalyticsProvider-KZB62VRO.js.map
@@ -1,10 +0,0 @@
1
- export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-76C4MEK7.mjs';
2
- import './chunk-3DPXOZAU.mjs';
3
- import './chunk-AX4AROLH.mjs';
4
- import './chunk-6EDVCUAG.mjs';
5
- import './chunk-5JEZUNNA.mjs';
6
- import './chunk-4DLCVLI2.mjs';
7
- import './chunk-F23IBAAW.mjs';
8
- import './chunk-4XPGGLVP.mjs';
9
- //# sourceMappingURL=AnalyticsProvider-QW52JAUC.mjs.map
10
- //# sourceMappingURL=AnalyticsProvider-QW52JAUC.mjs.map
@@ -1,10 +0,0 @@
1
- export { ChatWidget } from './chunk-H4EJVSP6.mjs';
2
- import './chunk-JZL6VD5I.mjs';
3
- import './chunk-X3S6KXAP.mjs';
4
- import './chunk-6EDVCUAG.mjs';
5
- import './chunk-5JEZUNNA.mjs';
6
- import './chunk-4DLCVLI2.mjs';
7
- import './chunk-F23IBAAW.mjs';
8
- import './chunk-4XPGGLVP.mjs';
9
- //# sourceMappingURL=ChatWidget-I2VMNZX5.mjs.map
10
- //# sourceMappingURL=ChatWidget-I2VMNZX5.mjs.map
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkDCKWZGE4_js = require('./chunk-DCKWZGE4.js');
4
- require('./chunk-DUPINYEY.js');
5
- require('./chunk-V6NVBFEP.js');
6
- require('./chunk-VJMPIRSD.js');
7
- require('./chunk-FIBGXNP4.js');
8
- require('./chunk-6FKCXAZ2.js');
9
- require('./chunk-YAFD3N2M.js');
10
- require('./chunk-ZSMWDLMK.js');
11
-
12
-
13
-
14
- Object.defineProperty(exports, "ChatWidget", {
15
- enumerable: true,
16
- get: function () { return chunkDCKWZGE4_js.ChatWidget; }
17
- });
18
- //# sourceMappingURL=ChatWidget-RPI4XQLQ.js.map
19
- //# sourceMappingURL=ChatWidget-RPI4XQLQ.js.map
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk5Q2GTBBO_js = require('./chunk-5Q2GTBBO.js');
4
- require('./chunk-XB57AM6T.js');
5
- require('./chunk-VJMPIRSD.js');
6
- require('./chunk-FIBGXNP4.js');
7
- require('./chunk-6FKCXAZ2.js');
8
- require('./chunk-YAFD3N2M.js');
9
- require('./chunk-ZSMWDLMK.js');
10
-
11
-
12
-
13
- Object.defineProperty(exports, "EngageWidget", {
14
- enumerable: true,
15
- get: function () { return chunk5Q2GTBBO_js.EngageWidget; }
16
- });
17
- //# sourceMappingURL=EngageWidget-JMLMGLQO.js.map
18
- //# sourceMappingURL=EngageWidget-JMLMGLQO.js.map
@@ -1,9 +0,0 @@
1
- export { EngageWidget } from './chunk-CMMAOU43.mjs';
2
- import './chunk-AX4AROLH.mjs';
3
- import './chunk-6EDVCUAG.mjs';
4
- import './chunk-5JEZUNNA.mjs';
5
- import './chunk-4DLCVLI2.mjs';
6
- import './chunk-F23IBAAW.mjs';
7
- import './chunk-4XPGGLVP.mjs';
8
- //# sourceMappingURL=EngageWidget-Z3JRH3VQ.mjs.map
9
- //# sourceMappingURL=EngageWidget-Z3JRH3VQ.mjs.map
@@ -1,8 +0,0 @@
1
- export { SitemapSync } from './chunk-JOOLIHFA.mjs';
2
- import './chunk-QJU6HBSK.mjs';
3
- import './chunk-5JEZUNNA.mjs';
4
- import './chunk-4DLCVLI2.mjs';
5
- import './chunk-F23IBAAW.mjs';
6
- import './chunk-4XPGGLVP.mjs';
7
- //# sourceMappingURL=SitemapSync-APZY32SB.mjs.map
8
- //# sourceMappingURL=SitemapSync-APZY32SB.mjs.map
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkVTNDPGDP_js = require('./chunk-VTNDPGDP.js');
4
- require('./chunk-JEOKDUPQ.js');
5
- require('./chunk-FIBGXNP4.js');
6
- require('./chunk-6FKCXAZ2.js');
7
- require('./chunk-YAFD3N2M.js');
8
- require('./chunk-ZSMWDLMK.js');
9
-
10
-
11
-
12
- Object.defineProperty(exports, "SitemapSync", {
13
- enumerable: true,
14
- get: function () { return chunkVTNDPGDP_js.SitemapSync; }
15
- });
16
- //# sourceMappingURL=SitemapSync-EIT7DPHB.js.map
17
- //# sourceMappingURL=SitemapSync-EIT7DPHB.js.map
@@ -1,6 +0,0 @@
1
- // src/shared/version.ts
2
- var SITE_KIT_VERSION = "3.6.1";
3
-
4
- export { SITE_KIT_VERSION };
5
- //# sourceMappingURL=chunk-F23IBAAW.mjs.map
6
- //# sourceMappingURL=chunk-F23IBAAW.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/layout/SiteKitClientProviders.tsx"],"names":[],"mappings":"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","file":"chunk-T26I3F5V.mjs","sourcesContent":["'use client'\n\n/**\n * SiteKitClientProviders — Client Island\n *\n * This is the 'use client' boundary for SiteKitLayout.\n * It composes the client-only providers (Analytics, Engage, Signal, SitemapSync)\n * that require React context or browser APIs.\n *\n * All modules are lazy-loaded via next/dynamic so their JS is only downloaded\n * when the feature is enabled — keeping the initial bundle lightweight.\n *\n * All modules share a unified identity (visitor ID + session ID) via\n * SiteKitIdentityProvider, ensuring consistent tracking across Analytics,\n * Signal, and Engage.\n *\n * Props are passed down from the server-side SiteKitLayout component,\n * which reads env vars at render time.\n */\n\nimport React, { Suspense, useCallback, useRef, useState, type ReactNode } from 'react'\nimport dynamic from 'next/dynamic'\nimport {\n SiteKitIdentityProvider,\n getOrCreateVisitorId,\n getOrCreateSessionId,\n} from '../shared/identity'\n// Defer non-critical module mounting until the page is quiet: the lazy\n// modules below are dynamic(ssr:false) and never render on the server, but\n// rendering them during hydration still kicks off their chunk downloads +\n// mount effects inside the critical startup window. useDeferredActivation\n// holds them until window.load + idle or first interaction — the same\n// strategy as the hand-rolled per-site deferrals this replaces (upforge\n// `deferred-analytics.tsx`, TPS `DeferredAnalytics.tsx`). The hook is public\n// (`@sonordev/site-kit/client`) so sites can reuse it for their own scripts.\nimport { useDeferredActivation } from '../shared/defer'\n// Single source of truth for seeding the token manager + the __SITE_KIT_*\n// globals — shared with the public `SiteKitCredential` component that\n// non-core layouts (agency-site-kit) use. Do not re-inline it here.\nimport { publishSiteCredential, resolveSiteHost } from '../shared/publishCredential'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\n// Lazy-load feature modules — JS only downloaded when feature is enabled\nconst LazyAnalyticsProvider = dynamic(\n () => import('../analytics/AnalyticsProvider').then(m => ({ default: m.AnalyticsProvider })),\n { ssr: false },\n)\nconst LazyEngageWidget = dynamic(\n () => import('../engage/EngageWidget').then(m => ({ default: m.EngageWidget })),\n { ssr: false },\n)\nconst LazySitemapSync = dynamic(\n () => import('../SitemapSync').then(m => ({ default: m.SitemapSync })),\n { ssr: false },\n)\n// SignalBridge is imported STATICALLY, not via dynamic(ssr:false): it is a\n// tiny SSR-safe context shell that renders children immediately and\n// lazy-loads its machinery (SignalCore) as a childless sibling internally.\n// Wrapping children in a dynamic(ssr:false) component was the old SSR-bailout\n// failure mode — do not reintroduce it.\nimport { SignalBridge } from '../signal/SignalBridge'\n// Fleet heartbeat: a deferred, CHILDLESS SIBLING (like Analytics/Engage) that\n// reports this site's kit version + active modules once per session, so the\n// platform can see version drift across the fleet. Tiny and SSR-safe — renders\n// null until the shared idle gate fires; never wraps page content.\nimport { FleetHeartbeat } from '../fleet/FleetHeartbeat'\nimport type { FleetModule } from '../fleet/contract'\n\nexport interface SiteKitClientProvidersProps {\n children: ReactNode\n apiKey: string\n apiUrl: string\n projectId?: string\n analytics?: boolean | AnalyticsConfig\n engage?: boolean | EngageConfig\n signal?: boolean | SignalConfig\n sitemapSync?: boolean\n /**\n * Fleet heartbeat — reports kit version + active modules to Sonor once per\n * session so the platform can track version drift and key state across every\n * site. Default true. Deferred exactly like Analytics; never in the hydration\n * path, carries no visitor data.\n */\n fleet?: boolean\n /**\n * Defer Analytics / Engage / SitemapSync until window load + idle or first\n * interaction (default true). Pass false to restore legacy eager mounting\n * on hydration. SignalBridge is never deferred — it must apply experiment\n * variants as early as possible.\n */\n defer?: boolean\n debug?: boolean\n}\n\nexport function SiteKitClientProviders({\n children,\n apiKey,\n apiUrl,\n projectId,\n analytics = true,\n engage = true,\n signal = false,\n sitemapSync = true,\n fleet = true,\n defer = true,\n debug = false,\n}: SiteKitClientProvidersProps) {\n // One shared activation gate for all deferred siblings, so they mount in a\n // single commit instead of staggered re-renders.\n const modulesReady = useDeferredActivation(defer)\n // Hoist analytics config so the `site` dimension is resolvable up here.\n const analyticsConfig: AnalyticsConfig =\n typeof analytics === 'object' ? analytics : {}\n\n // Resolve the sub-site identifier — the dimension that lets one Sonor project\n // host many sites (e.g. truepowersystems.com + ohiopowerstudies.com under one\n // TPS project). Precedence lives in resolveSiteHost (shared contract):\n // explicit `analytics.site` > NEXT_PUBLIC_SITE_URL host > window.location.host.\n // Needed as a local too — SignalBridge and the analytics config read it below.\n const site = resolveSiteHost(analyticsConfig.site)\n\n // Seed the token manager + publish the window globals modules read from.\n // No-op on the server; runs during render so it lands before child effects.\n publishSiteCredential({ apiKey, apiUrl, site, debug })\n\n // Unified identity — single source of truth for all modules\n const [visitorId] = useState(() => getOrCreateVisitorId())\n const [sessionId] = useState(() => getOrCreateSessionId())\n\n // Page metadata bridge: Analytics writes, Signal reads\n const pageMetadataRef = useRef<Record<string, unknown> | null>(null)\n const onPageMetadata = useCallback((metadata: Record<string, unknown>) => {\n pageMetadataRef.current = metadata\n }, [])\n\n let content = <>{children}</>\n\n // Wrap with SignalBridge if enabled. Safe to wrap: the shell is SSR-safe\n // and renders children straight through — the heavy machinery mounts as a\n // childless sibling inside it. Not gated on modulesReady: experiment\n // variants must apply as early as possible.\n if (signal) {\n const signalConfig: SignalConfig =\n typeof signal === 'object' ? signal : {}\n content = (\n <SignalBridge\n enabled\n realtime={signalConfig.realtime !== false}\n experiments={signalConfig.experiments !== false}\n behaviorTracking={signalConfig.behaviorTracking !== false}\n visitorId={visitorId}\n sessionId={sessionId}\n pageMetadataRef={pageMetadataRef}\n >\n {content}\n </SignalBridge>\n )\n }\n\n // Add Analytics if enabled (renders alongside, doesn't wrap).\n //\n // CRITICAL: LazyAnalyticsProvider is dynamic(..., { ssr: false }). Wrapping\n // {content} inside an ssr:false component makes the entire page tree skip\n // server rendering — the route de-opts to 100% client rendering and the\n // hero / LCP element only paints after hydration (mobile LCP ~4s, Lighthouse\n // ~85). Analytics tracks via effects + a metadata ref, so it never needs to\n // wrap page content — mount it as a childless sibling, exactly like Engage.\n // Each deferred sibling is appended as `{modulesReady && <Module/>}` so the\n // children slot never moves in the tree — flipping ready only mounts the\n // sibling, it never remounts page content.\n if (analytics) {\n content = (\n <>\n {content}\n {modulesReady && (\n <Suspense fallback={null}>\n <LazyAnalyticsProvider\n apiUrl={apiUrl}\n apiKey={apiKey}\n site={site}\n trackPageViews={analyticsConfig.trackPageViews !== false}\n trackWebVitals={analyticsConfig.trackWebVitals !== false}\n trackScrollDepth={analyticsConfig.trackScrollDepth !== false}\n trackClicks={analyticsConfig.trackClicks !== false}\n sessionTimeout={analyticsConfig.sessionDuration}\n excludePaths={analyticsConfig.excludePaths}\n debug={debug}\n externalVisitorId={visitorId}\n externalSessionId={sessionId}\n onPageMetadata={onPageMetadata}\n />\n </Suspense>\n )}\n </>\n )\n }\n\n // Add Engage widget if enabled (renders alongside, doesn't wrap)\n if (engage) {\n const engageConfig: EngageConfig =\n typeof engage === 'object' ? engage : {}\n content = (\n <>\n {content}\n {modulesReady && (\n <LazyEngageWidget\n apiUrl={apiUrl}\n apiKey={apiKey}\n projectId={projectId}\n position={engageConfig.position || 'bottom-right'}\n zIndex={engageConfig.zIndex}\n chatEnabled={engageConfig.chatEnabled !== false}\n />\n )}\n </>\n )\n }\n\n // Add SitemapSync if enabled\n if (sitemapSync) {\n content = (\n <>\n {content}\n {modulesReady && <LazySitemapSync debug={debug} />}\n </>\n )\n }\n\n // Fleet heartbeat — childless sibling on the same modulesReady idle gate.\n // Reports the modules actually enabled on THIS layout (honest client-observable\n // set) so the platform can answer \"which version / modules is each site\n // running\". defer={false}: the modulesReady gate already handled deferral, so\n // the heartbeat fires on mount (still bounded to once per session internally).\n if (fleet) {\n const activeModules: FleetModule[] = []\n if (analytics) activeModules.push('analytics')\n if (engage) activeModules.push('engage')\n if (signal) activeModules.push('signal')\n if (sitemapSync) activeModules.push('sitemapSync')\n content = (\n <>\n {content}\n {modulesReady && (\n <FleetHeartbeat\n apiUrl={apiUrl}\n apiKey={apiKey}\n site={site}\n modules={activeModules}\n defer={false}\n debug={debug}\n />\n )}\n </>\n )\n }\n\n return (\n <SiteKitIdentityProvider visitorId={visitorId} sessionId={sessionId}>\n {content}\n </SiteKitIdentityProvider>\n )\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shared/publishCredential.ts"],"names":[],"mappings":";;;;AAqCO,SAAS,gBAAgB,YAAA,EAA+B;AAC7D,EAAA,MAAM,aACJ,OAAO,OAAA,KAAY,WAAA,GAAc,OAAA,CAAQ,IAAI,oBAAA,GAAuB,MAAA;AAEtE,EAAA,IAAI,WAAW,YAAA,IAAgB,EAAA;AAC/B,EAAA,IAAI,CAAC,YAAY,UAAA,EAAY;AAC3B,IAAA,IAAI;AACF,MAAA,QAAA,GAAW,IAAI,GAAA,CAAI,UAAU,CAAA,CAAE,IAAA;AAAA,IACjC,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,IAAI,CAAC,QAAA,IAAY,OAAO,MAAA,KAAW,WAAA,EAAa;AAC9C,IAAA,QAAA,GAAW,OAAO,QAAA,CAAS,IAAA;AAAA,EAC7B;AACA,EAAA,OAAO,iBAAA,CAAkB,QAAQ,CAAA,IAAK,EAAA;AACxC;AA0BO,SAAS,qBAAA,CAAsB;AAAA,EACpC,MAAA;AAAA,EACA,MAAA,GAAS,sBAAA;AAAA,EACT,IAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,EAAuC;AACrC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAKnC,EAAA,uBAAA,CAAwB,EAAE,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,CAAA;AACrD,EAAC,OAAe,oBAAA,GAAuB,MAAA;AACvC,EAAC,MAAA,CAAe,oBAAA,GAAuB,iBAAA,CAAkB,MAAM,CAAA;AAC/D,EAAC,OAAe,kBAAA,GAAqB,KAAA;AACrC,EAAC,MAAA,CAAe,iBAAA,GAAoB,IAAA,IAAQ,eAAA,EAAgB;AAC/D","file":"chunk-UQAG7WXA.mjs","sourcesContent":["/**\n * @sonordev/site-kit shared — Client credential + window-global publishing\n *\n * SINGLE SOURCE OF TRUTH for seeding the browser-side token manager and the\n * `window.__SITE_KIT_*` globals that every client module reads. Used by:\n *\n * - `SiteKitClientProviders` (core `SiteKitLayout`)\n * - `SiteKitCredential` (`@sonordev/site-kit/client`) — the public component\n * for layouts that are NOT core `SiteKitLayout`, e.g.\n * `@sonordev/agency-site-kit`'s `AgencySiteKitLayout`.\n *\n * Do not re-fork this. Before it existed, agency sites hand-rolled their own\n * \"set the globals on mount\" component (upforge's `UptradeSiteKitInit`), and\n * because those copies had no access to the token manager they published the\n * RAW `sonor_` key into the client bundle — the exact exposure the mint exists\n * to prevent. Any layout that puts a credential on `window` goes through here.\n *\n * Client-safe: no `server-only` guard, SSR-safe (every write is window-gated).\n * The minting half is server-only and lives in `../server/mint-site-token`.\n */\n// Leaf module, NOT '../sites/contract' — see sites/normalize.ts. Importing the\n// full contract here shipped its JSON schema to every browser that loads a\n// credential-publishing entry.\nimport { normalizeSiteHost } from '../sites/normalize'\nimport { configureSiteCredential, currentCredential } from './siteToken'\n\n/**\n * Resolve the sub-site identifier — the dimension that lets one Sonor project\n * host many sites (e.g. truepowersystems.com + ohiopowerstudies.com under one\n * TPS project). Precedence, per the platform site contract:\n * explicit `site` > NEXT_PUBLIC_SITE_URL host > window.location.host\n *\n * Normalized with the shared contract (lowercase host, no protocol/path/port)\n * so `__SITE_KIT_SITE__` matches exactly what the Sonor API stores — servers\n * re-normalize with the same rule, so this only makes the client emit the\n * canonical value. Always returns a string (possibly empty).\n */\nexport function resolveSiteHost(explicitSite?: string): string {\n const envSiteUrl =\n typeof process !== 'undefined' ? process.env.NEXT_PUBLIC_SITE_URL : undefined\n\n let resolved = explicitSite ?? ''\n if (!resolved && envSiteUrl) {\n try {\n resolved = new URL(envSiteUrl).host\n } catch {\n /* malformed URL — fall through to client-side host */\n }\n }\n if (!resolved && typeof window !== 'undefined') {\n resolved = window.location.host\n }\n return normalizeSiteHost(resolved) ?? ''\n}\n\nexport interface PublishSiteCredentialOptions {\n /**\n * The credential the layout minted server-side. In 3.2+ this is a short-lived\n * `st1.` token that `sonorFetch` refreshes transparently. A raw `sonor_` key\n * still works (2.x kit, or the mint-failed fallback) but should never be\n * routed here from a client component — it would ship the secret to the\n * browser.\n */\n apiKey?: string\n apiUrl?: string\n /** Pre-resolved sub-site host. Omit to resolve via `resolveSiteHost`. */\n site?: string\n debug?: boolean\n}\n\n/**\n * Seed the token manager and publish the `window.__SITE_KIT_*` globals.\n *\n * Called during RENDER, not in an effect: client modules read these globals in\n * their own mount effects, and effects run child-first, so an effect-based\n * publish would land after the modules that need it.\n *\n * No-op on the server.\n */\nexport function publishSiteCredential({\n apiKey,\n apiUrl = 'https://api.sonor.io',\n site,\n debug = false,\n}: PublishSiteCredentialOptions): void {\n if (typeof window === 'undefined') return\n\n // Seed the client token manager. The window global is set to the freshest\n // token held — a prior page this session may already have refreshed past the\n // seed the layout injected. In raw-key mode this is a passthrough.\n configureSiteCredential({ credential: apiKey, apiUrl })\n ;(window as any).__SITE_KIT_API_URL__ = apiUrl\n ;(window as any).__SITE_KIT_API_KEY__ = currentCredential(apiKey)\n ;(window as any).__SITE_KIT_DEBUG__ = debug\n ;(window as any).__SITE_KIT_SITE__ = site ?? resolveSiteHost()\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/layout/SiteKitClientProviders.tsx"],"names":["dynamic","useDeferredActivation","resolveSiteHost","publishSiteCredential","useState","getOrCreateVisitorId","getOrCreateSessionId","useRef","useCallback","jsx","SignalBridge","jsxs","Fragment","Suspense","FleetHeartbeat","SiteKitIdentityProvider"],"mappings":"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","file":"chunk-XEEGFMIY.js","sourcesContent":["'use client'\n\n/**\n * SiteKitClientProviders — Client Island\n *\n * This is the 'use client' boundary for SiteKitLayout.\n * It composes the client-only providers (Analytics, Engage, Signal, SitemapSync)\n * that require React context or browser APIs.\n *\n * All modules are lazy-loaded via next/dynamic so their JS is only downloaded\n * when the feature is enabled — keeping the initial bundle lightweight.\n *\n * All modules share a unified identity (visitor ID + session ID) via\n * SiteKitIdentityProvider, ensuring consistent tracking across Analytics,\n * Signal, and Engage.\n *\n * Props are passed down from the server-side SiteKitLayout component,\n * which reads env vars at render time.\n */\n\nimport React, { Suspense, useCallback, useRef, useState, type ReactNode } from 'react'\nimport dynamic from 'next/dynamic'\nimport {\n SiteKitIdentityProvider,\n getOrCreateVisitorId,\n getOrCreateSessionId,\n} from '../shared/identity'\n// Defer non-critical module mounting until the page is quiet: the lazy\n// modules below are dynamic(ssr:false) and never render on the server, but\n// rendering them during hydration still kicks off their chunk downloads +\n// mount effects inside the critical startup window. useDeferredActivation\n// holds them until window.load + idle or first interaction — the same\n// strategy as the hand-rolled per-site deferrals this replaces (upforge\n// `deferred-analytics.tsx`, TPS `DeferredAnalytics.tsx`). The hook is public\n// (`@sonordev/site-kit/client`) so sites can reuse it for their own scripts.\nimport { useDeferredActivation } from '../shared/defer'\n// Single source of truth for seeding the token manager + the __SITE_KIT_*\n// globals — shared with the public `SiteKitCredential` component that\n// non-core layouts (agency-site-kit) use. Do not re-inline it here.\nimport { publishSiteCredential, resolveSiteHost } from '../shared/publishCredential'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\n// Lazy-load feature modules — JS only downloaded when feature is enabled\nconst LazyAnalyticsProvider = dynamic(\n () => import('../analytics/AnalyticsProvider').then(m => ({ default: m.AnalyticsProvider })),\n { ssr: false },\n)\nconst LazyEngageWidget = dynamic(\n () => import('../engage/EngageWidget').then(m => ({ default: m.EngageWidget })),\n { ssr: false },\n)\nconst LazySitemapSync = dynamic(\n () => import('../SitemapSync').then(m => ({ default: m.SitemapSync })),\n { ssr: false },\n)\n// SignalBridge is imported STATICALLY, not via dynamic(ssr:false): it is a\n// tiny SSR-safe context shell that renders children immediately and\n// lazy-loads its machinery (SignalCore) as a childless sibling internally.\n// Wrapping children in a dynamic(ssr:false) component was the old SSR-bailout\n// failure mode — do not reintroduce it.\nimport { SignalBridge } from '../signal/SignalBridge'\n// Fleet heartbeat: a deferred, CHILDLESS SIBLING (like Analytics/Engage) that\n// reports this site's kit version + active modules once per session, so the\n// platform can see version drift across the fleet. Tiny and SSR-safe — renders\n// null until the shared idle gate fires; never wraps page content.\nimport { FleetHeartbeat } from '../fleet/FleetHeartbeat'\nimport type { FleetModule } from '../fleet/contract'\n\nexport interface SiteKitClientProvidersProps {\n children: ReactNode\n apiKey: string\n apiUrl: string\n projectId?: string\n analytics?: boolean | AnalyticsConfig\n engage?: boolean | EngageConfig\n signal?: boolean | SignalConfig\n sitemapSync?: boolean\n /**\n * Fleet heartbeat — reports kit version + active modules to Sonor once per\n * session so the platform can track version drift and key state across every\n * site. Default true. Deferred exactly like Analytics; never in the hydration\n * path, carries no visitor data.\n */\n fleet?: boolean\n /**\n * Defer Analytics / Engage / SitemapSync until window load + idle or first\n * interaction (default true). Pass false to restore legacy eager mounting\n * on hydration. SignalBridge is never deferred — it must apply experiment\n * variants as early as possible.\n */\n defer?: boolean\n debug?: boolean\n}\n\nexport function SiteKitClientProviders({\n children,\n apiKey,\n apiUrl,\n projectId,\n analytics = true,\n engage = true,\n signal = false,\n sitemapSync = true,\n fleet = true,\n defer = true,\n debug = false,\n}: SiteKitClientProvidersProps) {\n // One shared activation gate for all deferred siblings, so they mount in a\n // single commit instead of staggered re-renders.\n const modulesReady = useDeferredActivation(defer)\n // Hoist analytics config so the `site` dimension is resolvable up here.\n const analyticsConfig: AnalyticsConfig =\n typeof analytics === 'object' ? analytics : {}\n\n // Resolve the sub-site identifier — the dimension that lets one Sonor project\n // host many sites (e.g. truepowersystems.com + ohiopowerstudies.com under one\n // TPS project). Precedence lives in resolveSiteHost (shared contract):\n // explicit `analytics.site` > NEXT_PUBLIC_SITE_URL host > window.location.host.\n // Needed as a local too — SignalBridge and the analytics config read it below.\n const site = resolveSiteHost(analyticsConfig.site)\n\n // Seed the token manager + publish the window globals modules read from.\n // No-op on the server; runs during render so it lands before child effects.\n publishSiteCredential({ apiKey, apiUrl, site, debug })\n\n // Unified identity — single source of truth for all modules\n const [visitorId] = useState(() => getOrCreateVisitorId())\n const [sessionId] = useState(() => getOrCreateSessionId())\n\n // Page metadata bridge: Analytics writes, Signal reads\n const pageMetadataRef = useRef<Record<string, unknown> | null>(null)\n const onPageMetadata = useCallback((metadata: Record<string, unknown>) => {\n pageMetadataRef.current = metadata\n }, [])\n\n let content = <>{children}</>\n\n // Wrap with SignalBridge if enabled. Safe to wrap: the shell is SSR-safe\n // and renders children straight through — the heavy machinery mounts as a\n // childless sibling inside it. Not gated on modulesReady: experiment\n // variants must apply as early as possible.\n if (signal) {\n const signalConfig: SignalConfig =\n typeof signal === 'object' ? signal : {}\n content = (\n <SignalBridge\n enabled\n realtime={signalConfig.realtime !== false}\n experiments={signalConfig.experiments !== false}\n behaviorTracking={signalConfig.behaviorTracking !== false}\n visitorId={visitorId}\n sessionId={sessionId}\n pageMetadataRef={pageMetadataRef}\n >\n {content}\n </SignalBridge>\n )\n }\n\n // Add Analytics if enabled (renders alongside, doesn't wrap).\n //\n // CRITICAL: LazyAnalyticsProvider is dynamic(..., { ssr: false }). Wrapping\n // {content} inside an ssr:false component makes the entire page tree skip\n // server rendering — the route de-opts to 100% client rendering and the\n // hero / LCP element only paints after hydration (mobile LCP ~4s, Lighthouse\n // ~85). Analytics tracks via effects + a metadata ref, so it never needs to\n // wrap page content — mount it as a childless sibling, exactly like Engage.\n // Each deferred sibling is appended as `{modulesReady && <Module/>}` so the\n // children slot never moves in the tree — flipping ready only mounts the\n // sibling, it never remounts page content.\n if (analytics) {\n content = (\n <>\n {content}\n {modulesReady && (\n <Suspense fallback={null}>\n <LazyAnalyticsProvider\n apiUrl={apiUrl}\n apiKey={apiKey}\n site={site}\n trackPageViews={analyticsConfig.trackPageViews !== false}\n trackWebVitals={analyticsConfig.trackWebVitals !== false}\n trackScrollDepth={analyticsConfig.trackScrollDepth !== false}\n trackClicks={analyticsConfig.trackClicks !== false}\n sessionTimeout={analyticsConfig.sessionDuration}\n excludePaths={analyticsConfig.excludePaths}\n debug={debug}\n externalVisitorId={visitorId}\n externalSessionId={sessionId}\n onPageMetadata={onPageMetadata}\n />\n </Suspense>\n )}\n </>\n )\n }\n\n // Add Engage widget if enabled (renders alongside, doesn't wrap)\n if (engage) {\n const engageConfig: EngageConfig =\n typeof engage === 'object' ? engage : {}\n content = (\n <>\n {content}\n {modulesReady && (\n <LazyEngageWidget\n apiUrl={apiUrl}\n apiKey={apiKey}\n projectId={projectId}\n position={engageConfig.position || 'bottom-right'}\n zIndex={engageConfig.zIndex}\n chatEnabled={engageConfig.chatEnabled !== false}\n />\n )}\n </>\n )\n }\n\n // Add SitemapSync if enabled\n if (sitemapSync) {\n content = (\n <>\n {content}\n {modulesReady && <LazySitemapSync debug={debug} />}\n </>\n )\n }\n\n // Fleet heartbeat — childless sibling on the same modulesReady idle gate.\n // Reports the modules actually enabled on THIS layout (honest client-observable\n // set) so the platform can answer \"which version / modules is each site\n // running\". defer={false}: the modulesReady gate already handled deferral, so\n // the heartbeat fires on mount (still bounded to once per session internally).\n if (fleet) {\n const activeModules: FleetModule[] = []\n if (analytics) activeModules.push('analytics')\n if (engage) activeModules.push('engage')\n if (signal) activeModules.push('signal')\n if (sitemapSync) activeModules.push('sitemapSync')\n content = (\n <>\n {content}\n {modulesReady && (\n <FleetHeartbeat\n apiUrl={apiUrl}\n apiKey={apiKey}\n site={site}\n modules={activeModules}\n defer={false}\n debug={debug}\n />\n )}\n </>\n )\n }\n\n return (\n <SiteKitIdentityProvider visitorId={visitorId} sessionId={sessionId}>\n {content}\n </SiteKitIdentityProvider>\n )\n}\n"]}
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- // src/shared/version.ts
4
- var SITE_KIT_VERSION = "3.6.1";
5
-
6
- exports.SITE_KIT_VERSION = SITE_KIT_VERSION;
7
- //# sourceMappingURL=chunk-YAFD3N2M.js.map
8
- //# sourceMappingURL=chunk-YAFD3N2M.js.map