@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.
Files changed (625) hide show
  1. package/ANALYTICS.md +160 -0
  2. package/CHANGELOG.md +2565 -0
  3. package/CMS_INFRASTRUCTURE.md +370 -0
  4. package/CONSENT.md +121 -0
  5. package/README.md +638 -0
  6. package/dist/CmsRendererConfig.d.ts +259 -0
  7. package/dist/CmsRendererConfig.d.ts.map +1 -0
  8. package/dist/CmsRendererConfig.js +2 -0
  9. package/dist/CmsRendererConfig.js.map +1 -0
  10. package/dist/__mocks__/server-only.d.ts +2 -0
  11. package/dist/__mocks__/server-only.d.ts.map +1 -0
  12. package/dist/__mocks__/server-only.js +2 -0
  13. package/dist/__mocks__/server-only.js.map +1 -0
  14. package/dist/analytics/AnalyticsPageTracker.d.ts +11 -0
  15. package/dist/analytics/AnalyticsPageTracker.d.ts.map +1 -0
  16. package/dist/analytics/AnalyticsPageTracker.js +26 -0
  17. package/dist/analytics/AnalyticsPageTracker.js.map +1 -0
  18. package/dist/analytics/AnalyticsProvider.d.ts +18 -0
  19. package/dist/analytics/AnalyticsProvider.d.ts.map +1 -0
  20. package/dist/analytics/AnalyticsProvider.js +48 -0
  21. package/dist/analytics/AnalyticsProvider.js.map +1 -0
  22. package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts +13 -0
  23. package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts.map +1 -0
  24. package/dist/analytics/adapters/CompositeAnalyticsAdapter.js +35 -0
  25. package/dist/analytics/adapters/CompositeAnalyticsAdapter.js.map +1 -0
  26. package/dist/analytics/adapters/ConsentAwareAdapter.d.ts +20 -0
  27. package/dist/analytics/adapters/ConsentAwareAdapter.d.ts.map +1 -0
  28. package/dist/analytics/adapters/ConsentAwareAdapter.js +35 -0
  29. package/dist/analytics/adapters/ConsentAwareAdapter.js.map +1 -0
  30. package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts +12 -0
  31. package/dist/analytics/adapters/ConsoleAnalyticsAdapter.d.ts.map +1 -0
  32. package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js +22 -0
  33. package/dist/analytics/adapters/ConsoleAnalyticsAdapter.js.map +1 -0
  34. package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts +53 -0
  35. package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts.map +1 -0
  36. package/dist/analytics/adapters/GoogleTagManagerAdapter.js +134 -0
  37. package/dist/analytics/adapters/GoogleTagManagerAdapter.js.map +1 -0
  38. package/dist/analytics/adapters/index.d.ts +5 -0
  39. package/dist/analytics/adapters/index.d.ts.map +1 -0
  40. package/dist/analytics/adapters/index.js +5 -0
  41. package/dist/analytics/adapters/index.js.map +1 -0
  42. package/dist/analytics/types.d.ts +42 -0
  43. package/dist/analytics/types.d.ts.map +1 -0
  44. package/dist/analytics/types.js +2 -0
  45. package/dist/analytics/types.js.map +1 -0
  46. package/dist/analytics/useAnalytics.d.ts +44 -0
  47. package/dist/analytics/useAnalytics.d.ts.map +1 -0
  48. package/dist/analytics/useAnalytics.js +69 -0
  49. package/dist/analytics/useAnalytics.js.map +1 -0
  50. package/dist/analytics/video/classifySeek.d.ts +15 -0
  51. package/dist/analytics/video/classifySeek.d.ts.map +1 -0
  52. package/dist/analytics/video/classifySeek.js +32 -0
  53. package/dist/analytics/video/classifySeek.js.map +1 -0
  54. package/dist/analytics/video/createVideoEngagementSession.d.ts +51 -0
  55. package/dist/analytics/video/createVideoEngagementSession.d.ts.map +1 -0
  56. package/dist/analytics/video/createVideoEngagementSession.js +225 -0
  57. package/dist/analytics/video/createVideoEngagementSession.js.map +1 -0
  58. package/dist/analytics/video/index.d.ts +6 -0
  59. package/dist/analytics/video/index.d.ts.map +1 -0
  60. package/dist/analytics/video/index.js +6 -0
  61. package/dist/analytics/video/index.js.map +1 -0
  62. package/dist/analytics/video/loadYouTubeIframeApi.d.ts +50 -0
  63. package/dist/analytics/video/loadYouTubeIframeApi.d.ts.map +1 -0
  64. package/dist/analytics/video/loadYouTubeIframeApi.js +52 -0
  65. package/dist/analytics/video/loadYouTubeIframeApi.js.map +1 -0
  66. package/dist/analytics/video/useHtml5VideoEngagement.d.ts +8 -0
  67. package/dist/analytics/video/useHtml5VideoEngagement.d.ts.map +1 -0
  68. package/dist/analytics/video/useHtml5VideoEngagement.js +67 -0
  69. package/dist/analytics/video/useHtml5VideoEngagement.js.map +1 -0
  70. package/dist/analytics/video/useVideoEngagement.d.ts +19 -0
  71. package/dist/analytics/video/useVideoEngagement.d.ts.map +1 -0
  72. package/dist/analytics/video/useVideoEngagement.js +80 -0
  73. package/dist/analytics/video/useVideoEngagement.js.map +1 -0
  74. package/dist/analytics/video/videoEngagementTypes.d.ts +52 -0
  75. package/dist/analytics/video/videoEngagementTypes.d.ts.map +1 -0
  76. package/dist/analytics/video/videoEngagementTypes.js +45 -0
  77. package/dist/analytics/video/videoEngagementTypes.js.map +1 -0
  78. package/dist/app-helpers.d.ts +196 -0
  79. package/dist/app-helpers.d.ts.map +1 -0
  80. package/dist/app-helpers.js +322 -0
  81. package/dist/app-helpers.js.map +1 -0
  82. package/dist/cmsRegistration.d.ts +302 -0
  83. package/dist/cmsRegistration.d.ts.map +1 -0
  84. package/dist/cmsRegistration.js +242 -0
  85. package/dist/cmsRegistration.js.map +1 -0
  86. package/dist/components/Animation.d.ts +3 -0
  87. package/dist/components/Animation.d.ts.map +1 -0
  88. package/dist/components/Animation.js +2 -0
  89. package/dist/components/Animation.js.map +1 -0
  90. package/dist/components/AnimationComponent.d.ts +9 -0
  91. package/dist/components/AnimationComponent.d.ts.map +1 -0
  92. package/dist/components/AnimationComponent.js +18 -0
  93. package/dist/components/AnimationComponent.js.map +1 -0
  94. package/dist/components/ClientMonitor.d.ts +7 -0
  95. package/dist/components/ClientMonitor.d.ts.map +1 -0
  96. package/dist/components/ClientMonitor.js +368 -0
  97. package/dist/components/ClientMonitor.js.map +1 -0
  98. package/dist/components/CmsCollection.d.ts +68 -0
  99. package/dist/components/CmsCollection.d.ts.map +1 -0
  100. package/dist/components/CmsCollection.js +68 -0
  101. package/dist/components/CmsCollection.js.map +1 -0
  102. package/dist/components/CmsComponent.d.ts +68 -0
  103. package/dist/components/CmsComponent.d.ts.map +1 -0
  104. package/dist/components/CmsComponent.js +68 -0
  105. package/dist/components/CmsComponent.js.map +1 -0
  106. package/dist/components/CmsContent.d.ts +105 -0
  107. package/dist/components/CmsContent.d.ts.map +1 -0
  108. package/dist/components/CmsContent.js +200 -0
  109. package/dist/components/CmsContent.js.map +1 -0
  110. package/dist/components/CmsConversionErrors.d.ts +8 -0
  111. package/dist/components/CmsConversionErrors.d.ts.map +1 -0
  112. package/dist/components/CmsConversionErrors.js +51 -0
  113. package/dist/components/CmsConversionErrors.js.map +1 -0
  114. package/dist/components/CmsDataError.d.ts +14 -0
  115. package/dist/components/CmsDataError.d.ts.map +1 -0
  116. package/dist/components/CmsDataError.js +7 -0
  117. package/dist/components/CmsDataError.js.map +1 -0
  118. package/dist/components/CmsDevLayout.d.ts +23 -0
  119. package/dist/components/CmsDevLayout.d.ts.map +1 -0
  120. package/dist/components/CmsDevLayout.js +26 -0
  121. package/dist/components/CmsDevLayout.js.map +1 -0
  122. package/dist/components/CmsEmbeddedContent.d.ts +10 -0
  123. package/dist/components/CmsEmbeddedContent.d.ts.map +1 -0
  124. package/dist/components/CmsEmbeddedContent.js +51 -0
  125. package/dist/components/CmsEmbeddedContent.js.map +1 -0
  126. package/dist/components/CmsExternalComponent.d.ts +63 -0
  127. package/dist/components/CmsExternalComponent.d.ts.map +1 -0
  128. package/dist/components/CmsExternalComponent.js +68 -0
  129. package/dist/components/CmsExternalComponent.js.map +1 -0
  130. package/dist/components/CmsRoutesLayout.d.ts +16 -0
  131. package/dist/components/CmsRoutesLayout.d.ts.map +1 -0
  132. package/dist/components/CmsRoutesLayout.js +17 -0
  133. package/dist/components/CmsRoutesLayout.js.map +1 -0
  134. package/dist/components/DefaultExternalVideoPlayButton.d.ts +3 -0
  135. package/dist/components/DefaultExternalVideoPlayButton.d.ts.map +1 -0
  136. package/dist/components/DefaultExternalVideoPlayButton.js +6 -0
  137. package/dist/components/DefaultExternalVideoPlayButton.js.map +1 -0
  138. package/dist/components/DotLottieAnimationComponent.d.ts +16 -0
  139. package/dist/components/DotLottieAnimationComponent.d.ts.map +1 -0
  140. package/dist/components/DotLottieAnimationComponent.js +88 -0
  141. package/dist/components/DotLottieAnimationComponent.js.map +1 -0
  142. package/dist/components/ErrorBoundary.d.ts +19 -0
  143. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  144. package/dist/components/ErrorBoundary.js +32 -0
  145. package/dist/components/ErrorBoundary.js.map +1 -0
  146. package/dist/components/ExternalVideoComponent.d.ts +9 -0
  147. package/dist/components/ExternalVideoComponent.d.ts.map +1 -0
  148. package/dist/components/ExternalVideoComponent.js +39 -0
  149. package/dist/components/ExternalVideoComponent.js.map +1 -0
  150. package/dist/components/ExternalVimeoEmbed.d.ts +12 -0
  151. package/dist/components/ExternalVimeoEmbed.d.ts.map +1 -0
  152. package/dist/components/ExternalVimeoEmbed.js +211 -0
  153. package/dist/components/ExternalVimeoEmbed.js.map +1 -0
  154. package/dist/components/ExternalYouTubeEmbed.d.ts +9 -0
  155. package/dist/components/ExternalYouTubeEmbed.d.ts.map +1 -0
  156. package/dist/components/ExternalYouTubeEmbed.js +220 -0
  157. package/dist/components/ExternalYouTubeEmbed.js.map +1 -0
  158. package/dist/components/HeroLoopVideo.d.ts +13 -0
  159. package/dist/components/HeroLoopVideo.d.ts.map +1 -0
  160. package/dist/components/HeroLoopVideo.js +146 -0
  161. package/dist/components/HeroLoopVideo.js.map +1 -0
  162. package/dist/components/HtmlComponent.d.ts +21 -0
  163. package/dist/components/HtmlComponent.d.ts.map +1 -0
  164. package/dist/components/HtmlComponent.js +34 -0
  165. package/dist/components/HtmlComponent.js.map +1 -0
  166. package/dist/components/HtmlComponentScript.d.ts +12 -0
  167. package/dist/components/HtmlComponentScript.d.ts.map +1 -0
  168. package/dist/components/HtmlComponentScript.js +12 -0
  169. package/dist/components/HtmlComponentScript.js.map +1 -0
  170. package/dist/components/ImageComponent.d.ts +7 -0
  171. package/dist/components/ImageComponent.d.ts.map +1 -0
  172. package/dist/components/ImageComponent.js +20 -0
  173. package/dist/components/ImageComponent.js.map +1 -0
  174. package/dist/components/ImageKitClientVideo.d.ts +16 -0
  175. package/dist/components/ImageKitClientVideo.d.ts.map +1 -0
  176. package/dist/components/ImageKitClientVideo.js +211 -0
  177. package/dist/components/ImageKitClientVideo.js.map +1 -0
  178. package/dist/components/ImageKitHlsVideoClient.d.ts +21 -0
  179. package/dist/components/ImageKitHlsVideoClient.d.ts.map +1 -0
  180. package/dist/components/ImageKitHlsVideoClient.js +167 -0
  181. package/dist/components/ImageKitHlsVideoClient.js.map +1 -0
  182. package/dist/components/LazyAnimation.d.ts +16 -0
  183. package/dist/components/LazyAnimation.d.ts.map +1 -0
  184. package/dist/components/LazyAnimation.js +90 -0
  185. package/dist/components/LazyAnimation.js.map +1 -0
  186. package/dist/components/LazyVideo.d.ts +19 -0
  187. package/dist/components/LazyVideo.d.ts.map +1 -0
  188. package/dist/components/LazyVideo.js +134 -0
  189. package/dist/components/LazyVideo.js.map +1 -0
  190. package/dist/components/LocalVideo.d.ts +10 -0
  191. package/dist/components/LocalVideo.d.ts.map +1 -0
  192. package/dist/components/LocalVideo.js +66 -0
  193. package/dist/components/LocalVideo.js.map +1 -0
  194. package/dist/components/LocalVideoPlayChrome.d.ts +20 -0
  195. package/dist/components/LocalVideoPlayChrome.d.ts.map +1 -0
  196. package/dist/components/LocalVideoPlayChrome.js +22 -0
  197. package/dist/components/LocalVideoPlayChrome.js.map +1 -0
  198. package/dist/components/LocalVideoPlayOverlay.d.ts +19 -0
  199. package/dist/components/LocalVideoPlayOverlay.d.ts.map +1 -0
  200. package/dist/components/LocalVideoPlayOverlay.js +49 -0
  201. package/dist/components/LocalVideoPlayOverlay.js.map +1 -0
  202. package/dist/components/PictureComponent.d.ts +7 -0
  203. package/dist/components/PictureComponent.d.ts.map +1 -0
  204. package/dist/components/PictureComponent.js +29 -0
  205. package/dist/components/PictureComponent.js.map +1 -0
  206. package/dist/components/Preview.d.ts +2 -0
  207. package/dist/components/Preview.d.ts.map +1 -0
  208. package/dist/components/Preview.js +52 -0
  209. package/dist/components/Preview.js.map +1 -0
  210. package/dist/components/StructuredData.d.ts +20 -0
  211. package/dist/components/StructuredData.d.ts.map +1 -0
  212. package/dist/components/StructuredData.js +116 -0
  213. package/dist/components/StructuredData.js.map +1 -0
  214. package/dist/components/SvgComponent.d.ts +7 -0
  215. package/dist/components/SvgComponent.d.ts.map +1 -0
  216. package/dist/components/SvgComponent.js +10 -0
  217. package/dist/components/SvgComponent.js.map +1 -0
  218. package/dist/components/SvgIconComponent.d.ts +20 -0
  219. package/dist/components/SvgIconComponent.d.ts.map +1 -0
  220. package/dist/components/SvgIconComponent.js +23 -0
  221. package/dist/components/SvgIconComponent.js.map +1 -0
  222. package/dist/components/SvgImageComponent.d.ts +7 -0
  223. package/dist/components/SvgImageComponent.d.ts.map +1 -0
  224. package/dist/components/SvgImageComponent.js +10 -0
  225. package/dist/components/SvgImageComponent.js.map +1 -0
  226. package/dist/components/SvgSpriteSheet.d.ts +24 -0
  227. package/dist/components/SvgSpriteSheet.d.ts.map +1 -0
  228. package/dist/components/SvgSpriteSheet.js +37 -0
  229. package/dist/components/SvgSpriteSheet.js.map +1 -0
  230. package/dist/components/Video.d.ts +11 -0
  231. package/dist/components/Video.d.ts.map +1 -0
  232. package/dist/components/Video.js +2 -0
  233. package/dist/components/Video.js.map +1 -0
  234. package/dist/components/VideoComponent.d.ts +10 -0
  235. package/dist/components/VideoComponent.d.ts.map +1 -0
  236. package/dist/components/VideoComponent.js +22 -0
  237. package/dist/components/VideoComponent.js.map +1 -0
  238. package/dist/components/Visual.d.ts +43 -0
  239. package/dist/components/Visual.d.ts.map +1 -0
  240. package/dist/components/Visual.js +60 -0
  241. package/dist/components/Visual.js.map +1 -0
  242. package/dist/components/VisualComponent.d.ts +83 -0
  243. package/dist/components/VisualComponent.d.ts.map +1 -0
  244. package/dist/components/VisualComponent.js +136 -0
  245. package/dist/components/VisualComponent.js.map +1 -0
  246. package/dist/components/banner/BannerClient.d.ts +13 -0
  247. package/dist/components/banner/BannerClient.d.ts.map +1 -0
  248. package/dist/components/banner/BannerClient.js +38 -0
  249. package/dist/components/banner/BannerClient.js.map +1 -0
  250. package/dist/components/banner/BannerManager.d.ts +26 -0
  251. package/dist/components/banner/BannerManager.d.ts.map +1 -0
  252. package/dist/components/banner/BannerManager.js +35 -0
  253. package/dist/components/banner/BannerManager.js.map +1 -0
  254. package/dist/components/banner/BannerTargeting.d.ts +20 -0
  255. package/dist/components/banner/BannerTargeting.d.ts.map +1 -0
  256. package/dist/components/banner/BannerTargeting.js +204 -0
  257. package/dist/components/banner/BannerTargeting.js.map +1 -0
  258. package/dist/components/banner/bannerVisibility.d.ts +20 -0
  259. package/dist/components/banner/bannerVisibility.d.ts.map +1 -0
  260. package/dist/components/banner/bannerVisibility.js +73 -0
  261. package/dist/components/banner/bannerVisibility.js.map +1 -0
  262. package/dist/components/clientMonitorVideos.d.ts +6 -0
  263. package/dist/components/clientMonitorVideos.d.ts.map +1 -0
  264. package/dist/components/clientMonitorVideos.js +116 -0
  265. package/dist/components/clientMonitorVideos.js.map +1 -0
  266. package/dist/components/dotlottieWasm.d.ts +19 -0
  267. package/dist/components/dotlottieWasm.d.ts.map +1 -0
  268. package/dist/components/dotlottieWasm.js +62 -0
  269. package/dist/components/dotlottieWasm.js.map +1 -0
  270. package/dist/components/heroLoop.d.ts +22 -0
  271. package/dist/components/heroLoop.d.ts.map +1 -0
  272. package/dist/components/heroLoop.js +24 -0
  273. package/dist/components/heroLoop.js.map +1 -0
  274. package/dist/components/svg.d.ts +3 -0
  275. package/dist/components/svg.d.ts.map +1 -0
  276. package/dist/components/svg.js +64 -0
  277. package/dist/components/svg.js.map +1 -0
  278. package/dist/context/ExternalVideoPlayButtonContext.d.ts +7 -0
  279. package/dist/context/ExternalVideoPlayButtonContext.d.ts.map +1 -0
  280. package/dist/context/ExternalVideoPlayButtonContext.js +11 -0
  281. package/dist/context/ExternalVideoPlayButtonContext.js.map +1 -0
  282. package/dist/elements/RtfOrString.d.ts +26 -0
  283. package/dist/elements/RtfOrString.d.ts.map +1 -0
  284. package/dist/elements/RtfOrString.js +13 -0
  285. package/dist/elements/RtfOrString.js.map +1 -0
  286. package/dist/elements/TrackedLink.d.ts +25 -0
  287. package/dist/elements/TrackedLink.d.ts.map +1 -0
  288. package/dist/elements/TrackedLink.js +96 -0
  289. package/dist/elements/TrackedLink.js.map +1 -0
  290. package/dist/elements/UtmLink.d.ts +7 -0
  291. package/dist/elements/UtmLink.d.ts.map +1 -0
  292. package/dist/elements/UtmLink.js +24 -0
  293. package/dist/elements/UtmLink.js.map +1 -0
  294. package/dist/framework/BackgroundMedia.d.ts +12 -0
  295. package/dist/framework/BackgroundMedia.d.ts.map +1 -0
  296. package/dist/framework/BackgroundMedia.js +23 -0
  297. package/dist/framework/BackgroundMedia.js.map +1 -0
  298. package/dist/framework/ComponentErrorIndicator.d.ts +12 -0
  299. package/dist/framework/ComponentErrorIndicator.d.ts.map +1 -0
  300. package/dist/framework/ComponentErrorIndicator.js +29 -0
  301. package/dist/framework/ComponentErrorIndicator.js.map +1 -0
  302. package/dist/framework/ContainedVisual.d.ts +12 -0
  303. package/dist/framework/ContainedVisual.d.ts.map +1 -0
  304. package/dist/framework/ContainedVisual.js +14 -0
  305. package/dist/framework/ContainedVisual.js.map +1 -0
  306. package/dist/framework/ResponsiveVisual.d.ts +14 -0
  307. package/dist/framework/ResponsiveVisual.d.ts.map +1 -0
  308. package/dist/framework/ResponsiveVisual.js +14 -0
  309. package/dist/framework/ResponsiveVisual.js.map +1 -0
  310. package/dist/framework/componentErrors.d.ts +19 -0
  311. package/dist/framework/componentErrors.d.ts.map +1 -0
  312. package/dist/framework/componentErrors.js +31 -0
  313. package/dist/framework/componentErrors.js.map +1 -0
  314. package/dist/hooks/useClickTracking.d.ts +58 -0
  315. package/dist/hooks/useClickTracking.d.ts.map +1 -0
  316. package/dist/hooks/useClickTracking.js +48 -0
  317. package/dist/hooks/useClickTracking.js.map +1 -0
  318. package/dist/hooks/useDocumentVisible.d.ts +2 -0
  319. package/dist/hooks/useDocumentVisible.d.ts.map +1 -0
  320. package/dist/hooks/useDocumentVisible.js +17 -0
  321. package/dist/hooks/useDocumentVisible.js.map +1 -0
  322. package/dist/hooks/visibility.d.ts +14 -0
  323. package/dist/hooks/visibility.d.ts.map +1 -0
  324. package/dist/hooks/visibility.js +122 -0
  325. package/dist/hooks/visibility.js.map +1 -0
  326. package/dist/index.d.ts +134 -0
  327. package/dist/index.d.ts.map +1 -0
  328. package/dist/index.js +120 -0
  329. package/dist/index.js.map +1 -0
  330. package/dist/media-library/MediaLibraryAnimationPlayer.d.ts +9 -0
  331. package/dist/media-library/MediaLibraryAnimationPlayer.d.ts.map +1 -0
  332. package/dist/media-library/MediaLibraryAnimationPlayer.js +99 -0
  333. package/dist/media-library/MediaLibraryAnimationPlayer.js.map +1 -0
  334. package/dist/media-library/MediaLibraryGrid.d.ts +5 -0
  335. package/dist/media-library/MediaLibraryGrid.d.ts.map +1 -0
  336. package/dist/media-library/MediaLibraryGrid.js +88 -0
  337. package/dist/media-library/MediaLibraryGrid.js.map +1 -0
  338. package/dist/media-library/MediaLibraryPage.d.ts +17 -0
  339. package/dist/media-library/MediaLibraryPage.d.ts.map +1 -0
  340. package/dist/media-library/MediaLibraryPage.js +30 -0
  341. package/dist/media-library/MediaLibraryPage.js.map +1 -0
  342. package/dist/media-library/index.d.ts +4 -0
  343. package/dist/media-library/index.d.ts.map +1 -0
  344. package/dist/media-library/index.js +4 -0
  345. package/dist/media-library/index.js.map +1 -0
  346. package/dist/media-library/types.d.ts +8 -0
  347. package/dist/media-library/types.d.ts.map +1 -0
  348. package/dist/media-library/types.js +12 -0
  349. package/dist/media-library/types.js.map +1 -0
  350. package/dist/route-handlers/createCmsTxtHandler.d.ts +19 -0
  351. package/dist/route-handlers/createCmsTxtHandler.d.ts.map +1 -0
  352. package/dist/route-handlers/createCmsTxtHandler.js +154 -0
  353. package/dist/route-handlers/createCmsTxtHandler.js.map +1 -0
  354. package/dist/route-handlers/createDiscoveryHandler.d.ts +67 -0
  355. package/dist/route-handlers/createDiscoveryHandler.d.ts.map +1 -0
  356. package/dist/route-handlers/createDiscoveryHandler.js +190 -0
  357. package/dist/route-handlers/createDiscoveryHandler.js.map +1 -0
  358. package/dist/route-handlers/createGuidelinesHandler.d.ts +16 -0
  359. package/dist/route-handlers/createGuidelinesHandler.d.ts.map +1 -0
  360. package/dist/route-handlers/createGuidelinesHandler.js +100 -0
  361. package/dist/route-handlers/createGuidelinesHandler.js.map +1 -0
  362. package/dist/route-handlers/createMediaLibraryHandler.d.ts +19 -0
  363. package/dist/route-handlers/createMediaLibraryHandler.d.ts.map +1 -0
  364. package/dist/route-handlers/createMediaLibraryHandler.js +76 -0
  365. package/dist/route-handlers/createMediaLibraryHandler.js.map +1 -0
  366. package/dist/route-handlers/index.d.ts +9 -0
  367. package/dist/route-handlers/index.d.ts.map +1 -0
  368. package/dist/route-handlers/index.js +5 -0
  369. package/dist/route-handlers/index.js.map +1 -0
  370. package/dist/rtf/rtf.d.ts +66 -0
  371. package/dist/rtf/rtf.d.ts.map +1 -0
  372. package/dist/rtf/rtf.js +183 -0
  373. package/dist/rtf/rtf.js.map +1 -0
  374. package/dist/server/index.d.ts +20 -0
  375. package/dist/server/index.d.ts.map +1 -0
  376. package/dist/server/index.js +11 -0
  377. package/dist/server/index.js.map +1 -0
  378. package/dist/server/merge-prepared-page-context.d.ts +8 -0
  379. package/dist/server/merge-prepared-page-context.d.ts.map +1 -0
  380. package/dist/server/merge-prepared-page-context.js +11 -0
  381. package/dist/server/merge-prepared-page-context.js.map +1 -0
  382. package/dist/server/page-test-merge.d.ts +7 -0
  383. package/dist/server/page-test-merge.d.ts.map +1 -0
  384. package/dist/server/page-test-merge.js +12 -0
  385. package/dist/server/page-test-merge.js.map +1 -0
  386. package/dist/server/route-handlers-types.d.ts +124 -0
  387. package/dist/server/route-handlers-types.d.ts.map +1 -0
  388. package/dist/server/route-handlers-types.js +2 -0
  389. package/dist/server/route-handlers-types.js.map +1 -0
  390. package/dist/server/route-handlers.d.ts +99 -0
  391. package/dist/server/route-handlers.d.ts.map +1 -0
  392. package/dist/server/route-handlers.js +1268 -0
  393. package/dist/server/route-handlers.js.map +1 -0
  394. package/dist/server/route-types.d.ts +78 -0
  395. package/dist/server/route-types.d.ts.map +1 -0
  396. package/dist/server/route-types.js +4 -0
  397. package/dist/server/route-types.js.map +1 -0
  398. package/dist/server/tag-index-guards.d.ts +33 -0
  399. package/dist/server/tag-index-guards.d.ts.map +1 -0
  400. package/dist/server/tag-index-guards.js +33 -0
  401. package/dist/server/tag-index-guards.js.map +1 -0
  402. package/dist/server/template-route-handlers.d.ts +7 -0
  403. package/dist/server/template-route-handlers.d.ts.map +1 -0
  404. package/dist/server/template-route-handlers.js +35 -0
  405. package/dist/server/template-route-handlers.js.map +1 -0
  406. package/dist/showcase/components/AllViewPanel.d.ts +7 -0
  407. package/dist/showcase/components/AllViewPanel.d.ts.map +1 -0
  408. package/dist/showcase/components/AllViewPanel.js +55 -0
  409. package/dist/showcase/components/AllViewPanel.js.map +1 -0
  410. package/dist/showcase/components/Controls.d.ts +15 -0
  411. package/dist/showcase/components/Controls.d.ts.map +1 -0
  412. package/dist/showcase/components/Controls.js +71 -0
  413. package/dist/showcase/components/Controls.js.map +1 -0
  414. package/dist/showcase/components/ControlsWrapper.d.ts +15 -0
  415. package/dist/showcase/components/ControlsWrapper.d.ts.map +1 -0
  416. package/dist/showcase/components/ControlsWrapper.js +9 -0
  417. package/dist/showcase/components/ControlsWrapper.js.map +1 -0
  418. package/dist/showcase/components/IframeHeightReporter.d.ts +13 -0
  419. package/dist/showcase/components/IframeHeightReporter.d.ts.map +1 -0
  420. package/dist/showcase/components/IframeHeightReporter.js +51 -0
  421. package/dist/showcase/components/IframeHeightReporter.js.map +1 -0
  422. package/dist/showcase/components/PreviewPanel.d.ts +18 -0
  423. package/dist/showcase/components/PreviewPanel.d.ts.map +1 -0
  424. package/dist/showcase/components/PreviewPanel.js +52 -0
  425. package/dist/showcase/components/PreviewPanel.js.map +1 -0
  426. package/dist/showcase/components/ScaledIframe.d.ts +22 -0
  427. package/dist/showcase/components/ScaledIframe.d.ts.map +1 -0
  428. package/dist/showcase/components/ScaledIframe.js +41 -0
  429. package/dist/showcase/components/ScaledIframe.js.map +1 -0
  430. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts +21 -0
  431. package/dist/showcase/components/ShowcaseAllRenderPage.d.ts.map +1 -0
  432. package/dist/showcase/components/ShowcaseAllRenderPage.js +36 -0
  433. package/dist/showcase/components/ShowcaseAllRenderPage.js.map +1 -0
  434. package/dist/showcase/components/ShowcaseAnimationRoot.d.ts +8 -0
  435. package/dist/showcase/components/ShowcaseAnimationRoot.d.ts.map +1 -0
  436. package/dist/showcase/components/ShowcaseAnimationRoot.js +10 -0
  437. package/dist/showcase/components/ShowcaseAnimationRoot.js.map +1 -0
  438. package/dist/showcase/components/ShowcasePage.d.ts +25 -0
  439. package/dist/showcase/components/ShowcasePage.d.ts.map +1 -0
  440. package/dist/showcase/components/ShowcasePage.js +31 -0
  441. package/dist/showcase/components/ShowcasePage.js.map +1 -0
  442. package/dist/showcase/components/ShowcaseRenderPage.d.ts +21 -0
  443. package/dist/showcase/components/ShowcaseRenderPage.d.ts.map +1 -0
  444. package/dist/showcase/components/ShowcaseRenderPage.js +45 -0
  445. package/dist/showcase/components/ShowcaseRenderPage.js.map +1 -0
  446. package/dist/showcase/components/ShowcaseViewportGuard.d.ts +14 -0
  447. package/dist/showcase/components/ShowcaseViewportGuard.d.ts.map +1 -0
  448. package/dist/showcase/components/ShowcaseViewportGuard.js +77 -0
  449. package/dist/showcase/components/ShowcaseViewportGuard.js.map +1 -0
  450. package/dist/showcase/components/TopBar.d.ts +11 -0
  451. package/dist/showcase/components/TopBar.d.ts.map +1 -0
  452. package/dist/showcase/components/TopBar.js +105 -0
  453. package/dist/showcase/components/TopBar.js.map +1 -0
  454. package/dist/showcase/controlFieldSupport.d.ts +12 -0
  455. package/dist/showcase/controlFieldSupport.d.ts.map +1 -0
  456. package/dist/showcase/controlFieldSupport.js +35 -0
  457. package/dist/showcase/controlFieldSupport.js.map +1 -0
  458. package/dist/showcase/index.d.ts +20 -0
  459. package/dist/showcase/index.d.ts.map +1 -0
  460. package/dist/showcase/index.js +20 -0
  461. package/dist/showcase/index.js.map +1 -0
  462. package/dist/showcase/isCmsShowcase.d.ts +10 -0
  463. package/dist/showcase/isCmsShowcase.d.ts.map +1 -0
  464. package/dist/showcase/isCmsShowcase.js +12 -0
  465. package/dist/showcase/isCmsShowcase.js.map +1 -0
  466. package/dist/showcase/mergeShowcaseMocks.d.ts +34 -0
  467. package/dist/showcase/mergeShowcaseMocks.d.ts.map +1 -0
  468. package/dist/showcase/mergeShowcaseMocks.js +31 -0
  469. package/dist/showcase/mergeShowcaseMocks.js.map +1 -0
  470. package/dist/showcase/mockFactory.d.ts +47 -0
  471. package/dist/showcase/mockFactory.d.ts.map +1 -0
  472. package/dist/showcase/mockFactory.js +726 -0
  473. package/dist/showcase/mockFactory.js.map +1 -0
  474. package/dist/showcase/showcaseLayout.d.ts +17 -0
  475. package/dist/showcase/showcaseLayout.d.ts.map +1 -0
  476. package/dist/showcase/showcaseLayout.js +11 -0
  477. package/dist/showcase/showcaseLayout.js.map +1 -0
  478. package/dist/showcase/showcaseRelatedContent.d.ts +30 -0
  479. package/dist/showcase/showcaseRelatedContent.d.ts.map +1 -0
  480. package/dist/showcase/showcaseRelatedContent.js +106 -0
  481. package/dist/showcase/showcaseRelatedContent.js.map +1 -0
  482. package/dist/showcase/types.d.ts +21 -0
  483. package/dist/showcase/types.d.ts.map +1 -0
  484. package/dist/showcase/types.js +19 -0
  485. package/dist/showcase/types.js.map +1 -0
  486. package/dist/utils/UnsupportedWarning.d.ts +30 -0
  487. package/dist/utils/UnsupportedWarning.d.ts.map +1 -0
  488. package/dist/utils/UnsupportedWarning.js +44 -0
  489. package/dist/utils/UnsupportedWarning.js.map +1 -0
  490. package/dist/utils/UnusedChecker.d.ts +51 -0
  491. package/dist/utils/UnusedChecker.d.ts.map +1 -0
  492. package/dist/utils/UnusedChecker.js +96 -0
  493. package/dist/utils/UnusedChecker.js.map +1 -0
  494. package/dist/utils/agent-ready.d.ts +103 -0
  495. package/dist/utils/agent-ready.d.ts.map +1 -0
  496. package/dist/utils/agent-ready.js +246 -0
  497. package/dist/utils/agent-ready.js.map +1 -0
  498. package/dist/utils/assertValidSiteBaseUrl.d.ts +8 -0
  499. package/dist/utils/assertValidSiteBaseUrl.d.ts.map +1 -0
  500. package/dist/utils/assertValidSiteBaseUrl.js +31 -0
  501. package/dist/utils/assertValidSiteBaseUrl.js.map +1 -0
  502. package/dist/utils/breadcrumbUtils.d.ts +64 -0
  503. package/dist/utils/breadcrumbUtils.d.ts.map +1 -0
  504. package/dist/utils/breadcrumbUtils.js +73 -0
  505. package/dist/utils/breadcrumbUtils.js.map +1 -0
  506. package/dist/utils/buildPageMetadata.d.ts +139 -0
  507. package/dist/utils/buildPageMetadata.d.ts.map +1 -0
  508. package/dist/utils/buildPageMetadata.js +218 -0
  509. package/dist/utils/buildPageMetadata.js.map +1 -0
  510. package/dist/utils/cn.d.ts +29 -0
  511. package/dist/utils/cn.d.ts.map +1 -0
  512. package/dist/utils/cn.js +32 -0
  513. package/dist/utils/cn.js.map +1 -0
  514. package/dist/utils/componentUtils.d.ts +82 -0
  515. package/dist/utils/componentUtils.d.ts.map +1 -0
  516. package/dist/utils/componentUtils.js +327 -0
  517. package/dist/utils/componentUtils.js.map +1 -0
  518. package/dist/utils/convertText.d.ts +2 -0
  519. package/dist/utils/convertText.d.ts.map +1 -0
  520. package/dist/utils/convertText.js +35 -0
  521. package/dist/utils/convertText.js.map +1 -0
  522. package/dist/utils/createDefaultRenderText.d.ts +17 -0
  523. package/dist/utils/createDefaultRenderText.d.ts.map +1 -0
  524. package/dist/utils/createDefaultRenderText.js +25 -0
  525. package/dist/utils/createDefaultRenderText.js.map +1 -0
  526. package/dist/utils/errorHandling.d.ts +37 -0
  527. package/dist/utils/errorHandling.d.ts.map +1 -0
  528. package/dist/utils/errorHandling.js +61 -0
  529. package/dist/utils/errorHandling.js.map +1 -0
  530. package/dist/utils/errorMonitoring.d.ts +17 -0
  531. package/dist/utils/errorMonitoring.d.ts.map +1 -0
  532. package/dist/utils/errorMonitoring.js +26 -0
  533. package/dist/utils/errorMonitoring.js.map +1 -0
  534. package/dist/utils/imageKitVideoHls.d.ts +3 -0
  535. package/dist/utils/imageKitVideoHls.d.ts.map +1 -0
  536. package/dist/utils/imageKitVideoHls.js +5 -0
  537. package/dist/utils/imageKitVideoHls.js.map +1 -0
  538. package/dist/utils/interpolateMetaText.d.ts +9 -0
  539. package/dist/utils/interpolateMetaText.d.ts.map +1 -0
  540. package/dist/utils/interpolateMetaText.js +21 -0
  541. package/dist/utils/interpolateMetaText.js.map +1 -0
  542. package/dist/utils/linkAccessibility.d.ts +13 -0
  543. package/dist/utils/linkAccessibility.d.ts.map +1 -0
  544. package/dist/utils/linkAccessibility.js +14 -0
  545. package/dist/utils/linkAccessibility.js.map +1 -0
  546. package/dist/utils/linkResolution.d.ts +15 -0
  547. package/dist/utils/linkResolution.d.ts.map +1 -0
  548. package/dist/utils/linkResolution.js +19 -0
  549. package/dist/utils/linkResolution.js.map +1 -0
  550. package/dist/utils/listing-page-heading.d.ts +16 -0
  551. package/dist/utils/listing-page-heading.d.ts.map +1 -0
  552. package/dist/utils/listing-page-heading.js +24 -0
  553. package/dist/utils/listing-page-heading.js.map +1 -0
  554. package/dist/utils/listingStructuredData.d.ts +28 -0
  555. package/dist/utils/listingStructuredData.d.ts.map +1 -0
  556. package/dist/utils/listingStructuredData.js +65 -0
  557. package/dist/utils/listingStructuredData.js.map +1 -0
  558. package/dist/utils/marketingSiteSitemap.d.ts +103 -0
  559. package/dist/utils/marketingSiteSitemap.d.ts.map +1 -0
  560. package/dist/utils/marketingSiteSitemap.js +352 -0
  561. package/dist/utils/marketingSiteSitemap.js.map +1 -0
  562. package/dist/utils/previewPageUtils.d.ts +61 -0
  563. package/dist/utils/previewPageUtils.d.ts.map +1 -0
  564. package/dist/utils/previewPageUtils.js +72 -0
  565. package/dist/utils/previewPageUtils.js.map +1 -0
  566. package/dist/utils/previewUtils.d.ts +59 -0
  567. package/dist/utils/previewUtils.d.ts.map +1 -0
  568. package/dist/utils/previewUtils.js +60 -0
  569. package/dist/utils/previewUtils.js.map +1 -0
  570. package/dist/utils/processCollectionLinks.d.ts +11 -0
  571. package/dist/utils/processCollectionLinks.d.ts.map +1 -0
  572. package/dist/utils/processCollectionLinks.js +38 -0
  573. package/dist/utils/processCollectionLinks.js.map +1 -0
  574. package/dist/utils/processTextContent.d.ts +18 -0
  575. package/dist/utils/processTextContent.d.ts.map +1 -0
  576. package/dist/utils/processTextContent.js +24 -0
  577. package/dist/utils/processTextContent.js.map +1 -0
  578. package/dist/utils/reactNodeText.d.ts +7 -0
  579. package/dist/utils/reactNodeText.d.ts.map +1 -0
  580. package/dist/utils/reactNodeText.js +43 -0
  581. package/dist/utils/reactNodeText.js.map +1 -0
  582. package/dist/utils/richTextNodeText.d.ts +13 -0
  583. package/dist/utils/richTextNodeText.d.ts.map +1 -0
  584. package/dist/utils/richTextNodeText.js +29 -0
  585. package/dist/utils/richTextNodeText.js.map +1 -0
  586. package/dist/utils/robots.d.ts +115 -0
  587. package/dist/utils/robots.d.ts.map +1 -0
  588. package/dist/utils/robots.js +174 -0
  589. package/dist/utils/robots.js.map +1 -0
  590. package/dist/utils/scopeCss.d.ts +15 -0
  591. package/dist/utils/scopeCss.d.ts.map +1 -0
  592. package/dist/utils/scopeCss.js +186 -0
  593. package/dist/utils/scopeCss.js.map +1 -0
  594. package/dist/utils/sitemap.d.ts +173 -0
  595. package/dist/utils/sitemap.d.ts.map +1 -0
  596. package/dist/utils/sitemap.js +257 -0
  597. package/dist/utils/sitemap.js.map +1 -0
  598. package/dist/utils/structuredDataUtils.d.ts +158 -0
  599. package/dist/utils/structuredDataUtils.d.ts.map +1 -0
  600. package/dist/utils/structuredDataUtils.js +225 -0
  601. package/dist/utils/structuredDataUtils.js.map +1 -0
  602. package/dist/utils/urlUtils.d.ts +30 -0
  603. package/dist/utils/urlUtils.d.ts.map +1 -0
  604. package/dist/utils/urlUtils.js +100 -0
  605. package/dist/utils/urlUtils.js.map +1 -0
  606. package/dist/utils/visualPositions.d.ts +3 -0
  607. package/dist/utils/visualPositions.d.ts.map +1 -0
  608. package/dist/utils/visualPositions.js +13 -0
  609. package/dist/utils/visualPositions.js.map +1 -0
  610. package/dist/utils/visualSizes.d.ts +5 -0
  611. package/dist/utils/visualSizes.d.ts.map +1 -0
  612. package/dist/utils/visualSizes.js +27 -0
  613. package/dist/utils/visualSizes.js.map +1 -0
  614. package/dist/utils/wcagRelativeLuminanceFromHex.d.ts +8 -0
  615. package/dist/utils/wcagRelativeLuminanceFromHex.d.ts.map +1 -0
  616. package/dist/utils/wcagRelativeLuminanceFromHex.js +30 -0
  617. package/dist/utils/wcagRelativeLuminanceFromHex.js.map +1 -0
  618. package/dist/utils/wrapHtmlComponentJs.d.ts +10 -0
  619. package/dist/utils/wrapHtmlComponentJs.d.ts.map +1 -0
  620. package/dist/utils/wrapHtmlComponentJs.js +12 -0
  621. package/dist/utils/wrapHtmlComponentJs.js.map +1 -0
  622. package/docs/PACKAGE_EXPORT_BOUNDARIES.md +98 -0
  623. package/docs/llms.md +358 -0
  624. package/package.json +108 -0
  625. package/src/showcase/README.md +269 -0
