@flamingo-stack/openframe-frontend-core 0.0.773 → 0.0.774

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 (128) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-7P2QXBWE.cjs → chunk-4JZC624S.cjs} +226 -206
  3. package/dist/{chunk-JJNOAYD4.cjs → chunk-5AOKXXHV.cjs} +4 -4
  4. package/dist/{chunk-MT5Z2LSV.cjs → chunk-5Z3XL2VU.cjs} +72 -72
  5. package/dist/{chunk-BPAYT72L.cjs → chunk-BTVO676B.cjs} +148 -131
  6. package/dist/{chunk-TZ4GKUO2.cjs → chunk-CZIMISAR.cjs} +5 -1
  7. package/dist/{chunk-YSKX42LW.cjs → chunk-E5E7IE7X.cjs} +12 -12
  8. package/dist/{chunk-XVFM6SJA.cjs → chunk-E64HPPRH.cjs} +31 -31
  9. package/dist/{chunk-CTRJNTYU.cjs → chunk-EQBJHJS7.cjs} +2 -2
  10. package/dist/{chunk-BMFU2CUL.cjs → chunk-HTSRAQVG.cjs} +4 -4
  11. package/dist/{chunk-NRFNZ35Z.cjs → chunk-IQQ3SLUK.cjs} +19 -19
  12. package/dist/{chunk-RNLRS4ID.cjs → chunk-KKAY6GPU.cjs} +2 -2
  13. package/dist/{chunk-ILZEXCJH.cjs → chunk-KWZ62LPZ.cjs} +124 -104
  14. package/dist/{chunk-KDMWXXLE.cjs → chunk-L5CKY5WA.cjs} +15 -15
  15. package/dist/{chunk-6LLF2QCS.cjs → chunk-LEVA5WO3.cjs} +39 -39
  16. package/dist/{chunk-CW3ML76U.cjs → chunk-NTPX5GXI.cjs} +4 -0
  17. package/dist/{chunk-VW2QQKQ6.cjs → chunk-NX7P2T2U.cjs} +15 -15
  18. package/dist/{chunk-7J4YWDT6.cjs → chunk-Q6B2DC65.cjs} +3 -3
  19. package/dist/{chunk-NPCFVTA2.cjs → chunk-Q7EXOVMT.cjs} +31 -31
  20. package/dist/{chunk-2A56MLLL.cjs → chunk-SWEPHSIP.cjs} +4 -4
  21. package/dist/{chunk-KSCEAIBS.cjs → chunk-TOPGBOCN.cjs} +2 -2
  22. package/dist/{chunk-I4ZVMNHO.cjs → chunk-TTQHSSHF.cjs} +6 -6
  23. package/dist/{chunk-FPCGKH5K.cjs → chunk-TUXPFF4P.cjs} +31 -29
  24. package/dist/{chunk-42YLIZFD.cjs → chunk-U332FL4C.cjs} +22 -22
  25. package/dist/{chunk-3FREBLAJ.cjs → chunk-UAKXZ2KD.cjs} +47 -45
  26. package/dist/{chunk-SE76YGR3.cjs → chunk-USMR73ND.cjs} +4 -4
  27. package/dist/{chunk-X5Z4HRH7.cjs → chunk-VISK6LKE.cjs} +2 -2
  28. package/dist/{chunk-HEEK42BL.cjs → chunk-VWUQVJ2D.cjs} +81 -81
  29. package/dist/{chunk-5V7BIUGA.cjs → chunk-Y3EBUFX4.cjs} +92 -21
  30. package/dist/{chunk-5HBGBLJT.cjs → chunk-ZHGOXDA3.cjs} +63 -59
  31. package/dist/{cloud-tenants-EE5ULFOK.cjs → cloud-tenants-7RNZ6GHM.cjs} +11 -11
  32. package/dist/components/case-studies/index.cjs +28 -28
  33. package/dist/components/chat/ask-prompts.d.ts.map +1 -1
  34. package/dist/components/chat/ask-prompts.js +28 -19
  35. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts +3 -1
  36. package/dist/components/chat/entity-cards/entity-portrait-card.d.ts.map +1 -1
  37. package/dist/components/chat/entity-cards/entity-portrait-card.js +2 -0
  38. package/dist/components/chat/entity-cards/program-card.d.ts +6 -1
  39. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  40. package/dist/components/chat/entity-cards/program-card.js +19 -2
  41. package/dist/components/chat/index.cjs +10 -8
  42. package/dist/components/chat/index.d.ts +1 -1
  43. package/dist/components/chat/index.d.ts.map +1 -1
  44. package/dist/components/chat/index.js +10 -4
  45. package/dist/components/chat/utils/ask-ai-events.d.ts +10 -0
  46. package/dist/components/chat/utils/ask-ai-events.d.ts.map +1 -1
  47. package/dist/components/chat/utils/ask-ai-events.js +21 -1
  48. package/dist/components/contact/index.cjs +12 -12
  49. package/dist/components/docs/index.cjs +15 -15
  50. package/dist/components/embeds/index.cjs +12 -12
  51. package/dist/components/faq/index.cjs +13 -13
  52. package/dist/components/features/index.cjs +11 -11
  53. package/dist/components/features/video-hover-preview.d.ts.map +1 -1
  54. package/dist/components/features/video-hover-preview.js +5 -2
  55. package/dist/components/features/video-shared.d.ts +2 -1
  56. package/dist/components/features/video-shared.d.ts.map +1 -1
  57. package/dist/components/features/video.d.ts.map +1 -1
  58. package/dist/components/features/video.js +64 -13
  59. package/dist/components/help-center-pages/index.cjs +100 -100
  60. package/dist/components/index.cjs +63 -61
  61. package/dist/components/meeting-scheduler/index.cjs +46 -46
  62. package/dist/components/navigation/index.cjs +14 -14
  63. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  64. package/dist/components/navigation/mingo-ai-button.js +2 -1
  65. package/dist/components/navigation/site-header.d.ts.map +1 -1
  66. package/dist/components/navigation/site-header.js +3 -1
  67. package/dist/components/onboarding-guides/index.cjs +14 -14
  68. package/dist/components/product-demo/index.cjs +20 -20
  69. package/dist/components/related-content/index.cjs +7 -6
  70. package/dist/components/related-content/index.d.ts +2 -1
  71. package/dist/components/related-content/index.d.ts.map +1 -1
  72. package/dist/components/related-content/index.js +2 -2
  73. package/dist/components/related-content/related-content-section.d.ts +8 -10
  74. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  75. package/dist/components/related-content/related-content-section.js +11 -7
  76. package/dist/components/tickets/index.cjs +17 -17
  77. package/dist/components/ui/index.cjs +13 -11
  78. package/dist/components/ui/photo-wall.d.ts +7 -0
  79. package/dist/components/ui/photo-wall.d.ts.map +1 -1
  80. package/dist/components/ui/photo-wall.js +16 -2
  81. package/dist/components/ui/tab-navigation.d.ts +8 -1
  82. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  83. package/dist/components/ui/tab-navigation.js +9 -3
  84. package/dist/{devices-EBGGHEGR.cjs → devices-NNDBC6IH.cjs} +12 -12
  85. package/dist/{embeddable-chat-HCT4QV35.cjs → embeddable-chat-DI7ZZTBP.cjs} +75 -75
  86. package/dist/hooks/index.cjs +4 -4
  87. package/dist/hooks/use-near-viewport.d.ts.map +1 -1
  88. package/dist/hooks/use-near-viewport.js +4 -0
  89. package/dist/index.cjs +23 -15
  90. package/dist/{knowledge-5ZSMKKTL.cjs → knowledge-DPUMWQED.cjs} +12 -12
  91. package/dist/{logs-GUV3BMGC.cjs → logs-EE25MWYM.cjs} +19 -19
  92. package/dist/{policies-HPMTDOAS.cjs → policies-H5LPZWEM.cjs} +15 -15
  93. package/dist/{scripts-QYYKCIUW.cjs → scripts-YGO4LOES.cjs} +16 -16
  94. package/dist/{software-update-NC2KZKEI.cjs → software-update-5BEB62ZH.cjs} +14 -14
  95. package/dist/utils/content-ref-groups.d.ts +8 -0
  96. package/dist/utils/content-ref-groups.d.ts.map +1 -1
  97. package/dist/utils/content-ref-groups.js +2 -0
  98. package/dist/utils/dismiss-cookie.d.ts +14 -0
  99. package/dist/utils/dismiss-cookie.d.ts.map +1 -1
  100. package/dist/utils/dismiss-cookie.js +4 -0
  101. package/dist/utils/index.cjs +10 -0
  102. package/dist/utils/index.d.ts +1 -1
  103. package/dist/utils/index.d.ts.map +1 -1
  104. package/dist/utils/index.js +2 -0
  105. package/dist/utils/visitor-os.d.ts +9 -0
  106. package/dist/utils/visitor-os.d.ts.map +1 -1
  107. package/dist/utils/visitor-os.js +4 -0
  108. package/dist/{video-file-player-COXRF4M5.cjs → video-file-player-4TXA7BZF.cjs} +3 -3
  109. package/package.json +1 -1
  110. package/src/components/chat/ask-prompts.tsx +6 -1
  111. package/src/components/chat/entity-cards/entity-portrait-card.tsx +4 -0
  112. package/src/components/chat/entity-cards/program-card.tsx +24 -2
  113. package/src/components/chat/index.ts +16 -9
  114. package/src/components/chat/utils/ask-ai-events.ts +26 -0
  115. package/src/components/features/video-hover-preview.tsx +46 -37
  116. package/src/components/features/video-shared.tsx +2 -1
  117. package/src/components/features/video.tsx +102 -19
  118. package/src/components/navigation/mingo-ai-button.tsx +2 -1
  119. package/src/components/navigation/site-header.tsx +3 -1
  120. package/src/components/related-content/index.ts +2 -1
  121. package/src/components/related-content/related-content-section.tsx +26 -12
  122. package/src/components/ui/photo-wall.tsx +24 -2
  123. package/src/components/ui/tab-navigation.tsx +18 -3
  124. package/src/hooks/use-near-viewport.ts +6 -0
  125. package/src/utils/content-ref-groups.ts +9 -0
  126. package/src/utils/dismiss-cookie.ts +17 -0
  127. package/src/utils/index.ts +1 -0
  128. package/src/utils/visitor-os.ts +12 -0
