@sonordev/site-kit 5.7.0 → 5.8.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.
- package/README.md +3 -3
- package/agent-manifest.json +14 -2
- package/dist/AnalyticsProvider-OCXRNIVE.js +33 -0
- package/dist/{AnalyticsProvider-GJFG7YXA.js.map → AnalyticsProvider-OCXRNIVE.js.map} +1 -1
- package/dist/AnalyticsProvider-ZAUONQCX.mjs +12 -0
- package/dist/{AnalyticsProvider-EWF7JN2X.mjs.map → AnalyticsProvider-ZAUONQCX.mjs.map} +1 -1
- package/dist/{BlogViewTracker-2D3IJPJK.js → BlogViewTracker-HK5C7PU6.js} +14 -11
- package/dist/BlogViewTracker-HK5C7PU6.js.map +1 -0
- package/dist/{BlogViewTracker-CKYG6MYU.mjs → BlogViewTracker-KXRZHN3U.mjs} +13 -10
- package/dist/BlogViewTracker-KXRZHN3U.mjs.map +1 -0
- package/dist/ChatWidget-3OW5LY37.js +24 -0
- package/dist/{ChatWidget-AWP6GBVW.js.map → ChatWidget-3OW5LY37.js.map} +1 -1
- package/dist/ChatWidget-54GVS27I.mjs +15 -0
- package/dist/{ChatWidget-Z5QXDZP3.mjs.map → ChatWidget-54GVS27I.mjs.map} +1 -1
- package/dist/EngageWidget-7EUP76WE.mjs +12 -0
- package/dist/{EngageWidget-BKEY5TPO.mjs.map → EngageWidget-7EUP76WE.mjs.map} +1 -1
- package/dist/EngageWidget-DDP5UFA4.js +21 -0
- package/dist/{EngageWidget-VT4DYXVO.js.map → EngageWidget-DDP5UFA4.js.map} +1 -1
- package/dist/{FileField-JJN5QKDL.mjs → FileField-IQLN6E3C.mjs} +5 -5
- package/dist/{FileField-JJN5QKDL.mjs.map → FileField-IQLN6E3C.mjs.map} +1 -1
- package/dist/{FileField-62ZWZMQK.js → FileField-SBPL4JHP.js} +6 -6
- package/dist/{FileField-62ZWZMQK.js.map → FileField-SBPL4JHP.js.map} +1 -1
- package/dist/{FormSpotlight-OTFB6QM5.mjs → FormSpotlight-E2LKKHGV.mjs} +11 -7
- package/dist/FormSpotlight-E2LKKHGV.mjs.map +1 -0
- package/dist/{FormSpotlight-URS4XRS7.js → FormSpotlight-YTACNE57.js} +25 -21
- package/dist/FormSpotlight-YTACNE57.js.map +1 -0
- package/dist/{FormStage-FVKMIV73.js → FormStage-S277U2CP.js} +20 -15
- package/dist/FormStage-S277U2CP.js.map +1 -0
- package/dist/{FormStage-VPGOCMAV.mjs → FormStage-YSBN5XKL.mjs} +9 -4
- package/dist/FormStage-YSBN5XKL.mjs.map +1 -0
- package/dist/ManagedForm-I3QVRQ53.mjs +16 -0
- package/dist/{ManagedForm-CXVDJMHN.mjs.map → ManagedForm-I3QVRQ53.mjs.map} +1 -1
- package/dist/ManagedForm-TSYKQFLJ.js +25 -0
- package/dist/{ManagedForm-FGNTDGED.js.map → ManagedForm-TSYKQFLJ.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-SQYB4BZU.mjs → ManagedNewsletterForm-T3YRAWKZ.mjs} +9 -7
- package/dist/ManagedNewsletterForm-T3YRAWKZ.mjs.map +1 -0
- package/dist/{ManagedNewsletterForm-3O5L44AZ.js → ManagedNewsletterForm-YSOPPKS6.js} +10 -8
- package/dist/ManagedNewsletterForm-YSOPPKS6.js.map +1 -0
- package/dist/{SignalCore-M2PKKIGH.mjs → SignalCore-PPSIQ4BW.mjs} +8 -14
- package/dist/SignalCore-PPSIQ4BW.mjs.map +1 -0
- package/dist/{SignalCore-RFBOBNLQ.js → SignalCore-SUZH3XWZ.js} +14 -20
- package/dist/SignalCore-SUZH3XWZ.js.map +1 -0
- package/dist/SitemapSync-HSHCOKCL.mjs +9 -0
- package/dist/{SitemapSync-4OVMIIGC.mjs.map → SitemapSync-HSHCOKCL.mjs.map} +1 -1
- package/dist/SitemapSync-LH6UVP4P.js +18 -0
- package/dist/{SitemapSync-RK3SQ4M2.js.map → SitemapSync-LH6UVP4P.js.map} +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
- package/dist/analytics/index.js +10 -9
- package/dist/analytics/index.mjs +5 -4
- package/dist/blog/BlogLayout.d.ts +3 -1
- package/dist/blog/BlogLayout.d.ts.map +1 -1
- package/dist/blog/BlogList.d.ts +7 -1
- package/dist/blog/BlogList.d.ts.map +1 -1
- package/dist/blog/BlogPost.d.ts +20 -1
- package/dist/blog/BlogPost.d.ts.map +1 -1
- package/dist/blog/BlogSidebar.d.ts +3 -1
- package/dist/blog/BlogSidebar.d.ts.map +1 -1
- package/dist/blog/BlogViewTracker.d.ts +8 -2
- package/dist/blog/BlogViewTracker.d.ts.map +1 -1
- package/dist/blog/ClusterLandingPage.d.ts +3 -1
- package/dist/blog/ClusterLandingPage.d.ts.map +1 -1
- package/dist/blog/ClusterNavigation.d.ts +5 -2
- package/dist/blog/ClusterNavigation.d.ts.map +1 -1
- package/dist/blog/RelatedPosts.d.ts +3 -1
- package/dist/blog/RelatedPosts.d.ts.map +1 -1
- package/dist/blog/index.d.ts +1 -1
- package/dist/blog/index.d.ts.map +1 -1
- package/dist/blog/index.js +40 -31
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +11 -6
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/not-found.test.d.ts +2 -0
- package/dist/blog/not-found.test.d.ts.map +1 -0
- package/dist/blog/processBlogHtml.d.ts +19 -2
- package/dist/blog/processBlogHtml.d.ts.map +1 -1
- package/dist/blog/public-reads.d.ts +27 -0
- package/dist/blog/public-reads.d.ts.map +1 -0
- package/dist/blog/server-core.d.ts +76 -10
- package/dist/blog/server-core.d.ts.map +1 -1
- package/dist/blog/server-ui.js +29 -23
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +12 -6
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.ts +76 -10
- package/dist/blog/server.d.ts.map +1 -1
- package/dist/blog/server.js +54 -47
- package/dist/blog/server.mjs +5 -2
- package/dist/blog/site-scope.test.d.ts +2 -0
- package/dist/blog/site-scope.test.d.ts.map +1 -0
- package/dist/brand/extract-brand-profile.d.ts +36 -2
- package/dist/brand/extract-brand-profile.d.ts.map +1 -1
- package/dist/brand/extract-brand-profile.test.d.ts +2 -0
- package/dist/brand/extract-brand-profile.test.d.ts.map +1 -0
- package/dist/{chunk-3YQILJKJ.js → chunk-2FQG2AHJ.js} +60 -35
- package/dist/chunk-2FQG2AHJ.js.map +1 -0
- package/dist/{chunk-D553G64G.js → chunk-2OQWLXDO.js} +13 -13
- package/dist/{chunk-D553G64G.js.map → chunk-2OQWLXDO.js.map} +1 -1
- package/dist/{chunk-OYOO2OO5.js → chunk-2SCDUVFJ.js} +10 -10
- package/dist/{chunk-OYOO2OO5.js.map → chunk-2SCDUVFJ.js.map} +1 -1
- package/dist/{chunk-3S5JN6KL.js → chunk-35ERUUH3.js} +6 -6
- package/dist/{chunk-3S5JN6KL.js.map → chunk-35ERUUH3.js.map} +1 -1
- package/dist/{chunk-57AFHENV.mjs → chunk-3AUFD7KR.mjs} +3 -3
- package/dist/{chunk-57AFHENV.mjs.map → chunk-3AUFD7KR.mjs.map} +1 -1
- package/dist/{chunk-L7ACQ6PC.js → chunk-3BVCF4ZF.js} +4 -4
- package/dist/{chunk-L7ACQ6PC.js.map → chunk-3BVCF4ZF.js.map} +1 -1
- package/dist/{chunk-BFJOZ3MU.mjs → chunk-3EY5E35M.mjs} +36 -71
- package/dist/chunk-3EY5E35M.mjs.map +1 -0
- package/dist/{chunk-BQGEVMIR.mjs → chunk-3SLFT453.mjs} +5 -5
- package/dist/{chunk-BQGEVMIR.mjs.map → chunk-3SLFT453.mjs.map} +1 -1
- package/dist/{chunk-ILNCUSXW.mjs → chunk-4L7OHRWB.mjs} +12 -9
- package/dist/chunk-4L7OHRWB.mjs.map +1 -0
- package/dist/chunk-4LYW6PMU.mjs +72 -0
- package/dist/chunk-4LYW6PMU.mjs.map +1 -0
- package/dist/{chunk-TSZIACRC.js → chunk-4OS6M3V4.js} +6 -12
- package/dist/chunk-4OS6M3V4.js.map +1 -0
- package/dist/{chunk-YKUEFRZI.js → chunk-4RY7JETY.js} +14 -14
- package/dist/{chunk-YKUEFRZI.js.map → chunk-4RY7JETY.js.map} +1 -1
- package/dist/chunk-4TLFZ6NR.mjs +16 -0
- package/dist/chunk-4TLFZ6NR.mjs.map +1 -0
- package/dist/{chunk-4B4S56WJ.mjs → chunk-5B4J3IBX.mjs} +75 -21
- package/dist/chunk-5B4J3IBX.mjs.map +1 -0
- package/dist/chunk-5O7JSWT6.js +8 -0
- package/dist/{chunk-5TXXTYXL.js.map → chunk-5O7JSWT6.js.map} +1 -1
- package/dist/chunk-5SANRSX3.mjs +17 -0
- package/dist/chunk-5SANRSX3.mjs.map +1 -0
- package/dist/{chunk-FBDHKYNF.mjs → chunk-5WGMXSCB.mjs} +3 -3
- package/dist/{chunk-FBDHKYNF.mjs.map → chunk-5WGMXSCB.mjs.map} +1 -1
- package/dist/chunk-5XFFUP6D.js +100 -0
- package/dist/chunk-5XFFUP6D.js.map +1 -0
- package/dist/{chunk-7ZX6TO6C.mjs → chunk-6HFFTGFP.mjs} +50 -26
- package/dist/chunk-6HFFTGFP.mjs.map +1 -0
- package/dist/{chunk-R2SXXFXZ.mjs → chunk-6SBTHS6C.mjs} +3 -3
- package/dist/{chunk-R2SXXFXZ.mjs.map → chunk-6SBTHS6C.mjs.map} +1 -1
- package/dist/{chunk-FO4KGPGF.js → chunk-7TC3GRXQ.js} +73 -38
- package/dist/chunk-7TC3GRXQ.js.map +1 -0
- package/dist/{chunk-XLPU3TEE.mjs → chunk-7THZOAUR.mjs} +4 -4
- package/dist/{chunk-XLPU3TEE.mjs.map → chunk-7THZOAUR.mjs.map} +1 -1
- package/dist/{chunk-MW2M6O7A.mjs → chunk-AOWJP25J.mjs} +4 -4
- package/dist/{chunk-MW2M6O7A.mjs.map → chunk-AOWJP25J.mjs.map} +1 -1
- package/dist/{chunk-UQ5YULFU.mjs → chunk-B2VFMPVJ.mjs} +4 -4
- package/dist/{chunk-UQ5YULFU.mjs.map → chunk-B2VFMPVJ.mjs.map} +1 -1
- package/dist/{chunk-JTF4DFUF.mjs → chunk-B35OJ7FR.mjs} +4 -4
- package/dist/{chunk-JTF4DFUF.mjs.map → chunk-B35OJ7FR.mjs.map} +1 -1
- package/dist/{chunk-2N27LCZH.js → chunk-BER36QXU.js} +9 -9
- package/dist/{chunk-2N27LCZH.js.map → chunk-BER36QXU.js.map} +1 -1
- package/dist/{chunk-47XQWV4S.mjs → chunk-BFZNLTWK.mjs} +3 -3
- package/dist/{chunk-47XQWV4S.mjs.map → chunk-BFZNLTWK.mjs.map} +1 -1
- package/dist/chunk-BQP6JIE2.mjs +28 -0
- package/dist/chunk-BQP6JIE2.mjs.map +1 -0
- package/dist/{chunk-KXGD4E7G.js → chunk-C3WU45JT.js} +7 -7
- package/dist/{chunk-KXGD4E7G.js.map → chunk-C3WU45JT.js.map} +1 -1
- package/dist/chunk-CUNZAD46.js +53 -0
- package/dist/chunk-CUNZAD46.js.map +1 -0
- package/dist/chunk-CXAXZFFW.js +157 -0
- package/dist/chunk-CXAXZFFW.js.map +1 -0
- package/dist/{chunk-H4OBGC43.mjs → chunk-DA7IANFG.mjs} +14 -3
- package/dist/chunk-DA7IANFG.mjs.map +1 -0
- package/dist/{chunk-NOU3JQJK.js → chunk-EIW6YEPY.js} +8 -8
- package/dist/{chunk-NOU3JQJK.js.map → chunk-EIW6YEPY.js.map} +1 -1
- package/dist/{chunk-RCSTDJUH.js → chunk-F6SKG34N.js} +8 -13
- package/dist/chunk-F6SKG34N.js.map +1 -0
- package/dist/{chunk-LC7AM4J5.js → chunk-FHPW7XVH.js} +77 -20
- package/dist/chunk-FHPW7XVH.js.map +1 -0
- package/dist/{chunk-JNRHTZL4.js → chunk-FVW6FT6L.js} +73 -29
- package/dist/chunk-FVW6FT6L.js.map +1 -0
- package/dist/{chunk-BFM5PEFV.js → chunk-GNDWTXLU.js} +56 -177
- package/dist/chunk-GNDWTXLU.js.map +1 -0
- package/dist/{chunk-OZ3FU4BT.js → chunk-H5NBFNND.js} +2 -2
- package/dist/chunk-H5NBFNND.js.map +1 -0
- package/dist/{chunk-RNAGCAIB.js → chunk-HAKD27AZ.js} +7 -7
- package/dist/{chunk-RNAGCAIB.js.map → chunk-HAKD27AZ.js.map} +1 -1
- package/dist/chunk-HCN3IKMW.mjs +106 -0
- package/dist/chunk-HCN3IKMW.mjs.map +1 -0
- package/dist/{chunk-V5THCFPG.mjs → chunk-HCX343AS.mjs} +4 -4
- package/dist/{chunk-V5THCFPG.mjs.map → chunk-HCX343AS.mjs.map} +1 -1
- package/dist/{chunk-TDJKGN5Q.mjs → chunk-HEOQT5SM.mjs} +216 -103
- package/dist/chunk-HEOQT5SM.mjs.map +1 -0
- package/dist/{chunk-6FC5Q4KU.mjs → chunk-HOJ4J4X2.mjs} +30 -12
- package/dist/chunk-HOJ4J4X2.mjs.map +1 -0
- package/dist/{chunk-ELQ4SRRR.js → chunk-HQOHB6QF.js} +15 -15
- package/dist/{chunk-ELQ4SRRR.js.map → chunk-HQOHB6QF.js.map} +1 -1
- package/dist/chunk-HRMGITUZ.mjs +6 -0
- package/dist/{chunk-QRBPT6Z6.mjs.map → chunk-HRMGITUZ.mjs.map} +1 -1
- package/dist/{chunk-JQ7M6CVL.mjs → chunk-HYVEIP2N.mjs} +3 -3
- package/dist/{chunk-JQ7M6CVL.mjs.map → chunk-HYVEIP2N.mjs.map} +1 -1
- package/dist/{chunk-H6YVT3BL.js → chunk-I3ND4XYW.js} +12 -9
- package/dist/chunk-I3ND4XYW.js.map +1 -0
- package/dist/{chunk-4UVM7E2W.js → chunk-JDTU2RWC.js} +3 -3
- package/dist/{chunk-4UVM7E2W.js.map → chunk-JDTU2RWC.js.map} +1 -1
- package/dist/{chunk-GZJE23Y5.mjs → chunk-JLVCWC6A.mjs} +2 -2
- package/dist/chunk-JLVCWC6A.mjs.map +1 -0
- package/dist/chunk-K4TCEAUX.js +52 -0
- package/dist/chunk-K4TCEAUX.js.map +1 -0
- package/dist/chunk-KV7XXLJV.mjs +30 -0
- package/dist/chunk-KV7XXLJV.mjs.map +1 -0
- package/dist/{chunk-C563AHZZ.mjs → chunk-L24RDT6Q.mjs} +3 -3
- package/dist/{chunk-C563AHZZ.mjs.map → chunk-L24RDT6Q.mjs.map} +1 -1
- package/dist/{chunk-FEWWGEQF.js → chunk-LBZGYF3B.js} +4 -4
- package/dist/{chunk-FEWWGEQF.js.map → chunk-LBZGYF3B.js.map} +1 -1
- package/dist/{chunk-CPY74A4F.js → chunk-LMEUYRRR.js} +72 -106
- package/dist/chunk-LMEUYRRR.js.map +1 -0
- package/dist/chunk-LVGSOW2F.js +32 -0
- package/dist/chunk-LVGSOW2F.js.map +1 -0
- package/dist/{chunk-DOB37PV4.js → chunk-M45AL7EA.js} +37 -19
- package/dist/chunk-M45AL7EA.js.map +1 -0
- package/dist/{chunk-YYDZ2TYR.js → chunk-MHX6TOAS.js} +3 -3
- package/dist/{chunk-YYDZ2TYR.js.map → chunk-MHX6TOAS.js.map} +1 -1
- package/dist/chunk-MLVHVKFT.mjs +148 -0
- package/dist/chunk-MLVHVKFT.mjs.map +1 -0
- package/dist/{chunk-M5GY2AI3.mjs → chunk-N2NZBPQ5.mjs} +4 -10
- package/dist/chunk-N2NZBPQ5.mjs.map +1 -0
- package/dist/chunk-NRBITVDK.js +114 -0
- package/dist/chunk-NRBITVDK.js.map +1 -0
- package/dist/{chunk-O2VJZOR2.mjs → chunk-O4YBWJHP.mjs} +6 -11
- package/dist/chunk-O4YBWJHP.mjs.map +1 -0
- package/dist/{chunk-BUJWXSYZ.mjs → chunk-O5ZSGBQD.mjs} +4 -4
- package/dist/{chunk-BUJWXSYZ.mjs.map → chunk-O5ZSGBQD.mjs.map} +1 -1
- package/dist/{chunk-TP7H6BSK.mjs → chunk-OE7CTIOU.mjs} +73 -30
- package/dist/chunk-OE7CTIOU.mjs.map +1 -0
- package/dist/{chunk-UJ6CHZAI.mjs → chunk-OEW2LFOV.js} +169 -25
- package/dist/chunk-OEW2LFOV.js.map +1 -0
- package/dist/chunk-P4Y75QSU.js +19 -0
- package/dist/chunk-P4Y75QSU.js.map +1 -0
- package/dist/{chunk-Q7347KP6.mjs → chunk-PK2OTGW5.mjs} +6 -12
- package/dist/chunk-PK2OTGW5.mjs.map +1 -0
- package/dist/{chunk-H65OX263.js → chunk-PRTXAIIC.js} +15 -15
- package/dist/{chunk-H65OX263.js.map → chunk-PRTXAIIC.js.map} +1 -1
- package/dist/{chunk-ABZGEHTC.mjs → chunk-PUAXHYBL.mjs} +3 -3
- package/dist/{chunk-ABZGEHTC.mjs.map → chunk-PUAXHYBL.mjs.map} +1 -1
- package/dist/chunk-QRHVMTHF.mjs +94 -0
- package/dist/chunk-QRHVMTHF.mjs.map +1 -0
- package/dist/{chunk-JTCQJKJE.js → chunk-QTJTDQYR.js} +76 -111
- package/dist/chunk-QTJTDQYR.js.map +1 -0
- package/dist/{chunk-HBN4A2N4.mjs → chunk-QVHVL7EX.mjs} +3 -3
- package/dist/{chunk-HBN4A2N4.mjs.map → chunk-QVHVL7EX.mjs.map} +1 -1
- package/dist/chunk-R7GHP3FY.js +81 -0
- package/dist/chunk-R7GHP3FY.js.map +1 -0
- package/dist/{chunk-P4TB4ROG.js → chunk-SEP5D4MI.js} +8 -2
- package/dist/chunk-SEP5D4MI.js.map +1 -0
- package/dist/{chunk-3CLP35TT.mjs → chunk-TXMVU4EY.mjs} +62 -97
- package/dist/chunk-TXMVU4EY.mjs.map +1 -0
- package/dist/{chunk-L4V6TKMJ.mjs → chunk-U2V542EO.mjs} +7 -3
- package/dist/chunk-U2V542EO.mjs.map +1 -0
- package/dist/{chunk-4WBTM6YE.js → chunk-UWHCHYCX.js} +4 -4
- package/dist/{chunk-4WBTM6YE.js.map → chunk-UWHCHYCX.js.map} +1 -1
- package/dist/{chunk-JNAXDFC4.mjs → chunk-VJ74275U.mjs} +38 -156
- package/dist/chunk-VJ74275U.mjs.map +1 -0
- package/dist/{chunk-H7274TKR.mjs → chunk-VJV7WUR2.mjs} +12 -4
- package/dist/chunk-VJV7WUR2.mjs.map +1 -0
- package/dist/{chunk-4A5V73SR.mjs → chunk-VYL6IHJA.mjs} +9 -9
- package/dist/{chunk-4A5V73SR.mjs.map → chunk-VYL6IHJA.mjs.map} +1 -1
- package/dist/{chunk-5B4FABFK.js → chunk-WS7MH3GD.js} +14 -2
- package/dist/chunk-WS7MH3GD.js.map +1 -0
- package/dist/{chunk-IPV2TUAT.js → chunk-XA2GJFVM.js} +12 -4
- package/dist/chunk-XA2GJFVM.js.map +1 -0
- package/dist/chunk-XBX2K3GA.js +33 -0
- package/dist/chunk-XBX2K3GA.js.map +1 -0
- package/dist/{chunk-F3AKYZOH.js → chunk-XCYKM2SA.js} +6 -13
- package/dist/chunk-XCYKM2SA.js.map +1 -0
- package/dist/{chunk-6CJP7BFM.js → chunk-XZO5I4RS.mjs} +147 -20
- package/dist/chunk-XZO5I4RS.mjs.map +1 -0
- package/dist/chunk-Y5QZPUL3.mjs +47 -0
- package/dist/chunk-Y5QZPUL3.mjs.map +1 -0
- package/dist/{chunk-C4PZ2R3B.js → chunk-YECDJDDD.js} +10 -10
- package/dist/{chunk-C4PZ2R3B.js.map → chunk-YECDJDDD.js.map} +1 -1
- package/dist/chunk-YN7QHLWF.js +19 -0
- package/dist/chunk-YN7QHLWF.js.map +1 -0
- package/dist/chunk-YU7QZ3PP.mjs +45 -0
- package/dist/chunk-YU7QZ3PP.mjs.map +1 -0
- package/dist/{chunk-VFGEY6FJ.js → chunk-ZEOC26LZ.js} +223 -110
- package/dist/chunk-ZEOC26LZ.js.map +1 -0
- package/dist/{chunk-RVRN5U7W.mjs → chunk-ZVI7MBVF.mjs} +73 -38
- package/dist/chunk-ZVI7MBVF.mjs.map +1 -0
- package/dist/cli/agent/checks.d.ts +15 -1
- package/dist/cli/agent/checks.d.ts.map +1 -1
- package/dist/cli/agent/sitemap-trailing-slash.test.d.ts +2 -0
- package/dist/cli/agent/sitemap-trailing-slash.test.d.ts.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/og.d.ts +26 -8
- package/dist/cli/commands/og.d.ts.map +1 -1
- package/dist/cli/index.js +683 -322
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +604 -243
- package/dist/cli/index.mjs.map +1 -1
- package/dist/client/index.js +6 -6
- package/dist/client/index.mjs +5 -5
- package/dist/commerce/CheckoutForm.d.ts.map +1 -1
- package/dist/commerce/ProductDetail.d.ts.map +1 -1
- package/dist/commerce/api.d.ts +14 -0
- package/dist/commerce/api.d.ts.map +1 -1
- package/dist/commerce/discount-checkout.test.d.ts +2 -0
- package/dist/commerce/discount-checkout.test.d.ts.map +1 -0
- package/dist/commerce/index.d.ts +1 -1
- package/dist/commerce/index.d.ts.map +1 -1
- package/dist/commerce/index.js +61 -56
- package/dist/commerce/index.mjs +6 -5
- package/dist/config/index.js +3 -3
- package/dist/config/index.mjs +1 -1
- package/dist/discover-CYXYKHZ2.mjs +4 -0
- package/dist/{discover-FGTKWOL3.mjs.map → discover-CYXYKHZ2.mjs.map} +1 -1
- package/dist/discover-NGEPXZOD.js +21 -0
- package/dist/{discover-NJZPWTDL.js.map → discover-NGEPXZOD.js.map} +1 -1
- package/dist/engage/index.js +12 -10
- package/dist/engage/index.js.map +1 -1
- package/dist/engage/index.mjs +9 -7
- package/dist/engage/index.mjs.map +1 -1
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/FormClient.d.ts.map +1 -1
- package/dist/forms/FormField.d.ts +7 -1
- package/dist/forms/FormField.d.ts.map +1 -1
- package/dist/forms/FormSpotlight.d.ts +1 -1
- package/dist/forms/FormSpotlight.d.ts.map +1 -1
- package/dist/forms/FormStage.d.ts +1 -1
- package/dist/forms/FormStage.d.ts.map +1 -1
- package/dist/forms/experience-plan.d.ts +0 -1
- package/dist/forms/experience-plan.d.ts.map +1 -1
- package/dist/forms/field-interactions.d.ts +63 -0
- package/dist/forms/field-interactions.d.ts.map +1 -0
- package/dist/forms/field-interactions.test.d.ts +8 -0
- package/dist/forms/field-interactions.test.d.ts.map +1 -0
- package/dist/forms/field-rules.d.ts +41 -0
- package/dist/forms/field-rules.d.ts.map +1 -0
- package/dist/forms/field-rules.test.d.ts +8 -0
- package/dist/forms/field-rules.test.d.ts.map +1 -0
- package/dist/forms/form-field-focus.test.d.ts +8 -0
- package/dist/forms/form-field-focus.test.d.ts.map +1 -0
- package/dist/forms/index.js +25 -23
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +13 -11
- package/dist/forms/index.mjs.map +1 -1
- 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/tracking-session.d.ts +48 -3
- package/dist/forms/tracking-session.d.ts.map +1 -1
- package/dist/forms/types.d.ts +11 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/useForm.d.ts +8 -0
- package/dist/forms/useForm.d.ts.map +1 -1
- package/dist/forms/useFormTracking.d.ts +29 -4
- package/dist/forms/useFormTracking.d.ts.map +1 -1
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +72 -68
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +14 -10
- package/dist/index.mjs.map +1 -1
- package/dist/layout/client.js +10 -10
- package/dist/layout/client.mjs +9 -9
- package/dist/layout/index.js +13 -12
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +11 -10
- package/dist/layout/index.mjs.map +1 -1
- package/dist/llms/aiRobots.d.ts +20 -4
- package/dist/llms/aiRobots.d.ts.map +1 -1
- package/dist/llms/api.d.ts +8 -3
- package/dist/llms/api.d.ts.map +1 -1
- package/dist/llms/discovery-headers.d.ts +24 -0
- package/dist/llms/discovery-headers.d.ts.map +1 -1
- package/dist/llms/generateLLMsTxt.d.ts.map +1 -1
- package/dist/llms/index.d.ts +2 -2
- package/dist/llms/index.d.ts.map +1 -1
- package/dist/llms/index.js +45 -96
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +11 -81
- package/dist/llms/index.mjs.map +1 -1
- package/dist/llms/links.d.ts +26 -0
- package/dist/llms/links.d.ts.map +1 -0
- package/dist/llms/links.test.d.ts +2 -0
- package/dist/llms/links.test.d.ts.map +1 -0
- package/dist/llms/types.d.ts +15 -0
- package/dist/llms/types.d.ts.map +1 -1
- package/dist/llms/wiring.d.ts +22 -0
- package/dist/llms/wiring.d.ts.map +1 -1
- package/dist/llms/writeLLMsTxt.d.ts +9 -0
- package/dist/llms/writeLLMsTxt.d.ts.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/motion/gsap.d.ts +54 -0
- package/dist/motion/gsap.d.ts.map +1 -1
- package/dist/motion/gsap.js +34 -4
- package/dist/motion/gsap.js.map +1 -1
- package/dist/motion/gsap.mjs +33 -5
- package/dist/motion/gsap.mjs.map +1 -1
- package/dist/motion/gsap.test.d.ts +2 -0
- package/dist/motion/gsap.test.d.ts.map +1 -0
- package/dist/og/config.d.ts +6 -0
- package/dist/og/config.d.ts.map +1 -1
- package/dist/og/contrast.d.ts +33 -0
- package/dist/og/contrast.d.ts.map +1 -0
- package/dist/og/index.d.ts +2 -0
- package/dist/og/index.d.ts.map +1 -1
- package/dist/og/index.js +26 -8
- package/dist/og/index.mjs +3 -1
- package/dist/og/pages.d.ts +101 -0
- package/dist/og/pages.d.ts.map +1 -1
- package/dist/og/route-copy.d.ts +34 -0
- package/dist/og/route-copy.d.ts.map +1 -0
- package/dist/og/route-fit.d.ts +77 -0
- package/dist/og/route-fit.d.ts.map +1 -0
- package/dist/og/route.d.ts +80 -20
- package/dist/og/route.d.ts.map +1 -1
- package/dist/og/route.js +195 -25
- package/dist/og/route.js.map +1 -1
- package/dist/og/route.mjs +193 -26
- package/dist/og/route.mjs.map +1 -1
- package/dist/og/route.test.d.ts +2 -0
- package/dist/og/route.test.d.ts.map +1 -0
- package/dist/og/template.d.ts.map +1 -1
- package/dist/og/wiring.d.ts +43 -3
- package/dist/og/wiring.d.ts.map +1 -1
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +15 -10
- package/dist/proxy/index.js.map +1 -1
- package/dist/proxy/index.mjs +12 -7
- package/dist/proxy/index.mjs.map +1 -1
- package/dist/proxy/llms-discovery.test.d.ts +2 -0
- package/dist/proxy/llms-discovery.test.d.ts.map +1 -0
- package/dist/redirects/index.d.ts +24 -0
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +11 -8
- package/dist/redirects/index.mjs +4 -1
- package/dist/redirects/index.test.d.ts +2 -0
- package/dist/redirects/index.test.d.ts.map +1 -0
- package/dist/redirects/not-found.js +8 -5
- package/dist/redirects/not-found.js.map +1 -1
- package/dist/redirects/not-found.mjs +4 -1
- package/dist/redirects/not-found.mjs.map +1 -1
- package/dist/robots/index.d.ts +2 -0
- package/dist/robots/index.d.ts.map +1 -1
- package/dist/robots/index.js +23 -3
- package/dist/robots/index.js.map +1 -1
- package/dist/robots/index.mjs +2 -2
- package/dist/robots/index.mjs.map +1 -1
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/ManagedContent.d.ts +4 -2
- package/dist/seo/ManagedContent.d.ts.map +1 -1
- package/dist/seo/ManagedFAQ.d.ts.map +1 -1
- package/dist/seo/ManagedInternalLinks.d.ts.map +1 -1
- package/dist/seo/ManagedSchema.d.ts.map +1 -1
- package/dist/seo/client.js +6 -6
- package/dist/seo/client.mjs +5 -5
- package/dist/seo/getManagedMetadata.d.ts.map +1 -1
- package/dist/seo/getManagedMetadata.test.d.ts +2 -0
- package/dist/seo/getManagedMetadata.test.d.ts.map +1 -0
- package/dist/seo/index.js +59 -49
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +29 -19
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo/managed-schema-filter.test.d.ts +2 -0
- package/dist/seo/managed-schema-filter.test.d.ts.map +1 -0
- package/dist/seo/register-sitemap-cli-impl.d.ts +32 -0
- package/dist/seo/register-sitemap-cli-impl.d.ts.map +1 -1
- package/dist/seo/register-sitemap-cli.d.ts +7 -0
- package/dist/seo/register-sitemap-cli.d.ts.map +1 -1
- package/dist/seo/register-sitemap-cli.js +273 -56
- package/dist/seo/register-sitemap-cli.js.map +1 -1
- package/dist/seo/register-sitemap-cli.mjs +269 -52
- package/dist/seo/register-sitemap-cli.mjs.map +1 -1
- package/dist/seo/register-sitemap-request.d.ts +36 -0
- package/dist/seo/register-sitemap-request.d.ts.map +1 -0
- package/dist/seo/register-sitemap-request.test.d.ts +2 -0
- package/dist/seo/register-sitemap-request.test.d.ts.map +1 -0
- package/dist/seo/routing.d.ts +2 -0
- package/dist/seo/routing.d.ts.map +1 -1
- package/dist/seo/schema-filter.d.ts +43 -0
- package/dist/seo/schema-filter.d.ts.map +1 -0
- package/dist/seo/schema-filter.test.d.ts +2 -0
- package/dist/seo/schema-filter.test.d.ts.map +1 -0
- package/dist/seo/server-api.d.ts +15 -2
- package/dist/seo/server-api.d.ts.map +1 -1
- package/dist/seo/server.js +23 -18
- package/dist/seo/server.mjs +7 -2
- package/dist/seo/site-scope.test.d.ts +2 -0
- package/dist/seo/site-scope.test.d.ts.map +1 -0
- package/dist/seo/types.d.ts +30 -0
- package/dist/seo/types.d.ts.map +1 -1
- package/dist/seo-meta/contract.d.ts +60 -0
- package/dist/seo-meta/contract.d.ts.map +1 -0
- package/dist/seo-meta/contract.js +41 -0
- package/dist/seo-meta/contract.js.map +1 -0
- package/dist/seo-meta/contract.mjs +4 -0
- package/dist/seo-meta/contract.mjs.map +1 -0
- package/dist/seo-meta/contract.test.d.ts +2 -0
- package/dist/seo-meta/contract.test.d.ts.map +1 -0
- package/dist/server/index.js +4 -3
- package/dist/server/index.mjs +3 -2
- package/dist/server/mint-site-token.d.ts +2 -32
- package/dist/server/mint-site-token.d.ts.map +1 -1
- package/dist/{server-api-RG3ZL3DV.mjs → server-api-A2EFCTZX.mjs} +7 -3
- package/dist/{server-api-RG3ZL3DV.mjs.map → server-api-A2EFCTZX.mjs.map} +1 -1
- package/dist/{server-api-RYJQAUGO.js → server-api-IWTZ7C3O.js} +25 -21
- package/dist/{server-api-RYJQAUGO.js.map → server-api-IWTZ7C3O.js.map} +1 -1
- package/dist/shared/build-entries.d.ts +2 -0
- package/dist/shared/build-entries.d.ts.map +1 -1
- package/dist/shared/fresh-fetch.d.ts +64 -0
- package/dist/shared/fresh-fetch.d.ts.map +1 -0
- package/dist/shared/fresh-fetch.test.d.ts +2 -0
- package/dist/shared/fresh-fetch.test.d.ts.map +1 -0
- package/dist/shared/next-files.d.ts +7 -0
- package/dist/shared/next-files.d.ts.map +1 -1
- package/dist/shared/page-leave.d.ts +27 -0
- package/dist/shared/page-leave.d.ts.map +1 -0
- package/dist/shared/page-leave.test.d.ts +2 -0
- package/dist/shared/page-leave.test.d.ts.map +1 -0
- package/dist/shared/source-graph.d.ts +63 -0
- package/dist/shared/source-graph.d.ts.map +1 -0
- package/dist/shared/source-graph.test.d.ts +2 -0
- package/dist/shared/source-graph.test.d.ts.map +1 -0
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/SignalCore.d.ts.map +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sitemap/index.d.ts +19 -4
- package/dist/sitemap/index.d.ts.map +1 -1
- package/dist/sitemap/index.js +53 -43
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +37 -27
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/sitemap/shared.d.ts +65 -0
- package/dist/sitemap/shared.d.ts.map +1 -1
- package/dist/sitemap/trailing-slash.test.d.ts +2 -0
- package/dist/sitemap/trailing-slash.test.d.ts.map +1 -0
- package/dist/sites/resolve.d.ts.map +1 -1
- package/dist/sites/site-param.d.ts +16 -0
- package/dist/sites/site-param.d.ts.map +1 -0
- package/dist/sync/index.js +17 -17
- package/dist/sync/index.mjs +4 -4
- package/dist/writeLLMsTxt-CQ7A4AAL.js +20 -0
- package/dist/writeLLMsTxt-CQ7A4AAL.js.map +1 -0
- package/dist/writeLLMsTxt-NX5MSPYX.mjs +11 -0
- package/dist/writeLLMsTxt-NX5MSPYX.mjs.map +1 -0
- package/package.json +8 -3
- package/dist/AnalyticsProvider-EWF7JN2X.mjs +0 -11
- package/dist/AnalyticsProvider-GJFG7YXA.js +0 -32
- package/dist/BlogViewTracker-2D3IJPJK.js.map +0 -1
- package/dist/BlogViewTracker-CKYG6MYU.mjs.map +0 -1
- package/dist/ChatWidget-AWP6GBVW.js +0 -22
- package/dist/ChatWidget-Z5QXDZP3.mjs +0 -13
- package/dist/EngageWidget-BKEY5TPO.mjs +0 -12
- package/dist/EngageWidget-VT4DYXVO.js +0 -21
- package/dist/FormSpotlight-OTFB6QM5.mjs.map +0 -1
- package/dist/FormSpotlight-URS4XRS7.js.map +0 -1
- package/dist/FormStage-FVKMIV73.js.map +0 -1
- package/dist/FormStage-VPGOCMAV.mjs.map +0 -1
- package/dist/ManagedForm-CXVDJMHN.mjs +0 -14
- package/dist/ManagedForm-FGNTDGED.js +0 -23
- package/dist/ManagedNewsletterForm-3O5L44AZ.js.map +0 -1
- package/dist/ManagedNewsletterForm-SQYB4BZU.mjs.map +0 -1
- package/dist/SignalCore-M2PKKIGH.mjs.map +0 -1
- package/dist/SignalCore-RFBOBNLQ.js.map +0 -1
- package/dist/SitemapSync-4OVMIIGC.mjs +0 -9
- package/dist/SitemapSync-RK3SQ4M2.js +0 -18
- package/dist/chunk-3CLP35TT.mjs.map +0 -1
- package/dist/chunk-3UC6JETG.js +0 -32
- package/dist/chunk-3UC6JETG.js.map +0 -1
- package/dist/chunk-3YQILJKJ.js.map +0 -1
- package/dist/chunk-4B4S56WJ.mjs.map +0 -1
- package/dist/chunk-5B4FABFK.js.map +0 -1
- package/dist/chunk-5TXXTYXL.js +0 -8
- package/dist/chunk-6CJP7BFM.js.map +0 -1
- package/dist/chunk-6FC5Q4KU.mjs.map +0 -1
- package/dist/chunk-7ZX6TO6C.mjs.map +0 -1
- package/dist/chunk-AWK57R5S.mjs +0 -29
- package/dist/chunk-AWK57R5S.mjs.map +0 -1
- package/dist/chunk-BFJOZ3MU.mjs.map +0 -1
- package/dist/chunk-BFM5PEFV.js.map +0 -1
- package/dist/chunk-CPY74A4F.js.map +0 -1
- package/dist/chunk-DOB37PV4.js.map +0 -1
- package/dist/chunk-F3AKYZOH.js.map +0 -1
- package/dist/chunk-FO4KGPGF.js.map +0 -1
- package/dist/chunk-GZJE23Y5.mjs.map +0 -1
- package/dist/chunk-H4OBGC43.mjs.map +0 -1
- package/dist/chunk-H6YVT3BL.js.map +0 -1
- package/dist/chunk-H7274TKR.mjs.map +0 -1
- package/dist/chunk-ILNCUSXW.mjs.map +0 -1
- package/dist/chunk-IPV2TUAT.js.map +0 -1
- package/dist/chunk-JEOKDUPQ.js +0 -45
- package/dist/chunk-JEOKDUPQ.js.map +0 -1
- package/dist/chunk-JNAXDFC4.mjs.map +0 -1
- package/dist/chunk-JNRHTZL4.js.map +0 -1
- package/dist/chunk-JTCQJKJE.js.map +0 -1
- package/dist/chunk-L4V6TKMJ.mjs.map +0 -1
- package/dist/chunk-LC7AM4J5.js.map +0 -1
- package/dist/chunk-M5GY2AI3.mjs.map +0 -1
- package/dist/chunk-O2VJZOR2.mjs.map +0 -1
- package/dist/chunk-OZ3FU4BT.js.map +0 -1
- package/dist/chunk-P4TB4ROG.js.map +0 -1
- package/dist/chunk-Q7347KP6.mjs.map +0 -1
- package/dist/chunk-QJU6HBSK.mjs +0 -39
- package/dist/chunk-QJU6HBSK.mjs.map +0 -1
- package/dist/chunk-QRBPT6Z6.mjs +0 -6
- package/dist/chunk-RCSTDJUH.js.map +0 -1
- package/dist/chunk-RVRN5U7W.mjs.map +0 -1
- package/dist/chunk-TDJKGN5Q.mjs.map +0 -1
- package/dist/chunk-TP7H6BSK.mjs.map +0 -1
- package/dist/chunk-TSZIACRC.js.map +0 -1
- package/dist/chunk-UJ6CHZAI.mjs.map +0 -1
- package/dist/chunk-VFGEY6FJ.js.map +0 -1
- package/dist/discover-FGTKWOL3.mjs +0 -4
- package/dist/discover-NJZPWTDL.js +0 -21
package/README.md
CHANGED
|
@@ -98,7 +98,7 @@ Every module has its own README in `src/<module>/README.md` with full API docs,
|
|
|
98
98
|
| **Layout** | `@sonordev/site-kit/layout` | RSC layout that composes all features | [README](src/layout/README.md) |
|
|
99
99
|
| **SEO** | `@sonordev/site-kit/seo` | Managed metadata, schemas, FAQs, internal links | [README](src/seo/README.md) |
|
|
100
100
|
| **Analytics** | `@sonordev/site-kit/analytics` | Page views, events, conversions, Web Vitals | [README](src/analytics/README.md) |
|
|
101
|
-
| **Sitemap** | `@sonordev/site-kit/sitemap` | Auto-generated sitemap with Portal sync | [README](src/sitemap/README.md) |
|
|
101
|
+
| **Sitemap** | `@sonordev/site-kit/sitemap` | Auto-generated sitemap with Portal sync. URLs follow next.config `trailingSlash` | [README](src/sitemap/README.md) |
|
|
102
102
|
| **Middleware** | `@sonordev/site-kit/middleware` | Redirects, security headers, AI discovery | [README](src/middleware/README.md) |
|
|
103
103
|
| **Redirects** | `@sonordev/site-kit/redirects` | Portal-managed 301/302 redirect rules | [README](src/redirects/README.md) |
|
|
104
104
|
|
|
@@ -221,8 +221,8 @@ import { TestimonialSection, fetchReviews } from '@sonordev/site-kit/reputation'
|
|
|
221
221
|
// Redirects
|
|
222
222
|
import { handleManagedRedirects } from '@sonordev/site-kit/redirects'
|
|
223
223
|
|
|
224
|
-
// Robots
|
|
225
|
-
import { createRobots } from '@sonordev/site-kit/robots'
|
|
224
|
+
// Robots (the AI crawler helpers live in /llms; /robots re-exports them)
|
|
225
|
+
import { createRobots, buildAiCrawlerRules, createRobotsTxtHandler } from '@sonordev/site-kit/robots'
|
|
226
226
|
|
|
227
227
|
// Motion (tier 0, zero deps) — tiers 1/2 need `npm i gsap` / `npm i three`
|
|
228
228
|
import { Reveal, Parallax, ScrollScene, registerScene } from '@sonordev/site-kit/motion'
|
package/agent-manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@sonordev/site-kit",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.8.0",
|
|
5
5
|
"description": "Machine-readable manifest for coding agents integrating a site with Sonor. See AGENTS.md (shipped) and docs/SITE-KIT-AGENT-NATIVE.md.",
|
|
6
6
|
"env": {
|
|
7
7
|
"required": [
|
|
@@ -275,6 +275,11 @@
|
|
|
275
275
|
"import": "@sonordev/site-kit/seo-pages/contract",
|
|
276
276
|
"side": "unknown"
|
|
277
277
|
},
|
|
278
|
+
{
|
|
279
|
+
"name": "seo-meta/contract",
|
|
280
|
+
"import": "@sonordev/site-kit/seo-meta/contract",
|
|
281
|
+
"side": "unknown"
|
|
282
|
+
},
|
|
278
283
|
{
|
|
279
284
|
"name": "portfolio/contract",
|
|
280
285
|
"import": "@sonordev/site-kit/portfolio/contract",
|
|
@@ -294,7 +299,7 @@
|
|
|
294
299
|
"name": "robots",
|
|
295
300
|
"import": "@sonordev/site-kit/robots",
|
|
296
301
|
"side": "server",
|
|
297
|
-
"purpose": "robots.txt generator."
|
|
302
|
+
"purpose": "robots.txt generator (createRobots). Also re-exports the AI crawler helpers from ./llms: buildAiCrawlerRules, createRobotsTxtHandler, AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS."
|
|
298
303
|
},
|
|
299
304
|
{
|
|
300
305
|
"name": "site-config",
|
|
@@ -461,6 +466,13 @@
|
|
|
461
466
|
"fix": "Gate the logic in a server component, or keep the middleware edge-compatible.",
|
|
462
467
|
"check": "middleware.netlify"
|
|
463
468
|
},
|
|
469
|
+
{
|
|
470
|
+
"id": "sitemap.trailing-slash",
|
|
471
|
+
"symptom": "Every sitemap URL except / 308-redirects to the same path with a trailing slash; the sitemap disagrees with the canonicals.",
|
|
472
|
+
"cause": "next.config sets trailingSlash: true, but the sitemap emits unslashed URLs: a site-kit createSitemap that predates trailing-slash support, a createSitemap({ trailingSlash: false }) override, or a hand-rolled sitemap.",
|
|
473
|
+
"fix": "Upgrade @sonordev/site-kit. createSitemap follows next.config trailingSlash with no config. Remove any trailingSlash: false passed to it. If the kit is in serverExternalPackages, pass createSitemap({ trailingSlash: true }). Rebuild and re-run doctor.",
|
|
474
|
+
"check": "sitemap.trailing-slash"
|
|
475
|
+
},
|
|
464
476
|
{
|
|
465
477
|
"id": "key.stale",
|
|
466
478
|
"symptom": "Invalid-key console spam; data features paused; 401/403 from the API.",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkF6SKG34N_js = require('./chunk-F6SKG34N.js');
|
|
4
|
+
require('./chunk-3DWIYCQX.js');
|
|
5
|
+
require('./chunk-RC4WWQXR.js');
|
|
6
|
+
require('./chunk-P4Y75QSU.js');
|
|
7
|
+
require('./chunk-VJMPIRSD.js');
|
|
8
|
+
require('./chunk-5RNAUYWE.js');
|
|
9
|
+
require('./chunk-PRTXAIIC.js');
|
|
10
|
+
require('./chunk-UWHCHYCX.js');
|
|
11
|
+
require('./chunk-5O7JSWT6.js');
|
|
12
|
+
require('./chunk-SNAQBZPT.js');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Object.defineProperty(exports, "AnalyticsProvider", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkF6SKG34N_js.AnalyticsProvider; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "useAnalytics", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunkF6SKG34N_js.useAnalytics; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "useAnalyticsOptional", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunkF6SKG34N_js.useAnalyticsOptional; }
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports, "useTrackEvent", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () { return chunkF6SKG34N_js.useTrackEvent; }
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=AnalyticsProvider-OCXRNIVE.js.map
|
|
33
|
+
//# sourceMappingURL=AnalyticsProvider-OCXRNIVE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-OCXRNIVE.js"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { AnalyticsProvider, useAnalytics, useAnalyticsOptional, useTrackEvent } from './chunk-O4YBWJHP.mjs';
|
|
2
|
+
import './chunk-SHLWA6JY.mjs';
|
|
3
|
+
import './chunk-ZZQAGCSI.mjs';
|
|
4
|
+
import './chunk-5SANRSX3.mjs';
|
|
5
|
+
import './chunk-6EDVCUAG.mjs';
|
|
6
|
+
import './chunk-A6UYV475.mjs';
|
|
7
|
+
import './chunk-7THZOAUR.mjs';
|
|
8
|
+
import './chunk-PUAXHYBL.mjs';
|
|
9
|
+
import './chunk-HRMGITUZ.mjs';
|
|
10
|
+
import './chunk-BEXTDHO4.mjs';
|
|
11
|
+
//# sourceMappingURL=AnalyticsProvider-ZAUONQCX.mjs.map
|
|
12
|
+
//# sourceMappingURL=AnalyticsProvider-ZAUONQCX.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"AnalyticsProvider-ZAUONQCX.mjs"}
|
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkHGNSJXWT_js = require('./chunk-HGNSJXWT.js');
|
|
5
|
-
var
|
|
6
|
-
require('./chunk-
|
|
7
|
-
require('./chunk-
|
|
5
|
+
var chunkYN7QHLWF_js = require('./chunk-YN7QHLWF.js');
|
|
6
|
+
require('./chunk-H5NBFNND.js');
|
|
7
|
+
require('./chunk-SWIKKSKL.js');
|
|
8
|
+
var chunkPRTXAIIC_js = require('./chunk-PRTXAIIC.js');
|
|
9
|
+
require('./chunk-UWHCHYCX.js');
|
|
10
|
+
require('./chunk-5O7JSWT6.js');
|
|
8
11
|
require('./chunk-SNAQBZPT.js');
|
|
9
12
|
var react = require('react');
|
|
10
13
|
|
|
11
14
|
var SESSION_KEY_PREFIX = "__sonor_blog_viewed__:";
|
|
12
|
-
function trackBlogView(slug) {
|
|
15
|
+
function trackBlogView(slug, site) {
|
|
13
16
|
if (!slug || typeof window === "undefined") return;
|
|
14
17
|
const w = window;
|
|
15
18
|
const baseUrl = w.__SITE_KIT_API_URL__;
|
|
@@ -19,12 +22,12 @@ function trackBlogView(slug) {
|
|
|
19
22
|
if (sessionStorage.getItem(key)) return;
|
|
20
23
|
} catch {
|
|
21
24
|
}
|
|
22
|
-
void
|
|
25
|
+
void chunkPRTXAIIC_js.sonorFetch(
|
|
23
26
|
`${baseUrl}/public/blog/view`,
|
|
24
27
|
{
|
|
25
28
|
method: "POST",
|
|
26
29
|
headers: { "Content-Type": "application/json" },
|
|
27
|
-
body: JSON.stringify({ slug })
|
|
30
|
+
body: JSON.stringify(chunkYN7QHLWF_js.withSiteBody({ slug }, site || w.__SITE_KIT_SITE__))
|
|
28
31
|
},
|
|
29
32
|
{ retries: 0 }
|
|
30
33
|
).then((res) => {
|
|
@@ -37,15 +40,15 @@ function trackBlogView(slug) {
|
|
|
37
40
|
}).catch(() => {
|
|
38
41
|
});
|
|
39
42
|
}
|
|
40
|
-
function BlogViewTracker({ slug }) {
|
|
43
|
+
function BlogViewTracker({ slug, site }) {
|
|
41
44
|
const ready = chunkHGNSJXWT_js.useDeferredActivation(true);
|
|
42
45
|
react.useEffect(() => {
|
|
43
|
-
if (ready) trackBlogView(slug);
|
|
44
|
-
}, [ready, slug]);
|
|
46
|
+
if (ready) trackBlogView(slug, site);
|
|
47
|
+
}, [ready, slug, site]);
|
|
45
48
|
return null;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
exports.BlogViewTracker = BlogViewTracker;
|
|
49
52
|
exports.trackBlogView = trackBlogView;
|
|
50
|
-
//# sourceMappingURL=BlogViewTracker-
|
|
51
|
-
//# sourceMappingURL=BlogViewTracker-
|
|
53
|
+
//# sourceMappingURL=BlogViewTracker-HK5C7PU6.js.map
|
|
54
|
+
//# sourceMappingURL=BlogViewTracker-HK5C7PU6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blog/BlogViewTracker.tsx"],"names":["sonorFetch","withSiteBody","useDeferredActivation","useEffect"],"mappings":";;;;;;;;;;;;AAoBA,IAAM,kBAAA,GAAqB,wBAAA;AAgBpB,SAAS,aAAA,CAAc,MAAc,IAAA,EAAqB;AAC/D,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,MAAA,KAAW,WAAA,EAAa;AAI5C,EAAA,MAAM,CAAA,GAAI,MAAA;AAKV,EAAA,MAAM,UAAU,CAAA,CAAE,oBAAA;AAClB,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,CAAA,CAAE,oBAAA,EAAsB;AAKzC,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,kBAAkB,CAAA,EAAG,IAAI,CAAA,CAAA;AACxC,EAAA,IAAI;AACF,IAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA,EACnC,CAAA,CAAA,MAAQ;AAAA,EAER;AAIA,EAAA,KAAKA,2BAAA;AAAA,IACH,GAAG,OAAO,CAAA,iBAAA,CAAA;AAAA,IACV;AAAA,MACE,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,MAC9C,IAAA,EAAM,IAAA,CAAK,SAAA,CAAUC,6BAAA,CAAa,EAAE,MAAK,EAAG,IAAA,IAAQ,CAAA,CAAE,iBAAiB,CAAC;AAAA,KAC1E;AAAA,IACA,EAAE,SAAS,CAAA;AAAE,GACf,CACG,IAAA,CAAK,CAAC,GAAA,KAAQ;AACb,IAAA,IAAI,IAAI,EAAA,EAAI;AACV,MAAA,IAAI;AACF,QAAA,cAAA,CAAe,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,MACjC,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,EAEb,CAAC,CAAA;AACL;AAEO,SAAS,eAAA,CAAgB,EAAE,IAAA,EAAM,IAAA,EAAK,EAAyB;AACpE,EAAA,MAAM,KAAA,GAAQC,uCAAsB,IAAI,CAAA;AAExC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,IAAI,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,IAAI,CAAC,CAAA;AAEtB,EAAA,OAAO,IAAA;AACT","file":"BlogViewTracker-HK5C7PU6.js","sourcesContent":["'use client'\n\n/**\n * @sonordev/site-kit blog — reader-side view tracking\n *\n * Counts actual readers by POSTing to /public/blog/view once per post per\n * browser session. This replaces the server-side increment that rode\n * GET posts/:slug — under ISR that GET fires on REVALIDATION, not on reads,\n * so view_count was measuring cache churn instead of people.\n *\n * Childless by design (renders null, never wraps children) and gated behind\n * the same idle deferral SiteKitLayout uses, so it stays out of the critical\n * hydration window.\n */\n\nimport { useEffect } from 'react'\nimport { useDeferredActivation } from '../shared/defer'\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { withSiteBody } from '../sites/site-param'\n\nconst SESSION_KEY_PREFIX = '__sonor_blog_viewed__:'\n\nexport interface BlogViewTrackerProps {\n slug: string\n /**\n * Sub-site host the view counts toward. Omit to use the host SiteKitLayout\n * published (`__SITE_KIT_SITE__`, the same one analytics tags page views\n * with), then NEXT_PUBLIC_SITE_URL, then `window.location.host`.\n */\n site?: string\n}\n\n/**\n * The effect body, exported for tests (the package's vitest runs in node, so\n * the component's mount path can't be exercised directly).\n */\nexport function trackBlogView(slug: string, site?: string): void {\n if (!slug || typeof window === 'undefined') return\n\n // SiteKitLayout globals; the credential is the minted st1. token, never\n // the raw key. Without SiteKitLayout the globals are absent — no-op.\n const w = window as Window & {\n __SITE_KIT_API_URL__?: string\n __SITE_KIT_API_KEY__?: string\n __SITE_KIT_SITE__?: string\n }\n const baseUrl = w.__SITE_KIT_API_URL__\n if (!baseUrl || !w.__SITE_KIT_API_KEY__) return\n\n // One view per post per session. sessionStorage can throw (private\n // windows, storage-blocked browsers) — treat a throw as \"not yet viewed\"\n // and skip writing rather than skip counting.\n const key = `${SESSION_KEY_PREFIX}${slug}`\n try {\n if (sessionStorage.getItem(key)) return\n } catch {\n /* unreadable storage — count the view, skip dedupe */\n }\n\n // retries: 0 — the increment is not idempotent, so a retried request\n // would double-count.\n void sonorFetch(\n `${baseUrl}/public/blog/view`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(withSiteBody({ slug }, site || w.__SITE_KIT_SITE__)),\n },\n { retries: 0 }\n )\n .then((res) => {\n if (res.ok) {\n try {\n sessionStorage.setItem(key, '1')\n } catch {\n /* storage write blocked — worst case is a re-count next mount */\n }\n }\n })\n .catch(() => {\n /* view tracking is best-effort; never surface errors */\n })\n}\n\nexport function BlogViewTracker({ slug, site }: BlogViewTrackerProps) {\n const ready = useDeferredActivation(true)\n\n useEffect(() => {\n if (ready) trackBlogView(slug, site)\n }, [ready, slug, site])\n\n return null\n}\n"]}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useDeferredActivation } from './chunk-ZVBLXXNJ.mjs';
|
|
3
|
-
import {
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
import { withSiteBody } from './chunk-4TLFZ6NR.mjs';
|
|
4
|
+
import './chunk-JLVCWC6A.mjs';
|
|
5
|
+
import './chunk-ZN4HBK5C.mjs';
|
|
6
|
+
import { sonorFetch } from './chunk-7THZOAUR.mjs';
|
|
7
|
+
import './chunk-PUAXHYBL.mjs';
|
|
8
|
+
import './chunk-HRMGITUZ.mjs';
|
|
6
9
|
import './chunk-BEXTDHO4.mjs';
|
|
7
10
|
import { useEffect } from 'react';
|
|
8
11
|
|
|
9
12
|
var SESSION_KEY_PREFIX = "__sonor_blog_viewed__:";
|
|
10
|
-
function trackBlogView(slug) {
|
|
13
|
+
function trackBlogView(slug, site) {
|
|
11
14
|
if (!slug || typeof window === "undefined") return;
|
|
12
15
|
const w = window;
|
|
13
16
|
const baseUrl = w.__SITE_KIT_API_URL__;
|
|
@@ -22,7 +25,7 @@ function trackBlogView(slug) {
|
|
|
22
25
|
{
|
|
23
26
|
method: "POST",
|
|
24
27
|
headers: { "Content-Type": "application/json" },
|
|
25
|
-
body: JSON.stringify({ slug })
|
|
28
|
+
body: JSON.stringify(withSiteBody({ slug }, site || w.__SITE_KIT_SITE__))
|
|
26
29
|
},
|
|
27
30
|
{ retries: 0 }
|
|
28
31
|
).then((res) => {
|
|
@@ -35,14 +38,14 @@ function trackBlogView(slug) {
|
|
|
35
38
|
}).catch(() => {
|
|
36
39
|
});
|
|
37
40
|
}
|
|
38
|
-
function BlogViewTracker({ slug }) {
|
|
41
|
+
function BlogViewTracker({ slug, site }) {
|
|
39
42
|
const ready = useDeferredActivation(true);
|
|
40
43
|
useEffect(() => {
|
|
41
|
-
if (ready) trackBlogView(slug);
|
|
42
|
-
}, [ready, slug]);
|
|
44
|
+
if (ready) trackBlogView(slug, site);
|
|
45
|
+
}, [ready, slug, site]);
|
|
43
46
|
return null;
|
|
44
47
|
}
|
|
45
48
|
|
|
46
49
|
export { BlogViewTracker, trackBlogView };
|
|
47
|
-
//# sourceMappingURL=BlogViewTracker-
|
|
48
|
-
//# sourceMappingURL=BlogViewTracker-
|
|
50
|
+
//# sourceMappingURL=BlogViewTracker-KXRZHN3U.mjs.map
|
|
51
|
+
//# sourceMappingURL=BlogViewTracker-KXRZHN3U.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blog/BlogViewTracker.tsx"],"names":[],"mappings":";;;;;;;;;;AAoBA,IAAM,kBAAA,GAAqB,wBAAA;AAgBpB,SAAS,aAAA,CAAc,MAAc,IAAA,EAAqB;AAC/D,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,MAAA,KAAW,WAAA,EAAa;AAI5C,EAAA,MAAM,CAAA,GAAI,MAAA;AAKV,EAAA,MAAM,UAAU,CAAA,CAAE,oBAAA;AAClB,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,CAAA,CAAE,oBAAA,EAAsB;AAKzC,EAAA,MAAM,GAAA,GAAM,CAAA,EAAG,kBAAkB,CAAA,EAAG,IAAI,CAAA,CAAA;AACxC,EAAA,IAAI;AACF,IAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA,EACnC,CAAA,CAAA,MAAQ;AAAA,EAER;AAIA,EAAA,KAAK,UAAA;AAAA,IACH,GAAG,OAAO,CAAA,iBAAA,CAAA;AAAA,IACV;AAAA,MACE,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,MAC9C,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,YAAA,CAAa,EAAE,MAAK,EAAG,IAAA,IAAQ,CAAA,CAAE,iBAAiB,CAAC;AAAA,KAC1E;AAAA,IACA,EAAE,SAAS,CAAA;AAAE,GACf,CACG,IAAA,CAAK,CAAC,GAAA,KAAQ;AACb,IAAA,IAAI,IAAI,EAAA,EAAI;AACV,MAAA,IAAI;AACF,QAAA,cAAA,CAAe,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,MACjC,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,EAEb,CAAC,CAAA;AACL;AAEO,SAAS,eAAA,CAAgB,EAAE,IAAA,EAAM,IAAA,EAAK,EAAyB;AACpE,EAAA,MAAM,KAAA,GAAQ,sBAAsB,IAAI,CAAA;AAExC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,KAAA,EAAO,aAAA,CAAc,IAAA,EAAM,IAAI,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,KAAA,EAAO,IAAA,EAAM,IAAI,CAAC,CAAA;AAEtB,EAAA,OAAO,IAAA;AACT","file":"BlogViewTracker-KXRZHN3U.mjs","sourcesContent":["'use client'\n\n/**\n * @sonordev/site-kit blog — reader-side view tracking\n *\n * Counts actual readers by POSTing to /public/blog/view once per post per\n * browser session. This replaces the server-side increment that rode\n * GET posts/:slug — under ISR that GET fires on REVALIDATION, not on reads,\n * so view_count was measuring cache churn instead of people.\n *\n * Childless by design (renders null, never wraps children) and gated behind\n * the same idle deferral SiteKitLayout uses, so it stays out of the critical\n * hydration window.\n */\n\nimport { useEffect } from 'react'\nimport { useDeferredActivation } from '../shared/defer'\nimport { sonorFetch } from '../shared/sonorFetch'\nimport { withSiteBody } from '../sites/site-param'\n\nconst SESSION_KEY_PREFIX = '__sonor_blog_viewed__:'\n\nexport interface BlogViewTrackerProps {\n slug: string\n /**\n * Sub-site host the view counts toward. Omit to use the host SiteKitLayout\n * published (`__SITE_KIT_SITE__`, the same one analytics tags page views\n * with), then NEXT_PUBLIC_SITE_URL, then `window.location.host`.\n */\n site?: string\n}\n\n/**\n * The effect body, exported for tests (the package's vitest runs in node, so\n * the component's mount path can't be exercised directly).\n */\nexport function trackBlogView(slug: string, site?: string): void {\n if (!slug || typeof window === 'undefined') return\n\n // SiteKitLayout globals; the credential is the minted st1. token, never\n // the raw key. Without SiteKitLayout the globals are absent — no-op.\n const w = window as Window & {\n __SITE_KIT_API_URL__?: string\n __SITE_KIT_API_KEY__?: string\n __SITE_KIT_SITE__?: string\n }\n const baseUrl = w.__SITE_KIT_API_URL__\n if (!baseUrl || !w.__SITE_KIT_API_KEY__) return\n\n // One view per post per session. sessionStorage can throw (private\n // windows, storage-blocked browsers) — treat a throw as \"not yet viewed\"\n // and skip writing rather than skip counting.\n const key = `${SESSION_KEY_PREFIX}${slug}`\n try {\n if (sessionStorage.getItem(key)) return\n } catch {\n /* unreadable storage — count the view, skip dedupe */\n }\n\n // retries: 0 — the increment is not idempotent, so a retried request\n // would double-count.\n void sonorFetch(\n `${baseUrl}/public/blog/view`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(withSiteBody({ slug }, site || w.__SITE_KIT_SITE__)),\n },\n { retries: 0 }\n )\n .then((res) => {\n if (res.ok) {\n try {\n sessionStorage.setItem(key, '1')\n } catch {\n /* storage write blocked — worst case is a re-count next mount */\n }\n }\n })\n .catch(() => {\n /* view tracking is best-effort; never surface errors */\n })\n}\n\nexport function BlogViewTracker({ slug, site }: BlogViewTrackerProps) {\n const ready = useDeferredActivation(true)\n\n useEffect(() => {\n if (ready) trackBlogView(slug, site)\n }, [ready, slug, site])\n\n return null\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkHQOHB6QF_js = require('./chunk-HQOHB6QF.js');
|
|
4
|
+
require('./chunk-ESP5RMB7.js');
|
|
5
|
+
require('./chunk-G6WF4G3E.js');
|
|
6
|
+
require('./chunk-ZEOC26LZ.js');
|
|
7
|
+
require('./chunk-5XFFUP6D.js');
|
|
8
|
+
require('./chunk-LBZGYF3B.js');
|
|
9
|
+
require('./chunk-KHPJ3CEL.js');
|
|
10
|
+
require('./chunk-P4Y75QSU.js');
|
|
11
|
+
require('./chunk-VJMPIRSD.js');
|
|
12
|
+
require('./chunk-PRTXAIIC.js');
|
|
13
|
+
require('./chunk-UWHCHYCX.js');
|
|
14
|
+
require('./chunk-5O7JSWT6.js');
|
|
15
|
+
require('./chunk-SNAQBZPT.js');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(exports, "ChatWidget", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return chunkHQOHB6QF_js.ChatWidget; }
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=ChatWidget-3OW5LY37.js.map
|
|
24
|
+
//# sourceMappingURL=ChatWidget-3OW5LY37.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-3OW5LY37.js"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { ChatWidget } from './chunk-B2VFMPVJ.mjs';
|
|
2
|
+
import './chunk-4U5NCKQY.mjs';
|
|
3
|
+
import './chunk-NSWO43XW.mjs';
|
|
4
|
+
import './chunk-HEOQT5SM.mjs';
|
|
5
|
+
import './chunk-QRHVMTHF.mjs';
|
|
6
|
+
import './chunk-QVHVL7EX.mjs';
|
|
7
|
+
import './chunk-TMVKRQGJ.mjs';
|
|
8
|
+
import './chunk-5SANRSX3.mjs';
|
|
9
|
+
import './chunk-6EDVCUAG.mjs';
|
|
10
|
+
import './chunk-7THZOAUR.mjs';
|
|
11
|
+
import './chunk-PUAXHYBL.mjs';
|
|
12
|
+
import './chunk-HRMGITUZ.mjs';
|
|
13
|
+
import './chunk-BEXTDHO4.mjs';
|
|
14
|
+
//# sourceMappingURL=ChatWidget-54GVS27I.mjs.map
|
|
15
|
+
//# sourceMappingURL=ChatWidget-54GVS27I.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ChatWidget-54GVS27I.mjs"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { EngageWidget } from './chunk-O5ZSGBQD.mjs';
|
|
2
|
+
import './chunk-4U5NCKQY.mjs';
|
|
3
|
+
import './chunk-NSWO43XW.mjs';
|
|
4
|
+
import './chunk-ZZQAGCSI.mjs';
|
|
5
|
+
import './chunk-6EDVCUAG.mjs';
|
|
6
|
+
import './chunk-A6UYV475.mjs';
|
|
7
|
+
import './chunk-7THZOAUR.mjs';
|
|
8
|
+
import './chunk-PUAXHYBL.mjs';
|
|
9
|
+
import './chunk-HRMGITUZ.mjs';
|
|
10
|
+
import './chunk-BEXTDHO4.mjs';
|
|
11
|
+
//# sourceMappingURL=EngageWidget-7EUP76WE.mjs.map
|
|
12
|
+
//# sourceMappingURL=EngageWidget-7EUP76WE.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-7EUP76WE.mjs"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk35ERUUH3_js = require('./chunk-35ERUUH3.js');
|
|
4
|
+
require('./chunk-ESP5RMB7.js');
|
|
5
|
+
require('./chunk-G6WF4G3E.js');
|
|
6
|
+
require('./chunk-RC4WWQXR.js');
|
|
7
|
+
require('./chunk-VJMPIRSD.js');
|
|
8
|
+
require('./chunk-5RNAUYWE.js');
|
|
9
|
+
require('./chunk-PRTXAIIC.js');
|
|
10
|
+
require('./chunk-UWHCHYCX.js');
|
|
11
|
+
require('./chunk-5O7JSWT6.js');
|
|
12
|
+
require('./chunk-SNAQBZPT.js');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
Object.defineProperty(exports, "EngageWidget", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunk35ERUUH3_js.EngageWidget; }
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=EngageWidget-DDP5UFA4.js.map
|
|
21
|
+
//# sourceMappingURL=EngageWidget-DDP5UFA4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"EngageWidget-DDP5UFA4.js"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { sonorFetch } from './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
2
|
+
import { sonorFetch } from './chunk-7THZOAUR.mjs';
|
|
3
|
+
import './chunk-PUAXHYBL.mjs';
|
|
4
|
+
import './chunk-HRMGITUZ.mjs';
|
|
5
5
|
import './chunk-BEXTDHO4.mjs';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
@@ -81,5 +81,5 @@ async function uploadFormFile(file) {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
export { FileField };
|
|
84
|
-
//# sourceMappingURL=FileField-
|
|
85
|
-
//# sourceMappingURL=FileField-
|
|
84
|
+
//# sourceMappingURL=FileField-IQLN6E3C.mjs.map
|
|
85
|
+
//# sourceMappingURL=FileField-IQLN6E3C.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/FileField.tsx"],"names":[],"mappings":"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","file":"FileField-
|
|
1
|
+
{"version":3,"sources":["../src/forms/FileField.tsx"],"names":[],"mappings":"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","file":"FileField-IQLN6E3C.mjs","sourcesContent":["'use client'\n\n/**\n * File upload field — the one field type that cannot render on the server.\n *\n * It holds upload state and reads the browser-published credential globals, so\n * it lives here rather than in FormField.tsx. Pulling it out is what lets\n * FormField drop its `'use client'` directive and render inside a Server\n * Component (see StaticForm.tsx); a form WITHOUT a file field now ships no\n * field-rendering JavaScript at all.\n *\n * Uploads the chosen file to the Sonor API, which stores it and returns a\n * public URL — that URL becomes the field value, so large files never touch\n * the JSON submission body. The value stays empty until the upload succeeds,\n * so a required file field correctly blocks submission until the upload\n * completes (rather than submitting a useless bare filename).\n *\n * Note: forms containing a file field are NOT native-POST eligible (see\n * native-fallback.tsx) — a form-encoded POST cannot run this upload — so the\n * server shell renders a plain disabled-looking file input and the real\n * control arrives with the enhancement.\n */\n\nimport React from 'react'\nimport type { FormField as FormFieldType } from './types'\nimport { sonorFetch } from '../shared/sonorFetch'\n\nexport interface FileFieldProps {\n field: FormFieldType\n inputId: string\n classPrefix: string\n baseInputStyle: React.CSSProperties\n onChange: (value: unknown) => void\n}\n\nexport function FileField({\n field,\n inputId,\n classPrefix,\n baseInputStyle,\n onChange,\n}: FileFieldProps) {\n const [status, setStatus] = React.useState<'idle' | 'uploading' | 'error'>('idle')\n const [fileName, setFileName] = React.useState('')\n\n const handleFile = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file) return\n setFileName(file.name)\n setStatus('uploading')\n onChange('') // clear any prior URL until this upload completes\n try {\n const url = await uploadFormFile(file)\n onChange(url)\n setStatus('idle')\n } catch (err) {\n console.error('[Forms] File upload failed:', err)\n onChange('')\n setStatus('error')\n }\n }\n\n return (\n <>\n <input\n id={inputId}\n className={`${classPrefix}__input ${classPrefix}__input--file`}\n type=\"file\"\n name={field.slug}\n required={field.is_required}\n disabled={status === 'uploading'}\n onChange={handleFile}\n style={baseInputStyle}\n />\n {status === 'uploading' && (\n <p style={{ color: 'var(--sk-text-tertiary, #6b7280)', fontSize: 14, marginTop: 4 }}>\n Uploading {fileName}…\n </p>\n )}\n {status === 'error' && (\n <p role=\"alert\" style={{ color: 'var(--sk-error, #dc2626)', fontSize: 14, marginTop: 4 }}>\n Upload failed. Please choose the file again.\n </p>\n )}\n </>\n )\n}\n\n/** Upload a single file to the Sonor API and return its stored public URL. */\nasync function uploadFormFile(file: File): Promise<string> {\n const apiUrl =\n typeof window !== 'undefined'\n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : 'https://api.sonor.io'\n const apiKey =\n typeof window !== 'undefined' ? (window as any).__SITE_KIT_API_KEY__ : undefined\n if (!apiKey) {\n throw new Error('API key is required to upload files.')\n }\n\n const body = new FormData()\n body.append('file', file)\n\n // No Content-Type header — the browser sets the multipart boundary itself.\n const response = await sonorFetch(\n `${apiUrl}/api/public/forms/upload`,\n {\n method: 'POST',\n headers: { Authorization: `Bearer ${apiKey}` },\n body,\n },\n { retries: 1, timeoutMs: 60000 },\n )\n\n if (!response.ok) {\n throw new Error(`Upload failed (${response.status})`)\n }\n const data = (await response.json().catch(() => null)) as { url?: string } | null\n if (!data?.url) {\n throw new Error('Upload did not return a URL.')\n }\n return data.url\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
require('./chunk-
|
|
4
|
+
var chunkPRTXAIIC_js = require('./chunk-PRTXAIIC.js');
|
|
5
|
+
require('./chunk-UWHCHYCX.js');
|
|
6
|
+
require('./chunk-5O7JSWT6.js');
|
|
7
7
|
require('./chunk-SNAQBZPT.js');
|
|
8
8
|
var React = require('react');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -67,7 +67,7 @@ async function uploadFormFile(file) {
|
|
|
67
67
|
}
|
|
68
68
|
const body = new FormData();
|
|
69
69
|
body.append("file", file);
|
|
70
|
-
const response = await
|
|
70
|
+
const response = await chunkPRTXAIIC_js.sonorFetch(
|
|
71
71
|
`${apiUrl}/api/public/forms/upload`,
|
|
72
72
|
{
|
|
73
73
|
method: "POST",
|
|
@@ -87,5 +87,5 @@ async function uploadFormFile(file) {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
exports.FileField = FileField;
|
|
90
|
-
//# sourceMappingURL=FileField-
|
|
91
|
-
//# sourceMappingURL=FileField-
|
|
90
|
+
//# sourceMappingURL=FileField-SBPL4JHP.js.map
|
|
91
|
+
//# sourceMappingURL=FileField-SBPL4JHP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/forms/FileField.tsx"],"names":["React","jsxs","Fragment","jsx","sonorFetch"],"mappings":"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","file":"FileField-
|
|
1
|
+
{"version":3,"sources":["../src/forms/FileField.tsx"],"names":["React","jsxs","Fragment","jsx","sonorFetch"],"mappings":"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","file":"FileField-SBPL4JHP.js","sourcesContent":["'use client'\n\n/**\n * File upload field — the one field type that cannot render on the server.\n *\n * It holds upload state and reads the browser-published credential globals, so\n * it lives here rather than in FormField.tsx. Pulling it out is what lets\n * FormField drop its `'use client'` directive and render inside a Server\n * Component (see StaticForm.tsx); a form WITHOUT a file field now ships no\n * field-rendering JavaScript at all.\n *\n * Uploads the chosen file to the Sonor API, which stores it and returns a\n * public URL — that URL becomes the field value, so large files never touch\n * the JSON submission body. The value stays empty until the upload succeeds,\n * so a required file field correctly blocks submission until the upload\n * completes (rather than submitting a useless bare filename).\n *\n * Note: forms containing a file field are NOT native-POST eligible (see\n * native-fallback.tsx) — a form-encoded POST cannot run this upload — so the\n * server shell renders a plain disabled-looking file input and the real\n * control arrives with the enhancement.\n */\n\nimport React from 'react'\nimport type { FormField as FormFieldType } from './types'\nimport { sonorFetch } from '../shared/sonorFetch'\n\nexport interface FileFieldProps {\n field: FormFieldType\n inputId: string\n classPrefix: string\n baseInputStyle: React.CSSProperties\n onChange: (value: unknown) => void\n}\n\nexport function FileField({\n field,\n inputId,\n classPrefix,\n baseInputStyle,\n onChange,\n}: FileFieldProps) {\n const [status, setStatus] = React.useState<'idle' | 'uploading' | 'error'>('idle')\n const [fileName, setFileName] = React.useState('')\n\n const handleFile = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (!file) return\n setFileName(file.name)\n setStatus('uploading')\n onChange('') // clear any prior URL until this upload completes\n try {\n const url = await uploadFormFile(file)\n onChange(url)\n setStatus('idle')\n } catch (err) {\n console.error('[Forms] File upload failed:', err)\n onChange('')\n setStatus('error')\n }\n }\n\n return (\n <>\n <input\n id={inputId}\n className={`${classPrefix}__input ${classPrefix}__input--file`}\n type=\"file\"\n name={field.slug}\n required={field.is_required}\n disabled={status === 'uploading'}\n onChange={handleFile}\n style={baseInputStyle}\n />\n {status === 'uploading' && (\n <p style={{ color: 'var(--sk-text-tertiary, #6b7280)', fontSize: 14, marginTop: 4 }}>\n Uploading {fileName}…\n </p>\n )}\n {status === 'error' && (\n <p role=\"alert\" style={{ color: 'var(--sk-error, #dc2626)', fontSize: 14, marginTop: 4 }}>\n Upload failed. Please choose the file again.\n </p>\n )}\n </>\n )\n}\n\n/** Upload a single file to the Sonor API and return its stored public URL. */\nasync function uploadFormFile(file: File): Promise<string> {\n const apiUrl =\n typeof window !== 'undefined'\n ? (window as any).__SITE_KIT_API_URL__ || 'https://api.sonor.io'\n : 'https://api.sonor.io'\n const apiKey =\n typeof window !== 'undefined' ? (window as any).__SITE_KIT_API_KEY__ : undefined\n if (!apiKey) {\n throw new Error('API key is required to upload files.')\n }\n\n const body = new FormData()\n body.append('file', file)\n\n // No Content-Type header — the browser sets the multipart boundary itself.\n const response = await sonorFetch(\n `${apiUrl}/api/public/forms/upload`,\n {\n method: 'POST',\n headers: { Authorization: `Bearer ${apiKey}` },\n body,\n },\n { retries: 1, timeoutMs: 60000 },\n )\n\n if (!response.ok) {\n throw new Error(`Upload failed (${response.status})`)\n }\n const data = (await response.json().catch(() => null)) as { url?: string } | null\n if (!data?.url) {\n throw new Error('Upload did not return a URL.')\n }\n return data.url\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { StageStyles, SummaryTick } from './chunk-WSPGXSBU.mjs';
|
|
3
|
-
import { stageFirstName,
|
|
4
|
-
import { FormField } from './chunk-
|
|
3
|
+
import { stageFirstName, useFieldControls, stageViews, stageEstimate, AUTO_ADVANCE_TYPES } from './chunk-PK2OTGW5.mjs';
|
|
4
|
+
import { FormField } from './chunk-VJV7WUR2.mjs';
|
|
5
|
+
import { isEmptyValue, isDisplayOnly } from './chunk-QRHVMTHF.mjs';
|
|
5
6
|
import './chunk-BEXTDHO4.mjs';
|
|
6
7
|
import { useMemo, useCallback, useState, useRef, useEffect } from 'react';
|
|
7
8
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
9
|
|
|
9
|
-
var NON_QUESTION_TYPES = ["heading", "section_header", "paragraph", "hidden"];
|
|
10
10
|
var MULTI_CONTROL_TYPES = ["radio", "checkbox", "rating", "slider"];
|
|
11
11
|
function optionLabel(field, value) {
|
|
12
12
|
const raw = Array.isArray(field.options) ? field.options : [];
|
|
@@ -249,6 +249,8 @@ function FormSpotlight({
|
|
|
249
249
|
applyFieldError,
|
|
250
250
|
submit,
|
|
251
251
|
trackStepChange,
|
|
252
|
+
trackFieldFocus,
|
|
253
|
+
trackFieldBlur,
|
|
252
254
|
honeypot
|
|
253
255
|
}) {
|
|
254
256
|
const fieldControls = useFieldControls(config.fields);
|
|
@@ -628,7 +630,7 @@ function FormSpotlight({
|
|
|
628
630
|
] }),
|
|
629
631
|
/* @__PURE__ */ jsx("div", { className: "sk-spot__groups", "data-sk-part": "spot-groups", children: (config.fields || []).map((field) => {
|
|
630
632
|
if (!isFieldVisible(field)) return null;
|
|
631
|
-
if (
|
|
633
|
+
if (isDisplayOnly(field)) {
|
|
632
634
|
return /* @__PURE__ */ jsx(
|
|
633
635
|
FormField,
|
|
634
636
|
{
|
|
@@ -686,7 +688,9 @@ function FormSpotlight({
|
|
|
686
688
|
onChange: handleFieldChange(
|
|
687
689
|
f,
|
|
688
690
|
view.fields.length === 1 && AUTO_ADVANCE_TYPES.includes(f.field_type)
|
|
689
|
-
)
|
|
691
|
+
),
|
|
692
|
+
onFocus: () => trackFieldFocus(f.slug),
|
|
693
|
+
onBlur: () => trackFieldBlur(f.slug)
|
|
690
694
|
}
|
|
691
695
|
)
|
|
692
696
|
},
|
|
@@ -748,5 +752,5 @@ function FormSpotlight({
|
|
|
748
752
|
}
|
|
749
753
|
|
|
750
754
|
export { FormSpotlight, SpotStyles, groupSentence, renderCompletionTemplate };
|
|
751
|
-
//# sourceMappingURL=FormSpotlight-
|
|
752
|
-
//# sourceMappingURL=FormSpotlight-
|
|
755
|
+
//# sourceMappingURL=FormSpotlight-E2LKKHGV.mjs.map
|
|
756
|
+
//# sourceMappingURL=FormSpotlight-E2LKKHGV.mjs.map
|