@flamingo-stack/openframe-frontend-core 0.0.274 → 0.0.275

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 (165) hide show
  1. package/dist/{chunk-XDGDCO3I.cjs → chunk-5LOLBUZG.cjs} +45 -44
  2. package/dist/chunk-5LOLBUZG.cjs.map +1 -0
  3. package/dist/{chunk-4YKGXZ7W.js → chunk-7AH75KFQ.js} +1 -1
  4. package/dist/chunk-7AH75KFQ.js.map +1 -0
  5. package/dist/{chunk-CYMMGPPV.js → chunk-CTBL56EC.js} +41 -5
  6. package/dist/chunk-CTBL56EC.js.map +1 -0
  7. package/dist/{chunk-2KHFSSFZ.cjs → chunk-DBJZF2OV.cjs} +15 -15
  8. package/dist/{chunk-2KHFSSFZ.cjs.map → chunk-DBJZF2OV.cjs.map} +1 -1
  9. package/dist/{chunk-4DYXV3E7.cjs → chunk-DEAWHNYW.cjs} +1177 -1223
  10. package/dist/chunk-DEAWHNYW.cjs.map +1 -0
  11. package/dist/{chunk-WU6PMH5L.cjs → chunk-E6RCVOQG.cjs} +41 -43
  12. package/dist/chunk-E6RCVOQG.cjs.map +1 -0
  13. package/dist/{chunk-FLIWL6V4.js → chunk-EINXNG5D.js} +4 -4
  14. package/dist/{chunk-OPSZNW3I.js → chunk-EKWPIEHH.js} +3031 -3077
  15. package/dist/chunk-EKWPIEHH.js.map +1 -0
  16. package/dist/{chunk-N5MCKGAB.js → chunk-FDHKJJPK.js} +34 -33
  17. package/dist/{chunk-N5MCKGAB.js.map → chunk-FDHKJJPK.js.map} +1 -1
  18. package/dist/{chunk-BSOHVQ7X.js → chunk-GHWOQUB4.js} +366 -391
  19. package/dist/chunk-GHWOQUB4.js.map +1 -0
  20. package/dist/{chunk-T7AJBKZP.cjs → chunk-GVSTRN36.cjs} +5 -2
  21. package/dist/chunk-GVSTRN36.cjs.map +1 -0
  22. package/dist/{chunk-L4LAAA5Q.js → chunk-IMNGGLKL.js} +5 -2
  23. package/dist/chunk-IMNGGLKL.js.map +1 -0
  24. package/dist/{chunk-VASNLWPZ.js → chunk-NY7OG2OJ.js} +5 -7
  25. package/dist/{chunk-VASNLWPZ.js.map → chunk-NY7OG2OJ.js.map} +1 -1
  26. package/dist/{chunk-5QJQAFTP.cjs → chunk-OKDCUJOZ.cjs} +48 -12
  27. package/dist/chunk-OKDCUJOZ.cjs.map +1 -0
  28. package/dist/{chunk-MEAR2WHS.cjs → chunk-PC7YOZ4I.cjs} +1 -1
  29. package/dist/chunk-PC7YOZ4I.cjs.map +1 -0
  30. package/dist/{chunk-QLWBBCI5.cjs → chunk-Q2ITV3NY.cjs} +5 -4
  31. package/dist/chunk-Q2ITV3NY.cjs.map +1 -0
  32. package/dist/chunk-RGALV4UX.js +433 -0
  33. package/dist/chunk-RGALV4UX.js.map +1 -0
  34. package/dist/{chunk-W5KBDFCR.cjs → chunk-SA4ZTD3G.cjs} +30 -30
  35. package/dist/{chunk-W5KBDFCR.cjs.map → chunk-SA4ZTD3G.cjs.map} +1 -1
  36. package/dist/{chunk-GL5X6VVC.js → chunk-T4XXYAYY.js} +4 -4
  37. package/dist/{chunk-ZMFT5XOB.js → chunk-UXJCZOLA.js} +4 -3
  38. package/dist/chunk-UXJCZOLA.js.map +1 -0
  39. package/dist/{chunk-7NJUPRN6.cjs → chunk-XCPBD2PG.cjs} +183 -208
  40. package/dist/chunk-XCPBD2PG.cjs.map +1 -0
  41. package/dist/chunk-ZSUNQJRO.cjs +433 -0
  42. package/dist/chunk-ZSUNQJRO.cjs.map +1 -0
  43. package/dist/components/chat/chat-message-row.d.ts +1 -1
  44. package/dist/components/chat/chat-message-row.d.ts.map +1 -1
  45. package/dist/components/chat/index.cjs +10 -11
  46. package/dist/components/chat/index.cjs.map +1 -1
  47. package/dist/components/chat/index.js +12 -13
  48. package/dist/components/contact/index.cjs +7 -9
  49. package/dist/components/contact/index.cjs.map +1 -1
  50. package/dist/components/contact/index.js +6 -8
  51. package/dist/components/faq/faq-document-page.d.ts +21 -0
  52. package/dist/components/faq/faq-document-page.d.ts.map +1 -0
  53. package/dist/components/faq/index.cjs +22 -5
  54. package/dist/components/faq/index.cjs.map +1 -1
  55. package/dist/components/faq/index.d.ts +1 -0
  56. package/dist/components/faq/index.d.ts.map +1 -1
  57. package/dist/components/faq/index.js +21 -4
  58. package/dist/components/features/index.cjs +6 -8
  59. package/dist/components/features/index.cjs.map +1 -1
  60. package/dist/components/features/index.js +5 -7
  61. package/dist/components/index.cjs +304 -309
  62. package/dist/components/index.cjs.map +1 -1
  63. package/dist/components/index.js +249 -254
  64. package/dist/components/index.js.map +1 -1
  65. package/dist/components/layout/article-detail-layout.d.ts +21 -9
  66. package/dist/components/layout/article-detail-layout.d.ts.map +1 -1
  67. package/dist/components/navigation/index.cjs +6 -8
  68. package/dist/components/navigation/index.cjs.map +1 -1
  69. package/dist/components/navigation/index.js +5 -7
  70. package/dist/components/onboarding-guides/index.cjs +33 -46
  71. package/dist/components/onboarding-guides/index.cjs.map +1 -1
  72. package/dist/components/onboarding-guides/index.js +11 -24
  73. package/dist/components/onboarding-guides/index.js.map +1 -1
  74. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  75. package/dist/components/related-content/index.cjs +8 -10
  76. package/dist/components/related-content/index.cjs.map +1 -1
  77. package/dist/components/related-content/index.js +7 -9
  78. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  79. package/dist/components/shared/detail-page-skeleton.d.ts +6 -1
  80. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  81. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  82. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  83. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  84. package/dist/components/shared/roadmap/use-roadmap-voting.d.ts.map +1 -1
  85. package/dist/components/tickets/help-center-list.d.ts +9 -1
  86. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  87. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  88. package/dist/components/tickets/hooks/use-ticket-engagements.d.ts.map +1 -1
  89. package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
  90. package/dist/components/tickets/index.cjs +81 -76
  91. package/dist/components/tickets/index.cjs.map +1 -1
  92. package/dist/components/tickets/index.js +27 -22
  93. package/dist/components/tickets/index.js.map +1 -1
  94. package/dist/components/ui/index.cjs +12 -15
  95. package/dist/components/ui/index.cjs.map +1 -1
  96. package/dist/components/ui/index.js +24 -27
  97. package/dist/contexts/chat-runtime-context.d.ts +9 -0
  98. package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
  99. package/dist/contexts/index.cjs +2 -2
  100. package/dist/contexts/index.js +1 -1
  101. package/dist/hooks/index.cjs +3 -3
  102. package/dist/hooks/index.js +2 -2
  103. package/dist/hooks/use-contact-submission.d.ts.map +1 -1
  104. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  105. package/dist/index.cjs +11 -15
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.js +32 -36
  108. package/dist/utils/embed-authed-fetch.d.ts +7 -0
  109. package/dist/utils/embed-authed-fetch.d.ts.map +1 -1
  110. package/dist/utils/embed-content-fetch.d.ts +2 -0
  111. package/dist/utils/embed-content-fetch.d.ts.map +1 -0
  112. package/dist/utils/index.cjs.map +1 -1
  113. package/dist/utils/index.js.map +1 -1
  114. package/package.json +1 -1
  115. package/src/components/chat/chat-message-row.tsx +12 -2
  116. package/src/components/faq/faq-document-page.tsx +69 -0
  117. package/src/components/faq/index.ts +1 -0
  118. package/src/components/layout/article-detail-layout.tsx +24 -11
  119. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +21 -16
  120. package/src/components/shared/delivery/delivery-lists.tsx +3 -2
  121. package/src/components/shared/detail-page-skeleton.tsx +18 -10
  122. package/src/components/shared/legal-document/use-legal-docs.ts +2 -1
  123. package/src/components/shared/product-release/release-detail-page.tsx +27 -17
  124. package/src/components/shared/roadmap/roadmap-grid.tsx +2 -1
  125. package/src/components/shared/roadmap/use-roadmap-voting.ts +3 -2
  126. package/src/components/tickets/help-center-list.tsx +12 -4
  127. package/src/components/tickets/hooks/use-ticket-actions.ts +7 -2
  128. package/src/components/tickets/hooks/use-ticket-engagements.ts +6 -1
  129. package/src/components/tickets/hooks/use-tickets-list.ts +7 -1
  130. package/src/components/tickets/ticket-detail-drawer.tsx +1 -0
  131. package/src/contexts/chat-runtime-context.tsx +9 -0
  132. package/src/hooks/use-contact-submission.ts +2 -1
  133. package/src/hooks/use-self-fetch.ts +2 -1
  134. package/src/styles/index.css +1 -0
  135. package/src/styles/ods-page-shell.css +29 -0
  136. package/src/utils/embed-authed-fetch.ts +10 -0
  137. package/src/utils/embed-content-fetch.ts +30 -0
  138. package/dist/chunk-4DYXV3E7.cjs.map +0 -1
  139. package/dist/chunk-4YKGXZ7W.js.map +0 -1
  140. package/dist/chunk-5QJQAFTP.cjs.map +0 -1
  141. package/dist/chunk-722TTRIJ.cjs +0 -29
  142. package/dist/chunk-722TTRIJ.cjs.map +0 -1
  143. package/dist/chunk-7NJUPRN6.cjs.map +0 -1
  144. package/dist/chunk-BSOHVQ7X.js.map +0 -1
  145. package/dist/chunk-CYMMGPPV.js.map +0 -1
  146. package/dist/chunk-DAAFVOTL.cjs +0 -172
  147. package/dist/chunk-DAAFVOTL.cjs.map +0 -1
  148. package/dist/chunk-L4LAAA5Q.js.map +0 -1
  149. package/dist/chunk-MEAR2WHS.cjs.map +0 -1
  150. package/dist/chunk-OO4ZGDRO.js +0 -29
  151. package/dist/chunk-OO4ZGDRO.js.map +0 -1
  152. package/dist/chunk-OPSZNW3I.js.map +0 -1
  153. package/dist/chunk-QLWBBCI5.cjs.map +0 -1
  154. package/dist/chunk-T2URJAX2.js +0 -169
  155. package/dist/chunk-T2URJAX2.js.map +0 -1
  156. package/dist/chunk-T7AJBKZP.cjs.map +0 -1
  157. package/dist/chunk-WU6PMH5L.cjs.map +0 -1
  158. package/dist/chunk-XDGDCO3I.cjs.map +0 -1
  159. package/dist/chunk-Y2B6WDU6.cjs +0 -169
  160. package/dist/chunk-Y2B6WDU6.cjs.map +0 -1
  161. package/dist/chunk-ZMFT5XOB.js.map +0 -1
  162. package/dist/chunk-ZXZJSTNV.js +0 -172
  163. package/dist/chunk-ZXZJSTNV.js.map +0 -1
  164. /package/dist/{chunk-FLIWL6V4.js.map → chunk-EINXNG5D.js.map} +0 -0
  165. /package/dist/{chunk-GL5X6VVC.js.map → chunk-T4XXYAYY.js.map} +0 -0
