@se-studio/core-ui 0.0.0-next16-20260822103555
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/ANALYTICS.md +160 -0
- package/CHANGELOG.md +2565 -0
- package/CMS_INFRASTRUCTURE.md +370 -0
- package/CONSENT.md +121 -0
- package/README.md +638 -0
- package/dist/CmsRendererConfig.d.ts +259 -0
- package/dist/CmsRendererConfig.d.ts.map +1 -0
- package/dist/CmsRendererConfig.js +2 -0
- package/dist/CmsRendererConfig.js.map +1 -0
- package/dist/__mocks__/server-only.d.ts +2 -0
- package/dist/__mocks__/server-only.d.ts.map +1 -0
- package/dist/__mocks__/server-only.js +2 -0
- package/dist/__mocks__/server-only.js.map +1 -0
- package/dist/analytics/AnalyticsPageTracker.d.ts +11 -0
- package/dist/analytics/AnalyticsPageTracker.d.ts.map +1 -0
- package/dist/analytics/AnalyticsPageTracker.js +26 -0
- package/dist/analytics/AnalyticsPageTracker.js.map +1 -0
- package/dist/analytics/AnalyticsProvider.d.ts +18 -0
- package/dist/analytics/AnalyticsProvider.d.ts.map +1 -0
- package/dist/analytics/AnalyticsProvider.js +48 -0
- package/dist/analytics/AnalyticsProvider.js.map +1 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts +13 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.js +35 -0
- package/dist/analytics/adapters/CompositeAnalyticsAdapter.js.map +1 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.d.ts +20 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.js +35 -0
- package/dist/analytics/adapters/ConsentAwareAdapter.js.map +1 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts +12 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js +22 -0
- package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js.map +1 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts +53 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts.map +1 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.js +134 -0
- package/dist/analytics/adapters/GoogleTagManagerAdapter.js.map +1 -0
- package/dist/analytics/adapters/index.d.ts +5 -0
- package/dist/analytics/adapters/index.d.ts.map +1 -0
- package/dist/analytics/adapters/index.js +5 -0
- package/dist/analytics/adapters/index.js.map +1 -0
- package/dist/analytics/types.d.ts +42 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +2 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/analytics/useAnalytics.d.ts +44 -0
- package/dist/analytics/useAnalytics.d.ts.map +1 -0
- package/dist/analytics/useAnalytics.js +69 -0
- package/dist/analytics/useAnalytics.js.map +1 -0
- package/dist/analytics/video/classifySeek.d.ts +15 -0
- package/dist/analytics/video/classifySeek.d.ts.map +1 -0
- package/dist/analytics/video/classifySeek.js +32 -0
- package/dist/analytics/video/classifySeek.js.map +1 -0
- package/dist/analytics/video/createVideoEngagementSession.d.ts +51 -0
- package/dist/analytics/video/createVideoEngagementSession.d.ts.map +1 -0
- package/dist/analytics/video/createVideoEngagementSession.js +225 -0
- package/dist/analytics/video/createVideoEngagementSession.js.map +1 -0
- package/dist/analytics/video/index.d.ts +6 -0
- package/dist/analytics/video/index.d.ts.map +1 -0
- package/dist/analytics/video/index.js +6 -0
- package/dist/analytics/video/index.js.map +1 -0
- package/dist/analytics/video/loadYouTubeIframeApi.d.ts +50 -0
- package/dist/analytics/video/loadYouTubeIframeApi.d.ts.map +1 -0
- package/dist/analytics/video/loadYouTubeIframeApi.js +52 -0
- package/dist/analytics/video/loadYouTubeIframeApi.js.map +1 -0
- package/dist/analytics/video/useHtml5VideoEngagement.d.ts +8 -0
- package/dist/analytics/video/useHtml5VideoEngagement.d.ts.map +1 -0
- package/dist/analytics/video/useHtml5VideoEngagement.js +67 -0
- package/dist/analytics/video/useHtml5VideoEngagement.js.map +1 -0
- package/dist/analytics/video/useVideoEngagement.d.ts +19 -0
- package/dist/analytics/video/useVideoEngagement.d.ts.map +1 -0
- package/dist/analytics/video/useVideoEngagement.js +80 -0
- package/dist/analytics/video/useVideoEngagement.js.map +1 -0
- package/dist/analytics/video/videoEngagementTypes.d.ts +52 -0
- package/dist/analytics/video/videoEngagementTypes.d.ts.map +1 -0
- package/dist/analytics/video/videoEngagementTypes.js +45 -0
- package/dist/analytics/video/videoEngagementTypes.js.map +1 -0
- package/dist/app-helpers.d.ts +196 -0
- package/dist/app-helpers.d.ts.map +1 -0
- package/dist/app-helpers.js +322 -0
- package/dist/app-helpers.js.map +1 -0
- package/dist/cmsRegistration.d.ts +302 -0
- package/dist/cmsRegistration.d.ts.map +1 -0
- package/dist/cmsRegistration.js +242 -0
- package/dist/cmsRegistration.js.map +1 -0
- package/dist/components/Animation.d.ts +3 -0
- package/dist/components/Animation.d.ts.map +1 -0
- package/dist/components/Animation.js +2 -0
- package/dist/components/Animation.js.map +1 -0
- package/dist/components/AnimationComponent.d.ts +9 -0
- package/dist/components/AnimationComponent.d.ts.map +1 -0
- package/dist/components/AnimationComponent.js +18 -0
- package/dist/components/AnimationComponent.js.map +1 -0
- package/dist/components/ClientMonitor.d.ts +7 -0
- package/dist/components/ClientMonitor.d.ts.map +1 -0
- package/dist/components/ClientMonitor.js +368 -0
- package/dist/components/ClientMonitor.js.map +1 -0
- package/dist/components/CmsCollection.d.ts +68 -0
- package/dist/components/CmsCollection.d.ts.map +1 -0
- package/dist/components/CmsCollection.js +68 -0
- package/dist/components/CmsCollection.js.map +1 -0
- package/dist/components/CmsComponent.d.ts +68 -0
- package/dist/components/CmsComponent.d.ts.map +1 -0
- package/dist/components/CmsComponent.js +68 -0
- package/dist/components/CmsComponent.js.map +1 -0
- package/dist/components/CmsContent.d.ts +105 -0
- package/dist/components/CmsContent.d.ts.map +1 -0
- package/dist/components/CmsContent.js +200 -0
- package/dist/components/CmsContent.js.map +1 -0
- package/dist/components/CmsConversionErrors.d.ts +8 -0
- package/dist/components/CmsConversionErrors.d.ts.map +1 -0
- package/dist/components/CmsConversionErrors.js +51 -0
- package/dist/components/CmsConversionErrors.js.map +1 -0
- package/dist/components/CmsDataError.d.ts +14 -0
- package/dist/components/CmsDataError.d.ts.map +1 -0
- package/dist/components/CmsDataError.js +7 -0
- package/dist/components/CmsDataError.js.map +1 -0
- package/dist/components/CmsDevLayout.d.ts +23 -0
- package/dist/components/CmsDevLayout.d.ts.map +1 -0
- package/dist/components/CmsDevLayout.js +26 -0
- package/dist/components/CmsDevLayout.js.map +1 -0
- package/dist/components/CmsEmbeddedContent.d.ts +10 -0
- package/dist/components/CmsEmbeddedContent.d.ts.map +1 -0
- package/dist/components/CmsEmbeddedContent.js +51 -0
- package/dist/components/CmsEmbeddedContent.js.map +1 -0
- package/dist/components/CmsExternalComponent.d.ts +63 -0
- package/dist/components/CmsExternalComponent.d.ts.map +1 -0
- package/dist/components/CmsExternalComponent.js +68 -0
- package/dist/components/CmsExternalComponent.js.map +1 -0
- package/dist/components/CmsRoutesLayout.d.ts +16 -0
- package/dist/components/CmsRoutesLayout.d.ts.map +1 -0
- package/dist/components/CmsRoutesLayout.js +17 -0
- package/dist/components/CmsRoutesLayout.js.map +1 -0
- package/dist/components/DefaultExternalVideoPlayButton.d.ts +3 -0
- package/dist/components/DefaultExternalVideoPlayButton.d.ts.map +1 -0
- package/dist/components/DefaultExternalVideoPlayButton.js +6 -0
- package/dist/components/DefaultExternalVideoPlayButton.js.map +1 -0
- package/dist/components/DotLottieAnimationComponent.d.ts +16 -0
- package/dist/components/DotLottieAnimationComponent.d.ts.map +1 -0
- package/dist/components/DotLottieAnimationComponent.js +88 -0
- package/dist/components/DotLottieAnimationComponent.js.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +19 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.js +32 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/ExternalVideoComponent.d.ts +9 -0
- package/dist/components/ExternalVideoComponent.d.ts.map +1 -0
- package/dist/components/ExternalVideoComponent.js +39 -0
- package/dist/components/ExternalVideoComponent.js.map +1 -0
- package/dist/components/ExternalVimeoEmbed.d.ts +12 -0
- package/dist/components/ExternalVimeoEmbed.d.ts.map +1 -0
- package/dist/components/ExternalVimeoEmbed.js +211 -0
- package/dist/components/ExternalVimeoEmbed.js.map +1 -0
- package/dist/components/ExternalYouTubeEmbed.d.ts +9 -0
- package/dist/components/ExternalYouTubeEmbed.d.ts.map +1 -0
- package/dist/components/ExternalYouTubeEmbed.js +220 -0
- package/dist/components/ExternalYouTubeEmbed.js.map +1 -0
- package/dist/components/HeroLoopVideo.d.ts +13 -0
- package/dist/components/HeroLoopVideo.d.ts.map +1 -0
- package/dist/components/HeroLoopVideo.js +146 -0
- package/dist/components/HeroLoopVideo.js.map +1 -0
- package/dist/components/HtmlComponent.d.ts +21 -0
- package/dist/components/HtmlComponent.d.ts.map +1 -0
- package/dist/components/HtmlComponent.js +34 -0
- package/dist/components/HtmlComponent.js.map +1 -0
- package/dist/components/HtmlComponentScript.d.ts +12 -0
- package/dist/components/HtmlComponentScript.d.ts.map +1 -0
- package/dist/components/HtmlComponentScript.js +12 -0
- package/dist/components/HtmlComponentScript.js.map +1 -0
- package/dist/components/ImageComponent.d.ts +7 -0
- package/dist/components/ImageComponent.d.ts.map +1 -0
- package/dist/components/ImageComponent.js +20 -0
- package/dist/components/ImageComponent.js.map +1 -0
- package/dist/components/ImageKitClientVideo.d.ts +16 -0
- package/dist/components/ImageKitClientVideo.d.ts.map +1 -0
- package/dist/components/ImageKitClientVideo.js +211 -0
- package/dist/components/ImageKitClientVideo.js.map +1 -0
- package/dist/components/ImageKitHlsVideoClient.d.ts +21 -0
- package/dist/components/ImageKitHlsVideoClient.d.ts.map +1 -0
- package/dist/components/ImageKitHlsVideoClient.js +167 -0
- package/dist/components/ImageKitHlsVideoClient.js.map +1 -0
- package/dist/components/LazyAnimation.d.ts +16 -0
- package/dist/components/LazyAnimation.d.ts.map +1 -0
- package/dist/components/LazyAnimation.js +90 -0
- package/dist/components/LazyAnimation.js.map +1 -0
- package/dist/components/LazyVideo.d.ts +19 -0
- package/dist/components/LazyVideo.d.ts.map +1 -0
- package/dist/components/LazyVideo.js +134 -0
- package/dist/components/LazyVideo.js.map +1 -0
- package/dist/components/LocalVideo.d.ts +10 -0
- package/dist/components/LocalVideo.d.ts.map +1 -0
- package/dist/components/LocalVideo.js +66 -0
- package/dist/components/LocalVideo.js.map +1 -0
- package/dist/components/LocalVideoPlayChrome.d.ts +20 -0
- package/dist/components/LocalVideoPlayChrome.d.ts.map +1 -0
- package/dist/components/LocalVideoPlayChrome.js +22 -0
- package/dist/components/LocalVideoPlayChrome.js.map +1 -0
- package/dist/components/LocalVideoPlayOverlay.d.ts +19 -0
- package/dist/components/LocalVideoPlayOverlay.d.ts.map +1 -0
- package/dist/components/LocalVideoPlayOverlay.js +49 -0
- package/dist/components/LocalVideoPlayOverlay.js.map +1 -0
- package/dist/components/PictureComponent.d.ts +7 -0
- package/dist/components/PictureComponent.d.ts.map +1 -0
- package/dist/components/PictureComponent.js +29 -0
- package/dist/components/PictureComponent.js.map +1 -0
- package/dist/components/Preview.d.ts +2 -0
- package/dist/components/Preview.d.ts.map +1 -0
- package/dist/components/Preview.js +52 -0
- package/dist/components/Preview.js.map +1 -0
- package/dist/components/StructuredData.d.ts +20 -0
- package/dist/components/StructuredData.d.ts.map +1 -0
- package/dist/components/StructuredData.js +116 -0
- package/dist/components/StructuredData.js.map +1 -0
- package/dist/components/SvgComponent.d.ts +7 -0
- package/dist/components/SvgComponent.d.ts.map +1 -0
- package/dist/components/SvgComponent.js +10 -0
- package/dist/components/SvgComponent.js.map +1 -0
- package/dist/components/SvgIconComponent.d.ts +20 -0
- package/dist/components/SvgIconComponent.d.ts.map +1 -0
- package/dist/components/SvgIconComponent.js +23 -0
- package/dist/components/SvgIconComponent.js.map +1 -0
- package/dist/components/SvgImageComponent.d.ts +7 -0
- package/dist/components/SvgImageComponent.d.ts.map +1 -0
- package/dist/components/SvgImageComponent.js +10 -0
- package/dist/components/SvgImageComponent.js.map +1 -0
- package/dist/components/SvgSpriteSheet.d.ts +24 -0
- package/dist/components/SvgSpriteSheet.d.ts.map +1 -0
- package/dist/components/SvgSpriteSheet.js +37 -0
- package/dist/components/SvgSpriteSheet.js.map +1 -0
- package/dist/components/Video.d.ts +11 -0
- package/dist/components/Video.d.ts.map +1 -0
- package/dist/components/Video.js +2 -0
- package/dist/components/Video.js.map +1 -0
- package/dist/components/VideoComponent.d.ts +10 -0
- package/dist/components/VideoComponent.d.ts.map +1 -0
- package/dist/components/VideoComponent.js +22 -0
- package/dist/components/VideoComponent.js.map +1 -0
- package/dist/components/Visual.d.ts +43 -0
- package/dist/components/Visual.d.ts.map +1 -0
- package/dist/components/Visual.js +60 -0
- package/dist/components/Visual.js.map +1 -0
- package/dist/components/VisualComponent.d.ts +83 -0
- package/dist/components/VisualComponent.d.ts.map +1 -0
- package/dist/components/VisualComponent.js +136 -0
- package/dist/components/VisualComponent.js.map +1 -0
- package/dist/components/banner/BannerClient.d.ts +13 -0
- package/dist/components/banner/BannerClient.d.ts.map +1 -0
- package/dist/components/banner/BannerClient.js +38 -0
- package/dist/components/banner/BannerClient.js.map +1 -0
- package/dist/components/banner/BannerManager.d.ts +26 -0
- package/dist/components/banner/BannerManager.d.ts.map +1 -0
- package/dist/components/banner/BannerManager.js +35 -0
- package/dist/components/banner/BannerManager.js.map +1 -0
- package/dist/components/banner/BannerTargeting.d.ts +20 -0
- package/dist/components/banner/BannerTargeting.d.ts.map +1 -0
- package/dist/components/banner/BannerTargeting.js +204 -0
- package/dist/components/banner/BannerTargeting.js.map +1 -0
- package/dist/components/banner/bannerVisibility.d.ts +20 -0
- package/dist/components/banner/bannerVisibility.d.ts.map +1 -0
- package/dist/components/banner/bannerVisibility.js +73 -0
- package/dist/components/banner/bannerVisibility.js.map +1 -0
- package/dist/components/clientMonitorVideos.d.ts +6 -0
- package/dist/components/clientMonitorVideos.d.ts.map +1 -0
- package/dist/components/clientMonitorVideos.js +116 -0
- package/dist/components/clientMonitorVideos.js.map +1 -0
- package/dist/components/dotlottieWasm.d.ts +19 -0
- package/dist/components/dotlottieWasm.d.ts.map +1 -0
- package/dist/components/dotlottieWasm.js +62 -0
- package/dist/components/dotlottieWasm.js.map +1 -0
- package/dist/components/heroLoop.d.ts +22 -0
- package/dist/components/heroLoop.d.ts.map +1 -0
- package/dist/components/heroLoop.js +24 -0
- package/dist/components/heroLoop.js.map +1 -0
- package/dist/components/svg.d.ts +3 -0
- package/dist/components/svg.d.ts.map +1 -0
- package/dist/components/svg.js +64 -0
- package/dist/components/svg.js.map +1 -0
- package/dist/context/ExternalVideoPlayButtonContext.d.ts +7 -0
- package/dist/context/ExternalVideoPlayButtonContext.d.ts.map +1 -0
- package/dist/context/ExternalVideoPlayButtonContext.js +11 -0
- package/dist/context/ExternalVideoPlayButtonContext.js.map +1 -0
- package/dist/elements/RtfOrString.d.ts +26 -0
- package/dist/elements/RtfOrString.d.ts.map +1 -0
- package/dist/elements/RtfOrString.js +13 -0
- package/dist/elements/RtfOrString.js.map +1 -0
- package/dist/elements/TrackedLink.d.ts +25 -0
- package/dist/elements/TrackedLink.d.ts.map +1 -0
- package/dist/elements/TrackedLink.js +96 -0
- package/dist/elements/TrackedLink.js.map +1 -0
- package/dist/elements/UtmLink.d.ts +7 -0
- package/dist/elements/UtmLink.d.ts.map +1 -0
- package/dist/elements/UtmLink.js +24 -0
- package/dist/elements/UtmLink.js.map +1 -0
- package/dist/framework/BackgroundMedia.d.ts +12 -0
- package/dist/framework/BackgroundMedia.d.ts.map +1 -0
- package/dist/framework/BackgroundMedia.js +23 -0
- package/dist/framework/BackgroundMedia.js.map +1 -0
- package/dist/framework/ComponentErrorIndicator.d.ts +12 -0
- package/dist/framework/ComponentErrorIndicator.d.ts.map +1 -0
- package/dist/framework/ComponentErrorIndicator.js +29 -0
- package/dist/framework/ComponentErrorIndicator.js.map +1 -0
- package/dist/framework/ContainedVisual.d.ts +12 -0
- package/dist/framework/ContainedVisual.d.ts.map +1 -0
- package/dist/framework/ContainedVisual.js +14 -0
- package/dist/framework/ContainedVisual.js.map +1 -0
- package/dist/framework/ResponsiveVisual.d.ts +14 -0
- package/dist/framework/ResponsiveVisual.d.ts.map +1 -0
- package/dist/framework/ResponsiveVisual.js +14 -0
- package/dist/framework/ResponsiveVisual.js.map +1 -0
- package/dist/framework/componentErrors.d.ts +19 -0
- package/dist/framework/componentErrors.d.ts.map +1 -0
- package/dist/framework/componentErrors.js +31 -0
- package/dist/framework/componentErrors.js.map +1 -0
- package/dist/hooks/useClickTracking.d.ts +58 -0
- package/dist/hooks/useClickTracking.d.ts.map +1 -0
- package/dist/hooks/useClickTracking.js +48 -0
- package/dist/hooks/useClickTracking.js.map +1 -0
- package/dist/hooks/useDocumentVisible.d.ts +2 -0
- package/dist/hooks/useDocumentVisible.d.ts.map +1 -0
- package/dist/hooks/useDocumentVisible.js +17 -0
- package/dist/hooks/useDocumentVisible.js.map +1 -0
- package/dist/hooks/visibility.d.ts +14 -0
- package/dist/hooks/visibility.d.ts.map +1 -0
- package/dist/hooks/visibility.js +122 -0
- package/dist/hooks/visibility.js.map +1 -0
- package/dist/index.d.ts +134 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +120 -0
- package/dist/index.js.map +1 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.d.ts +9 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.d.ts.map +1 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.js +99 -0
- package/dist/media-library/MediaLibraryAnimationPlayer.js.map +1 -0
- package/dist/media-library/MediaLibraryGrid.d.ts +5 -0
- package/dist/media-library/MediaLibraryGrid.d.ts.map +1 -0
- package/dist/media-library/MediaLibraryGrid.js +88 -0
- package/dist/media-library/MediaLibraryGrid.js.map +1 -0
- package/dist/media-library/MediaLibraryPage.d.ts +17 -0
- package/dist/media-library/MediaLibraryPage.d.ts.map +1 -0
- package/dist/media-library/MediaLibraryPage.js +30 -0
- package/dist/media-library/MediaLibraryPage.js.map +1 -0
- package/dist/media-library/index.d.ts +4 -0
- package/dist/media-library/index.d.ts.map +1 -0
- package/dist/media-library/index.js +4 -0
- package/dist/media-library/index.js.map +1 -0
- package/dist/media-library/types.d.ts +8 -0
- package/dist/media-library/types.d.ts.map +1 -0
- package/dist/media-library/types.js +12 -0
- package/dist/media-library/types.js.map +1 -0
- package/dist/route-handlers/createCmsTxtHandler.d.ts +19 -0
- package/dist/route-handlers/createCmsTxtHandler.d.ts.map +1 -0
- package/dist/route-handlers/createCmsTxtHandler.js +154 -0
- package/dist/route-handlers/createCmsTxtHandler.js.map +1 -0
- package/dist/route-handlers/createDiscoveryHandler.d.ts +67 -0
- package/dist/route-handlers/createDiscoveryHandler.d.ts.map +1 -0
- package/dist/route-handlers/createDiscoveryHandler.js +190 -0
- package/dist/route-handlers/createDiscoveryHandler.js.map +1 -0
- package/dist/route-handlers/createGuidelinesHandler.d.ts +16 -0
- package/dist/route-handlers/createGuidelinesHandler.d.ts.map +1 -0
- package/dist/route-handlers/createGuidelinesHandler.js +100 -0
- package/dist/route-handlers/createGuidelinesHandler.js.map +1 -0
- package/dist/route-handlers/createMediaLibraryHandler.d.ts +19 -0
- package/dist/route-handlers/createMediaLibraryHandler.d.ts.map +1 -0
- package/dist/route-handlers/createMediaLibraryHandler.js +76 -0
- package/dist/route-handlers/createMediaLibraryHandler.js.map +1 -0
- package/dist/route-handlers/index.d.ts +9 -0
- package/dist/route-handlers/index.d.ts.map +1 -0
- package/dist/route-handlers/index.js +5 -0
- package/dist/route-handlers/index.js.map +1 -0
- package/dist/rtf/rtf.d.ts +66 -0
- package/dist/rtf/rtf.d.ts.map +1 -0
- package/dist/rtf/rtf.js +183 -0
- package/dist/rtf/rtf.js.map +1 -0
- package/dist/server/index.d.ts +20 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +11 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/merge-prepared-page-context.d.ts +8 -0
- package/dist/server/merge-prepared-page-context.d.ts.map +1 -0
- package/dist/server/merge-prepared-page-context.js +11 -0
- package/dist/server/merge-prepared-page-context.js.map +1 -0
- package/dist/server/page-test-merge.d.ts +7 -0
- package/dist/server/page-test-merge.d.ts.map +1 -0
- package/dist/server/page-test-merge.js +12 -0
- package/dist/server/page-test-merge.js.map +1 -0
- package/dist/server/route-handlers-types.d.ts +124 -0
- package/dist/server/route-handlers-types.d.ts.map +1 -0
- package/dist/server/route-handlers-types.js +2 -0
- package/dist/server/route-handlers-types.js.map +1 -0
- package/dist/server/route-handlers.d.ts +99 -0
- package/dist/server/route-handlers.d.ts.map +1 -0
- package/dist/server/route-handlers.js +1268 -0
- package/dist/server/route-handlers.js.map +1 -0
- package/dist/server/route-types.d.ts +78 -0
- package/dist/server/route-types.d.ts.map +1 -0
- package/dist/server/route-types.js +4 -0
- package/dist/server/route-types.js.map +1 -0
- package/dist/server/tag-index-guards.d.ts +33 -0
- package/dist/server/tag-index-guards.d.ts.map +1 -0
- package/dist/server/tag-index-guards.js +33 -0
- package/dist/server/tag-index-guards.js.map +1 -0
- package/dist/server/template-route-handlers.d.ts +7 -0
- package/dist/server/template-route-handlers.d.ts.map +1 -0
- package/dist/server/template-route-handlers.js +35 -0
- package/dist/server/template-route-handlers.js.map +1 -0
- package/dist/showcase/components/AllViewPanel.d.ts +7 -0
- package/dist/showcase/components/AllViewPanel.d.ts.map +1 -0
- package/dist/showcase/components/AllViewPanel.js +55 -0
- package/dist/showcase/components/AllViewPanel.js.map +1 -0
- package/dist/showcase/components/Controls.d.ts +15 -0
- package/dist/showcase/components/Controls.d.ts.map +1 -0
- package/dist/showcase/components/Controls.js +71 -0
- package/dist/showcase/components/Controls.js.map +1 -0
- package/dist/showcase/components/ControlsWrapper.d.ts +15 -0
- package/dist/showcase/components/ControlsWrapper.d.ts.map +1 -0
- package/dist/showcase/components/ControlsWrapper.js +9 -0
- package/dist/showcase/components/ControlsWrapper.js.map +1 -0
- package/dist/showcase/components/IframeHeightReporter.d.ts +13 -0
- package/dist/showcase/components/IframeHeightReporter.d.ts.map +1 -0
- package/dist/showcase/components/IframeHeightReporter.js +51 -0
- package/dist/showcase/components/IframeHeightReporter.js.map +1 -0
- package/dist/showcase/components/PreviewPanel.d.ts +18 -0
- package/dist/showcase/components/PreviewPanel.d.ts.map +1 -0
- package/dist/showcase/components/PreviewPanel.js +52 -0
- package/dist/showcase/components/PreviewPanel.js.map +1 -0
- package/dist/showcase/components/ScaledIframe.d.ts +22 -0
- package/dist/showcase/components/ScaledIframe.d.ts.map +1 -0
- package/dist/showcase/components/ScaledIframe.js +41 -0
- package/dist/showcase/components/ScaledIframe.js.map +1 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +21 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.js +36 -0
- package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.d.ts +8 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.js +10 -0
- package/dist/showcase/components/ShowcaseAnimationRoot.js.map +1 -0
- package/dist/showcase/components/ShowcasePage.d.ts +25 -0
- package/dist/showcase/components/ShowcasePage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcasePage.js +31 -0
- package/dist/showcase/components/ShowcasePage.js.map +1 -0
- package/dist/showcase/components/ShowcaseRenderPage.d.ts +21 -0
- package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseRenderPage.js +45 -0
- package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -0
- package/dist/showcase/components/ShowcaseViewportGuard.d.ts +14 -0
- package/dist/showcase/components/ShowcaseViewportGuard.d.ts.map +1 -0
- package/dist/showcase/components/ShowcaseViewportGuard.js +77 -0
- package/dist/showcase/components/ShowcaseViewportGuard.js.map +1 -0
- package/dist/showcase/components/TopBar.d.ts +11 -0
- package/dist/showcase/components/TopBar.d.ts.map +1 -0
- package/dist/showcase/components/TopBar.js +105 -0
- package/dist/showcase/components/TopBar.js.map +1 -0
- package/dist/showcase/controlFieldSupport.d.ts +12 -0
- package/dist/showcase/controlFieldSupport.d.ts.map +1 -0
- package/dist/showcase/controlFieldSupport.js +35 -0
- package/dist/showcase/controlFieldSupport.js.map +1 -0
- package/dist/showcase/index.d.ts +20 -0
- package/dist/showcase/index.d.ts.map +1 -0
- package/dist/showcase/index.js +20 -0
- package/dist/showcase/index.js.map +1 -0
- package/dist/showcase/isCmsShowcase.d.ts +10 -0
- package/dist/showcase/isCmsShowcase.d.ts.map +1 -0
- package/dist/showcase/isCmsShowcase.js +12 -0
- package/dist/showcase/isCmsShowcase.js.map +1 -0
- package/dist/showcase/mergeShowcaseMocks.d.ts +34 -0
- package/dist/showcase/mergeShowcaseMocks.d.ts.map +1 -0
- package/dist/showcase/mergeShowcaseMocks.js +31 -0
- package/dist/showcase/mergeShowcaseMocks.js.map +1 -0
- package/dist/showcase/mockFactory.d.ts +47 -0
- package/dist/showcase/mockFactory.d.ts.map +1 -0
- package/dist/showcase/mockFactory.js +726 -0
- package/dist/showcase/mockFactory.js.map +1 -0
- package/dist/showcase/showcaseLayout.d.ts +17 -0
- package/dist/showcase/showcaseLayout.d.ts.map +1 -0
- package/dist/showcase/showcaseLayout.js +11 -0
- package/dist/showcase/showcaseLayout.js.map +1 -0
- package/dist/showcase/showcaseRelatedContent.d.ts +30 -0
- package/dist/showcase/showcaseRelatedContent.d.ts.map +1 -0
- package/dist/showcase/showcaseRelatedContent.js +106 -0
- package/dist/showcase/showcaseRelatedContent.js.map +1 -0
- package/dist/showcase/types.d.ts +21 -0
- package/dist/showcase/types.d.ts.map +1 -0
- package/dist/showcase/types.js +19 -0
- package/dist/showcase/types.js.map +1 -0
- package/dist/utils/UnsupportedWarning.d.ts +30 -0
- package/dist/utils/UnsupportedWarning.d.ts.map +1 -0
- package/dist/utils/UnsupportedWarning.js +44 -0
- package/dist/utils/UnsupportedWarning.js.map +1 -0
- package/dist/utils/UnusedChecker.d.ts +51 -0
- package/dist/utils/UnusedChecker.d.ts.map +1 -0
- package/dist/utils/UnusedChecker.js +96 -0
- package/dist/utils/UnusedChecker.js.map +1 -0
- package/dist/utils/agent-ready.d.ts +103 -0
- package/dist/utils/agent-ready.d.ts.map +1 -0
- package/dist/utils/agent-ready.js +246 -0
- package/dist/utils/agent-ready.js.map +1 -0
- package/dist/utils/assertValidSiteBaseUrl.d.ts +8 -0
- package/dist/utils/assertValidSiteBaseUrl.d.ts.map +1 -0
- package/dist/utils/assertValidSiteBaseUrl.js +31 -0
- package/dist/utils/assertValidSiteBaseUrl.js.map +1 -0
- package/dist/utils/breadcrumbUtils.d.ts +64 -0
- package/dist/utils/breadcrumbUtils.d.ts.map +1 -0
- package/dist/utils/breadcrumbUtils.js +73 -0
- package/dist/utils/breadcrumbUtils.js.map +1 -0
- package/dist/utils/buildPageMetadata.d.ts +139 -0
- package/dist/utils/buildPageMetadata.d.ts.map +1 -0
- package/dist/utils/buildPageMetadata.js +218 -0
- package/dist/utils/buildPageMetadata.js.map +1 -0
- package/dist/utils/cn.d.ts +29 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +32 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/componentUtils.d.ts +82 -0
- package/dist/utils/componentUtils.d.ts.map +1 -0
- package/dist/utils/componentUtils.js +327 -0
- package/dist/utils/componentUtils.js.map +1 -0
- package/dist/utils/convertText.d.ts +2 -0
- package/dist/utils/convertText.d.ts.map +1 -0
- package/dist/utils/convertText.js +35 -0
- package/dist/utils/convertText.js.map +1 -0
- package/dist/utils/createDefaultRenderText.d.ts +17 -0
- package/dist/utils/createDefaultRenderText.d.ts.map +1 -0
- package/dist/utils/createDefaultRenderText.js +25 -0
- package/dist/utils/createDefaultRenderText.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +37 -0
- package/dist/utils/errorHandling.d.ts.map +1 -0
- package/dist/utils/errorHandling.js +61 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/errorMonitoring.d.ts +17 -0
- package/dist/utils/errorMonitoring.d.ts.map +1 -0
- package/dist/utils/errorMonitoring.js +26 -0
- package/dist/utils/errorMonitoring.js.map +1 -0
- package/dist/utils/imageKitVideoHls.d.ts +3 -0
- package/dist/utils/imageKitVideoHls.d.ts.map +1 -0
- package/dist/utils/imageKitVideoHls.js +5 -0
- package/dist/utils/imageKitVideoHls.js.map +1 -0
- package/dist/utils/interpolateMetaText.d.ts +9 -0
- package/dist/utils/interpolateMetaText.d.ts.map +1 -0
- package/dist/utils/interpolateMetaText.js +21 -0
- package/dist/utils/interpolateMetaText.js.map +1 -0
- package/dist/utils/linkAccessibility.d.ts +13 -0
- package/dist/utils/linkAccessibility.d.ts.map +1 -0
- package/dist/utils/linkAccessibility.js +14 -0
- package/dist/utils/linkAccessibility.js.map +1 -0
- package/dist/utils/linkResolution.d.ts +15 -0
- package/dist/utils/linkResolution.d.ts.map +1 -0
- package/dist/utils/linkResolution.js +19 -0
- package/dist/utils/linkResolution.js.map +1 -0
- package/dist/utils/listing-page-heading.d.ts +16 -0
- package/dist/utils/listing-page-heading.d.ts.map +1 -0
- package/dist/utils/listing-page-heading.js +24 -0
- package/dist/utils/listing-page-heading.js.map +1 -0
- package/dist/utils/listingStructuredData.d.ts +28 -0
- package/dist/utils/listingStructuredData.d.ts.map +1 -0
- package/dist/utils/listingStructuredData.js +65 -0
- package/dist/utils/listingStructuredData.js.map +1 -0
- package/dist/utils/marketingSiteSitemap.d.ts +103 -0
- package/dist/utils/marketingSiteSitemap.d.ts.map +1 -0
- package/dist/utils/marketingSiteSitemap.js +352 -0
- package/dist/utils/marketingSiteSitemap.js.map +1 -0
- package/dist/utils/previewPageUtils.d.ts +61 -0
- package/dist/utils/previewPageUtils.d.ts.map +1 -0
- package/dist/utils/previewPageUtils.js +72 -0
- package/dist/utils/previewPageUtils.js.map +1 -0
- package/dist/utils/previewUtils.d.ts +59 -0
- package/dist/utils/previewUtils.d.ts.map +1 -0
- package/dist/utils/previewUtils.js +60 -0
- package/dist/utils/previewUtils.js.map +1 -0
- package/dist/utils/processCollectionLinks.d.ts +11 -0
- package/dist/utils/processCollectionLinks.d.ts.map +1 -0
- package/dist/utils/processCollectionLinks.js +38 -0
- package/dist/utils/processCollectionLinks.js.map +1 -0
- package/dist/utils/processTextContent.d.ts +18 -0
- package/dist/utils/processTextContent.d.ts.map +1 -0
- package/dist/utils/processTextContent.js +24 -0
- package/dist/utils/processTextContent.js.map +1 -0
- package/dist/utils/reactNodeText.d.ts +7 -0
- package/dist/utils/reactNodeText.d.ts.map +1 -0
- package/dist/utils/reactNodeText.js +43 -0
- package/dist/utils/reactNodeText.js.map +1 -0
- package/dist/utils/richTextNodeText.d.ts +13 -0
- package/dist/utils/richTextNodeText.d.ts.map +1 -0
- package/dist/utils/richTextNodeText.js +29 -0
- package/dist/utils/richTextNodeText.js.map +1 -0
- package/dist/utils/robots.d.ts +115 -0
- package/dist/utils/robots.d.ts.map +1 -0
- package/dist/utils/robots.js +174 -0
- package/dist/utils/robots.js.map +1 -0
- package/dist/utils/scopeCss.d.ts +15 -0
- package/dist/utils/scopeCss.d.ts.map +1 -0
- package/dist/utils/scopeCss.js +186 -0
- package/dist/utils/scopeCss.js.map +1 -0
- package/dist/utils/sitemap.d.ts +173 -0
- package/dist/utils/sitemap.d.ts.map +1 -0
- package/dist/utils/sitemap.js +257 -0
- package/dist/utils/sitemap.js.map +1 -0
- package/dist/utils/structuredDataUtils.d.ts +158 -0
- package/dist/utils/structuredDataUtils.d.ts.map +1 -0
- package/dist/utils/structuredDataUtils.js +225 -0
- package/dist/utils/structuredDataUtils.js.map +1 -0
- package/dist/utils/urlUtils.d.ts +30 -0
- package/dist/utils/urlUtils.d.ts.map +1 -0
- package/dist/utils/urlUtils.js +100 -0
- package/dist/utils/urlUtils.js.map +1 -0
- package/dist/utils/visualPositions.d.ts +3 -0
- package/dist/utils/visualPositions.d.ts.map +1 -0
- package/dist/utils/visualPositions.js +13 -0
- package/dist/utils/visualPositions.js.map +1 -0
- package/dist/utils/visualSizes.d.ts +5 -0
- package/dist/utils/visualSizes.d.ts.map +1 -0
- package/dist/utils/visualSizes.js +27 -0
- package/dist/utils/visualSizes.js.map +1 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.d.ts +8 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.d.ts.map +1 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.js +30 -0
- package/dist/utils/wcagRelativeLuminanceFromHex.js.map +1 -0
- package/dist/utils/wrapHtmlComponentJs.d.ts +10 -0
- package/dist/utils/wrapHtmlComponentJs.d.ts.map +1 -0
- package/dist/utils/wrapHtmlComponentJs.js +12 -0
- package/dist/utils/wrapHtmlComponentJs.js.map +1 -0
- package/docs/PACKAGE_EXPORT_BOUNDARIES.md +98 -0
- package/docs/llms.md +358 -0
- package/package.json +108 -0
- package/src/showcase/README.md +269 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { type IBaseModel } from '@se-studio/core-data-types';
|
|
2
|
+
import type { BreadcrumbSegment } from './breadcrumbUtils';
|
|
3
|
+
import type { IBuildInformation } from './buildPageMetadata';
|
|
4
|
+
/**
|
|
5
|
+
* @fileoverview Structured Data Context Builder
|
|
6
|
+
*
|
|
7
|
+
* This module builds minimal context objects for structured data (Schema.org JSON-LD) templates.
|
|
8
|
+
*
|
|
9
|
+
* ## Design Philosophy: Minimal Context
|
|
10
|
+
*
|
|
11
|
+
* This implementation follows a "minimal context" approach where:
|
|
12
|
+
* - **Static data lives in CMS templates** (organization name, address, contact info)
|
|
13
|
+
* - **Dynamic data lives in this context** (URLs, page titles, dates)
|
|
14
|
+
*
|
|
15
|
+
* ### Why This Approach?
|
|
16
|
+
*
|
|
17
|
+
* 1. **Separation of Concerns**: Content editors control static organizational data in the CMS,
|
|
18
|
+
* while deployment-specific values (like baseUrl) are injected at runtime.
|
|
19
|
+
*
|
|
20
|
+
* 2. **Simpler Templates**: Content editors work with straightforward variables like
|
|
21
|
+
* `{{baseUrl}}` and `{{page.title}}` rather than deeply nested objects.
|
|
22
|
+
*
|
|
23
|
+
* 3. **Easier Maintenance**: When organization details change, update the CMS template once
|
|
24
|
+
* rather than changing code and redeploying.
|
|
25
|
+
*
|
|
26
|
+
* 4. **Deployment Flexibility**: The same CMS templates work across dev/staging/prod with
|
|
27
|
+
* only the baseUrl changing.
|
|
28
|
+
*
|
|
29
|
+
* ### Example CMS Template
|
|
30
|
+
*
|
|
31
|
+
* ```json
|
|
32
|
+
* {
|
|
33
|
+
* "@context": "https://schema.org",
|
|
34
|
+
* "@type": "Organization",
|
|
35
|
+
* "name": "OM1",
|
|
36
|
+
* "url": "{{baseUrl}}",
|
|
37
|
+
* "logo": "{{baseUrl}}/logo.svg",
|
|
38
|
+
* "description": "Predict What's Next. Improve Outcomes.",
|
|
39
|
+
* "address": {
|
|
40
|
+
* "@type": "PostalAddress",
|
|
41
|
+
* "streetAddress": "31 St. James Ave Suite #1010",
|
|
42
|
+
* "addressLocality": "Boston"
|
|
43
|
+
* }
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* ### Available Context Variables
|
|
48
|
+
*
|
|
49
|
+
* - `baseUrl` - Site base URL (environment-specific)
|
|
50
|
+
* - `currentUrl` - Full URL of current page
|
|
51
|
+
* - `page.title` - Page title
|
|
52
|
+
* - `page.description` - Page description
|
|
53
|
+
* - `page.slug` - Page slug
|
|
54
|
+
* - `page.imageUrl` - Featured image URL (if available)
|
|
55
|
+
* - `page.breadcrumbs` - Array of breadcrumb objects. Each has position, name, last; url is optional.
|
|
56
|
+
* When a segment has no link (e.g. path in breadcrumbNoLinkPaths), url is omitted. BreadcrumbList
|
|
57
|
+
* templates in the CMS must output the ListItem "item" only when url is present (e.g. Mustache:
|
|
58
|
+
* {{#url}}"item": {"@id": "{{{url}}}"}{{/url}}) so non-link segments get only name and position.
|
|
59
|
+
* - `article.*` - Article-specific fields (only for Article pages)
|
|
60
|
+
* - `person.*` - Person-specific fields (only for Person pages)
|
|
61
|
+
* - `listing.items` - ItemList entries (position, name, url, last) when provided
|
|
62
|
+
*
|
|
63
|
+
* @see {@link StructuredDataContext} for complete context interface
|
|
64
|
+
*/
|
|
65
|
+
/**
|
|
66
|
+
* Minimal context object for Mustache templates in structured data.
|
|
67
|
+
*
|
|
68
|
+
* Philosophy: Only truly dynamic values that change per page/deployment should be in this context.
|
|
69
|
+
* Static organizational data (company name, address, etc.) should be hardcoded in CMS templates.
|
|
70
|
+
*
|
|
71
|
+
* This keeps templates simpler and separates concerns:
|
|
72
|
+
* - Static data (organization details) → CMS templates
|
|
73
|
+
* - Dynamic data (URLs, page-specific info) → This context
|
|
74
|
+
*/
|
|
75
|
+
export interface StructuredDataContext {
|
|
76
|
+
baseUrl: string;
|
|
77
|
+
currentUrl: string;
|
|
78
|
+
page: {
|
|
79
|
+
title: string;
|
|
80
|
+
description: string;
|
|
81
|
+
slug: string;
|
|
82
|
+
imageUrl?: string;
|
|
83
|
+
breadcrumbs: Array<{
|
|
84
|
+
position: number;
|
|
85
|
+
name: string;
|
|
86
|
+
url?: string;
|
|
87
|
+
last: boolean;
|
|
88
|
+
}>;
|
|
89
|
+
};
|
|
90
|
+
article?: {
|
|
91
|
+
title: string;
|
|
92
|
+
description: string;
|
|
93
|
+
datePublished: string;
|
|
94
|
+
dateModified: string;
|
|
95
|
+
authorName?: string;
|
|
96
|
+
authorUrl?: string;
|
|
97
|
+
/** All authors in order (for multi-author JSON-LD). */
|
|
98
|
+
authors?: Array<{
|
|
99
|
+
name: string;
|
|
100
|
+
url?: string;
|
|
101
|
+
}>;
|
|
102
|
+
imageUrl?: string;
|
|
103
|
+
};
|
|
104
|
+
person?: {
|
|
105
|
+
name: string;
|
|
106
|
+
jobTitle?: string;
|
|
107
|
+
imageUrl?: string;
|
|
108
|
+
};
|
|
109
|
+
/** ItemList context for hub/index pages (article type, tag, person). */
|
|
110
|
+
listing?: {
|
|
111
|
+
items: Array<{
|
|
112
|
+
position: number;
|
|
113
|
+
name: string;
|
|
114
|
+
url: string;
|
|
115
|
+
last: boolean;
|
|
116
|
+
}>;
|
|
117
|
+
};
|
|
118
|
+
[key: string]: unknown;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Extracts entity nodes from a parsed JSON-LD object for merging into a flat @graph.
|
|
122
|
+
* CMS templates often render as `{ @context, @graph: [entity] }`; merging multiple
|
|
123
|
+
* templates must flatten inner @graph arrays, not nest them.
|
|
124
|
+
*/
|
|
125
|
+
export declare function graphNodesFromParsed(obj: unknown): unknown[];
|
|
126
|
+
/**
|
|
127
|
+
* Builds the final JSON-LD object from one or more parsed schema templates.
|
|
128
|
+
* Always emits a top-level `@context`. Single entity → context + entity fields;
|
|
129
|
+
* multiple → one document with a flat `@graph`.
|
|
130
|
+
*/
|
|
131
|
+
export declare function buildMergedStructuredDataJson(parsedSchemas: unknown[]): unknown;
|
|
132
|
+
/**
|
|
133
|
+
* Options for buildStructuredDataContext.
|
|
134
|
+
*/
|
|
135
|
+
export interface BuildStructuredDataContextOptions {
|
|
136
|
+
/** Pre-resolved breadcrumb segments from resolveBreadcrumbSegments. When provided, used for Schema.org instead of slug-derived labels. */
|
|
137
|
+
resolvedBreadcrumbs?: BreadcrumbSegment[] | null;
|
|
138
|
+
/** Pre-built ItemList entries for hub/index pages. */
|
|
139
|
+
listing?: StructuredDataContext['listing'];
|
|
140
|
+
[key: string]: unknown;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Builds a minimal context object for structured data templates.
|
|
144
|
+
*
|
|
145
|
+
* Only includes truly dynamic values that change per page or deployment:
|
|
146
|
+
* - URLs (baseUrl varies by environment)
|
|
147
|
+
* - Page-specific content (title, description, images)
|
|
148
|
+
* - Content-type specific data (article dates, person info)
|
|
149
|
+
*
|
|
150
|
+
* Static organizational data (company name, address, etc.) should be
|
|
151
|
+
* hardcoded in CMS templates, not injected here.
|
|
152
|
+
*
|
|
153
|
+
* @param model - The CMS content model (Page, Article, Person, etc.)
|
|
154
|
+
* @param config - Build configuration (baseUrl and customerName)
|
|
155
|
+
* @param extraContextOrOptions - Optional extra context or options (resolvedBreadcrumbs)
|
|
156
|
+
*/
|
|
157
|
+
export declare function buildStructuredDataContext(model: IBaseModel, config: IBuildInformation, extraContextOrOptions?: Record<string, unknown> | BuildStructuredDataContextOptions): StructuredDataContext;
|
|
158
|
+
//# sourceMappingURL=structuredDataUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuredDataUtils.d.ts","sourceRoot":"","sources":["../../src/utils/structuredDataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EAIhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IAEpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAGnB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACrF,CAAC;IAGF,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,uDAAuD;QACvD,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,wEAAwE;IACxE,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KAC9E,CAAC;IAGF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAUD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,CAY5D;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,OAAO,CAkB/E;AAyGD;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,0IAA0I;IAC1I,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IACjD,sDAAsD;IACtD,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,iBAAiB,EACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iCAAiC,GAClF,qBAAqB,CA0FvB"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { getArticleAuthors, getPrimaryArticleAuthor, mergeMeta, parseMeta, } from '@se-studio/core-data-types';
|
|
2
|
+
function stripDocumentContext(node) {
|
|
3
|
+
if (typeof node !== 'object' || node === null || !('@context' in node)) {
|
|
4
|
+
return node;
|
|
5
|
+
}
|
|
6
|
+
const { '@context': _, ...rest } = node;
|
|
7
|
+
return rest;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Extracts entity nodes from a parsed JSON-LD object for merging into a flat @graph.
|
|
11
|
+
* CMS templates often render as `{ @context, @graph: [entity] }`; merging multiple
|
|
12
|
+
* templates must flatten inner @graph arrays, not nest them.
|
|
13
|
+
*/
|
|
14
|
+
export function graphNodesFromParsed(obj) {
|
|
15
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
16
|
+
return [obj];
|
|
17
|
+
}
|
|
18
|
+
const record = obj;
|
|
19
|
+
if (Array.isArray(record['@graph'])) {
|
|
20
|
+
return record['@graph'].map(stripDocumentContext);
|
|
21
|
+
}
|
|
22
|
+
if ('@context' in record) {
|
|
23
|
+
return [stripDocumentContext(record)];
|
|
24
|
+
}
|
|
25
|
+
return [obj];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Builds the final JSON-LD object from one or more parsed schema templates.
|
|
29
|
+
* Always emits a top-level `@context`. Single entity → context + entity fields;
|
|
30
|
+
* multiple → one document with a flat `@graph`.
|
|
31
|
+
*/
|
|
32
|
+
export function buildMergedStructuredDataJson(parsedSchemas) {
|
|
33
|
+
const nodes = parsedSchemas.flatMap(graphNodesFromParsed);
|
|
34
|
+
if (nodes.length === 0) {
|
|
35
|
+
return {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@graph': [],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (nodes.length === 1) {
|
|
41
|
+
return {
|
|
42
|
+
'@context': 'https://schema.org',
|
|
43
|
+
...nodes[0],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@graph': nodes,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Helper to build the breadcrumbs array for structured data.
|
|
53
|
+
* Splits the path and creates breadcrumb entries with positions.
|
|
54
|
+
*
|
|
55
|
+
* @param path - Current page path (e.g., '/about/team')
|
|
56
|
+
* @param baseUrl - Base URL for the site
|
|
57
|
+
* @param currentTitle - Title of the current page
|
|
58
|
+
* @param breadcrumbTitleOverride - Optional override for the last breadcrumb title
|
|
59
|
+
*/
|
|
60
|
+
function buildBreadcrumbs(path, baseUrl, currentTitle, breadcrumbTitleOverride) {
|
|
61
|
+
const segments = path.split('/').filter(Boolean);
|
|
62
|
+
const breadcrumbs = [];
|
|
63
|
+
// Home
|
|
64
|
+
breadcrumbs.push({
|
|
65
|
+
position: 1,
|
|
66
|
+
name: 'Home',
|
|
67
|
+
url: `${baseUrl}/`,
|
|
68
|
+
last: segments.length === 0,
|
|
69
|
+
});
|
|
70
|
+
let currentPath = '';
|
|
71
|
+
segments.forEach((segment, index) => {
|
|
72
|
+
currentPath += `/${segment}`;
|
|
73
|
+
const isLast = index === segments.length - 1;
|
|
74
|
+
// For intermediate segments, capitalize the slug
|
|
75
|
+
// For the last segment, use the page title or override
|
|
76
|
+
let name = segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, ' ');
|
|
77
|
+
if (isLast) {
|
|
78
|
+
name = breadcrumbTitleOverride || currentTitle;
|
|
79
|
+
}
|
|
80
|
+
breadcrumbs.push({
|
|
81
|
+
position: index + 2,
|
|
82
|
+
name: name,
|
|
83
|
+
url: `${baseUrl}${currentPath}/`,
|
|
84
|
+
last: isLast,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
return breadcrumbs;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Converts pre-resolved breadcrumb segments to Schema.org format.
|
|
91
|
+
* Non-last segments without seg.href get no url (for BreadcrumbList templates that use {{#url}}).
|
|
92
|
+
*
|
|
93
|
+
* @param segments - Pre-resolved segments from resolveBreadcrumbSegments
|
|
94
|
+
* @param baseUrl - Base URL for the site
|
|
95
|
+
* @param currentPath - Full path of current page (for last segment URL)
|
|
96
|
+
*/
|
|
97
|
+
function segmentsToStructuredData(segments, baseUrl, currentPath) {
|
|
98
|
+
const breadcrumbs = [
|
|
99
|
+
{ position: 1, name: 'Home', url: `${baseUrl}/`, last: false },
|
|
100
|
+
];
|
|
101
|
+
segments.forEach((seg, index) => {
|
|
102
|
+
const isLast = index === segments.length - 1;
|
|
103
|
+
if (isLast) {
|
|
104
|
+
breadcrumbs.push({
|
|
105
|
+
position: index + 2,
|
|
106
|
+
name: seg.label,
|
|
107
|
+
url: `${baseUrl}${currentPath}`,
|
|
108
|
+
last: true,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else if (seg.href) {
|
|
112
|
+
breadcrumbs.push({
|
|
113
|
+
position: index + 2,
|
|
114
|
+
name: seg.label,
|
|
115
|
+
url: `${baseUrl}${seg.href}`,
|
|
116
|
+
last: false,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
breadcrumbs.push({
|
|
121
|
+
position: index + 2,
|
|
122
|
+
name: seg.label,
|
|
123
|
+
last: false,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
return breadcrumbs;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Builds a minimal context object for structured data templates.
|
|
131
|
+
*
|
|
132
|
+
* Only includes truly dynamic values that change per page or deployment:
|
|
133
|
+
* - URLs (baseUrl varies by environment)
|
|
134
|
+
* - Page-specific content (title, description, images)
|
|
135
|
+
* - Content-type specific data (article dates, person info)
|
|
136
|
+
*
|
|
137
|
+
* Static organizational data (company name, address, etc.) should be
|
|
138
|
+
* hardcoded in CMS templates, not injected here.
|
|
139
|
+
*
|
|
140
|
+
* @param model - The CMS content model (Page, Article, Person, etc.)
|
|
141
|
+
* @param config - Build configuration (baseUrl and customerName)
|
|
142
|
+
* @param extraContextOrOptions - Optional extra context or options (resolvedBreadcrumbs)
|
|
143
|
+
*/
|
|
144
|
+
export function buildStructuredDataContext(model, config, extraContextOrOptions) {
|
|
145
|
+
const { baseUrl } = config;
|
|
146
|
+
const path = model.href;
|
|
147
|
+
const currentUrl = `${baseUrl}${path}`;
|
|
148
|
+
const featuredImageId = model.featuredImage?.id;
|
|
149
|
+
const ogBase = config.ogImagePath ?? '/og';
|
|
150
|
+
const imageUrl = featuredImageId ? `${baseUrl}${ogBase}/${featuredImageId}.jpg` : undefined;
|
|
151
|
+
const opts = extraContextOrOptions;
|
|
152
|
+
const resolvedBreadcrumbs = opts?.resolvedBreadcrumbs;
|
|
153
|
+
const extraContext = { ...opts };
|
|
154
|
+
delete extraContext.resolvedBreadcrumbs;
|
|
155
|
+
delete extraContext.listing;
|
|
156
|
+
const extraMeta = extraContext.meta;
|
|
157
|
+
delete extraContext.meta;
|
|
158
|
+
const breadcrumbs = resolvedBreadcrumbs && resolvedBreadcrumbs.length > 0
|
|
159
|
+
? segmentsToStructuredData(resolvedBreadcrumbs, baseUrl, path)
|
|
160
|
+
: buildBreadcrumbs(path, baseUrl, model.title, model.breadcrumbTitle);
|
|
161
|
+
// Base context with page information
|
|
162
|
+
const context = {
|
|
163
|
+
baseUrl: `${baseUrl}/`,
|
|
164
|
+
currentUrl,
|
|
165
|
+
page: {
|
|
166
|
+
title: model.title,
|
|
167
|
+
description: model.description,
|
|
168
|
+
slug: model.slug,
|
|
169
|
+
imageUrl,
|
|
170
|
+
breadcrumbs,
|
|
171
|
+
},
|
|
172
|
+
...(opts?.listing ? { listing: opts.listing } : {}),
|
|
173
|
+
...extraContext,
|
|
174
|
+
};
|
|
175
|
+
const meta = mergeMeta(parseMeta(model.meta), parseMeta(extraMeta));
|
|
176
|
+
if (Object.keys(meta).length > 0) {
|
|
177
|
+
context.meta = meta;
|
|
178
|
+
}
|
|
179
|
+
// Article-specific context
|
|
180
|
+
if (model.type === 'Article') {
|
|
181
|
+
const article = model;
|
|
182
|
+
const primaryAuthor = getPrimaryArticleAuthor(article);
|
|
183
|
+
const primaryAuthorName = primaryAuthor?.name ?? primaryAuthor?.title;
|
|
184
|
+
const authors = getArticleAuthors(article).flatMap((person) => {
|
|
185
|
+
const name = person.name ?? person.title;
|
|
186
|
+
if (!name)
|
|
187
|
+
return [];
|
|
188
|
+
return [
|
|
189
|
+
{
|
|
190
|
+
name,
|
|
191
|
+
url: person.href ? `${baseUrl}${person.href}` : undefined,
|
|
192
|
+
},
|
|
193
|
+
];
|
|
194
|
+
});
|
|
195
|
+
context.article = {
|
|
196
|
+
title: article.title,
|
|
197
|
+
description: article.description,
|
|
198
|
+
datePublished: article.date
|
|
199
|
+
? new Date(article.date).toISOString()
|
|
200
|
+
: article.lastUpdated
|
|
201
|
+
? new Date(article.lastUpdated).toISOString()
|
|
202
|
+
: new Date().toISOString(),
|
|
203
|
+
dateModified: article.lastUpdated
|
|
204
|
+
? new Date(article.lastUpdated).toISOString()
|
|
205
|
+
: article.date
|
|
206
|
+
? new Date(article.date).toISOString()
|
|
207
|
+
: new Date().toISOString(),
|
|
208
|
+
imageUrl,
|
|
209
|
+
authorName: primaryAuthorName,
|
|
210
|
+
authorUrl: primaryAuthor?.href ? `${baseUrl}${primaryAuthor.href}` : undefined,
|
|
211
|
+
authors,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
// Person-specific context
|
|
215
|
+
if (model.type === 'Person') {
|
|
216
|
+
const person = model;
|
|
217
|
+
context.person = {
|
|
218
|
+
name: person.title,
|
|
219
|
+
jobTitle: person.jobTitle || undefined,
|
|
220
|
+
imageUrl,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return context;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=structuredDataUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuredDataUtils.js","sourceRoot":"","sources":["../../src/utils/structuredDataUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare function isAbsoluteUrl(url: string): boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Ensure page-like internal paths use a trailing slash (SE Studio `trailingSlash: true`).
|
|
4
|
+
*
|
|
5
|
+
* - Preserves query string and hash (`/drive#x` → `/drive/#x`, `/drive?q=1` → `/drive/?q=1`).
|
|
6
|
+
* - Leaves `/`, already-slashed paths, hash-only, and non-path hrefs unchanged.
|
|
7
|
+
* - Skips file-like last segments (contain a `.`) so download/asset paths stay bare.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureInternalPageTrailingSlash(href: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Resolve a hyperlink href for navigation + external treatment.
|
|
12
|
+
*
|
|
13
|
+
* - Relative / hash / protocol-relative-handled-as-absolute paths stay as-is (not external
|
|
14
|
+
* unless absolute http(s) to another origin).
|
|
15
|
+
* - Absolute same-site URLs (matching `siteBaseUrl` origin, or `window.location.origin`
|
|
16
|
+
* when no base is provided) are stripped to path + search + hash and treated as internal.
|
|
17
|
+
* - Absolute other-origin URLs stay absolute and are external (typically target=_blank).
|
|
18
|
+
* - Internal page paths are normalized to trailing-slash form (SE Studio convention) so
|
|
19
|
+
* plain RTF hyperlinks like `/drive` do not force a 308 redirect.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveTrackedHref(href: string, siteBaseUrl?: string | null): {
|
|
22
|
+
href: string;
|
|
23
|
+
isExternal: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Utility function to get the current page URL safely.
|
|
27
|
+
* Returns an empty string when running on the server.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getCurrentPageUrl(): string;
|
|
30
|
+
//# sourceMappingURL=urlUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlUtils.d.ts","sourceRoot":"","sources":["../../src/utils/urlUtils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8BpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAsCvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export function isAbsoluteUrl(url) {
|
|
2
|
+
try {
|
|
3
|
+
const parsed = new URL(url);
|
|
4
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Ensure page-like internal paths use a trailing slash (SE Studio `trailingSlash: true`).
|
|
12
|
+
*
|
|
13
|
+
* - Preserves query string and hash (`/drive#x` → `/drive/#x`, `/drive?q=1` → `/drive/?q=1`).
|
|
14
|
+
* - Leaves `/`, already-slashed paths, hash-only, and non-path hrefs unchanged.
|
|
15
|
+
* - Skips file-like last segments (contain a `.`) so download/asset paths stay bare.
|
|
16
|
+
*/
|
|
17
|
+
export function ensureInternalPageTrailingSlash(href) {
|
|
18
|
+
if (!href || href === '#' || href.startsWith('#') || !href.startsWith('/')) {
|
|
19
|
+
return href;
|
|
20
|
+
}
|
|
21
|
+
let path = href;
|
|
22
|
+
let search = '';
|
|
23
|
+
let hash = '';
|
|
24
|
+
const hashIdx = path.indexOf('#');
|
|
25
|
+
if (hashIdx >= 0) {
|
|
26
|
+
hash = path.slice(hashIdx);
|
|
27
|
+
path = path.slice(0, hashIdx);
|
|
28
|
+
}
|
|
29
|
+
const qIdx = path.indexOf('?');
|
|
30
|
+
if (qIdx >= 0) {
|
|
31
|
+
search = path.slice(qIdx);
|
|
32
|
+
path = path.slice(0, qIdx);
|
|
33
|
+
}
|
|
34
|
+
if (path === '/' || path.endsWith('/')) {
|
|
35
|
+
return `${path}${search}${hash}`;
|
|
36
|
+
}
|
|
37
|
+
const lastSegment = path.split('/').filter(Boolean).pop() ?? '';
|
|
38
|
+
if (lastSegment.includes('.')) {
|
|
39
|
+
return `${path}${search}${hash}`;
|
|
40
|
+
}
|
|
41
|
+
return `${path}/${search}${hash}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Resolve a hyperlink href for navigation + external treatment.
|
|
45
|
+
*
|
|
46
|
+
* - Relative / hash / protocol-relative-handled-as-absolute paths stay as-is (not external
|
|
47
|
+
* unless absolute http(s) to another origin).
|
|
48
|
+
* - Absolute same-site URLs (matching `siteBaseUrl` origin, or `window.location.origin`
|
|
49
|
+
* when no base is provided) are stripped to path + search + hash and treated as internal.
|
|
50
|
+
* - Absolute other-origin URLs stay absolute and are external (typically target=_blank).
|
|
51
|
+
* - Internal page paths are normalized to trailing-slash form (SE Studio convention) so
|
|
52
|
+
* plain RTF hyperlinks like `/drive` do not force a 308 redirect.
|
|
53
|
+
*/
|
|
54
|
+
export function resolveTrackedHref(href, siteBaseUrl) {
|
|
55
|
+
if (!href || href === '#' || href.startsWith('#')) {
|
|
56
|
+
return { href, isExternal: false };
|
|
57
|
+
}
|
|
58
|
+
if (href.startsWith('/')) {
|
|
59
|
+
return { href: ensureInternalPageTrailingSlash(href), isExternal: false };
|
|
60
|
+
}
|
|
61
|
+
if (!isAbsoluteUrl(href)) {
|
|
62
|
+
return { href, isExternal: false };
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const url = new URL(href);
|
|
66
|
+
const candidates = [];
|
|
67
|
+
if (siteBaseUrl) {
|
|
68
|
+
try {
|
|
69
|
+
candidates.push(new URL(siteBaseUrl).origin);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// ignore invalid base
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (typeof window !== 'undefined' && window.location?.origin) {
|
|
76
|
+
candidates.push(window.location.origin);
|
|
77
|
+
}
|
|
78
|
+
if (candidates.some((origin) => origin === url.origin)) {
|
|
79
|
+
return {
|
|
80
|
+
href: ensureInternalPageTrailingSlash(`${url.pathname}${url.search}${url.hash}`),
|
|
81
|
+
isExternal: false,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return { href, isExternal: true };
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return { href, isExternal: false };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Utility function to get the current page URL safely.
|
|
92
|
+
* Returns an empty string when running on the server.
|
|
93
|
+
*/
|
|
94
|
+
export function getCurrentPageUrl() {
|
|
95
|
+
if (typeof window !== 'undefined') {
|
|
96
|
+
return window.location.href;
|
|
97
|
+
}
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=urlUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlUtils.js","sourceRoot":"","sources":["../../src/utils/urlUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualPositions.d.ts","sourceRoot":"","sources":["../../src/utils/visualPositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAEvF,wBAAgB,oCAAoC,CAAC,MAAM,CAAC,EAAE,OAAO,0DAUpE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getVisualHorizontalPosition } from '@se-studio/core-data-types';
|
|
2
|
+
export function calculateHorizontalPositionClassName(visual) {
|
|
3
|
+
const horizontalPosition = getVisualHorizontalPosition(visual);
|
|
4
|
+
switch (horizontalPosition) {
|
|
5
|
+
case 'Left':
|
|
6
|
+
return 'laptop:mr-auto';
|
|
7
|
+
case 'Right':
|
|
8
|
+
return 'laptop:ml-auto';
|
|
9
|
+
default:
|
|
10
|
+
return 'laptop:mx-auto';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=visualPositions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualPositions.js","sourceRoot":"","sources":["../../src/utils/visualPositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAgB,MAAM,4BAA4B,CAAC;AAEvF,MAAM,UAAU,oCAAoC,CAAC,MAAgB;IACnE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC/D,QAAQ,kBAAkB,EAAE,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC;QAC1B;YACE,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IVisualSizes } from '@se-studio/core-data-types';
|
|
2
|
+
export declare function calculateVisualSizes(defaultRatio: number, breakpointRatios?: Partial<Record<string, number>>, sizes?: Record<string, {
|
|
3
|
+
breakpoint: number;
|
|
4
|
+
}>): IVisualSizes;
|
|
5
|
+
//# sourceMappingURL=visualSizes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualSizes.d.ts","sourceRoot":"","sources":["../../src/utils/visualSizes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAQ/D,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAClD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,gBAuB/C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const DEFAULT_BREAKPOINTS = {
|
|
2
|
+
tablet: { breakpoint: 768 },
|
|
3
|
+
laptop: { breakpoint: 1024 },
|
|
4
|
+
desktop: { breakpoint: 1440 },
|
|
5
|
+
};
|
|
6
|
+
export function calculateVisualSizes(defaultRatio, breakpointRatios, sizes) {
|
|
7
|
+
const effectiveSizes = sizes || DEFAULT_BREAKPOINTS;
|
|
8
|
+
const visualSizes = {
|
|
9
|
+
defaultSize: `${Math.round(defaultRatio * 100)}vw`,
|
|
10
|
+
breakpoints: breakpointRatios
|
|
11
|
+
? Object.entries(breakpointRatios).map(([size, ratio]) => {
|
|
12
|
+
const info = effectiveSizes[size];
|
|
13
|
+
if (!info || ratio === undefined) {
|
|
14
|
+
throw new Error(`Size ${size} not found in configuration or ratio is undefined`);
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
minWidth: info.breakpoint,
|
|
18
|
+
proportion: ratio,
|
|
19
|
+
pixels: Math.round(info.breakpoint * ratio),
|
|
20
|
+
size: `${Math.round(ratio * 100)}vw`,
|
|
21
|
+
};
|
|
22
|
+
})
|
|
23
|
+
: undefined,
|
|
24
|
+
};
|
|
25
|
+
return visualSizes;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=visualSizes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualSizes.js","sourceRoot":"","sources":["../../src/utils/visualSizes.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAA2C;IAClE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE;IAC3B,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;IAC5B,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;CAC9B,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,YAAoB,EACpB,gBAAkD,EAClD,KAA8C;IAE9C,MAAM,cAAc,GAAG,KAAK,IAAI,mBAAmB,CAAC;IAEpD,MAAM,WAAW,GAAiB;QAChC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,IAAI;QAClD,WAAW,EAAE,gBAAgB;YAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBACrD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,mDAAmD,CAAC,CAAC;gBACnF,CAAC;gBACD,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,UAAU;oBACzB,UAAU,EAAE,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBAC3C,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI;iBACrC,CAAC;YACJ,CAAC,CAAC;YACJ,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WCAG 2.1 relative luminance (0 = black, 1 = white) for an sRGB hex string.
|
|
3
|
+
*
|
|
4
|
+
* Accepts `#RGB` or `#RRGGBB` (case-insensitive hex digits). Trims surrounding whitespace.
|
|
5
|
+
* Returns `null` if the string is not a valid hex color.
|
|
6
|
+
*/
|
|
7
|
+
export declare function wcagRelativeLuminanceFromHex(hex: string): number | null;
|
|
8
|
+
//# sourceMappingURL=wcagRelativeLuminanceFromHex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wcagRelativeLuminanceFromHex.d.ts","sourceRoot":"","sources":["../../src/utils/wcagRelativeLuminanceFromHex.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBvE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const HEX_COLOR_REGEX = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
|
|
2
|
+
function expandShortHex(hex) {
|
|
3
|
+
if (hex.length !== 4) {
|
|
4
|
+
return hex;
|
|
5
|
+
}
|
|
6
|
+
return `#${hex[1]}${hex[1]}${hex[2]}${hex[2]}${hex[3]}${hex[3]}`;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* WCAG 2.1 relative luminance (0 = black, 1 = white) for an sRGB hex string.
|
|
10
|
+
*
|
|
11
|
+
* Accepts `#RGB` or `#RRGGBB` (case-insensitive hex digits). Trims surrounding whitespace.
|
|
12
|
+
* Returns `null` if the string is not a valid hex color.
|
|
13
|
+
*/
|
|
14
|
+
export function wcagRelativeLuminanceFromHex(hex) {
|
|
15
|
+
const trimmed = hex.trim();
|
|
16
|
+
if (!HEX_COLOR_REGEX.test(trimmed)) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const full = expandShortHex(trimmed);
|
|
20
|
+
const n = Number.parseInt(full.slice(1), 16);
|
|
21
|
+
if (!Number.isFinite(n)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const toLinear = (c) => (c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4);
|
|
25
|
+
const r = toLinear(((n >> 16) & 0xff) / 255);
|
|
26
|
+
const g = toLinear(((n >> 8) & 0xff) / 255);
|
|
27
|
+
const b = toLinear((n & 0xff) / 255);
|
|
28
|
+
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=wcagRelativeLuminanceFromHex.js.map
|