@@ -49,7 +49,7 @@ var _chunk3LW5TD54cjs = require('./chunk-3LW5TD54.cjs');
49
49
 
50
50
 
51
51
 
52
- var _chunkCW3ML76Ucjs = require('./chunk-CW3ML76U.cjs');
52
+ var _chunkNTPX5GXIcjs = require('./chunk-NTPX5GXI.cjs');
53
53
 
54
54
 
55
55
  var _chunkVFZFCRALcjs = require('./chunk-VFZFCRAL.cjs');
@@ -305,12 +305,13 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
305
305
 
306
306
 
307
307
 
308
+
308
309
  var filePlayer = null;
309
310
  var filePlayerLoad = null;
310
311
  var filePlayerListeners = /* @__PURE__ */ new Set();
311
312
  function loadFilePlayer() {
312
313
  if (filePlayer || filePlayerLoad) return;
313
- filePlayerLoad = Promise.resolve().then(() => _interopRequireWildcard(require("./video-file-player-COXRF4M5.cjs"))).then((module) => {
314
+ filePlayerLoad = Promise.resolve().then(() => _interopRequireWildcard(require("./video-file-player-4TXA7BZF.cjs"))).then((module) => {
314
315
  filePlayer = module.default;
315
316
  for (const listener of filePlayerListeners) listener();
316
317
  }).catch(() => void 0).finally(() => {
@@ -326,24 +327,70 @@ function subscribeToFilePlayer(listener) {
326
327
  }
327
328
  var loadedFilePlayer = () => filePlayer;
328
329
  var noFilePlayer = () => null;
329
- function FilePlayerFallback({ poster, className }) {
330
+ var PosterBox = _react.forwardRef.call(void 0, function PosterBoxView({ poster, className, priority, fill }, ref) {
330
331
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
331
332
  "div",
332
333
  {
334
+ ref,
333
335
  "aria-hidden": "true",
334
- className,
335
- style: {
336
- width: "100%",
337
- height: "100%",
338
- ...poster ? { backgroundImage: `url(${poster})`, backgroundSize: "cover", backgroundPosition: "center" } : {}
339
- }
336
+ className: _chunk65VVJSQZcjs.cn.call(void 0, "relative overflow-hidden", className),
337
+ style: fill ? { width: "100%", height: "100%" } : void 0,
338
+ children: poster ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: poster, alt: "", fill: true, sizes: "100vw", priority, unoptimized: true, className: "object-cover" }) : null
340
339
  }
341
340
  );
341
+ });
342
+ function FilePlayerFallback({
343
+ poster,
344
+ className,
345
+ priority
346
+ }) {
347
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PosterBox, { poster, className, priority, fill: true });
348
+ }
349
+ function waitsForPlay(props) {
350
+ return !props.autoPlay && !props.autoPlayUnmuted && !props.playOnHover && props.playWhenHovered === void 0 && props.startTime === void 0 && !props.playerHandleRef && !props.chromeless;
351
+ }
352
+ function FilePlayer({
353
+ title,
354
+ priority,
355
+ ...props
356
+ }) {
357
+ const [facade] = _react.useState.call(void 0, () => waitsForPlay(props));
358
+ const [pressed, setPressed] = _react.useState.call(void 0, false);
359
+ if (facade && !pressed) {
360
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "relative", props.className), style: { width: "100%", height: "100%" }, children: [
361
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FilePlayerFallback, { poster: props.poster, className: "absolute inset-0", priority }),
362
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
363
+ _chunkTF5D5MNOcjs.Button,
364
+ {
365
+ type: "button",
366
+ variant: "glyph",
367
+ size: "wrap",
368
+ "aria-label": title ? `Play: ${title}` : "Play video",
369
+ onPointerEnter: loadFilePlayer,
370
+ onFocus: loadFilePlayer,
371
+ onTouchStart: loadFilePlayer,
372
+ onClick: () => {
373
+ loadFilePlayer();
374
+ setPressed(true);
375
+ },
376
+ className: "group absolute inset-0 rounded-none",
377
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
378
+ _chunkSETFUCZAcjs.VideoPlayBadge,
379
+ {
380
+ size: "lg",
381
+ className: "transition-transform duration-200 group-hover:scale-110 group-hover:text-ods-accent"
382
+ }
383
+ )
384
+ }
385
+ )
386
+ ] });
387
+ }
388
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LoadedFilePlayer, { ...props, priority, ...facade ? { autoPlayUnmuted: true } : {} });
342
389
  }