@@ -4,18 +4,15 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkDAAFVOTLcjs = require('./chunk-DAAFVOTL.cjs');
7
+ var _chunkZSUNQJROcjs = require('./chunk-ZSUNQJRO.cjs');
8
8
 
9
9
 
10
- var _chunkMEAR2WHScjs = require('./chunk-MEAR2WHS.cjs');
10
+ var _chunkPC7YOZ4Icjs = require('./chunk-PC7YOZ4I.cjs');
11
11
 
12
12
 
13
13
  var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
14
14
 
15
15
 
16
- var _chunk722TTRIJcjs = require('./chunk-722TTRIJ.cjs');
17
-
18
-
19
16
 
20
17
 
21
18
 
@@ -57,7 +54,7 @@ var _chunkC6ASEPZLcjs = require('./chunk-C6ASEPZL.cjs');
57
54
  var _chunkWZW7C7TFcjs = require('./chunk-WZW7C7TF.cjs');
58
55
 
59
56
  // src/components/ui/hidden-tags-popup.tsx
60
- var _react = require('react'); var React = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React22 = _interopRequireWildcard(_react); var React12 = _interopRequireWildcard(_react);
57
+ var _react = require('react'); var React = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React22 = _interopRequireWildcard(_react); var React13 = _interopRequireWildcard(_react);
61
58
  _chunkFIG2RKZFcjs.init_cn.call(void 0, );
