@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,370 @@
1
+ # CMS Component Mapping Infrastructure
2
+
3
+ This document describes the CMS component mapping infrastructure extracted from the Point.me marketing-site project into the core-ui package.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [Architecture](#architecture)
9
+ - [Core Concepts](#core-concepts)
10
+ - [File Structure](#file-structure)
11
+ - [Usage Guide](#usage-guide)
12
+ - [1. Create Your Renderer Configuration](#1-create-your-renderer-configuration)
13
+ - [2. Use CmsContent with Your Configuration](#2-use-cmscontent-with-your-configuration)
14
+ - [3. Use UnusedChecker for Development](#3-use-unusedchecker-for-development)
15
+ - [Configuration Composition](#configuration-composition)
16
+ - [Preview Mode Configuration](#preview-mode-configuration)
17
+ - [Environment-Specific Configurations](#environment-specific-configurations)
18
+ - [Embedded Context Configuration](#embedded-context-configuration)
19
+ - [Type System](#type-system)
20
+ - [BaseCmsConfig](#basecmsconfig)
21
+ - [CmsRendererConfig](#cmsrendererconfig)
22
+ - [Context Types](#context-types)
23
+ - [Development Features](#development-features)
24
+ - [Unknown Type Warnings](#unknown-type-warnings)
25
+ - [Generic Fallbacks](#generic-fallbacks)
26
+ - [Type Safety](#type-safety)
27
+ - [Benefits Over Ad-Hoc Rendering](#benefits-over-ad-hoc-rendering)
28
+ - [Migration from Marketing-Site](#migration-from-marketing-site)
29
+ - [Examples](#examples)
30
+ - [API Reference](#api-reference)
31
+ - [CmsContent Props](#cmscontent-props)
32
+ - [Future Enhancements](#future-enhancements)
33
+
34
+ ## Overview
35
+
36
+ The infrastructure provides a type-safe, extensible system for mapping CMS content types to React components. It supports:
37
+
38
+ - **Component/Collection Mapping**: Registry pattern for routing content types to renderers
39
+ - **Embedding System**: Components can be rendered in embedded contexts (like rich text)
40
+ - **Generic Fallbacks**: Automatic fallback rendering for unmapped types
41
+ - **Development Utilities**: Warnings for unused props and rendering errors
42
+
43
+ ## Architecture
44
+
45
+ ### Core Concepts
46
+
47
+ 1. **Content Routing**: `CmsContent` receives an array of mixed content types and routes each to the appropriate renderer
48
+ 2. **Type Mapping**: `ComponentMap` and `CollectionMap` define which React components render which content types
49
+ 3. **Embedded Rendering**: Components can be rendered in embedded contexts (like rich text)
50
+
51
+ ### File Structure
52
+
53
+ ```
54
+ packages/core-ui/src/
55
+ ├── components/
56
+ │ ├── CmsComponent.tsx # Component type router
57
+ │ ├── CmsCollection.tsx # Collection type router
58
+ │ ├── CmsContent.tsx # Main content renderer
59
+ │ ├── GenericComponent.tsx # Fallback component renderer
60
+ │ └── GenericCollection.tsx # Fallback collection renderer
61
+ ├── embeddable/
62
+ │ ├── EmbeddableContext.ts # Context types for embedded rendering
63
+ │ ├── BuildEmbed.tsx # Factory functions for embeddable components
64
+ │ └── EmbeddableMaps.ts # Type definitions for embeddable maps
65
+ └── utils/
66
+ ├── componentUtils.ts # Related content fetching
67
+ └── UnusedChecker.tsx # Development warning utility
68
+ ```
69
+
70
+ ## Usage Guide
71
+
72
+ ### 1. Create Your Renderer Configuration
73
+
74
+ The recommended approach is to create a single `CmsRendererConfig` object that bundles all your renderer maps and options:
75
+
76
+ ```tsx
77
+ import { createCmsRendererConfig } from "@se-studio/core-ui";
78
+ import type { MyProjectConfig } from "./types";
79
+
80
+ // Import your component renderers
81
+ import { HeroComponent } from "@/components/Hero";
82
+ import { CTAComponent } from "@/components/CTA";
83
+ import { ContentBlock } from "@/components/ContentBlock";
84
+
85
+ // Import your collection renderers
86
+ import { FAQCollection } from "@/components/FAQCollection";
87
+ import { RelatedArticles } from "@/components/RelatedArticles";
88
+
89
+ // Import special renderers (optional)
90
+ import { VisualRenderer } from "@/components/VisualRenderer";
91
+ import { InternalLinkRenderer } from "@/components/InternalLinkRenderer";
92
+
93
+ /**
94
+ * Main CMS renderer configuration for the project.
95
+ * Create this once and reuse it throughout your app.
96
+ */
97
+ export const rendererConfig = createCmsRendererConfig<MyProjectConfig>({
98
+ componentMap: {
99
+ "Hero": HeroComponent,
100
+ "CTA": CTAComponent,
101
+ "Content Block": ContentBlock,
102
+ },
103
+ collectionMap: {
104
+ "FAQs": FAQCollection,
105
+ "Related Articles": RelatedArticles,
106
+ },
107
+ // Optional: external components, visuals, links
108
+ externalComponentMap: {
109
+ "Contact Form": ContactFormRenderer,
110
+ },
111
+ visualComponentRenderer: VisualRenderer,
112
+ internalLinkRenderer: InternalLinkRenderer,
113
+ buildInformation,
114
+ });
115
+ ```
116
+
117
+ ### 2. Use CmsContent with Your Configuration
118
+
119
+ ```tsx
120
+ import { CmsContent } from "@se-studio/core-ui";
121
+ import { rendererConfig } from "@/cms/rendererConfig";
122
+
123
+ export function PageRenderer({ page }) {
124
+ const pageContext = {
125
+ pageLink: { slug: page.slug, title: page.title },
126
+ };
127
+
128
+ return (
129
+ <CmsContent
130
+ rendererConfig={rendererConfig}
131
+ pageContext={pageContext}
132
+ contents={page.contents}
133
+ />
134
+ );
135
+ }
136
+ ```
137
+
138
+ **Benefits of this approach:**
139
+ - **Clean API**: Only 3 props instead of 7+ individual props
140
+ - **Single source of truth**: All renderer configuration in one place
141
+ - **Easy to extend**: Add new renderer types without touching every CmsContent call
142
+ - **Type-safe**: Full TypeScript support with generics
143
+ - **Composable**: Create variants with `mergeCmsRendererConfig()`
144
+
145
+ ### HtmlComponent entries
146
+
147
+ Contentful **HTML component** entries (`type: 'HtmlComponent'`) render through `HtmlComponent` inside `CmsContent` and `CmsEmbeddedContent`. `customJs` runs inside an IIFE with a per-instance `hcRoot` (safe to place more than one scripted HtmlComponent on a page). Optional config:
148
+
149
+ - **`htmlComponentFullWidthClassName`** — Tailwind (or other) classes applied when the entry has `fullWidth: true`. If unset, a built-in viewport-breakout default is used; override per project to match your grid.
150
+
151
+ Hero entries (`isHero: true`) are ordered **first** within each content array for both React output and markdown/search extraction. `markdownContent` and `excludeFromSearch` control what `MarkdownConverter` emits for search indexing.
152
+
153
+ ### 3. Use UnusedChecker for Development
154
+
155
+ Catch unused CMS properties that aren't being rendered:
156
+
157
+ ```tsx
158
+ import { UnusedChecker } from "@se-studio/core-ui";
159
+
160
+ export const MyComponent = ({ information, contentContext }) => {
161
+ const { heading, body, links, ...unused } = information;
162
+
163
+ return (
164
+ <UnusedChecker
165
+ componentName="MyComponent"
166
+ unused={unused}
167
+ showWarnings={true}
168
+ >
169
+ <div>
170
+ <h2>{heading}</h2>
171
+ <p>{body}</p>
172
+ </div>
173
+ </UnusedChecker>
174
+ );
175
+ };
176
+ ```
177
+
178
+ ## Configuration Composition
179
+
180
+ The `mergeCmsRendererConfig()` utility allows you to create specialized configurations from a base config:
181
+
182
+ ### Preview Mode Configuration
183
+
184
+ ```tsx
185
+ import { mergeCmsRendererConfig } from "@se-studio/core-ui";
186
+
187
+ const baseConfig = createCmsRendererConfig({ ... });
188
+
189
+ // Preview config: use buildInformation with isProduction: false to show errors
190
+ export const previewConfig = mergeCmsRendererConfig(baseConfig, {
191
+ buildInformation: { ...baseConfig.buildInformation, isProduction: false },
192
+ });
193
+
194
+ // Use in preview routes
195
+ <CmsContent rendererConfig={previewConfig} ... />
196
+ ```
197
+
198
+ ### Environment-Specific Configurations
199
+
200
+ ```tsx
201
+ const productionConfig = createCmsRendererConfig({
202
+ buildInformation: { ...buildInfo, isProduction: true },
203
+ componentMap: { ... },
204
+ collectionMap: { ... },
205
+ });
206
+
207
+ const developmentConfig = mergeCmsRendererConfig(productionConfig, {
208
+ buildInformation: { ...buildInfo, isProduction: false },
209
+ });
210
+
211
+ export const rendererConfig =
212
+ process.env.NODE_ENV === 'production'
213
+ ? productionConfig
214
+ : developmentConfig;
215
+ ```
216
+
217
+ ### Embedded Context Configuration
218
+
219
+ ```tsx
220
+ // Different component map for embedded contexts
221
+ const embeddedConfig = mergeCmsRendererConfig(baseConfig, {
222
+ componentMap: {
223
+ ...baseConfig.componentMap,
224
+ "Hero": EmbeddedHeroComponent, // Use simplified version
225
+ },
226
+ });
227
+ ```
228
+
229
+ ## Type System
230
+
231
+ ### BaseCmsConfig
232
+
233
+ Projects must extend `BaseCmsConfig` to define their CMS-specific types:
234
+
235
+ ```tsx
236
+ import type { BaseCmsConfig } from "@se-studio/core-data-types";
237
+
238
+ export interface MyProjectConfig extends BaseCmsConfig {
239
+ ComponentType: "Hero" | "CTA" | "Content Block";
240
+ CollectionType: "FAQs" | "Related Articles";
241
+ ExternalComponentType: "ContactForm" | "Newsletter";
242
+ ColourName: "red" | "blue" | "green";
243
+ // ... other type overrides
244
+ }
245
+ ```
246
+
247
+ ### CmsRendererConfig
248
+
249
+ The main configuration type that bundles all renderer maps and helpers:
250
+
251
+ ```tsx
252
+ interface CmsRendererConfig<TConfig extends CmsRendererTypes> {
253
+ buildInformation: IBuildInformation;
254
+ componentMap: ComponentMap<TConfig>;
255
+ embeddedComponentMap: EmbeddedComponentMap<TConfig>;
256
+ collectionMap: CollectionMap<TConfig>;
257
+ embeddedCollectionMap: EmbeddedCollectionMap<TConfig>;
258
+ externalComponentMap: ExternalComponentMap<TConfig>;
259
+ embeddedExternalComponentMap: EmbeddedExternalComponentMap<TConfig>;
260
+ visualComponentRenderer: VisualComponentRenderer;
261
+ internalLinkRenderer: InternalLinkRenderer;
262
+ /** Optional: block RTF embeds for Internal link (vs inline `internalLinkRenderer`). */
263
+ embeddedBlockInternalLinkRenderer?: EmbeddedBlockInternalLinkRenderer;
264
+ /** Required for Contentful live preview. Pass from app cms-server so components avoid importing cms-server. */
265
+ previewHelpers: PreviewHelpers;
266
+ /** Helpers for collections that fetch data (getRelatedArticles, getAllArticleLinks, etc.). Pass from cms-server. */
267
+ fetchHelpers: FetchHelpers;
268
+ defaultComponentRenderer: ComponentRenderer<any>;
269
+ defaultCollectionRenderer: CollectionRenderer<any>;
270
+ customContentMap?: Partial<...>;
271
+ processText?: (text: string, contentContext?: IContentContext) => React.ReactNode;
272
+ }
273
+ ```
274
+
275
+ **Entry `meta` JSON:** Page, article, template, and related types have an optional Long text `meta` field (pretty JSON). Converters merge `template → type → entry → variant` onto `model.meta`. `buildStructuredDataContext` exposes it as `{{meta.key}}` in schema templates. Visible copy interpolates **only** `{{meta.path}}` (not full Mustache), then any site `processText` (`{{phone}}`). Use `parseMeta` / `mergeMeta` / `resolvedMeta` from `@se-studio/core-data-types` when adding `meta` to a site-only type (e.g. HSD location).
276
+
277
+ Error panels (unknown types, render errors) are shown when `!buildInformation.isProduction`.
278
+
279
+ **Block vs inline internal links:** Rich text `BLOCKS.EMBEDDED_ENTRY` for Internal link routes through `CmsEmbeddedContent`. Set `embeddedBlockInternalLinkRenderer` when block embeds should look different from inline links (e.g. CTA). If omitted, the block still renders using `internalLinkRenderer` inside the embed position wrapper.
280
+
281
+ **Preview and fetch helpers:** Components and collections in the registration chain must **not** import from the app's `cms-server` (that causes a circular dependency). Instead they use `getPreviewFieldProps(rendererConfig, id, fieldId)` and `getPreviewResponsiveVisualFieldProps(rendererConfig, id, 'visual', 'mobileVisual')` from `@se-studio/core-ui`, and `rendererConfig.fetchHelpers` for data. The app passes `previewHelpers` (and optionally `fetchHelpers`) on the config. See `docs/SERVER_CLIENT_BOUNDARIES.md`.
282
+
283
+ **Visibility enforcement:** `createAppHelpers` enforces two visibility rules via `buildInformation`:
284
+
285
+ - **`hidden` entities:** Entity fetchers (`getPageWithErrors`, `getArticleWithErrors`, etc.) return `null` data when the entity has `hidden === true` in production. Callers treat `null` as `notFound()`. In non-production environments, hidden entities are returned normally so content authors can preview them.
286
+ - **`indexed` filtering:** Link fetchers (`getAllPageLinks`, `getAllArticleLinks`, etc.) exclude entries with `indexed === false` by default. Pass `{ allowUnindexed: true }` (via `LinkFetchOptions`) to include them. This applies in all environments. `filterRelatedArticles`, `getRelatedPeople`, and `getRelatedTags` apply the same rule on auto-filled slots.
287
+ - **Link-shaped UI and revalidation:** Collection `contents` link refs (person, article, tag) provide **selection and order only**. `getRelatedArticles`, `getRelatedPeople`, and `getRelatedTags` always resolve display fields from `getAll*Links` listing fetches (`article`, `person`, `tag` cache tags). Entity detail routes use entity fetches (`article#slug`, etc.). Do not render portraits, titles, or hrefs from embedded page-include link objects in collection renderers.
288
+ - **Full-list article filtering (`getAllArticleLinks`):** Pass article filter criteria directly: `articleTypeSlugs`/`articleTypeIds`, `tagSlugs`/`tagIds`, `tagType*`, `authorSlugs`/`authorIds` + `strictAuthorMatch: true` (hard filter for person pages), `before`/`after`, `excludeArticleIds`, `count`. The wrapper in `createAppHelpers` runs the base list through `filterRelatedArticles` (after indexed filtering). Use for News Grids / Publications Lists / ArticleFilter collections that need the *complete* matching set (client-side search UI, "latest N" on indexes, person-scoped lists). See also `getRelatedArticles` for limited related sets driven by collection `links`.
289
+ - **Related Articles tag criteria (`getRelatedArticles`):** Tag filters are taken from tag links in the collection `links` or `contents`. When none are set, `applyFallbackCriteria` uses `pageContext.tag.id` (tag index pages), then `pageContext.article.tags` (article detail pages). Explicit CMS tag links always win. When `tagIds` reach `filterRelatedArticles`, articles must match at least one tag (OR semantics).
290
+ - **`buildPageMetadata`** calls `notFound()` when `model.hidden === true` in production, providing a second safety net at the metadata layer.
291
+
292
+ ### Context Types
293
+
294
+ - `IPageContext`: Page-level context (`page`, `article`, `articleType`, `tag`, `person`, `customType`, plus optional app keys and `[key: string]: unknown` for `prepare*` hook data). See `@se-studio/core-ui/server` `createRouteHandlers` optional `prepare*` callbacks: they shallow-merge `pageContext` **before** canonical route keys, so loaded models cannot be overridden by the hook.
295
+ - `IContentContext`: Content-level context (current, previous, next content). **`contentContext.pageContext`** is the same object passed to `CmsContent`, so enrichment from `prepare*` hooks is available in renderers and in `processText(text, contentContext)`.
296
+ - `IEmbeddableComponentContext<TConfig>`: Context for embedded components
297
+ - `IEmbeddableCollectionContext<TConfig>`: Context for embedded collections
298
+
299
+ ## Development Features
300
+
301
+ ### Unknown Type Warnings
302
+
303
+ When not in production (`!buildInformation.isProduction`), the infrastructure displays visual warnings for:
304
+ - Unmapped component/collection types
305
+ - Rendering errors
306
+ - Unused CMS properties
307
+
308
+ ### Generic Fallbacks
309
+
310
+ When a component/collection type isn't mapped:
311
+ 1. A warning is logged to console
312
+ 2. When not in production, an error panel is displayed
313
+ 3. A generic fallback renderer is used
314
+ 4. The page continues to render (no crashes)
315
+
316
+ ### Type Safety
317
+
318
+ - Full TypeScript support with generic types
319
+ - Development warnings catch unused properties
320
+
321
+ ## Benefits Over Ad-Hoc Rendering
322
+
323
+ 1. **Centralized Mapping**: All component mappings in one place
324
+ 2. **Reusability**: Components work in multiple contexts (full-page, embedded)
325
+ 3. **Maintainability**: Changes to component structure are caught at compile-time
326
+ 4. **Development UX**: Clear warnings for mistakes
327
+ 5. **Fallback Handling**: Pages never break from unmapped types
328
+
329
+ ## Migration from Marketing-Site
330
+
331
+ To migrate an existing project:
332
+
333
+ 1. Install core-ui: `pnpm add @se-studio/core-ui`
334
+ 2. Create ComponentMap and CollectionMap
335
+ 3. Replace direct component rendering with CmsContent
336
+ 4. Use a non-production build (e.g. `buildInformation.isProduction: false`) to see error panels for missing mappings
337
+
338
+ ## Examples
339
+
340
+ See the example apps in this monorepo for complete working implementations:
341
+ - `apps/example-empty` – Template app in this monorepo (articles, people, tags cms-routes pattern)
342
+ - Customer sites – See `docs/RELATED_PROJECTS.md` (e.g. SE Studio, Brightline, OM1 with alternative slug structures)
343
+
344
+ ## API Reference
345
+
346
+ ### CmsContent Props
347
+
348
+ `CmsContent` accepts three props (all provided via a single `rendererConfig` plus page data):
349
+
350
+ - `pageContext`: Page-level context information (e.g. `{ page }`, `{ article }`, `{ tag, customType }`, or indexes that only set `customType`). When using `createRouteHandlers`, optional `prepare*` hooks may add keys; canonical route fields always override duplicate keys from the hook.
351
+ - `contents`: Array of content items to render (from `page.contents`, `article.contents`, etc.).
352
+ - `rendererConfig`: A `CmsRendererConfig` object that bundles:
353
+ - `buildInformation` – Build config (isProduction, baseUrl, etc.). Error panels are shown when `!buildInformation.isProduction`.
354
+ - `componentMap`, `collectionMap`, `embeddedComponentMap`, `embeddedCollectionMap` – Maps of content types to renderers.
355
+ - `externalComponentMap`, `embeddedExternalComponentMap` – External/embed maps (optional).
356
+ - `visualComponentRenderer`, `internalLinkRenderer` – Renderers for Visual and Internal Link types.
357
+ - `previewHelpers` – **Required.** Preview helpers for Contentful live preview (pass from app cms-server).
358
+ - `fetchHelpers` – Helpers for data fetching in collections (`getRelatedArticles`, `getRelatedPeople`, `getRelatedTags`, `getAllArticleLinks`, `getAllTagLinks`, `getAllPersonLinks`, etc.). Link fetchers accept optional `LinkFetchOptions` (pass `{ allowUnindexed: true }` to include unindexed entries; pass articleType*/tag*/author* criteria for pre-filtered full lists via `getAllArticleLinks`). Import advanced filter symbols from `@se-studio/core-ui/server` when needed in server collections.
359
+ - `defaultComponentRenderer`, `defaultCollectionRenderer` – Fallback renderers for unmapped types.
360
+
361
+ ## Future Enhancements
362
+
363
+ Potential improvements for future iterations:
364
+
365
+ - [ ] Async component loading for code splitting
366
+ - [ ] Component preview mode for CMS editors
367
+ - [ ] Performance monitoring hooks
368
+ - [ ] Server-side rendering optimizations
369
+ - [ ] Component analytics integration
370
+ - [ ] Rich text node renderer registration system
package/CONSENT.md ADDED
@@ -0,0 +1,121 @@
1
+ # Consent Management Guide
2
+
3
+ Core UI integrates with [Orejime](https://github.com/empreinte-digitale/orejime), an open-source consent management manager, to provide GDPR and CCPA compliance.
4
+
5
+ ## Overview
6
+
7
+ The consent system ensures that:
8
+ 1. Users are presented with a consent banner
9
+ 2. Cookies/Trackers are blocked until consent is given
10
+ 3. Analytics adapters only fire when allowed
11
+
12
+ ## Setup
13
+
14
+ ### 1. Configure Consent Provider
15
+
16
+ Wrap your application with `ConsentProvider` and provide configuration.
17
+
18
+ ```tsx
19
+ import { ConsentProvider } from '@se-studio/core-ui';
20
+
21
+ const config = {
22
+ apps: [
23
+ {
24
+ name: 'google-tag-manager',
25
+ title: 'Analytics',
26
+ purposes: ['analytics'],
27
+ cookies: ['_ga', '_gid'],
28
+ required: false,
29
+ default: true,
30
+ },
31
+ {
32
+ name: 'marketing-cookies',
33
+ title: 'Marketing',
34
+ purposes: ['marketing'],
35
+ required: false,
36
+ }
37
+ ],
38
+ privacyPolicy: '/privacy-policy',
39
+ };
40
+
41
+ // Styling theme (optional)
42
+ const theme = {
43
+ primaryColor: '#0070f3',
44
+ borderRadius: '8px',
45
+ };
46
+
47
+ export function AppProviders({ children }) {
48
+ return (
49
+ <ConsentProvider config={config} theme={theme}>
50
+ {children}
51
+ </ConsentProvider>
52
+ );
53
+ }
54
+ ```
55
+
56
+ ### 2. Connect to Analytics
57
+
58
+ Use `ConsentAwareAdapter` to gate analytics based on consent.
59
+
60
+ ```tsx
61
+ import { ConsentAwareAdapter, GoogleTagManagerAdapter, useConsent } from '@se-studio/core-ui';
62
+
63
+ function AnalyticsSetup() {
64
+ const { hasConsent } = useConsent();
65
+
66
+ const adapter = useMemo(() => {
67
+ const base = new GoogleTagManagerAdapter({ containerId: '...' });
68
+ // 'google-tag-manager' matches the app name in config
69
+ return new ConsentAwareAdapter(base, 'google-tag-manager', hasConsent);
70
+ }, [hasConsent]);
71
+
72
+ return <AnalyticsProvider adapter={adapter}>...</AnalyticsProvider>;
73
+ }
74
+ ```
75
+
76
+ ## Styling
77
+
78
+ Orejime styles can be customized via CSS variables or the `theme` prop.
79
+
80
+ ### Using Theme Prop
81
+
82
+ ```tsx
83
+ <ConsentProvider
84
+ theme={{
85
+ fontFamily: 'Inter, sans-serif',
86
+ primaryColor: '#ff0000',
87
+ backgroundColor: '#ffffff'
88
+ }}
89
+ >
90
+ ```
91
+
92
+ ### Using CSS Variables
93
+
94
+ In your global CSS:
95
+
96
+ ```css
97
+ :root {
98
+ --orejime-color-primary: #ff0000;
99
+ --orejime-border-radius: 4px;
100
+ --orejime-z-index: 50;
101
+ }
102
+ ```
103
+
104
+ ## Hook API
105
+
106
+ The `useConsent` hook provides access to consent state.
107
+
108
+ ```tsx
109
+ import { useConsent } from '@se-studio/core-ui';
110
+
111
+ function MyComponent() {
112
+ const { hasConsent, showConsentModal, resetConsent } = useConsent();
113
+
114
+ return (
115
+ <div>
116
+ {hasConsent('analytics') && <AnalyticsDashboard />}
117
+ <button onClick={showConsentModal}>Cookie Settings</button>
118
+ </div>
119
+ );
120
+ }
121
+ ```