343
- function FilePlayer(props) {
390
+ function LoadedFilePlayer({ priority, ...props }) {
344
391
  const arrived = _react.useSyncExternalStore.call(void 0, subscribeToFilePlayer, loadedFilePlayer, noFilePlayer);
345
392
  if (arrived) return _react.createElement.call(void 0, arrived, props);
346
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FilePlayerFallback, { poster: props.poster, className: props.className });
393
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FilePlayerFallback, { poster: props.poster, className: props.className, priority });
347
394
  }
348
395
  var YT_HOSTS = /* @__PURE__ */ new Set([
349
396
  "youtube.com",
@@ -381,22 +428,22 @@ function extractYouTubeId(url) {
381
428
  return m ? m[1] : null;
382
429
  }
383
430
  function Video(props) {
384
- const { ref: nearRef, isNear } = _chunkCW3ML76Ucjs.useNearViewport.call(void 0, );
431
+ const { ref: nearRef, isNear } = _chunkNTPX5GXIcjs.useNearViewport.call(void 0, );
385
432
  const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
386
433
  const url = props.url;
387
434
  const layout = _nullishCoalesce(props.layout, () => ( "native"));
388
435
  if (loading && !url) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoSkeleton, { layout, className: props.className });
389
436
  if (!url) return null;
390
437
  const effectiveKind = resolveKind(props, url);
391
- if (props.lazy && !isNear) {
438
+ if ((_nullishCoalesce(props.lazy, () => ( true))) && !isNear) {
392
439
  return wrapWithLayout(
393
440
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
394
- "div",
441
+ PosterBox,
395
442
  {
396
443
  ref: nearRef,
444
+ poster: props.poster,
397
445
  className: props.className,
398
- style: props.poster ? { backgroundImage: `url(${props.poster})`, backgroundSize: "cover", backgroundPosition: "center" } : void 0,
399
- "aria-hidden": "true"
446
+ priority: "priority" in props ? props.priority : void 0
400
447
  }
401
448
  ),
402
449
  layout
@@ -426,6 +473,8 @@ function Video(props) {
426
473
  {
427
474
  url,
428
475
  poster: props.poster,
476
+ title: props.title,
477
+ priority: props.priority,
429
478
  muted: props.muted,
430
479
  ..._chunkSETFUCZAcjs.pickFilePlayback.call(void 0, props),
431
480
  className: props.className
@@ -1668,6 +1717,7 @@ function EntityPortraitCard({
1668
1717
  title,
1669
1718
  titleClassName,
1670
1719
  person,
1720
+ priority,
1671
1721
  className
1672
1722
  }) {
1673
1723
  const loading = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
@@ -1696,6 +1746,7 @@ function EntityPortraitCard({
1696
1746
  className: _chunk65VVJSQZcjs.cn.call(void 0, "h-full w-full", isWide === false ? "object-contain" : "object-cover"),
1697
1747
  sizes: "(min-width: 800px) 400px, 100vw",
1698
1748
  fill: true,
1749
+ priority,
1699
1750
  unoptimized: true,
1700
1751
  onLoad: onMediaLoad,
1701
1752
  onError: onMediaError
@@ -2192,12 +2243,15 @@ function VideoHoverPreviewSurface({
2192
2243
  const el = rootElRef.current;
2193
2244
  if (!el || typeof IntersectionObserver === "undefined") return void 0;
2194
2245
  const io = new IntersectionObserver((entries) => setIsNear(_nullishCoalesce(_optionalChain([entries, 'access', _48 => _48[0], 'optionalAccess', _49 => _49.isIntersecting]), () => ( false))), {
2195
- rootMargin: _chunkCW3ML76Ucjs.NEAR_VIEWPORT_ROOT_MARGIN
2246
+ rootMargin: _chunkNTPX5GXIcjs.NEAR_VIEWPORT_ROOT_MARGIN
2196
2247
  });
2197
2248
  io.observe(el);
2198
2249
  return () => io.disconnect();
2199
2250
  }, [gateControlled]);
2200
2251
  const showMedia = continuation || (gateControlled ? playerMounted : isNear);
2252
+ const [engaged, setEngaged] = _react.useState.call(void 0, false);
2253
+ if ((active || continuation) && !engaged) setEngaged(true);
2254
+ const showPlayer = continuation || engaged;
2201
2255
  const { src: posterSrc, onError: onPosterError } = useCoverImageFallback(posterUrl);
2202
2256
  const facadeSkipped = preload === "none" && !posterSrc;
2203
2257
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rootElRef, className: _chunk65VVJSQZcjs.cn.call(void 0, "absolute inset-0", className), inert: isClone || void 0, children: showMedia ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -2215,7 +2269,7 @@ function VideoHoverPreviewSurface({
2215
2269
  }
2216
2270
  ) : facadeSkipped ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video, { kind: "file", url: previewUrl, firstFrameOnly: true, layout: "fill", fit }),
2217
2271
  badge === "play" && !active && !continuation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
2218
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2272
+ showPlayer ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2219
2273
  "div",
2220
2274
  {
2221
2275
  className: "absolute inset-0",
@@ -2245,7 +2299,7 @@ function VideoHoverPreviewSurface({
2245
2299
  continuation ? "continuation" : "preview"
2246
2300
  )
2247
2301
  }
2248
- )
2302
+ ) : null
2249
2303
  ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) });
2250
2304
  }
2251
2305
 
@@ -4046,6 +4100,7 @@ function ProgramEditorialCard({
4046
4100
  typeMeta,
4047
4101
  profile,
4048
4102
  playable,
4103
+ priority,
4049
4104
  className
4050
4105
  }) {
4051
4106
  const edgeColor = _chunk3LW5TD54cjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
@@ -4059,7 +4114,7 @@ function ProgramEditorialCard({
4059
4114
  if (!feature) {
4060
4115
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ContentCardFrame, { as: "a", href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_ROW_GRID, className), children: [
4061
4116
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk65VVJSQZcjs.cn.call(void 0, EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
4062
- cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", unoptimized: true }),
4117
+ cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", priority, unoptimized: true }),
4063
4118
  playable && cover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "md" })
4064
4119
  ] }),
4065
4120
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: EDITORIAL_ROW_TEXT, children: [
@@ -4084,6 +4139,7 @@ function ProgramEditorialCard({
4084
4139
  fill: true,
4085
4140
  sizes: "(min-width: 1024px) 640px, 100vw",
4086
4141
  className: "object-contain",
4142
+ priority,
4087
4143
  unoptimized: true
4088
4144
  }
4089
4145
  ),
@@ -4132,6 +4188,7 @@ function ProgramCard({
4132
4188
  wholeCardClickable = false,
4133
4189
  eyebrow,
4134
4190
  tags = [],
4191
+ priority,
4135
4192
  className
4136
4193
  }) {
4137
4194
  const { target, rel } = useEntityCardLink({
@@ -4188,6 +4245,7 @@ function ProgramCard({
4188
4245
  imageAlt: item.title,
4189
4246
  title: item.title,
4190
4247
  titleClassName: "font-['Azeret_Mono'] font-semibold text-lg leading-6",
4248
+ priority,
4191
4249
  person: profile ? { name: profile.name, avatarUrl: profile.avatarUrl, subtitle: profile.subtitle || dateMeta } : { name: config.labels.singular, subtitle: dateMeta },
4192
4250
  className
4193
4251
  }
@@ -4209,6 +4267,7 @@ function ProgramCard({
4209
4267
  typeMeta: compactTypeMetaValue,
4210
4268
  profile: programItemToStripProfile(item),
4211
4269
  playable: isPlayable,
4270
+ priority,
4212
4271
  className
4213
4272
  }
4214
4273
  );
@@ -4222,7 +4281,18 @@ function ProgramCard({
4222
4281
  );
4223
4282
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href, target, rel, className: _chunk65VVJSQZcjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className), children: [
4224
4283
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
4225
- compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE76ONBKFcjs.next_image_default, { src: compactCover, alt: item.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Play, { className: "h-4 w-4" }) : config.type === "webinar" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-4 w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Clock, { className: "h-4 w-4" }) }),
4284
+ compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4285
+ _chunkE76ONBKFcjs.next_image_default,
4286
+ {
4287
+ src: compactCover,
4288
+ alt: item.title,
4289
+ fill: true,
4290
+ sizes: "56px",
4291
+ className: "object-contain",
4292
+ priority,
4293
+ unoptimized: true
4294
+ }
4295
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Play, { className: "h-4 w-4" }) : config.type === "webinar" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Video, { className: "h-4 w-4" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Clock, { className: "h-4 w-4" }) }),
4226
4296
  isPlayable && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSETFUCZAcjs.CardHoverPlay, { size: "sm" })
4227
4297
  ] }),
