@sonordev/site-kit 6.1.3 → 6.3.0

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 (260) hide show
  1. package/agent-manifest.json +7 -1
  2. package/dist/{AnalyticsProvider-QK6XBDEJ.js → AnalyticsProvider-JKWJGIH2.js} +10 -10
  3. package/dist/{AnalyticsProvider-QK6XBDEJ.js.map → AnalyticsProvider-JKWJGIH2.js.map} +1 -1
  4. package/dist/{AnalyticsProvider-TIJWTISP.mjs → AnalyticsProvider-T4UBUUV4.mjs} +6 -6
  5. package/dist/{AnalyticsProvider-TIJWTISP.mjs.map → AnalyticsProvider-T4UBUUV4.mjs.map} +1 -1
  6. package/dist/{ArticleViewTracker-I66RBWDK.mjs → ArticleViewTracker-AYYSXNJS.mjs} +5 -5
  7. package/dist/{ArticleViewTracker-I66RBWDK.mjs.map → ArticleViewTracker-AYYSXNJS.mjs.map} +1 -1
  8. package/dist/{ArticleViewTracker-ALE672ZR.js → ArticleViewTracker-F5IP734Z.js} +6 -6
  9. package/dist/{ArticleViewTracker-ALE672ZR.js.map → ArticleViewTracker-F5IP734Z.js.map} +1 -1
  10. package/dist/ChatWidget-3RVBHZCS.mjs +17 -0
  11. package/dist/{ChatWidget-LNOY4TUZ.mjs.map → ChatWidget-3RVBHZCS.mjs.map} +1 -1
  12. package/dist/ChatWidget-RFSI2XNU.js +34 -0
  13. package/dist/{ChatWidget-566CQUN6.js.map → ChatWidget-RFSI2XNU.js.map} +1 -1
  14. package/dist/EngageWidget-QO5S6YV5.js +21 -0
  15. package/dist/{EngageWidget-DF47YUHQ.js.map → EngageWidget-QO5S6YV5.js.map} +1 -1
  16. package/dist/EngageWidget-TE6S5KYT.mjs +12 -0
  17. package/dist/{EngageWidget-IGF7SC3R.mjs.map → EngageWidget-TE6S5KYT.mjs.map} +1 -1
  18. package/dist/{FileField-IK6E5IOC.js → FileField-JQSRKWXW.js} +6 -6
  19. package/dist/{FileField-IK6E5IOC.js.map → FileField-JQSRKWXW.js.map} +1 -1
  20. package/dist/{FileField-AG63W2BC.mjs → FileField-OXZXB3UW.mjs} +5 -5
  21. package/dist/{FileField-AG63W2BC.mjs.map → FileField-OXZXB3UW.mjs.map} +1 -1
  22. package/dist/{FormSpotlight-6MUDJWW5.js → FormSpotlight-H2A3JIFI.js} +9 -9
  23. package/dist/{FormSpotlight-6MUDJWW5.js.map → FormSpotlight-H2A3JIFI.js.map} +1 -1
  24. package/dist/{FormSpotlight-H7V4GBXG.mjs → FormSpotlight-PZ5RLZRV.mjs} +3 -3
  25. package/dist/{FormSpotlight-H7V4GBXG.mjs.map → FormSpotlight-PZ5RLZRV.mjs.map} +1 -1
  26. package/dist/{FormStage-ACETL7SD.mjs → FormStage-CIHL7OBA.mjs} +3 -3
  27. package/dist/{FormStage-ACETL7SD.mjs.map → FormStage-CIHL7OBA.mjs.map} +1 -1
  28. package/dist/{FormStage-ZXZRZ2LS.js → FormStage-ZA2FABYQ.js} +9 -9
  29. package/dist/{FormStage-ZXZRZ2LS.js.map → FormStage-ZA2FABYQ.js.map} +1 -1
  30. package/dist/ManagedForm-BVLS2QZR.js +25 -0
  31. package/dist/{ManagedForm-4U54NPW2.js.map → ManagedForm-BVLS2QZR.js.map} +1 -1
  32. package/dist/ManagedForm-PTCWSTC5.mjs +16 -0
  33. package/dist/{ManagedForm-MOBWSG4D.mjs.map → ManagedForm-PTCWSTC5.mjs.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-5LBGBE2F.js → ManagedNewsletterForm-IB5VD43M.js} +8 -8
  35. package/dist/{ManagedNewsletterForm-5LBGBE2F.js.map → ManagedNewsletterForm-IB5VD43M.js.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-OV3OEMUP.mjs → ManagedNewsletterForm-WMCRFDL7.mjs} +7 -7
  37. package/dist/{ManagedNewsletterForm-OV3OEMUP.mjs.map → ManagedNewsletterForm-WMCRFDL7.mjs.map} +1 -1
  38. package/dist/{SignalCore-QCVR7TZV.js → SignalCore-Q57NY7EG.js} +11 -11
  39. package/dist/{SignalCore-QCVR7TZV.js.map → SignalCore-Q57NY7EG.js.map} +1 -1
  40. package/dist/{SignalCore-XM2MHEGR.mjs → SignalCore-R44AWPYN.mjs} +5 -5
  41. package/dist/{SignalCore-XM2MHEGR.mjs.map → SignalCore-R44AWPYN.mjs.map} +1 -1
  42. package/dist/SitemapSync-NICUUMQF.mjs +9 -0
  43. package/dist/{SitemapSync-74EVNOFQ.mjs.map → SitemapSync-NICUUMQF.mjs.map} +1 -1
  44. package/dist/SitemapSync-ZP4PKZZ3.js +18 -0
  45. package/dist/{SitemapSync-BQFZAE3X.js.map → SitemapSync-ZP4PKZZ3.js.map} +1 -1
  46. package/dist/admin-auth/index.d.ts +109 -0
  47. package/dist/admin-auth/index.d.ts.map +1 -0
  48. package/dist/admin-auth/index.js +0 -0
  49. package/dist/admin-auth/index.js.map +1 -0
  50. package/dist/admin-auth/index.mjs +0 -0
  51. package/dist/admin-auth/index.mjs.map +1 -0
  52. package/dist/admin-auth/session.d.ts +32 -0
  53. package/dist/admin-auth/session.d.ts.map +1 -0
  54. package/dist/analytics/index.js +9 -9
  55. package/dist/analytics/index.mjs +4 -4
  56. package/dist/articles/index.js +1 -1
  57. package/dist/articles/index.mjs +1 -1
  58. package/dist/articles/server-ui.js +1 -1
  59. package/dist/articles/server-ui.mjs +1 -1
  60. package/dist/{chunk-YK7SEUFJ.mjs → chunk-22MXW53O.mjs} +4 -4
  61. package/dist/{chunk-YK7SEUFJ.mjs.map → chunk-22MXW53O.mjs.map} +1 -1
  62. package/dist/{chunk-I7KIVKVW.js → chunk-2JZFTPPE.js} +3 -3
  63. package/dist/{chunk-I7KIVKVW.js.map → chunk-2JZFTPPE.js.map} +1 -1
  64. package/dist/{chunk-BGBP4UN4.js → chunk-4BQQGOHC.js} +4 -4
  65. package/dist/{chunk-BGBP4UN4.js.map → chunk-4BQQGOHC.js.map} +1 -1
  66. package/dist/{chunk-LXBPTKYT.mjs → chunk-5XLPWHQC.mjs} +4 -4
  67. package/dist/{chunk-LXBPTKYT.mjs.map → chunk-5XLPWHQC.mjs.map} +1 -1
  68. package/dist/{chunk-TIFVAASU.mjs → chunk-5YA6SI4Z.mjs} +2 -2
  69. package/dist/{chunk-CTAYH725.js → chunk-6AAT724D.js} +11 -11
  70. package/dist/{chunk-CTAYH725.js.map → chunk-6AAT724D.js.map} +1 -1
  71. package/dist/{chunk-AGEE4CGH.js → chunk-6AIXHYFO.js} +5 -5
  72. package/dist/{chunk-AGEE4CGH.js.map → chunk-6AIXHYFO.js.map} +1 -1
  73. package/dist/{chunk-I4PUQYBI.mjs → chunk-6SH6HLWS.mjs} +3 -3
  74. package/dist/{chunk-I4PUQYBI.mjs.map → chunk-6SH6HLWS.mjs.map} +1 -1
  75. package/dist/{chunk-S6CMQTVZ.js → chunk-72WO3AE5.js} +5 -5
  76. package/dist/{chunk-S6CMQTVZ.js.map → chunk-72WO3AE5.js.map} +1 -1
  77. package/dist/{chunk-AEW7EFYU.js → chunk-AEN7EL6N.js} +20 -6
  78. package/dist/chunk-AEN7EL6N.js.map +1 -0
  79. package/dist/{chunk-5IQOPL7T.mjs → chunk-BSTV3T6P.mjs} +3 -3
  80. package/dist/{chunk-5IQOPL7T.mjs.map → chunk-BSTV3T6P.mjs.map} +1 -1
  81. package/dist/{chunk-2SLA2LOD.js → chunk-C3MRX7NL.js} +12 -12
  82. package/dist/{chunk-2SLA2LOD.js.map → chunk-C3MRX7NL.js.map} +1 -1
  83. package/dist/{chunk-D5KKVWZK.mjs → chunk-CBZJNMYS.mjs} +3 -3
  84. package/dist/{chunk-D5KKVWZK.mjs.map → chunk-CBZJNMYS.mjs.map} +1 -1
  85. package/dist/chunk-COCYQHK3.mjs +6 -0
  86. package/dist/{chunk-5FBALULE.mjs.map → chunk-COCYQHK3.mjs.map} +1 -1
  87. package/dist/{chunk-PTQHPWEK.mjs → chunk-DFAW62AX.mjs} +151 -165
  88. package/dist/chunk-DFAW62AX.mjs.map +1 -0
  89. package/dist/{chunk-NRT7MOEO.mjs → chunk-DN6BLVU7.mjs} +4 -4
  90. package/dist/{chunk-NRT7MOEO.mjs.map → chunk-DN6BLVU7.mjs.map} +1 -1
  91. package/dist/{chunk-IUNFAKOS.mjs → chunk-ED5GOAF6.mjs} +3 -3
  92. package/dist/{chunk-IUNFAKOS.mjs.map → chunk-ED5GOAF6.mjs.map} +1 -1
  93. package/dist/{chunk-IZRVSIOK.js → chunk-F4DZDIR4.js} +4 -4
  94. package/dist/{chunk-IZRVSIOK.js.map → chunk-F4DZDIR4.js.map} +1 -1
  95. package/dist/{chunk-VDGCZVUF.js → chunk-FFE6P6PQ.js} +14 -14
  96. package/dist/{chunk-VDGCZVUF.js.map → chunk-FFE6P6PQ.js.map} +1 -1
  97. package/dist/{chunk-RQG7I6O4.js → chunk-GBOSAWBR.js} +4 -4
  98. package/dist/{chunk-RQG7I6O4.js.map → chunk-GBOSAWBR.js.map} +1 -1
  99. package/dist/{chunk-DVZ4BMXX.mjs → chunk-HQCWWQAI.mjs} +7 -7
  100. package/dist/{chunk-DVZ4BMXX.mjs.map → chunk-HQCWWQAI.mjs.map} +1 -1
  101. package/dist/{chunk-KDLN2MR5.js → chunk-I5XK32OJ.js} +18 -18
  102. package/dist/{chunk-KDLN2MR5.js.map → chunk-I5XK32OJ.js.map} +1 -1
  103. package/dist/{chunk-XXSSUCJB.js → chunk-I7AZC5ZQ.js} +2 -2
  104. package/dist/{chunk-RGXYE2ZI.mjs → chunk-IHG7W5JH.mjs} +4 -4
  105. package/dist/{chunk-RGXYE2ZI.mjs.map → chunk-IHG7W5JH.mjs.map} +1 -1
  106. package/dist/chunk-IMWON7OV.mjs +27 -0
  107. package/dist/chunk-IMWON7OV.mjs.map +1 -0
  108. package/dist/{chunk-KEEZX6Q4.js → chunk-JCBENABK.js} +3 -3
  109. package/dist/{chunk-KEEZX6Q4.js.map → chunk-JCBENABK.js.map} +1 -1
  110. package/dist/chunk-JLIL5EFG.js +8 -0
  111. package/dist/{chunk-OI3FCJSP.js.map → chunk-JLIL5EFG.js.map} +1 -1
  112. package/dist/{chunk-7K6L33BX.mjs → chunk-JOYMIGR2.mjs} +22 -22
  113. package/dist/{chunk-ATPQ6264.js → chunk-JS75ORH7.js} +24 -24
  114. package/dist/{chunk-3MLVI5DH.mjs → chunk-KLKUI3US.mjs} +3 -3
  115. package/dist/{chunk-3MLVI5DH.mjs.map → chunk-KLKUI3US.mjs.map} +1 -1
  116. package/dist/{chunk-XCOMBHLF.js → chunk-L6XXUNJB.js} +8 -8
  117. package/dist/{chunk-XCOMBHLF.js.map → chunk-L6XXUNJB.js.map} +1 -1
  118. package/dist/{chunk-OZTVJSFX.js → chunk-LIWPIG7U.js} +160 -172
  119. package/dist/chunk-LIWPIG7U.js.map +1 -0
  120. package/dist/{chunk-OWEJXMKY.mjs → chunk-M436JMD4.mjs} +3 -3
  121. package/dist/{chunk-OWEJXMKY.mjs.map → chunk-M436JMD4.mjs.map} +1 -1
  122. package/dist/{chunk-EVETX2XF.mjs → chunk-NCURAYKL.mjs} +4 -4
  123. package/dist/{chunk-EVETX2XF.mjs.map → chunk-NCURAYKL.mjs.map} +1 -1
  124. package/dist/{chunk-ZUQSVCMD.js → chunk-NN2YE5WT.js} +3 -3
  125. package/dist/{chunk-RH4XEXTK.mjs → chunk-NNZDWY3L.mjs} +3 -3
  126. package/dist/{chunk-5OUOVPXC.js → chunk-OMYR2ORG.js} +8 -8
  127. package/dist/{chunk-5OUOVPXC.js.map → chunk-OMYR2ORG.js.map} +1 -1
  128. package/dist/{chunk-JSM4AYSZ.js → chunk-OZLYJSFE.js} +14 -14
  129. package/dist/{chunk-JSM4AYSZ.js.map → chunk-OZLYJSFE.js.map} +1 -1
  130. package/dist/{chunk-ESPOINPT.mjs → chunk-P2VWGMQU.mjs} +3 -3
  131. package/dist/{chunk-ESPOINPT.mjs.map → chunk-P2VWGMQU.mjs.map} +1 -1
  132. package/dist/{chunk-7VRK3DWU.js → chunk-P35JIP3J.js} +6 -6
  133. package/dist/{chunk-7VRK3DWU.js.map → chunk-P35JIP3J.js.map} +1 -1
  134. package/dist/{chunk-IWHAJBYL.js → chunk-PXN7LIYZ.js} +15 -15
  135. package/dist/{chunk-IWHAJBYL.js.map → chunk-PXN7LIYZ.js.map} +1 -1
  136. package/dist/{chunk-GYKFHQSZ.mjs → chunk-QSCE66KQ.mjs} +3 -3
  137. package/dist/{chunk-GYKFHQSZ.mjs.map → chunk-QSCE66KQ.mjs.map} +1 -1
  138. package/dist/{chunk-QSN2QST7.mjs → chunk-QUMXVJ2C.mjs} +3 -3
  139. package/dist/{chunk-QSN2QST7.mjs.map → chunk-QUMXVJ2C.mjs.map} +1 -1
  140. package/dist/{chunk-6FIIA6ME.mjs → chunk-RB53MKRX.mjs} +4 -4
  141. package/dist/{chunk-6FIIA6ME.mjs.map → chunk-RB53MKRX.mjs.map} +1 -1
  142. package/dist/{chunk-JAA42HR7.js → chunk-RDKICSVU.js} +7 -7
  143. package/dist/{chunk-JAA42HR7.js.map → chunk-RDKICSVU.js.map} +1 -1
  144. package/dist/{chunk-EXVHO3CZ.mjs → chunk-REGHZJQF.mjs} +3 -3
  145. package/dist/{chunk-EXVHO3CZ.mjs.map → chunk-REGHZJQF.mjs.map} +1 -1
  146. package/dist/{chunk-MTHMOXZF.js → chunk-RNEPZD2I.js} +6 -6
  147. package/dist/{chunk-MTHMOXZF.js.map → chunk-RNEPZD2I.js.map} +1 -1
  148. package/dist/{chunk-CI7T4ZRP.mjs → chunk-RSP6RDR2.mjs} +4 -4
  149. package/dist/{chunk-CI7T4ZRP.mjs.map → chunk-RSP6RDR2.mjs.map} +1 -1
  150. package/dist/{chunk-MLXUMVBK.mjs → chunk-UCMMIGC6.mjs} +20 -6
  151. package/dist/chunk-UCMMIGC6.mjs.map +1 -0
  152. package/dist/{chunk-MQEVQ5YB.js → chunk-UJFRMHUN.js} +3 -3
  153. package/dist/{chunk-MQEVQ5YB.js.map → chunk-UJFRMHUN.js.map} +1 -1
  154. package/dist/{chunk-3RISRHOK.mjs → chunk-W7HSYABM.mjs} +8 -8
  155. package/dist/{chunk-3RISRHOK.mjs.map → chunk-W7HSYABM.mjs.map} +1 -1
  156. package/dist/{chunk-OUP6UL74.mjs → chunk-X5WJ5XPZ.mjs} +3 -3
  157. package/dist/{chunk-OUP6UL74.mjs.map → chunk-X5WJ5XPZ.mjs.map} +1 -1
  158. package/dist/{chunk-P4J3WG6C.js → chunk-XRUKYQ43.js} +4 -4
  159. package/dist/{chunk-P4J3WG6C.js.map → chunk-XRUKYQ43.js.map} +1 -1
  160. package/dist/{chunk-YEHC7VMW.mjs → chunk-YZCRYK5M.mjs} +3 -3
  161. package/dist/{chunk-YEHC7VMW.mjs.map → chunk-YZCRYK5M.mjs.map} +1 -1
  162. package/dist/chunk-YZJ22HUQ.js +29 -0
  163. package/dist/chunk-YZJ22HUQ.js.map +1 -0
  164. package/dist/{chunk-EVKP4SOM.js → chunk-ZKM6ELMZ.js} +10 -10
  165. package/dist/{chunk-EVKP4SOM.js.map → chunk-ZKM6ELMZ.js.map} +1 -1
  166. package/dist/cli/index.js +211 -211
  167. package/dist/cli/index.mjs +151 -151
  168. package/dist/client/index.js +4 -4
  169. package/dist/client/index.mjs +3 -3
  170. package/dist/commerce/index.js +57 -57
  171. package/dist/commerce/index.mjs +5 -5
  172. package/dist/engage/ChatWidget.d.ts +61 -1
  173. package/dist/engage/ChatWidget.d.ts.map +1 -1
  174. package/dist/engage/chat-messages.d.ts +86 -0
  175. package/dist/engage/chat-messages.d.ts.map +1 -0
  176. package/dist/engage/index.js +10 -10
  177. package/dist/engage/index.mjs +7 -7
  178. package/dist/fleet/index.js +8 -8
  179. package/dist/fleet/index.mjs +4 -4
  180. package/dist/forms/index.js +16 -16
  181. package/dist/forms/index.mjs +9 -9
  182. package/dist/forms/server.js +10 -10
  183. package/dist/forms/server.mjs +8 -8
  184. package/dist/forms/static.js +7 -7
  185. package/dist/forms/static.mjs +6 -6
  186. package/dist/images/index.js +11 -11
  187. package/dist/images/index.mjs +4 -4
  188. package/dist/index.js +63 -63
  189. package/dist/index.mjs +9 -9
  190. package/dist/layout/client.js +8 -8
  191. package/dist/layout/client.mjs +7 -7
  192. package/dist/layout/index.js +10 -10
  193. package/dist/layout/index.mjs +8 -8
  194. package/dist/{lib-6GWWPDJR.js → lib-6HOOMENJ.js} +7 -7
  195. package/dist/{lib-WFB5RLEQ.js → lib-BGAWCSUH.js} +8 -8
  196. package/dist/{lib-N5PD6JNJ.mjs → lib-R7IQ4ZHE.mjs} +2 -2
  197. package/dist/lib-RSDMEKDQ.mjs +4 -0
  198. package/dist/maps/index.js +5 -5
  199. package/dist/maps/index.mjs +3 -3
  200. package/dist/motion/CountUp.d.ts +49 -0
  201. package/dist/motion/CountUp.d.ts.map +1 -0
  202. package/dist/motion/Parallax.d.ts +14 -0
  203. package/dist/motion/Parallax.d.ts.map +1 -1
  204. package/dist/motion/ScrollScene.d.ts +1 -1
  205. package/dist/motion/ScrollScene.d.ts.map +1 -1
  206. package/dist/motion/engine.d.ts +19 -0
  207. package/dist/motion/engine.d.ts.map +1 -1
  208. package/dist/motion/gsap.d.ts +55 -6
  209. package/dist/motion/gsap.d.ts.map +1 -1
  210. package/dist/motion/gsap.js +101 -4
  211. package/dist/motion/gsap.js.map +1 -1
  212. package/dist/motion/gsap.mjs +96 -3
  213. package/dist/motion/gsap.mjs.map +1 -1
  214. package/dist/motion/index.d.ts +1 -1
  215. package/dist/motion/index.d.ts.map +1 -1
  216. package/dist/motion/index.js +21 -40
  217. package/dist/motion/index.js.map +1 -1
  218. package/dist/motion/index.mjs +11 -32
  219. package/dist/motion/index.mjs.map +1 -1
  220. package/dist/motion/three.js +5 -5
  221. package/dist/motion/three.mjs +1 -1
  222. package/dist/search/index.js +4 -4
  223. package/dist/search/index.mjs +3 -3
  224. package/dist/seo/client.js +5 -5
  225. package/dist/seo/client.mjs +4 -4
  226. package/dist/seo/index.js +5 -5
  227. package/dist/seo/index.mjs +4 -4
  228. package/dist/seo/register-sitemap-cli.js +2 -2
  229. package/dist/seo/register-sitemap-cli.mjs +1 -1
  230. package/dist/server/index.js +3 -3
  231. package/dist/server/index.mjs +2 -2
  232. package/dist/shared/build-entries.d.ts +1 -0
  233. package/dist/shared/build-entries.d.ts.map +1 -1
  234. package/dist/shared/version.d.ts +1 -1
  235. package/dist/signal/index.js +11 -11
  236. package/dist/signal/index.mjs +2 -2
  237. package/dist/sync/index.js +17 -17
  238. package/dist/sync/index.mjs +4 -4
  239. package/dist/{web-vitals.attribution-CHXXWO72.mjs → web-vitals.attribution-7LKLZ5GR.mjs} +3 -3
  240. package/dist/web-vitals.attribution-7LKLZ5GR.mjs.map +1 -0
  241. package/dist/{web-vitals.attribution-SQVZNHN3.js → web-vitals.attribution-ONVYQNRB.js} +3 -3
  242. package/dist/web-vitals.attribution-ONVYQNRB.js.map +1 -0
  243. package/package.json +6 -1
  244. package/dist/ChatWidget-566CQUN6.js +0 -26
  245. package/dist/ChatWidget-LNOY4TUZ.mjs +0 -17
  246. package/dist/EngageWidget-DF47YUHQ.js +0 -21
  247. package/dist/EngageWidget-IGF7SC3R.mjs +0 -12
  248. package/dist/ManagedForm-4U54NPW2.js +0 -25
  249. package/dist/ManagedForm-MOBWSG4D.mjs +0 -16
  250. package/dist/SitemapSync-74EVNOFQ.mjs +0 -9
  251. package/dist/SitemapSync-BQFZAE3X.js +0 -18
  252. package/dist/chunk-5FBALULE.mjs +0 -6
  253. package/dist/chunk-AEW7EFYU.js.map +0 -1
  254. package/dist/chunk-MLXUMVBK.mjs.map +0 -1
  255. package/dist/chunk-OI3FCJSP.js +0 -8
  256. package/dist/chunk-OZTVJSFX.js.map +0 -1
  257. package/dist/chunk-PTQHPWEK.mjs.map +0 -1
  258. package/dist/lib-BD4KKQBI.mjs +0 -4
  259. package/dist/web-vitals.attribution-CHXXWO72.mjs.map +0 -1
  260. package/dist/web-vitals.attribution-SQVZNHN3.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkXXSSUCJB_js = require('./chunk-XXSSUCJB.js');
