@sonordev/site-kit 5.3.1 → 5.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/agent-manifest.json +1 -1
  2. package/dist/AnalyticsProvider-2XK54UZW.mjs +11 -0
  3. package/dist/{AnalyticsProvider-NA7EMJCA.mjs.map → AnalyticsProvider-2XK54UZW.mjs.map} +1 -1
  4. package/dist/AnalyticsProvider-PM7SOGOS.js +32 -0
  5. package/dist/{AnalyticsProvider-XE3ADUUH.js.map → AnalyticsProvider-PM7SOGOS.js.map} +1 -1
  6. package/dist/{BlogViewTracker-DVJHZ7CM.js → BlogViewTracker-3BIUF5TI.js} +6 -6
  7. package/dist/{BlogViewTracker-DVJHZ7CM.js.map → BlogViewTracker-3BIUF5TI.js.map} +1 -1
  8. package/dist/{BlogViewTracker-MKJYTTJQ.mjs → BlogViewTracker-KFUDRDQK.mjs} +5 -5
  9. package/dist/{BlogViewTracker-MKJYTTJQ.mjs.map → BlogViewTracker-KFUDRDQK.mjs.map} +1 -1
  10. package/dist/ChatWidget-4PHZHGG5.mjs +11 -0
  11. package/dist/{ChatWidget-BD4F4XLD.mjs.map → ChatWidget-4PHZHGG5.mjs.map} +1 -1
  12. package/dist/ChatWidget-7BYSGNO2.js +20 -0
  13. package/dist/{ChatWidget-BZ3KOSXG.js.map → ChatWidget-7BYSGNO2.js.map} +1 -1
  14. package/dist/EngageWidget-D6M6QWEC.mjs +9 -0
  15. package/dist/{EngageWidget-L7B6PCM3.mjs.map → EngageWidget-D6M6QWEC.mjs.map} +1 -1
  16. package/dist/EngageWidget-Q4ITKTMJ.js +18 -0
  17. package/dist/{EngageWidget-JPP6EDCJ.js.map → EngageWidget-Q4ITKTMJ.js.map} +1 -1
  18. package/dist/{FileField-7WPRONDS.mjs → FileField-PQQDX4IR.mjs} +5 -5
  19. package/dist/{FileField-7WPRONDS.mjs.map → FileField-PQQDX4IR.mjs.map} +1 -1
  20. package/dist/{FileField-GHT7444Y.js → FileField-YBBIJOCK.js} +6 -6
  21. package/dist/{FileField-GHT7444Y.js.map → FileField-YBBIJOCK.js.map} +1 -1
  22. package/dist/{FormSpotlight-WZVS6HHR.mjs → FormSpotlight-7TIIWFTP.mjs} +3 -3
  23. package/dist/{FormSpotlight-WZVS6HHR.mjs.map → FormSpotlight-7TIIWFTP.mjs.map} +1 -1
  24. package/dist/{FormSpotlight-BB2IB7IX.js → FormSpotlight-WUN24F3P.js} +15 -15
  25. package/dist/{FormSpotlight-BB2IB7IX.js.map → FormSpotlight-WUN24F3P.js.map} +1 -1
  26. package/dist/{FormStage-FLBLXENZ.js → FormStage-CM7OVLUT.js} +13 -13
  27. package/dist/{FormStage-FLBLXENZ.js.map → FormStage-CM7OVLUT.js.map} +1 -1
  28. package/dist/{FormStage-Y3NHHMV2.mjs → FormStage-TFN2GIBO.mjs} +3 -3
  29. package/dist/{FormStage-Y3NHHMV2.mjs.map → FormStage-TFN2GIBO.mjs.map} +1 -1
  30. package/dist/ManagedForm-N63YGVNY.js +23 -0
  31. package/dist/{ManagedForm-2OPCHDNJ.js.map → ManagedForm-N63YGVNY.js.map} +1 -1
  32. package/dist/ManagedForm-ZUXLHEQU.mjs +14 -0
  33. package/dist/{ManagedForm-AJM6D4SK.mjs.map → ManagedForm-ZUXLHEQU.mjs.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-MJI2JXIB.mjs → ManagedNewsletterForm-4AVKTZ2A.mjs} +7 -7
  35. package/dist/{ManagedNewsletterForm-MJI2JXIB.mjs.map → ManagedNewsletterForm-4AVKTZ2A.mjs.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-L2ZHJ7F4.js → ManagedNewsletterForm-PIVJTU5L.js} +8 -8
  37. package/dist/{ManagedNewsletterForm-L2ZHJ7F4.js.map → ManagedNewsletterForm-PIVJTU5L.js.map} +1 -1
  38. package/dist/{SignalCore-G2VM7NUP.js → SignalCore-2M5TISM7.js} +11 -11
  39. package/dist/{SignalCore-G2VM7NUP.js.map → SignalCore-2M5TISM7.js.map} +1 -1
  40. package/dist/{SignalCore-23YDDSWO.mjs → SignalCore-LT4NCPOR.mjs} +5 -5
  41. package/dist/{SignalCore-23YDDSWO.mjs.map → SignalCore-LT4NCPOR.mjs.map} +1 -1
  42. package/dist/SitemapSync-7OBOJG2L.js +18 -0
  43. package/dist/{SitemapSync-T2N3TCWF.js.map → SitemapSync-7OBOJG2L.js.map} +1 -1
  44. package/dist/SitemapSync-G3OLECFI.mjs +9 -0
  45. package/dist/{SitemapSync-YLWMU6J3.mjs.map → SitemapSync-G3OLECFI.mjs.map} +1 -1
  46. package/dist/SitemapSync.d.ts.map +1 -1
  47. package/dist/analytics/AnalyticsProvider.d.ts +11 -1
  48. package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
  49. package/dist/analytics/WebVitals.d.ts +7 -1
  50. package/dist/analytics/WebVitals.d.ts.map +1 -1
  51. package/dist/analytics/index.d.ts +1 -0
  52. package/dist/analytics/index.d.ts.map +1 -1
  53. package/dist/analytics/index.js +25 -12
  54. package/dist/analytics/index.mjs +6 -5
  55. package/dist/analytics/send-gate.d.ts +119 -0
  56. package/dist/analytics/send-gate.d.ts.map +1 -0
  57. package/dist/analytics/send-gate.test.d.ts +20 -0
  58. package/dist/analytics/send-gate.test.d.ts.map +1 -0
  59. package/dist/blog/index.js +20 -20
  60. package/dist/blog/index.mjs +3 -3
  61. package/dist/blog/server-ui.js +14 -14
  62. package/dist/blog/server-ui.mjs +2 -2
  63. package/dist/blog/types.d.ts +3 -0
  64. package/dist/blog/types.d.ts.map +1 -1
  65. package/dist/{chunk-EDZWNCSE.js → chunk-3EPMDPWI.js} +2 -2
  66. package/dist/{chunk-EDZWNCSE.js.map → chunk-3EPMDPWI.js.map} +1 -1
  67. package/dist/{chunk-7UPPYERC.mjs → chunk-42F5EK24.mjs} +4 -4
  68. package/dist/{chunk-7UPPYERC.mjs.map → chunk-42F5EK24.mjs.map} +1 -1
  69. package/dist/{chunk-5HMN3FXL.js → chunk-4DE2KJ7R.js} +8 -8
  70. package/dist/{chunk-5HMN3FXL.js.map → chunk-4DE2KJ7R.js.map} +1 -1
  71. package/dist/{chunk-DTX4R45S.js → chunk-5BZDHZCN.js} +4 -4
  72. package/dist/{chunk-DTX4R45S.js.map → chunk-5BZDHZCN.js.map} +1 -1
  73. package/dist/{chunk-I72AUITZ.mjs → chunk-67CHHDBL.mjs} +3 -3
  74. package/dist/{chunk-I72AUITZ.mjs.map → chunk-67CHHDBL.mjs.map} +1 -1
  75. package/dist/{chunk-UJOEN4X6.js → chunk-6AZTRTCG.js} +15 -15
  76. package/dist/{chunk-UJOEN4X6.js.map → chunk-6AZTRTCG.js.map} +1 -1
  77. package/dist/{chunk-PA5ZVCW2.mjs → chunk-6QABCGM6.mjs} +3 -3
  78. package/dist/{chunk-PA5ZVCW2.mjs.map → chunk-6QABCGM6.mjs.map} +1 -1
  79. package/dist/{chunk-77HT6TYK.mjs → chunk-6VG65AIA.mjs} +3 -3
  80. package/dist/{chunk-77HT6TYK.mjs.map → chunk-6VG65AIA.mjs.map} +1 -1
  81. package/dist/{chunk-2MPOO6QJ.js → chunk-757HXAYX.js} +3 -3
  82. package/dist/{chunk-2MPOO6QJ.js.map → chunk-757HXAYX.js.map} +1 -1
  83. package/dist/{chunk-ZMFJXFUY.js → chunk-A3NNUKFA.js} +3 -3
  84. package/dist/{chunk-ZMFJXFUY.js.map → chunk-A3NNUKFA.js.map} +1 -1
  85. package/dist/{chunk-NW5CBNRU.mjs → chunk-AVM4OZHR.mjs} +3 -3
  86. package/dist/{chunk-NW5CBNRU.mjs.map → chunk-AVM4OZHR.mjs.map} +1 -1
  87. package/dist/{chunk-FH4LLJFL.mjs → chunk-AXAIUCSF.mjs} +9 -8
  88. package/dist/chunk-AXAIUCSF.mjs.map +1 -0
  89. package/dist/{chunk-AKQA5ZYZ.mjs → chunk-CQUA2AUA.mjs} +3 -3
  90. package/dist/{chunk-AKQA5ZYZ.mjs.map → chunk-CQUA2AUA.mjs.map} +1 -1
  91. package/dist/chunk-D37M7MIH.js +8 -0
  92. package/dist/{chunk-TMQKZ4DO.js.map → chunk-D37M7MIH.js.map} +1 -1
  93. package/dist/{chunk-ISKJLXB4.mjs → chunk-DVH3JHZ3.mjs} +4 -4
  94. package/dist/{chunk-ISKJLXB4.mjs.map → chunk-DVH3JHZ3.mjs.map} +1 -1
  95. package/dist/{chunk-LHD45PGP.js → chunk-DYKFC7WY.js} +8 -8
  96. package/dist/{chunk-LHD45PGP.js.map → chunk-DYKFC7WY.js.map} +1 -1
  97. package/dist/{chunk-X4PL7R63.mjs → chunk-DZDWBQKA.mjs} +3 -3
  98. package/dist/{chunk-X4PL7R63.mjs.map → chunk-DZDWBQKA.mjs.map} +1 -1
  99. package/dist/{chunk-GTK3CGWF.js → chunk-E33HJMRP.js} +6 -6
  100. package/dist/{chunk-GTK3CGWF.js.map → chunk-E33HJMRP.js.map} +1 -1
  101. package/dist/{chunk-4S7BHFGT.js → chunk-FDVE56JS.js} +3 -3
  102. package/dist/{chunk-4S7BHFGT.js.map → chunk-FDVE56JS.js.map} +1 -1
  103. package/dist/{chunk-SHZXSIRH.js → chunk-FFJVQWKO.js} +4 -4
  104. package/dist/{chunk-SHZXSIRH.js.map → chunk-FFJVQWKO.js.map} +1 -1
  105. package/dist/{chunk-HIV5YK5G.js → chunk-G3YUSRCL.js} +4 -4
  106. package/dist/{chunk-HIV5YK5G.js.map → chunk-G3YUSRCL.js.map} +1 -1
  107. package/dist/{chunk-APL44ZVK.js → chunk-GFNXWS3I.js} +5 -5
  108. package/dist/{chunk-APL44ZVK.js.map → chunk-GFNXWS3I.js.map} +1 -1
  109. package/dist/{chunk-GPH3VVLP.js → chunk-GPNBBUEN.js} +3 -3
  110. package/dist/{chunk-GPH3VVLP.js.map → chunk-GPNBBUEN.js.map} +1 -1
  111. package/dist/{chunk-VGX6G3TA.mjs → chunk-HDQTZAGE.mjs} +3 -3
  112. package/dist/{chunk-VGX6G3TA.mjs.map → chunk-HDQTZAGE.mjs.map} +1 -1
  113. package/dist/{chunk-COAVBUMS.mjs → chunk-HVFXFPUJ.mjs} +3 -3
  114. package/dist/{chunk-COAVBUMS.mjs.map → chunk-HVFXFPUJ.mjs.map} +1 -1
  115. package/dist/{chunk-XR47TOGW.mjs → chunk-JSLYNYTB.mjs} +3 -3
  116. package/dist/{chunk-XR47TOGW.mjs.map → chunk-JSLYNYTB.mjs.map} +1 -1
  117. package/dist/{chunk-W47J6ZZG.mjs → chunk-JTO3K5B7.mjs} +4 -4
  118. package/dist/{chunk-W47J6ZZG.mjs.map → chunk-JTO3K5B7.mjs.map} +1 -1
  119. package/dist/{chunk-QG7WHAGD.js → chunk-K37JPEQW.js} +15 -15
  120. package/dist/{chunk-QG7WHAGD.js.map → chunk-K37JPEQW.js.map} +1 -1
  121. package/dist/{chunk-DBJRJ2Q2.mjs → chunk-KOP3DPIR.mjs} +4 -4
  122. package/dist/{chunk-DBJRJ2Q2.mjs.map → chunk-KOP3DPIR.mjs.map} +1 -1
  123. package/dist/{chunk-LFJRMY4V.js → chunk-KPFPSOYS.js} +12 -12
  124. package/dist/{chunk-LFJRMY4V.js.map → chunk-KPFPSOYS.js.map} +1 -1
  125. package/dist/{chunk-KP56C66Z.js → chunk-M7FWXEXC.js} +126 -188
  126. package/dist/chunk-M7FWXEXC.js.map +1 -0
  127. package/dist/{chunk-UYR22S67.js → chunk-MANX6422.js} +7 -7
  128. package/dist/{chunk-UYR22S67.js.map → chunk-MANX6422.js.map} +1 -1
  129. package/dist/{chunk-WZZYTFDV.mjs → chunk-N3C323NY.mjs} +8 -3
  130. package/dist/chunk-N3C323NY.mjs.map +1 -0
  131. package/dist/{chunk-R4PFWVGZ.mjs → chunk-NSLYY62T.mjs} +4 -4
  132. package/dist/{chunk-R4PFWVGZ.mjs.map → chunk-NSLYY62T.mjs.map} +1 -1
  133. package/dist/chunk-NVSWTDWU.mjs +25 -0
  134. package/dist/chunk-NVSWTDWU.mjs.map +1 -0
  135. package/dist/{chunk-WD57YWY5.mjs → chunk-OC6PU7U2.mjs} +3 -3
  136. package/dist/{chunk-WD57YWY5.mjs.map → chunk-OC6PU7U2.mjs.map} +1 -1
  137. package/dist/{chunk-2VQ5YXOD.js → chunk-OIJ435IZ.js} +18 -18
  138. package/dist/{chunk-2VQ5YXOD.js.map → chunk-OIJ435IZ.js.map} +1 -1
  139. package/dist/chunk-OL2QBWAU.js +29 -0
  140. package/dist/chunk-OL2QBWAU.js.map +1 -0
  141. package/dist/chunk-OUERH2T4.mjs +6 -0
  142. package/dist/{chunk-HRQ4367C.mjs.map → chunk-OUERH2T4.mjs.map} +1 -1
  143. package/dist/{chunk-VLR2UYO4.js → chunk-PEEQMI7U.js} +12 -11
  144. package/dist/chunk-PEEQMI7U.js.map +1 -0
  145. package/dist/{chunk-47566YF4.js → chunk-PZXKFHPO.js} +14 -14
  146. package/dist/{chunk-47566YF4.js.map → chunk-PZXKFHPO.js.map} +1 -1
  147. package/dist/{chunk-SI7R3IJX.mjs → chunk-QZ54OCWD.mjs} +7 -7
  148. package/dist/{chunk-SI7R3IJX.mjs.map → chunk-QZ54OCWD.mjs.map} +1 -1
  149. package/dist/{chunk-GQTSQR63.js → chunk-R3LYTIVN.js} +10 -5
  150. package/dist/chunk-R3LYTIVN.js.map +1 -0
  151. package/dist/{chunk-26JXNW7B.mjs → chunk-RO55G3OA.mjs} +2 -2
  152. package/dist/{chunk-26JXNW7B.mjs.map → chunk-RO55G3OA.mjs.map} +1 -1
  153. package/dist/{chunk-4IMZ45YA.mjs → chunk-TS3N3LGZ.mjs} +4 -4
  154. package/dist/{chunk-4IMZ45YA.mjs.map → chunk-TS3N3LGZ.mjs.map} +1 -1
  155. package/dist/{chunk-TAIGHH5J.js → chunk-W23TMUKB.js} +9 -9
  156. package/dist/{chunk-TAIGHH5J.js.map → chunk-W23TMUKB.js.map} +1 -1
  157. package/dist/{chunk-5TGSM5EQ.js → chunk-XQZTOWS3.js} +14 -14
  158. package/dist/{chunk-5TGSM5EQ.js.map → chunk-XQZTOWS3.js.map} +1 -1
  159. package/dist/{chunk-GM5E6R5W.mjs → chunk-XW5KNCWJ.mjs} +3 -3
  160. package/dist/{chunk-GM5E6R5W.mjs.map → chunk-XW5KNCWJ.mjs.map} +1 -1
  161. package/dist/{chunk-AJBJH3BA.mjs → chunk-Y7SRO7MJ.mjs} +127 -189
  162. package/dist/chunk-Y7SRO7MJ.mjs.map +1 -0
  163. package/dist/{chunk-AVPMSJCQ.js → chunk-Z7K5AMCE.js} +4 -4
  164. package/dist/{chunk-AVPMSJCQ.js.map → chunk-Z7K5AMCE.js.map} +1 -1
  165. package/dist/{chunk-4HL6CAZ7.mjs → chunk-ZKR5AJV5.mjs} +4 -4
  166. package/dist/{chunk-4HL6CAZ7.mjs.map → chunk-ZKR5AJV5.mjs.map} +1 -1
  167. package/dist/{chunk-DN6A6KXH.mjs → chunk-ZOJ3TLO5.mjs} +3 -3
  168. package/dist/{chunk-DN6A6KXH.mjs.map → chunk-ZOJ3TLO5.mjs.map} +1 -1
  169. package/dist/cli/index.js +3 -3
  170. package/dist/cli/index.mjs +1 -1
  171. package/dist/client/index.js +4 -4
  172. package/dist/client/index.mjs +3 -3
  173. package/dist/commerce/index.js +58 -57
  174. package/dist/commerce/index.mjs +7 -6
  175. package/dist/engage/index.js +10 -10
  176. package/dist/engage/index.mjs +7 -7
  177. package/dist/fleet/index.js +8 -8
  178. package/dist/fleet/index.mjs +4 -4
  179. package/dist/forms/index.js +16 -16
  180. package/dist/forms/index.mjs +9 -9
  181. package/dist/forms/server.js +10 -10
  182. package/dist/forms/server.mjs +8 -8
  183. package/dist/forms/static.js +7 -7
  184. package/dist/forms/static.mjs +6 -6
  185. package/dist/images/index.js +11 -11
  186. package/dist/images/index.mjs +4 -4
  187. package/dist/index.js +65 -64
  188. package/dist/index.js.map +1 -1
  189. package/dist/index.mjs +11 -10
  190. package/dist/index.mjs.map +1 -1
  191. package/dist/layout/SiteKitClientProviders.d.ts.map +1 -1
  192. package/dist/layout/client.d.ts.map +1 -1
  193. package/dist/layout/client.js +8 -8
  194. package/dist/layout/client.mjs +7 -7
  195. package/dist/layout/index.js +10 -10
  196. package/dist/layout/index.mjs +8 -8
  197. package/dist/layout/types.d.ts +16 -0
  198. package/dist/layout/types.d.ts.map +1 -1
  199. package/dist/maps/index.js +5 -5
  200. package/dist/maps/index.mjs +3 -3
  201. package/dist/search/index.js +4 -4
  202. package/dist/search/index.mjs +3 -3
  203. package/dist/seo/client.js +6 -5
  204. package/dist/seo/client.mjs +5 -4
  205. package/dist/seo/index.js +6 -5
  206. package/dist/seo/index.js.map +1 -1
  207. package/dist/seo/index.mjs +5 -4
  208. package/dist/seo/index.mjs.map +1 -1
  209. package/dist/server/index.js +3 -3
  210. package/dist/server/index.mjs +2 -2
  211. package/dist/shared/frame.d.ts +71 -0
  212. package/dist/shared/frame.d.ts.map +1 -0
  213. package/dist/shared/version.d.ts +1 -1
  214. package/dist/signal/index.js +11 -11
  215. package/dist/signal/index.mjs +2 -2
  216. package/dist/sync/index.js +16 -16
  217. package/dist/sync/index.mjs +4 -4
  218. package/package.json +1 -1
  219. package/dist/AnalyticsProvider-NA7EMJCA.mjs +0 -10
  220. package/dist/AnalyticsProvider-XE3ADUUH.js +0 -31
  221. package/dist/ChatWidget-BD4F4XLD.mjs +0 -11
  222. package/dist/ChatWidget-BZ3KOSXG.js +0 -20
  223. package/dist/EngageWidget-JPP6EDCJ.js +0 -18
  224. package/dist/EngageWidget-L7B6PCM3.mjs +0 -9
  225. package/dist/ManagedForm-2OPCHDNJ.js +0 -23
  226. package/dist/ManagedForm-AJM6D4SK.mjs +0 -14
  227. package/dist/SitemapSync-T2N3TCWF.js +0 -17
  228. package/dist/SitemapSync-YLWMU6J3.mjs +0 -8
  229. package/dist/chunk-AJBJH3BA.mjs.map +0 -1
  230. package/dist/chunk-FH4LLJFL.mjs.map +0 -1
  231. package/dist/chunk-GQTSQR63.js.map +0 -1
  232. package/dist/chunk-HRQ4367C.mjs +0 -6
  233. package/dist/chunk-KP56C66Z.js.map +0 -1
  234. package/dist/chunk-TMQKZ4DO.js +0 -8
  235. package/dist/chunk-VLR2UYO4.js.map +0 -1
  236. package/dist/chunk-WZZYTFDV.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/analytics/useContactTracking.ts"],"names":[],"mappings":"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","file":"chunk-26JXNW7B.mjs","sourcesContent":["/**\n * @sonordev/site-kit/analytics - Contact Tracking Hook\n * \n * Tracks phone calls and email clicks as conversions.\n * Use this hook to automatically track tel: and mailto: links,\n * or manually track contact interactions.\n */\n\n'use client'\n\nimport { useCallback, useEffect } from 'react'\n// Deliberately the standalone dispatch bridge, NOT useAnalytics().\n//\n// SiteKitLayout mounts AnalyticsProvider as a childless deferred SIBLING of\n// the page tree (wrapping children in a dynamic ssr:false provider de-opts the\n// whole route to client rendering - see SiteKitClientProviders). That means no\n// component a site can actually place is ever inside the provider, so the hook\n// form threw \"useAnalytics must be used within an AnalyticsProvider\" and this\n// component could not be used with the documented layout at all.\n//\n// dispatch queues until the deferred provider registers itself, so calls made\n// before analytics is ready still land.\nimport { trackConversion } from './dispatch'\n\nexport interface UseContactTrackingOptions {\n /** Automatically track all tel: and mailto: links (default: true) */\n autoTrack?: boolean\n /** Debug mode - logs events to console */\n debug?: boolean\n}\n\nexport interface ContactTrackingReturn {\n /** Manually track a phone call click */\n trackPhoneClick: (phoneNumber: string, metadata?: Record<string, unknown>) => void\n /** Manually track an email click */\n trackEmailClick: (email: string, metadata?: Record<string, unknown>) => void\n}\n\n/**\n * Hook for tracking phone and email contact interactions as conversions.\n * \n * @example\n * ```tsx\n * // Auto-track all tel: and mailto: links\n * useContactTracking()\n * \n * // Manual tracking\n * const { trackPhoneClick, trackEmailClick } = useContactTracking()\n * trackPhoneClick('513-555-1234')\n * trackEmailClick('hello@example.com')\n * ```\n */\nexport function useContactTracking(options: UseContactTrackingOptions = {}): ContactTrackingReturn {\n const { autoTrack = true, debug = false } = options\n\n const trackPhoneClick = useCallback((phoneNumber: string, metadata?: Record<string, unknown>) => {\n if (debug) console.log('[Analytics] Phone click:', phoneNumber)\n \n trackConversion({\n type: 'phone_call',\n metadata: {\n phoneNumber: phoneNumber.replace(/\\D/g, ''), // Normalize to digits\n rawNumber: phoneNumber,\n ...metadata,\n },\n })\n }, [debug])\n \n const trackEmailClick = useCallback((email: string, metadata?: Record<string, unknown>) => {\n if (debug) console.log('[Analytics] Email click:', email)\n \n trackConversion({\n type: 'email_click',\n metadata: {\n email,\n ...metadata,\n },\n })\n }, [debug])\n \n // Auto-track tel: and mailto: links\n useEffect(() => {\n if (!autoTrack || typeof document === 'undefined') return\n \n const handleClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement\n const anchor = target.closest('a')\n if (!anchor) return\n \n const href = anchor.getAttribute('href')\n if (!href) return\n \n if (href.startsWith('tel:')) {\n const phone = href.replace('tel:', '').trim()\n trackPhoneClick(phone, {\n linkText: anchor.textContent?.trim(),\n source: 'auto',\n })\n } else if (href.startsWith('mailto:')) {\n const email = href.replace('mailto:', '').split('?')[0].trim()\n trackEmailClick(email, {\n linkText: anchor.textContent?.trim(),\n source: 'auto',\n })\n }\n }\n \n document.addEventListener('click', handleClick, { capture: true })\n \n return () => {\n document.removeEventListener('click', handleClick, { capture: true })\n }\n }, [autoTrack, trackPhoneClick, trackEmailClick])\n \n return {\n trackPhoneClick,\n trackEmailClick,\n }\n}\n\n/**\n * Component wrapper for contact tracking\n * Simply include this component to auto-track all tel: and mailto: links\n * \n * @example\n * ```tsx\n * <ContactTracking />\n * ```\n */\nexport function ContactTracking({ debug = false }: { debug?: boolean }) {\n useContactTracking({ autoTrack: true, debug })\n return null\n}\n"]}