62
59
  var _jsxruntime = require('react/jsx-runtime');
63
60
  var HiddenTagsPopup = _react.forwardRef.call(void 0, function HiddenTagsPopup2({ items, onRemove, disabled, className, style }, ref) {
@@ -2328,6 +2325,27 @@ function YouTubeFacadeInner({
2328
2325
  ) });
2329
2326
  }
2330
2327
 
2328
+ // src/components/layout/page-heading.tsx
2329
+
2330
+ var PAGE_HEADING_CLASS = "text-h1 text-ods-text-primary";
2331
+ var SECTION_HEADING_CLASS = "text-h2 text-ods-text-primary";
2332
+ var DESCRIPTION_CLASS = "mt-6 max-w-[640px] font-['DM_Sans'] text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary";
2333
+ function PageHeading({
2334
+ children,
2335
+ as: Tag2 = "h1",
2336
+ description,
2337
+ className,
2338
+ descriptionClassName
2339
+ }) {
2340
+ const headingClass = className ? `${PAGE_HEADING_CLASS} ${className}` : PAGE_HEADING_CLASS;
2341
+ const descClass = descriptionClassName ? `${DESCRIPTION_CLASS} ${descriptionClassName}` : DESCRIPTION_CLASS;
2342
+ const hasDescription = description != null && description !== "" && typeof description !== "boolean";
2343
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
2344
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Tag2, { className: headingClass, children }),
2345
+ hasDescription && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: descClass, children: description })
2346
+ ] });
2347
+ }
2348
+
2331
2349
  // src/components/features/video-ratio-tabs.tsx
2332
2350
 
2333
2351
  var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary";
@@ -2414,7 +2432,7 @@ var RATIO_TO_CSS_ASPECT = {
2414
2432
  landscape: "16 / 9"
2415
2433
  };
