@sonordev/site-kit 6.3.1 → 6.3.4

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 (262) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/{AnalyticsProvider-G46LCH3V.js → AnalyticsProvider-4F7VWRAJ.js} +10 -10
  3. package/dist/{AnalyticsProvider-G46LCH3V.js.map → AnalyticsProvider-4F7VWRAJ.js.map} +1 -1
  4. package/dist/{AnalyticsProvider-IYGKHMVM.mjs → AnalyticsProvider-DQQLEE3B.mjs} +6 -6
  5. package/dist/{AnalyticsProvider-IYGKHMVM.mjs.map → AnalyticsProvider-DQQLEE3B.mjs.map} +1 -1
  6. package/dist/{ArticleViewTracker-7GEI37VK.mjs → ArticleViewTracker-3QRIQZOL.mjs} +5 -5
  7. package/dist/{ArticleViewTracker-7GEI37VK.mjs.map → ArticleViewTracker-3QRIQZOL.mjs.map} +1 -1
  8. package/dist/{ArticleViewTracker-3USIHB4O.js → ArticleViewTracker-B4J2IKWS.js} +6 -6
  9. package/dist/{ArticleViewTracker-3USIHB4O.js.map → ArticleViewTracker-B4J2IKWS.js.map} +1 -1
  10. package/dist/{ChatWidget-VP3QQJA6.js → ChatWidget-NGZLBGGZ.js} +11 -11
  11. package/dist/{ChatWidget-VP3QQJA6.js.map → ChatWidget-NGZLBGGZ.js.map} +1 -1
  12. package/dist/ChatWidget-S2IEUKSM.mjs +17 -0
  13. package/dist/{ChatWidget-36IDUB53.mjs.map → ChatWidget-S2IEUKSM.mjs.map} +1 -1
  14. package/dist/EngageWidget-DKXCD6VU.js +21 -0
  15. package/dist/{EngageWidget-YHMSB4YE.js.map → EngageWidget-DKXCD6VU.js.map} +1 -1
  16. package/dist/EngageWidget-XAG3OUTN.mjs +12 -0
  17. package/dist/{EngageWidget-ILRTLGBB.mjs.map → EngageWidget-XAG3OUTN.mjs.map} +1 -1
  18. package/dist/{FileField-LMSLNNRX.js → FileField-QSQS6WRY.js} +6 -6
  19. package/dist/FileField-QSQS6WRY.js.map +1 -0
  20. package/dist/{FileField-DXGPA4OB.mjs → FileField-QYAHRTRI.mjs} +5 -5
  21. package/dist/FileField-QYAHRTRI.mjs.map +1 -0
  22. package/dist/{FormSpotlight-SEJ4NJHG.mjs → FormSpotlight-OK2F4YEI.mjs} +4 -4
  23. package/dist/{FormSpotlight-SEJ4NJHG.mjs.map → FormSpotlight-OK2F4YEI.mjs.map} +1 -1
  24. package/dist/{FormSpotlight-5BQCAXIO.js → FormSpotlight-TNG5KXWM.js} +12 -12
  25. package/dist/{FormSpotlight-5BQCAXIO.js.map → FormSpotlight-TNG5KXWM.js.map} +1 -1
  26. package/dist/{FormStage-ZRXENSYN.js → FormStage-7QKWC76Z.js} +11 -11
  27. package/dist/{FormStage-ZRXENSYN.js.map → FormStage-7QKWC76Z.js.map} +1 -1
  28. package/dist/{FormStage-6OLDPLYU.mjs → FormStage-EKTMBUHT.mjs} +4 -4
  29. package/dist/{FormStage-6OLDPLYU.mjs.map → FormStage-EKTMBUHT.mjs.map} +1 -1
  30. package/dist/ManagedForm-2LGVJVNO.mjs +16 -0
  31. package/dist/{ManagedForm-AIPXF5QY.mjs.map → ManagedForm-2LGVJVNO.mjs.map} +1 -1
  32. package/dist/ManagedForm-LQK3KJUH.js +25 -0
  33. package/dist/{ManagedForm-T464AA5B.js.map → ManagedForm-LQK3KJUH.js.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-UGDUBYR3.mjs → ManagedNewsletterForm-7EUEAMU5.mjs} +7 -7
  35. package/dist/{ManagedNewsletterForm-UGDUBYR3.mjs.map → ManagedNewsletterForm-7EUEAMU5.mjs.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-HKNXIKDV.js → ManagedNewsletterForm-DNSCX7Y5.js} +8 -8
  37. package/dist/{ManagedNewsletterForm-HKNXIKDV.js.map → ManagedNewsletterForm-DNSCX7Y5.js.map} +1 -1
  38. package/dist/{SignalCore-O3GEJZCN.mjs → SignalCore-OPQXRYKI.mjs} +5 -5
  39. package/dist/{SignalCore-O3GEJZCN.mjs.map → SignalCore-OPQXRYKI.mjs.map} +1 -1
  40. package/dist/{SignalCore-OOQHKIUZ.js → SignalCore-SVJYWIM6.js} +11 -11
  41. package/dist/{SignalCore-OOQHKIUZ.js.map → SignalCore-SVJYWIM6.js.map} +1 -1
  42. package/dist/SitemapSync-JQFUZMGW.js +18 -0
  43. package/dist/{SitemapSync-MT3I4W3B.js.map → SitemapSync-JQFUZMGW.js.map} +1 -1
  44. package/dist/SitemapSync-ZJY5DKLU.mjs +9 -0
  45. package/dist/{SitemapSync-RG554AJR.mjs.map → SitemapSync-ZJY5DKLU.mjs.map} +1 -1
  46. package/dist/analytics/index.js +9 -9
  47. package/dist/analytics/index.mjs +4 -4
  48. package/dist/articles/index.js +1 -1
  49. package/dist/articles/index.mjs +1 -1
  50. package/dist/articles/server-ui.js +1 -1
  51. package/dist/articles/server-ui.mjs +1 -1
  52. package/dist/{chunk-W4NTPOBD.js → chunk-4SFSLUBA.js} +5 -5
  53. package/dist/{chunk-W4NTPOBD.js.map → chunk-4SFSLUBA.js.map} +1 -1
  54. package/dist/{chunk-OUM77VZ4.mjs → chunk-562DSBYR.mjs} +3 -3
  55. package/dist/{chunk-OUM77VZ4.mjs.map → chunk-562DSBYR.mjs.map} +1 -1
  56. package/dist/{chunk-S4DTX5E7.js → chunk-5XEEDDZ4.js} +4 -4
  57. package/dist/{chunk-S4DTX5E7.js.map → chunk-5XEEDDZ4.js.map} +1 -1
  58. package/dist/{chunk-W5MHX6SO.mjs → chunk-64HKUCAF.mjs} +3 -3
  59. package/dist/{chunk-W5MHX6SO.mjs.map → chunk-64HKUCAF.mjs.map} +1 -1
  60. package/dist/{chunk-NRBITVDK.js → chunk-6FNFM7JL.js} +3 -4
  61. package/dist/chunk-6FNFM7JL.js.map +1 -0
  62. package/dist/{chunk-KAJT3MOM.mjs → chunk-6GRM7YZG.mjs} +4 -4
  63. package/dist/{chunk-KAJT3MOM.mjs.map → chunk-6GRM7YZG.mjs.map} +1 -1
  64. package/dist/{chunk-FVATDBFX.js → chunk-7LHG6GR3.js} +10 -10
  65. package/dist/{chunk-FVATDBFX.js.map → chunk-7LHG6GR3.js.map} +1 -1
  66. package/dist/{chunk-QRL3QDUE.js → chunk-7RLL67F3.js} +3 -20
  67. package/dist/chunk-7RLL67F3.js.map +1 -0
  68. package/dist/{chunk-GE3CGR2T.js → chunk-7YELMDJ3.js} +14 -14
  69. package/dist/{chunk-GE3CGR2T.js.map → chunk-7YELMDJ3.js.map} +1 -1
  70. package/dist/chunk-AGIMH67E.mjs +26 -0
  71. package/dist/chunk-AGIMH67E.mjs.map +1 -0
  72. package/dist/{chunk-A3QAZJXC.js → chunk-CIBH3PMQ.js} +6 -8
  73. package/dist/chunk-CIBH3PMQ.js.map +1 -0
  74. package/dist/{chunk-6WWGH6E3.js → chunk-CLQSKHE6.js} +14 -14
  75. package/dist/{chunk-6WWGH6E3.js.map → chunk-CLQSKHE6.js.map} +1 -1
  76. package/dist/{chunk-NKBPEZCX.js → chunk-CZMZEUB6.js} +15 -15
  77. package/dist/{chunk-NKBPEZCX.js.map → chunk-CZMZEUB6.js.map} +1 -1
  78. package/dist/{chunk-YUCKBIRE.mjs → chunk-D37H4JI6.mjs} +196 -5
  79. package/dist/chunk-D37H4JI6.mjs.map +1 -0
  80. package/dist/{chunk-YCE6HRWW.js → chunk-DV5KVNA7.js} +10 -11
  81. package/dist/chunk-DV5KVNA7.js.map +1 -0
  82. package/dist/{chunk-7YFUX2CL.mjs → chunk-DVAAKEMG.mjs} +3 -3
  83. package/dist/{chunk-7YFUX2CL.mjs.map → chunk-DVAAKEMG.mjs.map} +1 -1
  84. package/dist/{chunk-3EOUKWHB.mjs → chunk-DXSSC3KO.mjs} +3 -3
  85. package/dist/{chunk-3EOUKWHB.mjs.map → chunk-DXSSC3KO.mjs.map} +1 -1
  86. package/dist/{chunk-HY6EXWLZ.js → chunk-E7KNZVH7.js} +8 -8
  87. package/dist/{chunk-HY6EXWLZ.js.map → chunk-E7KNZVH7.js.map} +1 -1
  88. package/dist/{chunk-KUDSEKV7.mjs → chunk-EEPOZWUL.mjs} +4 -4
  89. package/dist/{chunk-KUDSEKV7.mjs.map → chunk-EEPOZWUL.mjs.map} +1 -1
  90. package/dist/{chunk-4KSE642V.js → chunk-ESFDSHMC.js} +23 -27
  91. package/dist/chunk-ESFDSHMC.js.map +1 -0
  92. package/dist/chunk-EYKLUW63.js +8 -0
  93. package/dist/{chunk-ZKOQCKOR.js.map → chunk-EYKLUW63.js.map} +1 -1
  94. package/dist/chunk-FCAHV5P3.mjs +45 -0
  95. package/dist/chunk-FCAHV5P3.mjs.map +1 -0
  96. package/dist/{chunk-A4WYSHIX.js → chunk-FDSMD2KO.js} +3 -5
  97. package/dist/chunk-FDSMD2KO.js.map +1 -0
  98. package/dist/{chunk-RZUUPX2H.js → chunk-FGA5FT7Y.js} +6 -6
  99. package/dist/{chunk-RZUUPX2H.js.map → chunk-FGA5FT7Y.js.map} +1 -1
  100. package/dist/{chunk-2LX7LHAO.js → chunk-H3365D42.js} +5 -5
  101. package/dist/{chunk-2LX7LHAO.js.map → chunk-H3365D42.js.map} +1 -1
  102. package/dist/{chunk-HCN3IKMW.mjs → chunk-HPGPOUHU.mjs} +3 -4
  103. package/dist/chunk-HPGPOUHU.mjs.map +1 -0
  104. package/dist/{chunk-U274XAMD.js → chunk-IBSHXE73.js} +12 -13
  105. package/dist/chunk-IBSHXE73.js.map +1 -0
  106. package/dist/{chunk-6TSYWYYR.js → chunk-IFFDCOLU.js} +4 -4
  107. package/dist/{chunk-6TSYWYYR.js.map → chunk-IFFDCOLU.js.map} +1 -1
  108. package/dist/{chunk-NO4JQ2G3.mjs → chunk-JONESD5P.mjs} +10 -14
  109. package/dist/chunk-JONESD5P.mjs.map +1 -0
  110. package/dist/{chunk-4EXBEFIV.mjs → chunk-JSLFGJG4.mjs} +4 -4
  111. package/dist/{chunk-4EXBEFIV.mjs.map → chunk-JSLFGJG4.mjs.map} +1 -1
  112. package/dist/{chunk-JS265UKZ.mjs → chunk-KTFZNSRY.mjs} +3 -3
  113. package/dist/{chunk-JS265UKZ.mjs.map → chunk-KTFZNSRY.mjs.map} +1 -1
  114. package/dist/{chunk-IDBA3YZ6.mjs → chunk-M6PJTITK.mjs} +4 -4
  115. package/dist/{chunk-IDBA3YZ6.mjs.map → chunk-M6PJTITK.mjs.map} +1 -1
  116. package/dist/{chunk-UFG2TUBG.js → chunk-MMQLQHZX.js} +3 -3
  117. package/dist/{chunk-UFG2TUBG.js.map → chunk-MMQLQHZX.js.map} +1 -1
  118. package/dist/{chunk-JPXT5LY2.js → chunk-N2LYSNZT.js} +204 -12
  119. package/dist/chunk-N2LYSNZT.js.map +1 -0
  120. package/dist/{chunk-S7S6ZZ3R.js → chunk-NMB47GMV.js} +7 -7
  121. package/dist/{chunk-S7S6ZZ3R.js.map → chunk-NMB47GMV.js.map} +1 -1
  122. package/dist/{chunk-YYOGUTLV.js → chunk-NQYO54EB.js} +3 -3
  123. package/dist/{chunk-YYOGUTLV.js.map → chunk-NQYO54EB.js.map} +1 -1
  124. package/dist/{chunk-4HSZPHF7.mjs → chunk-NUHIODBD.mjs} +4 -6
  125. package/dist/chunk-NUHIODBD.mjs.map +1 -0
  126. package/dist/{chunk-QRN6HQOX.js → chunk-PPY73K4P.js} +15 -15
  127. package/dist/{chunk-QRN6HQOX.js.map → chunk-PPY73K4P.js.map} +1 -1
  128. package/dist/{chunk-XA2GJFVM.js → chunk-RI6DFQCA.js} +3 -5
  129. package/dist/chunk-RI6DFQCA.js.map +1 -0
  130. package/dist/chunk-TULCHQX2.js +29 -0
  131. package/dist/chunk-TULCHQX2.js.map +1 -0
  132. package/dist/{chunk-A5R62CXI.mjs → chunk-V57WFNHY.mjs} +3 -5
  133. package/dist/chunk-V57WFNHY.mjs.map +1 -0
  134. package/dist/{chunk-TDJZFBHI.mjs → chunk-VQL7XDIY.mjs} +8 -9
  135. package/dist/chunk-VQL7XDIY.mjs.map +1 -0
  136. package/dist/{chunk-YOS4A3QE.mjs → chunk-VXVLZAR5.mjs} +3 -3
  137. package/dist/{chunk-YOS4A3QE.mjs.map → chunk-VXVLZAR5.mjs.map} +1 -1
  138. package/dist/{chunk-WIRGZMM5.mjs → chunk-W2UA4UUZ.mjs} +3 -3
  139. package/dist/{chunk-WIRGZMM5.mjs.map → chunk-W2UA4UUZ.mjs.map} +1 -1
  140. package/dist/{chunk-VJV7WUR2.mjs → chunk-WRRVYPMY.mjs} +3 -5
  141. package/dist/chunk-WRRVYPMY.mjs.map +1 -0
  142. package/dist/{chunk-XNZ2WFXR.mjs → chunk-WS3J5T3K.mjs} +4 -4
  143. package/dist/{chunk-XNZ2WFXR.mjs.map → chunk-WS3J5T3K.mjs.map} +1 -1
  144. package/dist/chunk-WT5WNIR2.mjs +6 -0
  145. package/dist/{chunk-C654VCWV.mjs.map → chunk-WT5WNIR2.mjs.map} +1 -1
  146. package/dist/{chunk-DUFU27R2.mjs → chunk-YPDOYPWJ.mjs} +3 -3
  147. package/dist/{chunk-DUFU27R2.mjs.map → chunk-YPDOYPWJ.mjs.map} +1 -1
  148. package/dist/{chunk-XV2FFSJU.mjs → chunk-Z3Q5UTZU.mjs} +10 -11
  149. package/dist/chunk-Z3Q5UTZU.mjs.map +1 -0
  150. package/dist/{chunk-MWIIHMYS.mjs → chunk-ZIZBE6Y6.mjs} +3 -3
  151. package/dist/{chunk-MWIIHMYS.mjs.map → chunk-ZIZBE6Y6.mjs.map} +1 -1
  152. package/dist/cli/index.js +3 -3
  153. package/dist/cli/index.mjs +1 -1
  154. package/dist/client/index.js +4 -4
  155. package/dist/client/index.mjs +3 -3
  156. package/dist/commerce/index.js +57 -57
  157. package/dist/commerce/index.mjs +5 -5
  158. package/dist/engage/index.js +10 -10
  159. package/dist/engage/index.mjs +7 -7
  160. package/dist/fleet/index.js +8 -8
  161. package/dist/fleet/index.mjs +4 -4
  162. package/dist/forms/FileField.d.ts +2 -4
  163. package/dist/forms/FileField.d.ts.map +1 -1
  164. package/dist/forms/FormClient.d.ts +6 -2
  165. package/dist/forms/FormClient.d.ts.map +1 -1
  166. package/dist/forms/FormEnhancer.d.ts +2 -1
  167. package/dist/forms/FormEnhancer.d.ts.map +1 -1
  168. package/dist/forms/FormField.d.ts.map +1 -1
  169. package/dist/forms/ManagedForm.d.ts +1 -1
  170. package/dist/forms/ManagedForm.d.ts.map +1 -1
  171. package/dist/forms/ServerForm.d.ts +3 -7
  172. package/dist/forms/ServerForm.d.ts.map +1 -1
  173. package/dist/forms/StaticForm.d.ts +17 -18
  174. package/dist/forms/StaticForm.d.ts.map +1 -1
  175. package/dist/forms/index.js +18 -18
  176. package/dist/forms/index.mjs +10 -10
  177. package/dist/forms/server.js +8 -13
  178. package/dist/forms/server.js.map +1 -1
  179. package/dist/forms/server.mjs +7 -12
  180. package/dist/forms/server.mjs.map +1 -1
  181. package/dist/forms/static.js +5 -8
  182. package/dist/forms/static.mjs +4 -7
  183. package/dist/forms/types.d.ts +3 -9
  184. package/dist/forms/types.d.ts.map +1 -1
  185. package/dist/images/index.js +11 -11
  186. package/dist/images/index.mjs +4 -4
  187. package/dist/index.js +63 -63
  188. package/dist/index.mjs +9 -9
  189. package/dist/layout/SiteKitClientProviders.d.ts +1 -3
  190. package/dist/layout/SiteKitClientProviders.d.ts.map +1 -1
  191. package/dist/layout/SiteKitLayout.d.ts.map +1 -1
  192. package/dist/layout/client.d.ts +1 -3
  193. package/dist/layout/client.d.ts.map +1 -1
  194. package/dist/layout/client.js +8 -8
  195. package/dist/layout/client.mjs +7 -7
  196. package/dist/layout/index.js +10 -11
  197. package/dist/layout/index.js.map +1 -1
  198. package/dist/layout/index.mjs +8 -9
  199. package/dist/layout/index.mjs.map +1 -1
  200. package/dist/llms/aiRobots.d.ts +22 -14
  201. package/dist/llms/aiRobots.d.ts.map +1 -1
  202. package/dist/llms/index.js +6 -6
  203. package/dist/llms/index.mjs +1 -1
  204. package/dist/maps/api.d.ts +2 -2
  205. package/dist/maps/index.js +6 -6
  206. package/dist/maps/index.js.map +1 -1
  207. package/dist/maps/index.mjs +4 -4
  208. package/dist/maps/index.mjs.map +1 -1
  209. package/dist/robots/index.js +8 -8
  210. package/dist/robots/index.mjs +2 -2
  211. package/dist/search/index.js +4 -4
  212. package/dist/search/index.mjs +3 -3
  213. package/dist/seo/client.js +5 -5
  214. package/dist/seo/client.mjs +4 -4
  215. package/dist/seo/index.js +5 -5
  216. package/dist/seo/index.mjs +4 -4
  217. package/dist/server/index.js +3 -3
  218. package/dist/server/index.mjs +2 -2
  219. package/dist/shared/publishCredential.d.ts +1 -9
  220. package/dist/shared/publishCredential.d.ts.map +1 -1
  221. package/dist/shared/version.d.ts +1 -1
  222. package/dist/signal/index.js +11 -11
  223. package/dist/signal/index.mjs +2 -2
  224. package/dist/sync/index.js +17 -17
  225. package/dist/sync/index.mjs +4 -4
  226. package/package.json +1 -1
  227. package/dist/ChatWidget-36IDUB53.mjs +0 -17
  228. package/dist/EngageWidget-ILRTLGBB.mjs +0 -12
  229. package/dist/EngageWidget-YHMSB4YE.js +0 -21
  230. package/dist/FileField-DXGPA4OB.mjs.map +0 -1
  231. package/dist/FileField-LMSLNNRX.js.map +0 -1
  232. package/dist/ManagedForm-AIPXF5QY.mjs +0 -16
  233. package/dist/ManagedForm-T464AA5B.js +0 -25
  234. package/dist/SitemapSync-MT3I4W3B.js +0 -18
  235. package/dist/SitemapSync-RG554AJR.mjs +0 -9
  236. package/dist/chunk-4HSZPHF7.mjs.map +0 -1
  237. package/dist/chunk-4KSE642V.js.map +0 -1
  238. package/dist/chunk-6FASIYCV.js +0 -224
  239. package/dist/chunk-6FASIYCV.js.map +0 -1
  240. package/dist/chunk-A3QAZJXC.js.map +0 -1
  241. package/dist/chunk-A4WYSHIX.js.map +0 -1
  242. package/dist/chunk-A5R62CXI.mjs.map +0 -1
  243. package/dist/chunk-C654VCWV.mjs +0 -6
  244. package/dist/chunk-HCN3IKMW.mjs.map +0 -1
  245. package/dist/chunk-HIG7COWF.mjs +0 -60
  246. package/dist/chunk-HIG7COWF.mjs.map +0 -1
  247. package/dist/chunk-JPXT5LY2.js.map +0 -1
  248. package/dist/chunk-NO4JQ2G3.mjs.map +0 -1
  249. package/dist/chunk-NRBITVDK.js.map +0 -1
  250. package/dist/chunk-QRL3QDUE.js.map +0 -1
  251. package/dist/chunk-RH46WZRN.mjs +0 -219
  252. package/dist/chunk-RH46WZRN.mjs.map +0 -1
  253. package/dist/chunk-TDJZFBHI.mjs.map +0 -1
  254. package/dist/chunk-U274XAMD.js.map +0 -1
  255. package/dist/chunk-VJV7WUR2.mjs.map +0 -1
  256. package/dist/chunk-XA2GJFVM.js.map +0 -1
  257. package/dist/chunk-XV2FFSJU.mjs.map +0 -1
  258. package/dist/chunk-YCE6HRWW.js.map +0 -1
  259. package/dist/chunk-YUCKBIRE.mjs.map +0 -1
  260. package/dist/chunk-ZKOQCKOR.js +0 -8
  261. package/dist/forms/native-fallback.d.ts +0 -41
  262. package/dist/forms/native-fallback.d.ts.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkQRL3QDUE_js = require('./chunk-QRL3QDUE.js');