1
+ {"version":3,"sources":["../src/analytics/useContactTracking.ts"],"names":[],"mappings":"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","file":"chunk-RO55G3OA.mjs","sourcesContent":["/**\n * @sonordev/site-kit/analytics - Contact Tracking Hook\n * \n * Tracks phone calls and email clicks as conversions.\n * Use this hook to automatically track tel: and mailto: links,\n * or manually track contact interactions.\n */\n\n'use client'\n\nimport { useCallback, useEffect } from 'react'\n// Deliberately the standalone dispatch bridge, NOT useAnalytics().\n//\n// SiteKitLayout mounts AnalyticsProvider as a childless deferred SIBLING of\n// the page tree (wrapping children in a dynamic ssr:false provider de-opts the\n// whole route to client rendering - see SiteKitClientProviders). That means no\n// component a site can actually place is ever inside the provider, so the hook\n// form threw \"useAnalytics must be used within an AnalyticsProvider\" and this\n// component could not be used with the documented layout at all.\n//\n// dispatch queues until the deferred provider registers itself, so calls made\n// before analytics is ready still land.\nimport { trackConversion } from './dispatch'\n\nexport interface UseContactTrackingOptions {\n /** Automatically track all tel: and mailto: links (default: true) */\n autoTrack?: boolean\n /** Debug mode - logs events to console */\n debug?: boolean\n}\n\nexport interface ContactTrackingReturn {\n /** Manually track a phone call click */\n trackPhoneClick: (phoneNumber: string, metadata?: Record<string, unknown>) => void\n /** Manually track an email click */\n trackEmailClick: (email: string, metadata?: Record<string, unknown>) => void\n}\n\n/**\n * Hook for tracking phone and email contact interactions as conversions.\n * \n * @example\n * ```tsx\n * // Auto-track all tel: and mailto: links\n * useContactTracking()\n * \n * // Manual tracking\n * const { trackPhoneClick, trackEmailClick } = useContactTracking()\n * trackPhoneClick('513-555-1234')\n * trackEmailClick('hello@example.com')\n * ```\n */\nexport function useContactTracking(options: UseContactTrackingOptions = {}): ContactTrackingReturn {\n const { autoTrack = true, debug = false } = options\n\n const trackPhoneClick = useCallback((phoneNumber: string, metadata?: Record<string, unknown>) => {\n if (debug) console.log('[Analytics] Phone click:', phoneNumber)\n \n trackConversion({\n type: 'phone_call',\n metadata: {\n phoneNumber: phoneNumber.replace(/\\D/g, ''), // Normalize to digits\n rawNumber: phoneNumber,\n ...metadata,\n },\n })\n }, [debug])\n \n const trackEmailClick = useCallback((email: string, metadata?: Record<string, unknown>) => {\n if (debug) console.log('[Analytics] Email click:', email)\n \n trackConversion({\n type: 'email_click',\n metadata: {\n email,\n ...metadata,\n },\n })\n }, [debug])\n \n // Auto-track tel: and mailto: links\n useEffect(() => {\n if (!autoTrack || typeof document === 'undefined') return\n \n const handleClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement\n const anchor = target.closest('a')\n if (!anchor) return\n \n const href = anchor.getAttribute('href')\n if (!href) return\n \n if (href.startsWith('tel:')) {\n const phone = href.replace('tel:', '').trim()\n trackPhoneClick(phone, {\n linkText: anchor.textContent?.trim(),\n source: 'auto',\n })\n } else if (href.startsWith('mailto:')) {\n const email = href.replace('mailto:', '').split('?')[0].trim()\n trackEmailClick(email, {\n linkText: anchor.textContent?.trim(),\n source: 'auto',\n })\n }\n }\n \n document.addEventListener('click', handleClick, { capture: true })\n \n return () => {\n document.removeEventListener('click', handleClick, { capture: true })\n }\n }, [autoTrack, trackPhoneClick, trackEmailClick])\n \n return {\n trackPhoneClick,\n trackEmailClick,\n }\n}\n\n/**\n * Component wrapper for contact tracking\n * Simply include this component to auto-track all tel: and mailto: links\n * \n * @example\n * ```tsx\n * <ContactTracking />\n * ```\n */\nexport function ContactTracking({ debug = false }: { debug?: boolean }) {\n useContactTracking({ autoTrack: true, debug })\n return null\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { HoneypotField, NativeFallbackFields, nativeFormProps } from './chunk-VGX6G3TA.mjs';
1
+ import { HoneypotField, NativeFallbackFields, nativeFormProps } from './chunk-HDQTZAGE.mjs';
2
2
  import { FormField } from './chunk-H7274TKR.mjs';
3
- import { normalizeFormConfig } from './chunk-GM5E6R5W.mjs';
3
+ import { normalizeFormConfig } from './chunk-XW5KNCWJ.mjs';
4
4
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-TMVKRQGJ.mjs';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
6
6
 
@@ -40,5 +40,5 @@ function StaticForm({ config: raw, className, nativeReturnTo }) {
40
40
  }
41
41
 
42
42
  export { StaticForm };
43
- //# sourceMappingURL=chunk-4IMZ45YA.mjs.map
44
- //# sourceMappingURL=chunk-4IMZ45YA.mjs.map
43
+ //# sourceMappingURL=chunk-TS3N3LGZ.mjs.map
44
+ //# sourceMappingURL=chunk-TS3N3LGZ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/forms/StaticForm.tsx"],"names":[],"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,GAAS,oBAAoB,GAAU,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,iBAAA,GAAoB,OAAO,cAAA,IAAkB,sBAAA;AAEnD,EAAA,uBACE,IAAA;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,GAAG,gBAAgB,MAAM,CAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACX,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,CAAA;AAAA,YAGlF,8BAAC,SAAA,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,4BAEC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAmB,KAAA,EAAO,EAAE,gBAAgB,UAAA,EAAW,EACpE,QAAA,kBAAA,GAAA,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,oBAAoB,GAAA,CAAC,aAAA,EAAA,EAAc,MAAM,iBAAA,EAAmB,CAAA;AAAA,wBAGpE,GAAA,CAAC,oBAAA,EAAA,EAAqB,MAAA,EAAgB,QAAA,EAAU,cAAA,EAAgB;AAAA;AAAA;AAAA,GAClE;AAEJ","file":"chunk-4IMZ45YA.mjs","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":[],"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,GAAS,oBAAoB,GAAU,CAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,oBAAoB,MAAM,CAAA;AACzC,EAAA,MAAM,iBAAA,GAAoB,OAAO,cAAA,IAAkB,sBAAA;AAEnD,EAAA,uBACE,IAAA;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,GAAG,gBAAgB,MAAM,CAAA;AAAA,MAE1B,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,iBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,qBACX,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,CAAA,+CAAA,EAAkD,KAAA,CAAM,KAAA,IAAS,MAAM,CAAA,CAAA;AAAA,YAGlF,8BAAC,SAAA,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,4BAEC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAmB,KAAA,EAAO,EAAE,gBAAgB,UAAA,EAAW,EACpE,QAAA,kBAAA,GAAA,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,oBAAoB,GAAA,CAAC,aAAA,EAAA,EAAc,MAAM,iBAAA,EAAmB,CAAA;AAAA,wBAGpE,GAAA,CAAC,oBAAA,EAAA,EAAqB,MAAA,EAAgB,QAAA,EAAU,cAAA,EAAgB;AAAA;AAAA;AAAA,GAClE;AAEJ","file":"chunk-TS3N3LGZ.mjs","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,7 +1,7 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkUJOEN4X6_js = require('./chunk-UJOEN4X6.js');
4
+ var chunk6AZTRTCG_js = require('./chunk-6AZTRTCG.js');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
@@ -22,7 +22,7 @@ async function fetchBookingTypes(orgSlug, apiUrl, apiKey) {
22
22
  const url = apiUrl || cfg.apiUrl;
23
23
  const key = apiKey || cfg.apiKey;
24
24
  const endpoint = key ? `${url}/sync/widget/types` : `${url}/sync/public/${orgSlug}/types`;
25
- const response = await chunkUJOEN4X6_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
25
+ const response = await chunk6AZTRTCG_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
26
26
  if (!response.ok) {
27
27
  const msg = await response.json().catch(() => ({ message: response.statusText }));
28
28
  const detail = msg && typeof msg.message === "string" ? msg.message : response.statusText;
@@ -36,7 +36,7 @@ async function fetchBookingTypeDetails(typeSlug, orgSlug, apiUrl, apiKey) {
36
36
  const url = apiUrl || cfg.apiUrl;
37
37
  const key = apiKey || cfg.apiKey;
38
38
  const endpoint = key ? `${url}/sync/widget/types/${typeSlug}` : `${url}/sync/public/${orgSlug}/types/${typeSlug}`;
39
- const response = await chunkUJOEN4X6_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
39
+ const response = await chunk6AZTRTCG_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
40
40
  if (!response.ok) {
41
41
  const msg = await response.json().catch(() => ({ message: response.statusText }));
42
42
  const detail = msg && typeof msg.message === "string" ? msg.message : response.statusText;
@@ -52,7 +52,7 @@ async function fetchAvailability(typeSlug, date, orgSlug, apiUrl, apiKey, timezo
52
52
  if (timezone) params.append("timezone", timezone);
53
53
  if (hostId) params.append("hostId", hostId);
54
54
  const endpoint = key ? `${url}/sync/widget/availability/${typeSlug}?${params}` : `${url}/sync/public/${orgSlug}/availability/${typeSlug}?${params}`;
55
- const response = await chunkUJOEN4X6_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
55
+ const response = await chunk6AZTRTCG_js.sonorFetch(endpoint, { headers: buildHeaders() }, { apiKey: key, retries: 0 });
56
56
  if (!response.ok) {
57
57
  const msg = await response.json().catch(() => ({ message: response.statusText }));
58
58
  let detail = msg && typeof msg.message === "string" ? String(msg.message).trim() : (response.statusText || "").trim();
@@ -75,7 +75,7 @@ async function createSlotHold(holdData, apiUrl, apiKey) {
75
75
  const url = apiUrl || cfg.apiUrl;
76
76
  const key = apiKey || cfg.apiKey;
77
77
  const endpoint = key ? `${url}/sync/widget/hold` : `${url}/sync/public/hold`;
78
- const response = await chunkUJOEN4X6_js.sonorFetch(endpoint, {
78
+ const response = await chunk6AZTRTCG_js.sonorFetch(endpoint, {
79
79
  method: "POST",
80
80
  headers: buildHeaders(true),
81
81
  body: JSON.stringify(holdData)
@@ -90,7 +90,7 @@ async function releaseSlotHold(holdId, apiUrl, apiKey) {
90
90
  const url = apiUrl || cfg.apiUrl;
91
91
  const key = apiKey || cfg.apiKey;
92
92
  const endpoint = key ? `${url}/sync/widget/hold/${holdId}` : `${url}/sync/public/hold/${holdId}`;
93
- await chunkUJOEN4X6_js.sonorFetch(endpoint, {
93
+ await chunk6AZTRTCG_js.sonorFetch(endpoint, {
94
94
  method: "DELETE",
95
95
  headers: buildHeaders()
96
96
  }, { apiKey: key, retries: 0 });
@@ -100,7 +100,7 @@ async function createBooking(bookingData, apiUrl, apiKey) {
100
100
  const url = apiUrl || cfg.apiUrl;
101
101
  const key = apiKey || cfg.apiKey;
102
102
  const endpoint = key ? `${url}/sync/widget/booking` : `${url}/sync/public/booking`;
103
- const response = await chunkUJOEN4X6_js.sonorFetch(endpoint, {
103
+ const response = await chunk6AZTRTCG_js.sonorFetch(endpoint, {
104
104
  method: "POST",
105
105
  headers: buildHeaders(true),
106
106
  body: JSON.stringify(bookingData)
@@ -1100,5 +1100,5 @@ exports.formatDate = formatDate;
1100
1100
  exports.formatDuration = formatDuration;
1101
1101
  exports.formatTime = formatTime;
1102
1102
  exports.releaseSlotHold = releaseSlotHold;
1103
- //# sourceMappingURL=chunk-TAIGHH5J.js.map
1104
- //# sourceMappingURL=chunk-TAIGHH5J.js.map
1103
+ //# sourceMappingURL=chunk-W23TMUKB.js.map
1104
+ //# sourceMappingURL=chunk-W23TMUKB.js.map