2416
2434
  function LazyBite({ ratio, children }) {
2417
- const { ref, isNear } = _chunkDAAFVOTLcjs.useNearViewport.call(void 0, "500px");
2435
+ const { ref, isNear } = _chunkZSUNQJROcjs.useNearViewport.call(void 0, "500px");
2418
2436
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full h-full bg-ods-card rounded-md" }) });
2419
2437
  }
2420
2438
  function VideoBitesDisplay({
@@ -2439,7 +2457,7 @@ function VideoBitesDisplay({
2439
2457
  const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
2440
2458
  if (totalCount === 0) return null;
2441
2459
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
2442
- showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunk722TTRIJcjs.SECTION_HEADING_CLASS} break-words`, children: title }),
2460
+ showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${SECTION_HEADING_CLASS} break-words`, children: title }),
2443
2461
  grouped.hasMultiple ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2444
2462
  RatioTabs,
2445
2463
  {
@@ -2566,7 +2584,7 @@ function EntityVideoSection({
2566
2584
  }
2567
2585
  )),
2568
2586
  videoSummary && MarkdownRenderer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
2569
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunk722TTRIJcjs.SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
2587
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
2570
2588
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary break-words overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: videoSummary }) })
2571
2589
  ] }),
2572
2590
  videoBites && videoBites.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -2627,7 +2645,7 @@ function useEntityCardLink({
2627
2645
  target,
2628
2646
  rel
2629
2647
  }) {
2630
- const runtime = _chunkMEAR2WHScjs.useChatRuntime.call(void 0, );
2648
+ const runtime = _chunkPC7YOZ4Icjs.useChatRuntime.call(void 0, );
2631
2649
  return _react.useMemo.call(void 0, () => {
2632
2650
  if (target !== void 0 || rel !== void 0) {
2633
2651
  const safeRel = _nullishCoalesce(rel, () => ( (target === "_blank" ? "noopener noreferrer" : void 0)));
@@ -2646,10 +2664,10 @@ function useEntityCardPlaceholder({
2646
2664
  siteName = "",
2647
2665
  aspect = "wide"
2648
2666
  }) {
2649
- const runtime = _chunkMEAR2WHScjs.useChatRuntime.call(void 0, );
2667
+ const runtime = _chunkPC7YOZ4Icjs.useChatRuntime.call(void 0, );
2650
2668
  const builder = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _45 => _45.resolvePlaceholderUrl]), () => ( NO_OP_BUILDER));
2651
2669
  const enabled = placeholderUrl === void 0 && !!_optionalChain([runtime, 'optionalAccess', _46 => _46.resolvePlaceholderUrl]);
2652
- const derived = _chunkDAAFVOTLcjs.useOgPlaceholder.call(void 0, builder, title, siteName, enabled, aspect);
2670
+ const derived = _chunkZSUNQJROcjs.useOgPlaceholder.call(void 0, builder, title, siteName, enabled, aspect);
2653
2671
  return placeholderUrl !== void 0 ? placeholderUrl : derived;
2654
2672
  }
2655
2673
 
@@ -3505,7 +3523,45 @@ function usePageActionsBottomPadding(variant) {
3505
3523
  return variant === "primary-buttons" || variant === "menu-primary" ? "pb-40 md:pb-0" : "";
3506
3524
  }
3507
3525
 
3508
- // src/components/layout/page-container.tsx
3526
+ // src/components/ui/entity-image.tsx
3527
+ _chunkFIG2RKZFcjs.init_cn.call(void 0, );
3528
+
3529
+
3530
+ function EntityImage({ src, alt, fallbackText, className }) {
3531
+ const [imageFailed, setImageFailed] = React.default.useState(false);
3532
+ React.default.useEffect(() => {
3533
+ setImageFailed(false);
3534
+ }, [src]);
3535
+ const showFallback = imageFailed || !src;
3536
+ const initials = getFirstLastInitials(_nullishCoalesce(fallbackText, () => ( alt)));
3537
+ if (showFallback) {
3538
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3539
+ "div",
3540
+ {
3541
+ "aria-label": alt,
3542
+ className: _chunkFIG2RKZFcjs.cn.call(void 0,
3543
+ "size-[52px] md:size-[60px] shrink-0 rounded-md border border-ods-border bg-ods-bg flex items-center justify-center text-ods-text-secondary text-h4 select-none",
3544
+ className
3545
+ ),
3546
+ children: initials || "?"
3547
+ }
3548
+ );
3549
+ }
3550
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3551
+ "img",
3552
+ {
3553
+ src: _nullishCoalesce(src, () => ( void 0)),
3554
+ alt: _nullishCoalesce(alt, () => ( "")),
3555
+ onError: () => setImageFailed(true),
3556
+ className: _chunkFIG2RKZFcjs.cn.call(void 0,
3557
+ "size-[52px] md:size-[60px] shrink-0 rounded-md border border-ods-border object-contain",
3558
+ className
3559
+ )
3560
+ }
3561
+ );
3562
+ }
3563
+
3564
+ // src/components/layout/title-block.tsx
3509
3565
  _chunkFIG2RKZFcjs.init_cn.call(void 0, );
