@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/index.js CHANGED
@@ -1,24 +1,24 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkEU2UGO25_js = require('./chunk-EU2UGO25.js');
4
- var chunkIJ7RAV6T_js = require('./chunk-IJ7RAV6T.js');
4
+ var chunkO3WBS4VY_js = require('./chunk-O3WBS4VY.js');
5
5
  var chunkW6K7MQCC_js = require('./chunk-W6K7MQCC.js');
6
6
  require('./chunk-JP5WGL75.js');
7
- var chunkDCD6VPOO_js = require('./chunk-DCD6VPOO.js');
7
+ var chunk5OJ36D7M_js = require('./chunk-5OJ36D7M.js');
8
8
  require('./chunk-GCPPXUAI.js');
9
9
  var chunkEHJANA5C_js = require('./chunk-EHJANA5C.js');
10
10
  var chunkGSRT66PA_js = require('./chunk-GSRT66PA.js');
11
- var chunkDVGGOWXD_js = require('./chunk-DVGGOWXD.js');
12
- var chunk5GQZKWVL_js = require('./chunk-5GQZKWVL.js');
13
- var chunkRPSMRZTG_js = require('./chunk-RPSMRZTG.js');
14
- require('./chunk-CTK2KIUL.js');
15
- require('./chunk-FCCYXKGQ.js');
11
+ var chunkO4ILWMIB_js = require('./chunk-O4ILWMIB.js');
12
+ var chunkFYCFUYPQ_js = require('./chunk-FYCFUYPQ.js');
13
+ var chunk7KIXGDUP_js = require('./chunk-7KIXGDUP.js');
14
+ require('./chunk-PVRE3PYC.js');
15
+ require('./chunk-GR4YKNFX.js');
16
16
  require('./chunk-HMFFAUCD.js');
17
17
  require('./chunk-XB57AM6T.js');
18
18
  require('./chunk-VJMPIRSD.js');
19
- var chunkFIBGXNP4_js = require('./chunk-FIBGXNP4.js');
20
- require('./chunk-6FKCXAZ2.js');
21
- require('./chunk-YAFD3N2M.js');
19
+ var chunkZQ2JTDPC_js = require('./chunk-ZQ2JTDPC.js');
20
+ require('./chunk-T3ARA52J.js');
21
+ require('./chunk-6ZDXUCAX.js');
22
22
  require('./chunk-ZSMWDLMK.js');
23
23
  var react = require('react');
24
24
  var jsxRuntime = require('react/jsx-runtime');
@@ -36,7 +36,7 @@ async function apiGet(endpoint) {
36
36
  return null;
37
37
  }