4
- var chunkXA2GJFVM_js = require('./chunk-XA2GJFVM.js');
5
- var chunk6FASIYCV_js = require('./chunk-6FASIYCV.js');
3
+ var chunk7RLL67F3_js = require('./chunk-7RLL67F3.js');
4
+ var chunkRI6DFQCA_js = require('./chunk-RI6DFQCA.js');
5
+ var chunkTULCHQX2_js = require('./chunk-TULCHQX2.js');
6
6
  var chunkKHPJ3CEL_js = require('./chunk-KHPJ3CEL.js');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
@@ -12,9 +12,9 @@ function visibleStaticFields(config) {
12
12
  const firstStepId = config.steps?.[0]?.id;
13
13
  return all.filter((f) => !f.step_id || f.step_id === firstStepId);
14
14
  }
15
- function StaticForm({ config: raw, className, nativeReturnTo }) {
15
+ function StaticForm({ config: raw, className }) {
16
16
  if (!raw) return null;
17
- const config = chunk6FASIYCV_js.normalizeFormConfig(raw);
17
+ const config = chunkTULCHQX2_js.normalizeFormConfig(raw);
18
18
  const fields = visibleStaticFields(config);
19
19
  const honeypotFieldName = config.honeypot_field || chunkKHPJ3CEL_js.DEFAULT_HONEYPOT_FIELD;
20
20
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -23,24 +23,23 @@ function StaticForm({ config: raw, className, nativeReturnTo }) {
23
23
  "data-sk-state": "idle",
24
24
  "data-sk-mount": "shell",
25
25
  className: `sk-form ${className || ""}`,
26
- ...chunkQRL3QDUE_js.nativeFormProps(config),
26
+ method: "post",
27
27
  children: [
28
28
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-form__step", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-form__fields", children: fields.map((field) => /* @__PURE__ */ jsxRuntime.jsx(
29
29
  "div",
30
30
  {
31
31
  className: `sk-form__field-wrapper sk-form__field-wrapper--${field.width || "full"}`,
32
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkXA2GJFVM_js.FormField, { field, value: field.default_value ?? "" })
32
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkRI6DFQCA_js.FormField, { field, value: field.default_value ?? "" })
33
33
  },
34
34
  field.id || field.slug
35
35
  )) }) }),