@@ -0,0 +1,20 @@
1
+ import type { ISchema } from '@se-studio/core-data-types';
2
+ import type React from 'react';
3
+ import { type StructuredDataContext } from '../utils/structuredDataUtils';
4
+ export interface StructuredDataProps {
5
+ /** The schemas to render */
6
+ schemas?: ReadonlyArray<ISchema>;
7
+ /** The context data to populate the templates */
8
+ context: StructuredDataContext;
9
+ }
10
+ /**
11
+ * Renders JSON-LD structured data by processing Mustache templates.
12
+ *
13
+ * Implements the "String-First" architecture:
14
+ * 1. Takes raw template strings from CMS
15
+ * 2. Renders them with Mustache using the provided context
16
+ * 3. Parses them to ensure valid JSON
17
+ * 4. Outputs a script tag with the final JSON-LD
18
+ */
19
+ export declare const StructuredData: React.FC<StructuredDataProps>;
20
+ //# sourceMappingURL=StructuredData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructuredData.d.ts","sourceRoot":"","sources":["../../src/components/StructuredData.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AAyBtC,MAAM,WAAW,mBAAmB;IAClC,4BAA4B;IAC5B,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,iDAAiD;IACjD,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAwCD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+DxD,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Mustache from 'mustache';
3
+ import { buildMergedStructuredDataJson, } from '../utils/structuredDataUtils';
4
+ const ESCAPE_MAP = {
5
+ '"': '\\"',
6
+ '\\': '\\\\',
7
+ '\b': '\\b',
8
+ '\f': '\\f',
9
+ '\n': '\\n',
10
+ '\r': '\\r',
11
+ '\t': '\\t',
12
+ };
13
+ // Override Mustache's default escaping to be JSON-safe instead of HTML-safe
14
+ // This ensures that:
15
+ // 1. Double quotes are escaped (breaking JSON strings)
16
+ // 2. Backslashes are escaped
17
+ // 3. Control characters are escaped
18
+ // 4. Forward slashes are NOT escaped (keeping URLs readable)
19
+ Mustache.escape = (text) => {
20
+ if (text === null || text === undefined) {
21
+ return '';
22
+ }
23
+ return String(text).replace(/["\\\b\f\n\r\t]/g, (char) => ESCAPE_MAP[char] ?? char);
24
+ };
25
+ /**
26
+ * Removes double slashes from URLs while preserving protocol.
27
+ * e.g. "https://example.com//path" -> "https://example.com/path"
28
+ * e.g. "/foo//bar" -> "/foo/bar"
29
+ */
30
+ function cleanUrl(str) {
31
+ // Replace double slashes that are NOT preceded by a colon
32
+ // captures the character before the slash in group 1 ($1)
33
+ return str.replace(/([^:]\/)\/+/g, '$1');
34
+ }
35
+ /**
36
+ * Recursively traverses an object/array and cleans any URL strings found.
37
+ */
38
+ function deepClean(obj) {
39
+ if (typeof obj === 'string') {
40
+ // Basic heuristic: if it looks like a URL (starts with http/https or /), clean it
41
+ if (obj.startsWith('http') || obj.startsWith('/')) {
42
+ return cleanUrl(obj);
43
+ }
44
+ return obj;
45
+ }
46
+ if (Array.isArray(obj)) {
47
+ return obj.map(deepClean);
48
+ }
49
+ if (typeof obj === 'object' && obj !== null) {
50
+ const result = {};
51
+ for (const [key, value] of Object.entries(obj)) {
52
+ result[key] = deepClean(value);
53
+ }
54
+ return result;
55
+ }
56
+ return obj;
57
+ }
58
+ /**
59
+ * Renders JSON-LD structured data by processing Mustache templates.
60
+ *
61
+ * Implements the "String-First" architecture:
62
+ * 1. Takes raw template strings from CMS
63
+ * 2. Renders them with Mustache using the provided context
64
+ * 3. Parses them to ensure valid JSON
65
+ * 4. Outputs a script tag with the final JSON-LD
66
+ */
67
+ export const StructuredData = ({ schemas, context }) => {
68
+ if (!schemas || schemas.length === 0) {
69
+ return null;
70
+ }
71
+ // Deduplicate schemas by ID
72
+ const uniqueSchemas = new Map();
73
+ schemas.forEach((schema) => {
74
+ if (schema.id) {
75
+ uniqueSchemas.set(schema.id, schema);
76
+ }
77
+ });
78
+ const validObjects = [];
79
+ const errors = [];
80
+ uniqueSchemas.forEach((schema) => {
81
+ try {
82
+ // 1. Render the template string with context
83
+ // Disable HTML escaping for triple braces {{{var}}} which is standard in Mustache
84
+ // but we need to ensure double braces {{var}} ARE escaped to prevent breaking JSON quotes
85
+ if (typeof schema.markup !== 'string') {
86
+ throw new Error(`Template should be a "string" but "${typeof schema.markup}" was given`);
87
+ }
88
+ const renderedString = Mustache.render(schema.markup, context);
89
+ // 2. Parse the rendered string into a JSON object
90
+ // This validates that the template produced valid JSON
91
+ const jsonObject = JSON.parse(renderedString);
92
+ if (jsonObject) {
93
+ validObjects.push(jsonObject);
94
+ }
95
+ }
96
+ catch (error) {
97
+ // If parsing fails, we skip this schema but continue with others
98
+ // In development, this would be a good place to log or show a warning
99
+ if (process.env.NODE_ENV === 'development') {
100
+ console.warn(`[StructuredData] Failed to parse schema "${schema.name}" (${schema.id}):`, error instanceof Error ? error.message : error);
101
+ }
102
+ errors.push(schema.name);
103
+ }
104
+ });
105
+ if (validObjects.length === 0) {
106
+ return null;
107
+ }
108
+ // 3. Construct the final output (flatten CMS @graph wrappers; single entity → bare object)
109
+ const finalJson = buildMergedStructuredDataJson(validObjects);
110
+ // 4. Clean the output (remove double slashes in URLs)
111
+ const cleanedJson = deepClean(finalJson);
112
+ return (_jsx("script", { type: "application/ld+json",
113
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: We need to set the inner HTML for the script tag
114
+ dangerouslySetInnerHTML: { __html: JSON.stringify(cleanedJson) } }));
115
+ };
116
+ //# sourceMappingURL=StructuredData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StructuredData.js","sourceRoot":"","sources":["../../src/components/StructuredData.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ISvgData } from '@se-studio/core-data-types';
2
+ import { type IImageProps } from './Visual';
3
+ declare function SvgComponent({ image, className, style, ...other }: {
4
+ image: ISvgData;
5
+ } & Omit<IImageProps, 'analytics' | 'componentLabel'>): import("react").JSX.Element;
6
+ export default SvgComponent;
7
+ //# sourceMappingURL=SvgComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgComponent.d.ts","sourceRoot":"","sources":["../../src/components/SvgComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,CAAC,+BAWzE;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { calculateCropDetails } from './Visual';
3
+ function SvgComponent({ image, className, style, ...other }) {
4
+ const cropProperties = calculateCropDetails(image);
5
+ return (_jsx("div", { className: className, style: { ...style, ...cropProperties },
6
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: Ok to set SVG inner HTML
7
+ dangerouslySetInnerHTML: { __html: image.data }, ...other }));
8
+ }
9
+ export default SvgComponent;
10
+ //# sourceMappingURL=SvgComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgComponent.js","sourceRoot":"","sources":["../../src/components/SvgComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACgE;IACxE,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,CACL,cACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE;QACtC,iFAAiF;QACjF,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAC3C,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ISvgImage } from '@se-studio/core-data-types';
2
+ import { type IImageProps } from './Visual';
3
+ /**
4
+ * Renders an SVG icon using a sprite sheet reference.
5
+ * The icon is rendered as an SVG with a <use> element that references
6
+ * a symbol in the sprite sheet. This allows the icon to use currentColor
7
+ * for theming via CSS.
8
+ *
9
+ * Icons are already collected during conversion and included in page data,
10
+ * so no registration is needed here.
11
+ *
12
+ * @param image - The SVG image data
13
+ * @param className - Additional CSS classes
14
+ * @param style - Additional inline styles
15
+ */
16
+ declare function SvgIconComponent({ image, className, style, ...rest }: {
17
+ image: ISvgImage;
18
+ } & Omit<IImageProps, 'analytics' | 'componentLabel'>): import("react").JSX.Element;
19
+ export default SvgIconComponent;
20
+ //# sourceMappingURL=SvgIconComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgIconComponent.d.ts","sourceRoot":"","sources":["../../src/components/SvgIconComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,CAAC,+BAmB1E;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { calculateCropDetails } from './Visual';
3
+ /**
4
+ * Renders an SVG icon using a sprite sheet reference.
5
+ * The icon is rendered as an SVG with a <use> element that references
6
+ * a symbol in the sprite sheet. This allows the icon to use currentColor
7
+ * for theming via CSS.
8
+ *
9
+ * Icons are already collected during conversion and included in page data,
10
+ * so no registration is needed here.
11
+ *
12
+ * @param image - The SVG image data
13
+ * @param className - Additional CSS classes
14
+ * @param style - Additional inline styles
15
+ */
16
+ function SvgIconComponent({ image, className, style, ...rest }) {
17
+ const { id, width, height, description, name } = image;
18
+ const iconId = `icon-${id}`;
19
+ const cropProperties = calculateCropDetails(image);
20
+ return (_jsx("svg", { width: width || undefined, height: height || undefined, fill: "none", className: className, style: { ...style, ...cropProperties }, "aria-label": description ?? name ?? undefined, role: "img", ...rest, children: _jsx("use", { href: `#${iconId}` }) }));
21
+ }
22
+ export default SvgIconComponent;
23
+ //# sourceMappingURL=SvgIconComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgIconComponent.js","sourceRoot":"","sources":["../../src/components/SvgIconComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACkE;IACzE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvD,MAAM,MAAM,GAAG,QAAQ,EAAE,EAAE,CAAC;IAC5B,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO,CACL,cACE,KAAK,EAAE,KAAK,IAAI,SAAS,EACzB,MAAM,EAAE,MAAM,IAAI,SAAS,EAC3B,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE,gBAC1B,WAAW,IAAI,IAAI,IAAI,SAAS,EAC5C,IAAI,EAAC,KAAK,KACN,IAAI,YAER,cAAK,IAAI,EAAE,IAAI,MAAM,EAAE,GAAI,GACvB,CACP,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ISvgImage } from '@se-studio/core-data-types';
2
+ import { type IImageProps } from './Visual';
3
+ declare function SvgImageComponent({ image, loading, fetchPriority, className, style, ...rest }: {
4
+ image: ISvgImage;
5
+ } & Omit<IImageProps, 'analytics' | 'componentLabel'>): import("react").JSX.Element;
6
+ export default SvgImageComponent;
7
+ //# sourceMappingURL=SvgImageComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgImageComponent.d.ts","sourceRoot":"","sources":["../../src/components/SvgImageComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE,iBAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,EAAE;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,gBAAgB,CAAC,+BAkB1E;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Image from 'next/image';
3
+ import { calculateCropDetails } from './Visual';
4
+ function SvgImageComponent({ image, loading, fetchPriority, className, style, ...rest }) {
5
+ const { svgSrc, name, width, height, description } = image;
6
+ const cropProperties = calculateCropDetails(image);
7
+ return (_jsx(Image, { src: svgSrc, alt: description ?? name, width: width, height: height, style: { ...style, ...cropProperties }, loading: loading, className: className, unoptimized: true, fetchPriority: fetchPriority, ...rest }));
8
+ }
9
+ export default SvgImageComponent;
10
+ //# sourceMappingURL=SvgImageComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgImageComponent.js","sourceRoot":"","sources":["../../src/components/SvgImageComponent.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAElE,SAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACkE;IACzE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC3D,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAEnD,OAAO,CACL,KAAC,KAAK,IACJ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,WAAW,IAAI,IAAI,EACxB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,cAAc,EAAE,EACtC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,IAAI,EACjB,aAAa,EAAE,aAAa,KACxB,IAAI,GACR,CACH,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ISvgImage } from '@se-studio/core-data-types';
2
+ /**
3
+ * Server component that generates and renders the SVG sprite sheet.
4
+ * Takes icons array directly from page data with pre-processed symbolContent.
5
+ *
6
+ * This should be rendered once per page, typically in the layout component.
7
+ * The sprite sheet must appear before any components that reference the icons.
8
+ *
9
+ * Icons are pre-processed during data conversion (in contentful-rest-api),
10
+ * so this component simply renders the pre-processed symbol content.
11
+ *
12
+ * @param icons - Array of SVG icons to include in the sprite sheet
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * // In BasicLayout or similar
17
+ * <SvgSpriteSheet icons={page.icons} />
18
+ * <main>{children}</main>
19
+ * ```
20
+ */
21
+ export declare function SvgSpriteSheet({ icons }: {
22
+ icons?: ReadonlyArray<ISvgImage>;
23
+ }): import("react").JSX.Element | null;
24
+ //# sourceMappingURL=SvgSpriteSheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgSpriteSheet.d.ts","sourceRoot":"","sources":["../../src/components/SvgSpriteSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAAE,sCAuB7E"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Server component that generates and renders the SVG sprite sheet.
4
+ * Takes icons array directly from page data with pre-processed symbolContent.
5
+ *
6
+ * This should be rendered once per page, typically in the layout component.
7
+ * The sprite sheet must appear before any components that reference the icons.
8
+ *
9
+ * Icons are pre-processed during data conversion (in contentful-rest-api),
10
+ * so this component simply renders the pre-processed symbol content.
11
+ *
12
+ * @param icons - Array of SVG icons to include in the sprite sheet
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * // In BasicLayout or similar
17
+ * <SvgSpriteSheet icons={page.icons} />
18
+ * <main>{children}</main>
19
+ * ```
20
+ */
21
+ export function SvgSpriteSheet({ icons }) {
22
+ if (!icons || icons.length === 0) {
23
+ return null;
24
+ }
25
+ // Extract pre-processed symbol content from icons
26
+ const symbols = [];
27
+ for (const icon of icons) {
28
+ if (icon.symbolContent) {
29
+ symbols.push(icon.symbolContent);
30
+ }
31
+ }
32
+ if (symbols.length === 0) {
33
+ return null;
34
+ }
35
+ return (_jsx("svg", { style: { display: 'none' }, "aria-hidden": "true", children: _jsx("defs", { dangerouslySetInnerHTML: { __html: symbols.join('') } }) }));
36
+ }
37
+ //# sourceMappingURL=SvgSpriteSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgSpriteSheet.js","sourceRoot":"","sources":["../../src/components/SvgSpriteSheet.tsx"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAwC;IAC5E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAc,MAAM,YAEjD,eAAM,uBAAuB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAI,GAC3D,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { DetailedHTMLProps, VideoHTMLAttributes } from 'react';
2
+ import type { IVisualProps } from './Visual';
3
+ export type IVideoProps = Pick<DetailedHTMLProps<VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, 'muted' | 'controls' | 'style' | 'poster' | 'autoPlay'> & {
4
+ noPoster?: boolean;
5
+ /**
6
+ * When true, non-autoplay players begin the click-to-play flow on mount
7
+ * (used by LazyVideo after the user clicks the shell play control).
8
+ */
9
+ startPlaybackOnMount?: boolean;
10
+ } & IVisualProps;
11
+ //# sourceMappingURL=Video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Video.d.ts","sourceRoot":"","sources":["../../src/components/Video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,iBAAiB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,EAC1E,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CACvD,GAAG;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Video.js","sourceRoot":"","sources":["../../src/components/Video.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { type IAnalyticsContext, type IExternalVideo, type IFullVideo, type ILocalVideo } from '@se-studio/core-data-types';
2
+ import type { IVideoProps } from './Video';
3
+ export type VideoComponentProps = {
4
+ video: ILocalVideo | IExternalVideo | IFullVideo;
5
+ analyticsContext: IAnalyticsContext | null | undefined;
6
+ componentLabel: string | null | undefined;
7
+ } & IVideoProps;
8
+ declare function VideoComponent(allProps: VideoComponentProps | null | undefined): import("react").JSX.Element | null;
9
+ export default VideoComponent;
10
+ //# sourceMappingURL=VideoComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoComponent.d.ts","sourceRoot":"","sources":["../../src/components/VideoComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EAIjB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,UAAU,CAAC;IACjD,gBAAgB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC3C,GAAG,WAAW,CAAC;AAEhB,iBAAS,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,sCAsBvE;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { isExternalVideo, isFullVideo, isLocalVideo, } from '@se-studio/core-data-types';
3
+ import ExternalVideoComponent from './ExternalVideoComponent';
4
+ import LocalVideo from './LocalVideo';
5
+ function VideoComponent(allProps) {
6
+ if (allProps == null) {
7
+ return null;
8
+ }
9
+ const { video, ...props } = allProps;
10
+ if (video == null) {
11
+ return null;
12
+ }
13
+ if (isLocalVideo(video) || isFullVideo(video)) {
14
+ return _jsx(LocalVideo, { video: video, ...props });
15
+ }
16
+ if (isExternalVideo(video)) {
17
+ return _jsx(ExternalVideoComponent, { video: video, ...props });
18
+ }
19
+ return (_jsxs("div", { className: props.className, style: props.style, children: ["Video Component", _jsxs("pre", { children: [JSON.stringify(video, null, 2), " "] })] }));
20
+ }
21
+ export default VideoComponent;
22
+ //# sourceMappingURL=VideoComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoComponent.js","sourceRoot":"","sources":["../../src/components/VideoComponent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAKL,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,UAAU,MAAM,cAAc,CAAC;AAStC,SAAS,cAAc,CAAC,QAAgD;IACtE,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,CAAC;IACjD,CAAC;IAED,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAC,sBAAsB,IAAC,KAAK,EAAE,KAAK,KAAM,KAAK,GAAI,CAAC;IAC7D,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,gCAEjD,0BAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,SAAQ,IACxC,CACP,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type IAnalyticsContext, type IVisual, type IVisualCommon, type IVisualSizes } from '@se-studio/core-data-types';
2
+ import type { PlaceholderValue } from 'next/dist/shared/lib/get-img-props';
3
+ import type { CSSProperties, ReactNode } from 'react';
4
+ /** Tailwind classes for sub-pixel video fix: oversize and shift so thin black lines are clipped by container.
5
+ * Only for cover/fill placements — never use when `dontCrop` (editorial content must show full frame). */
6
+ export declare const CONTAINED_VIDEO_CLASSES = "rounded-[1px] w-[calc(100%+4px)] h-[calc(100%+4px)] -translate-x-[2px] translate-y-[2px]";
7
+ /** Editorial / content video: natural aspect, no cover crop. */
8
+ export declare const CONTENT_VIDEO_CLASSES = "rounded-[1px] block w-full h-auto max-w-full";
9
+ /**
10
+ * Full-frame (content) vs cover (background) layout for native video + poster.
11
+ * Prefer explicit `dontCrop`; also treat `object-fit: contain` as full-frame.
12
+ */
13
+ export declare function shouldShowFullFrameVideo(dontCrop?: boolean | null, objectFit?: CSSProperties['objectFit']): boolean;
14
+ export type IVisualProps = {
15
+ className?: string;
16
+ style?: Omit<CSSProperties, 'objectFit' | 'objectPosition'>;
17
+ autoPlay?: boolean;
18
+ loop?: boolean;
19
+ loopDelay?: number;
20
+ muted?: boolean;
21
+ controls?: boolean;
22
+ loading?: 'eager' | 'lazy' | undefined;
23
+ fetchPriority?: 'high' | 'low' | undefined;
24
+ visualSizes?: IVisualSizes;
25
+ fullPlayer?: boolean;
26
+ /** When true, the visual is in a clipping container (e.g. ResponsiveVisual); native video gets sub-pixel fix styles. */
27
+ contained?: boolean;
28
+ analyticsContext?: IAnalyticsContext;
29
+ componentLabel?: string | null;
30
+ /** Optional custom play button content for external video (YouTube/Vimeo). Rendered instead of default when provided. */
31
+ externalVideoPlayButton?: ReactNode;
32
+ };
33
+ export type IImageProps = IVisualProps & {
34
+ placeholder?: PlaceholderValue;
35
+ blurDataURL?: string;
36
+ };
37
+ export declare function calculateCropDetails(details: Omit<IVisualCommon, 'id' | 'type' | 'name' | 'nameAsCaption'>): Pick<CSSProperties, 'objectFit' | 'objectPosition'>;
38
+ export declare function calculateImagePriority(index: number): {
39
+ fetchPriority: 'high' | 'low' | undefined;
40
+ loading: 'eager' | 'lazy' | undefined;
41
+ } | undefined;
42
+ export declare function calculateImageWidthStyleVariable(visual?: IVisual): CSSProperties | undefined;
43
+ //# sourceMappingURL=Visual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Visual.d.ts","sourceRoot":"","sources":["../../src/components/Visual.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD;0GAC0G;AAC1G,eAAO,MAAM,uBAAuB,6FACwD,CAAC;AAE7F,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,iDAAiD,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,GACrC,OAAO,CAET;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,gBAAgB,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wHAAwH;IACxH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yHAAyH;IACzH,uBAAuB,CAAC,EAAE,SAAS,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IACvC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAwBF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC,GACrE,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,gBAAgB,CAAC,CAarD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAEX;IAAE,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,GACpF,SAAS,CAKZ;AAMD,wBAAgB,gCAAgC,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAO5F"}
@@ -0,0 +1,60 @@
1
+ import { getVisualWidthPercent, } from '@se-studio/core-data-types';
2
+ /** Tailwind classes for sub-pixel video fix: oversize and shift so thin black lines are clipped by container.
3
+ * Only for cover/fill placements — never use when `dontCrop` (editorial content must show full frame). */
4
+ export const CONTAINED_VIDEO_CLASSES = 'rounded-[1px] w-[calc(100%+4px)] h-[calc(100%+4px)] -translate-x-[2px] translate-y-[2px]';
5
+ /** Editorial / content video: natural aspect, no cover crop. */
6
+ export const CONTENT_VIDEO_CLASSES = 'rounded-[1px] block w-full h-auto max-w-full';
7
+ /**
8
+ * Full-frame (content) vs cover (background) layout for native video + poster.
9
+ * Prefer explicit `dontCrop`; also treat `object-fit: contain` as full-frame.
10
+ */
11
+ export function shouldShowFullFrameVideo(dontCrop, objectFit) {
12
+ return !!dontCrop || objectFit === 'contain';
13
+ }
14
+ function calculateVertical(position) {
15
+ switch (position) {
16
+ case 'Bottom':
17
+ return 'bottom';
18
+ case 'Top':
19
+ return 'top';
20
+ default:
21
+ return 'center';
22
+ }
23
+ }
24
+ function calculateHorizontal(position) {
25
+ switch (position) {
26
+ case 'Left':
27
+ return 'left';
28
+ case 'Right':
29
+ return 'right';
30
+ default:
31
+ return 'center';
32
+ }
33
+ }
34
+ export function calculateCropDetails(details) {
35
+ const { verticalCropPosition, horizontalCropPosition, dontCrop } = details;
36
+ if (dontCrop) {
37
+ return { objectFit: 'contain' };
38
+ }
39
+ return {
40
+ objectFit: 'cover',
41
+ objectPosition: `${calculateHorizontal(horizontalCropPosition)} ${calculateVertical(verticalCropPosition)}`,
42
+ };
43
+ }
44
+ export function calculateImagePriority(index) {
45
+ if (index === 0) {
46
+ return { fetchPriority: 'high', loading: 'eager' };
47
+ }
48
+ return undefined;
49
+ }
50
+ function calculateRealWidthPercent(visual) {
51
+ return getVisualWidthPercent(visual);
52
+ }
53
+ export function calculateImageWidthStyleVariable(visual) {
54
+ const widthPercent = calculateRealWidthPercent(visual);
55
+ if (!widthPercent) {
56
+ return undefined;
57
+ }
58
+ return { '--image-width': `${widthPercent}%` };
59
+ }
60
+ //# sourceMappingURL=Visual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Visual.js","sourceRoot":"","sources":["../../src/components/Visual.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAOtB,MAAM,4BAA4B,CAAC;AAIpC;0GAC0G;AAC1G,MAAM,CAAC,MAAM,uBAAuB,GAClC,0FAA0F,CAAC;AAE7F,gEAAgE;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,8CAA8C,CAAC;AAEpF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAAyB,EACzB,SAAsC;IAEtC,OAAO,CAAC,CAAC,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC;AAC/C,CAAC;AA2BD,SAAS,iBAAiB,CAAC,QAA0B;IACnD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA4B;IACvD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAsE;IAEtE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE3E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,GAAG,mBAAmB,CACpC,sBAAsB,CACvB,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAa;IAIb,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAgB;IACjD,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,MAAgB;IAC/D,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,GAAG,YAAY,GAAG,EAAmB,CAAC;AAClE,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { type IVisual } from '@se-studio/core-data-types';
2
+ import type React from 'react';
3
+ import type { IVisualProps } from './Visual';
4
+ /**
5
+ * Visual component for rendering images, videos, and animations.
6
+ *
7
+ * Automatically selects the appropriate renderer based on the visual type:
8
+ * - Animations (Lottie) are rendered via AnimationComponent
9
+ * - Videos are rendered via VideoComponent with Next.js optimization
10
+ * - Images are rendered via ImageComponent with Next.js Image optimization
11
+ *
12
+ * SVG images from icon fields are automatically rendered using the sprite system,
13
+ * which enables currentColor support for theming.
14
+ *
15
+ * When a mask is set on the visual, the component wraps the content in a
16
+ * container with the mask applied. Masks can be:
17
+ * - URL-based (starts with '/' or 'http'): Uses CSS mask-image
18
+ * - Class-based (Tailwind classes): Applied directly to the container
19
+ *
20
+ * @param visual - Visual data containing image, video, or animation
21
+ * @param muted - Whether video should be muted (default: false)
22
+ * @param controls - Whether video should show controls (default: false)
23
+ * @param autoPlay - Whether video/animation should autoplay (default: false)
24
+ * @param visualSizes - Responsive size configuration for the visual
25
+ * @param fullPlayer - Whether video should use full player mode (default: false)
26
+ * @param loop - Whether video/animation should loop (default: false)
27
+ * @param loopDelay - Delay between loops in milliseconds
28
+ * @param analyticsContext - Analytics context for tracking
29
+ * @param componentLabel - Label for analytics tracking
30
+ * @param className - Additional CSS classes
31
+ * @param style - Additional inline styles
32
+ *
33
+ * @example Basic image
34
+ * ```tsx
35
+ * <Visual visual={imageVisual} className="w-full h-auto" />
36
+ * ```
37
+ *
38
+ * @example Icon with currentColor support (automatic for icons from icon fields)
39
+ * ```tsx
40
+ * <Visual visual={component.icon} className="w-6 h-6 text-blue-500" />
41
+ * ```
42
+ *
43
+ * @example Video with autoplay
44
+ * ```tsx
45
+ * <Visual
46
+ * visual={videoVisual}
47
+ * autoPlay
48
+ * muted
49
+ * loop
50
+ * className="w-full"
51
+ * />
52
+ * ```
53
+ *
54
+ * @example Animation with loop delay
55
+ * ```tsx
56
+ * <Visual
57
+ * visual={animationVisual}
58
+ * autoPlay
59
+ * loop
60
+ * loopDelay={1000}
61
+ * />
62
+ * ```
63
+ *
64
+ * @example Image with URL-based mask (CSS mask-image)
65
+ * ```tsx
66
+ * <Visual
67
+ * visual={{ ...imageVisual, mask: '/assets/masks/circle.svg' }}
68
+ * className="w-64"
69
+ * />
70
+ * ```
71
+ *
72
+ * @example Image with class-based mask (Tailwind classes)
73
+ * ```tsx
74
+ * <Visual
75
+ * visual={{ ...imageVisual, mask: 'aspect-square rounded-full' }}
76
+ * className="w-64"
77
+ * />
78
+ * ```
79
+ */
80
+ export declare const Visual: React.FC<{
81
+ visual: IVisual;
82
+ } & IVisualProps>;
83
+ //# sourceMappingURL=VisualComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisualComponent.d.ts","sourceRoot":"","sources":["../../src/components/VisualComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAU7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2EG;AACH,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,YAAY,CA8J/D,CAAC"}