38
38
  try {
39
- const response = await chunkFIBGXNP4_js.sonorFetch(
39
+ const response = await chunkZQ2JTDPC_js.sonorFetch(
40
40
  `${apiUrl}${endpoint}`,
41
41
  { method: "GET" },
42
42
  { apiKey, retries: 0 }
@@ -173,51 +173,51 @@ Object.defineProperty(exports, "landingPageMetadata", {
173
173
  });
174
174
  Object.defineProperty(exports, "BookingWidget", {
175
175
  enumerable: true,
176
- get: function () { return chunkIJ7RAV6T_js.BookingWidget; }
176
+ get: function () { return chunkO3WBS4VY_js.BookingWidget; }
177
177
  });
178
178
  Object.defineProperty(exports, "createBooking", {
179
179
  enumerable: true,
180
- get: function () { return chunkIJ7RAV6T_js.createBooking; }
180
+ get: function () { return chunkO3WBS4VY_js.createBooking; }
181
181
  });
182
182
  Object.defineProperty(exports, "createSlotHold", {
183
183
  enumerable: true,
184
- get: function () { return chunkIJ7RAV6T_js.createSlotHold; }
184
+ get: function () { return chunkO3WBS4VY_js.createSlotHold; }
185
185
  });
186
186
  Object.defineProperty(exports, "detectTimezone", {
187
187
  enumerable: true,
188
- get: function () { return chunkIJ7RAV6T_js.detectTimezone; }
188
+ get: function () { return chunkO3WBS4VY_js.detectTimezone; }
189
189
  });
190
190
  Object.defineProperty(exports, "fetchAvailability", {
191
191
  enumerable: true,
192
- get: function () { return chunkIJ7RAV6T_js.fetchAvailability; }
192
+ get: function () { return chunkO3WBS4VY_js.fetchAvailability; }
193
193
  });
194
194
  Object.defineProperty(exports, "fetchAvailableDates", {
195
195
  enumerable: true,
196
- get: function () { return chunkIJ7RAV6T_js.fetchAvailableDates; }
196
+ get: function () { return chunkO3WBS4VY_js.fetchAvailableDates; }
197
197
  });
198
198
  Object.defineProperty(exports, "fetchBookingTypeDetails", {
199
199
  enumerable: true,
200
- get: function () { return chunkIJ7RAV6T_js.fetchBookingTypeDetails; }
200
+ get: function () { return chunkO3WBS4VY_js.fetchBookingTypeDetails; }
201
201
  });
202
202
  Object.defineProperty(exports, "fetchBookingTypes", {
203
203
  enumerable: true,
204
- get: function () { return chunkIJ7RAV6T_js.fetchBookingTypes; }
204
+ get: function () { return chunkO3WBS4VY_js.fetchBookingTypes; }
205
205
  });
206
206
  Object.defineProperty(exports, "formatBookingDate", {
207
207
  enumerable: true,
208
- get: function () { return chunkIJ7RAV6T_js.formatDate; }
208
+ get: function () { return chunkO3WBS4VY_js.formatDate; }
209
209
  });
210
210
  Object.defineProperty(exports, "formatBookingTime", {
211
211
  enumerable: true,
212
- get: function () { return chunkIJ7RAV6T_js.formatTime; }
212
+ get: function () { return chunkO3WBS4VY_js.formatTime; }
213
213
  });
214
214
  Object.defineProperty(exports, "formatDuration", {
215
215
  enumerable: true,
216
- get: function () { return chunkIJ7RAV6T_js.formatDuration; }
216
+ get: function () { return chunkO3WBS4VY_js.formatDuration; }
217
217
  });
218
218
  Object.defineProperty(exports, "releaseSlotHold", {
219
219
  enumerable: true,
220
- get: function () { return chunkIJ7RAV6T_js.releaseSlotHold; }
220
+ get: function () { return chunkO3WBS4VY_js.releaseSlotHold; }
221
221
  });
222
222
  Object.defineProperty(exports, "clearRedirectCache", {
223
223
  enumerable: true,
@@ -237,31 +237,31 @@ Object.defineProperty(exports, "handleManagedRedirects", {
237
237
  });
238
238
  Object.defineProperty(exports, "ManagedImage", {
239
239
  enumerable: true,
240
- get: function () { return chunkDCD6VPOO_js.ManagedImage; }
240
+ get: function () { return chunk5OJ36D7M_js.ManagedImage; }
241
241
  });
242
242
  Object.defineProperty(exports, "assignImageToSlot", {
243
243
  enumerable: true,
244
- get: function () { return chunkDCD6VPOO_js.assignImageToSlot; }
244
+ get: function () { return chunk5OJ36D7M_js.assignImageToSlot; }
245
245
  });
246
246
  Object.defineProperty(exports, "clearImageSlot", {
247
247
  enumerable: true,
248
- get: function () { return chunkDCD6VPOO_js.clearImageSlot; }
248
+ get: function () { return chunk5OJ36D7M_js.clearImageSlot; }
249
249
  });
250
250
  Object.defineProperty(exports, "fetchManagedImage", {
251
251
  enumerable: true,
252
- get: function () { return chunkDCD6VPOO_js.fetchManagedImage; }
252
+ get: function () { return chunk5OJ36D7M_js.fetchManagedImage; }
253
253
  });
254
254
  Object.defineProperty(exports, "fetchManagedImages", {
255
255
  enumerable: true,
256
- get: function () { return chunkDCD6VPOO_js.fetchManagedImages; }
256
+ get: function () { return chunk5OJ36D7M_js.fetchManagedImages; }
257
257
  });
258
258
  Object.defineProperty(exports, "listImageFiles", {
259
259
  enumerable: true,
260
- get: function () { return chunkDCD6VPOO_js.listImageFiles; }
260
+ get: function () { return chunk5OJ36D7M_js.listImageFiles; }
261
261
  });
262
262
  Object.defineProperty(exports, "uploadImage", {
263
263
  enumerable: true,
264
- get: function () { return chunkDCD6VPOO_js.uploadImage; }
264
+ get: function () { return chunk5OJ36D7M_js.uploadImage; }
265
265
  });
266
266
  Object.defineProperty(exports, "TestimonialSection", {
267
267
  enumerable: true,
@@ -277,139 +277,139 @@ Object.defineProperty(exports, "fetchReviews", {
277
277
  });
278
278
  Object.defineProperty(exports, "ExperimentConversion", {
279
279
  enumerable: true,
280
- get: function () { return chunkDVGGOWXD_js.ExperimentConversion; }
280
+ get: function () { return chunkO4ILWMIB_js.ExperimentConversion; }
281
281
  });
282
282
  Object.defineProperty(exports, "SignalExperiment", {
283
283
  enumerable: true,
284
- get: function () { return chunkDVGGOWXD_js.SignalExperiment; }
284
+ get: function () { return chunkO4ILWMIB_js.SignalExperiment; }
285
285
  });
286
286
  Object.defineProperty(exports, "useExperimentVariant", {
287
287
  enumerable: true,
288
- get: function () { return chunkDVGGOWXD_js.useExperimentVariant; }
288
+ get: function () { return chunkO4ILWMIB_js.useExperimentVariant; }
289
289
  });
290
290
  Object.defineProperty(exports, "SignalBridge", {
291
291
  enumerable: true,
292
- get: function () { return chunk5GQZKWVL_js.SignalBridge; }
292
+ get: function () { return chunkFYCFUYPQ_js.SignalBridge; }
293
293
  });
294
294
  Object.defineProperty(exports, "useSignal", {
295
295
  enumerable: true,
296
- get: function () { return chunk5GQZKWVL_js.useSignal; }
296
+ get: function () { return chunkFYCFUYPQ_js.useSignal; }
297
297
  });
298
298
  Object.defineProperty(exports, "useSignalConfig", {
299
299
  enumerable: true,
300
- get: function () { return chunk5GQZKWVL_js.useSignalConfig; }
300
+ get: function () { return chunkFYCFUYPQ_js.useSignalConfig; }
301
301
  });
302
302
  Object.defineProperty(exports, "useSignalEvent", {
303
303
  enumerable: true,
304
- get: function () { return chunk5GQZKWVL_js.useSignalEvent; }
304
+ get: function () { return chunkFYCFUYPQ_js.useSignalEvent; }
305
305
  });
306
306
  Object.defineProperty(exports, "useSignalExperiment", {
307
307
  enumerable: true,
308
- get: function () { return chunk5GQZKWVL_js.useSignalExperiment; }
308
+ get: function () { return chunkFYCFUYPQ_js.useSignalExperiment; }
309
309
  });
310
310
  Object.defineProperty(exports, "useSignalOutcome", {
311
311
  enumerable: true,
312
- get: function () { return chunk5GQZKWVL_js.useSignalOutcome; }
312
+ get: function () { return chunkFYCFUYPQ_js.useSignalOutcome; }
313
313
  });
314
314
  Object.defineProperty(exports, "CalendarView", {
315
315
  enumerable: true,
316
- get: function () { return chunkRPSMRZTG_js.CalendarView; }
316
+ get: function () { return chunk7KIXGDUP_js.CalendarView; }
317
317
  });
318
318
  Object.defineProperty(exports, "CheckoutForm", {
319
319
  enumerable: true,
320
- get: function () { return chunkRPSMRZTG_js.CheckoutForm; }
320
+ get: function () { return chunk7KIXGDUP_js.CheckoutForm; }
321
321
  });
322
322
  Object.defineProperty(exports, "EventCalendar", {
323
323
  enumerable: true,
324
- get: function () { return chunkRPSMRZTG_js.EventCalendar; }
324
+ get: function () { return chunk7KIXGDUP_js.EventCalendar; }
325
325
  });
326
326
  Object.defineProperty(exports, "EventCheckout", {
327
327
  enumerable: true,
328
- get: function () { return chunkRPSMRZTG_js.EventCheckout; }
328
+ get: function () { return chunk7KIXGDUP_js.EventCheckout; }
329
329
  });
330
330
  Object.defineProperty(exports, "EventEmbed", {
331
331
  enumerable: true,
332
- get: function () { return chunkRPSMRZTG_js.EventEmbed; }
332
+ get: function () { return chunk7KIXGDUP_js.EventEmbed; }
333
333
  });
334
334
  Object.defineProperty(exports, "EventModal", {
335
335
  enumerable: true,
336
- get: function () { return chunkRPSMRZTG_js.EventModal; }
336
+ get: function () { return chunk7KIXGDUP_js.EventModal; }
337
337
  });
338
338
  Object.defineProperty(exports, "EventTile", {
339
339
  enumerable: true,
340
- get: function () { return chunkRPSMRZTG_js.EventTile; }
340
+ get: function () { return chunk7KIXGDUP_js.EventTile; }
341
341
  });
342
342
  Object.defineProperty(exports, "OfferingCard", {
343
343
  enumerable: true,
344
- get: function () { return chunkRPSMRZTG_js.OfferingCard; }
344
+ get: function () { return chunk7KIXGDUP_js.OfferingCard; }
345
345
  });
346
346
  Object.defineProperty(exports, "OfferingList", {
347
347
  enumerable: true,
348
- get: function () { return chunkRPSMRZTG_js.OfferingList; }
348
+ get: function () { return chunk7KIXGDUP_js.OfferingList; }
349
349
  });
350
350
  Object.defineProperty(exports, "ProductEmbed", {
351
351
  enumerable: true,
352
- get: function () { return chunkRPSMRZTG_js.ProductEmbed; }
352
+ get: function () { return chunk7KIXGDUP_js.ProductEmbed; }
353
353
  });
354
354
  Object.defineProperty(exports, "RegistrationForm", {
355
355
  enumerable: true,
356
- get: function () { return chunkRPSMRZTG_js.RegistrationForm; }
356
+ get: function () { return chunk7KIXGDUP_js.RegistrationForm; }
357
357
  });
358
358
  Object.defineProperty(exports, "UpcomingEvents", {
359
359
  enumerable: true,
360
- get: function () { return chunkRPSMRZTG_js.UpcomingEvents; }
360
+ get: function () { return chunk7KIXGDUP_js.UpcomingEvents; }
361
361
  });
362
362
  Object.defineProperty(exports, "createCheckoutSession", {
363
363
  enumerable: true,
364
- get: function () { return chunkRPSMRZTG_js.createCheckoutSession; }
364
+ get: function () { return chunk7KIXGDUP_js.createCheckoutSession; }
365
365
  });
366
366
  Object.defineProperty(exports, "fetchNextEvent", {
367
367
  enumerable: true,
368
- get: function () { return chunkRPSMRZTG_js.fetchNextEvent; }
368
+ get: function () { return chunk7KIXGDUP_js.fetchNextEvent; }
369
369
  });
370
370
  Object.defineProperty(exports, "fetchOffering", {
371
371
  enumerable: true,
372
- get: function () { return chunkRPSMRZTG_js.fetchOffering; }
372
+ get: function () { return chunk7KIXGDUP_js.fetchOffering; }
373
373
  });
374
374
  Object.defineProperty(exports, "fetchOfferings", {
375
375
  enumerable: true,
376
- get: function () { return chunkRPSMRZTG_js.fetchOfferings; }
376
+ get: function () { return chunk7KIXGDUP_js.fetchOfferings; }
377
377
  });
378
378
  Object.defineProperty(exports, "fetchProducts", {
379
379
  enumerable: true,
380
- get: function () { return chunkRPSMRZTG_js.fetchProducts; }
380
+ get: function () { return chunk7KIXGDUP_js.fetchProducts; }
381
381
  });
382
382
  Object.defineProperty(exports, "fetchServices", {
383
383
  enumerable: true,
384
- get: function () { return chunkRPSMRZTG_js.fetchServices; }
384
+ get: function () { return chunk7KIXGDUP_js.fetchServices; }
385
385
  });
386
386
  Object.defineProperty(exports, "fetchUpcomingEvents", {
387
387
  enumerable: true,
388
- get: function () { return chunkRPSMRZTG_js.fetchUpcomingEvents; }
388
+ get: function () { return chunk7KIXGDUP_js.fetchUpcomingEvents; }
389
389
  });
390
390
  Object.defineProperty(exports, "formatDate", {
391
391
  enumerable: true,
392
- get: function () { return chunkRPSMRZTG_js.formatDate; }
392
+ get: function () { return chunk7KIXGDUP_js.formatDate; }
393
393
  });
394
394
  Object.defineProperty(exports, "formatDateTime", {
395
395
  enumerable: true,
396
- get: function () { return chunkRPSMRZTG_js.formatDateTime; }
396
+ get: function () { return chunk7KIXGDUP_js.formatDateTime; }
397
397
  });
398
398
  Object.defineProperty(exports, "formatPrice", {
399
399
  enumerable: true,
400
- get: function () { return chunkRPSMRZTG_js.formatPrice; }
400
+ get: function () { return chunk7KIXGDUP_js.formatPrice; }
401
401
  });
402
402
  Object.defineProperty(exports, "getOfferingUrl", {
403
403
  enumerable: true,
404
- get: function () { return chunkRPSMRZTG_js.getOfferingUrl; }
404
+ get: function () { return chunk7KIXGDUP_js.getOfferingUrl; }
405
405
  });
406
406
  Object.defineProperty(exports, "registerForEvent", {
407
407
  enumerable: true,
408
- get: function () { return chunkRPSMRZTG_js.registerForEvent; }
408
+ get: function () { return chunk7KIXGDUP_js.registerForEvent; }
409
409
  });
410
410
  Object.defineProperty(exports, "useEventModal", {
411
411
  enumerable: true,
412
- get: function () { return chunkRPSMRZTG_js.useEventModal; }
412
+ get: function () { return chunk7KIXGDUP_js.useEventModal; }
413
413
  });
414
414
  exports.AffiliateCard = AffiliateCard;
415
415
  exports.AffiliatesWidget = AffiliatesWidget;
package/dist/index.mjs CHANGED
@@ -1,22 +1,22 @@
1
1
  export { LandingPage, landingPageMetadata } from './chunk-IBMOX3YE.mjs';
2
- export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate as formatBookingDate, formatTime as formatBookingTime, formatDuration, releaseSlotHold } from './chunk-UZEC5GJW.mjs';
2
+ export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate as formatBookingDate, formatTime as formatBookingTime, formatDuration, releaseSlotHold } from './chunk-EY2236OY.mjs';
3
3
  export { clearRedirectCache, fetchRedirectRules, generateNextRedirects, handleManagedRedirects } from './chunk-7LAOWIWE.mjs';
4
4
  import './chunk-B22WSN4L.mjs';
5
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from './chunk-PBS5LUTH.mjs';
5
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from './chunk-KYYSS5L7.mjs';
6
6
  import './chunk-CU6OGBKK.mjs';
7
7
  export { TestimonialSection } from './chunk-VIGRGMWR.mjs';
8
8
  export { fetchReviewStats, fetchReviews } from './chunk-MU7DTEUF.mjs';
9
- export { ExperimentConversion, SignalExperiment, useExperimentVariant } from './chunk-OWFNICLM.mjs';
10
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from './chunk-U2KSUWKV.mjs';
11
- export { CalendarView, CheckoutForm, EventCalendar, EventCheckout, EventEmbed, EventModal, EventTile, OfferingCard, OfferingList, ProductEmbed, RegistrationForm, UpcomingEvents, createCheckoutSession, fetchNextEvent, fetchOffering, fetchOfferings, fetchProducts, fetchServices, fetchUpcomingEvents, formatDate, formatDateTime, formatPrice, getOfferingUrl, registerForEvent, useEventModal } from './chunk-DKFI4RSH.mjs';
12
- import './chunk-JGRWGBXG.mjs';
13
- import './chunk-76C4MEK7.mjs';
9
+ export { ExperimentConversion, SignalExperiment, useExperimentVariant } from './chunk-EDQXJFH2.mjs';
10
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from './chunk-DEVPKGCD.mjs';
11
+ export { CalendarView, CheckoutForm, EventCalendar, EventCheckout, EventEmbed, EventModal, EventTile, OfferingCard, OfferingList, ProductEmbed, RegistrationForm, UpcomingEvents, createCheckoutSession, fetchNextEvent, fetchOffering, fetchOfferings, fetchProducts, fetchServices, fetchUpcomingEvents, formatDate, formatDateTime, formatPrice, getOfferingUrl, registerForEvent, useEventModal } from './chunk-WQXSILFH.mjs';
12
+ import './chunk-XS2COTTD.mjs';
13
+ import './chunk-KEGWCBLW.mjs';
14
14
  import './chunk-3DPXOZAU.mjs';
15
15
  import './chunk-AX4AROLH.mjs';
16
16
  import './chunk-6EDVCUAG.mjs';
17
- import { sonorFetch } from './chunk-5JEZUNNA.mjs';
18
- import './chunk-4DLCVLI2.mjs';
19
- import './chunk-F23IBAAW.mjs';
17
+ import { sonorFetch } from './chunk-FJTER53S.mjs';
18
+ import './chunk-BS3P5PTY.mjs';
19
+ import './chunk-JYM4I57K.mjs';
20
20
  import './chunk-4XPGGLVP.mjs';
21
21
  import { useState, useEffect } from 'react';
22
22
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -26,7 +26,9 @@ interface SiteKitClientProvidersProps {
26
26
  */
27
27
  defer?: boolean;
28
28
  debug?: boolean;
29
+ /** Browser-safe Google Maps key, resolved server-side by SiteKitLayout. */
30
+ mapsBrowserKey?: string;
29
31
  }
30
- declare function SiteKitClientProviders({ children, apiKey, apiUrl, projectId, analytics, engage, signal, sitemapSync, fleet, defer, debug, }: SiteKitClientProvidersProps): react_jsx_runtime.JSX.Element;
32
+ declare function SiteKitClientProviders({ children, apiKey, apiUrl, projectId, analytics, engage, signal, sitemapSync, fleet, defer, debug, mapsBrowserKey, }: SiteKitClientProvidersProps): react_jsx_runtime.JSX.Element;
31
33
 
32
34
  export { SiteKitClientProviders, type SiteKitClientProvidersProps };
@@ -26,7 +26,9 @@ interface SiteKitClientProvidersProps {
26
26
  */
27
27
  defer?: boolean;
28
28
  debug?: boolean;
29
+ /** Browser-safe Google Maps key, resolved server-side by SiteKitLayout. */
30
+ mapsBrowserKey?: string;
29
31
  }
30
- declare function SiteKitClientProviders({ children, apiKey, apiUrl, projectId, analytics, engage, signal, sitemapSync, fleet, defer, debug, }: SiteKitClientProvidersProps): react_jsx_runtime.JSX.Element;
32
+ declare function SiteKitClientProviders({ children, apiKey, apiUrl, projectId, analytics, engage, signal, sitemapSync, fleet, defer, debug, mapsBrowserKey, }: SiteKitClientProvidersProps): react_jsx_runtime.JSX.Element;
31
33
 
32
34
  export { SiteKitClientProviders, type SiteKitClientProvidersProps };
@@ -1,25 +1,25 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkXEEGFMIY_js = require('../chunk-XEEGFMIY.js');
5
- require('../chunk-OUHCQEFZ.js');
6
- require('../chunk-NHAWEWSI.js');
4
+ var chunkTYYTM4WC_js = require('../chunk-TYYTM4WC.js');
5
+ require('../chunk-OYT6SFLM.js');
6
+ require('../chunk-VZF3NFCY.js');
7
7
  require('../chunk-HGNSJXWT.js');
8
8
  require('../chunk-Q2NBD54V.js');
9
9
  require('../chunk-NB4MK2Q5.js');
10
- require('../chunk-5GQZKWVL.js');
10
+ require('../chunk-FYCFUYPQ.js');
11
11
  require('../chunk-XB57AM6T.js');
12
12
  require('../chunk-VJMPIRSD.js');
13
- require('../chunk-FIBGXNP4.js');
14
- require('../chunk-6FKCXAZ2.js');
15
- require('../chunk-YAFD3N2M.js');
13
+ require('../chunk-ZQ2JTDPC.js');
14
+ require('../chunk-T3ARA52J.js');
15
+ require('../chunk-6ZDXUCAX.js');
16
16
  require('../chunk-ZSMWDLMK.js');
17
17
 
18
18
 
19
19
 
20
20
  Object.defineProperty(exports, "SiteKitClientProviders", {
21
21
  enumerable: true,
22
- get: function () { return chunkXEEGFMIY_js.SiteKitClientProviders; }
22
+ get: function () { return chunkTYYTM4WC_js.SiteKitClientProviders; }
23
23
  });
24
24
  //# sourceMappingURL=client.js.map
25
25
  //# sourceMappingURL=client.js.map
@@ -1,16 +1,16 @@
1
1
  'use client';
2
- export { SiteKitClientProviders } from '../chunk-T26I3F5V.mjs';
3
- import '../chunk-UQAG7WXA.mjs';
4
- import '../chunk-5ATLDT36.mjs';
2
+ export { SiteKitClientProviders } from '../chunk-PUH6YPZY.mjs';
3
+ import '../chunk-6B3DEFHU.mjs';
4
+ import '../chunk-2O2PZII5.mjs';
5
5
  import '../chunk-ZVBLXXNJ.mjs';
6
6
  import '../chunk-ZPLN537Q.mjs';
7
7
  import '../chunk-NI7OY4FW.mjs';
8
- import '../chunk-U2KSUWKV.mjs';
8
+ import '../chunk-DEVPKGCD.mjs';
9
9
  import '../chunk-AX4AROLH.mjs';
10
10
  import '../chunk-6EDVCUAG.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
  //# sourceMappingURL=client.mjs.map
16
16
  //# sourceMappingURL=client.mjs.map
@@ -1,21 +1,21 @@
1
1
  'use strict';
2
2
 
3
- var chunkXEEGFMIY_js = require('../chunk-XEEGFMIY.js');
4
- require('../chunk-OUHCQEFZ.js');
5
- require('../chunk-NHAWEWSI.js');
3
+ var chunkTYYTM4WC_js = require('../chunk-TYYTM4WC.js');
4
+ require('../chunk-OYT6SFLM.js');
5
+ require('../chunk-VZF3NFCY.js');
6
6
  require('../chunk-HGNSJXWT.js');
7
7
  require('../chunk-Q2NBD54V.js');
8
8
  require('../chunk-NB4MK2Q5.js');
9
9
  var chunkGCPPXUAI_js = require('../chunk-GCPPXUAI.js');
10
- require('../chunk-5GQZKWVL.js');
11
- var chunkG7GDB4BO_js = require('../chunk-G7GDB4BO.js');
10
+ require('../chunk-FYCFUYPQ.js');
11
+ var chunkC7EVU7V7_js = require('../chunk-C7EVU7V7.js');
12
12
  var chunkDV2LJYFD_js = require('../chunk-DV2LJYFD.js');
13
13
  var chunkQPIKPWAZ_js = require('../chunk-QPIKPWAZ.js');
14
14
  require('../chunk-XB57AM6T.js');
15
15
  require('../chunk-VJMPIRSD.js');
16
- require('../chunk-FIBGXNP4.js');
17
- require('../chunk-6FKCXAZ2.js');
18
- require('../chunk-YAFD3N2M.js');
16
+ require('../chunk-ZQ2JTDPC.js');
17
+ require('../chunk-T3ARA52J.js');
18
+ require('../chunk-6ZDXUCAX.js');
19
19
  require('../chunk-ZSMWDLMK.js');
20
20
  var jsxRuntime = require('react/jsx-runtime');
21
21
 
@@ -43,17 +43,18 @@ async function SiteKitLayout({
43
43
  );
44
44
  }
45
45
  const apiOrigin = chunkQPIKPWAZ_js.resolveApiOrigin(resolvedApiUrl);
46
- const clientCredential = await chunkG7GDB4BO_js.resolveClientCredential(resolvedApiKey, resolvedApiUrl);
46
+ const clientCredential = await chunkC7EVU7V7_js.resolveClientCredential(resolvedApiKey, resolvedApiUrl);
47
47
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
48
48
  /* @__PURE__ */ jsxRuntime.jsx("link", { rel: "preconnect", href: apiOrigin, crossOrigin: "anonymous" }),
49
49
  /* @__PURE__ */ jsxRuntime.jsx("link", { rel: "dns-prefetch", href: apiOrigin }),
50
50
  favicon && /* @__PURE__ */ jsxRuntime.jsx(chunkGCPPXUAI_js.ManagedFavicon, { apiKey: resolvedApiKey, apiUrl: resolvedApiUrl }),
51
51
  managedScripts && /* @__PURE__ */ jsxRuntime.jsx(chunkDV2LJYFD_js.ManagedScripts, { position: "head" }),
52
52
  /* @__PURE__ */ jsxRuntime.jsxs(
53
- chunkXEEGFMIY_js.SiteKitClientProviders,
53
+ chunkTYYTM4WC_js.SiteKitClientProviders,
54
54
  {
55
55
  apiKey: clientCredential,
56
56
  apiUrl: resolvedApiUrl,
57
+ mapsBrowserKey: process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY || process.env.GOOGLE_MAPS_BROWSER_KEY || void 0,
57
58
  projectId,
58
59
  analytics,
59
60
  engage,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/layout/SiteKitLayout.tsx"],"names":["resolveApiOrigin","resolveClientCredential","jsxs","Fragment","jsx","ManagedFavicon","ManagedScripts","SiteKitClientProviders"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkGA,eAAsB,aAAA,CAAc;AAAA,EAClC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,MAAA,GAAS,IAAA;AAAA,EACT,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,KAAA,GAAQ,IAAA;AAAA,EACR,KAAA,GAAQ,IAAA;AAAA,EACR,OAAA,GAAU,IAAA;AAAA,EACV,cAAA,GAAiB,IAAA;AAAA,EACjB,KAAA,GAAQ,KAAA;AAAA,EACR,qBAAA,GAAwB;AAC1B,CAAA,EAAuB;AAErB,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,EAAA;AACF,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,sBAAA;AAEF,EAAA,IAAI,CAAC,kBAAkB,KAAA,EAAO;AAC5B,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAYA,kCAAiB,cAAc,CAAA;AAKjD,EAAA,MAAM,gBAAA,GAAmB,MAAMC,wCAAA,CAAwB,cAAA,EAAgB,cAAc,CAAA;AAErF,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,UAAK,GAAA,EAAI,YAAA,EAAa,IAAA,EAAM,SAAA,EAAW,aAAY,WAAA,EAAY,CAAA;AAAA,oBAChEA,cAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAI,cAAA,EAAe,MAAM,SAAA,EAAW,CAAA;AAAA,IAEzC,2BAAWA,cAAA,CAACC,+BAAA,EAAA,EAAe,MAAA,EAAQ,cAAA,EAAgB,QAAQ,cAAA,EAAgB,CAAA;AAAA,IAC3E,cAAA,oBAAkBD,cAAA,CAACE,+BAAA,EAAA,EAAe,QAAA,EAAS,MAAA,EAAO,CAAA;AAAA,oBAInDJ,eAAA;AAAA,MAACK,uCAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,gBAAA;AAAA,QACR,MAAA,EAAQ,cAAA;AAAA,QACR,SAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,qBAAA,mBACCH,cAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,aAAA,EAAY,MAAA,EACtC,QAAA,kBAAAA,cAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,WAAA,EAAY,QAAA,EAAA,UAAA,EAAQ,GAC9B,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IAGC,cAAA,oBAAkBA,cAAA,CAACE,+BAAA,EAAA,EAAe,QAAA,EAAS,UAAA,EAAW;AAAA,GAAA,EACzD,CAAA;AAEJ","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/layout — SiteKitLayout\n *\n * The master layout component. A single RSC that auto-composes every\n * site-kit feature your layout needs:\n *\n * Server-side (RSC):\n * - ManagedFavicon (link tags from Portal logo)\n * - ManagedScripts position=\"head\" (tracking pixels, analytics tags)\n * - ManagedScripts position=\"body-end\"\n *\n * Client-side (island):\n * - AnalyticsProvider (page views, scroll depth, heatmap, web vitals)\n * - EngageWidget (popups, nudges, chat)\n * - SignalBridge (A/B experiments, behavior tracking)\n * - SitemapSync (keeps Portal seo_pages in sync)\n *\n * @example\n * ```tsx\n * // app/layout.tsx\n * import { SiteKitLayout } from '@sonordev/site-kit/layout'\n *\n * export default function RootLayout({ children }) {\n * return (\n * <html lang=\"en\">\n * <body>\n * <SiteKitLayout>\n * <Header />\n * <main>{children}</main>\n * <Footer />\n * </SiteKitLayout>\n * </body>\n * </html>\n * )\n * }\n * ```\n *\n * @example Opt out of specific features:\n * ```tsx\n * <SiteKitLayout engage={false} signal={false}>\n * {children}\n * </SiteKitLayout>\n * ```\n */\n\nimport * as React from 'react'\nimport { ManagedFavicon } from '../images/ManagedFavicon'\nimport { ManagedScripts } from '../seo/ManagedScripts'\nimport { resolveApiOrigin } from '../server/server-fetch'\nimport { resolveClientCredential } from '../server/mint-site-token'\nimport { SiteKitClientProviders } from './SiteKitClientProviders'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\nexport interface SiteKitLayoutProps {\n children: React.ReactNode\n\n /** Portal API key. Defaults to SONOR_API_KEY env var. */\n apiKey?: string\n /** Portal API URL. Defaults to env or https://api.sonor.io */\n apiUrl?: string\n /** Project ID (for Engage chat room routing). Auto-resolved if not provided. */\n projectId?: string\n\n /** Analytics tracking. true (default) | false | config object */\n analytics?: boolean | AnalyticsConfig\n /** Engage widgets (popups, chat). true (default) | false | config object */\n engage?: boolean | EngageConfig\n /** Signal AI (experiments, behavior). false (default) | true | config object */\n signal?: boolean | SignalConfig\n /** SitemapSync client component. Default: true */\n sitemapSync?: boolean\n /**\n * Fleet heartbeat — reports this site's kit version + active modules to Sonor\n * once per session so the platform can track version drift. Default: true.\n * Deferred like Analytics; never in the hydration path.\n */\n fleet?: boolean\n /**\n * Defer client modules (Analytics, Engage, SitemapSync) until window load +\n * idle or the first user interaction, keeping their JS and mount work out of\n * the critical hydration path. Default: true. Pass false to restore legacy\n * eager mounting. SignalBridge is never deferred.\n */\n defer?: boolean\n /** ManagedFavicon in <head>. Default: true */\n favicon?: boolean\n /** ManagedScripts (head + body-end). Default: true */\n managedScripts?: boolean\n\n /** Debug mode — logs to console. Default: false */\n debug?: boolean\n /**\n * When true, append a screen-reader-only link to `/llms.txt` after main content.\n * Default false — prefer `buildAiDiscoveryHeaders()` for discovery.\n */\n showLlmsTxtFooterLink?: boolean\n}\n\nexport async function SiteKitLayout({\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 favicon = true,\n managedScripts = true,\n debug = false,\n showLlmsTxtFooterLink = false,\n}: SiteKitLayoutProps) {\n // Resolve API config from env (server-side, safe)\n const resolvedApiKey =\n apiKey ??\n process.env.SONOR_API_KEY ??\n ''\n const resolvedApiUrl =\n apiUrl ??\n process.env.SONOR_API_URL ??\n 'https://api.sonor.io'\n\n if (!resolvedApiKey && debug) {\n console.warn(\n '[SiteKitLayout] No API key found. Set SONOR_API_KEY.',\n )\n }\n\n const apiOrigin = resolveApiOrigin(resolvedApiUrl)\n\n // Mint a short-lived client token so the raw key never reaches the browser.\n // Falls back to the raw key if minting is unavailable (older API / transient\n // outage) — the build never breaks. The client refreshes the token as needed.\n const clientCredential = await resolveClientCredential(resolvedApiKey, resolvedApiUrl)\n\n return (\n <>\n <link rel=\"preconnect\" href={apiOrigin} crossOrigin=\"anonymous\" />\n <link rel=\"dns-prefetch\" href={apiOrigin} />\n {/* Server-rendered head components */}\n {favicon && <ManagedFavicon apiKey={resolvedApiKey} apiUrl={resolvedApiUrl} />}\n {managedScripts && <ManagedScripts position=\"head\" />}\n\n {/* Client-side providers island — receives the minted token (or raw-key\n fallback), never the raw key when minting succeeds. */}\n <SiteKitClientProviders\n apiKey={clientCredential}\n apiUrl={resolvedApiUrl}\n projectId={projectId}\n analytics={analytics}\n engage={engage}\n signal={signal}\n sitemapSync={sitemapSync}\n fleet={fleet}\n defer={defer}\n debug={debug}\n >\n {children}\n {showLlmsTxtFooterLink ? (\n <footer className=\"sr-only\" aria-hidden=\"true\">\n <a href=\"/llms.txt\">llms.txt</a>\n </footer>\n ) : null}\n </SiteKitClientProviders>\n\n {/* Server-rendered body-end scripts */}\n {managedScripts && <ManagedScripts position=\"body-end\" />}\n </>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/layout/SiteKitLayout.tsx"],"names":["resolveApiOrigin","resolveClientCredential","jsxs","Fragment","jsx","ManagedFavicon","ManagedScripts","SiteKitClientProviders"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkGA,eAAsB,aAAA,CAAc;AAAA,EAClC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,MAAA,GAAS,IAAA;AAAA,EACT,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,KAAA,GAAQ,IAAA;AAAA,EACR,KAAA,GAAQ,IAAA;AAAA,EACR,OAAA,GAAU,IAAA;AAAA,EACV,cAAA,GAAiB,IAAA;AAAA,EACjB,KAAA,GAAQ,KAAA;AAAA,EACR,qBAAA,GAAwB;AAC1B,CAAA,EAAuB;AAErB,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,EAAA;AACF,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,sBAAA;AAEF,EAAA,IAAI,CAAC,kBAAkB,KAAA,EAAO;AAC5B,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAYA,kCAAiB,cAAc,CAAA;AAKjD,EAAA,MAAM,gBAAA,GAAmB,MAAMC,wCAAA,CAAwB,cAAA,EAAgB,cAAc,CAAA;AAErF,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,UAAK,GAAA,EAAI,YAAA,EAAa,IAAA,EAAM,SAAA,EAAW,aAAY,WAAA,EAAY,CAAA;AAAA,oBAChEA,cAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAI,cAAA,EAAe,MAAM,SAAA,EAAW,CAAA;AAAA,IAEzC,2BAAWA,cAAA,CAACC,+BAAA,EAAA,EAAe,MAAA,EAAQ,cAAA,EAAgB,QAAQ,cAAA,EAAgB,CAAA;AAAA,IAC3E,cAAA,oBAAkBD,cAAA,CAACE,+BAAA,EAAA,EAAe,QAAA,EAAS,MAAA,EAAO,CAAA;AAAA,oBAInDJ,eAAA;AAAA,MAACK,uCAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,gBAAA;AAAA,QACR,MAAA,EAAQ,cAAA;AAAA,QACR,gBACE,OAAA,CAAQ,GAAA,CAAI,+BAAA,IACZ,OAAA,CAAQ,IAAI,uBAAA,IACZ,MAAA;AAAA,QAEF,SAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,qBAAA,mBACCH,cAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,aAAA,EAAY,MAAA,EACtC,QAAA,kBAAAA,cAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,WAAA,EAAY,QAAA,EAAA,UAAA,EAAQ,GAC9B,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IAGC,cAAA,oBAAkBA,cAAA,CAACE,+BAAA,EAAA,EAAe,QAAA,EAAS,UAAA,EAAW;AAAA,GAAA,EACzD,CAAA;AAEJ","file":"index.js","sourcesContent":["/**\n * @sonordev/site-kit/layout — SiteKitLayout\n *\n * The master layout component. A single RSC that auto-composes every\n * site-kit feature your layout needs:\n *\n * Server-side (RSC):\n * - ManagedFavicon (link tags from Portal logo)\n * - ManagedScripts position=\"head\" (tracking pixels, analytics tags)\n * - ManagedScripts position=\"body-end\"\n *\n * Client-side (island):\n * - AnalyticsProvider (page views, scroll depth, heatmap, web vitals)\n * - EngageWidget (popups, nudges, chat)\n * - SignalBridge (A/B experiments, behavior tracking)\n * - SitemapSync (keeps Portal seo_pages in sync)\n *\n * @example\n * ```tsx\n * // app/layout.tsx\n * import { SiteKitLayout } from '@sonordev/site-kit/layout'\n *\n * export default function RootLayout({ children }) {\n * return (\n * <html lang=\"en\">\n * <body>\n * <SiteKitLayout>\n * <Header />\n * <main>{children}</main>\n * <Footer />\n * </SiteKitLayout>\n * </body>\n * </html>\n * )\n * }\n * ```\n *\n * @example Opt out of specific features:\n * ```tsx\n * <SiteKitLayout engage={false} signal={false}>\n * {children}\n * </SiteKitLayout>\n * ```\n */\n\nimport * as React from 'react'\nimport { ManagedFavicon } from '../images/ManagedFavicon'\nimport { ManagedScripts } from '../seo/ManagedScripts'\nimport { resolveApiOrigin } from '../server/server-fetch'\nimport { resolveClientCredential } from '../server/mint-site-token'\nimport { SiteKitClientProviders } from './SiteKitClientProviders'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\nexport interface SiteKitLayoutProps {\n children: React.ReactNode\n\n /** Portal API key. Defaults to SONOR_API_KEY env var. */\n apiKey?: string\n /** Portal API URL. Defaults to env or https://api.sonor.io */\n apiUrl?: string\n /** Project ID (for Engage chat room routing). Auto-resolved if not provided. */\n projectId?: string\n\n /** Analytics tracking. true (default) | false | config object */\n analytics?: boolean | AnalyticsConfig\n /** Engage widgets (popups, chat). true (default) | false | config object */\n engage?: boolean | EngageConfig\n /** Signal AI (experiments, behavior). false (default) | true | config object */\n signal?: boolean | SignalConfig\n /** SitemapSync client component. Default: true */\n sitemapSync?: boolean\n /**\n * Fleet heartbeat — reports this site's kit version + active modules to Sonor\n * once per session so the platform can track version drift. Default: true.\n * Deferred like Analytics; never in the hydration path.\n */\n fleet?: boolean\n /**\n * Defer client modules (Analytics, Engage, SitemapSync) until window load +\n * idle or the first user interaction, keeping their JS and mount work out of\n * the critical hydration path. Default: true. Pass false to restore legacy\n * eager mounting. SignalBridge is never deferred.\n */\n defer?: boolean\n /** ManagedFavicon in <head>. Default: true */\n favicon?: boolean\n /** ManagedScripts (head + body-end). Default: true */\n managedScripts?: boolean\n\n /** Debug mode — logs to console. Default: false */\n debug?: boolean\n /**\n * When true, append a screen-reader-only link to `/llms.txt` after main content.\n * Default false — prefer `buildAiDiscoveryHeaders()` for discovery.\n */\n showLlmsTxtFooterLink?: boolean\n}\n\nexport async function SiteKitLayout({\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 favicon = true,\n managedScripts = true,\n debug = false,\n showLlmsTxtFooterLink = false,\n}: SiteKitLayoutProps) {\n // Resolve API config from env (server-side, safe)\n const resolvedApiKey =\n apiKey ??\n process.env.SONOR_API_KEY ??\n ''\n const resolvedApiUrl =\n apiUrl ??\n process.env.SONOR_API_URL ??\n 'https://api.sonor.io'\n\n if (!resolvedApiKey && debug) {\n console.warn(\n '[SiteKitLayout] No API key found. Set SONOR_API_KEY.',\n )\n }\n\n const apiOrigin = resolveApiOrigin(resolvedApiUrl)\n\n // Mint a short-lived client token so the raw key never reaches the browser.\n // Falls back to the raw key if minting is unavailable (older API / transient\n // outage) — the build never breaks. The client refreshes the token as needed.\n const clientCredential = await resolveClientCredential(resolvedApiKey, resolvedApiUrl)\n\n return (\n <>\n <link rel=\"preconnect\" href={apiOrigin} crossOrigin=\"anonymous\" />\n <link rel=\"dns-prefetch\" href={apiOrigin} />\n {/* Server-rendered head components */}\n {favicon && <ManagedFavicon apiKey={resolvedApiKey} apiUrl={resolvedApiUrl} />}\n {managedScripts && <ManagedScripts position=\"head\" />}\n\n {/* Client-side providers island — receives the minted token (or raw-key\n fallback), never the raw key when minting succeeds. */}\n <SiteKitClientProviders\n apiKey={clientCredential}\n apiUrl={resolvedApiUrl}\n mapsBrowserKey={\n process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY ||\n process.env.GOOGLE_MAPS_BROWSER_KEY ||\n undefined\n }\n projectId={projectId}\n analytics={analytics}\n engage={engage}\n signal={signal}\n sitemapSync={sitemapSync}\n fleet={fleet}\n defer={defer}\n debug={debug}\n >\n {children}\n {showLlmsTxtFooterLink ? (\n <footer className=\"sr-only\" aria-hidden=\"true\">\n <a href=\"/llms.txt\">llms.txt</a>\n </footer>\n ) : null}\n </SiteKitClientProviders>\n\n {/* Server-rendered body-end scripts */}\n {managedScripts && <ManagedScripts position=\"body-end\" />}\n </>\n )\n}\n"]}
@@ -1,19 +1,19 @@
1
- import { SiteKitClientProviders } from '../chunk-T26I3F5V.mjs';
2
- import '../chunk-UQAG7WXA.mjs';
3
- import '../chunk-5ATLDT36.mjs';
1
+ import { SiteKitClientProviders } from '../chunk-PUH6YPZY.mjs';
2
+ import '../chunk-6B3DEFHU.mjs';
3
+ import '../chunk-2O2PZII5.mjs';
4
4
  import '../chunk-ZVBLXXNJ.mjs';
5
5
  import '../chunk-ZPLN537Q.mjs';
6
6
  import '../chunk-NI7OY4FW.mjs';
7
7
  import { ManagedFavicon } from '../chunk-CU6OGBKK.mjs';
8
- import '../chunk-U2KSUWKV.mjs';
9
- import { resolveClientCredential } from '../chunk-6IFYPRRN.mjs';
8
+ import '../chunk-DEVPKGCD.mjs';
9
+ import { resolveClientCredential } from '../chunk-LSZ6CT6U.mjs';
10
10
  import { ManagedScripts } from '../chunk-6PJTLBRR.mjs';
11
11
  import { resolveApiOrigin } from '../chunk-UDBUK5ZJ.mjs';
12
12
  import '../chunk-AX4AROLH.mjs';
13
13
  import '../chunk-6EDVCUAG.mjs';
14
- import '../chunk-5JEZUNNA.mjs';
15
- import '../chunk-4DLCVLI2.mjs';
16
- import '../chunk-F23IBAAW.mjs';
14
+ import '../chunk-FJTER53S.mjs';
15
+ import '../chunk-BS3P5PTY.mjs';
16
+ import '../chunk-JYM4I57K.mjs';
17
17
  import '../chunk-4XPGGLVP.mjs';
18
18
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
19
19
 
@@ -52,6 +52,7 @@ async function SiteKitLayout({
52
52
  {
53
53
  apiKey: clientCredential,
54
54
  apiUrl: resolvedApiUrl,
55
+ mapsBrowserKey: process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY || process.env.GOOGLE_MAPS_BROWSER_KEY || void 0,
55
56
  projectId,
56
57
  analytics,
57
58
  engage,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/layout/SiteKitLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAkGA,eAAsB,aAAA,CAAc;AAAA,EAClC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,MAAA,GAAS,IAAA;AAAA,EACT,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,KAAA,GAAQ,IAAA;AAAA,EACR,KAAA,GAAQ,IAAA;AAAA,EACR,OAAA,GAAU,IAAA;AAAA,EACV,cAAA,GAAiB,IAAA;AAAA,EACjB,KAAA,GAAQ,KAAA;AAAA,EACR,qBAAA,GAAwB;AAC1B,CAAA,EAAuB;AAErB,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,EAAA;AACF,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,sBAAA;AAEF,EAAA,IAAI,CAAC,kBAAkB,KAAA,EAAO;AAC5B,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,iBAAiB,cAAc,CAAA;AAKjD,EAAA,MAAM,gBAAA,GAAmB,MAAM,uBAAA,CAAwB,cAAA,EAAgB,cAAc,CAAA;AAErF,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAK,GAAA,EAAI,YAAA,EAAa,IAAA,EAAM,SAAA,EAAW,aAAY,WAAA,EAAY,CAAA;AAAA,oBAChE,GAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAI,cAAA,EAAe,MAAM,SAAA,EAAW,CAAA;AAAA,IAEzC,2BAAW,GAAA,CAAC,cAAA,EAAA,EAAe,MAAA,EAAQ,cAAA,EAAgB,QAAQ,cAAA,EAAgB,CAAA;AAAA,IAC3E,cAAA,oBAAkB,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,MAAA,EAAO,CAAA;AAAA,oBAInD,IAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,gBAAA;AAAA,QACR,MAAA,EAAQ,cAAA;AAAA,QACR,SAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,qBAAA,mBACC,GAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,aAAA,EAAY,MAAA,EACtC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,WAAA,EAAY,QAAA,EAAA,UAAA,EAAQ,GAC9B,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IAGC,cAAA,oBAAkB,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,UAAA,EAAW;AAAA,GAAA,EACzD,CAAA;AAEJ","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/layout — SiteKitLayout\n *\n * The master layout component. A single RSC that auto-composes every\n * site-kit feature your layout needs:\n *\n * Server-side (RSC):\n * - ManagedFavicon (link tags from Portal logo)\n * - ManagedScripts position=\"head\" (tracking pixels, analytics tags)\n * - ManagedScripts position=\"body-end\"\n *\n * Client-side (island):\n * - AnalyticsProvider (page views, scroll depth, heatmap, web vitals)\n * - EngageWidget (popups, nudges, chat)\n * - SignalBridge (A/B experiments, behavior tracking)\n * - SitemapSync (keeps Portal seo_pages in sync)\n *\n * @example\n * ```tsx\n * // app/layout.tsx\n * import { SiteKitLayout } from '@sonordev/site-kit/layout'\n *\n * export default function RootLayout({ children }) {\n * return (\n * <html lang=\"en\">\n * <body>\n * <SiteKitLayout>\n * <Header />\n * <main>{children}</main>\n * <Footer />\n * </SiteKitLayout>\n * </body>\n * </html>\n * )\n * }\n * ```\n *\n * @example Opt out of specific features:\n * ```tsx\n * <SiteKitLayout engage={false} signal={false}>\n * {children}\n * </SiteKitLayout>\n * ```\n */\n\nimport * as React from 'react'\nimport { ManagedFavicon } from '../images/ManagedFavicon'\nimport { ManagedScripts } from '../seo/ManagedScripts'\nimport { resolveApiOrigin } from '../server/server-fetch'\nimport { resolveClientCredential } from '../server/mint-site-token'\nimport { SiteKitClientProviders } from './SiteKitClientProviders'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\nexport interface SiteKitLayoutProps {\n children: React.ReactNode\n\n /** Portal API key. Defaults to SONOR_API_KEY env var. */\n apiKey?: string\n /** Portal API URL. Defaults to env or https://api.sonor.io */\n apiUrl?: string\n /** Project ID (for Engage chat room routing). Auto-resolved if not provided. */\n projectId?: string\n\n /** Analytics tracking. true (default) | false | config object */\n analytics?: boolean | AnalyticsConfig\n /** Engage widgets (popups, chat). true (default) | false | config object */\n engage?: boolean | EngageConfig\n /** Signal AI (experiments, behavior). false (default) | true | config object */\n signal?: boolean | SignalConfig\n /** SitemapSync client component. Default: true */\n sitemapSync?: boolean\n /**\n * Fleet heartbeat — reports this site's kit version + active modules to Sonor\n * once per session so the platform can track version drift. Default: true.\n * Deferred like Analytics; never in the hydration path.\n */\n fleet?: boolean\n /**\n * Defer client modules (Analytics, Engage, SitemapSync) until window load +\n * idle or the first user interaction, keeping their JS and mount work out of\n * the critical hydration path. Default: true. Pass false to restore legacy\n * eager mounting. SignalBridge is never deferred.\n */\n defer?: boolean\n /** ManagedFavicon in <head>. Default: true */\n favicon?: boolean\n /** ManagedScripts (head + body-end). Default: true */\n managedScripts?: boolean\n\n /** Debug mode — logs to console. Default: false */\n debug?: boolean\n /**\n * When true, append a screen-reader-only link to `/llms.txt` after main content.\n * Default false — prefer `buildAiDiscoveryHeaders()` for discovery.\n */\n showLlmsTxtFooterLink?: boolean\n}\n\nexport async function SiteKitLayout({\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 favicon = true,\n managedScripts = true,\n debug = false,\n showLlmsTxtFooterLink = false,\n}: SiteKitLayoutProps) {\n // Resolve API config from env (server-side, safe)\n const resolvedApiKey =\n apiKey ??\n process.env.SONOR_API_KEY ??\n ''\n const resolvedApiUrl =\n apiUrl ??\n process.env.SONOR_API_URL ??\n 'https://api.sonor.io'\n\n if (!resolvedApiKey && debug) {\n console.warn(\n '[SiteKitLayout] No API key found. Set SONOR_API_KEY.',\n )\n }\n\n const apiOrigin = resolveApiOrigin(resolvedApiUrl)\n\n // Mint a short-lived client token so the raw key never reaches the browser.\n // Falls back to the raw key if minting is unavailable (older API / transient\n // outage) — the build never breaks. The client refreshes the token as needed.\n const clientCredential = await resolveClientCredential(resolvedApiKey, resolvedApiUrl)\n\n return (\n <>\n <link rel=\"preconnect\" href={apiOrigin} crossOrigin=\"anonymous\" />\n <link rel=\"dns-prefetch\" href={apiOrigin} />\n {/* Server-rendered head components */}\n {favicon && <ManagedFavicon apiKey={resolvedApiKey} apiUrl={resolvedApiUrl} />}\n {managedScripts && <ManagedScripts position=\"head\" />}\n\n {/* Client-side providers island — receives the minted token (or raw-key\n fallback), never the raw key when minting succeeds. */}\n <SiteKitClientProviders\n apiKey={clientCredential}\n apiUrl={resolvedApiUrl}\n projectId={projectId}\n analytics={analytics}\n engage={engage}\n signal={signal}\n sitemapSync={sitemapSync}\n fleet={fleet}\n defer={defer}\n debug={debug}\n >\n {children}\n {showLlmsTxtFooterLink ? (\n <footer className=\"sr-only\" aria-hidden=\"true\">\n <a href=\"/llms.txt\">llms.txt</a>\n </footer>\n ) : null}\n </SiteKitClientProviders>\n\n {/* Server-rendered body-end scripts */}\n {managedScripts && <ManagedScripts position=\"body-end\" />}\n </>\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/layout/SiteKitLayout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAkGA,eAAsB,aAAA,CAAc;AAAA,EAClC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA,GAAY,IAAA;AAAA,EACZ,MAAA,GAAS,IAAA;AAAA,EACT,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,GAAc,IAAA;AAAA,EACd,KAAA,GAAQ,IAAA;AAAA,EACR,KAAA,GAAQ,IAAA;AAAA,EACR,OAAA,GAAU,IAAA;AAAA,EACV,cAAA,GAAiB,IAAA;AAAA,EACjB,KAAA,GAAQ,KAAA;AAAA,EACR,qBAAA,GAAwB;AAC1B,CAAA,EAAuB;AAErB,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,EAAA;AACF,EAAA,MAAM,cAAA,GACJ,MAAA,IACA,OAAA,CAAQ,GAAA,CAAI,aAAA,IACZ,sBAAA;AAEF,EAAA,IAAI,CAAC,kBAAkB,KAAA,EAAO;AAC5B,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,SAAA,GAAY,iBAAiB,cAAc,CAAA;AAKjD,EAAA,MAAM,gBAAA,GAAmB,MAAM,uBAAA,CAAwB,cAAA,EAAgB,cAAc,CAAA;AAErF,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAK,GAAA,EAAI,YAAA,EAAa,IAAA,EAAM,SAAA,EAAW,aAAY,WAAA,EAAY,CAAA;AAAA,oBAChE,GAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAI,cAAA,EAAe,MAAM,SAAA,EAAW,CAAA;AAAA,IAEzC,2BAAW,GAAA,CAAC,cAAA,EAAA,EAAe,MAAA,EAAQ,cAAA,EAAgB,QAAQ,cAAA,EAAgB,CAAA;AAAA,IAC3E,cAAA,oBAAkB,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,MAAA,EAAO,CAAA;AAAA,oBAInD,IAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,gBAAA;AAAA,QACR,MAAA,EAAQ,cAAA;AAAA,QACR,gBACE,OAAA,CAAQ,GAAA,CAAI,+BAAA,IACZ,OAAA,CAAQ,IAAI,uBAAA,IACZ,MAAA;AAAA,QAEF,SAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,qBAAA,mBACC,GAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,aAAA,EAAY,MAAA,EACtC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAK,WAAA,EAAY,QAAA,EAAA,UAAA,EAAQ,GAC9B,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IAGC,cAAA,oBAAkB,GAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAS,UAAA,EAAW;AAAA,GAAA,EACzD,CAAA;AAEJ","file":"index.mjs","sourcesContent":["/**\n * @sonordev/site-kit/layout — SiteKitLayout\n *\n * The master layout component. A single RSC that auto-composes every\n * site-kit feature your layout needs:\n *\n * Server-side (RSC):\n * - ManagedFavicon (link tags from Portal logo)\n * - ManagedScripts position=\"head\" (tracking pixels, analytics tags)\n * - ManagedScripts position=\"body-end\"\n *\n * Client-side (island):\n * - AnalyticsProvider (page views, scroll depth, heatmap, web vitals)\n * - EngageWidget (popups, nudges, chat)\n * - SignalBridge (A/B experiments, behavior tracking)\n * - SitemapSync (keeps Portal seo_pages in sync)\n *\n * @example\n * ```tsx\n * // app/layout.tsx\n * import { SiteKitLayout } from '@sonordev/site-kit/layout'\n *\n * export default function RootLayout({ children }) {\n * return (\n * <html lang=\"en\">\n * <body>\n * <SiteKitLayout>\n * <Header />\n * <main>{children}</main>\n * <Footer />\n * </SiteKitLayout>\n * </body>\n * </html>\n * )\n * }\n * ```\n *\n * @example Opt out of specific features:\n * ```tsx\n * <SiteKitLayout engage={false} signal={false}>\n * {children}\n * </SiteKitLayout>\n * ```\n */\n\nimport * as React from 'react'\nimport { ManagedFavicon } from '../images/ManagedFavicon'\nimport { ManagedScripts } from '../seo/ManagedScripts'\nimport { resolveApiOrigin } from '../server/server-fetch'\nimport { resolveClientCredential } from '../server/mint-site-token'\nimport { SiteKitClientProviders } from './SiteKitClientProviders'\nimport type { AnalyticsConfig, EngageConfig, SignalConfig } from './types'\n\nexport interface SiteKitLayoutProps {\n children: React.ReactNode\n\n /** Portal API key. Defaults to SONOR_API_KEY env var. */\n apiKey?: string\n /** Portal API URL. Defaults to env or https://api.sonor.io */\n apiUrl?: string\n /** Project ID (for Engage chat room routing). Auto-resolved if not provided. */\n projectId?: string\n\n /** Analytics tracking. true (default) | false | config object */\n analytics?: boolean | AnalyticsConfig\n /** Engage widgets (popups, chat). true (default) | false | config object */\n engage?: boolean | EngageConfig\n /** Signal AI (experiments, behavior). false (default) | true | config object */\n signal?: boolean | SignalConfig\n /** SitemapSync client component. Default: true */\n sitemapSync?: boolean\n /**\n * Fleet heartbeat — reports this site's kit version + active modules to Sonor\n * once per session so the platform can track version drift. Default: true.\n * Deferred like Analytics; never in the hydration path.\n */\n fleet?: boolean\n /**\n * Defer client modules (Analytics, Engage, SitemapSync) until window load +\n * idle or the first user interaction, keeping their JS and mount work out of\n * the critical hydration path. Default: true. Pass false to restore legacy\n * eager mounting. SignalBridge is never deferred.\n */\n defer?: boolean\n /** ManagedFavicon in <head>. Default: true */\n favicon?: boolean\n /** ManagedScripts (head + body-end). Default: true */\n managedScripts?: boolean\n\n /** Debug mode — logs to console. Default: false */\n debug?: boolean\n /**\n * When true, append a screen-reader-only link to `/llms.txt` after main content.\n * Default false — prefer `buildAiDiscoveryHeaders()` for discovery.\n */\n showLlmsTxtFooterLink?: boolean\n}\n\nexport async function SiteKitLayout({\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 favicon = true,\n managedScripts = true,\n debug = false,\n showLlmsTxtFooterLink = false,\n}: SiteKitLayoutProps) {\n // Resolve API config from env (server-side, safe)\n const resolvedApiKey =\n apiKey ??\n process.env.SONOR_API_KEY ??\n ''\n const resolvedApiUrl =\n apiUrl ??\n process.env.SONOR_API_URL ??\n 'https://api.sonor.io'\n\n if (!resolvedApiKey && debug) {\n console.warn(\n '[SiteKitLayout] No API key found. Set SONOR_API_KEY.',\n )\n }\n\n const apiOrigin = resolveApiOrigin(resolvedApiUrl)\n\n // Mint a short-lived client token so the raw key never reaches the browser.\n // Falls back to the raw key if minting is unavailable (older API / transient\n // outage) — the build never breaks. The client refreshes the token as needed.\n const clientCredential = await resolveClientCredential(resolvedApiKey, resolvedApiUrl)\n\n return (\n <>\n <link rel=\"preconnect\" href={apiOrigin} crossOrigin=\"anonymous\" />\n <link rel=\"dns-prefetch\" href={apiOrigin} />\n {/* Server-rendered head components */}\n {favicon && <ManagedFavicon apiKey={resolvedApiKey} apiUrl={resolvedApiUrl} />}\n {managedScripts && <ManagedScripts position=\"head\" />}\n\n {/* Client-side providers island — receives the minted token (or raw-key\n fallback), never the raw key when minting succeeds. */}\n <SiteKitClientProviders\n apiKey={clientCredential}\n apiUrl={resolvedApiUrl}\n mapsBrowserKey={\n process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY ||\n process.env.GOOGLE_MAPS_BROWSER_KEY ||\n undefined\n }\n projectId={projectId}\n analytics={analytics}\n engage={engage}\n signal={signal}\n sitemapSync={sitemapSync}\n fleet={fleet}\n defer={defer}\n debug={debug}\n >\n {children}\n {showLlmsTxtFooterLink ? (\n <footer className=\"sr-only\" aria-hidden=\"true\">\n <a href=\"/llms.txt\">llms.txt</a>\n </footer>\n ) : null}\n </SiteKitClientProviders>\n\n {/* Server-rendered body-end scripts */}\n {managedScripts && <ManagedScripts position=\"body-end\" />}\n </>\n )\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React__default from 'react';
2
3
 
3
4
  /**
4
5
  * @sonordev/site-kit/maps — Shared types
@@ -53,6 +54,8 @@ interface GoogleMapProps {
53
54
  markers?: MapMarker[];
54
55
  /** CSS class for the map container */
55
56
  className?: string;
57
+ /** Inline styles for the map container — reliable sizing without depending on the consumer's Tailwind build */
58
+ style?: React__default.CSSProperties;
56
59
  /** Show a pin for the property location (default true) */
57
60
  showPropertyMarker?: boolean;
58
61
  /** Property name for the info window */
@@ -90,7 +93,7 @@ interface NeighborhoodMapProps {
90
93
  }
91
94
  declare const DEFAULT_PLACE_TYPES: PlaceTypeFilter[];
92
95
 
93
- declare function GoogleMap({ apiKey, mapId, center, zoom, markers, className, showPropertyMarker, propertyName, propertyAddress, propertyPinColor, }: GoogleMapProps): react_jsx_runtime.JSX.Element;
96
+ declare function GoogleMap({ apiKey, mapId, center, zoom, markers, className, style, showPropertyMarker, propertyName, propertyAddress, propertyPinColor, }: GoogleMapProps): react_jsx_runtime.JSX.Element;
94
97
 
95
98
  declare function NeighborhoodMap({ center, propertyName, propertyAddress, className, placeTypes, title, subtitle, propertyPinColor, }: NeighborhoodMapProps): react_jsx_runtime.JSX.Element;
96
99