3
+ var chunkI7AZC5ZQ_js = require('./chunk-I7AZC5ZQ.js');
4
4
  var chunkSNAQBZPT_js = require('./chunk-SNAQBZPT.js');
5
5
  var tty = require('tty');
6
6
  var util = require('util');
7
7
 
8
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js
8
+ // node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js
9
9
  var require_jsesc = chunkSNAQBZPT_js.__commonJS({
10
- "../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js"(exports, module) {
10
+ "node_modules/.pnpm/jsesc@3.1.0/node_modules/jsesc/jsesc.js"(exports, module) {
11
11
  var object = {};
12
12
  var hasOwnProperty = object.hasOwnProperty;
13
13
  var forOwn = (object2, callback) => {
@@ -280,7 +280,7 @@ var require_jsesc = chunkSNAQBZPT_js.__commonJS({
280
280
  }
281
281
  });
282
282
 
283
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/obug@2.1.4/node_modules/obug/dist/core.js
283
+ // node_modules/.pnpm/obug@2.1.4/node_modules/obug/dist/core.js
284
284
  function coerce(value) {
285
285
  if (value instanceof Error) return value.stack || value.message;
286
286
  return value;
@@ -546,7 +546,7 @@ function createDebug2(namespace, options) {
546
546
  }
547
547
  enable(env.DEBUG || "");
548
548
 
549
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/lib/common-shared.js
549
+ // node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/lib/common-shared.js
550
550
  var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
551
551
  function getMarkerLines(loc, source, opts, startLineBaseZero) {
552
552
  const startLoc = {
@@ -661,7 +661,7 @@ ${frame}`;
661
661
  return defs2.reset(frame);
662
662
  }
663
663
 
664
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/js-tokens@10.0.0/node_modules/js-tokens/index.js
664
+ // node_modules/.pnpm/js-tokens@10.0.0/node_modules/js-tokens/index.js
665
665
  var HashbangComment;
666
666
  var Identifier;
667
667
  var JSXIdentifier;
@@ -1078,7 +1078,7 @@ jsTokens = function* (input, { jsx = false } = {}) {
1078
1078
  };
1079
1079
  var js_tokens_default = jsTokens;
1080
1080
 
1081
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/lib/identifier.js
1081
+ // node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/lib/identifier.js
1082
1082
  var bmpIdentifierStart = /[\p{ID_Start}\u088f\u0c5c\u0cdc\ua7ce\ua7cf\ua7d2\ua7d4\ua7f1]/u;
1083
1083
  var bmpIdentifier = /[\p{ID_Continue}\u088f\u0c5c\u0cdc\ua7ce\ua7cf\ua7d2\ua7d4\ua7f1\u1acf-\u1add\u1ae0-\u1aeb]/u;
1084
1084
  var supplementaryIdentifierStartCodes = [2368, 25, 1388, 2, 3817, 43, 20677, 24, 3, 24, 287, 4, 6146, 7, 1290, 21, 98, 114, 22734, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 53307, 5, 5987, 11, 21763, 4297];
@@ -1137,7 +1137,7 @@ function isIdentifierName(name) {
1137
1137
  return !isFirst;
1138
1138
  }
1139
1139
 
1140
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/lib/index.js
1140
+ // node_modules/.pnpm/@babel+helper-validator-identifier@8.0.4/node_modules/@babel/helper-validator-identifier/lib/index.js
1141
1141
  var reservedWords = {
1142
1142
  keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
1143
1143
  strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
@@ -1156,7 +1156,7 @@ function isKeyword(word) {
1156
1156
  return keywords.has(word);
1157
1157
  }
1158
1158
 
1159
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/lib/index.js
1159
+ // node_modules/.pnpm/@babel+code-frame@8.0.0/node_modules/@babel/code-frame/lib/index.js
1160
1160
  function isColorSupported() {
1161
1161
  return util.styleText("red", "-") !== "-";
1162
1162
  }
@@ -1301,7 +1301,7 @@ function codeFrameColumns(rawLines, loc, opts = {}) {
1301
1301
  } : void 0);
1302
1302
  }
1303
1303
 
1304
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/lib/index.js
1304
+ // node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/lib/index.js
1305
1305
  var lib_exports = {};
1306
1306
  chunkSNAQBZPT_js.__export(lib_exports, {
1307
1307
  ACCESSOR_TYPES: () => ACCESSOR_TYPES,
@@ -2553,7 +2553,7 @@ chunkSNAQBZPT_js.__export(lib_exports, {
2553
2553
  yieldExpression: () => yieldExpression
2554
2554
  });
2555
2555
 
2556
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+helper-string-parser@8.0.0/node_modules/@babel/helper-string-parser/lib/index.js
2556
+ // node_modules/.pnpm/@babel+helper-string-parser@8.0.0/node_modules/@babel/helper-string-parser/lib/index.js
2557
2557
  var _isDigit = function isDigit(code) {
2558
2558
  return code >= 48 && code <= 57;
2559
2559
  };
@@ -2805,7 +2805,7 @@ function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
2805
2805
  };
2806
2806
  }
2807
2807
 
2808
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/lib/index.js
2808
+ // node_modules/.pnpm/@babel+types@8.0.4/node_modules/@babel/types/lib/index.js
2809
2809
  function shallowEqual(actual, expected) {
2810
2810
  const keys2 = Object.keys(expected);
2811
2811
  for (const key of keys2) {
@@ -13901,7 +13901,7 @@ var react = {
13901
13901
  buildChildren
13902
13902
  };
13903
13903
 
13904
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-lower.json
13904
+ // node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-lower.json
13905
13905
  var builtin_lower_default = [
13906
13906
  "decodeURI",
13907
13907
  "decodeURIComponent",
@@ -13918,7 +13918,7 @@ var builtin_lower_default = [
13918
13918
  "unescape"
13919
13919
  ];
13920
13920
 
13921
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-upper.json
13921
+ // node_modules/.pnpm/@babel+helper-globals@8.0.0/node_modules/@babel/helper-globals/data/builtin-upper.json
13922
13922
  var builtin_upper_default = [
13923
13923
  "AggregateError",
13924
13924
  "Array",
@@ -13971,7 +13971,7 @@ var builtin_upper_default = [
13971
13971
  "WeakSet"
13972
13972
  ];
13973
13973
 
13974
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
13974
+ // node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
13975
13975
  var comma = ",".charCodeAt(0);
13976
13976
  var semicolon = ";".charCodeAt(0);
13977
13977
  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -14139,7 +14139,7 @@ function encode(decoded) {
14139
14139
  return writer.flush();
14140
14140
  }
14141
14141
 
14142
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
14142
+ // node_modules/.pnpm/@jridgewell+resolve-uri@3.1.2/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs
14143
14143
  var schemeRegex = /^[\w+.-]+:\/\//;
14144
14144
  var urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
14145
14145
  var fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
@@ -14308,7 +14308,7 @@ function resolve(input, base) {
14308
14308
  }
14309
14309
  }
14310
14310
 
14311
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
14311
+ // node_modules/.pnpm/@jridgewell+trace-mapping@0.3.31/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs
14312
14312
  function stripFilename(path) {
14313
14313
  if (!path) return "";
14314
14314
  const index3 = path.lastIndexOf("/");
@@ -14494,7 +14494,7 @@ function traceSegmentInternal(segments, memo, line, column, bias) {
14494
14494
  return index3;
14495
14495
  }
14496
14496
 
14497
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs
14497
+ // node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs
14498
14498
  var SetArray = class {
14499
14499
  constructor() {
14500
14500
  this._indexes = { __proto__: null };
@@ -14692,7 +14692,7 @@ function addMappingInternal(skipable, map, mapping) {
14692
14692
  );
14693
14693
  }
14694
14694
 
14695
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/lib/index.js
14695
+ // node_modules/.pnpm/@babel+generator@8.0.0/node_modules/@babel/generator/lib/index.js
14696
14696
  var import_jsesc = chunkSNAQBZPT_js.__toESM(require_jsesc(), 1);
14697
14697
  var SourceMap = class {
14698
14698
  constructor(opts, code) {
@@ -19350,7 +19350,7 @@ function generate(ast, opts = {}, code) {
19350
19350
  return printer.generate(ast);
19351
19351
  }
19352
19352
 
19353
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/lib/index.js
19353
+ // node_modules/.pnpm/@babel+template@8.0.0/node_modules/@babel/template/lib/index.js
19354
19354
  var {
19355
19355
  assertExpressionStatement: assertExpressionStatement2
19356
19356
  } = lib_exports;
@@ -19616,7 +19616,7 @@ function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {
19616
19616
  plugins
19617
19617
  };
19618
19618
  try {
19619
- return chunkXXSSUCJB_js.parse(code, parserOpts);
19619
+ return chunkI7AZC5ZQ_js.parse(code, parserOpts);
19620
19620
  } catch (err) {
19621
19621
  const loc = err.loc;
19622
19622
  if (loc) {
@@ -19890,7 +19890,7 @@ var index2 = Object.assign(smart.bind(void 0), {
19890
19890
  ast: smart.ast
19891
19891
  });
19892
19892
 
19893
- // ../../../../../../../Volumes/Uptrade Media/GitHub/Sonor/site-kit/node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/lib/index.js
19893
+ // node_modules/.pnpm/@babel+traverse@8.0.4/node_modules/@babel/traverse/lib/index.js
19894
19894
  var ReferencedIdentifier = ["Identifier", "JSXIdentifier"];
19895
19895
  var ReferencedMemberExpression = ["MemberExpression"];
19896
19896
  var BindingIdentifier = ["Identifier"];
@@ -22547,7 +22547,7 @@ function replaceWithSourceString(replacement) {
22547
22547
  let ast;
22548
22548
  try {
22549
22549
  replacement = `(${replacement})`;
22550
- ast = chunkXXSSUCJB_js.parse(replacement);
22550
+ ast = chunkI7AZC5ZQ_js.parse(replacement);
22551
22551
  } catch (err) {
22552
22552
  const loc = err.loc;
22553
22553
  if (loc) {
@@ -24857,4 +24857,4 @@ exports.isTemplateLiteral = isTemplateLiteral;
24857
24857
  exports.isVariableDeclarator = isVariableDeclarator;
24858
24858
  exports.traverse = traverse3;
24859
24859
  exports.visitors = visitors;
24860
- //# sourceMappingURL=chunk-ATPQ6264.js.map
24860
+ //# sourceMappingURL=chunk-JS75ORH7.js.map
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { locToPath, isMalformedSitemapPath, inferPageType } from './chunk-C2CTLLIO.mjs';
3
3
  import { resolveAnalyticsTarget } from './chunk-A6UYV475.mjs';
4
- import { sonorFetch } from './chunk-CI7T4ZRP.mjs';
4
+ import { sonorFetch } from './chunk-RSP6RDR2.mjs';
5
5
  import { useRef, useEffect } from 'react';
6
6
 
7
7
  var SYNC_STAMP_KEY = "_sk_sitemap_synced_at";
@@ -189,5 +189,5 @@ function SitemapSync({
189
189
  }
190
190
 
191
191
  export { SitemapSync };
192
- //# sourceMappingURL=chunk-3MLVI5DH.mjs.map
193
- //# sourceMappingURL=chunk-3MLVI5DH.mjs.map
192
+ //# sourceMappingURL=chunk-KLKUI3US.mjs.map
193
+ //# sourceMappingURL=chunk-KLKUI3US.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/SitemapSync.tsx"],"names":[],"mappings":"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","file":"chunk-3MLVI5DH.mjs","sourcesContent":["/**\n * SitemapSync - Automatically sync sitemap.xml to Portal API\n *\n * Client-only component. Lives at package root so the main entry does not\n * pull in seo/ (and server-only code). For use in SiteKitLayout and\n * from @sonordev/site-kit/seo.\n *\n * @example\n * ```tsx\n * import { SitemapSync } from '@sonordev/site-kit'\n * // or\n * import { SitemapSync } from '@sonordev/site-kit/seo'\n * ```\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { sonorFetch } from './shared/sonorFetch'\nimport { resolveAnalyticsTarget, type AnalyticsGateOptions } from './shared/reporting-gate'\n// Single source of truth for page-type inference + path normalization, shared\n// with createSitemap (build) and the register-sitemap CLI. Pure string logic,\n// safe in the browser.\nimport { inferPageType, locToPath, isMalformedSitemapPath } from './sitemap/shared'\n\ninterface SitemapSyncProps extends AnalyticsGateOptions {\n /** Custom sitemap URL (defaults to /sitemap.xml) */\n sitemapUrl?: string\n /** How often to re-sync in minutes (0 = only on mount, default: 60) */\n syncInterval?: number\n /** Enable debug logging */\n debug?: boolean\n /**\n * Sync mode:\n * - 'additive' (default for runtime): adds/updates pages but never deletes existing ones\n * - 'full-replace': replaces the entire page set (use only for build-time sync via createSitemap)\n */\n mode?: 'additive' | 'full-replace'\n}\n\ninterface SitemapEntry {\n path: string\n lastmod?: string\n changefreq?: string\n priority?: number\n pageType?: string\n}\n\n/**\n * Per-browser-session sync throttle. Build-time sync (createSitemap) is the\n * canonical source of truth; runtime SitemapSync is only a safety net — so\n * re-registering the sitemap on every full page load of every visitor is pure\n * waste (fetch + DOMParser on the visitor's main thread, plus a write per\n * pageview against the API). Stamp the last successful sync in sessionStorage\n * and skip while inside the throttle window.\n */\nconst SYNC_STAMP_KEY = '_sk_sitemap_synced_at'\nconst SYNC_HASH_KEY = '_sk_sitemap_hash'\n\nfunction isRecentlySynced(throttleMinutes: number): boolean {\n try {\n const stamp = sessionStorage.getItem(SYNC_STAMP_KEY)\n if (!stamp) return false\n const elapsed = Date.now() - parseInt(stamp, 10)\n return elapsed >= 0 && elapsed < throttleMinutes * 60 * 1000\n } catch {\n return false // storage unavailable (private mode) — sync as before\n }\n}\n\nfunction stampSynced(): void {\n try {\n sessionStorage.setItem(SYNC_STAMP_KEY, Date.now().toString())\n } catch {\n /* storage unavailable — throttle simply won't apply */\n }\n}\n\n/**\n * Content-hash guard (localStorage, so it survives across sessions): the\n * sitemap of a static site only changes at deploy, so once ONE sync of a given\n * sitemap succeeded from this browser, re-POSTing the identical entry set is\n * pure API load. Hash the parsed entries; skip the POST when unchanged.\n * Keyed by sitemap URL so multiple SitemapSync instances don't collide.\n */\nfunction hashEntries(sitemapUrl: string, entries: SitemapEntry[]): string {\n const text = entries\n .map(e => `${e.path}|${e.lastmod ?? ''}|${e.changefreq ?? ''}|${e.priority ?? ''}`)\n .join('\\n')\n let hash = 0\n for (let i = 0; i < text.length; i++) {\n hash = ((hash << 5) - hash + text.charCodeAt(i)) | 0\n }\n return `${sitemapUrl}:${entries.length}:${hash.toString(16)}`\n}\n\nfunction isAlreadySyncedHash(hash: string): boolean {\n try {\n return localStorage.getItem(SYNC_HASH_KEY) === hash\n } catch {\n return false\n }\n}\n\nfunction storeSyncedHash(hash: string): void {\n try {\n localStorage.setItem(SYNC_HASH_KEY, hash)\n } catch {\n /* storage unavailable — guard simply won't apply */\n }\n}\n\nasync function parseSitemap(sitemapUrl: string, debug: boolean): Promise<SitemapEntry[]> {\n try {\n const response = await sonorFetch(sitemapUrl)\n if (!response.ok) {\n if (debug) console.warn('[SitemapSync] Failed to fetch sitemap:', response.status)\n return []\n }\n\n const text = await response.text()\n const parser = new DOMParser()\n const doc = parser.parseFromString(text, 'application/xml')\n\n const parseError = doc.querySelector('parsererror')\n if (parseError) {\n if (debug) console.warn('[SitemapSync] Sitemap parse error:', parseError.textContent)\n return []\n }\n\n const urls = doc.querySelectorAll('url')\n const entries: SitemapEntry[] = []\n\n urls.forEach(url => {\n const loc = url.querySelector('loc')?.textContent?.trim()\n if (!loc) return\n\n const path = locToPath(loc)\n\n // Reject malformed paths (embedded domains, double protocols, etc.)\n if (isMalformedSitemapPath(path)) {\n if (debug) console.warn(`[SitemapSync] Skipping malformed path: ${path}`)\n return\n }\n\n const lastmod = url.querySelector('lastmod')?.textContent || undefined\n const changefreq = url.querySelector('changefreq')?.textContent || undefined\n const priorityStr = url.querySelector('priority')?.textContent\n const priority = priorityStr ? parseFloat(priorityStr) : undefined\n\n entries.push({ path, lastmod, changefreq, priority })\n })\n\n if (debug) {\n console.log(`[SitemapSync] Parsed ${entries.length} entries from sitemap`)\n }\n\n return entries\n } catch (error) {\n if (debug) console.error('[SitemapSync] Error parsing sitemap:', error)\n return []\n }\n}\n\nasync function syncToPortal(\n entries: SitemapEntry[],\n apiUrl: string,\n apiKey: string,\n site: string,\n debug: boolean,\n mode: 'additive' | 'full-replace' = 'additive',\n gate: AnalyticsGateOptions = {},\n): Promise<{ success: boolean; created: number; updated: number }> {\n if (!apiKey) {\n if (debug) console.warn('[SitemapSync] No API key configured')\n return { success: false, created: 0, updated: 0 }\n }\n\n if (entries.length === 0) {\n if (debug) console.log('[SitemapSync] No entries to sync')\n return { success: true, created: 0, updated: 0 }\n }\n\n try {\n // Registration is idempotent in both modes (same payload → same final\n // state), so retrying a timed-out attempt is safe.\n const target = resolveAnalyticsTarget({ ...gate, apiUrl, apiKey })\n if (!target) return { success: false, created: 0, updated: 0 }\n const response = await sonorFetch(`${target.apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n entries: entries.map(e => ({\n path: e.path,\n priority: e.priority,\n changefreq: e.changefreq,\n pageType: inferPageType(e.path),\n })),\n mode,\n // Sub-site host — tagged on every seo_pages row so the dashboard\n // can scope the page tree to one microsite. Resolved by\n // SiteKitClientProviders (see __SITE_KIT_SITE__).\n ...(site ? { site } : {}),\n }),\n }, { apiKey: target.apiKey, retries: 2 })\n\n if (!response?.ok) {\n if (debug) console.error('[SitemapSync] API error:', response?.status, response?.statusText)\n return { success: false, created: 0, updated: 0 }\n }\n\n const result = await response.json()\n\n if (debug) {\n console.log(`[SitemapSync] Synced: ${result.created} created, ${result.updated} updated`)\n }\n\n return {\n success: true,\n created: result.created || 0,\n updated: result.updated || 0,\n }\n } catch (error) {\n if (debug) console.error('[SitemapSync] Sync error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport function SitemapSync({\n sitemapUrl = '/sitemap.xml',\n syncInterval = 60,\n debug = false,\n mode = 'additive',\n apiUrl: propApiUrl,\n apiKey: propApiKey,\n allowInFrame = false,\n allowLocalhost = false,\n}: SitemapSyncProps) {\n const hasSyncedRef = useRef(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n useEffect(() => {\n // Build-time sync via createSitemap is the canonical source of truth, but\n // it can fail during ISR revalidation (app/ dir unavailable on serverless).\n // Runtime SitemapSync in additive mode is a safe fallback — it adds/updates\n // pages that may be missing without ever deleting existing ones.\n // Full-replace is never safe at runtime — always force additive.\n const effectiveMode: 'additive' | 'full-replace' = 'additive'\n\n // Throttle window: reuse syncInterval when periodic syncing is on,\n // otherwise default to 60 minutes for the on-mount sync.\n const throttleMinutes = syncInterval > 0 ? syncInterval : 60\n\n const doSync = async () => {\n const gate = { apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug }\n const target = resolveAnalyticsTarget(gate)\n if (!target) return\n const { apiUrl, apiKey } = target\n const site = (window as any).__SITE_KIT_SITE__ || window.location.host || ''\n\n if (isRecentlySynced(throttleMinutes)) {\n if (debug) console.log('[SitemapSync] Skipped — synced within the last', throttleMinutes, 'min this session')\n return\n }\n\n if (debug) console.log('[SitemapSync] Starting sitemap sync...', site ? `(site: ${site})` : '')\n\n const entries = await parseSitemap(sitemapUrl, debug)\n\n if (entries.length > 0) {\n const hash = hashEntries(sitemapUrl, entries)\n if (isAlreadySyncedHash(hash)) {\n // This exact sitemap already synced from this browser — the server\n // state can't be improved by re-POSTing it. Stamp the session so we\n // don't even re-fetch/parse for the rest of the throttle window.\n stampSynced()\n if (debug) console.log('[SitemapSync] Skipped POST — sitemap unchanged since last successful sync')\n return\n }\n const result = await syncToPortal(entries, apiUrl, apiKey, site, debug, effectiveMode, gate)\n if (result.success) {\n stampSynced()\n storeSyncedHash(hash)\n }\n }\n }\n\n if (!resolveAnalyticsTarget({ apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug })) return\n\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true\n doSync()\n }\n\n if (syncInterval > 0) {\n intervalRef.current = setInterval(doSync, syncInterval * 60 * 1000)\n }\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n }\n }\n }, [sitemapUrl, syncInterval, debug, mode, propApiUrl, propApiKey, allowInFrame, allowLocalhost])\n\n return null\n}\n"]}
1
+ {"version":3,"sources":["../src/SitemapSync.tsx"],"names":[],"mappings":"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","file":"chunk-KLKUI3US.mjs","sourcesContent":["/**\n * SitemapSync - Automatically sync sitemap.xml to Portal API\n *\n * Client-only component. Lives at package root so the main entry does not\n * pull in seo/ (and server-only code). For use in SiteKitLayout and\n * from @sonordev/site-kit/seo.\n *\n * @example\n * ```tsx\n * import { SitemapSync } from '@sonordev/site-kit'\n * // or\n * import { SitemapSync } from '@sonordev/site-kit/seo'\n * ```\n */\n\n'use client'\n\nimport { useEffect, useRef } from 'react'\nimport { sonorFetch } from './shared/sonorFetch'\nimport { resolveAnalyticsTarget, type AnalyticsGateOptions } from './shared/reporting-gate'\n// Single source of truth for page-type inference + path normalization, shared\n// with createSitemap (build) and the register-sitemap CLI. Pure string logic,\n// safe in the browser.\nimport { inferPageType, locToPath, isMalformedSitemapPath } from './sitemap/shared'\n\ninterface SitemapSyncProps extends AnalyticsGateOptions {\n /** Custom sitemap URL (defaults to /sitemap.xml) */\n sitemapUrl?: string\n /** How often to re-sync in minutes (0 = only on mount, default: 60) */\n syncInterval?: number\n /** Enable debug logging */\n debug?: boolean\n /**\n * Sync mode:\n * - 'additive' (default for runtime): adds/updates pages but never deletes existing ones\n * - 'full-replace': replaces the entire page set (use only for build-time sync via createSitemap)\n */\n mode?: 'additive' | 'full-replace'\n}\n\ninterface SitemapEntry {\n path: string\n lastmod?: string\n changefreq?: string\n priority?: number\n pageType?: string\n}\n\n/**\n * Per-browser-session sync throttle. Build-time sync (createSitemap) is the\n * canonical source of truth; runtime SitemapSync is only a safety net — so\n * re-registering the sitemap on every full page load of every visitor is pure\n * waste (fetch + DOMParser on the visitor's main thread, plus a write per\n * pageview against the API). Stamp the last successful sync in sessionStorage\n * and skip while inside the throttle window.\n */\nconst SYNC_STAMP_KEY = '_sk_sitemap_synced_at'\nconst SYNC_HASH_KEY = '_sk_sitemap_hash'\n\nfunction isRecentlySynced(throttleMinutes: number): boolean {\n try {\n const stamp = sessionStorage.getItem(SYNC_STAMP_KEY)\n if (!stamp) return false\n const elapsed = Date.now() - parseInt(stamp, 10)\n return elapsed >= 0 && elapsed < throttleMinutes * 60 * 1000\n } catch {\n return false // storage unavailable (private mode) — sync as before\n }\n}\n\nfunction stampSynced(): void {\n try {\n sessionStorage.setItem(SYNC_STAMP_KEY, Date.now().toString())\n } catch {\n /* storage unavailable — throttle simply won't apply */\n }\n}\n\n/**\n * Content-hash guard (localStorage, so it survives across sessions): the\n * sitemap of a static site only changes at deploy, so once ONE sync of a given\n * sitemap succeeded from this browser, re-POSTing the identical entry set is\n * pure API load. Hash the parsed entries; skip the POST when unchanged.\n * Keyed by sitemap URL so multiple SitemapSync instances don't collide.\n */\nfunction hashEntries(sitemapUrl: string, entries: SitemapEntry[]): string {\n const text = entries\n .map(e => `${e.path}|${e.lastmod ?? ''}|${e.changefreq ?? ''}|${e.priority ?? ''}`)\n .join('\\n')\n let hash = 0\n for (let i = 0; i < text.length; i++) {\n hash = ((hash << 5) - hash + text.charCodeAt(i)) | 0\n }\n return `${sitemapUrl}:${entries.length}:${hash.toString(16)}`\n}\n\nfunction isAlreadySyncedHash(hash: string): boolean {\n try {\n return localStorage.getItem(SYNC_HASH_KEY) === hash\n } catch {\n return false\n }\n}\n\nfunction storeSyncedHash(hash: string): void {\n try {\n localStorage.setItem(SYNC_HASH_KEY, hash)\n } catch {\n /* storage unavailable — guard simply won't apply */\n }\n}\n\nasync function parseSitemap(sitemapUrl: string, debug: boolean): Promise<SitemapEntry[]> {\n try {\n const response = await sonorFetch(sitemapUrl)\n if (!response.ok) {\n if (debug) console.warn('[SitemapSync] Failed to fetch sitemap:', response.status)\n return []\n }\n\n const text = await response.text()\n const parser = new DOMParser()\n const doc = parser.parseFromString(text, 'application/xml')\n\n const parseError = doc.querySelector('parsererror')\n if (parseError) {\n if (debug) console.warn('[SitemapSync] Sitemap parse error:', parseError.textContent)\n return []\n }\n\n const urls = doc.querySelectorAll('url')\n const entries: SitemapEntry[] = []\n\n urls.forEach(url => {\n const loc = url.querySelector('loc')?.textContent?.trim()\n if (!loc) return\n\n const path = locToPath(loc)\n\n // Reject malformed paths (embedded domains, double protocols, etc.)\n if (isMalformedSitemapPath(path)) {\n if (debug) console.warn(`[SitemapSync] Skipping malformed path: ${path}`)\n return\n }\n\n const lastmod = url.querySelector('lastmod')?.textContent || undefined\n const changefreq = url.querySelector('changefreq')?.textContent || undefined\n const priorityStr = url.querySelector('priority')?.textContent\n const priority = priorityStr ? parseFloat(priorityStr) : undefined\n\n entries.push({ path, lastmod, changefreq, priority })\n })\n\n if (debug) {\n console.log(`[SitemapSync] Parsed ${entries.length} entries from sitemap`)\n }\n\n return entries\n } catch (error) {\n if (debug) console.error('[SitemapSync] Error parsing sitemap:', error)\n return []\n }\n}\n\nasync function syncToPortal(\n entries: SitemapEntry[],\n apiUrl: string,\n apiKey: string,\n site: string,\n debug: boolean,\n mode: 'additive' | 'full-replace' = 'additive',\n gate: AnalyticsGateOptions = {},\n): Promise<{ success: boolean; created: number; updated: number }> {\n if (!apiKey) {\n if (debug) console.warn('[SitemapSync] No API key configured')\n return { success: false, created: 0, updated: 0 }\n }\n\n if (entries.length === 0) {\n if (debug) console.log('[SitemapSync] No entries to sync')\n return { success: true, created: 0, updated: 0 }\n }\n\n try {\n // Registration is idempotent in both modes (same payload → same final\n // state), so retrying a timed-out attempt is safe.\n const target = resolveAnalyticsTarget({ ...gate, apiUrl, apiKey })\n if (!target) return { success: false, created: 0, updated: 0 }\n const response = await sonorFetch(`${target.apiUrl}/api/public/seo/register-sitemap`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n entries: entries.map(e => ({\n path: e.path,\n priority: e.priority,\n changefreq: e.changefreq,\n pageType: inferPageType(e.path),\n })),\n mode,\n // Sub-site host — tagged on every seo_pages row so the dashboard\n // can scope the page tree to one microsite. Resolved by\n // SiteKitClientProviders (see __SITE_KIT_SITE__).\n ...(site ? { site } : {}),\n }),\n }, { apiKey: target.apiKey, retries: 2 })\n\n if (!response?.ok) {\n if (debug) console.error('[SitemapSync] API error:', response?.status, response?.statusText)\n return { success: false, created: 0, updated: 0 }\n }\n\n const result = await response.json()\n\n if (debug) {\n console.log(`[SitemapSync] Synced: ${result.created} created, ${result.updated} updated`)\n }\n\n return {\n success: true,\n created: result.created || 0,\n updated: result.updated || 0,\n }\n } catch (error) {\n if (debug) console.error('[SitemapSync] Sync error:', error)\n return { success: false, created: 0, updated: 0 }\n }\n}\n\nexport function SitemapSync({\n sitemapUrl = '/sitemap.xml',\n syncInterval = 60,\n debug = false,\n mode = 'additive',\n apiUrl: propApiUrl,\n apiKey: propApiKey,\n allowInFrame = false,\n allowLocalhost = false,\n}: SitemapSyncProps) {\n const hasSyncedRef = useRef(false)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n\n useEffect(() => {\n // Build-time sync via createSitemap is the canonical source of truth, but\n // it can fail during ISR revalidation (app/ dir unavailable on serverless).\n // Runtime SitemapSync in additive mode is a safe fallback — it adds/updates\n // pages that may be missing without ever deleting existing ones.\n // Full-replace is never safe at runtime — always force additive.\n const effectiveMode: 'additive' | 'full-replace' = 'additive'\n\n // Throttle window: reuse syncInterval when periodic syncing is on,\n // otherwise default to 60 minutes for the on-mount sync.\n const throttleMinutes = syncInterval > 0 ? syncInterval : 60\n\n const doSync = async () => {\n const gate = { apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug }\n const target = resolveAnalyticsTarget(gate)\n if (!target) return\n const { apiUrl, apiKey } = target\n const site = (window as any).__SITE_KIT_SITE__ || window.location.host || ''\n\n if (isRecentlySynced(throttleMinutes)) {\n if (debug) console.log('[SitemapSync] Skipped — synced within the last', throttleMinutes, 'min this session')\n return\n }\n\n if (debug) console.log('[SitemapSync] Starting sitemap sync...', site ? `(site: ${site})` : '')\n\n const entries = await parseSitemap(sitemapUrl, debug)\n\n if (entries.length > 0) {\n const hash = hashEntries(sitemapUrl, entries)\n if (isAlreadySyncedHash(hash)) {\n // This exact sitemap already synced from this browser — the server\n // state can't be improved by re-POSTing it. Stamp the session so we\n // don't even re-fetch/parse for the rest of the throttle window.\n stampSynced()\n if (debug) console.log('[SitemapSync] Skipped POST — sitemap unchanged since last successful sync')\n return\n }\n const result = await syncToPortal(entries, apiUrl, apiKey, site, debug, effectiveMode, gate)\n if (result.success) {\n stampSynced()\n storeSyncedHash(hash)\n }\n }\n }\n\n if (!resolveAnalyticsTarget({ apiUrl: propApiUrl, apiKey: propApiKey, allowInFrame, allowLocalhost, debug })) return\n\n if (!hasSyncedRef.current) {\n hasSyncedRef.current = true\n doSync()\n }\n\n if (syncInterval > 0) {\n intervalRef.current = setInterval(doSync, syncInterval * 60 * 1000)\n }\n\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current)\n }\n }\n }, [sitemapUrl, syncInterval, debug, mode, propApiUrl, propApiKey, allowInFrame, allowLocalhost])\n\n return null\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkRQG7I6O4_js = require('./chunk-RQG7I6O4.js');
3
+ var chunkGBOSAWBR_js = require('./chunk-GBOSAWBR.js');
4
4
  var chunkXA2GJFVM_js = require('./chunk-XA2GJFVM.js');
5
- var chunkIZRVSIOK_js = require('./chunk-IZRVSIOK.js');
5
+ var chunkF4DZDIR4_js = require('./chunk-F4DZDIR4.js');
6
6
  var chunkKHPJ3CEL_js = require('./chunk-KHPJ3CEL.js');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
@@ -14,7 +14,7 @@ function visibleStaticFields(config) {
14
14
  }
15
15
  function StaticForm({ config: raw, className, nativeReturnTo }) {
16
16
  if (!raw) return null;
17
- const config = chunkIZRVSIOK_js.normalizeFormConfig(raw);
17
+ const config = chunkF4DZDIR4_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,7 +23,7 @@ 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
- ...chunkRQG7I6O4_js.nativeFormProps(config),
26
+ ...chunkGBOSAWBR_js.nativeFormProps(config),
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",
@@ -34,13 +34,13 @@ function StaticForm({ config: raw, className, nativeReturnTo }) {
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(chunkRQG7I6O4_js.HoneypotField, { name: honeypotFieldName }),
38
- /* @__PURE__ */ jsxRuntime.jsx(chunkRQG7I6O4_js.NativeFallbackFields, { config, returnTo: nativeReturnTo })
37
+ config.honeypot_enabled && /* @__PURE__ */ jsxRuntime.jsx(chunkGBOSAWBR_js.HoneypotField, { name: honeypotFieldName }),
38
+ /* @__PURE__ */ jsxRuntime.jsx(chunkGBOSAWBR_js.NativeFallbackFields, { config, returnTo: nativeReturnTo })
39
39
  ]
40
40
  }
41
41
  );
42
42
  }
43
43
 
44
44
  exports.StaticForm = StaticForm;
45
- //# sourceMappingURL=chunk-XCOMBHLF.js.map
46
- //# sourceMappingURL=chunk-XCOMBHLF.js.map
45
+ //# sourceMappingURL=chunk-L6XXUNJB.js.map
46
+ //# sourceMappingURL=chunk-L6XXUNJB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/forms/StaticForm.tsx"],"names":["normalizeFormConfig","DEFAULT_HONEYPOT_FIELD","jsxs","nativeFormProps","jsx","FormField","HoneypotField","NativeFallbackFields"],"mappings":";;;;;;;;AA6DA,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,WAAW,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAA,EAAW,gBAAe,EAAoB;AACtF,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,MACpC,GAAGC,iCAAgB,MAAM,CAAA;AAAA,MAE1B,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,CAAA;AAAA,wBAGpEF,cAAA,CAACG,qCAAA,EAAA,EAAqB,MAAA,EAAgB,QAAA,EAAU,cAAA,EAAgB;AAAA;AAAA;AAAA,GAClE;AAEJ","file":"chunk-XCOMBHLF.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, the signed native token, and a\n * submit button. With JavaScript disabled, off, or still downloading, the\n * browser performs an ordinary form-encoded POST to\n * `/api/public/forms/submit-native`, sonor-api runs the honeypot +\n * render-timestamp + quarantine stack, and the lead lands. 4.0.1 built that\n * endpoint; this is what finally puts it under every form by default.\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) and it\n * could only submit via JSON (the native endpoint removed that). Nobody moved\n * 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 no-JS floor and crawlable fields with it. Neither half was\n * acceptable; a server-rendered form is what makes both true at once.\n *\n * Pair it with <FormEnhancer> to upgrade this markup at idle. Alone, it is\n * still a working form — that is the point. Never make this file `'use\n * 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 { nativeFormProps, NativeFallbackFields } from './native-fallback'\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 * Absolute URL the no-JS 303 should return to (usually the page hosting the\n * form). Without it the API falls back to the Referer origin — right site,\n * wrong page.\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 and is excluded from native POST, so the\n // shell shows step one as a 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, nativeReturnTo }: 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 {...nativeFormProps(config)}\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 {/* _sk_token auth + _sk_return destination for the native POST. */}\n <NativeFallbackFields config={config} returnTo={nativeReturnTo} />\n </form>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/forms/StaticForm.tsx"],"names":["normalizeFormConfig","DEFAULT_HONEYPOT_FIELD","jsxs","nativeFormProps","jsx","FormField","HoneypotField","NativeFallbackFields"],"mappings":";;;;;;;;AA6DA,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,WAAW,EAAE,MAAA,EAAQ,GAAA,EAAK,SAAA,EAAW,gBAAe,EAAoB;AACtF,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,MACpC,GAAGC,iCAAgB,MAAM,CAAA;AAAA,MAE1B,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,CAAA;AAAA,wBAGpEF,cAAA,CAACG,qCAAA,EAAA,EAAqB,MAAA,EAAgB,QAAA,EAAU,cAAA,EAAgB;AAAA;AAAA;AAAA,GAClE;AAEJ","file":"chunk-L6XXUNJB.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, the signed native token, and a\n * submit button. With JavaScript disabled, off, or still downloading, the\n * browser performs an ordinary form-encoded POST to\n * `/api/public/forms/submit-native`, sonor-api runs the honeypot +\n * render-timestamp + quarantine stack, and the lead lands. 4.0.1 built that\n * endpoint; this is what finally puts it under every form by default.\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) and it\n * could only submit via JSON (the native endpoint removed that). Nobody moved\n * 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 no-JS floor and crawlable fields with it. Neither half was\n * acceptable; a server-rendered form is what makes both true at once.\n *\n * Pair it with <FormEnhancer> to upgrade this markup at idle. Alone, it is\n * still a working form — that is the point. Never make this file `'use\n * 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 { nativeFormProps, NativeFallbackFields } from './native-fallback'\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 * Absolute URL the no-JS 303 should return to (usually the page hosting the\n * form). Without it the API falls back to the Referer origin — right site,\n * wrong page.\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 and is excluded from native POST, so the\n // shell shows step one as a 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, nativeReturnTo }: 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 {...nativeFormProps(config)}\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 {/* _sk_token auth + _sk_return destination for the native POST. */}\n <NativeFallbackFields config={config} returnTo={nativeReturnTo} />\n </form>\n )\n}\n"]}