4228
4298
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -4275,6 +4345,7 @@ function ProgramCard({
4275
4345
  fill: true,
4276
4346
  sizes: "(min-width: 1280px) 400px, (min-width: 768px) 320px, 100vw",
4277
4347
  className: "object-cover",
4348
+ priority,
4278
4349
  unoptimized: true
4279
4350
  }
4280
4351
  ),
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkKSCEAIBScjs = require('./chunk-KSCEAIBS.cjs');
4
+ var _chunkTOPGBOCNcjs = require('./chunk-TOPGBOCN.cjs');
5
5
 
6
6
 
7
7
 
@@ -15,8 +15,8 @@ var _chunkKSCEAIBScjs = require('./chunk-KSCEAIBS.cjs');
15
15
 
16
16
 
17
17
 
18
- var _chunkFPCGKH5Kcjs = require('./chunk-FPCGKH5K.cjs');
19
18
 
19
+ var _chunkTUXPFF4Pcjs = require('./chunk-TUXPFF4P.cjs');
20
20
 
21
21
 
22
22
 
@@ -39,7 +39,8 @@ var _chunkFPCGKH5Kcjs = require('./chunk-FPCGKH5K.cjs');
39
39
 
40
40
 
41
41
 
42
- var _chunk5V7BIUGAcjs = require('./chunk-5V7BIUGA.cjs');
42
+
43
+ var _chunkY3EBUFX4cjs = require('./chunk-Y3EBUFX4.cjs');
43
44
 