36
36
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sk-form__actions", style: { justifyContent: "flex-end" }, children: /* @__PURE__ */ jsxRuntime.jsx("button", { type: "submit", className: "sk-form__btn sk-form__btn--submit", children: config.submit_button_text || "Submit" }) }),
37
- config.honeypot_enabled && /* @__PURE__ */ jsxRuntime.jsx(chunkQRL3QDUE_js.HoneypotField, { name: honeypotFieldName }),
38
- /* @__PURE__ */ jsxRuntime.jsx(chunkQRL3QDUE_js.NativeFallbackFields, { config, returnTo: nativeReturnTo })
37
+ config.honeypot_enabled && /* @__PURE__ */ jsxRuntime.jsx(chunk7RLL67F3_js.HoneypotField, { name: honeypotFieldName })
39
38
  ]
40
39
  }
41
40
  );
42
41
  }
43
42
 
44
43
  exports.StaticForm = StaticForm;
45
- //# sourceMappingURL=chunk-YCE6HRWW.js.map
46
- //# sourceMappingURL=chunk-YCE6HRWW.js.map
44
+ //# sourceMappingURL=chunk-DV5KVNA7.js.map
45
+ //# sourceMappingURL=chunk-DV5KVNA7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/forms/StaticForm.tsx"],"names":["normalizeFormConfig","DEFAULT_HONEYPOT_FIELD","jsxs","jsx","FormField","HoneypotField"],"mappings":";;;;;;;;AA2DA,SAAS,oBAAoB,MAAA,EAA2B;AACtD,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,IAAU,EAAC;AAC9B,EAAA,IAAI,CAAC,MAAA,CAAO,aAAA,EAAe,OAAO,GAAA;AAGlC,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA,EAAG,EAAA;AACvC,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,OAAA,IAAW,CAAA,CAAE,OAAA,KAAY,WAAW,CAAA;AAClE;AAEO,SAAS,UAAA,CAAW,EAAE,MAAA,EAAQ,GAAA,EAAK,WAAU,EAAoB;AACtE,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,MAAM,MAAA,GAASA,qCAAoB,GAAU,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,iBAAA,GAAoB,OAAO,cAAA,IAAkBC,uCAAA;AAEnD,EAAA,uBACEC,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MAGC,eAAA,EAAc,MAAA;AAAA,MACd,eAAA,EAAc,OAAA;AAAA,MACd,SAAA,EAAW,CAAA,QAAA,EAAW,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,MACrC,MAAA,EAAO,MAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACXA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,CAAA;AAAA,YAGlF,yCAACC,0BAAA,EAAA,EAAU,KAAA,EAAc,KAAA,EAAO,KAAA,CAAM,iBAAiB,EAAA,EAAI;AAAA,WAAA;AAAA,UAJtD,KAAA,CAAM,MAAM,KAAA,CAAM;AAAA,SAM1B,GACH,CAAA,EACF,CAAA;AAAA,uCAEC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAmB,KAAA,EAAO,EAAE,gBAAgB,UAAA,EAAW,EACpE,QAAA,kBAAAD,cAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAU,qCAC7B,QAAA,EAAA,MAAA,CAAO,kBAAA,IAAsB,UAChC,CAAA,EACF,CAAA;AAAA,QAIC,MAAA,CAAO,gBAAA,oBAAoBA,cAAA,CAACE,8BAAA,EAAA,EAAc,MAAM,iBAAA,EAAmB;AAAA;AAAA;AAAA,GAEtE;AAEJ","file":"chunk-DV5KVNA7.js","sourcesContent":["/**\n * StaticForm — a complete, submittable managed form with ZERO client JavaScript.\n *\n * No `'use client'`. This renders in a Server Component, and what it emits is\n * a real `<form>`: every field, the honeypot and a submit button, in the HTML\n * where people and crawlers can read it. Submitting takes the enhancement\n * (<FormEnhancer>): since 6.3.2 there is no no-JavaScript POST. That path\n * (/api/public/forms/submit-native, a signed token in the page HTML) took\n * 10,500 bot submissions across the fleet and not one real lead, because a bot\n * only had to download the page to borrow the token. `method=\"post\"` stays so\n * a click before hydration never puts the visitor's details in a URL.\n *\n * ── Why this exists ─────────────────────────────────────────────────────\n *\n * ManagedForm was a client component for historical reasons that no longer\n * hold: it used to fetch its own config (getFormConfig removed that). Nobody\n * moved the boundary afterward, so every site that rendered a form paid for the\n * whole forms runtime — validation, spotlight, celebration, momentum — as an\n * INITIAL script, on the LCP-critical path.\n *\n * Measured on upforge.io's homepage: 48 KB of form code in the initial chunk\n * set cost 6 Lighthouse points (88 -> 82, LCP 3.8s -> 4.7s). Deferring the\n * client component recovered the score but deleted the form from the HTML,\n * taking the crawlable fields with it. Neither half was acceptable; a\n * server-rendered form is what makes both true at once.\n *\n * Pair it with <FormEnhancer> to upgrade this markup at idle. Never make this\n * file `'use client'`, and never import a hook into it.\n */\n\nimport React from 'react'\nimport { DEFAULT_HONEYPOT_FIELD } from './contract'\nimport { FormField } from './FormField'\nimport { HoneypotField } from './HoneypotField'\nimport { normalizeFormConfig } from './normalize-config'\nimport type { ManagedFormConfig } from './types'\n\nexport interface StaticFormProps {\n /**\n * RAW /api/public/forms/config payload from `getFormConfig`, or an\n * already-normalized config. Normalized here through the SAME function the\n * client fetch uses, so the shell and the enhancement cannot disagree about\n * field order, step count, or success copy.\n */\n config: Record<string, unknown> | ManagedFormConfig | null | undefined\n className?: string\n /**\n * @deprecated Ignored since 6.3.2. It set where the no-JavaScript form POST\n * returned to, and that path was removed (bots used it; no person ever did).\n * Kept so existing call sites still type-check.\n */\n nativeReturnTo?: string\n}\n\n/**\n * Fields the static shell can render meaningfully. Conditional logic is a\n * runtime concern (it depends on values the visitor has not entered yet), so\n * a conditional field renders here and the enhancement takes over hiding it.\n */\nfunction visibleStaticFields(config: ManagedFormConfig) {\n const all = config.fields || []\n if (!config.is_multi_step) return all\n // Multi-step is JS-only navigation, so the shell shows step one as a\n // preview of what the form asks for.\n const firstStepId = config.steps?.[0]?.id\n return all.filter((f) => !f.step_id || f.step_id === firstStepId)\n}\n\nexport function StaticForm({ config: raw, className }: StaticFormProps) {\n if (!raw) return null\n const config = normalizeFormConfig(raw as any)\n const fields = visibleStaticFields(config)\n const honeypotFieldName = config.honeypot_field || DEFAULT_HONEYPOT_FIELD\n\n return (\n <form\n // Matches FormClient's classic branch attribute-for-attribute so the\n // enhancement swap is invisible. Change one, change the other.\n data-sk-state=\"idle\"\n data-sk-mount=\"shell\"\n className={`sk-form ${className || ''}`}\n method=\"post\"\n >\n <div className=\"sk-form__step\">\n <div className=\"sk-form__fields\">\n {fields.map((field) => (\n <div\n key={field.id || field.slug}\n className={`sk-form__field-wrapper sk-form__field-wrapper--${field.width || 'full'}`}\n >\n {/* No onChange — FormField renders native uncontrolled controls. */}\n <FormField field={field} value={field.default_value ?? ''} />\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"sk-form__actions\" style={{ justifyContent: 'flex-end' }}>\n <button type=\"submit\" className=\"sk-form__btn sk-form__btn--submit\">\n {config.submit_button_text || 'Submit'}\n </button>\n </div>\n\n {/* Same trap the hydrated form uses; no state needed because the value\n is read and stripped server-side. */}\n {config.honeypot_enabled && <HoneypotField name={honeypotFieldName} />}\n\n </form>\n )\n}\n"]}
@@ -54,7 +54,7 @@ function useSignal() {
54
54
  return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
55
55
  }