3510
3566
 
3511
3567
  // src/components/layout/back-button.tsx
@@ -3533,131 +3589,40 @@ function BackButton({ label = "Back", className, type = "button", ...props }) {
3533
3589
  );
3534
3590
  }
3535
3591
 
3536
- // src/components/layout/page-container.tsx
3592
+ // src/components/layout/title-block.tsx
3537
3593
 
3538
- function isAdvancedProps(props) {
3539
- return "variant" in props || "title" in props || "subtitle" in props || "backButton" in props || "headerActions" in props || "headerContent" in props || "showHeader" in props || "contentClassName" in props || "actions" in props || "actionsVariant" in props;
3540
- }
3541
- function PageContainer(props) {
3542
- if (isAdvancedProps(props)) {
3543
- return renderAdvancedPageContainer(props);
3544
- } else {
3545
- return renderLegacyPageContainer(props);
3546
- }
3547
- }
3548
- function renderLegacyPageContainer({
3549
- children,
3550
- className = "",
3551
- fullWidthBackground = true,
3552
- backgroundClassName = "bg-ods-bg",
3553
- backgroundStyle,
3554
- contentPadding,
3555
- maxWidth = "max-w-[1920px]",
3556
- as: Component = "section",
3557
- id
3558
- }) {
3559
- const content = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, maxWidth, contentPadding, "mx-auto", className), children });
3560
- if (fullWidthBackground) {
3561
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3562
- Component,
3563
- {
3564
- className: _chunkFIG2RKZFcjs.cn.call(void 0, "w-full", backgroundClassName),
3565
- style: backgroundStyle,
3566
- id,
3567
- children: content
3568
- }
3569
- );
3570
- }
3571
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component, { className: "w-full", id, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, maxWidth, contentPadding, "mx-auto", backgroundClassName, className), style: backgroundStyle, children }) });
3572
- }
3573
- function renderAdvancedPageContainer({
3574
- children,
3575
- variant = "content",
3594
+ function TitleBlock({
3576
3595
  title,
3577
3596
  subtitle,
3597
+ image,
3578
3598
  backButton,
3579
- headerActions,
3580
- headerContent,
3581
3599
  actions,
3582
- actionsVariant,
3600
+ actionsVariant = "icon-buttons",
3583
3601
  menuActions,
3584
- padding = "none",
3585
- background = "transparent",
3586
- className,
3587
- contentClassName,
3588
- showHeader = true
3602
+ selector,
3603
+ variant = "plain",
3604
+ className
3589
3605
  }) {
3590
- const getActionsVariant = () => {
3591
- if (actionsVariant) return actionsVariant;
3592
- if (variant === "list") return "icon-buttons";
3593
- return "primary-buttons";
3594
- };
3595
- const renderActions = () => {
3596
- if (!actions || actions.length === 0) return null;
3597
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageActions, { variant: getActionsVariant(), actions, menuActions });
3598
- };
3599
- const needsBottomPadding = actions && actions.length > 0 && getActionsVariant() === "primary-buttons";
3600
- const paddingClasses = {
3601
- none: "",
3602
- sm: "p-4",
3603
- md: "p-6",
3604
- lg: "p-8"
3605
- };
3606
- const backgroundClasses = {
3607
- default: "bg-ods-bg",
3608
- card: "bg-ods-card",
3609
- transparent: ""
3610
- };
3611
- const renderHeader = () => {
3612
- if (!showHeader) return null;
3613
- if (headerContent) {
3614
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0,
3615
- "flex items-end justify-between gap-4"
3616
- ), children: headerContent });
3617
- }
3618
- if (variant === "detail") {
3619
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-end justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-end lg:justify-between gap-4", children: [
3620
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
3621
- backButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3622
- BackButton,
3623
- {
3624
- onClick: backButton.onClick,
3625
- label: backButton.label,
3626
- className: "hidden md:inline-flex"
3627
- }
3628
- ),
3629
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h2 tracking-[-0.64px] text-ods-text-primary", children: title }),
3630
- subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]", children: subtitle })
3631
- ] }),
3632
- (headerActions || actions) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 items-center shrink-0", children: [
3633
- headerActions,
3634
- renderActions()
3635
- ] })
3636
- ] });
3637
- }
3638
- if (variant === "list") {
3639
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-center lg:justify-between gap-4", children: [
3640
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
3641
- backButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3642
- BackButton,
3643
- {
3644
- onClick: backButton.onClick,
3645
- label: backButton.label,
3646
- className: "hidden md:inline-flex"
3647
- }
3648
- ),
3649
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h2 tracking-[-0.48px] text-ods-text-primary", children: title }),
3650
- subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]", children: subtitle })
3651
- ] }),
3652
- (headerActions || actions) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-3 items-center shrink-0", children: [
3653
- headerActions,
3654
- renderActions()
3655
- ] })
3656
- ] });
3657
- }
3658
- if (variant === "form") {
3659
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-end justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-end lg:justify-between gap-4", children: [
3660
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
3606
+ const hasActions = actions && actions.length > 0;
3607
+ const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
3608
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3609
+ "div",
3610
+ {
3611
+ className: _chunkFIG2RKZFcjs.cn.call(void 0,
3612
+ "flex items-end justify-between gap-[var(--spacing-system-m)]",
3613
+ "md:flex-col md:items-start md:justify-start lg:flex-row lg:items-end lg:justify-between",
3614
+ "pt-[var(--spacing-system-l)]",
3615
+ variant === "card" ? _chunkFIG2RKZFcjs.cn.call(void 0,
3616
+ "bg-ods-card border-b border-ods-border",
3617
+ "px-[var(--spacing-system-l)] pb-[var(--spacing-system-l)]",
3618
+ "md:bg-transparent md:border-b-0",
3619
+ "md:px-0 md:pb-0",
3620
+ "md:mb-[var(--spacing-system-l)]"
3621
+ ) : "mb-[var(--spacing-system-l)]",
3622
+ className
3623
+ ),
3624
+ children: [
3625
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xs)] flex-1 min-w-0", children: [
3661
3626
  backButton && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3662
3627
  BackButton,
3663
3628
  {
@@ -3666,79 +3631,88 @@ function renderAdvancedPageContainer({
3666
3631
  className: "hidden md:inline-flex"
3667
3632
  }
3668
3633
  ),
3669
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-[32px] font-['Azeret_Mono:SemiBold',_sans-serif] font-semibold text-ods-text-primary tracking-[-0.64px]", children: title })
3634
+ image || subtitle ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-m)] min-w-0 w-full", children: [
3635
+ image && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3636
+ EntityImage,
3637
+ {
3638
+ src: image.src,
3639
+ alt: image.alt,
3640
+ fallbackText: image.alt || title
3641
+ }
3642
+ ),
3643
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col justify-center min-w-0 flex-1", children: [
3644
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h2 text-ods-text-primary truncate", title, children: title }),
3645
+ subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary truncate", title: subtitle, children: subtitle })
3646
+ ] })
3647
+ ] }) : title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h2 text-ods-text-primary", children: title })
3670
3648
  ] }),
