@sonordev/site-kit 5.3.0 → 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.
- package/agent-manifest.json +1 -1
- package/dist/AnalyticsProvider-2XK54UZW.mjs +11 -0
- package/dist/{AnalyticsProvider-XSPROVHM.mjs.map → AnalyticsProvider-2XK54UZW.mjs.map} +1 -1
- package/dist/AnalyticsProvider-PM7SOGOS.js +32 -0
- package/dist/{AnalyticsProvider-2YV4ZVZD.js.map → AnalyticsProvider-PM7SOGOS.js.map} +1 -1
- package/dist/{BlogViewTracker-BQBJTL5L.js → BlogViewTracker-3BIUF5TI.js} +6 -6
- package/dist/{BlogViewTracker-BQBJTL5L.js.map → BlogViewTracker-3BIUF5TI.js.map} +1 -1
- package/dist/{BlogViewTracker-FEAXIUEW.mjs → BlogViewTracker-KFUDRDQK.mjs} +5 -5
- package/dist/{BlogViewTracker-FEAXIUEW.mjs.map → BlogViewTracker-KFUDRDQK.mjs.map} +1 -1
- package/dist/ChatWidget-4PHZHGG5.mjs +11 -0
- package/dist/{ChatWidget-B2DI2OWH.mjs.map → ChatWidget-4PHZHGG5.mjs.map} +1 -1
- package/dist/ChatWidget-7BYSGNO2.js +20 -0
- package/dist/{ChatWidget-GPBFJ4A3.js.map → ChatWidget-7BYSGNO2.js.map} +1 -1
- package/dist/EngageWidget-D6M6QWEC.mjs +9 -0
- package/dist/{EngageWidget-KF4HU4YA.mjs.map → EngageWidget-D6M6QWEC.mjs.map} +1 -1
- package/dist/EngageWidget-Q4ITKTMJ.js +18 -0
- package/dist/{EngageWidget-JXJSFONK.js.map → EngageWidget-Q4ITKTMJ.js.map} +1 -1
- package/dist/{FileField-WI6SADBA.mjs → FileField-PQQDX4IR.mjs} +5 -5
- package/dist/{FileField-WI6SADBA.mjs.map → FileField-PQQDX4IR.mjs.map} +1 -1
- package/dist/{FileField-22BB34L3.js → FileField-YBBIJOCK.js} +6 -6
- package/dist/{FileField-22BB34L3.js.map → FileField-YBBIJOCK.js.map} +1 -1
- package/dist/{FormSpotlight-6FZV6JOA.mjs → FormSpotlight-7TIIWFTP.mjs} +4 -4
- package/dist/{FormSpotlight-6FZV6JOA.mjs.map → FormSpotlight-7TIIWFTP.mjs.map} +1 -1
- package/dist/{FormSpotlight-QCIN67NB.js → FormSpotlight-WUN24F3P.js} +18 -18
- package/dist/{FormSpotlight-QCIN67NB.js.map → FormSpotlight-WUN24F3P.js.map} +1 -1
- package/dist/{FormStage-SBQQZDW6.js → FormStage-CM7OVLUT.js} +15 -15
- package/dist/{FormStage-SBQQZDW6.js.map → FormStage-CM7OVLUT.js.map} +1 -1
- package/dist/{FormStage-P3IIHVCC.mjs → FormStage-TFN2GIBO.mjs} +4 -4
- package/dist/{FormStage-P3IIHVCC.mjs.map → FormStage-TFN2GIBO.mjs.map} +1 -1
- package/dist/ManagedForm-N63YGVNY.js +23 -0
- package/dist/{ManagedForm-6LII4DED.js.map → ManagedForm-N63YGVNY.js.map} +1 -1
- package/dist/ManagedForm-ZUXLHEQU.mjs +14 -0
- package/dist/{ManagedForm-O3JRRWZ6.mjs.map → ManagedForm-ZUXLHEQU.mjs.map} +1 -1
- package/dist/{ManagedNewsletterForm-FFFF5UEX.mjs → ManagedNewsletterForm-4AVKTZ2A.mjs} +7 -7
- package/dist/{ManagedNewsletterForm-FFFF5UEX.mjs.map → ManagedNewsletterForm-4AVKTZ2A.mjs.map} +1 -1
- package/dist/{ManagedNewsletterForm-Z7NYZPAN.js → ManagedNewsletterForm-PIVJTU5L.js} +8 -8
- package/dist/{ManagedNewsletterForm-Z7NYZPAN.js.map → ManagedNewsletterForm-PIVJTU5L.js.map} +1 -1
- package/dist/{SignalCore-WL5WKQEI.js → SignalCore-2M5TISM7.js} +11 -11
- package/dist/{SignalCore-WL5WKQEI.js.map → SignalCore-2M5TISM7.js.map} +1 -1
- package/dist/{SignalCore-IUOSVYUE.mjs → SignalCore-LT4NCPOR.mjs} +5 -5
- package/dist/{SignalCore-IUOSVYUE.mjs.map → SignalCore-LT4NCPOR.mjs.map} +1 -1
- package/dist/SitemapSync-7OBOJG2L.js +18 -0
- package/dist/{SitemapSync-LA67GKKS.js.map → SitemapSync-7OBOJG2L.js.map} +1 -1
- package/dist/SitemapSync-G3OLECFI.mjs +9 -0
- package/dist/{SitemapSync-2O5UM4GM.mjs.map → SitemapSync-G3OLECFI.mjs.map} +1 -1
- package/dist/SitemapSync.d.ts.map +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts +11 -1
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
- package/dist/analytics/WebVitals.d.ts +7 -1
- package/dist/analytics/WebVitals.d.ts.map +1 -1
- package/dist/analytics/index.d.ts +1 -0
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +25 -12
- package/dist/analytics/index.mjs +6 -5
- package/dist/analytics/send-gate.d.ts +119 -0
- package/dist/analytics/send-gate.d.ts.map +1 -0
- package/dist/analytics/send-gate.test.d.ts +20 -0
- package/dist/analytics/send-gate.test.d.ts.map +1 -0
- package/dist/blog/index.js +20 -20
- package/dist/blog/index.mjs +3 -3
- package/dist/blog/server-ui.js +14 -14
- package/dist/blog/server-ui.mjs +2 -2
- package/dist/blog/types.d.ts +3 -0
- package/dist/blog/types.d.ts.map +1 -1
- package/dist/{chunk-EDZWNCSE.js → chunk-3EPMDPWI.js} +2 -2
- package/dist/{chunk-EDZWNCSE.js.map → chunk-3EPMDPWI.js.map} +1 -1
- package/dist/{chunk-BAFGZQWP.mjs → chunk-42F5EK24.mjs} +4 -4
- package/dist/{chunk-BAFGZQWP.mjs.map → chunk-42F5EK24.mjs.map} +1 -1
- package/dist/{chunk-3DQXXYCS.js → chunk-4DE2KJ7R.js} +10 -10
- package/dist/{chunk-3DQXXYCS.js.map → chunk-4DE2KJ7R.js.map} +1 -1
- package/dist/{chunk-LFBMFACZ.js → chunk-5BZDHZCN.js} +4 -4
- package/dist/{chunk-LFBMFACZ.js.map → chunk-5BZDHZCN.js.map} +1 -1
- package/dist/{chunk-YDIINUWD.mjs → chunk-67CHHDBL.mjs} +3 -3
- package/dist/{chunk-YDIINUWD.mjs.map → chunk-67CHHDBL.mjs.map} +1 -1
- package/dist/{chunk-RMLRZOVE.js → chunk-6AZTRTCG.js} +15 -15
- package/dist/{chunk-RMLRZOVE.js.map → chunk-6AZTRTCG.js.map} +1 -1
- package/dist/{chunk-X4H2RAIQ.mjs → chunk-6QABCGM6.mjs} +3 -3
- package/dist/{chunk-X4H2RAIQ.mjs.map → chunk-6QABCGM6.mjs.map} +1 -1
- package/dist/{chunk-MOVMDHGE.mjs → chunk-6VG65AIA.mjs} +3 -3
- package/dist/{chunk-MOVMDHGE.mjs.map → chunk-6VG65AIA.mjs.map} +1 -1
- package/dist/{chunk-5I7UEXJL.js → chunk-757HXAYX.js} +3 -3
- package/dist/{chunk-5I7UEXJL.js.map → chunk-757HXAYX.js.map} +1 -1
- package/dist/{chunk-ULGTZ2VU.js → chunk-A3NNUKFA.js} +3 -3
- package/dist/{chunk-ULGTZ2VU.js.map → chunk-A3NNUKFA.js.map} +1 -1
- package/dist/{chunk-D2D3YKWT.mjs → chunk-AVM4OZHR.mjs} +3 -3
- package/dist/{chunk-D2D3YKWT.mjs.map → chunk-AVM4OZHR.mjs.map} +1 -1
- package/dist/{chunk-K447AIIB.mjs → chunk-AXAIUCSF.mjs} +9 -8
- package/dist/chunk-AXAIUCSF.mjs.map +1 -0
- package/dist/{chunk-HHX72A2B.mjs → chunk-CQUA2AUA.mjs} +3 -3
- package/dist/{chunk-HHX72A2B.mjs.map → chunk-CQUA2AUA.mjs.map} +1 -1
- package/dist/chunk-D37M7MIH.js +8 -0
- package/dist/{chunk-BIZT7AYK.js.map → chunk-D37M7MIH.js.map} +1 -1
- package/dist/{chunk-7MQR4KDL.mjs → chunk-DVH3JHZ3.mjs} +4 -4
- package/dist/{chunk-7MQR4KDL.mjs.map → chunk-DVH3JHZ3.mjs.map} +1 -1
- package/dist/{chunk-K6YQ73IX.js → chunk-DYKFC7WY.js} +8 -8
- package/dist/{chunk-K6YQ73IX.js.map → chunk-DYKFC7WY.js.map} +1 -1
- package/dist/{chunk-O2KN2SC7.mjs → chunk-DZDWBQKA.mjs} +3 -3
- package/dist/{chunk-O2KN2SC7.mjs.map → chunk-DZDWBQKA.mjs.map} +1 -1
- package/dist/{chunk-OQBDJRVP.js → chunk-E33HJMRP.js} +6 -6
- package/dist/{chunk-OQBDJRVP.js.map → chunk-E33HJMRP.js.map} +1 -1
- package/dist/{chunk-VTEIXKBA.js → chunk-FDVE56JS.js} +3 -3
- package/dist/{chunk-VTEIXKBA.js.map → chunk-FDVE56JS.js.map} +1 -1
- package/dist/{chunk-7NMI7M56.js → chunk-FFJVQWKO.js} +4 -4
- package/dist/{chunk-7NMI7M56.js.map → chunk-FFJVQWKO.js.map} +1 -1
- package/dist/{chunk-2OZ2SMZH.js → chunk-G3YUSRCL.js} +4 -4
- package/dist/{chunk-2OZ2SMZH.js.map → chunk-G3YUSRCL.js.map} +1 -1
- package/dist/{chunk-JJ6AI6LW.js → chunk-GFNXWS3I.js} +5 -5
- package/dist/{chunk-JJ6AI6LW.js.map → chunk-GFNXWS3I.js.map} +1 -1
- package/dist/{chunk-X6SAM7CR.js → chunk-GPNBBUEN.js} +3 -3
- package/dist/{chunk-X6SAM7CR.js.map → chunk-GPNBBUEN.js.map} +1 -1
- package/dist/{chunk-LB7LHVWI.mjs → chunk-H7274TKR.mjs} +9 -3
- package/dist/chunk-H7274TKR.mjs.map +1 -0
- package/dist/{chunk-DXFZA34N.mjs → chunk-HDQTZAGE.mjs} +3 -3
- package/dist/{chunk-DXFZA34N.mjs.map → chunk-HDQTZAGE.mjs.map} +1 -1
- package/dist/{chunk-GCY6VPBG.mjs → chunk-HVFXFPUJ.mjs} +3 -3
- package/dist/{chunk-GCY6VPBG.mjs.map → chunk-HVFXFPUJ.mjs.map} +1 -1
- package/dist/{chunk-2ACKOMAL.js → chunk-IPV2TUAT.js} +9 -3
- package/dist/chunk-IPV2TUAT.js.map +1 -0
- package/dist/{chunk-7OCQ4646.mjs → chunk-JSLYNYTB.mjs} +3 -3
- package/dist/{chunk-7OCQ4646.mjs.map → chunk-JSLYNYTB.mjs.map} +1 -1
- package/dist/{chunk-FDLFXHUU.mjs → chunk-JTO3K5B7.mjs} +4 -4
- package/dist/{chunk-FDLFXHUU.mjs.map → chunk-JTO3K5B7.mjs.map} +1 -1
- package/dist/{chunk-KMNIW4K4.js → chunk-K37JPEQW.js} +15 -15
- package/dist/{chunk-KMNIW4K4.js.map → chunk-K37JPEQW.js.map} +1 -1
- package/dist/{chunk-KHHMU4UH.mjs → chunk-KOP3DPIR.mjs} +4 -4
- package/dist/{chunk-KHHMU4UH.mjs.map → chunk-KOP3DPIR.mjs.map} +1 -1
- package/dist/{chunk-PXAALKTP.js → chunk-KP5BFPGT.js} +5 -3
- package/dist/chunk-KP5BFPGT.js.map +1 -0
- package/dist/{chunk-XYZZJZGS.js → chunk-KPFPSOYS.js} +12 -12
- package/dist/{chunk-XYZZJZGS.js.map → chunk-KPFPSOYS.js.map} +1 -1
- package/dist/{chunk-4YJFC6FC.js → chunk-M7FWXEXC.js} +126 -188
- package/dist/chunk-M7FWXEXC.js.map +1 -0
- package/dist/{chunk-GF7CQMBL.js → chunk-MANX6422.js} +7 -7
- package/dist/{chunk-GF7CQMBL.js.map → chunk-MANX6422.js.map} +1 -1
- package/dist/{chunk-XRONA2QL.mjs → chunk-N3C323NY.mjs} +8 -3
- package/dist/chunk-N3C323NY.mjs.map +1 -0
- package/dist/{chunk-YUOVAWCL.mjs → chunk-NSLYY62T.mjs} +4 -4
- package/dist/{chunk-YUOVAWCL.mjs.map → chunk-NSLYY62T.mjs.map} +1 -1
- package/dist/chunk-NVSWTDWU.mjs +25 -0
- package/dist/chunk-NVSWTDWU.mjs.map +1 -0
- package/dist/{chunk-KC2FCI5V.mjs → chunk-OC6PU7U2.mjs} +3 -3
- package/dist/{chunk-KC2FCI5V.mjs.map → chunk-OC6PU7U2.mjs.map} +1 -1
- package/dist/{chunk-WZ6QNL2D.js → chunk-OIJ435IZ.js} +23 -23
- package/dist/{chunk-WZ6QNL2D.js.map → chunk-OIJ435IZ.js.map} +1 -1
- package/dist/chunk-OL2QBWAU.js +29 -0
- package/dist/chunk-OL2QBWAU.js.map +1 -0
- package/dist/chunk-OUERH2T4.mjs +6 -0
- package/dist/{chunk-3PTKHSF7.mjs.map → chunk-OUERH2T4.mjs.map} +1 -1
- package/dist/{chunk-NQLE3V3T.js → chunk-PEEQMI7U.js} +12 -11
- package/dist/chunk-PEEQMI7U.js.map +1 -0
- package/dist/{chunk-RE54UKET.js → chunk-PZXKFHPO.js} +14 -14
- package/dist/{chunk-RE54UKET.js.map → chunk-PZXKFHPO.js.map} +1 -1
- package/dist/{chunk-W7QMCG2A.mjs → chunk-QZ54OCWD.mjs} +8 -8
- package/dist/{chunk-W7QMCG2A.mjs.map → chunk-QZ54OCWD.mjs.map} +1 -1
- package/dist/{chunk-B7FHRTBA.js → chunk-R3LYTIVN.js} +10 -5
- package/dist/chunk-R3LYTIVN.js.map +1 -0
- package/dist/{chunk-5YKMHPJL.mjs → chunk-R5F2JQVX.mjs} +5 -3
- package/dist/chunk-R5F2JQVX.mjs.map +1 -0
- package/dist/{chunk-26JXNW7B.mjs → chunk-RO55G3OA.mjs} +2 -2
- package/dist/{chunk-26JXNW7B.mjs.map → chunk-RO55G3OA.mjs.map} +1 -1
- package/dist/{chunk-LCRWCOPI.mjs → chunk-TS3N3LGZ.mjs} +5 -5
- package/dist/{chunk-LCRWCOPI.mjs.map → chunk-TS3N3LGZ.mjs.map} +1 -1
- package/dist/{chunk-6ABEAO2K.js → chunk-W23TMUKB.js} +9 -9
- package/dist/{chunk-6ABEAO2K.js.map → chunk-W23TMUKB.js.map} +1 -1
- package/dist/{chunk-PEIWCJXS.js → chunk-XQZTOWS3.js} +14 -14
- package/dist/{chunk-PEIWCJXS.js.map → chunk-XQZTOWS3.js.map} +1 -1
- package/dist/{chunk-ITV76G3L.mjs → chunk-XW5KNCWJ.mjs} +3 -3
- package/dist/{chunk-ITV76G3L.mjs.map → chunk-XW5KNCWJ.mjs.map} +1 -1
- package/dist/{chunk-KIGIAA6Q.mjs → chunk-Y7SRO7MJ.mjs} +127 -189
- package/dist/chunk-Y7SRO7MJ.mjs.map +1 -0
- package/dist/{chunk-XZI6KUB3.js → chunk-Z7K5AMCE.js} +4 -4
- package/dist/{chunk-XZI6KUB3.js.map → chunk-Z7K5AMCE.js.map} +1 -1
- package/dist/{chunk-F4DZH4E5.mjs → chunk-ZKR5AJV5.mjs} +4 -4
- package/dist/{chunk-F4DZH4E5.mjs.map → chunk-ZKR5AJV5.mjs.map} +1 -1
- package/dist/{chunk-6RYCAW5B.mjs → chunk-ZOJ3TLO5.mjs} +3 -3
- package/dist/{chunk-6RYCAW5B.mjs.map → chunk-ZOJ3TLO5.mjs.map} +1 -1
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.mjs +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/commerce/index.js +58 -57
- package/dist/commerce/index.mjs +7 -6
- package/dist/config/index.js +2 -2
- package/dist/config/index.mjs +1 -1
- package/dist/engage/index.js +10 -10
- package/dist/engage/index.mjs +7 -7
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/FormField.d.ts +2 -1
- package/dist/forms/FormField.d.ts.map +1 -1
- package/dist/forms/index.js +18 -18
- package/dist/forms/index.mjs +10 -10
- package/dist/forms/server.js +11 -11
- package/dist/forms/server.mjs +9 -9
- package/dist/forms/static.js +8 -8
- package/dist/forms/static.mjs +7 -7
- package/dist/forms/styles.css +21 -0
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +65 -64
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -10
- package/dist/index.mjs.map +1 -1
- package/dist/layout/SiteKitClientProviders.d.ts.map +1 -1
- package/dist/layout/client.d.ts.map +1 -1
- package/dist/layout/client.js +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +10 -10
- package/dist/layout/index.mjs +8 -8
- package/dist/layout/types.d.ts +16 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/proxy/index.js +3 -3
- package/dist/proxy/index.mjs +2 -2
- package/dist/proxy/securityHeaders.d.ts +21 -6
- package/dist/proxy/securityHeaders.d.ts.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/client.js +6 -5
- package/dist/seo/client.mjs +5 -4
- package/dist/seo/index.js +6 -5
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +5 -4
- package/dist/seo/index.mjs.map +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/shared/frame.d.ts +71 -0
- package/dist/shared/frame.d.ts.map +1 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sync/index.js +16 -16
- package/dist/sync/index.mjs +4 -4
- package/package.json +1 -1
- package/dist/AnalyticsProvider-2YV4ZVZD.js +0 -31
- package/dist/AnalyticsProvider-XSPROVHM.mjs +0 -10
- package/dist/ChatWidget-B2DI2OWH.mjs +0 -11
- package/dist/ChatWidget-GPBFJ4A3.js +0 -20
- package/dist/EngageWidget-JXJSFONK.js +0 -18
- package/dist/EngageWidget-KF4HU4YA.mjs +0 -9
- package/dist/ManagedForm-6LII4DED.js +0 -23
- package/dist/ManagedForm-O3JRRWZ6.mjs +0 -14
- package/dist/SitemapSync-2O5UM4GM.mjs +0 -8
- package/dist/SitemapSync-LA67GKKS.js +0 -17
- package/dist/chunk-2ACKOMAL.js.map +0 -1
- package/dist/chunk-3PTKHSF7.mjs +0 -6
- package/dist/chunk-4YJFC6FC.js.map +0 -1
- package/dist/chunk-5YKMHPJL.mjs.map +0 -1
- package/dist/chunk-B7FHRTBA.js.map +0 -1
- package/dist/chunk-BIZT7AYK.js +0 -8
- package/dist/chunk-K447AIIB.mjs.map +0 -1
- package/dist/chunk-KIGIAA6Q.mjs.map +0 -1
- package/dist/chunk-LB7LHVWI.mjs.map +0 -1
- package/dist/chunk-NQLE3V3T.js.map +0 -1
- package/dist/chunk-PXAALKTP.js.map +0 -1
- package/dist/chunk-XRONA2QL.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/proxy/securityHeaders.ts"],"names":[],"mappings":";AAmCO,IAAM,uBAAA,GAA0B;AAAA,EACrC,QAAA;AAAA,EACA,oBAAA;AAAA,EACA,sBAAA;AAAA,EACA,yBAAA;AAAA,EACA;AACF;AAiCO,SAAS,qBACd,MAAA,EACwB;AACxB,EAAA,IAAI,MAAA,KAAW,KAAA,EAAO,OAAO,EAAC;AAE9B,EAAA,MAAM,CAAA,GACJ,OAAO,MAAA,KAAW,QAAA,GAAW,SAAS,EAAC;AAEzC,EAAA,MAAM,UAAkC,EAAC;AAGzC,EAAA,IAAI,CAAA,CAAE,uBAAuB,KAAA,EAAO;AAClC,IAAA,OAAA,CAAQ,wBAAwB,CAAA,GAAI,IAAA;AAAA,EACtC;AAUA,EAAA,MAAM,cAAA,GACJ,CAAA,CAAE,cAAA,KAAmB,KAAA,GACjB,IAAA,GACA,CAAA,CAAE,cAAA,IAAkB,CAAA,CAAE,cAAA,CAAe,MAAA,GAAS,CAAA,GAC5C,CAAA,CAAE,cAAA,GACF,uBAAA;AAER,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,OAAA,CAAQ,yBAAyB,CAAA,GAC/B,CAAA,gBAAA,EAAmB,cAAA,CAAe,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAE7C,IAAA,IAAI,EAAE,YAAA,EAAc;AAClB,MAAA,OAAA,CAAQ,iBAAiB,IAAI,CAAA,CAAE,YAAA;AAAA,IACjC;AAAA,EACF,CAAA,MAAA,IAAW,CAAA,CAAE,YAAA,KAAiB,KAAA,EAAO;AACnC,IAAA,OAAA,CAAQ,iBAAiB,CAAA,GAAI,CAAA,CAAE,YAAA,IAAgB,MAAA;AAAA,EACjD;AAGA,EAAA,IAAI,CAAA,CAAE,uBAAuB,KAAA,EAAO;AAClC,IAAA,OAAA,CAAQ,wBAAwB,CAAA,GAAI,SAAA;AAAA,EACtC;AAGA,EAAA,IAAI,CAAA,CAAE,kBAAkB,KAAA,EAAO;AAC7B,IAAA,OAAA,CAAQ,kBAAkB,CAAA,GAAI,eAAA;AAAA,EAChC;AAGA,EAAA,OAAA,CAAQ,iBAAiB,CAAA,GACvB,CAAA,CAAE,cAAA,IAAkB,iCAAA;AAGtB,EAAA,OAAA,CAAQ,oBAAoB,CAAA,GAC1B,CAAA,CAAE,iBAAA,IAAqB,0CAAA;AAGzB,EAAA,IAAI,EAAE,aAAA,EAAe;AACnB,IAAA,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS,CAAA,CAAE,aAAa,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,OAAA;AACT","file":"chunk-R5F2JQVX.mjs","sourcesContent":["/**\n * Default security headers applied by site-kit middleware.\n *\n * These match industry best practices and are the same headers\n * recommended by Next.js documentation. All are opt-out.\n */\n\n/**\n * Single source of truth for who may frame a site-kit site.\n *\n * Upforge showcases live client work inside iframes on its portfolio /\n * area pages, so every managed marketing site has to be embeddable from\n * the Upforge showcase origins. `X-Frame-Options` cannot express an\n * allowlist (`ALLOW-FROM` is dead and ignored by every current browser),\n * so the CSP `frame-ancestors` directive is the only way to say \"these\n * origins and nobody else\". Everything not listed here is still blocked.\n *\n * upforgelabs.com is a SEPARATE APEX DOMAIN, not a subdomain of\n * upforge.io, so `https://*.upforge.io` does not cover it and never did.\n * Labs case studies embed three live client frames each; without this\n * entry every one of them is refused with ERR_BLOCKED_BY_RESPONSE.\n *\n * upforgeapps.com is deliberately NOT here. It is a third Upforge apex,\n * but it only *links* to case studies (`upforge.io/work/<slug>`, see its\n * `lib/proof.ts`) and frames no client site anywhere. An origin earns a\n * place on this list by embedding, not by belonging to Upforge; adding a\n * non-embedder would hand out framing rights nothing needs. Re-check that\n * before adding it.\n *\n * Do NOT re-fork this list into individual sites' proxy/middleware/\n * next.config/netlify.toml/_headers — a fork is a copy that stops\n * tracking this one, which is exactly how upforgelabs.com came to be\n * missing from ten sites' allowlists at once. Add origins HERE and let\n * the fleet inherit them on its next deploy.\n */\nexport const DEFAULT_FRAME_ANCESTORS = [\n \"'self'\",\n 'https://upforge.io',\n 'https://*.upforge.io',\n 'https://upforgelabs.com',\n 'https://*.upforgelabs.com',\n]\n\nexport interface SecurityHeadersConfig {\n /** X-Frame-Options value. false to disable. Default: omitted when\n * `frameAncestors` is active (the two conflict), otherwise 'DENY'. */\n frameOptions?: 'DENY' | 'SAMEORIGIN' | false\n /**\n * Origins allowed to frame this site, emitted as a CSP `frame-ancestors`\n * directive. Defaults to {@link DEFAULT_FRAME_ANCESTORS} ('self' + upforge.io)\n * so Upforge can showcase the site. Pass an array to extend/replace, or\n * `false` to opt out entirely and fall back to X-Frame-Options.\n *\n * Ignored if a `Content-Security-Policy` is supplied via `customHeaders` —\n * that CSP wins, and must carry its own frame-ancestors directive.\n */\n frameAncestors?: string[] | false\n /** X-Content-Type-Options: nosniff. Default: true */\n contentTypeOptions?: boolean\n /** X-XSS-Protection header. Default: true */\n xssProtection?: boolean\n /** Referrer-Policy value. Default: 'strict-origin-when-cross-origin' */\n referrerPolicy?: string\n /** Permissions-Policy value. Default restricts camera, microphone, geolocation */\n permissionsPolicy?: string\n /** X-DNS-Prefetch-Control. Default: true (on) */\n dnsPrefetchControl?: boolean\n /** Additional custom headers */\n customHeaders?: Record<string, string>\n}\n\n/**\n * Build a flat Record of header name → value from the config.\n */\nexport function buildSecurityHeaders(\n config?: SecurityHeadersConfig | boolean,\n): Record<string, string> {\n if (config === false) return {}\n\n const c: SecurityHeadersConfig =\n typeof config === 'object' ? config : {}\n\n const headers: Record<string, string> = {}\n\n // X-DNS-Prefetch-Control\n if (c.dnsPrefetchControl !== false) {\n headers['X-DNS-Prefetch-Control'] = 'on'\n }\n\n // Framing policy — CSP frame-ancestors is the allowlist mechanism;\n // X-Frame-Options is only a fallback for the opted-out case.\n //\n // These two headers MUST NOT both be emitted: X-Frame-Options has no\n // allowlist form, so a stray `DENY`/`SAMEORIGIN` alongside a permissive\n // frame-ancestors is honoured by some browsers and silently re-blocks the\n // embed. So when frame-ancestors is active we drop XFO unless the site\n // explicitly asked for a value.\n const frameAncestors =\n c.frameAncestors === false\n ? null\n : c.frameAncestors && c.frameAncestors.length > 0\n ? c.frameAncestors\n : DEFAULT_FRAME_ANCESTORS\n\n if (frameAncestors) {\n headers['Content-Security-Policy'] =\n `frame-ancestors ${frameAncestors.join(' ')}`\n // Only honour an explicitly-requested XFO value here.\n if (c.frameOptions) {\n headers['X-Frame-Options'] = c.frameOptions\n }\n } else if (c.frameOptions !== false) {\n headers['X-Frame-Options'] = c.frameOptions || 'DENY'\n }\n\n // X-Content-Type-Options\n if (c.contentTypeOptions !== false) {\n headers['X-Content-Type-Options'] = 'nosniff'\n }\n\n // X-XSS-Protection\n if (c.xssProtection !== false) {\n headers['X-XSS-Protection'] = '1; mode=block'\n }\n\n // Referrer-Policy\n headers['Referrer-Policy'] =\n c.referrerPolicy || 'strict-origin-when-cross-origin'\n\n // Permissions-Policy\n headers['Permissions-Policy'] =\n c.permissionsPolicy || 'camera=(), microphone=(), geolocation=()'\n\n // Custom headers\n if (c.customHeaders) {\n Object.assign(headers, c.customHeaders)\n }\n\n return headers\n}\n"]}
|
|
@@ -64,5 +64,5 @@ function ContactTracking({ debug = false }) {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
export { ContactTracking, useContactTracking };
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-RO55G3OA.mjs.map
|
|
68
|
+
//# sourceMappingURL=chunk-RO55G3OA.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/analytics/useContactTracking.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/analytics/useContactTracking.ts"],"names":[],"mappings":";;;AAoDO,SAAS,kBAAA,CAAmB,OAAA,GAAqC,EAAC,EAA0B;AACjG,EAAA,MAAM,EAAE,SAAA,GAAY,IAAA,EAAM,KAAA,GAAQ,OAAM,GAAI,OAAA;AAE5C,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,WAAA,EAAqB,QAAA,KAAuC;AAC/F,IAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,0BAAA,EAA4B,WAAW,CAAA;AAE9D,IAAA,eAAA,CAAgB;AAAA,MACd,IAAA,EAAM,YAAA;AAAA,MACN,QAAA,EAAU;AAAA,QACR,WAAA,EAAa,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAAA;AAAA,QAC1C,SAAA,EAAW,WAAA;AAAA,QACX,GAAG;AAAA;AACL,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,KAAA,EAAe,QAAA,KAAuC;AACzF,IAAA,IAAI,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,0BAAA,EAA4B,KAAK,CAAA;AAExD,IAAA,eAAA,CAAgB;AAAA,MACd,IAAA,EAAM,aAAA;AAAA,MACN,QAAA,EAAU;AAAA,QACR,KAAA;AAAA,QACA,GAAG;AAAA;AACL,KACD,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAGV,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,IAAa,OAAO,QAAA,KAAa,WAAA,EAAa;AAEnD,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAkB;AACrC,MAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AACjC,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA;AACvC,MAAA,IAAI,CAAC,IAAA,EAAM;AAEX,MAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,EAAG;AAC3B,QAAA,MAAM,QAAQ,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,EAAE,EAAE,IAAA,EAAK;AAC5C,QAAA,eAAA,CAAgB,KAAA,EAAO;AAAA,UACrB,QAAA,EAAU,MAAA,CAAO,WAAA,EAAa,IAAA,EAAK;AAAA,UACnC,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH,CAAA,MAAA,IAAW,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,EAAG;AACrC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,EAAK;AAC7D,QAAA,eAAA,CAAgB,KAAA,EAAO;AAAA,UACrB,QAAA,EAAU,MAAA,CAAO,WAAA,EAAa,IAAA,EAAK;AAAA,UACnC,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,iBAAiB,OAAA,EAAS,WAAA,EAAa,EAAE,OAAA,EAAS,MAAM,CAAA;AAEjE,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,oBAAoB,OAAA,EAAS,WAAA,EAAa,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,IACtE,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,eAAA,EAAiB,eAAe,CAAC,CAAA;AAEhD,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA;AAAA,GACF;AACF;AAWO,SAAS,eAAA,CAAgB,EAAE,KAAA,GAAQ,KAAA,EAAM,EAAwB;AACtE,EAAA,kBAAA,CAAmB,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,CAAA;AAC7C,EAAA,OAAO,IAAA;AACT","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-
|
|
2
|
-
import { FormField } from './chunk-
|
|
3
|
-
import { normalizeFormConfig } from './chunk-
|
|
1
|
+
import { HoneypotField, NativeFallbackFields, nativeFormProps } from './chunk-HDQTZAGE.mjs';
|
|
2
|
+
import { FormField } from './chunk-H7274TKR.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-
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
1104
|
-
//# sourceMappingURL=chunk-
|
|
1103
|
+
//# sourceMappingURL=chunk-W23TMUKB.js.map
|
|
1104
|
+
//# sourceMappingURL=chunk-W23TMUKB.js.map
|