56
56
  var LazySignalCore = dynamic(
57
- () => import('./SignalCore-O3GEJZCN.mjs').then((m) => ({ default: m.SignalCore })),
57
+ () => import('./SignalCore-OPQXRYKI.mjs').then((m) => ({ default: m.SignalCore })),
58
58
  { ssr: false }
59
59
  );
60
60
  function SignalBridge({
@@ -161,5 +161,5 @@ function useSignalExperiment(experimentId) {
161
161
  }
162
162
 
163
163
  export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome };
164
- //# sourceMappingURL=chunk-7YFUX2CL.mjs.map
165
- //# sourceMappingURL=chunk-7YFUX2CL.mjs.map
164
+ //# sourceMappingURL=chunk-DVAAKEMG.mjs.map
165
+ //# sourceMappingURL=chunk-DVAAKEMG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/signal/store.ts","../src/signal/SignalBridge.tsx"],"names":[],"mappings":";;;;;AAyBA,IAAM,gBAAwC,EAAC;AAC/C,IAAM,kBAAmC,EAAC;AAC1C,IAAM,WAAA,GAAc,GAAA;AACpB,IAAI,cAAA,GAAiB,KAAA;AAGrB,IAAM,IAAA,GAA2B,OAAO,MAAA,CAAO;AAAA,EAC7C,MAAA,EAAQ,IAAA;AAAA,EACR,OAAA,EAAS,IAAA;AAAA,EACT,KAAA,EAAO,IAAA;AAAA,EACP,UAAA,EAAY,CAAC,KAAA,KAAgC;AAC3C,IAAA,IAAI,aAAA,CAAc,MAAA,GAAS,WAAA,EAAa,aAAA,CAAc,KAAK,KAAK,CAAA;AAAA,SAAA,IACvD,CAAC,cAAA,EAAgB;AACxB,MAAA,cAAA,GAAiB,IAAA;AACjB,MAAA,OAAA,CAAQ,KAAK,iHAA4G,CAAA;AAAA,IAC3H;AAAA,EACF,CAAA;AAAA,EACA,YAAA,EAAc,CAAC,OAAA,KAA2B;AACxC,IAAA,IAAI,eAAA,CAAgB,MAAA,GAAS,WAAA,EAAa,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,EACxE,CAAA;AAAA,EACA,eAAe,MAAM,IAAA;AAAA,EACrB,eAAe,YAAY;AAAA,EAAC;AAC9B,CAAC,CAAA;AAED,IAAI,OAAA,GAA8B,IAAA;AAClC,IAAM,SAAA,uBAAgB,GAAA,EAAgB;AAEtC,SAAS,IAAA,GAAO;AACd,EAAA,KAAA,MAAW,CAAA,IAAK,WAAW,CAAA,EAAE;AAC/B;AAGO,SAAS,cAAc,KAAA,EAAiC;AAC7D,EAAA,MAAM,eAAe,OAAA,KAAY,IAAA;AACjC,EAAA,OAAA,GAAU,KAAA;AACV,EAAA,IAAI,YAAA,EAAc;AAGhB,IAAA,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAK,KAAA,CAAM,UAAA,CAAW,CAAC,CAAC,CAAA;AACxD,IAAA,eAAA,CAAgB,MAAA,CAAO,CAAC,CAAA,CAAE,OAAA,CAAQ,OAAK,KAAA,CAAM,YAAA,CAAa,CAAC,CAAC,CAAA;AAAA,EAC9D;AACA,EAAA,IAAA,EAAK;AACP;AAGO,SAAS,WAAA,GAAoB;AAClC,EAAA,OAAA,GAAU,IAAA;AACV,EAAA,IAAA,EAAK;AACP;AAEA,SAAS,UAAU,QAAA,EAAsB;AACvC,EAAA,SAAA,CAAU,IAAI,QAAQ,CAAA;AACtB,EAAA,OAAO,MAAM,SAAA,CAAU,MAAA,CAAO,QAAQ,CAAA;AACxC;AAEA,IAAM,cAAc,MAAM,OAAA;AAC1B,IAAM,oBAAoB,MAAM,IAAA;AAMzB,SAAS,SAAA,GAAgC;AAC9C,EAAA,OAAO,oBAAA,CAAqB,SAAA,EAAW,WAAA,EAAa,iBAAiB,CAAA;AACvE;ACnDA,IAAM,cAAA,GAAiB,OAAA;AAAA,EACrB,MAAM,OAAO,2BAAc,CAAA,CAAE,IAAA,CAAK,QAAM,EAAE,OAAA,EAAS,CAAA,CAAE,UAAA,EAAW,CAAE,CAAA;AAAA,EAClE,EAAE,KAAK,KAAA;AACT,CAAA;AAcO,SAAS,YAAA,CAAa;AAAA,EAC3B,OAAA,GAAU,IAAA;AAAA,EACV,QAAA,GAAW,IAAA;AAAA,EACX,WAAA,GAAc,IAAA;AAAA,EACd,gBAAA,GAAmB,IAAA;AAAA,EACnB,SAAA,EAAW,iBAAA;AAAA,EACX,SAAA,EAAW,iBAAA;AAAA,EACX,eAAA;AAAA,EACA;AACF,CAAA,EAAsB;AACpB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAA8B,IAAI,CAAA;AAC9D,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AAErD,EAAA,MAAM,OAAA,GAAU,OAA6B,IAAI,CAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,MAAA,CAA+B,EAAE,CAAA;AAC1D,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAwB,EAAE,CAAA;AAErD,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,KAAA,KAA2B;AAC1D,IAAA,SAAA,CAAU,MAAM,MAAM,CAAA;AACtB,IAAA,UAAA,CAAW,MAAM,OAAO,CAAA;AACxB,IAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,EACtB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,CAAC,GAAA,KAA8B;AAChE,IAAA,OAAA,CAAQ,OAAA,GAAU,GAAA;AAClB,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,gBAAA,CAAiB,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAE,QAAQ,CAAA,KAAA,KAAS,GAAA,CAAI,UAAA,CAAW,KAAK,CAAC,CAAA;AACzE,MAAA,kBAAA,CAAmB,OAAA,CAAQ,OAAO,CAAC,CAAA,CAAE,QAAQ,CAAA,OAAA,KAAW,GAAA,CAAI,YAAA,CAAa,OAAO,CAAC,CAAA;AAAA,IACnF;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,CAAC,KAAA,KAAgC;AAC9D,IAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,MAAA,OAAA,CAAQ,OAAA,CAAQ,WAAW,KAAK,CAAA;AAAA,IAClC,CAAA,MAAO;AACL,MAAA,gBAAA,CAAiB,OAAA,CAAQ,KAAK,KAAK,CAAA;AAAA,IACrC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,WAAA,CAAY,CAAC,OAAA,KAA2B;AAC3D,IAAA,IAAI,QAAQ,OAAA,EAAS;AACnB,MAAA,OAAA,CAAQ,OAAA,CAAQ,aAAa,OAAO,CAAA;AAAA,IACtC,CAAA,MAAO;AACL,MAAA,kBAAA,CAAmB,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,IACzC;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,CAAC,YAAA,KAAsD;AAGvF,IAAA,OAAO,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAc,YAAY,CAAA,IAAK,IAAA;AAAA,EACzD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,YAAY,YAAY;AAC5C,IAAA,MAAM,OAAA,CAAQ,SAAS,aAAA,EAAc;AAAA,EACvC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAe,QAA4B,OAAO;AAAA,IACtD,MAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,CAAA,EAAI,CAAC,MAAA,EAAQ,OAAA,EAAS,OAAO,UAAA,EAAY,YAAA,EAAc,aAAA,EAAe,aAAa,CAAC,CAAA;AAIpF,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,aAAA,CAAc,YAAY,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAA,SAAA,CAAU,MAAM,MAAM,WAAA,EAAY,EAAG,EAAE,CAAA;AAEvC,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,OAAA,oBACC,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,QAAA;AAAA,QACA,WAAA;AAAA,QACA,gBAAA;AAAA,QACA,iBAAA;AAAA,QACA,iBAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA,EAAY,cAAA;AAAA,QACZ,OAAA,EAAS;AAAA;AAAA;AACX,GAAA,EAEJ,CAAA;AAEJ;AASO,SAAS,eAAA,GAAuC;AACrD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAC7B,EAAA,OAAO,MAAA;AACT;AAKO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,SAAA,EAAU;AACjC,EAAA,OAAO,UAAA;AACT;AAKO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,SAAA,EAAU;AACnC,EAAA,OAAO,EAAE,YAAA,EAAa;AACxB;AAKO,SAAS,oBAAoB,YAAA,EAIlC;AACA,EAAA,MAAM,EAAE,aAAA,EAAe,MAAA,EAAO,GAAI,SAAA,EAAU;AAC5C,EAAA,MAAM,UAAA,GAAa,cAAc,YAAY,CAAA;AAG7C,EAAA,MAAM,aAAa,MAAA,EAAQ,WAAA,EAAa,KAAK,CAAA,CAAA,KAAK,CAAA,CAAE,OAAO,YAAY,CAAA;AACvE,EAAA,MAAM,SAAA,GAAY,YAAY,MAAA,KAAW,SAAA;AAEzC,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,YAAY,UAAA,GAAa,IAAA;AAAA,IACrC,OAAA,EAAS,SAAA,IAAa,UAAA,GAAa,UAAA,CAAW,WAAA,GAAc,IAAA;AAAA,IAC5D,SAAA,EAAW,CAAC,UAAA,IAAc,UAAA,CAAW,WAAA,KAAgB;AAAA,GACvD;AACF","file":"chunk-7YFUX2CL.mjs","sourcesContent":["'use client'\n\n/**\n * Signal store — module singleton behind useSignal().\n *\n * 4.0: SignalBridge no longer wraps page children in a React context; it\n * mounts as a childless sibling and publishes its API here. useSignal()\n * subscribes via useSyncExternalStore, so consumers work anywhere in the\n * tree — and BEFORE the bridge mounts, they get a buffering stub whose\n * trackEvent/trackOutcome queue calls that the bridge drains on publish.\n * getExperiment returns null pre-publish, identical to the pre-config\n * `loading` window consumers already handle.\n *\n * Behavior change vs 3.x (major): useSignal() no longer throws outside a\n * SignalBridge. With signal disabled it stays a bounded no-op stub — a\n * one-time debug warning fires instead of a crash.\n */\n\nimport { useSyncExternalStore } from 'react'\nimport type {\n SignalContextValue,\n SignalEvent,\n SignalOutcome,\n} from './types'\n\nconst pendingEvents: Partial<SignalEvent>[] = []\nconst pendingOutcomes: SignalOutcome[] = []\nconst MAX_PENDING = 100\nlet warnedNoBridge = false\n\n/** Frozen pre-bridge stub — stable reference (useSyncExternalStore requirement). */\nconst STUB: SignalContextValue = Object.freeze({\n config: null,\n loading: true,\n error: null,\n trackEvent: (event: Partial<SignalEvent>) => {\n if (pendingEvents.length < MAX_PENDING) pendingEvents.push(event)\n else if (!warnedNoBridge) {\n warnedNoBridge = true\n console.warn('[site-kit] Signal events are queuing but no SignalBridge has mounted — is signal enabled on SiteKitLayout?')\n }\n },\n trackOutcome: (outcome: SignalOutcome) => {\n if (pendingOutcomes.length < MAX_PENDING) pendingOutcomes.push(outcome)\n },\n getExperiment: () => null,\n refreshConfig: async () => {},\n})\n\nlet current: SignalContextValue = STUB\nconst listeners = new Set<() => void>()\n\nfunction emit() {\n for (const l of listeners) l()\n}\n\n/** Bridge-side: publish the live API (called whenever its value changes). */\nexport function publishSignal(value: SignalContextValue): void {\n const firstPublish = current === STUB\n current = value\n if (firstPublish) {\n // Drain calls made before the bridge mounted. The bridge's own trackEvent\n // buffers again internally until SignalCore loads, so nothing is lost.\n pendingEvents.splice(0).forEach(e => value.trackEvent(e))\n pendingOutcomes.splice(0).forEach(o => value.trackOutcome(o))\n }\n emit()\n}\n\n/** Bridge-side: reset on unmount so a remount starts clean (tests, HMR). */\nexport function resetSignal(): void {\n current = STUB\n emit()\n}\n\nfunction subscribe(onChange: () => void) {\n listeners.add(onChange)\n return () => listeners.delete(onChange)\n}\n\nconst getSnapshot = () => current\nconst getServerSnapshot = () => STUB\n\n/**\n * Access Signal (experiments, behavioral events) from anywhere in the tree.\n * No provider required — see module docs for pre-mount buffering semantics.\n */\nexport function useSignal(): SignalContextValue {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","/**\n * @sonordev/site-kit/signal - SignalBridge\n *\n * Central coordination layer for Signal AI integration.\n *\n * Architecture (2026-07 perf release): SignalBridge is a tiny SSR-SAFE context shell. It\n * renders {children} immediately — children server-render and hydrate\n * normally, no ssr:false wrapper — and lazy-loads the heavy machinery\n * (SignalCore: config fetch, SSE streaming, experiment assignment, event\n * queue, behavior tracking) as a CHILDLESS sibling. The core registers its\n * imperative API into the shell on mount; `trackEvent`/`trackOutcome` calls\n * made before the core is ready are buffered and drained on registration.\n *\n * This removes the old failure mode where enabling `signal` de-opted the\n * whole route to client rendering (the same SSR bailout the analytics\n * sibling-mount fixed) — the #1 recommendation of the 2026-07 perf audit.\n *\n * The core is NOT idle-deferred: experiment variants must apply as early as\n * possible, so it starts loading on hydration.\n */\n\n'use client'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport dynamic from 'next/dynamic'\nimport type { SignalCoreApi, SignalCoreState } from './SignalCore'\nimport type {\n SignalConfig,\n SignalContextValue,\n SignalBridgeProps,\n SignalEvent,\n SignalOutcome,\n ExperimentAssignment,\n} from './types'\n\n// Heavy machinery — loaded client-side only, never wraps content.\nimport { publishSignal, resetSignal, useSignal } from './store'\n\nconst LazySignalCore = dynamic(\n () => import('./SignalCore').then(m => ({ default: m.SignalCore })),\n { ssr: false },\n)\n\n// ============================================\n// Context\n// ============================================\n\n// 4.0: the context is gone. useSignal() reads the module store, so consumers\n// work anywhere in the tree and SignalBridge mounts as a childless sibling.\nexport { useSignal } from './store'\n\n// ============================================\n// SignalBridge Component (shell)\n// ============================================\n\nexport function SignalBridge({\n enabled = true,\n realtime = true,\n experiments = true,\n behaviorTracking = true,\n visitorId: externalVisitorId,\n sessionId: externalSessionId,\n pageMetadataRef,\n children,\n}: SignalBridgeProps) {\n const [config, setConfig] = useState<SignalConfig | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<Error | null>(null)\n\n const coreRef = useRef<SignalCoreApi | null>(null)\n // Calls made before the core chunk loads are buffered here and drained on\n // registration — consumers can call trackEvent/trackOutcome from first render.\n const pendingEventsRef = useRef<Partial<SignalEvent>[]>([])\n const pendingOutcomesRef = useRef<SignalOutcome[]>([])\n\n const handleState = useCallback((state: SignalCoreState) => {\n setConfig(state.config)\n setLoading(state.loading)\n setError(state.error)\n }, [])\n\n const handleRegister = useCallback((api: SignalCoreApi | null) => {\n coreRef.current = api\n if (api) {\n pendingEventsRef.current.splice(0).forEach(event => api.trackEvent(event))\n pendingOutcomesRef.current.splice(0).forEach(outcome => api.trackOutcome(outcome))\n }\n }, [])\n\n const trackEvent = useCallback((event: Partial<SignalEvent>) => {\n if (coreRef.current) {\n coreRef.current.trackEvent(event)\n } else {\n pendingEventsRef.current.push(event)\n }\n }, [])\n\n const trackOutcome = useCallback((outcome: SignalOutcome) => {\n if (coreRef.current) {\n coreRef.current.trackOutcome(outcome)\n } else {\n pendingOutcomesRef.current.push(outcome)\n }\n }, [])\n\n const getExperiment = useCallback((experimentId: string): ExperimentAssignment | null => {\n // null before the core loads — identical to the pre-config-fetch behavior\n // consumers already handle via `loading`.\n return coreRef.current?.getExperiment(experimentId) ?? null\n }, [])\n\n const refreshConfig = useCallback(async () => {\n await coreRef.current?.refreshConfig()\n }, [])\n\n const contextValue = useMemo<SignalContextValue>(() => ({\n config,\n loading,\n error,\n trackEvent,\n trackOutcome,\n getExperiment,\n refreshConfig,\n }), [config, loading, error, trackEvent, trackOutcome, getExperiment, refreshConfig])\n\n // Publish to the module store (drains pre-mount buffered calls on first\n // publish); reset on unmount so tests/HMR start clean.\n useEffect(() => {\n publishSignal(contextValue)\n }, [contextValue])\n useEffect(() => () => resetSignal(), [])\n\n return (\n <>\n {children}\n {enabled && (\n <LazySignalCore\n enabled={enabled}\n realtime={realtime}\n experiments={experiments}\n behaviorTracking={behaviorTracking}\n externalVisitorId={externalVisitorId}\n externalSessionId={externalSessionId}\n pageMetadataRef={pageMetadataRef}\n onRegister={handleRegister}\n onState={handleState}\n />\n )}\n </>\n )\n}\n\n// ============================================\n// Convenience Hooks\n// ============================================\n\n/**\n * Hook to access Signal config\n */\nexport function useSignalConfig(): SignalConfig | null {\n const { config } = useSignal()\n return config\n}\n\n/**\n * Hook for tracking events\n */\nexport function useSignalEvent() {\n const { trackEvent } = useSignal()\n return trackEvent\n}\n\n/**\n * Hook for tracking outcomes/conversions\n */\nexport function useSignalOutcome() {\n const { trackOutcome } = useSignal()\n return { trackOutcome }\n}\n\n/**\n * Hook for experiment assignment\n */\nexport function useSignalExperiment(experimentId: string): {\n assignment: ExperimentAssignment | null\n variant: string | null\n isControl: boolean\n} {\n const { getExperiment, config } = useSignal()\n const assignment = getExperiment(experimentId)\n\n // Check if experiment is running\n const experiment = config?.experiments?.find(e => e.id === experimentId)\n const isRunning = experiment?.status === 'running'\n\n return {\n assignment: isRunning ? assignment : null,\n variant: isRunning && assignment ? assignment.variant_key : null,\n isControl: !assignment || assignment.variant_key === 'control',\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/signal/store.ts","../src/signal/SignalBridge.tsx"],"names":[],"mappings":"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","file":"chunk-DVAAKEMG.mjs","sourcesContent":["'use client'\n\n/**\n * Signal store — module singleton behind useSignal().\n *\n * 4.0: SignalBridge no longer wraps page children in a React context; it\n * mounts as a childless sibling and publishes its API here. useSignal()\n * subscribes via useSyncExternalStore, so consumers work anywhere in the\n * tree — and BEFORE the bridge mounts, they get a buffering stub whose\n * trackEvent/trackOutcome queue calls that the bridge drains on publish.\n * getExperiment returns null pre-publish, identical to the pre-config\n * `loading` window consumers already handle.\n *\n * Behavior change vs 3.x (major): useSignal() no longer throws outside a\n * SignalBridge. With signal disabled it stays a bounded no-op stub — a\n * one-time debug warning fires instead of a crash.\n */\n\nimport { useSyncExternalStore } from 'react'\nimport type {\n SignalContextValue,\n SignalEvent,\n SignalOutcome,\n} from './types'\n\nconst pendingEvents: Partial<SignalEvent>[] = []\nconst pendingOutcomes: SignalOutcome[] = []\nconst MAX_PENDING = 100\nlet warnedNoBridge = false\n\n/** Frozen pre-bridge stub — stable reference (useSyncExternalStore requirement). */\nconst STUB: SignalContextValue = Object.freeze({\n config: null,\n loading: true,\n error: null,\n trackEvent: (event: Partial<SignalEvent>) => {\n if (pendingEvents.length < MAX_PENDING) pendingEvents.push(event)\n else if (!warnedNoBridge) {\n warnedNoBridge = true\n console.warn('[site-kit] Signal events are queuing but no SignalBridge has mounted — is signal enabled on SiteKitLayout?')\n }\n },\n trackOutcome: (outcome: SignalOutcome) => {\n if (pendingOutcomes.length < MAX_PENDING) pendingOutcomes.push(outcome)\n },\n getExperiment: () => null,\n refreshConfig: async () => {},\n})\n\nlet current: SignalContextValue = STUB\nconst listeners = new Set<() => void>()\n\nfunction emit() {\n for (const l of listeners) l()\n}\n\n/** Bridge-side: publish the live API (called whenever its value changes). */\nexport function publishSignal(value: SignalContextValue): void {\n const firstPublish = current === STUB\n current = value\n if (firstPublish) {\n // Drain calls made before the bridge mounted. The bridge's own trackEvent\n // buffers again internally until SignalCore loads, so nothing is lost.\n pendingEvents.splice(0).forEach(e => value.trackEvent(e))\n pendingOutcomes.splice(0).forEach(o => value.trackOutcome(o))\n }\n emit()\n}\n\n/** Bridge-side: reset on unmount so a remount starts clean (tests, HMR). */\nexport function resetSignal(): void {\n current = STUB\n emit()\n}\n\nfunction subscribe(onChange: () => void) {\n listeners.add(onChange)\n return () => listeners.delete(onChange)\n}\n\nconst getSnapshot = () => current\nconst getServerSnapshot = () => STUB\n\n/**\n * Access Signal (experiments, behavioral events) from anywhere in the tree.\n * No provider required — see module docs for pre-mount buffering semantics.\n */\nexport function useSignal(): SignalContextValue {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n","/**\n * @sonordev/site-kit/signal - SignalBridge\n *\n * Central coordination layer for Signal AI integration.\n *\n * Architecture (2026-07 perf release): SignalBridge is a tiny SSR-SAFE context shell. It\n * renders {children} immediately — children server-render and hydrate\n * normally, no ssr:false wrapper — and lazy-loads the heavy machinery\n * (SignalCore: config fetch, SSE streaming, experiment assignment, event\n * queue, behavior tracking) as a CHILDLESS sibling. The core registers its\n * imperative API into the shell on mount; `trackEvent`/`trackOutcome` calls\n * made before the core is ready are buffered and drained on registration.\n *\n * This removes the old failure mode where enabling `signal` de-opted the\n * whole route to client rendering (the same SSR bailout the analytics\n * sibling-mount fixed) — the #1 recommendation of the 2026-07 perf audit.\n *\n * The core is NOT idle-deferred: experiment variants must apply as early as\n * possible, so it starts loading on hydration.\n */\n\n'use client'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport dynamic from 'next/dynamic'\nimport type { SignalCoreApi, SignalCoreState } from './SignalCore'\nimport type {\n SignalConfig,\n SignalContextValue,\n SignalBridgeProps,\n SignalEvent,\n SignalOutcome,\n ExperimentAssignment,\n} from './types'\n\n// Heavy machinery — loaded client-side only, never wraps content.\nimport { publishSignal, resetSignal, useSignal } from './store'\n\nconst LazySignalCore = dynamic(\n () => import('./SignalCore').then(m => ({ default: m.SignalCore })),\n { ssr: false },\n)\n\n// ============================================\n// Context\n// ============================================\n\n// 4.0: the context is gone. useSignal() reads the module store, so consumers\n// work anywhere in the tree and SignalBridge mounts as a childless sibling.\nexport { useSignal } from './store'\n\n// ============================================\n// SignalBridge Component (shell)\n// ============================================\n\nexport function SignalBridge({\n enabled = true,\n realtime = true,\n experiments = true,\n behaviorTracking = true,\n visitorId: externalVisitorId,\n sessionId: externalSessionId,\n pageMetadataRef,\n children,\n}: SignalBridgeProps) {\n const [config, setConfig] = useState<SignalConfig | null>(null)\n const [loading, setLoading] = useState(true)\n const [error, setError] = useState<Error | null>(null)\n\n const coreRef = useRef<SignalCoreApi | null>(null)\n // Calls made before the core chunk loads are buffered here and drained on\n // registration — consumers can call trackEvent/trackOutcome from first render.\n const pendingEventsRef = useRef<Partial<SignalEvent>[]>([])\n const pendingOutcomesRef = useRef<SignalOutcome[]>([])\n\n const handleState = useCallback((state: SignalCoreState) => {\n setConfig(state.config)\n setLoading(state.loading)\n setError(state.error)\n }, [])\n\n const handleRegister = useCallback((api: SignalCoreApi | null) => {\n coreRef.current = api\n if (api) {\n pendingEventsRef.current.splice(0).forEach(event => api.trackEvent(event))\n pendingOutcomesRef.current.splice(0).forEach(outcome => api.trackOutcome(outcome))\n }\n }, [])\n\n const trackEvent = useCallback((event: Partial<SignalEvent>) => {\n if (coreRef.current) {\n coreRef.current.trackEvent(event)\n } else {\n pendingEventsRef.current.push(event)\n }\n }, [])\n\n const trackOutcome = useCallback((outcome: SignalOutcome) => {\n if (coreRef.current) {\n coreRef.current.trackOutcome(outcome)\n } else {\n pendingOutcomesRef.current.push(outcome)\n }\n }, [])\n\n const getExperiment = useCallback((experimentId: string): ExperimentAssignment | null => {\n // null before the core loads — identical to the pre-config-fetch behavior\n // consumers already handle via `loading`.\n return coreRef.current?.getExperiment(experimentId) ?? null\n }, [])\n\n const refreshConfig = useCallback(async () => {\n await coreRef.current?.refreshConfig()\n }, [])\n\n const contextValue = useMemo<SignalContextValue>(() => ({\n config,\n loading,\n error,\n trackEvent,\n trackOutcome,\n getExperiment,\n refreshConfig,\n }), [config, loading, error, trackEvent, trackOutcome, getExperiment, refreshConfig])\n\n // Publish to the module store (drains pre-mount buffered calls on first\n // publish); reset on unmount so tests/HMR start clean.\n useEffect(() => {\n publishSignal(contextValue)\n }, [contextValue])\n useEffect(() => () => resetSignal(), [])\n\n return (\n <>\n {children}\n {enabled && (\n <LazySignalCore\n enabled={enabled}\n realtime={realtime}\n experiments={experiments}\n behaviorTracking={behaviorTracking}\n externalVisitorId={externalVisitorId}\n externalSessionId={externalSessionId}\n pageMetadataRef={pageMetadataRef}\n onRegister={handleRegister}\n onState={handleState}\n />\n )}\n </>\n )\n}\n\n// ============================================\n// Convenience Hooks\n// ============================================\n\n/**\n * Hook to access Signal config\n */\nexport function useSignalConfig(): SignalConfig | null {\n const { config } = useSignal()\n return config\n}\n\n/**\n * Hook for tracking events\n */\nexport function useSignalEvent() {\n const { trackEvent } = useSignal()\n return trackEvent\n}\n\n/**\n * Hook for tracking outcomes/conversions\n */\nexport function useSignalOutcome() {\n const { trackOutcome } = useSignal()\n return { trackOutcome }\n}\n\n/**\n * Hook for experiment assignment\n */\nexport function useSignalExperiment(experimentId: string): {\n assignment: ExperimentAssignment | null\n variant: string | null\n isControl: boolean\n} {\n const { getExperiment, config } = useSignal()\n const assignment = getExperiment(experimentId)\n\n // Check if experiment is running\n const experiment = config?.experiments?.find(e => e.id === experimentId)\n const isRunning = experiment?.status === 'running'\n\n return {\n assignment: isRunning ? assignment : null,\n variant: isRunning && assignment ? assignment.variant_key : null,\n isControl: !assignment || assignment.variant_key === 'control',\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { sonorFetch } from './chunk-XNZ2WFXR.mjs';
2
+ import { sonorFetch } from './chunk-WS3J5T3K.mjs';
3
3
  import { useState, useRef, useMemo, useCallback, useEffect, useId } from 'react';
4
4
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
5
 
@@ -1412,5 +1412,5 @@ var WIDGET_CSS = `
1412
1412
  `;
1413
1413
 
1414
1414
  export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold };
1415
- //# sourceMappingURL=chunk-3EOUKWHB.mjs.map
1416
- //# sourceMappingURL=chunk-3EOUKWHB.mjs.map
1415
+ //# sourceMappingURL=chunk-DXSSC3KO.mjs.map
1416
+ //# sourceMappingURL=chunk-DXSSC3KO.mjs.map