3671
- (headerActions || actions) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-4 items-center shrink-0", children: [
3672
- headerActions,
3673
- renderActions()
3674
- ] })
3675
- ] });
3676
- }
3677
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-center lg:justify-between gap-4", children: [
3678
- (title || subtitle) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
3679
- title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "text-h2 text-ods-text-primary", children: title }),
3680
- subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]", children: subtitle })
3681
- ] }),
3682
- (headerActions || actions) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-3 items-center shrink-0", children: [
3683
- headerActions,
3684
- renderActions()
3685
- ] })
3686
- ] });
3687
- };
3688
- const getContainerClasses = () => {
3689
- const baseClasses = [
3690
- "flex flex-col w-full",
3691
- backgroundClasses[background],
3692
- paddingClasses[padding]
3693
- ];
3694
- switch (variant) {
3695
- case "list":
3696
- return _chunkFIG2RKZFcjs.cn.call(void 0, baseClasses, "gap-4 md:gap-6", className);
3697
- case "detail":
3698
- return _chunkFIG2RKZFcjs.cn.call(void 0, baseClasses, "gap-4 md:gap-6", className);
3699
- case "form":
3700
- return _chunkFIG2RKZFcjs.cn.call(void 0, baseClasses, "gap-6 md:gap-10", className);
3701
- case "content":
3702
- default:
3703
- return _chunkFIG2RKZFcjs.cn.call(void 0, baseClasses, "gap-4 md:gap-6", className);
3704
- }
3705
- };
3706
- const getContentClasses = () => {
3707
- const mobilePadding = needsBottomPadding ? "pb-28 md:pb-0" : "";
3708
- switch (variant) {
3709
- case "detail":
3710
- return _chunkFIG2RKZFcjs.cn.call(void 0, "flex-1 overflow-auto", mobilePadding, contentClassName);
3711
- case "list":
3712
- return _chunkFIG2RKZFcjs.cn.call(void 0, "flex flex-col gap-4 md:gap-6", mobilePadding, contentClassName);
3713
- case "form":
3714
- return _chunkFIG2RKZFcjs.cn.call(void 0, "flex flex-col gap-4 md:gap-10", mobilePadding, contentClassName);
3715
- case "content":
3716
- default:
3717
- return _chunkFIG2RKZFcjs.cn.call(void 0, "flex-1", mobilePadding, contentClassName);
3649
+ (hasActions || hasMenuActions || selector) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex gap-2 items-center shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3650
+ PageActions,
3651
+ {
3652
+ variant: actionsVariant,
3653
+ actions: _nullishCoalesce(actions, () => ( [])),
3654
+ menuActions,
3655
+ selector
3656
+ }
3657
+ ) })
3658
+ ]
3718
3659
  }
