@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 @@
1
+ {"version":3,"file":"wcagRelativeLuminanceFromHex.js","sourceRoot":"","sources":["../../src/utils/wcagRelativeLuminanceFromHex.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,oCAAoC,CAAC;AAE7D,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAW;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAE1F,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IAErC,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Wraps HtmlComponent `customJs` so `hcRoot` is function-scoped.
3
+ *
4
+ * `@se-studio/core-ui` prepends `const hcRoot = …` so authors can query this
5
+ * instance. Inline `next/script` payloads on one page share a JS realm, so a
6
+ * second top-level `const hcRoot` throws and the later script never runs.
7
+ * An IIFE keeps the documented `hcRoot` name without colliding.
8
+ */
9
+ export declare function wrapHtmlComponentJs(id: string, customJs: string): string;
10
+ //# sourceMappingURL=wrapHtmlComponentJs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapHtmlComponentJs.d.ts","sourceRoot":"","sources":["../../src/utils/wrapHtmlComponentJs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Wraps HtmlComponent `customJs` so `hcRoot` is function-scoped.
3
+ *
4
+ * `@se-studio/core-ui` prepends `const hcRoot = …` so authors can query this
5
+ * instance. Inline `next/script` payloads on one page share a JS realm, so a
6
+ * second top-level `const hcRoot` throws and the later script never runs.
7
+ * An IIFE keeps the documented `hcRoot` name without colliding.
8
+ */
9
+ export function wrapHtmlComponentJs(id, customJs) {
10
+ return `(function () {\n const hcRoot = document.querySelector('[data-hc-id="' + ${JSON.stringify(id)} + '"]');\n${customJs}\n})();`;
11
+ }
12
+ //# sourceMappingURL=wrapHtmlComponentJs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapHtmlComponentJs.js","sourceRoot":"","sources":["../../src/utils/wrapHtmlComponentJs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAU,EAAE,QAAgB;IAC9D,OAAO,6EAA6E,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,QAAQ,SAAS,CAAC;AACxI,CAAC"}
@@ -0,0 +1,98 @@
1
+ # `@se-studio/core-ui` — package export boundaries
2
+
3
+ This doc is for **core-ui maintainers** and **consumer-site developers**. It explains which entry point to use, how to avoid leaking server CMS code into client bundles, and what to do when Next.js reports `server-only` / `contentful-rest-api` errors.
4
+
5
+ See also: monorepo [`docs/SERVER_CLIENT_BOUNDARIES.md`](../../../docs/SERVER_CLIENT_BOUNDARIES.md) (app-level `cms-server` rules).
6
+
7
+ ## Mental model (SSR is not “server-only”)
8
+
9
+ Next.js App Router mixes **Server Components** and **Client Components** (`'use client'`) in one module graph. Anything reachable from a client file must be **client-bundle safe**.
10
+
11
+ | Entry | Who may import | Contents |
12
+ |-------|----------------|----------|
13
+ | `@se-studio/core-ui` | **Everyone** — `'use client'` files, server components, registrations | React UI, hooks, `cn`, CMS renderers, registration helpers, shared types |
14
+ | `@se-studio/core-ui/server` | **Server only** — `import 'server-only'` at top | `createAppHelpers`, `createRouteHandlers`, `getRelated*`, `filterRelatedArticles`, listing structured-data helpers, etc. |
15
+ | `@se-studio/core-ui/route-handlers` | **App route modules** (Node `fs`) | Discovery/guidelines/cms.txt handlers |
16
+
17
+ **Do not add a `/client` entry** unless you want stricter enforcement. The main barrel *is* the client-safe surface; `/server` is the explicit server escape hatch.
18
+
19
+ ## Rules for maintainers (adding exports to core-ui)
20
+
21
+ Before exporting a new symbol from `src/index.ts`:
22
+
23
+ 1. **No runtime imports** of `@se-studio/contentful-rest-api` in the main-barrel graph. Type-only imports (`import type`) are OK.
24
+ 2. **No `import 'server-only'`** modules re-exported with runtime bindings from `src/index.ts`. Types-only re-exports from server modules are OK (e.g. `export type { AppHelpers } from './app-helpers'`).
25
+ 3. **Async CMS fetch helpers** (`getAll*Links`, `filterRelatedArticles`, structured-data builders) belong on **`src/server/index.ts`**, with `import 'server-only'` in the implementing file.
26
+ 4. **Pure utilities** (`cn`, breadcrumbs, metadata builders without CMS fetch) stay on the main barrel.
27
+ 5. **Dev-only surfaces** (showcase mocks) should eventually move to `@se-studio/core-ui/showcase` so production apps do not pull them through the main barrel.
28
+
29
+ ### Checklist when opening a core-ui PR
30
+
31
+ - [ ] New CMS / Contentful / Node API code is behind `/server` or `/route-handlers`, not `src/index.ts`.
32
+ - [ ] New server modules include `import 'server-only'` at the top.
33
+ - [ ] `pnpm --filter @se-studio/core-ui test` passes (includes `main-barrel-boundary.test.ts`).
34
+ - [ ] `docs/llms.md` and `README.md` list new server exports under “Server-only exports”.
35
+ - [ ] Consumer apps import new server helpers from `@se-studio/core-ui/server`, not the main entry.
36
+
37
+ ## Rules for consumer sites
38
+
39
+ ### Safe (main entry)
40
+
41
+ ```ts
42
+ import { cn, Visual, CmsContent, getPreviewFieldProps } from '@se-studio/core-ui';
43
+ ```
44
+
45
+ Use in server components **and** `'use client'` files.
46
+
47
+ ### Server only (`/server`)
48
+
49
+ ```ts
50
+ import {
51
+ createAppHelpers,
52
+ buildListingStructuredDataContext,
53
+ filterRelatedArticles,
54
+ } from '@se-studio/core-ui/server';
55
+ ```
56
+
57
+ Use only in server modules (`import 'server-only'` app files, route handlers, `generateMetadata`, etc.). **Never** in `'use client'` files or files imported by registrations that client components transitively load.
58
+
59
+ ### App `cms-server`
60
+
61
+ Each marketing site’s `src/lib/cms-server.ts` must keep `import 'server-only'`. Client components must not import it. See `docs/SERVER_CLIENT_BOUNDARIES.md`.
62
+
63
+ ## How mistakes surface
64
+
65
+ Typical Next.js / Turbopack error:
66
+
67
+ ```
68
+ 'server-only' cannot be imported from a Client Component module.
69
+ The error was caused by importing '@se-studio/contentful-rest-api/dist/converters'
70
+ ```
71
+
72
+ Import trace often shows:
73
+
74
+ - `'use client'` file → `@se-studio/core-ui` (main barrel) → server CMS module → `contentful-rest-api`
75
+
76
+ **Root cause:** a server CMS helper was exported from the main barrel, or a client file imports `/server` / `cms-server`.
77
+
78
+ ## Workarounds (consumer sites, until package is fixed)
79
+
80
+ Prefer fixing and publishing core-ui. If blocked on an older version:
81
+
82
+ | Workaround | Use when | Caveats |
83
+ |------------|----------|---------|
84
+ | Import server helpers from `@se-studio/core-ui/server` | You added a server util on the wrong entry in an older core-ui | Requires that symbol to exist on `/server` in your installed version |
85
+ | Local `cn` via `clsx` + `tailwind-merge` | Build fails on `EmailInputForm` / UI importing `cn` from main barrel | Forks a one-liner utility; remove after package fix |
86
+ | `experimental.optimizePackageImports: ['@se-studio/core-ui']` in `next.config` | Turbopack pulls whole barrel for named imports | **Experimental**; Next docs say not recommended for production; behavior differs Webpack vs Turbopack |
87
+ | `pnpm pack` + install local tarball | Verify fix before npm publish | See `scripts/pack-local-packages-for-consumer.sh` |
88
+
89
+ **Do not** duplicate `ExternalVideoPlayButtonProvider` locally — core-ui video embeds read the package’s own React context module; a local copy breaks custom play buttons.
90
+
91
+ ## Regression test
92
+
93
+ `packages/core-ui/src/__tests__/main-barrel-boundary.test.ts` asserts the main barrel does not re-export known server CMS modules. Extend it when moving additional exports to `/server`.
94
+
95
+ ## Related incidents
96
+
97
+ - **filterRelatedArticles** removed from main barrel (core-ui ~1.11) — same class of bug.
98
+ - **listingStructuredData** moved to `/server` (core-ui 1.13.1) — `buildListingItems` / `buildListingStructuredDataContext` had runtime `contentful-rest-api` import on main entry.
package/docs/llms.md ADDED
@@ -0,0 +1,358 @@
1
+ # @se-studio/core-ui — LLM Reference
2
+
3
+ Shared React component library for SE Studio Next.js apps. Provides the CMS rendering system, media components, analytics, and utility hooks.
4
+
5
+ > **Critical:** This package has a server/client boundary. `@se-studio/core-ui/server` is server-only. Never import server exports in `'use client'` files. Never import from `cms-server` inside component/collection registrations (circular dependency). The **main** entry must stay client-safe — do not add runtime `@se-studio/contentful-rest-api` imports to `src/index.ts`. See `docs/PACKAGE_EXPORT_BOUNDARIES.md` and the server import rules below.
6
+
7
+ ## CMS Rendering System
8
+
9
+ ### CmsContent — primary page renderer
10
+ ```tsx
11
+ import { CmsContent } from '@se-studio/core-ui';
12
+
13
+ // Renders a full page's content array using the app's registered components
14
+ <CmsContent
15
+ content={page} // IBasePage (or IBaseArticle, etc.)
16
+ config={rendererConfig} // CmsRendererConfig from the app's cms.ts
17
+ context={{ pageLink: { slug: page.slug, title: page.title } }}
18
+ />
19
+ ```
20
+
21
+ ### CmsComponent / CmsCollection — render a single item
22
+ ```tsx
23
+ import { CmsComponent, CmsCollection } from '@se-studio/core-ui';
24
+
25
+ <CmsComponent information={component} config={rendererConfig} index={0} />
26
+ <CmsCollection information={collection} config={rendererConfig} index={0} />
27
+ ```
28
+
29
+ ### CmsRoutesLayout — wraps CMS pages
30
+ ```tsx
31
+ import { CmsRoutesLayout } from '@se-studio/core-ui';
32
+
33
+ // Used in app/[...slug]/layout.tsx to provide breadcrumbs, structured data, etc.
34
+ ```
35
+
36
+ ## Registration System
37
+
38
+ Use these to define components and collections (in the app, not in this package):
39
+
40
+ ```ts
41
+ import { defineComponent, defineCollection, defineDataType } from '@se-studio/core-ui';
42
+
43
+ export const myComponent = defineComponent({
44
+ name: 'myComponentType', // must match Contentful componentType field
45
+ renderer: MyRenderer,
46
+ mockData: { ... },
47
+ });
48
+
49
+ export const myCollection = defineCollection({
50
+ name: 'myCollectionType',
51
+ renderer: MyCollectionRenderer,
52
+ mockData: { ... },
53
+ });
54
+ ```
55
+
56
+ ## Heading Hierarchy — getSizingInformation
57
+
58
+ Use this to pick the correct heading element per component index on the page:
59
+
60
+ ```tsx
61
+ // From the app's SizingInformation module (per-project), not core-ui/server
62
+
63
+ // In a component renderer:
64
+ const { Element, ChildElement } = getSizingInformation(index);
65
+ // Element → 'h1' | 'h2' | 'h3' (for the component's main heading)
66
+ // ChildElement → 'h2' | 'h3' | 'h4' (for child headings within the component)
67
+
68
+ // Render pre/post headings as <p>, never as heading tags:
69
+ <p className="text-sm font-medium">{preHeading}</p>
70
+ <Element className="text-4xl">{heading}</Element>
71
+ ```
72
+
73
+ ## Preview (Contentful Live Preview)
74
+
75
+ ```ts
76
+ import {
77
+ getPreviewFieldProps,
78
+ getPreviewResponsiveVisualFieldProps,
79
+ } from '@se-studio/core-ui';
80
+
81
+ // Pass to JSX elements to enable Contentful live preview highlighting
82
+ const fieldProps = getPreviewFieldProps(rendererConfig, entryId, 'heading');
83
+ const visualProps = getPreviewResponsiveVisualFieldProps(rendererConfig, entryId, 'visual', 'mobileVisual');
84
+ ```
85
+
86
+ Do NOT import these from `cms-server`. Import them from `@se-studio/core-ui` in components/collections.
87
+
88
+ ## Visual Components
89
+
90
+ ```tsx
91
+ import { Visual } from '@se-studio/core-ui';
92
+ import { ResponsiveVisual, ContainedVisual } from '@se-studio/core-ui';
93
+
94
+ // Renders IVisual (image, video, animation, SVG)
95
+ <Visual visual={imageOrVideoData} className="w-full" priority />
96
+
97
+ // Renders IResponsiveVisual (desktop + optional mobile)
98
+ <ResponsiveVisual visual={responsiveVisual} className="w-full" />
99
+ ```
100
+
101
+ ## Rich Text
102
+
103
+ ```tsx
104
+ import { RTF } from '@se-studio/core-ui';
105
+ import { RtfOrString } from '@se-studio/core-ui';
106
+
107
+ // Render Contentful rich text
108
+ <RTF document={richTextDocument} rendererConfig={rendererConfig} />
109
+
110
+ // Render either rich text or a plain string
111
+ <RtfOrString value={headingOrRichText} />
112
+ ```
113
+
114
+ ## Analytics
115
+
116
+ ```tsx
117
+ import { AnalyticsProvider, useAnalytics, useAnalyticsContext } from '@se-studio/core-ui';
118
+ import { GoogleTagManagerAdapter, ConsentAwareAdapter } from '@se-studio/core-ui';
119
+
120
+ // Wrap the app:
121
+ <AnalyticsProvider adapters={[new GoogleTagManagerAdapter()]}>
122
+ {children}
123
+ </AnalyticsProvider>
124
+
125
+ // Track clicks:
126
+ const { trackClick } = useAnalytics();
127
+ trackClick({ label: 'CTA Button', href: '/signup' });
128
+ ```
129
+
130
+ ### Video engagement events
131
+
132
+ Interactive (non-autoplay) Vimeo, YouTube, and local videos fire `trackEvent` with:
133
+
134
+ `video_impression` · `video_start` · `video_progress` · `video_complete` · `video_seek` · `video_unmute` · `video_fullscreen` · `video_exit`
135
+
136
+ Export `VIDEO_ENGAGEMENT_EVENTS` / `VIDEO_ENGAGEMENT_EVENT_NAMES` for GTM or HubSpot `eventNameMap`. Requires `analyticsContext` on the visual chain. Autoplay/background videos are not tracked.
137
+
138
+ ### Play button (external + local)
139
+
140
+ - Site-wide brand: wrap the app in `ExternalVideoPlayButtonProvider` with a custom icon (see Brightline / SE website / HopSkipDrive).
141
+ - Default: red `DefaultExternalVideoPlayButton`.
142
+ - Non-autoplay **local** ImageKit videos get built-in click-to-play using the same context.
143
+ - Escape hatch: `LocalVideoPlayOverlay` for wrapping an arbitrary `<video>` tree.
144
+
145
+ ## Page Metadata
146
+
147
+ Validate `baseUrl` at module init (fails the build on misconfiguration). No trailing slash — paths are joined as `` `${baseUrl}${path}` ``:
148
+
149
+ ```ts
150
+ import { assertValidSiteBaseUrl, buildPageMetadata } from '@se-studio/core-ui';
151
+
152
+ export const baseUrl = assertValidSiteBaseUrl(process.env.URL!);
153
+
154
+ export async function generateMetadata(): Promise<Metadata> {
155
+ return buildPageMetadata(page, {
156
+ baseUrl,
157
+ customerName: 'point.me',
158
+ isProduction: process.env.NODE_ENV === 'production',
159
+ isDevelopment: process.env.NODE_ENV === 'development',
160
+ }, parent);
161
+ }
162
+ ```
163
+
164
+ ### Author and generator meta tags
165
+
166
+ `buildPageMetadata` sets:
167
+
168
+ | Page | `<meta name="author">` / `<link rel="author">` | `<meta name="generator">` |
169
+ |------|--------------------------------------------------|---------------------------|
170
+ | Article with CMS author | Primary author name + person page URL | Default: `Something Else (https://www.se.studio)` |
171
+ | Article without author | `customerName` + `baseUrl` | Same |
172
+ | Other pages (pages, listings, person profiles, etc.) | `customerName` + `baseUrl` | Same |
173
+
174
+ - **Article authors:** only article `generateMetadata` passes `author` / `authors` on the model; other routes omit those fields and get the site default.
175
+ - **Generator override:** `siteGenerator` on `IBuildInformation` — full string, `{ name, url }` parts, or `null` to omit the tag.
176
+ - **Helpers:** `resolveMetadataAuthors`, `formatSiteGeneratorContent`, `SiteGeneratorAttribution`.
177
+
178
+ JSON-LD (`buildStructuredDataContext`) remains the primary signal for multi-author articles and person entities.
179
+
180
+ ## robots.txt
181
+
182
+ ### Metadata route (no Content-Signal)
183
+
184
+ Use `createRobotsConfig` in `src/app/robots.ts` when you do not need Content Signals:
185
+
186
+ ```ts
187
+ import { createRobotsConfig } from '@se-studio/core-ui';
188
+ import { isProduction } from '@/lib/config';
189
+ import { baseUrl } from '@/lib/server-config';
190
+
191
+ export default function robots() {
192
+ return createRobotsConfig({ isProduction, baseUrl });
193
+ }
194
+ ```
195
+
196
+ Default production disallows: `/*?_rsc=*`, `/_next/data/`, `/api/`, `/preview/`, `/page-test/`, `/cms/`, `/og/`.
197
+
198
+ **Split-domain sites (Point Me):** pass `pathPrefix` (`SITE_PREFIX`), extra `apiPrefixes` (`/marketing-api/`), `disallowExtra`, `disallowOmit`, and `blockTrackingQueryParams` as needed. Query-string disallows help non-Google crawlers; Google matches path only — pair with strong canonicals.
199
+
200
+ ### Content Signals (recommended for agent readiness)
201
+
202
+ Next.js `MetadataRoute.Robots` cannot emit `Content-Signal`. Use a route handler:
203
+
204
+ ```ts
205
+ // src/app/robots.txt/route.ts
206
+ import { createRobotsTxtResponse } from '@se-studio/core-ui';
207
+ import { isProduction } from '@/lib/config';
208
+ import { baseUrl } from '@/lib/server-config';
209
+
210
+ export function GET() {
211
+ return createRobotsTxtResponse({
212
+ isProduction,
213
+ baseUrl,
214
+ contentSignals: { search: 'yes', aiTrain: 'no', aiInput: 'yes' },
215
+ // disallowExtra: ['/private/'],
216
+ // Public agent APIs under /api/ (Google: specific Allow can win over Disallow: /api/):
217
+ // allowExtra: ['/api/mcp', '/api/search'],
218
+ });
219
+ }
220
+ ```
221
+
222
+ Also: `formatRobotsTxt`, `formatContentSignalLine`, `buildRobotsDisallow`. `allowExtra` emits extra production `Allow:` lines.
223
+
224
+ ## Agent readiness (Band A)
225
+
226
+ Helpers for marketing sites that already expose `/{path}.md` and `/llms.txt`:
227
+
228
+ ```ts
229
+ // src/proxy.ts (Next 16) or src/middleware.ts (Next 15) — before A/B rewrites
230
+ import {
231
+ apiPathNeedingTrailingSlash,
232
+ appendAgentDiscoveryLinkHeaders,
233
+ resolveMarkdownNegotiationPath,
234
+ } from '@se-studio/core-ui';
235
+ import { type NextRequest, NextResponse } from 'next/server';
236
+
237
+ export function proxy(request: NextRequest) {
238
+ const { pathname } = request.nextUrl;
239
+
240
+ // Requires next.config: trailingSlash: true + skipTrailingSlashRedirect: true
241
+ // (built-in slash 308 runs before proxy and ignores rewrites).
242
+ // Rewrite bare /api/* so MCP POST is not 308’d; 308 HTML paths yourself if needed.
243
+ const apiSlashPath = apiPathNeedingTrailingSlash(pathname);
244
+ if (apiSlashPath) {
245
+ const url = request.nextUrl.clone();
246
+ url.pathname = apiSlashPath;
247
+ return NextResponse.rewrite(url);
248
+ }
249
+
250
+ const markdownPath = resolveMarkdownNegotiationPath(
251
+ pathname,
252
+ request.headers.get('accept'),
253
+ );
254
+ if (markdownPath) {
255
+ const url = request.nextUrl.clone();
256
+ url.pathname = markdownPath;
257
+ const response = NextResponse.rewrite(url);
258
+ response.headers.set('Vary', 'Accept');
259
+ return response;
260
+ }
261
+
262
+ const response = NextResponse.next();
263
+ appendAgentDiscoveryLinkHeaders(response.headers, pathname);
264
+ // Ensure caches vary on Accept if you also negotiate elsewhere
265
+ const vary = response.headers.get('Vary');
266
+ if (!vary?.toLowerCase().includes('accept')) {
267
+ response.headers.set('Vary', vary ? `${vary}, Accept` : 'Accept');
268
+ }
269
+ return response;
270
+ }
271
+ ```
272
+
273
+ | Helper | Purpose |
274
+ |--------|---------|
275
+ | `prefersMarkdownAccept` | Parse Accept; true when markdown preferred over HTML |
276
+ | `htmlPathToMarkdownPath` | `/` → `/index.md`, `/about/` → `/about.md` |
277
+ | `resolveMarkdownNegotiationPath` | Combine both for middleware rewrite target |
278
+ | `apiPathNeedingTrailingSlash` | Bare `/api/*` → `/api/*/` rewrite target when `trailingSlash: true` (MCP-safe) |
279
+ | `buildAgentDiscoveryLinkValues` / `appendAgentDiscoveryLinkHeaders` | `Link: </llms.txt>; rel="describedby"` + alternate markdown; opt-in `{ mcpServerCard: true }` for `rel="mcp-server-card"` |
280
+
281
+ **Band B (public site MCP):** use `@se-studio/site-mcp` for a public read-only MCP (typically `/api/mcp`). Pair robots with `allowExtra: ['/api/mcp', '/api/search']` when those endpoints live under a broad `Disallow: /api/`. With Next `trailingSlash: true`, wire `apiPathNeedingTrailingSlash` so POST to `/api/mcp` is not 308’d.
282
+
283
+ Pure agent path helpers are also available without the main React barrel:
284
+
285
+ ```ts
286
+ import { htmlPathToMarkdownPath } from '@se-studio/core-ui/agent-ready';
287
+ ```
288
+
289
+ ### Person profile pages
290
+
291
+ Best practice:
292
+
293
+ - **JSON-LD `Person`** (via CMS structured-data templates + `context.person`) is what search engines use for identity, job title, and profile URLs.
294
+ - **`<meta name="author">`:** optional. Common choices:
295
+ - **Person as author** (name + self URL) — good for dedicated author/bio pages where the person is the content creator.
296
+ - **Site default** (`customerName`) — fine for corporate team directories where the publisher is the brand.
297
+ - This package currently uses the **site default** on person routes; switch to person-as-author later if SEO requires it (pass person name/href into `buildPageMetadata` from `generatePersonMetadata`).
298
+
299
+ ## Sitemap
300
+
301
+ ```ts
302
+ import { generateNextSitemap, buildSitemap } from '@se-studio/core-ui';
303
+ ```
304
+
305
+ Higher-level marketing site sitemap generation (with article/tag/people indexes, download handling, locales) is enabled by passing `marketingSiteSitemap` config to `createAppHelpers`. The config + your `UrlCalculators` must stay in sync with routes. Full guidance + examples from multiple consumers: see the monorepo `docs/routing.md`.
306
+
307
+ ## Utility Hooks
308
+
309
+ ```ts
310
+ import { useClickTracking } from '@se-studio/core-ui';
311
+ import {
312
+ useVisibleToUser,
313
+ useFirstVisibleToUser,
314
+ useClientOnly,
315
+ } from '@se-studio/core-ui';
316
+ ```
317
+
318
+ ## Utility Functions
319
+
320
+ ```ts
321
+ import { cn } from '@se-studio/core-ui'; // clsx/tailwind-merge
322
+ import { convertText } from '@se-studio/core-ui'; // process text content
323
+ import { getCurrentPageUrl } from '@se-studio/core-ui';
324
+ import { handleCmsError } from '@se-studio/core-ui';
325
+ ```
326
+
327
+ ## Server-Only Exports (`@se-studio/core-ui/server`)
328
+
329
+ These are server-only — do NOT import in `'use client'` files or component registrations:
330
+
331
+ ```ts
332
+ import { createRouteHandlers } from '@se-studio/core-ui/server';
333
+ import { getRelatedArticles, getRelatedPeople, getRelatedTags } from '@se-studio/core-ui/server';
334
+ import { filterRelatedArticles, type RelatedArticlesOptions } from '@se-studio/core-ui/server';
335
+ import {
336
+ buildListingItems,
337
+ buildListingStructuredDataContext,
338
+ } from '@se-studio/core-ui/server';
339
+ import type { CmsRouteConfig } from '@se-studio/core-ui/server';
340
+ ```
341
+
342
+ `CmsRouteConfig.requireArticleContent` (default `true`): set to `false` on article detail routes to allow metadata/template-only articles without body components.
343
+
344
+ **A/B page-test routes** (`/page-test/[...slugs]`): use the paired handlers from `createRouteHandlers`:
345
+
346
+ - `generatePageTestMetadata(variantSlug, canonicalSlug, canonicalPath, routeConfig, parent)` — merges control `indexed` into `<head>` metadata
347
+ - `generatePageTest(variantSlug, canonicalSlug, canonicalPath, routeConfig)` — renders variant `contents` but overlays control `href` and `breadcrumbTitle` on the layout model; passes `currentPath={canonicalPath}` to `LayoutComponent`
348
+
349
+ Resolve canonical path with `findCanonicalPath(testsByPath, variantSlug)` from `@se-studio/ab-testing`.
350
+
351
+ `getRelatedArticles` tag criteria: explicit tag links in the collection → `pageContext.tag` → `pageContext.article.tags`. Pass via `rendererConfig.fetchHelpers.getRelatedArticles` in collections (do not import `cms-server` in registrations). Curated article/person/tag refs in `contents` are **selection and order only** — `getRelated*` helpers always hydrate from `getAll*Links` so publish webhooks revalidate link-shaped UI. For full-list cases (News Grids, Publications Lists, person-scoped or tag-filtered indexes) use `rendererConfig.fetchHelpers.getAllArticleLinks?.({ articleTypeSlugs: [...], tagSlugs: [...], authorIds: [...], strictAuthorMatch: true, ... })` — the wrapper applies `filterRelatedArticles` (OR semantics, scoring, indexed rules). Import `filterRelatedArticles` / `RelatedArticlesOptions` (and the richer `LinkFetchOptions`) from `@se-studio/core-ui/server`. For all people (e.g. team index collections), use `rendererConfig.fetchHelpers.getAllPersonLinks?.()` — returns `CmsResponse<IPersonLink[]>` including resolved `bio` when set. For related tag chips/lists, use `rendererConfig.fetchHelpers.getRelatedTags?.(information, contentContext, count)`.
352
+
353
+ ## Server/Client Rules
354
+
355
+ 1. Never import `cms-server` (or anything that imports it) in a client component.
356
+ 2. Never import preview helpers from `cms-server` inside component/collection files — use `getPreviewFieldProps` from `@se-studio/core-ui` instead.
357
+ 3. Pass `previewHelpers` as a prop to `<Section>` and `rendererConfig` to `<SectionLinks>`.
358
+ 4. Server components can call Contentful fetch functions; client components cannot.
package/package.json ADDED
@@ -0,0 +1,108 @@
1
+ {
2
+ "name": "@se-studio/core-ui",
3
+ "version": "0.0.0-next16-20260822103555",
4
+ "description": "Shared React UI component library with Tailwind CSS v4 for SE Studio applications",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/Something-Else-Studio/se-core-product",
8
+ "directory": "packages/core-ui"
9
+ },
10
+ "license": "MIT",
11
+ "type": "module",
12
+ "main": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js"
18
+ },
19
+ "./server": {
20
+ "types": "./dist/server/index.d.ts",
21
+ "import": "./dist/server/index.js"
22
+ },
23
+ "./route-handlers": {
24
+ "types": "./dist/route-handlers/index.d.ts",
25
+ "import": "./dist/route-handlers/index.js"
26
+ },
27
+ "./agent-ready": {
28
+ "types": "./dist/utils/agent-ready.d.ts",
29
+ "import": "./dist/utils/agent-ready.js"
30
+ }
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "*.md",
35
+ "docs",
36
+ "src/showcase/README.md"
37
+ ],
38
+ "keywords": [
39
+ "react",
40
+ "components",
41
+ "ui",
42
+ "tailwind",
43
+ "tailwindcss",
44
+ "design-system",
45
+ "typescript",
46
+ "contentful",
47
+ "cms",
48
+ "nextjs",
49
+ "next.js",
50
+ "ui-library",
51
+ "component-library",
52
+ "rich-text",
53
+ "analytics"
54
+ ],
55
+ "homepage": "https://github.com/Something-Else-Studio/se-core-product#readme",
56
+ "bugs": {
57
+ "url": "https://github.com/Something-Else-Studio/se-core-product/issues"
58
+ },
59
+ "peerDependencies": {
60
+ "@lottiefiles/dotlottie-react": "^0.19.0",
61
+ "@lottiefiles/lottie-player": "^2.0.0",
62
+ "next": ">=15.5.0 <17",
63
+ "react": "^19.2.0",
64
+ "react-dom": "^19.2.0"
65
+ },
66
+ "peerDependenciesMeta": {
67
+ "@lottiefiles/dotlottie-react": {
68
+ "optional": true
69
+ },
70
+ "@lottiefiles/lottie-player": {
71
+ "optional": true
72
+ }
73
+ },
74
+ "dependencies": {
75
+ "@contentful/live-preview": "^4.10.12",
76
+ "@contentful/rich-text-react-renderer": "^16.2.1",
77
+ "@contentful/rich-text-types": "^17.2.7",
78
+ "@radix-ui/react-slot": "^1.3.3",
79
+ "@types/mustache": "4.2.6",
80
+ "@vimeo/player": "^2.30.4",
81
+ "clsx": "^2.1.1",
82
+ "hls.js": "^1.6.16",
83
+ "html-entities": "^2.6.0",
84
+ "mustache": "4.2.0",
85
+ "server-only": "0.0.1",
86
+ "tailwind-merge": "^3.6.0",
87
+ "@se-studio/contentful-rest-api": "0.0.0-next16-20260822103555",
88
+ "@se-studio/core-data-types": "1.12.0"
89
+ },
90
+ "devDependencies": {
91
+ "@biomejs/biome": "^2.5.5",
92
+ "@types/node": "^24.13.3",
93
+ "@types/react": "^19.2.17",
94
+ "@types/react-dom": "^19.2.3",
95
+ "jsdom": "^29.1.1",
96
+ "next": "^16.3.1",
97
+ "typescript": "^6.0.3",
98
+ "vitest": "^4.1.10"
99
+ },
100
+ "scripts": {
101
+ "build": "tsc --project tsconfig.build.json",
102
+ "dev": "tsc --project tsconfig.build.json --watch",
103
+ "type-check": "tsc --noEmit",
104
+ "lint": "biome lint .",
105
+ "test": "vitest run",
106
+ "clean": "rm -rf dist .turbo *.tsbuildinfo"
107
+ }
108
+ }