44
45
 
45
46
  var _chunkBLH2SFOOcjs = require('./chunk-BLH2SFOO.cjs');
@@ -452,7 +453,7 @@ function programEntry(configKey) {
452
453
  // Hosts are drawn only for a type whose cards show them (its config's `cardShowsHosts`): elsewhere a record may
453
454
  // have none.
454
455
  skeleton: (size, extras) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
455
- _chunk5V7BIUGAcjs.ProgramCardSkeleton,
456
+ _chunkY3EBUFX4cjs.ProgramCardSkeleton,
456
457
  {
457
458
  size: size === "sm" ? "sm" : "default",
458
459
  media: configKey === "event" ? EVENT_CARD_SKELETON_MEDIA : 0,
@@ -464,7 +465,7 @@ function programEntry(configKey) {
464
465
  const config = _optionalChain([ctx, 'access', _5 => _5.extras, 'optionalAccess', _6 => _6.programConfigs, 'optionalAccess', _7 => _7[configKey]]);
465
466
  if (!config) return null;
466
467
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
467
- _chunk5V7BIUGAcjs.ProgramCard,
468
+ _chunkY3EBUFX4cjs.ProgramCard,
468
469
  {
469
470
  config,
470
471
  item,
@@ -481,10 +482,10 @@ function programEntry(configKey) {
481
482
  }
482
483
  function roadmapEntry(cardType) {
483
484
  return cardEntry({
484
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.RoadmapCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
485
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.RoadmapCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
485
486
  decode: decodeRoadmapRow,
486
487
  render: (item, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
487
- _chunk5V7BIUGAcjs.RoadmapCard,
488
+ _chunkY3EBUFX4cjs.RoadmapCard,
488
489
  {
489
490
  item,
490
491
  href: ctx.href,
@@ -501,10 +502,10 @@ function roadmapEntry(cardType) {
501
502
  }
502
503
  var RELATED_CARD_REGISTRY = {
503
504
  blog_post_existing: cardEntry({
504
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.BlogCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
505
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.BlogCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
505
506
  decode: decodeBlogRow,
506
507
  render: (post, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
507
- _chunk5V7BIUGAcjs.BlogCard,
508
+ _chunkY3EBUFX4cjs.BlogCard,
508
509
  {
509
510
  post,
510
511
  size: ctx.legacySize,
@@ -516,10 +517,10 @@ var RELATED_CARD_REGISTRY = {
516
517
  )
517
518
  }),
518
519
  case_study: cardEntry({
519
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.CaseStudyCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
520
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.CaseStudyCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
520
521
  decode: decodeCaseStudyRow,
521
522
  render: (study, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
522
- _chunk5V7BIUGAcjs.CaseStudyCard,
523
+ _chunkY3EBUFX4cjs.CaseStudyCard,
523
524
  {
524
525
  study,
525
526
  size: ctx.legacySize,
@@ -531,10 +532,10 @@ var RELATED_CARD_REGISTRY = {
531
532
  )
532
533
  }),
533
534
  customer_interview: cardEntry({
534
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.CustomerInterviewCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
535
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.CustomerInterviewCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
535
536
  decode: decodeCustomerInterviewRow,
536
537
  render: (interview, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
537
- _chunk5V7BIUGAcjs.CustomerInterviewCard,
538
+ _chunkY3EBUFX4cjs.CustomerInterviewCard,
538
539
  {
539
540
  interview,
540
541
  size: ctx.legacySize,
@@ -552,13 +553,13 @@ var RELATED_CARD_REGISTRY = {
552
553
  * record, and the three props the rail sets itself are read off it.
553
554
  */
554
555
  product_release: cardEntry({
555
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.ProductReleaseCardSkeleton, { size: size === "sm" ? "sm" : "lg" }),
556
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.ProductReleaseCardSkeleton, { size: size === "sm" ? "sm" : "lg" }),
556
557
  decode: asRecord,
557
558
  render: (release, ctx) => {
558
- const buildReleaseProps = _nullishCoalesce(_optionalChain([ctx, 'access', _8 => _8.extras, 'optionalAccess', _9 => _9.buildProductReleaseCardProps]), () => ( _chunk5V7BIUGAcjs.buildProductReleaseCardProps));
559
+ const buildReleaseProps = _nullishCoalesce(_optionalChain([ctx, 'access', _8 => _8.extras, 'optionalAccess', _9 => _9.buildProductReleaseCardProps]), () => ( _chunkY3EBUFX4cjs.buildProductReleaseCardProps));
559
560
  const releaseProps = buildReleaseProps(release);
560
561
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
561
- _chunkFPCGKH5Kcjs.ProductReleaseCard,
562
+ _chunkTUXPFF4Pcjs.ProductReleaseCard,
562
563
  {
563
564
  size: ctx.size === "sm" ? "sm" : "lg",
564
565
  title: str(release, "title"),
@@ -574,10 +575,10 @@ var RELATED_CARD_REGISTRY = {
574
575
  webinar: programEntry("webinar"),
575
576
  event: programEntry("event"),
576
577
  investor_update: cardEntry({
577
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.InvestorUpdateCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
578
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.InvestorUpdateCardSkeleton, { size: size === "sm" ? "sm" : "default" }),
578
579
  decode: decodeInvestorUpdateRow,
579
580
  render: (update, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
580
- _chunk5V7BIUGAcjs.InvestorUpdateCard,
581
+ _chunkY3EBUFX4cjs.InvestorUpdateCard,
581
582
  {
582
583
  update,
583
584
  size: ctx.legacySize,
@@ -592,10 +593,10 @@ var RELATED_CARD_REGISTRY = {
592
593
  * step-numbered 'default' variant is for the guide detail page's "More in
593
594
  * section" rail, not this full-width row. */
594
595
  onboarding_guide: cardEntry({
595
- skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.OnboardingGuideCardSkeleton, { size: size === "sm" ? "sm" : "catalog", published: false }),
596
+ skeleton: (size) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkY3EBUFX4cjs.OnboardingGuideCardSkeleton, { size: size === "sm" ? "sm" : "catalog", published: false }),
596
597
  decode: decodeOnboardingGuideRow,
597
598
  render: (guide, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
598
- _chunk5V7BIUGAcjs.OnboardingGuideCard,
599
+ _chunkY3EBUFX4cjs.OnboardingGuideCard,
599
600
  {
600
601
  guide,
601
602
  size: ctx.size === "sm" ? "sm" : "catalog",
@@ -612,10 +613,10 @@ var RELATED_CARD_REGISTRY = {
612
613
  * href: an object with `href: undefined` is still truthy and would wrap the
613
614
  * card in a dead <a>. */
614
615
  what_i_shipped: cardEntry({
615
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFPCGKH5Kcjs.WhatIShippedCardSkeleton, {}),
616
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTUXPFF4Pcjs.WhatIShippedCardSkeleton, {}),
616
617
  decode: decodeEmployeeEntryRow,
617
618
  render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
618
- _chunkFPCGKH5Kcjs.WhatIShippedCard,
619
+ _chunkTUXPFF4Pcjs.WhatIShippedCard,
619
620
  {
620
621
  entry,
621
622
  placeholderUrl: ctx.placeholderUrl,
@@ -625,10 +626,10 @@ var RELATED_CARD_REGISTRY = {
625
626
  }),
626
627
  /** Same shared employee-entry shape + anchor contract as What I Shipped. */
627
628
  how_i_work: cardEntry({
628
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFPCGKH5Kcjs.HowIWorkCardSkeleton, {}),
629
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTUXPFF4Pcjs.HowIWorkCardSkeleton, {}),
629
630
  decode: decodeEmployeeEntryRow,
630
631
  render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
631
- _chunkFPCGKH5Kcjs.HowIWorkCard,
632
+ _chunkTUXPFF4Pcjs.HowIWorkCard,
632
633
  {
633
634
  entry,
634
635
  placeholderUrl: ctx.placeholderUrl,
@@ -638,10 +639,10 @@ var RELATED_CARD_REGISTRY = {
638
639
  }),
639
640
  /** Same shared employee-entry shape + anchor contract as What I Shipped. */
640
641
  ai_prompt: cardEntry({
641
- skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFPCGKH5Kcjs.AiPromptCardSkeleton, {}),
642
+ skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTUXPFF4Pcjs.AiPromptCardSkeleton, {}),
642
643
  decode: decodeEmployeeEntryRow,
643
644
  render: (entry, ctx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
644
- _chunkFPCGKH5Kcjs.AiPromptCard,
645
+ _chunkTUXPFF4Pcjs.AiPromptCard,
645
646
  {
646
647
  entry,
647
648
  placeholderUrl: ctx.placeholderUrl,
@@ -662,7 +663,7 @@ function DefaultLinkPropsProvider({
662
663
  children
663
664
  }) {
664
665
  if (!href) return children(null);
665
- const newTab = _chunk5V7BIUGAcjs.decideNewTab.call(void 0, { href, targetPlatform, currentSource: "" });
666
+ const newTab = _chunkY3EBUFX4cjs.decideNewTab.call(void 0, { href, targetPlatform, currentSource: "" });
666
667
  return children(newTab ? { href, target: "_blank", rel: "noopener noreferrer" } : { href });
667
668
  }
668
669
  function defaultResolveHref(ref) {
@@ -715,14 +716,16 @@ function CardForType({
715
716
  extras
716
717
  });
717
718
  }
718
- function useGroupItems(type, refs, buildUrl) {
719
+ function useGroupItems(type, refs, buildUrl, seedRows) {
719
720
  const ids = refs.map((r) => r.id);
720
721
  const url = ids.length > 0 ? buildUrl(type, ids) : null;
721
- const [pages, setPages] = _react.useState.call(void 0, () => /* @__PURE__ */ new Map());
722
+ const [pages, setPages] = _react.useState.call(void 0,
723
+ () => seedRows && url !== null ? /* @__PURE__ */ new Map([[url, [...seedRows]]]) : /* @__PURE__ */ new Map()
724
+ );
722
725
  const cached = url !== null ? pages.get(url) : void 0;
723
- const { data, dataUrl, error } = _chunkFPCGKH5Kcjs.useSelfFetch.call(void 0, cached ? null : url);
726
+ const { data, dataUrl, error } = _chunkTUXPFF4Pcjs.useSelfFetch.call(void 0, cached ? null : url);
724
727
  if (data != null && dataUrl !== null && !pages.has(dataUrl)) {
725
- setPages(new Map(pages).set(dataUrl, _chunk5V7BIUGAcjs.extractItems.call(void 0, data)));
728
+ setPages(new Map(pages).set(dataUrl, _chunkY3EBUFX4cjs.extractItems.call(void 0, data)));
726
729
  }
727
730
  if (url === null) return { items: null, isLoading: false };
728
731
  return { items: _nullishCoalesce(cached, () => ( (error ? [] : null))), isLoading: !cached && !error };
@@ -731,29 +734,28 @@ function gridClassFor(columns) {
731
734
  return columns === 3 ? "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6" : "grid grid-cols-1 sm:grid-cols-2 gap-6";
732
735
  }
733
736
  function resolveGroupConfig(type) {
734
- return _nullishCoalesce(_chunkFPCGKH5Kcjs.CONTENT_REF_GROUPS[type], () => ( {
737
+ return _nullishCoalesce(_chunkTUXPFF4Pcjs.CONTENT_REF_GROUPS[type], () => ( {
735
738
  label: type,
736
739
  order: 999,
737
740
  layout: "grid",
738
741
  gridSize: "default"
739
742
  }));
740
743
  }
741
- var GROUP_PAGE_SIZE = 12;
742
744
  var GROUP_CLASS = "space-y-4";
743
745
  var GROUP_LIST_CLASS = "space-y-4";
744
746
  var GROUP_HEADING_CLASS = "font-semibold text-ods-text-secondary text-h5";
745
747
  var RAIL_CLASS = "flex flex-col gap-8";
746
748
  var UNKNOWN_TYPE_CARD = "blog_post_existing";
747
749
  function GroupHeading({ type }) {
748
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: GROUP_HEADING_CLASS, children: _chunkFPCGKH5Kcjs.getContentRefLabelOrTitleCase.call(void 0, type) });
750
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: GROUP_HEADING_CLASS, children: _chunkTUXPFF4Pcjs.getContentRefLabelOrTitleCase.call(void 0, type) });
749
751
  }
750
752
  function orderRailTypes(types, entityType) {
751
- let ordered = _chunkFPCGKH5Kcjs.orderContentRefTypes.call(void 0, types);
753
+ let ordered = _chunkTUXPFF4Pcjs.orderContentRefTypes.call(void 0, types);
752
754
  if (entityType) {
753
- const canonicalEntityType = _chunk5V7BIUGAcjs.canonicalContentRefType.call(void 0, entityType);
754
- const sameType = ordered.filter((t) => _chunk5V7BIUGAcjs.canonicalContentRefType.call(void 0, t) === canonicalEntityType);
755
+ const canonicalEntityType = _chunkY3EBUFX4cjs.canonicalContentRefType.call(void 0, entityType);
756
+ const sameType = ordered.filter((t) => _chunkY3EBUFX4cjs.canonicalContentRefType.call(void 0, t) === canonicalEntityType);
755
757
  if (sameType.length > 0) {
756
- ordered = [...sameType, ...ordered.filter((t) => _chunk5V7BIUGAcjs.canonicalContentRefType.call(void 0, t) !== canonicalEntityType)];
758
+ ordered = [...sameType, ...ordered.filter((t) => _chunkY3EBUFX4cjs.canonicalContentRefType.call(void 0, t) !== canonicalEntityType)];
757
759
  }
758
760
  }
759
761
  return ordered;
@@ -768,7 +770,8 @@ function ContentGroup({
768
770
  extras,
769
771
  adminCampaignCard,
770
772
  heading,
771
- onLoadingChange
773
+ onLoadingChange,
774
+ seedRows
772
775
  }) {
773
776
  const config = resolveGroupConfig(type);
774
777
  const isListLayout = config.layout === "list";
@@ -780,10 +783,10 @@ function ContentGroup({
780
783
  setPagedRefsKey(refsKey);
781
784
  setPage(1);
782
785
  }
783
- const totalGroupPages = _chunkBLH2SFOOcjs.pageCount.call(void 0, refs.length, GROUP_PAGE_SIZE);
784
- const pageRefs = refs.slice((page - 1) * GROUP_PAGE_SIZE, page * GROUP_PAGE_SIZE);
785
- const { items, isLoading } = useGroupItems(type, pageRefs, buildUrl);
786
- const groupPagination = totalGroupPages > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKSCEAIBScjs.Pagination, { currentPage: page, totalPages: totalGroupPages, onPageChange: setPage }) : null;
786
+ const totalGroupPages = _chunkBLH2SFOOcjs.pageCount.call(void 0, refs.length, _chunkTUXPFF4Pcjs.GROUP_PAGE_SIZE);
787
+ const pageRefs = refs.slice((page - 1) * _chunkTUXPFF4Pcjs.GROUP_PAGE_SIZE, page * _chunkTUXPFF4Pcjs.GROUP_PAGE_SIZE);
788
+ const { items, isLoading } = useGroupItems(type, pageRefs, buildUrl, seedRows);
789
+ const groupPagination = totalGroupPages > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTOPGBOCNcjs.Pagination, { currentPage: page, totalPages: totalGroupPages, onPageChange: setPage }) : null;
787
790
  _react.useEffect.call(void 0, () => {
788
791
  onLoadingChange(type, isLoading);
789
792
  return () => onLoadingChange(type, false);
@@ -801,7 +804,7 @@ function ContentGroup({
801
804
  }
802
805
  if (!items) return null;
803
806
  const rowKey = (it) => {
804
- const extracted = _chunk5V7BIUGAcjs.extractItemId.call(void 0, type, it);
807
+ const extracted = _chunkY3EBUFX4cjs.extractItemId.call(void 0, type, it);
805
808
  if (extracted !== null) return extracted;
806
809
  return String(typeof it === "object" && it !== null ? it.id : void 0);
807
810
  };
@@ -852,6 +855,7 @@ function RelatedContentSection({
852
855
  sameTypeMinResults,
853
856
  includeTypes,
854
857
  initialItems,
858
+ initialRows,
855
859
  title = "Related Content",
856
860
  columns = 2,
857
861
  excludeTypes,
@@ -870,11 +874,11 @@ function RelatedContentSection({
870
874
  types: includeTypes !== void 0 ? includeTypes.join(",") : void 0,
871
875
  excludeTypes: excludeTypes && excludeTypes.length > 0 ? excludeTypes.join(",") : void 0
872
876
  };
873
- const authorUrl = contentRefs === void 0 && authorId && !suggestionsDisabled ? _chunkFPCGKH5Kcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
877
+ const authorUrl = contentRefs === void 0 && authorId && !suggestionsDisabled ? _chunkTUXPFF4Pcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
874
878
  apiBaseUrl,
875
879
  extraParams: { authorId, ...typeFilterParams }
876
880
  }) : null;
877
- const suggestUrl = _nullishCoalesce(authorUrl, () => ( (contentRefs === void 0 && entityType && entityId !== void 0 && entityId !== null && entityId !== "" && !suggestionsDisabled ? _chunkFPCGKH5Kcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
881
+ const suggestUrl = _nullishCoalesce(authorUrl, () => ( (contentRefs === void 0 && entityType && entityId !== void 0 && entityId !== null && entityId !== "" && !suggestionsDisabled ? _chunkTUXPFF4Pcjs.buildSuggestionUrl.call(void 0, "/api/related-content", {
878
882
  apiBaseUrl,
879
883
  entityType,
880
884
  entityId,
@@ -891,7 +895,7 @@ function RelatedContentSection({
891
895
  () => !suggestionsDisabled && initialItems ? { refs: initialItems } : void 0,
892
896
  [initialItems, suggestionsDisabled]
893
897
  );
894
- const { data, isLoading } = _chunkFPCGKH5Kcjs.useSelfFetch.call(void 0, suggestUrl, { initialData });
898
+ const { data, isLoading } = _chunkTUXPFF4Pcjs.useSelfFetch.call(void 0, suggestUrl, { initialData });
895
899
  const inScope = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
896
900
  const [loadingTypes, setLoadingTypes] = _react.useState.call(void 0, () => /* @__PURE__ */ new Set());
897
901
  const onGroupLoadingChange = _react.useCallback.call(void 0, (type, loading) => {
@@ -904,7 +908,7 @@ function RelatedContentSection({
904
908
  });
905
909
  }, []);
906
910
  const effectiveBuildListUrl = _react.useMemo.call(void 0,
907
- () => _nullishCoalesce(buildListUrl2, () => ( ((type, ids) => _chunk5V7BIUGAcjs.buildListUrl.call(void 0, type, ids, apiBaseUrl)))),
911
+ () => _nullishCoalesce(buildListUrl2, () => ( ((type, ids) => _chunkY3EBUFX4cjs.buildListUrl.call(void 0, type, ids, apiBaseUrl)))),
908
912
  [buildListUrl2, apiBaseUrl]
909
913
  );
910
914
  const refs = _nullishCoalesce(_nullishCoalesce(contentRefs, () => ( _optionalChain([data, 'optionalAccess', _13 => _13.refs]))), () => ( []));
@@ -928,7 +932,7 @@ function RelatedContentSection({
928
932
  }
929
933
  if (!showWhenEmpty) return null;
930
934
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-8", children: [
931
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-bold text-ods-text-primary", children: _chunk5V7BIUGAcjs.accentSentenceMarks.call(void 0, title) }),
935
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-bold text-ods-text-primary", children: _chunkY3EBUFX4cjs.accentSentenceMarks.call(void 0, title) }),
932
936
  _nullishCoalesce(emptyState, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: emptyStateText })))
933
937
  ] });
934
938
  }
@@ -954,7 +958,7 @@ function RelatedContentSection({
954
958
  );
955
959
  }
956
960
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { as: "section", label: "Loading related content", announce: loadingTypes.size > 0, className: RAIL_CLASS, children: [
957
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: RAIL_TITLE_CLASS, children: _chunk5V7BIUGAcjs.accentSentenceMarks.call(void 0, title) }),
961
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: RAIL_TITLE_CLASS, children: _chunkY3EBUFX4cjs.accentSentenceMarks.call(void 0, title) }),
958
962
  orderedTypes.map((type) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
959
963
  ContentGroup,
960
964
  {
@@ -967,7 +971,8 @@ function RelatedContentSection({
967
971
  extras,
968
972
  adminCampaignCard,
969
973
  heading: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, GroupHeading, { type }),
970
- onLoadingChange: onGroupLoadingChange
974
+ onLoadingChange: onGroupLoadingChange,
975
+ seedRows: _optionalChain([initialRows, 'optionalAccess', _14 => _14[type]])
971
976
  },
972
977
  type
973
978
  ))
@@ -983,24 +988,24 @@ function RelatedContentSectionSkeleton({
983
988
  adminCampaignCard,
984
989
  extras
985
990
  }) {
986
- const canonicalEntityType = entityType ? _chunk5V7BIUGAcjs.canonicalContentRefType.call(void 0, entityType) : null;
991
+ const canonicalEntityType = entityType ? _chunkY3EBUFX4cjs.canonicalContentRefType.call(void 0, entityType) : null;
987
992
  const unknownGroup = types.length === 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: GROUP_CLASS, "aria-hidden": true, "data-loading-item": true, children: [
988
993
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: GROUP_HEADING_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-24" }) }),
989
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: gridClassFor(columns), children: Array.from({ length: GROUP_PAGE_SIZE }, (_, i) => (
994
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: gridClassFor(columns), children: Array.from({ length: _chunkTUXPFF4Pcjs.GROUP_PAGE_SIZE }, (_, i) => (
990
995
  // biome-ignore lint/suspicious/noArrayIndexKey: skeleton cards never reorder
991
996
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-loading-item": true, children: renderSkeletonForType(UNKNOWN_TYPE_CARD, "default", adminCampaignCard, extras) }, i)
992
997
  )) })
993
998
  ] }) : null;
994
999
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { as: "section", label: "Loading related content", className: RAIL_CLASS, children: [
995
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: RAIL_TITLE_CLASS, children: title ? _chunk5V7BIUGAcjs.accentSentenceMarks.call(void 0, title) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-1/2" }) }),
1000
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: RAIL_TITLE_CLASS, children: title ? _chunkY3EBUFX4cjs.accentSentenceMarks.call(void 0, title) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-1/2" }) }),
996
1001
  unknownGroup,
997
1002
  orderRailTypes(new Set(types), entityType).map((type) => {
998
1003
  const config = resolveGroupConfig(type);
999
- const sameType = canonicalEntityType !== null && _chunk5V7BIUGAcjs.canonicalContentRefType.call(void 0, type) === canonicalEntityType;
1004
+ const sameType = canonicalEntityType !== null && _chunkY3EBUFX4cjs.canonicalContentRefType.call(void 0, type) === canonicalEntityType;
1000
1005
  const isList = config.layout === "list";
1001
1006
  const count = Math.min(
1002
- GROUP_PAGE_SIZE,
1003
- _nullishCoalesce((sameType ? _nullishCoalesce(sameTypeMinResults, () => ( minResults)) : minResults), () => ( GROUP_PAGE_SIZE))
1007
+ _chunkTUXPFF4Pcjs.GROUP_PAGE_SIZE,
1008
+ _nullishCoalesce((sameType ? _nullishCoalesce(sameTypeMinResults, () => ( minResults)) : minResults), () => ( _chunkTUXPFF4Pcjs.GROUP_PAGE_SIZE))
1004
1009
  );
1005
1010
  const cards = Array.from({ length: count }, (_, i) => (
1006
1011
  // biome-ignore lint/suspicious/noArrayIndexKey: skeleton cards never reorder
@@ -1017,5 +1022,4 @@ function RelatedContentSectionSkeleton({
1017
1022
 
1018
1023
 
1019
1024
 
1020
-
1021
- exports.GROUP_PAGE_SIZE = GROUP_PAGE_SIZE; exports.RelatedContentSection = RelatedContentSection; exports.RelatedContentSectionSkeleton = RelatedContentSectionSkeleton;
1025
+ exports.RelatedContentSection = RelatedContentSection; exports.RelatedContentSectionSkeleton = RelatedContentSectionSkeleton;