3719
- };
3720
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: getContainerClasses(), children: [
3721
- renderHeader(),
3722
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: getContentClasses(), children })
3660
+ );
3661
+ }
3662
+
3663
+ // src/components/layout/page-layout.tsx
3664
+ _chunkFIG2RKZFcjs.init_cn.call(void 0, );
3665
+
3666
+ function PageLayout({
3667
+ children,
3668
+ title,
3669
+ subtitle,
3670
+ image,
3671
+ backButton,
3672
+ actions,
3673
+ actionsVariant = "icon-buttons",
3674
+ menuActions,
3675
+ selector,
3676
+ headerVariant,
3677
+ className,
3678
+ contentClassName,
3679
+ showHeader = true
3680
+ }) {
3681
+ const hasActions = actions && actions.length > 0;
3682
+ const needsBottomPadding = hasActions && actionsVariant === "primary-buttons";
3683
+ const hasHeader = showHeader && (title || subtitle || image || backButton || hasActions || selector);
3684
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex flex-col w-full", className), children: [
3685
+ hasHeader && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3686
+ TitleBlock,
3687
+ {
3688
+ title,
3689
+ subtitle,
3690
+ image,
3691
+ backButton,
3692
+ actions,
3693
+ actionsVariant,
3694
+ menuActions,
3695
+ selector,
3696
+ variant: headerVariant
3697
+ }
3698
+ ),
3699
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex flex-col flex-1 gap-[var(--spacing-system-l)]", needsBottomPadding && "pb-28 md:pb-0", contentClassName), children })
3723
3700
  ] });
3724
3701
  }
3725
- var ListPageContainer = (props) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageContainer, { ...props, variant: "list" });
3726
- var DetailPageContainer = (props) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageContainer, { ...props, variant: "detail" });
3727
- var FormPageContainer = (props) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageContainer, { ...props, variant: "form" });
3728
- var ContentPageContainer = (props) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageContainer, { ...props, variant: "content" });
3729
3702
 
3730
3703
  // src/components/layout/article-detail-layout.tsx
3704
+ _chunkFIG2RKZFcjs.init_cn.call(void 0, );
3731
3705
 
3732
- function PageShell({ children, schemas }) {
3706
+ function PageShell({ children, schemas, contentClassName }) {
3733
3707
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "main", { className: "bg-ods-bg min-h-screen", children: [
3734
3708
  schemas,
3735
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-w-[1920px] mx-auto px-6 md:px-20 py-6 md:py-10", children })
3709
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "page-shell-content max-w-[1920px] mx-auto", contentClassName), children })
3736
3710
  ] });
3737
3711
  }
3738
- function ArticleDetailLayout({ children, schemas }) {
3712
+ function ArticleDetailLayout({ children, schemas, contentClassName }) {
3739
3713
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "main", { className: "bg-ods-bg min-h-screen", children: [
3740
3714
  schemas,
3741
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-w-[1280px] mx-auto px-6 md:px-20 py-6 md:py-10", children })
3715
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "max-w-[1280px] mx-auto px-6 md:px-20 py-6 md:py-10", contentClassName), children })
3742
3716
  ] });
3743
3717
  }
3744
3718
 
@@ -3949,7 +3923,7 @@ var _reactdom = require('react-dom'); var _reactdom2 = _interopRequireDefault(_r
3949
3923
  function useVideoOriginPreconnect({
3950
3924
  supabaseStorageOrigin
3951
3925
  } = {}) {
3952
- const runtime = _chunkMEAR2WHScjs.useChatRuntime.call(void 0, );
3926
+ const runtime = _chunkPC7YOZ4Icjs.useChatRuntime.call(void 0, );
3953
3927
  const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _56 => _56.endpoints, 'access', _57 => _57.supabaseStorageOrigin])));
3954
3928
  try {
3955
3929
  _reactdom2.default.preconnect(MUX_STREAM_ORIGIN, { crossOrigin: "anonymous" });
@@ -3968,10 +3942,10 @@ function useVideoWarmup({
3968
3942
  supabaseStorageOrigin,
3969
3943
  nearMargin = "1000px"
3970
3944
  } = {}) {
3971
- const runtime = _chunkMEAR2WHScjs.useChatRuntime.call(void 0, );
3945
+ const runtime = _chunkPC7YOZ4Icjs.useChatRuntime.call(void 0, );
3972
3946
  const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _58 => _58.endpoints, 'access', _59 => _59.supabaseStorageOrigin])));
3973
3947
  useVideoOriginPreconnect({ supabaseStorageOrigin: resolvedOrigin });
