@sonordev/site-kit 5.3.1 → 5.4.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 +17 -0
- package/agent-manifest.json +5 -4
- package/dist/AnalyticsProvider-2XIOMRCN.mjs +11 -0
- package/dist/{AnalyticsProvider-NA7EMJCA.mjs.map → AnalyticsProvider-2XIOMRCN.mjs.map} +1 -1
- package/dist/AnalyticsProvider-Y2P2BPOI.js +32 -0
- package/dist/{AnalyticsProvider-XE3ADUUH.js.map → AnalyticsProvider-Y2P2BPOI.js.map} +1 -1
- package/dist/{BlogViewTracker-DVJHZ7CM.js → BlogViewTracker-6EGEDPP3.js} +6 -6
- package/dist/{BlogViewTracker-DVJHZ7CM.js.map → BlogViewTracker-6EGEDPP3.js.map} +1 -1
- package/dist/{BlogViewTracker-MKJYTTJQ.mjs → BlogViewTracker-R4YQ76WP.mjs} +5 -5
- package/dist/{BlogViewTracker-MKJYTTJQ.mjs.map → BlogViewTracker-R4YQ76WP.mjs.map} +1 -1
- package/dist/ChatWidget-2OFWPCWF.js +20 -0
- package/dist/{ChatWidget-BZ3KOSXG.js.map → ChatWidget-2OFWPCWF.js.map} +1 -1
- package/dist/ChatWidget-4AOGHYXQ.mjs +11 -0
- package/dist/{ChatWidget-BD4F4XLD.mjs.map → ChatWidget-4AOGHYXQ.mjs.map} +1 -1
- package/dist/EngageWidget-SFO2XRNG.mjs +9 -0
- package/dist/{EngageWidget-L7B6PCM3.mjs.map → EngageWidget-SFO2XRNG.mjs.map} +1 -1
- package/dist/EngageWidget-T4KAAD3G.js +18 -0
- package/dist/{EngageWidget-JPP6EDCJ.js.map → EngageWidget-T4KAAD3G.js.map} +1 -1
- package/dist/{FileField-7WPRONDS.mjs → FileField-7DF2SLPF.mjs} +5 -5
- package/dist/{FileField-7WPRONDS.mjs.map → FileField-7DF2SLPF.mjs.map} +1 -1
- package/dist/{FileField-GHT7444Y.js → FileField-CE2XNBBG.js} +6 -6
- package/dist/{FileField-GHT7444Y.js.map → FileField-CE2XNBBG.js.map} +1 -1
- package/dist/{FormSpotlight-WZVS6HHR.mjs → FormSpotlight-IRLKSZGV.mjs} +3 -3
- package/dist/{FormSpotlight-WZVS6HHR.mjs.map → FormSpotlight-IRLKSZGV.mjs.map} +1 -1
- package/dist/{FormSpotlight-BB2IB7IX.js → FormSpotlight-ZD3WR5BC.js} +15 -15
- package/dist/{FormSpotlight-BB2IB7IX.js.map → FormSpotlight-ZD3WR5BC.js.map} +1 -1
- package/dist/{FormStage-Y3NHHMV2.mjs → FormStage-2OSRNQJL.mjs} +3 -3
- package/dist/{FormStage-Y3NHHMV2.mjs.map → FormStage-2OSRNQJL.mjs.map} +1 -1
- package/dist/{FormStage-FLBLXENZ.js → FormStage-OSPXOUQE.js} +13 -13
- package/dist/{FormStage-FLBLXENZ.js.map → FormStage-OSPXOUQE.js.map} +1 -1
- package/dist/ManagedForm-5G37EDJT.mjs +14 -0
- package/dist/{ManagedForm-AJM6D4SK.mjs.map → ManagedForm-5G37EDJT.mjs.map} +1 -1
- package/dist/ManagedForm-JCHGBBQW.js +23 -0
- package/dist/{ManagedForm-2OPCHDNJ.js.map → ManagedForm-JCHGBBQW.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-L2ZHJ7F4.js → ManagedNewsletterForm-4LVJZROZ.js} +8 -8
- package/dist/{ManagedNewsletterForm-L2ZHJ7F4.js.map → ManagedNewsletterForm-4LVJZROZ.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-MJI2JXIB.mjs → ManagedNewsletterForm-QJSVH23S.mjs} +7 -7
- package/dist/{ManagedNewsletterForm-MJI2JXIB.mjs.map → ManagedNewsletterForm-QJSVH23S.mjs.map} +1 -1
- package/dist/{SignalCore-23YDDSWO.mjs → SignalCore-L6Z3YTCF.mjs} +5 -5
- package/dist/{SignalCore-23YDDSWO.mjs.map → SignalCore-L6Z3YTCF.mjs.map} +1 -1
- package/dist/{SignalCore-G2VM7NUP.js → SignalCore-NQ4YEOI7.js} +11 -11
- package/dist/{SignalCore-G2VM7NUP.js.map → SignalCore-NQ4YEOI7.js.map} +1 -1
- package/dist/SitemapSync-3LUZWBTB.js +18 -0
- package/dist/{SitemapSync-T2N3TCWF.js.map → SitemapSync-3LUZWBTB.js.map} +1 -1
- package/dist/SitemapSync-MYSTLJOM.mjs +9 -0
- package/dist/{SitemapSync-YLWMU6J3.mjs.map → SitemapSync-MYSTLJOM.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/AuthorPage.d.ts +1 -1
- package/dist/blog/AuthorPage.d.ts.map +1 -1
- package/dist/blog/BlogLayout.d.ts +3 -1
- package/dist/blog/BlogLayout.d.ts.map +1 -1
- package/dist/blog/BlogList.d.ts +3 -1
- package/dist/blog/BlogList.d.ts.map +1 -1
- package/dist/blog/BlogPost.d.ts +3 -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/ClusterLandingPage.d.ts +3 -1
- package/dist/blog/ClusterLandingPage.d.ts.map +1 -1
- package/dist/blog/ClusterNavigation.d.ts +3 -1
- package/dist/blog/ClusterNavigation.d.ts.map +1 -1
- package/dist/blog/RelatedPosts.d.ts +4 -1
- package/dist/blog/RelatedPosts.d.ts.map +1 -1
- package/dist/blog/artwork-components.test.d.ts +2 -0
- package/dist/blog/artwork-components.test.d.ts.map +1 -0
- package/dist/blog/artwork.d.ts +14 -0
- package/dist/blog/artwork.d.ts.map +1 -0
- package/dist/blog/artwork.test.d.ts +2 -0
- package/dist/blog/artwork.test.d.ts.map +1 -0
- package/dist/blog/blog-styles.d.ts.map +1 -1
- package/dist/blog/blog-tables.d.ts +13 -0
- package/dist/blog/blog-tables.d.ts.map +1 -0
- package/dist/blog/blog-tables.test.d.ts +2 -0
- package/dist/blog/blog-tables.test.d.ts.map +1 -0
- package/dist/blog/index.d.ts +3 -0
- package/dist/blog/index.d.ts.map +1 -1
- package/dist/blog/index.js +52 -30
- package/dist/blog/index.js.map +1 -1
- package/dist/blog/index.mjs +15 -12
- package/dist/blog/index.mjs.map +1 -1
- package/dist/blog/publication-render.test.d.ts +2 -0
- package/dist/blog/publication-render.test.d.ts.map +1 -0
- package/dist/blog/publication-routes.test.d.ts +2 -0
- package/dist/blog/publication-routes.test.d.ts.map +1 -0
- package/dist/blog/routes.d.ts +40 -0
- package/dist/blog/routes.d.ts.map +1 -0
- package/dist/blog/server-core.d.ts +28 -21
- package/dist/blog/server-core.d.ts.map +1 -1
- package/dist/blog/server-ui.d.ts +4 -0
- package/dist/blog/server-ui.d.ts.map +1 -1
- package/dist/blog/server-ui.js +49 -28
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +9 -15
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.ts +28 -21
- package/dist/blog/server.d.ts.map +1 -1
- package/dist/blog/server.js +71 -42
- package/dist/blog/server.mjs +3 -2
- package/dist/blog/types.d.ts +11 -1
- package/dist/blog/types.d.ts.map +1 -1
- package/dist/blog-styles-6EY3BS5Y.js +595 -0
- package/dist/blog-styles-6EY3BS5Y.js.map +1 -0
- package/dist/blog-styles-7AKRUMV7.mjs +592 -0
- package/dist/blog-styles-7AKRUMV7.mjs.map +1 -0
- package/dist/blog-tables-DWDEWA3S.js +17 -0
- package/dist/blog-tables-DWDEWA3S.js.map +1 -0
- package/dist/blog-tables-QGIHOESZ.mjs +4 -0
- package/dist/blog-tables-QGIHOESZ.mjs.map +1 -0
- package/dist/{chunk-KP56C66Z.js → chunk-2KIGFOPM.js} +126 -188
- package/dist/chunk-2KIGFOPM.js.map +1 -0
- 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-4B4S56WJ.mjs +110 -0
- package/dist/chunk-4B4S56WJ.mjs.map +1 -0
- package/dist/{chunk-47566YF4.js → chunk-4WQB2ORG.js} +14 -14
- package/dist/{chunk-47566YF4.js.map → chunk-4WQB2ORG.js.map} +1 -1
- package/dist/{chunk-5TGSM5EQ.js → chunk-5737U6DI.js} +14 -14
- package/dist/{chunk-5TGSM5EQ.js.map → chunk-5737U6DI.js.map} +1 -1
- package/dist/{chunk-DN6A6KXH.mjs → chunk-6CUBSQMD.mjs} +3 -3
- package/dist/{chunk-DN6A6KXH.mjs.map → chunk-6CUBSQMD.mjs.map} +1 -1
- package/dist/{chunk-JBGRXICL.js → chunk-746RKQHA.js} +75 -70
- package/dist/chunk-746RKQHA.js.map +1 -0
- package/dist/{chunk-GTK3CGWF.js → chunk-7IPSQ5JR.js} +6 -6
- package/dist/{chunk-GTK3CGWF.js.map → chunk-7IPSQ5JR.js.map} +1 -1
- package/dist/{chunk-4S7BHFGT.js → chunk-7PLH3H3W.js} +3 -3
- package/dist/{chunk-4S7BHFGT.js.map → chunk-7PLH3H3W.js.map} +1 -1
- package/dist/chunk-7U7C6XRI.mjs +6 -0
- package/dist/{chunk-HRQ4367C.mjs.map → chunk-7U7C6XRI.mjs.map} +1 -1
- package/dist/{chunk-X4PL7R63.mjs → chunk-7Y2UPFSY.mjs} +3 -3
- package/dist/{chunk-X4PL7R63.mjs.map → chunk-7Y2UPFSY.mjs.map} +1 -1
- package/dist/{chunk-XR47TOGW.mjs → chunk-A2VLEORI.mjs} +3 -3
- package/dist/{chunk-XR47TOGW.mjs.map → chunk-A2VLEORI.mjs.map} +1 -1
- package/dist/{chunk-PA5ZVCW2.mjs → chunk-ACTLQ2RH.mjs} +3 -3
- package/dist/{chunk-PA5ZVCW2.mjs.map → chunk-ACTLQ2RH.mjs.map} +1 -1
- package/dist/{chunk-VLR2UYO4.js → chunk-AWFZIXCT.js} +12 -11
- package/dist/chunk-AWFZIXCT.js.map +1 -0
- package/dist/{chunk-COAVBUMS.mjs → chunk-B36PTS7B.mjs} +413 -94
- package/dist/chunk-B36PTS7B.mjs.map +1 -0
- package/dist/{chunk-LFJRMY4V.js → chunk-DPDV5Z4G.js} +12 -12
- package/dist/{chunk-LFJRMY4V.js.map → chunk-DPDV5Z4G.js.map} +1 -1
- package/dist/{chunk-W47J6ZZG.mjs → chunk-DQM5GR2P.mjs} +4 -4
- package/dist/{chunk-W47J6ZZG.mjs.map → chunk-DQM5GR2P.mjs.map} +1 -1
- package/dist/{chunk-VGX6G3TA.mjs → chunk-EBMPXFOP.mjs} +3 -3
- package/dist/{chunk-VGX6G3TA.mjs.map → chunk-EBMPXFOP.mjs.map} +1 -1
- package/dist/{chunk-DHXQBTXE.mjs → chunk-EEQYKMGH.mjs} +75 -70
- package/dist/chunk-EEQYKMGH.mjs.map +1 -0
- package/dist/{chunk-77HT6TYK.mjs → chunk-G5I3XEQS.mjs} +3 -3
- package/dist/{chunk-77HT6TYK.mjs.map → chunk-G5I3XEQS.mjs.map} +1 -1
- package/dist/chunk-GHECYDSZ.mjs +134 -0
- package/dist/chunk-GHECYDSZ.mjs.map +1 -0
- package/dist/{chunk-UJOEN4X6.js → chunk-GQ6CUOLA.js} +15 -15
- package/dist/{chunk-UJOEN4X6.js.map → chunk-GQ6CUOLA.js.map} +1 -1
- package/dist/{chunk-DTX4R45S.js → chunk-HBMF3M5F.js} +4 -4
- package/dist/{chunk-DTX4R45S.js.map → chunk-HBMF3M5F.js.map} +1 -1
- package/dist/{chunk-NW5CBNRU.mjs → chunk-HDDV63XJ.mjs} +3 -3
- package/dist/{chunk-NW5CBNRU.mjs.map → chunk-HDDV63XJ.mjs.map} +1 -1
- package/dist/{chunk-DBJRJ2Q2.mjs → chunk-HH5KGXTK.mjs} +4 -4
- package/dist/{chunk-DBJRJ2Q2.mjs.map → chunk-HH5KGXTK.mjs.map} +1 -1
- package/dist/{chunk-AKQA5ZYZ.mjs → chunk-I4PDSDVE.mjs} +3 -3
- package/dist/{chunk-AKQA5ZYZ.mjs.map → chunk-I4PDSDVE.mjs.map} +1 -1
- package/dist/{chunk-2MPOO6QJ.js → chunk-ITFZZ6YT.js} +3 -3
- package/dist/{chunk-2MPOO6QJ.js.map → chunk-ITFZZ6YT.js.map} +1 -1
- package/dist/{chunk-WZZYTFDV.mjs → chunk-JJ26JKBJ.mjs} +8 -3
- package/dist/chunk-JJ26JKBJ.mjs.map +1 -0
- package/dist/{chunk-Z33JXJTJ.js → chunk-KMGGAL2X.js} +2 -2
- package/dist/{chunk-Z33JXJTJ.js.map → chunk-KMGGAL2X.js.map} +1 -1
- package/dist/{chunk-4IMZ45YA.mjs → chunk-KQ3VAOAF.mjs} +4 -4
- package/dist/{chunk-4IMZ45YA.mjs.map → chunk-KQ3VAOAF.mjs.map} +1 -1
- package/dist/{chunk-GPH3VVLP.js → chunk-LBS4PRC7.js} +3 -3
- package/dist/{chunk-GPH3VVLP.js.map → chunk-LBS4PRC7.js.map} +1 -1
- package/dist/chunk-LC7AM4J5.js +118 -0
- package/dist/chunk-LC7AM4J5.js.map +1 -0
- package/dist/{chunk-5HMN3FXL.js → chunk-LF4L3ZP5.js} +8 -8
- package/dist/{chunk-5HMN3FXL.js.map → chunk-LF4L3ZP5.js.map} +1 -1
- package/dist/{chunk-LHD45PGP.js → chunk-LHYVFWHL.js} +8 -8
- package/dist/{chunk-LHD45PGP.js.map → chunk-LHYVFWHL.js.map} +1 -1
- package/dist/{chunk-I72AUITZ.mjs → chunk-LIYSLNEK.mjs} +96 -644
- package/dist/chunk-LIYSLNEK.mjs.map +1 -0
- package/dist/{chunk-HIV5YK5G.js → chunk-LUYUFILE.js} +4 -4
- package/dist/{chunk-HIV5YK5G.js.map → chunk-LUYUFILE.js.map} +1 -1
- package/dist/{chunk-4HL6CAZ7.mjs → chunk-MIFP6QEQ.mjs} +4 -4
- package/dist/{chunk-4HL6CAZ7.mjs.map → chunk-MIFP6QEQ.mjs.map} +1 -1
- package/dist/{chunk-SI7R3IJX.mjs → chunk-MTANHZKJ.mjs} +7 -7
- package/dist/{chunk-SI7R3IJX.mjs.map → chunk-MTANHZKJ.mjs.map} +1 -1
- package/dist/{chunk-R4PFWVGZ.mjs → chunk-N6AVWMIB.mjs} +4 -4
- package/dist/{chunk-R4PFWVGZ.mjs.map → chunk-N6AVWMIB.mjs.map} +1 -1
- package/dist/{chunk-WD57YWY5.mjs → chunk-N6X76QUF.mjs} +3 -3
- package/dist/{chunk-WD57YWY5.mjs.map → chunk-N6X76QUF.mjs.map} +1 -1
- package/dist/{chunk-7UPPYERC.mjs → chunk-NUH245XK.mjs} +4 -4
- package/dist/{chunk-7UPPYERC.mjs.map → chunk-NUH245XK.mjs.map} +1 -1
- package/dist/chunk-NVSWTDWU.mjs +25 -0
- package/dist/chunk-NVSWTDWU.mjs.map +1 -0
- package/dist/chunk-OL2QBWAU.js +29 -0
- package/dist/chunk-OL2QBWAU.js.map +1 -0
- package/dist/{chunk-UYR22S67.js → chunk-OXZYP32B.js} +7 -7
- package/dist/{chunk-UYR22S67.js.map → chunk-OXZYP32B.js.map} +1 -1
- package/dist/{chunk-QG7WHAGD.js → chunk-QWLL3B6U.js} +15 -15
- package/dist/{chunk-QG7WHAGD.js.map → chunk-QWLL3B6U.js.map} +1 -1
- 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-FH4LLJFL.mjs → chunk-SJXGIUHP.mjs} +9 -8
- package/dist/chunk-SJXGIUHP.mjs.map +1 -0
- package/dist/{chunk-4TU246Q4.mjs → chunk-SZHKNGNR.mjs} +2 -2
- package/dist/{chunk-4TU246Q4.mjs.map → chunk-SZHKNGNR.mjs.map} +1 -1
- package/dist/{chunk-GQTSQR63.js → chunk-U53KN4SA.js} +10 -5
- package/dist/chunk-U53KN4SA.js.map +1 -0
- package/dist/{chunk-AJBJH3BA.mjs → chunk-UOLY4NXK.mjs} +127 -189
- package/dist/chunk-UOLY4NXK.mjs.map +1 -0
- package/dist/{chunk-AVPMSJCQ.js → chunk-URVGBWCP.js} +4 -4
- package/dist/{chunk-AVPMSJCQ.js.map → chunk-URVGBWCP.js.map} +1 -1
- package/dist/chunk-UTOHMK52.js +8 -0
- package/dist/{chunk-TMQKZ4DO.js.map → chunk-UTOHMK52.js.map} +1 -1
- package/dist/{chunk-SHZXSIRH.js → chunk-VA36CJRV.js} +4 -4
- package/dist/{chunk-SHZXSIRH.js.map → chunk-VA36CJRV.js.map} +1 -1
- package/dist/{chunk-ZMFJXFUY.js → chunk-VWDT7H6L.js} +96 -644
- package/dist/chunk-VWDT7H6L.js.map +1 -0
- package/dist/{chunk-2VQ5YXOD.js → chunk-WSUQ76LN.js} +18 -18
- package/dist/{chunk-2VQ5YXOD.js.map → chunk-WSUQ76LN.js.map} +1 -1
- package/dist/{chunk-GM5E6R5W.mjs → chunk-XWF7QPIP.mjs} +3 -3
- package/dist/{chunk-GM5E6R5W.mjs.map → chunk-XWF7QPIP.mjs.map} +1 -1
- package/dist/chunk-YQTE32QK.js +137 -0
- package/dist/chunk-YQTE32QK.js.map +1 -0
- package/dist/{chunk-ISKJLXB4.mjs → chunk-ZDFVYSKK.mjs} +4 -4
- package/dist/{chunk-ISKJLXB4.mjs.map → chunk-ZDFVYSKK.mjs.map} +1 -1
- package/dist/{chunk-APL44ZVK.js → chunk-ZLPXFV5Y.js} +5 -5
- package/dist/{chunk-APL44ZVK.js.map → chunk-ZLPXFV5Y.js.map} +1 -1
- package/dist/{chunk-TAIGHH5J.js → chunk-ZY5AVC4P.js} +418 -98
- package/dist/chunk-ZY5AVC4P.js.map +1 -0
- 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/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/index.js +16 -16
- package/dist/forms/index.mjs +9 -9
- package/dist/forms/server.js +10 -10
- package/dist/forms/server.mjs +8 -8
- package/dist/forms/static.js +7 -7
- package/dist/forms/static.mjs +6 -6
- 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/llms/index.js +12 -12
- package/dist/llms/index.mjs +2 -2
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- 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/sitemap/index.js +2 -2
- package/dist/sitemap/index.mjs +1 -1
- package/dist/sync/BookingWidget.d.ts +0 -23
- package/dist/sync/BookingWidget.d.ts.map +1 -1
- package/dist/sync/MeetingFormatStep.d.ts +13 -0
- package/dist/sync/MeetingFormatStep.d.ts.map +1 -0
- package/dist/sync/api.d.ts +9 -10
- package/dist/sync/api.d.ts.map +1 -1
- package/dist/sync/booking-flow.d.ts +7 -0
- package/dist/sync/booking-flow.d.ts.map +1 -0
- package/dist/sync/booking-flow.test.d.ts +2 -0
- package/dist/sync/booking-flow.test.d.ts.map +1 -0
- package/dist/sync/index.d.ts +2 -2
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +20 -16
- package/dist/sync/index.mjs +4 -4
- package/dist/sync/types.d.ts +34 -0
- package/dist/sync/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/AnalyticsProvider-NA7EMJCA.mjs +0 -10
- package/dist/AnalyticsProvider-XE3ADUUH.js +0 -31
- package/dist/ChatWidget-BD4F4XLD.mjs +0 -11
- package/dist/ChatWidget-BZ3KOSXG.js +0 -20
- package/dist/EngageWidget-JPP6EDCJ.js +0 -18
- package/dist/EngageWidget-L7B6PCM3.mjs +0 -9
- package/dist/ManagedForm-2OPCHDNJ.js +0 -23
- package/dist/ManagedForm-AJM6D4SK.mjs +0 -14
- package/dist/SitemapSync-T2N3TCWF.js +0 -17
- package/dist/SitemapSync-YLWMU6J3.mjs +0 -8
- package/dist/chunk-AJBJH3BA.mjs.map +0 -1
- package/dist/chunk-CGCYZJYX.mjs +0 -41
- package/dist/chunk-CGCYZJYX.mjs.map +0 -1
- package/dist/chunk-COAVBUMS.mjs.map +0 -1
- package/dist/chunk-DHXQBTXE.mjs.map +0 -1
- package/dist/chunk-FH4LLJFL.mjs.map +0 -1
- package/dist/chunk-GQTSQR63.js.map +0 -1
- package/dist/chunk-HRQ4367C.mjs +0 -6
- package/dist/chunk-I72AUITZ.mjs.map +0 -1
- package/dist/chunk-JBGRXICL.js.map +0 -1
- package/dist/chunk-KP56C66Z.js.map +0 -1
- package/dist/chunk-TAIGHH5J.js.map +0 -1
- package/dist/chunk-TMQKZ4DO.js +0 -8
- package/dist/chunk-TPL2IHFI.js +0 -43
- package/dist/chunk-TPL2IHFI.js.map +0 -1
- package/dist/chunk-VLR2UYO4.js.map +0 -1
- package/dist/chunk-WZZYTFDV.mjs.map +0 -1
- package/dist/chunk-ZMFJXFUY.js.map +0 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sonordev/site-kit/analytics — the ONE analytics send decision
|
|
3
|
+
*
|
|
4
|
+
* SINGLE SOURCE OF TRUTH for "may this document report analytics, and where
|
|
5
|
+
* to". Every phone-home in the analytics module — page views, journey /
|
|
6
|
+
* session rows, scroll depth, heatmap clicks, web vitals, custom events,
|
|
7
|
+
* conversions, and the sitemap-validation read — resolves through
|
|
8
|
+
* {@link resolveAnalyticsTarget} and sends through {@link analyticsSend} /
|
|
9
|
+
* {@link analyticsBeacon}. Do NOT call sonorFetch/sonorBeacon directly from
|
|
10
|
+
* this module, and do not re-fork the credential resolution below; the
|
|
11
|
+
* eight hand-rolled copies this replaced are exactly how a rule gets fixed
|
|
12
|
+
* in one place and left broken in seven (see CLAUDE.md, "Code Hygiene").
|
|
13
|
+
* `send-gate.test.ts` fails the build if a new direct call appears.
|
|
14
|
+
*
|
|
15
|
+
* It answers two questions, in this order:
|
|
16
|
+
*
|
|
17
|
+
* 1. IS THIS DOCUMENT SOMEONE ELSE'S EMBED? A site loaded in a cross-origin
|
|
18
|
+
* iframe must not report traffic against its own Sonor project. The
|
|
19
|
+
* visitor is not on that site; they are on whatever page framed it, and
|
|
20
|
+
* every metric the frame produces is phantom traffic in the analytics its
|
|
21
|
+
* owner reads (and, for an agency, reports to the client).
|
|
22
|
+
*
|
|
23
|
+
* 2. IS THERE A CREDENTIAL? Unchanged behavior — no key, no send.
|
|
24
|
+
*
|
|
25
|
+
* ─── Why this landed on 2026-09-08, and what was measured ──────────────────
|
|
26
|
+
*
|
|
27
|
+
* Upforge case studies embed each client's whole production site in three
|
|
28
|
+
* eager iframes per study (agency-site-kit `DeviceTrifolio`), and
|
|
29
|
+
* `securityHeaders`' DEFAULT_FRAME_ANCESTORS has allowed https://upforge.io
|
|
30
|
+
* to frame every managed site since it was introduced. DeviceTrifolio's own
|
|
31
|
+
* doc comment reasons that nobody is affected because its cross-origin load
|
|
32
|
+
* detection can never succeed, so the screenshot overlay never fades. That is
|
|
33
|
+
* true of the PIXELS and false of the JAVASCRIPT: the overlay is an opacity
|
|
34
|
+
* layer over a live frame, so the embedded site loads, hydrates and runs its
|
|
35
|
+
* analytics whether or not it is ever revealed.
|
|
36
|
+
*
|
|
37
|
+
* Measured in the Sonor analytics table before this change (2026-09-08), the
|
|
38
|
+
* signature is unmistakable — from `analytics_page_views`, three views of `/`
|
|
39
|
+
* sharing ONE session_id and ONE visitor_id, milliseconds apart, with
|
|
40
|
+
* referrer `https://upforge.io/`:
|
|
41
|
+
*
|
|
42
|
+
* abbeyglenapts.com 20:02:13.852 / .900 / .921 (48ms, 21ms apart)
|
|
43
|
+
* goldenmilenky.com 04:12:23.840 / .868 / 24.624
|
|
44
|
+
* queencityriverboats 22:12:33.609 / .690 / .784
|
|
45
|
+
*
|
|
46
|
+
* Three loads of one page inside 70 milliseconds is not a person; it is the
|
|
47
|
+
* desktop + tablet + mobile frames of one trifolio, sharing storage because
|
|
48
|
+
* they share the embedded site's origin. 23 client sites carried this traffic
|
|
49
|
+
* on the day of the fix, the oldest from 2026-06-11. The widening of
|
|
50
|
+
* frame-ancestors to upforgelabs.com (upforge-nextjs 0c12be5) does not start
|
|
51
|
+
* this problem — it multiplies one that was already live.
|
|
52
|
+
*
|
|
53
|
+
* ─── Same-origin frames are ALLOWED, deliberately ──────────────────────────
|
|
54
|
+
*
|
|
55
|
+
* The block is on CROSS-origin embedding, not on being framed at all. A site
|
|
56
|
+
* embedding itself (a preview pane, a print view, an on-domain booking frame)
|
|
57
|
+
* has a real visitor really on that site and no other tenant to pollute, so
|
|
58
|
+
* it keeps reporting. How that is detected, and why `window.top` rather than
|
|
59
|
+
* `window.parent`, lives with the primitive in `shared/frame.ts` — this file
|
|
60
|
+
* owns the analytics POLICY, that file owns the frame FACT.
|
|
61
|
+
*/
|
|
62
|
+
/** Resolved destination for an analytics send. */
|
|
63
|
+
export interface AnalyticsTarget {
|
|
64
|
+
apiUrl: string;
|
|
65
|
+
apiKey: string;
|
|
66
|
+
}
|
|
67
|
+
export interface AnalyticsGateOptions {
|
|
68
|
+
/** `apiUrl` prop, when the caller was given one. Falls back to the window global. */
|
|
69
|
+
apiUrl?: string;
|
|
70
|
+
/** `apiKey` prop, when the caller was given one. Falls back to the window global. */
|
|
71
|
+
apiKey?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Opt back in to reporting from inside a cross-origin frame. For a site
|
|
74
|
+
* deliberately distributed as an embed (a widget, a partner-hosted
|
|
75
|
+
* booking or menu page) the frame IS the product, and its traffic is real.
|
|
76
|
+
* Explicit per-site config only — see AnalyticsConfig.allowInFrame. There
|
|
77
|
+
* is deliberately no window global or env var for this: a silent switch
|
|
78
|
+
* that turns cross-tenant tracking back on is the failure mode, not the
|
|
79
|
+
* feature.
|
|
80
|
+
*/
|
|
81
|
+
allowInFrame?: boolean;
|
|
82
|
+
/** Emit the one-time diagnostic when a send is suppressed. */
|
|
83
|
+
debug?: boolean;
|
|
84
|
+
}
|
|
85
|
+
export { isCrossOriginFrame, isFramed, isTopFrameSameOrigin } from '../shared/frame';
|
|
86
|
+
/** Test seam — resets the once-per-document log latch. */
|
|
87
|
+
export declare function __resetSendGate(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Resolve where an analytics call should go, or `null` if it must not happen.
|
|
90
|
+
*
|
|
91
|
+
* Returning `null` is the ONLY "do not send" signal in this module. Callers
|
|
92
|
+
* that set up listeners or scrape the DOM should resolve first and bail on
|
|
93
|
+
* `null`, so a cross-origin frame never even attaches a scroll or click
|
|
94
|
+
* listener — the guard saves the work, not just the request.
|
|
95
|
+
*/
|
|
96
|
+
export declare function resolveAnalyticsTarget(options?: AnalyticsGateOptions): AnalyticsTarget | null;
|
|
97
|
+
/**
|
|
98
|
+
* POST an analytics payload. Resolves the gate itself and no-ops when it
|
|
99
|
+
* says no — so a caller that forgets its own early bail still cannot send
|
|
100
|
+
* from a cross-origin frame. That belt-and-braces is the point: this is the
|
|
101
|
+
* choke point, and it does not rely on every call site remembering.
|
|
102
|
+
*
|
|
103
|
+
* `retries: 0` by default — every analytics endpoint here is non-idempotent
|
|
104
|
+
* from the client's side (a retried page view after a lost response
|
|
105
|
+
* double-counts). Never resolves to a rejected promise; tracking must not
|
|
106
|
+
* break a page.
|
|
107
|
+
*/
|
|
108
|
+
export declare function analyticsSend(path: string, body: unknown, options?: AnalyticsGateOptions & {
|
|
109
|
+
retries?: number;
|
|
110
|
+
method?: string;
|
|
111
|
+
/** Let the request outlive the page (scroll depth flushed on unmount). */
|
|
112
|
+
keepalive?: boolean;
|
|
113
|
+
}): Promise<Response | null>;
|
|
114
|
+
/**
|
|
115
|
+
* Unload-time twin of {@link analyticsSend}, through the keepalive beacon so
|
|
116
|
+
* the credential stays in a header. Gated identically.
|
|
117
|
+
*/
|
|
118
|
+
export declare function analyticsBeacon(path: string, body: unknown, options?: AnalyticsGateOptions): void;
|
|
119
|
+
//# sourceMappingURL=send-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-gate.d.ts","sourceRoot":"","sources":["../../src/analytics/send-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAKH,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAGD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAuBpF,0DAA0D;AAC1D,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,oBAAyB,GACjC,eAAe,GAAG,IAAI,CAmBxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,oBAAoB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAA;CACf,GACL,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAkB1B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,oBAAyB,GACjC,IAAI,CAIN"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The cross-origin-frame guard.
|
|
3
|
+
*
|
|
4
|
+
* A site loaded inside someone else's page must not report traffic against
|
|
5
|
+
* its own Sonor project. This is not hypothetical: on 2026-09-08,
|
|
6
|
+
* `analytics_page_views` held bursts of three views of `/` sharing one
|
|
7
|
+
* session_id and one visitor_id 21-80ms apart with referrer
|
|
8
|
+
* `https://upforge.io/` — the desktop/tablet/mobile frames of one
|
|
9
|
+
* agency-site-kit DeviceTrifolio, across 23 client sites. See send-gate.ts.
|
|
10
|
+
*
|
|
11
|
+
* These tests pin the four cases the guard has to get right, and then pin the
|
|
12
|
+
* structure: ONE place decides, and no module re-forks it.
|
|
13
|
+
*
|
|
14
|
+
* Every case asserts against the real transport with `fetch` stubbed, rather
|
|
15
|
+
* than against the gate's return value alone — "returns null" is not the
|
|
16
|
+
* promise being made to a client whose analytics this pollutes; "no request
|
|
17
|
+
* leaves the browser" is.
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=send-gate.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-gate.test.d.ts","sourceRoot":"","sources":["../../src/analytics/send-gate.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import type { AuthorPageProps } from './types';
|
|
8
|
-
export declare function AuthorPage({ author, posts, basePath }: AuthorPageProps): React.JSX.Element;
|
|
8
|
+
export declare function AuthorPage({ author, posts, basePath, routing }: AuthorPageProps): React.JSX.Element;
|
|
9
9
|
//# sourceMappingURL=AuthorPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorPage.d.ts","sourceRoot":"","sources":["../../src/blog/AuthorPage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"AuthorPage.d.ts","sourceRoot":"","sources":["../../src/blog/AuthorPage.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,SAAS,CAAA;AAmKpE,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,eAAe,qBA+C/E"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { BlogSidebarProps } from './BlogSidebar';
|
|
9
|
+
import type { BlogRoutingOptions } from './routes';
|
|
9
10
|
export interface BlogLayoutProps {
|
|
10
11
|
/** Portal API URL */
|
|
11
12
|
apiUrl?: string;
|
|
@@ -28,6 +29,7 @@ export interface BlogLayoutProps {
|
|
|
28
29
|
maxWidth?: number;
|
|
29
30
|
/** Base URL for blog links */
|
|
30
31
|
basePath?: string;
|
|
32
|
+
routing?: BlogRoutingOptions;
|
|
31
33
|
/** Custom class name */
|
|
32
34
|
className?: string;
|
|
33
35
|
/** Current category (for sidebar highlighting) */
|
|
@@ -35,7 +37,7 @@ export interface BlogLayoutProps {
|
|
|
35
37
|
/** Main content */
|
|
36
38
|
children: React.ReactNode;
|
|
37
39
|
}
|
|
38
|
-
export declare function BlogLayout({ apiUrl, apiKey, layout, showSidebar, sidebarProps, hero, maxWidth, basePath, className, currentCategory, children, }: BlogLayoutProps): Promise<React.JSX.Element>;
|
|
40
|
+
export declare function BlogLayout({ apiUrl, apiKey, layout, showSidebar, sidebarProps, hero, maxWidth, basePath, routing, className, currentCategory, children, }: BlogLayoutProps): Promise<React.JSX.Element>;
|
|
39
41
|
/**
|
|
40
42
|
* Convenience wrapper for a complete blog index page
|
|
41
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogLayout.d.ts","sourceRoot":"","sources":["../../src/blog/BlogLayout.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"BlogLayout.d.ts","sourceRoot":"","sources":["../../src/blog/BlogLayout.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAMlD,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,MAAM,CAAC,EAAE,eAAe,GAAG,cAAc,GAAG,YAAY,CAAA;IACxD,mBAAmB;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IACxC,0BAA0B;IAC1B,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,eAAe,CAAC,EAAE,MAAM,CAAA;KACzB,CAAA;IACD,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,wBAAsB,UAAU,CAAC,EAC/B,MAA4D,EAC5D,MAAwC,EACxC,MAAwB,EACxB,WAAkB,EAClB,YAAiB,EACjB,IAAI,EACJ,QAAe,EACf,QAAQ,EACR,OAAO,EACP,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,eAAe,8BA+FjB;AAMD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;IACtE,+BAA+B;IAC/B,aAAa,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B;AAED,wBAAsB,QAAQ,CAAC,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,EAAE,aAAa,8BAE9E;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;IAC1E,+BAA+B;IAC/B,aAAa,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B;AAED,wBAAsB,YAAY,CAAC,EAAE,aAAa,EAAE,GAAG,WAAW,EAAE,EAAE,iBAAiB,8BAMtF;AAMD,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,qBAAqB;IACrB,aAAa,EAAE,KAAK,CAAC,SAAS,CAAA;CAC/B;AAED,wBAAsB,YAAY,CAAC,EACjC,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,GAAG,WAAW,EACf,EAAE,iBAAiB,8BAYnB"}
|
package/dist/blog/BlogList.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import React from 'react';
|
|
13
13
|
import type { BlogListResult, BlogPost, BlogCategory } from './types';
|
|
14
|
+
import { type BlogRoutingOptions } from './routes';
|
|
14
15
|
export interface BlogListStyles {
|
|
15
16
|
container?: string;
|
|
16
17
|
categoryNav?: string;
|
|
@@ -59,6 +60,7 @@ export interface BlogListServerProps {
|
|
|
59
60
|
showPagination?: boolean;
|
|
60
61
|
className?: string;
|
|
61
62
|
basePath?: string;
|
|
63
|
+
routing?: BlogRoutingOptions;
|
|
62
64
|
styles?: BlogListStyles;
|
|
63
65
|
unstyled?: boolean;
|
|
64
66
|
renderPost?: (post: BlogPost) => React.ReactNode;
|
|
@@ -68,5 +70,5 @@ export interface BlogListServerProps {
|
|
|
68
70
|
categories: BlogCategory[];
|
|
69
71
|
}) => React.ReactNode;
|
|
70
72
|
}
|
|
71
|
-
export declare function BlogList({ apiUrl, apiKey, category, tag, author, featured, search, cluster, page, perPage, orderBy, order, showCategoryFilter, showPagination, className, basePath, styles, unstyled, renderPost, children, }: BlogListServerProps): Promise<string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined>;
|
|
73
|
+
export declare function BlogList({ apiUrl, apiKey, category, tag, author, featured, search, cluster, page, perPage, orderBy, order, showCategoryFilter, showPagination, className, basePath, routing, styles, unstyled, renderPost, children, }: BlogListServerProps): Promise<string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined>;
|
|
72
74
|
//# sourceMappingURL=BlogList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogList.d.ts","sourceRoot":"","sources":["../../src/blog/BlogList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"BlogList.d.ts","sourceRoot":"","sources":["../../src/blog/BlogList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAGrE,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAMpE,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAgHD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,GAAG,YAAY,CAAA;IACjD,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAA;IAChD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,KAAK,EAAE,QAAQ,EAAE,CAAA;QACjB,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAA;QACxC,UAAU,EAAE,YAAY,EAAE,CAAA;KAC3B,KAAK,KAAK,CAAC,SAAS,CAAA;CACtB;AAED,wBAAsB,QAAQ,CAAC,EAC7B,MAA4D,EAC5D,MAAwC,EACxC,QAAQ,EACR,GAAG,EACH,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,IAAQ,EACR,OAAY,EACZ,OAAwB,EACxB,KAAc,EACd,kBAA0B,EAC1B,cAAqB,EACrB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAW,EACX,QAAgB,EAChB,UAAU,EACV,QAAQ,GACT,EAAE,mBAAmB,kHA0FrB"}
|
package/dist/blog/BlogPost.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import React from 'react';
|
|
14
14
|
import type { BlogPost as BlogPostType, TocItem } from './types';
|
|
15
|
+
import { type BlogRoutingOptions } from './routes';
|
|
15
16
|
export interface BlogPostStyles {
|
|
16
17
|
article?: string;
|
|
17
18
|
header?: string;
|
|
@@ -53,6 +54,7 @@ export interface BlogPostServerProps {
|
|
|
53
54
|
relatedCount?: number;
|
|
54
55
|
showAuthor?: boolean;
|
|
55
56
|
basePath?: string;
|
|
57
|
+
routing?: BlogRoutingOptions;
|
|
56
58
|
className?: string;
|
|
57
59
|
styles?: BlogPostStyles;
|
|
58
60
|
unstyled?: boolean;
|
|
@@ -63,5 +65,5 @@ export interface BlogPostServerProps {
|
|
|
63
65
|
relatedPosts: BlogPostType[];
|
|
64
66
|
}) => React.ReactNode;
|
|
65
67
|
}
|
|
66
|
-
export declare function BlogPost({ apiUrl, apiKey, slug, showToc, showRelated, relatedCount, showAuthor, basePath, className, styles, unstyled, siteUrl, children, }: BlogPostServerProps): Promise<React.JSX.Element | null>;
|
|
68
|
+
export declare function BlogPost({ apiUrl, apiKey, slug, showToc, showRelated, relatedCount, showAuthor, basePath, routing, className, styles, unstyled, siteUrl, children, }: BlogPostServerProps): Promise<React.JSX.Element | null>;
|
|
67
69
|
//# sourceMappingURL=BlogPost.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogPost.d.ts","sourceRoot":"","sources":["../../src/blog/BlogPost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,OAAO,EAA0D,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"BlogPost.d.ts","sourceRoot":"","sources":["../../src/blog/BlogPost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,OAAO,EAA0D,MAAM,SAAS,CAAA;AAOxH,OAAO,EAAsC,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAqEtF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAgED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QACjB,IAAI,EAAE,YAAY,CAAA;QAClB,eAAe,EAAE,OAAO,EAAE,CAAA;QAC1B,YAAY,EAAE,YAAY,EAAE,CAAA;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAA;CACtB;AAgBD,wBAAsB,QAAQ,CAAC,EAC7B,MAA4D,EAC5D,MAAwC,EACxC,IAAI,EACJ,OAAc,EACd,WAAkB,EAClB,YAAgB,EAChB,UAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAW,EACX,QAAgB,EAChB,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB,qCAiOrB"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* tags, newsletter signup, and custom widgets.
|
|
6
6
|
*/
|
|
7
7
|
import React from 'react';
|
|
8
|
+
import { type BlogRoutingOptions } from './routes';
|
|
8
9
|
export interface BlogSidebarProps {
|
|
9
10
|
/** Portal API URL */
|
|
10
11
|
apiUrl?: string;
|
|
@@ -22,6 +23,7 @@ export interface BlogSidebarProps {
|
|
|
22
23
|
showSearch?: boolean;
|
|
23
24
|
/** Base URL for blog links */
|
|
24
25
|
basePath?: string;
|
|
26
|
+
routing?: BlogRoutingOptions;
|
|
25
27
|
/** Custom class name */
|
|
26
28
|
className?: string;
|
|
27
29
|
/** Current category filter (for highlighting) */
|
|
@@ -29,5 +31,5 @@ export interface BlogSidebarProps {
|
|
|
29
31
|
/** Additional widgets to render */
|
|
30
32
|
children?: React.ReactNode;
|
|
31
33
|
}
|
|
32
|
-
export declare function BlogSidebar({ apiUrl, apiKey, showCategories, showRecentPosts, recentPostsCount, showTags, showSearch, basePath, className, currentCategory, children, }: BlogSidebarProps): Promise<React.JSX.Element | null>;
|
|
34
|
+
export declare function BlogSidebar({ apiUrl, apiKey, showCategories, showRecentPosts, recentPostsCount, showTags, showSearch, basePath, routing, className, currentCategory, children, }: BlogSidebarProps): Promise<React.JSX.Element | null>;
|
|
33
35
|
//# sourceMappingURL=BlogSidebar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogSidebar.d.ts","sourceRoot":"","sources":["../../src/blog/BlogSidebar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"BlogSidebar.d.ts","sourceRoot":"","sources":["../../src/blog/BlogSidebar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAiEpE,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yBAAyB;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,wBAAsB,WAAW,CAAC,EAChC,MAA4D,EAC5D,MAAwC,EACxC,cAAqB,EACrB,eAAsB,EACtB,gBAAoB,EACpB,QAAe,EACf,UAAiB,EACjB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE,gBAAgB,qCA2ClB"}
|
|
@@ -11,12 +11,14 @@
|
|
|
11
11
|
* Ships with `.sk-cluster-landing-*` scoped styles.
|
|
12
12
|
*/
|
|
13
13
|
import React from 'react';
|
|
14
|
+
import { type BlogRoutingOptions } from './routes';
|
|
14
15
|
import type { TopicCluster } from './types';
|
|
15
16
|
export interface ClusterLandingPageProps {
|
|
16
17
|
/** Cluster slug to fetch */
|
|
17
18
|
slug: string;
|
|
18
19
|
/** Base path for blog URLs (default: /blog) */
|
|
19
20
|
basePath?: string;
|
|
21
|
+
routing?: BlogRoutingOptions;
|
|
20
22
|
/**
|
|
21
23
|
* Include each article's own category segment in its URL:
|
|
22
24
|
* {basePath}/{category}/{slug}. Enable on sites whose blog routes are
|
|
@@ -33,5 +35,5 @@ export interface ClusterLandingPageProps {
|
|
|
33
35
|
cluster: TopicCluster;
|
|
34
36
|
}) => React.ReactNode;
|
|
35
37
|
}
|
|
36
|
-
export declare function ClusterLandingPage({ slug, basePath, categoryInPath, unstyled, className, children, }: ClusterLandingPageProps): Promise<string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined>;
|
|
38
|
+
export declare function ClusterLandingPage({ slug, basePath, routing, categoryInPath, unstyled, className, children, }: ClusterLandingPageProps): Promise<string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode> | null | undefined>;
|
|
37
39
|
//# sourceMappingURL=ClusterLandingPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterLandingPage.d.ts","sourceRoot":"","sources":["../../src/blog/ClusterLandingPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ClusterLandingPage.d.ts","sourceRoot":"","sources":["../../src/blog/ClusterLandingPage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AAiHrD,MAAM,WAAW,uBAAuB;IACtC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,YAAY,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;CACjE;AAED,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,cAAsB,EACtB,QAAgB,EAChB,SAAS,EACT,QAAQ,GACT,EAAE,uBAAuB,kHAsHzB"}
|
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import React from 'react';
|
|
12
12
|
import type { ClusterNavigation as ClusterNavigationType } from './types';
|
|
13
|
+
import { type BlogRoutingOptions } from './routes';
|
|
13
14
|
export interface ClusterNavigationProps {
|
|
14
15
|
/** Cluster navigation data */
|
|
15
16
|
navigation: ClusterNavigationType;
|
|
16
17
|
/** Base path for blog URLs (default: /blog) */
|
|
17
18
|
basePath?: string;
|
|
19
|
+
routing?: BlogRoutingOptions;
|
|
18
20
|
/**
|
|
19
21
|
* Fallback category slug for URL building (optional). Each linked article's
|
|
20
22
|
* OWN category takes precedence when present — applying one category to
|
|
@@ -29,5 +31,5 @@ export interface ClusterNavigationProps {
|
|
|
29
31
|
/** Custom class name */
|
|
30
32
|
className?: string;
|
|
31
33
|
}
|
|
32
|
-
export declare function ClusterNavigation({ navigation, basePath, category, trailingSlash, unstyled, className, }: ClusterNavigationProps): React.JSX.Element | null;
|
|
34
|
+
export declare function ClusterNavigation({ navigation, basePath, routing, category, trailingSlash, unstyled, className, }: ClusterNavigationProps): React.JSX.Element | null;
|
|
33
35
|
//# sourceMappingURL=ClusterNavigation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterNavigation.d.ts","sourceRoot":"","sources":["../../src/blog/ClusterNavigation.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,SAAS,CAAA;AA+
|
|
1
|
+
{"version":3,"file":"ClusterNavigation.d.ts","sourceRoot":"","sources":["../../src/blog/ClusterNavigation.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,SAAS,CAAA;AACzE,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AA+FpE,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,UAAU,EAAE,qBAAqB,CAAA;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAqB,EACrB,QAAgB,EAChB,SAAS,GACV,EAAE,sBAAsB,4BAoDxB"}
|
|
@@ -5,14 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import React from 'react';
|
|
7
7
|
import type { BlogPost } from './types';
|
|
8
|
+
import { type BlogRoutingOptions } from './routes';
|
|
8
9
|
interface RelatedPostsServerProps {
|
|
9
10
|
apiUrl?: string;
|
|
10
11
|
apiKey?: string;
|
|
11
12
|
currentPostId: string;
|
|
12
13
|
limit?: number;
|
|
13
14
|
className?: string;
|
|
15
|
+
basePath?: string;
|
|
16
|
+
routing?: BlogRoutingOptions;
|
|
14
17
|
renderItem?: (post: BlogPost) => React.ReactNode;
|
|
15
18
|
}
|
|
16
|
-
export declare function RelatedPosts({ apiUrl, apiKey, currentPostId, limit, className, renderItem, }: RelatedPostsServerProps): Promise<React.JSX.Element | null>;
|
|
19
|
+
export declare function RelatedPosts({ apiUrl, apiKey, currentPostId, limit, className, basePath, routing, renderItem, }: RelatedPostsServerProps): Promise<React.JSX.Element | null>;
|
|
17
20
|
export {};
|
|
18
21
|
//# sourceMappingURL=RelatedPosts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelatedPosts.d.ts","sourceRoot":"","sources":["../../src/blog/RelatedPosts.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"RelatedPosts.d.ts","sourceRoot":"","sources":["../../src/blog/RelatedPosts.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE1D,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AA2CpE,UAAU,uBAAuB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAA;CACjD;AAED,wBAAsB,YAAY,CAAC,EACjC,MAA4D,EAC5D,MAAwC,EACxC,aAAa,EACb,KAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,UAAU,GACX,EAAE,uBAAuB,qCAkDzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artwork-components.test.d.ts","sourceRoot":"","sources":["../../src/blog/artwork-components.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
import type { BlogPost } from './types';
|
|
3
|
+
export interface BlogArtwork {
|
|
4
|
+
src: string | undefined;
|
|
5
|
+
alt: string;
|
|
6
|
+
composed: boolean;
|
|
7
|
+
}
|
|
8
|
+
type ArtworkSource = Pick<BlogPost, 'title' | 'featured_image' | 'featured_image_alt' | 'editorial_image' | 'editorial_image_alt'>;
|
|
9
|
+
/** Single source of truth for article artwork versus complete promotional cards. */
|
|
10
|
+
export declare function resolveBlogArtwork(post: ArtworkSource, placement?: 'article' | 'card'): BlogArtwork;
|
|
11
|
+
/** Preserve generated text and graphics across every stock card surface. */
|
|
12
|
+
export declare function blogArtworkImageStyle(artwork: BlogArtwork): CSSProperties | undefined;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=artwork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artwork.d.ts","sourceRoot":"","sources":["../../src/blog/artwork.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEvC,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,iBAAiB,GAAG,qBAAqB,CAAC,CAAA;AAElI,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,GAAE,SAAS,GAAG,MAAe,GAAG,WAAW,CAc3G;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAIrF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artwork.test.d.ts","sourceRoot":"","sources":["../../src/blog/artwork.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blog-styles.d.ts","sourceRoot":"","sources":["../../src/blog/blog-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"blog-styles.d.ts","sourceRoot":"","sources":["../../src/blog/blog-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,eAAO,MAAM,WAAW,QAuZhB,CAAA;AAMR,eAAO,MAAM,WAAW,QAyKhB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-rendered table scrolling. Keep the author's table markup intact so
|
|
3
|
+
* captions, header associations, links and table semantics survive unchanged.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Single source of truth for default blog table wrappers. Safe to call twice;
|
|
7
|
+
* already wrapped tables and HTML examples are left alone. This is a layout
|
|
8
|
+
* transform, not an HTML sanitizer: content still follows the host's trust policy.
|
|
9
|
+
*/
|
|
10
|
+
export declare function wrapBlogTables(html: string): string;
|
|
11
|
+
/** Native overflow only when content needs it; small tables retain their layout. */
|
|
12
|
+
export declare const blogTableCss: string;
|
|
13
|
+
//# sourceMappingURL=blog-tables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-tables.d.ts","sourceRoot":"","sources":["../../src/blog/blog-tables.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA2DH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkDnD;AAED,oFAAoF;AACpF,eAAO,MAAM,YAAY,QAuCjB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blog-tables.test.d.ts","sourceRoot":"","sources":["../../src/blog/blog-tables.test.ts"],"names":[],"mappings":""}
|
package/dist/blog/index.d.ts
CHANGED
|
@@ -77,5 +77,8 @@ export type { ClusterNavigationProps } from './ClusterNavigation';
|
|
|
77
77
|
*/
|
|
78
78
|
export type { ClusterLandingPageProps } from './ClusterLandingPage';
|
|
79
79
|
export * from './types';
|
|
80
|
+
export { blogCategorySlug, createBlogRoutes, resolveBlogPostUrl, resolveBlogUrl } from './routes';
|
|
81
|
+
export type { BlogRoutePost, BlogRoutingOptions } from './routes';
|
|
82
|
+
export { resolveBlogArtwork } from './artwork';
|
|
80
83
|
export { addExternalLinkTargets, normalizeSiteHost, resolveBlogSiteUrl, } from './processBlogHtml';
|
|
81
84
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/blog/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blog/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC/E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAExG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAGnE,cAAc,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/blog/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC/E,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAExG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;;;;;;;;;;;;;;GAeG;AACH,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAGnE,cAAc,SAAS,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACjG,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAG9C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA"}
|