3974
- const { ref, isNear } = _chunkDAAFVOTLcjs.useNearViewport.call(void 0, nearMargin);
3948
+ const { ref, isNear } = _chunkZSUNQJROcjs.useNearViewport.call(void 0, nearMargin);
3975
3949
  _react.useEffect.call(void 0, () => {
3976
3950
  if (!isNear || !videoUrl || !resolvedOrigin) return;
3977
3951
  const conn = navigator.connection;
@@ -4067,12 +4041,12 @@ function SearchInput({
4067
4041
  limitTags = "auto",
4068
4042
  getLimitTagsText = (more) => `+${more}`
4069
4043
  }) {
4070
- const [internalValue, setInternalValue] = React12.useState(defaultValue);
4044
+ const [internalValue, setInternalValue] = React13.useState(defaultValue);
4071
4045
  const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
4072
- const debouncedValue = _chunkDAAFVOTLcjs.useDebounce.call(void 0, currentValue, debounceMs);
4073
- const [isOpen, setIsOpen] = React12.useState(false);
4074
- const [highlightedIndex, setHighlightedIndex] = React12.useState(-1);
4075
- const containerRef = React12.useRef(null);
4046
+ const debouncedValue = _chunkZSUNQJROcjs.useDebounce.call(void 0, currentValue, debounceMs);
4047
+ const [isOpen, setIsOpen] = React13.useState(false);
4048
+ const [highlightedIndex, setHighlightedIndex] = React13.useState(-1);
4049
+ const containerRef = React13.useRef(null);
4076
4050
  const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
4077
4051
  const {
4078
4052
  visibleCount: rawVisibleCount,
@@ -4081,7 +4055,7 @@ function SearchInput({
4081
4055
  textMeasureRef,
4082
4056
  badgeRef,
4083
4057
  inputRef
4084
- } = _chunkDAAFVOTLcjs.useAutoLimitTags.call(void 0, {
4058
+ } = _chunkZSUNQJROcjs.useAutoLimitTags.call(void 0, {
4085
4059
  count: filterChips.length,
4086
4060
  limitTags,
4087
4061
  // When chips exist, pass empty placeholder so the hook only reserves input minWidth,
@@ -4089,10 +4063,10 @@ function SearchInput({
4089
4063
  placeholder: filterChips.length > 0 ? "" : placeholder
4090
4064
  });
4091
4065
  const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
4092
- const hiddenTagsRef = React12.useRef(null);
4093
- const hiddenTagsPopupRef = React12.useRef(null);
4094
- const [showHiddenTags, setShowHiddenTags] = React12.useState(false);
4095
- React12.useEffect(() => {
4066
+ const hiddenTagsRef = React13.useRef(null);
4067
+ const hiddenTagsPopupRef = React13.useRef(null);
4068
+ const [showHiddenTags, setShowHiddenTags] = React13.useState(false);
4069
+ React13.useEffect(() => {
4096
4070
  if (!showHiddenTags) return;
4097
4071
  const handleClick = (e) => {
4098
4072
  const target = e.target;
@@ -4106,7 +4080,7 @@ function SearchInput({
4106
4080
  const hiddenCount = filterChips.length - visibleCount;
4107
4081
  const visibleChips = filterChips.slice(0, visibleCount);
4108
4082
  const hiddenChips = filterChips.slice(visibleCount);
4109
- const { flatResults, groups } = React12.useMemo(() => {
4083
+ const { flatResults, groups } = React13.useMemo(() => {
4110
4084
  if (!groupBy) return { flatResults: results, groups: null };
4111
4085
  const grouped = /* @__PURE__ */ new Map();
4112
4086
  for (const r of results) {
@@ -4123,7 +4097,7 @@ function SearchInput({
4123
4097
  const meetsMinQuery = debouncedValue.length >= minQueryLength;
4124
4098
  const autoShow = meetsMinQuery;
4125
4099
  const dropdownVisible = _nullishCoalesce(showDropdownProp, () => ( (isOpen && autoShow)));
4126
- React12.useEffect(() => {
4100
+ React13.useEffect(() => {
4127
4101
  setHighlightedIndex(-1);
4128
4102
  }, [flatResults.length]);
4129
4103
  const handleChange = (e) => {
@@ -4575,5 +4549,6 @@ function FilterPillRow({
4575
4549
 
4576
4550
 
4577
4551
 
4578
- exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.SquareAvatar = SquareAvatar; exports.useControllableState = useControllableState; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveHrefForRuntime = resolveHrefForRuntime; exports.resolveExternalNavigation = resolveExternalNavigation; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.fetchPriorityProp = fetchPriorityProp; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.useEntityCardLink = useEntityCardLink; exports.useEntityCardPlaceholder = useEntityCardPlaceholder; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.BackButton = BackButton; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.DEFAULT_CONTENT_SUFFIXES = DEFAULT_CONTENT_SUFFIXES; exports.makeComposeContentUrl = makeComposeContentUrl; exports.buildDefaultHref = buildDefaultHref; exports.resolveContentHref = resolveContentHref; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.getCaptionsUrl = getCaptionsUrl; exports.SearchInput = SearchInput; exports.FilterPillRow = FilterPillRow;
4579
- //# sourceMappingURL=chunk-7NJUPRN6.cjs.map
4552
+
4553
+ exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.SquareAvatar = SquareAvatar; exports.useControllableState = useControllableState; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveHrefForRuntime = resolveHrefForRuntime; exports.resolveExternalNavigation = resolveExternalNavigation; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.fetchPriorityProp = fetchPriorityProp; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.useEntityCardLink = useEntityCardLink; exports.useEntityCardPlaceholder = useEntityCardPlaceholder; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.BackButton = BackButton; exports.EntityImage = EntityImage; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.DEFAULT_CONTENT_SUFFIXES = DEFAULT_CONTENT_SUFFIXES; exports.makeComposeContentUrl = makeComposeContentUrl; exports.buildDefaultHref = buildDefaultHref; exports.resolveContentHref = resolveContentHref; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.getCaptionsUrl = getCaptionsUrl; exports.SearchInput = SearchInput; exports.FilterPillRow = FilterPillRow;
4554
+ //# sourceMappingURL=chunk-XCPBD2PG.cjs.map