@flamingo-stack/openframe-frontend-core 0.0.558 → 0.0.559

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 (108) hide show
  1. package/dist/{chunk-5WQPOH27.cjs → chunk-33RSZGYQ.cjs} +5 -5
  2. package/dist/{chunk-5WQPOH27.cjs.map → chunk-33RSZGYQ.cjs.map} +1 -1
  3. package/dist/{chunk-ZSZ24UY6.js → chunk-3H4NJO43.js} +2 -2
  4. package/dist/{chunk-E26KVZJM.js → chunk-3KFGRSM7.js} +2 -2
  5. package/dist/{chunk-S3NZZKNU.js → chunk-5OU7FNZD.js} +2 -2
  6. package/dist/{chunk-R3OCP4A7.cjs → chunk-7YUCTU47.cjs} +62 -62
  7. package/dist/{chunk-R3OCP4A7.cjs.map → chunk-7YUCTU47.cjs.map} +1 -1
  8. package/dist/{chunk-FVHFBEXH.js → chunk-ANI7I7SC.js} +2 -2
  9. package/dist/{chunk-LM6NDYGD.js → chunk-B4AGHKHF.js} +2 -2
  10. package/dist/{chunk-DNPQ2U7P.js → chunk-BOFSW6J7.js} +2 -2
  11. package/dist/{chunk-DV4CSNZD.js → chunk-C7LWJWOO.js} +2 -2
  12. package/dist/{chunk-XDMRN3SG.cjs → chunk-CS34XXIX.cjs} +86 -86
  13. package/dist/{chunk-XDMRN3SG.cjs.map → chunk-CS34XXIX.cjs.map} +1 -1
  14. package/dist/{chunk-Z5FN5VTC.js → chunk-D2EOIZ7V.js} +2 -2
  15. package/dist/{chunk-FCCSHC3H.cjs → chunk-DEJC6ZID.cjs} +26 -26
  16. package/dist/{chunk-FCCSHC3H.cjs.map → chunk-DEJC6ZID.cjs.map} +1 -1
  17. package/dist/{chunk-UVGFICZT.js → chunk-KDTQMUUY.js} +6 -6
  18. package/dist/{chunk-VNWGXQJD.cjs → chunk-KYJSFHHH.cjs} +20 -20
  19. package/dist/{chunk-VNWGXQJD.cjs.map → chunk-KYJSFHHH.cjs.map} +1 -1
  20. package/dist/{chunk-53GNFRVQ.cjs → chunk-MO5EKODW.cjs} +7 -7
  21. package/dist/{chunk-53GNFRVQ.cjs.map → chunk-MO5EKODW.cjs.map} +1 -1
  22. package/dist/{chunk-CWQSUYVV.cjs → chunk-NBWJDAPF.cjs} +3 -3
  23. package/dist/{chunk-CWQSUYVV.cjs.map → chunk-NBWJDAPF.cjs.map} +1 -1
  24. package/dist/{chunk-3TKG7SW6.cjs → chunk-O3T4MB5D.cjs} +39 -39
  25. package/dist/{chunk-3TKG7SW6.cjs.map → chunk-O3T4MB5D.cjs.map} +1 -1
  26. package/dist/{chunk-IHXUZBBV.js → chunk-P7RPGV3I.js} +11 -3
  27. package/dist/{chunk-IHXUZBBV.js.map → chunk-P7RPGV3I.js.map} +1 -1
  28. package/dist/{chunk-R3TXAMMB.cjs → chunk-PCIN3YYW.cjs} +12 -4
  29. package/dist/chunk-PCIN3YYW.cjs.map +1 -0
  30. package/dist/{chunk-4VLGJEKQ.js → chunk-PG6NTQ72.js} +2 -2
  31. package/dist/{chunk-YUVCH2LX.js → chunk-QAFVP2NG.js} +5 -5
  32. package/dist/{chunk-5JHJX7OX.js → chunk-S4GVJZ7X.js} +4 -4
  33. package/dist/{chunk-N3OGB543.cjs → chunk-SPUVLKXS.cjs} +9 -9
  34. package/dist/{chunk-N3OGB543.cjs.map → chunk-SPUVLKXS.cjs.map} +1 -1
  35. package/dist/{chunk-C5HQCF4R.js → chunk-V3TJN4XI.js} +4 -4
  36. package/dist/{chunk-DHSIAIFG.cjs → chunk-VWTUHH6T.cjs} +11 -11
  37. package/dist/{chunk-DHSIAIFG.cjs.map → chunk-VWTUHH6T.cjs.map} +1 -1
  38. package/dist/{chunk-GYQHUJWR.cjs → chunk-XLZGBSNT.cjs} +14 -14
  39. package/dist/{chunk-GYQHUJWR.cjs.map → chunk-XLZGBSNT.cjs.map} +1 -1
  40. package/dist/{chunk-XL2G2HHJ.cjs → chunk-YMXR3AFK.cjs} +4 -4
  41. package/dist/{chunk-XL2G2HHJ.cjs.map → chunk-YMXR3AFK.cjs.map} +1 -1
  42. package/dist/{chunk-SI64DC72.cjs → chunk-ZF3TRQD2.cjs} +31 -31
  43. package/dist/{chunk-SI64DC72.cjs.map → chunk-ZF3TRQD2.cjs.map} +1 -1
  44. package/dist/components/case-studies/index.cjs +8 -8
  45. package/dist/components/case-studies/index.js +2 -2
  46. package/dist/components/chat/index.cjs +2 -2
  47. package/dist/components/chat/index.js +1 -1
  48. package/dist/components/contact/index.cjs +3 -3
  49. package/dist/components/contact/index.js +2 -2
  50. package/dist/components/docs/index.cjs +5 -5
  51. package/dist/components/docs/index.js +4 -4
  52. package/dist/components/embeds/index.cjs +3 -3
  53. package/dist/components/embeds/index.js +2 -2
  54. package/dist/components/faq/index.cjs +3 -3
  55. package/dist/components/faq/index.js +2 -2
  56. package/dist/components/features/index.cjs +4 -2
  57. package/dist/components/features/index.cjs.map +1 -1
  58. package/dist/components/features/index.js +3 -1
  59. package/dist/components/features/video-bites-shared.cjs +7 -0
  60. package/dist/components/features/video-bites-shared.cjs.map +1 -1
  61. package/dist/components/features/video-bites-shared.d.ts +10 -0
  62. package/dist/components/features/video-bites-shared.d.ts.map +1 -1
  63. package/dist/components/features/video-bites-shared.js +7 -1
  64. package/dist/components/features/video-bites-shared.js.map +1 -1
  65. package/dist/components/features/video-bites-strip.d.ts +5 -1
  66. package/dist/components/features/video-bites-strip.d.ts.map +1 -1
  67. package/dist/components/help-center-pages/index.cjs +22 -22
  68. package/dist/components/help-center-pages/index.js +13 -13
  69. package/dist/components/index.cjs +133 -131
  70. package/dist/components/index.cjs.map +1 -1
  71. package/dist/components/index.js +13 -11
  72. package/dist/components/index.js.map +1 -1
  73. package/dist/components/meeting-scheduler/index.cjs +28 -28
  74. package/dist/components/meeting-scheduler/index.js +3 -3
  75. package/dist/components/navigation/index.cjs +2 -2
  76. package/dist/components/navigation/index.js +1 -1
  77. package/dist/components/onboarding-guides/index.cjs +5 -5
  78. package/dist/components/onboarding-guides/index.js +4 -4
  79. package/dist/components/related-content/index.cjs +3 -3
  80. package/dist/components/related-content/index.js +2 -2
  81. package/dist/components/tickets/index.cjs +6 -6
  82. package/dist/components/tickets/index.js +5 -5
  83. package/dist/components/ui/index.cjs +2 -2
  84. package/dist/components/ui/index.js +1 -1
  85. package/dist/index.cjs +4 -2
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.js +3 -1
  88. package/dist/types/video-processing.d.ts +1 -0
  89. package/dist/types/video-processing.d.ts.map +1 -1
  90. package/package.json +1 -1
  91. package/src/components/features/__tests__/video-bites-shared.test.ts +64 -0
  92. package/src/components/features/video-bites-shared.ts +16 -0
  93. package/src/components/features/video-bites-strip.tsx +7 -2
  94. package/src/types/video-processing.ts +1 -0
  95. package/dist/chunk-R3TXAMMB.cjs.map +0 -1
  96. /package/dist/{chunk-ZSZ24UY6.js.map → chunk-3H4NJO43.js.map} +0 -0
  97. /package/dist/{chunk-E26KVZJM.js.map → chunk-3KFGRSM7.js.map} +0 -0
  98. /package/dist/{chunk-S3NZZKNU.js.map → chunk-5OU7FNZD.js.map} +0 -0
  99. /package/dist/{chunk-FVHFBEXH.js.map → chunk-ANI7I7SC.js.map} +0 -0
  100. /package/dist/{chunk-LM6NDYGD.js.map → chunk-B4AGHKHF.js.map} +0 -0
  101. /package/dist/{chunk-DNPQ2U7P.js.map → chunk-BOFSW6J7.js.map} +0 -0
  102. /package/dist/{chunk-DV4CSNZD.js.map → chunk-C7LWJWOO.js.map} +0 -0
  103. /package/dist/{chunk-Z5FN5VTC.js.map → chunk-D2EOIZ7V.js.map} +0 -0
  104. /package/dist/{chunk-UVGFICZT.js.map → chunk-KDTQMUUY.js.map} +0 -0
  105. /package/dist/{chunk-4VLGJEKQ.js.map → chunk-PG6NTQ72.js.map} +0 -0
  106. /package/dist/{chunk-YUVCH2LX.js.map → chunk-QAFVP2NG.js.map} +0 -0
  107. /package/dist/{chunk-5JHJX7OX.js.map → chunk-S4GVJZ7X.js.map} +0 -0
  108. /package/dist/{chunk-C5HQCF4R.js.map → chunk-V3TJN4XI.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkR3TXAMMBcjs = require('./chunk-R3TXAMMB.cjs');
6
+ var _chunkPCIN3YYWcjs = require('./chunk-PCIN3YYW.cjs');
7
7
 
8
8
 
9
9
  var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
@@ -50,7 +50,7 @@ function DetailPageSkeleton({
50
50
  ] });
51
51
  if (bare) return content;
52
52
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
53
- _chunkR3TXAMMBcjs.PageLayout,
53
+ _chunkPCIN3YYWcjs.PageLayout,
54
54
  {
55
55
  showHeader: false,
56
56
  className: "bg-ods-bg max-w-[1280px] mx-auto py-6 md:py-10 px-6 md:px-20",
@@ -88,7 +88,7 @@ function ArticleAuthorByline({
88
88
  }) {
89
89
  const runtime = _chunkCEAAOVCVcjs.useChatRuntime.call(void 0, );
90
90
  if (!author) return null;
91
- const proxiedAvatar = avatar ? proxyImageUrl ? proxyImageUrl(avatar) : _nullishCoalesce(_chunkR3TXAMMBcjs.getProxiedImageUrl.call(void 0, avatar, {
91
+ const proxiedAvatar = avatar ? proxyImageUrl ? proxyImageUrl(avatar) : _nullishCoalesce(_chunkPCIN3YYWcjs.getProxiedImageUrl.call(void 0, avatar, {
92
92
  proxyPrefix: _optionalChain([runtime, 'optionalAccess', _2 => _2.endpoints, 'access', _3 => _3.imageProxyUrlPrefix]),
93
93
  skipDomains: _optionalChain([runtime, 'optionalAccess', _4 => _4.endpoints, 'access', _5 => _5.imageProxySkipDomains]),
94
94
  directHttps: true
@@ -96,7 +96,7 @@ function ArticleAuthorByline({
96
96
  const avatarSizeClass = size === "lg" ? "w-16 h-16" : "w-14 h-14";
97
97
  const avatarIconClass = size === "lg" ? "w-8 h-8" : "w-7 h-7";
98
98
  const avatarDim = size === "lg" ? 64 : 56;
99
- const formattedBio = _chunkR3TXAMMBcjs.formatBioText.call(void 0, _nullishCoalesce(bio, () => ( null)));
99
+ const formattedBio = _chunkPCIN3YYWcjs.formatBioText.call(void 0, _nullishCoalesce(bio, () => ( null)));
100
100
  const dateLabel = publishedAt ? formatDate(publishedAt) : "";
101
101
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
102
102
  "div",
@@ -146,4 +146,4 @@ function ArticleAuthorByline({
146
146
 
147
147
 
148
148
  exports.DetailPageSkeleton = DetailPageSkeleton; exports.ArticleAuthorByline = ArticleAuthorByline;
149
- //# sourceMappingURL=chunk-5WQPOH27.cjs.map
149
+ //# sourceMappingURL=chunk-33RSZGYQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-5WQPOH27.cjs","../src/components/shared/detail-page-skeleton.tsx","../src/components/shared/article-author-byline.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-5WQPOH27.cjs","sourcesContent":[null,"\"use client\";\n\nimport { PageLayout } from '../layout/page-layout';\n\nexport interface DetailPageSkeletonProps {\n metadataColumns?: number; // Number of metadata grid columns (default 4)\n showImageGallery?: boolean; // Show horizontal image gallery (default true)\n /** Render only the skeleton blocks, WITHOUT the self-contained page wrapper\n * — the caller supplies its own (e.g. `<PageShell>`) so the loading state\n * matches the loaded page's width, padding, and min-height. Default false\n * (self-contained `<PageLayout>` at the hub article width). */\n bare?: boolean;\n}\n\nexport function DetailPageSkeleton({\n metadataColumns = 4,\n showImageGallery = true,\n bare = false\n}: DetailPageSkeletonProps = {}) {\n const content = (\n <div className=\"space-y-6 md:space-y-10 animate-pulse\">\n {/* Title Block */}\n <div className=\"flex flex-col gap-6 w-full\">\n <div className=\"h-16 md:h-20 w-full max-w-3xl bg-ods-card rounded\"></div>\n </div>\n\n {/* Category Tags Skeleton */}\n <div className=\"flex flex-wrap gap-2 w-full\">\n <div className=\"h-8 w-32 bg-ods-card rounded\"></div>\n <div className=\"h-8 w-28 bg-ods-card rounded\"></div>\n <div className=\"h-8 w-36 bg-ods-card rounded\"></div>\n </div>\n\n {/* Metadata Grid Skeleton */}\n <div className={`grid grid-cols-1 md:grid-cols-${metadataColumns} border border-ods-border rounded-md overflow-hidden w-full`}>\n {Array.from({ length: metadataColumns }).map((_, i) => (\n <div key={i} className=\"bg-ods-card border-b md:border-b-0 md:border-r last:border-r-0 border-ods-border p-4\">\n <div className=\"h-6 w-24 bg-ods-border rounded mb-2\"></div>\n <div className=\"h-5 w-20 bg-ods-border rounded\"></div>\n </div>\n ))}\n </div>\n\n {/* Image Gallery Skeleton */}\n {showImageGallery && (\n <div className=\"flex gap-6 overflow-x-auto w-full\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div key={i} className=\"shrink-0 w-[240px] h-[200px] bg-ods-card rounded-md border border-ods-border\"></div>\n ))}\n </div>\n )}\n\n {/* Featured Image Skeleton (for case studies) */}\n {!showImageGallery && (\n <div className=\"aspect-[2560/1366] w-full bg-ods-card rounded-md\"></div>\n )}\n\n {/* Content Sections Skeleton */}\n {[1, 2, 3].map((section) => (\n <div key={section} className=\"space-y-6\">\n <div className=\"h-16 w-64 bg-ods-card rounded\"></div>\n <div className=\"space-y-3\">\n <div className=\"h-6 w-full bg-ods-card rounded\"></div>\n <div className=\"h-6 w-full bg-ods-card rounded\"></div>\n <div className=\"h-6 w-4/5 bg-ods-card rounded\"></div>\n </div>\n </div>\n ))}\n </div>\n );\n if (bare) return content;\n return (\n <PageLayout\n showHeader={false}\n className=\"bg-ods-bg max-w-[1280px] mx-auto py-6 md:py-10 px-6 md:px-20\"\n >\n {content}\n </PageLayout>\n );\n}\n","'use client'\n\n/**\n * Shared \"author byline\" card used by article-shaped detail pages\n * (blog post, product release, onboarding guide, investor update).\n *\n * MOVED from the hub so any consuming app can embed it; hub call sites\n * import it directly and pass their platform-aware copy explicitly\n * (`fallbackBio={defaultAuthorFallbackBio()}` from the hub's app-config).\n *\n * Embed-readiness contract:\n * - `Link` / `Image` render through the embed-shims (plain `<a>` / `<img>`\n * in non-Next hosts; the real Next primitives once the host registers\n * them at app init).\n * - The avatar is proxied through the OPTIONAL ambient `ChatRuntime`\n * (`endpoints.imageProxyUrlPrefix`, same config `useProxiedImageUrl`\n * reads) — when no runtime is mounted the raw URL renders as-is, so the\n * component never throws outside a provider. Hosts can also inject\n * `proxyImageUrl` to bypass the runtime entirely.\n * - `fallbackBio` is a PLAIN prop (no app-config import): the lib has no\n * platform awareness; pass copy or leave it absent to render nothing.\n *\n * Render order: avatar → name + job title + date → bio (when present).\n * Returns null when `author` is empty (no card rendered).\n */\n\nimport React from 'react'\nimport { Calendar, User } from 'lucide-react'\nimport Image from '../../embed-shims/next-image'\nimport Link from '../../embed-shims/next-link'\nimport { cn } from '../../utils/cn'\nimport { formatBioText } from '../../utils/format'\nimport { getProxiedImageUrl } from '../../utils/image-proxy'\nimport { useChatRuntime } from '../../contexts/chat-runtime-context'\n\nexport interface ArticleAuthorBylineProps {\n /** Author display name. Required — block is hidden when null/empty. */\n author: string | null\n /** Avatar URL. Falls back to a placeholder when null. */\n avatar?: string | null\n /** Optional bio paragraph rendered below the name. */\n bio?: string | null\n /** Optional job title rendered immediately under the name. */\n jobTitle?: string | null\n /** Optional published date (ISO string or Date). Rendered next to the name. */\n publishedAt?: string | Date | null\n /** Optional link target for the author name (e.g. the author page). */\n href?: string | null\n /**\n * Fallback paragraph when `bio` is empty. Plain copy — the lib has no\n * platform/config awareness, so hosts that want a branded default\n * (\"Contributing author on the {platform} platform\") pass it explicitly\n * (the hub wrapper derives it from `getAppConfig()`). Absent/null ⇒\n * nothing renders below the name when `bio` is empty.\n */\n fallbackBio?: string | null\n /** Avatar size variant. `md` = 56px (default), `lg` = 64px. */\n size?: 'md' | 'lg'\n /**\n * Host-injected avatar-URL mapper. Wins over the ambient-runtime proxy\n * resolution. Use when the host proxies images outside the `ChatRuntime`\n * config (e.g. a bespoke CDN rewrite).\n */\n proxyImageUrl?: (url: string) => string\n className?: string\n}\n\nfunction formatDate(value: string | Date): string {\n const d = typeof value === 'string' ? new Date(value) : value\n if (Number.isNaN(d.getTime())) return ''\n // `timeZone: 'UTC'` keeps the SSR (server = UTC) and client (user's local tz)\n // renders identical — without it a published_at near a midnight boundary\n // formats to a different day on each side, triggering a React #418 hydration\n // text mismatch. Matches the convention in blog-metadata.tsx / investor-update.\n return d.toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n })\n}\n\nexport function ArticleAuthorByline({\n author,\n avatar,\n bio,\n jobTitle,\n publishedAt,\n href,\n fallbackBio,\n size = 'md',\n proxyImageUrl,\n className,\n}: ArticleAuthorBylineProps) {\n // Optional runtime — `useChatRuntime` returns null outside a provider, so\n // the byline works in bare embeds (raw avatar URL) and proxies whenever the\n // host mounted a runtime with `imageProxyUrlPrefix` (the hub always does).\n const runtime = useChatRuntime()\n if (!author) return null\n\n const proxiedAvatar = avatar\n ? proxyImageUrl\n ? proxyImageUrl(avatar)\n : (getProxiedImageUrl(avatar, {\n proxyPrefix: runtime?.endpoints.imageProxyUrlPrefix,\n skipDomains: runtime?.endpoints.imageProxySkipDomains,\n directHttps: true,\n }) ?? avatar)\n : ''\n\n // Class-driven sizing (md = 56px, lg = 64px). The numeric pair feeds only\n // the Image element's intrinsic width/height attributes (required by the\n // Next image shim) — layout comes from the classes.\n const avatarSizeClass = size === 'lg' ? 'w-16 h-16' : 'w-14 h-14'\n const avatarIconClass = size === 'lg' ? 'w-8 h-8' : 'w-7 h-7'\n const avatarDim = size === 'lg' ? 64 : 56\n const formattedBio = formatBioText(bio ?? null)\n const dateLabel = publishedAt ? formatDate(publishedAt) : ''\n\n return (\n <div\n className={cn(\n 'bg-ods-card border border-ods-border rounded-lg p-6',\n 'flex flex-col md:flex-row gap-4 items-start',\n className,\n )}\n >\n {/* Avatar */}\n <div className=\"flex-shrink-0\">\n {avatar ? (\n <Image\n src={proxiedAvatar || avatar}\n alt={author}\n width={avatarDim}\n height={avatarDim}\n className={cn('rounded-full border-2 border-ods-border object-cover', avatarSizeClass)}\n />\n ) : (\n <div\n className={cn(\n 'rounded-full border-2 border-ods-border bg-ods-bg flex items-center justify-center',\n avatarSizeClass,\n )}\n >\n <User className={cn('text-ods-text-secondary', avatarIconClass)} />\n </div>\n )}\n </div>\n\n {/* Name + meta + bio */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-baseline gap-x-3 gap-y-1\">\n <h3 className=\"text-h5 text-ods-text-primary\">\n {href ? (\n <Link href={href} className=\"hover:text-ods-accent transition-colors\">\n {author}\n </Link>\n ) : (\n author\n )}\n </h3>\n {dateLabel && (\n <span className=\"inline-flex items-center gap-1 font-body text-body-sm text-ods-text-secondary\">\n <Calendar className=\"h-3 w-3\" />\n {dateLabel}\n </span>\n )}\n </div>\n {jobTitle && (\n <p className=\"font-body text-body-sm text-ods-text-secondary mt-0.5\">\n {jobTitle}\n </p>\n )}\n {formattedBio ? (\n <p className=\"font-body text-body-md text-ods-text-secondary leading-relaxed mt-2\">\n {formattedBio}\n </p>\n ) : fallbackBio ? (\n <p className=\"font-body text-body-md text-ods-text-secondary italic mt-2\">\n {fallbackBio}\n </p>\n ) : null}\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-33RSZGYQ.cjs","../src/components/shared/detail-page-skeleton.tsx","../src/components/shared/article-author-byline.tsx"],"names":["jsxs","jsx"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-33RSZGYQ.cjs","sourcesContent":[null,"\"use client\";\n\nimport { PageLayout } from '../layout/page-layout';\n\nexport interface DetailPageSkeletonProps {\n metadataColumns?: number; // Number of metadata grid columns (default 4)\n showImageGallery?: boolean; // Show horizontal image gallery (default true)\n /** Render only the skeleton blocks, WITHOUT the self-contained page wrapper\n * — the caller supplies its own (e.g. `<PageShell>`) so the loading state\n * matches the loaded page's width, padding, and min-height. Default false\n * (self-contained `<PageLayout>` at the hub article width). */\n bare?: boolean;\n}\n\nexport function DetailPageSkeleton({\n metadataColumns = 4,\n showImageGallery = true,\n bare = false\n}: DetailPageSkeletonProps = {}) {\n const content = (\n <div className=\"space-y-6 md:space-y-10 animate-pulse\">\n {/* Title Block */}\n <div className=\"flex flex-col gap-6 w-full\">\n <div className=\"h-16 md:h-20 w-full max-w-3xl bg-ods-card rounded\"></div>\n </div>\n\n {/* Category Tags Skeleton */}\n <div className=\"flex flex-wrap gap-2 w-full\">\n <div className=\"h-8 w-32 bg-ods-card rounded\"></div>\n <div className=\"h-8 w-28 bg-ods-card rounded\"></div>\n <div className=\"h-8 w-36 bg-ods-card rounded\"></div>\n </div>\n\n {/* Metadata Grid Skeleton */}\n <div className={`grid grid-cols-1 md:grid-cols-${metadataColumns} border border-ods-border rounded-md overflow-hidden w-full`}>\n {Array.from({ length: metadataColumns }).map((_, i) => (\n <div key={i} className=\"bg-ods-card border-b md:border-b-0 md:border-r last:border-r-0 border-ods-border p-4\">\n <div className=\"h-6 w-24 bg-ods-border rounded mb-2\"></div>\n <div className=\"h-5 w-20 bg-ods-border rounded\"></div>\n </div>\n ))}\n </div>\n\n {/* Image Gallery Skeleton */}\n {showImageGallery && (\n <div className=\"flex gap-6 overflow-x-auto w-full\">\n {[1, 2, 3, 4, 5].map((i) => (\n <div key={i} className=\"shrink-0 w-[240px] h-[200px] bg-ods-card rounded-md border border-ods-border\"></div>\n ))}\n </div>\n )}\n\n {/* Featured Image Skeleton (for case studies) */}\n {!showImageGallery && (\n <div className=\"aspect-[2560/1366] w-full bg-ods-card rounded-md\"></div>\n )}\n\n {/* Content Sections Skeleton */}\n {[1, 2, 3].map((section) => (\n <div key={section} className=\"space-y-6\">\n <div className=\"h-16 w-64 bg-ods-card rounded\"></div>\n <div className=\"space-y-3\">\n <div className=\"h-6 w-full bg-ods-card rounded\"></div>\n <div className=\"h-6 w-full bg-ods-card rounded\"></div>\n <div className=\"h-6 w-4/5 bg-ods-card rounded\"></div>\n </div>\n </div>\n ))}\n </div>\n );\n if (bare) return content;\n return (\n <PageLayout\n showHeader={false}\n className=\"bg-ods-bg max-w-[1280px] mx-auto py-6 md:py-10 px-6 md:px-20\"\n >\n {content}\n </PageLayout>\n );\n}\n","'use client'\n\n/**\n * Shared \"author byline\" card used by article-shaped detail pages\n * (blog post, product release, onboarding guide, investor update).\n *\n * MOVED from the hub so any consuming app can embed it; hub call sites\n * import it directly and pass their platform-aware copy explicitly\n * (`fallbackBio={defaultAuthorFallbackBio()}` from the hub's app-config).\n *\n * Embed-readiness contract:\n * - `Link` / `Image` render through the embed-shims (plain `<a>` / `<img>`\n * in non-Next hosts; the real Next primitives once the host registers\n * them at app init).\n * - The avatar is proxied through the OPTIONAL ambient `ChatRuntime`\n * (`endpoints.imageProxyUrlPrefix`, same config `useProxiedImageUrl`\n * reads) — when no runtime is mounted the raw URL renders as-is, so the\n * component never throws outside a provider. Hosts can also inject\n * `proxyImageUrl` to bypass the runtime entirely.\n * - `fallbackBio` is a PLAIN prop (no app-config import): the lib has no\n * platform awareness; pass copy or leave it absent to render nothing.\n *\n * Render order: avatar → name + job title + date → bio (when present).\n * Returns null when `author` is empty (no card rendered).\n */\n\nimport React from 'react'\nimport { Calendar, User } from 'lucide-react'\nimport Image from '../../embed-shims/next-image'\nimport Link from '../../embed-shims/next-link'\nimport { cn } from '../../utils/cn'\nimport { formatBioText } from '../../utils/format'\nimport { getProxiedImageUrl } from '../../utils/image-proxy'\nimport { useChatRuntime } from '../../contexts/chat-runtime-context'\n\nexport interface ArticleAuthorBylineProps {\n /** Author display name. Required — block is hidden when null/empty. */\n author: string | null\n /** Avatar URL. Falls back to a placeholder when null. */\n avatar?: string | null\n /** Optional bio paragraph rendered below the name. */\n bio?: string | null\n /** Optional job title rendered immediately under the name. */\n jobTitle?: string | null\n /** Optional published date (ISO string or Date). Rendered next to the name. */\n publishedAt?: string | Date | null\n /** Optional link target for the author name (e.g. the author page). */\n href?: string | null\n /**\n * Fallback paragraph when `bio` is empty. Plain copy — the lib has no\n * platform/config awareness, so hosts that want a branded default\n * (\"Contributing author on the {platform} platform\") pass it explicitly\n * (the hub wrapper derives it from `getAppConfig()`). Absent/null ⇒\n * nothing renders below the name when `bio` is empty.\n */\n fallbackBio?: string | null\n /** Avatar size variant. `md` = 56px (default), `lg` = 64px. */\n size?: 'md' | 'lg'\n /**\n * Host-injected avatar-URL mapper. Wins over the ambient-runtime proxy\n * resolution. Use when the host proxies images outside the `ChatRuntime`\n * config (e.g. a bespoke CDN rewrite).\n */\n proxyImageUrl?: (url: string) => string\n className?: string\n}\n\nfunction formatDate(value: string | Date): string {\n const d = typeof value === 'string' ? new Date(value) : value\n if (Number.isNaN(d.getTime())) return ''\n // `timeZone: 'UTC'` keeps the SSR (server = UTC) and client (user's local tz)\n // renders identical — without it a published_at near a midnight boundary\n // formats to a different day on each side, triggering a React #418 hydration\n // text mismatch. Matches the convention in blog-metadata.tsx / investor-update.\n return d.toLocaleDateString('en-US', {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n })\n}\n\nexport function ArticleAuthorByline({\n author,\n avatar,\n bio,\n jobTitle,\n publishedAt,\n href,\n fallbackBio,\n size = 'md',\n proxyImageUrl,\n className,\n}: ArticleAuthorBylineProps) {\n // Optional runtime — `useChatRuntime` returns null outside a provider, so\n // the byline works in bare embeds (raw avatar URL) and proxies whenever the\n // host mounted a runtime with `imageProxyUrlPrefix` (the hub always does).\n const runtime = useChatRuntime()\n if (!author) return null\n\n const proxiedAvatar = avatar\n ? proxyImageUrl\n ? proxyImageUrl(avatar)\n : (getProxiedImageUrl(avatar, {\n proxyPrefix: runtime?.endpoints.imageProxyUrlPrefix,\n skipDomains: runtime?.endpoints.imageProxySkipDomains,\n directHttps: true,\n }) ?? avatar)\n : ''\n\n // Class-driven sizing (md = 56px, lg = 64px). The numeric pair feeds only\n // the Image element's intrinsic width/height attributes (required by the\n // Next image shim) — layout comes from the classes.\n const avatarSizeClass = size === 'lg' ? 'w-16 h-16' : 'w-14 h-14'\n const avatarIconClass = size === 'lg' ? 'w-8 h-8' : 'w-7 h-7'\n const avatarDim = size === 'lg' ? 64 : 56\n const formattedBio = formatBioText(bio ?? null)\n const dateLabel = publishedAt ? formatDate(publishedAt) : ''\n\n return (\n <div\n className={cn(\n 'bg-ods-card border border-ods-border rounded-lg p-6',\n 'flex flex-col md:flex-row gap-4 items-start',\n className,\n )}\n >\n {/* Avatar */}\n <div className=\"flex-shrink-0\">\n {avatar ? (\n <Image\n src={proxiedAvatar || avatar}\n alt={author}\n width={avatarDim}\n height={avatarDim}\n className={cn('rounded-full border-2 border-ods-border object-cover', avatarSizeClass)}\n />\n ) : (\n <div\n className={cn(\n 'rounded-full border-2 border-ods-border bg-ods-bg flex items-center justify-center',\n avatarSizeClass,\n )}\n >\n <User className={cn('text-ods-text-secondary', avatarIconClass)} />\n </div>\n )}\n </div>\n\n {/* Name + meta + bio */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-baseline gap-x-3 gap-y-1\">\n <h3 className=\"text-h5 text-ods-text-primary\">\n {href ? (\n <Link href={href} className=\"hover:text-ods-accent transition-colors\">\n {author}\n </Link>\n ) : (\n author\n )}\n </h3>\n {dateLabel && (\n <span className=\"inline-flex items-center gap-1 font-body text-body-sm text-ods-text-secondary\">\n <Calendar className=\"h-3 w-3\" />\n {dateLabel}\n </span>\n )}\n </div>\n {jobTitle && (\n <p className=\"font-body text-body-sm text-ods-text-secondary mt-0.5\">\n {jobTitle}\n </p>\n )}\n {formattedBio ? (\n <p className=\"font-body text-body-md text-ods-text-secondary leading-relaxed mt-2\">\n {formattedBio}\n </p>\n ) : fallbackBio ? (\n <p className=\"font-body text-body-md text-ods-text-secondary italic mt-2\">\n {fallbackBio}\n </p>\n ) : null}\n </div>\n </div>\n )\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  init_unified_pagination,
4
4
  unified_pagination_exports
5
- } from "./chunk-4VLGJEKQ.js";
5
+ } from "./chunk-PG6NTQ72.js";
6
6
  import {
7
7
  cn,
8
8
  init_cn
@@ -172,4 +172,4 @@ export {
172
172
  usePaginationLoading,
173
173
  PersistentPaginationWrapper
174
174
  };
175
- //# sourceMappingURL=chunk-ZSZ24UY6.js.map
175
+ //# sourceMappingURL=chunk-3H4NJO43.js.map
@@ -11,7 +11,7 @@ import {
11
11
  SelectValue,
12
12
  Textarea,
13
13
  useChatAttachments
14
- } from "./chunk-IHXUZBBV.js";
14
+ } from "./chunk-P7RPGV3I.js";
15
15
  import {
16
16
  useContactSubmission,
17
17
  useHumanitySignals
@@ -374,4 +374,4 @@ function ContactForm({
374
374
  export {
375
375
  ContactForm
376
376
  };
377
- //# sourceMappingURL=chunk-E26KVZJM.js.map
377
+ //# sourceMappingURL=chunk-3KFGRSM7.js.map
@@ -6,7 +6,7 @@ import {
6
6
  resolveExternalNavigation,
7
7
  resolveSourceIcon,
8
8
  stripSameOriginToPath
9
- } from "./chunk-IHXUZBBV.js";
9
+ } from "./chunk-P7RPGV3I.js";
10
10
  import {
11
11
  contentFetch,
12
12
  useDebounce
@@ -370,4 +370,4 @@ export {
370
370
  resolveSearchResultAction,
371
371
  useDocSearch
372
372
  };
373
- //# sourceMappingURL=chunk-S3NZZKNU.js.map
373
+ //# sourceMappingURL=chunk-5OU7FNZD.js.map
@@ -1,16 +1,16 @@
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 _chunkCWQSUYVVcjs = require('./chunk-CWQSUYVV.cjs');
4
+ var _chunkNBWJDAPFcjs = require('./chunk-NBWJDAPF.cjs');
5
5
 
6
6
 
7
- var _chunkGYQHUJWRcjs = require('./chunk-GYQHUJWR.cjs');
7
+ var _chunkXLZGBSNTcjs = require('./chunk-XLZGBSNT.cjs');
8
8
 
9
9
 
10
- var _chunkXL2G2HHJcjs = require('./chunk-XL2G2HHJ.cjs');
10
+ var _chunkYMXR3AFKcjs = require('./chunk-YMXR3AFK.cjs');
11
11
 
12
12
 
13
- var _chunk5WQPOH27cjs = require('./chunk-5WQPOH27.cjs');
13
+ var _chunk33RSZGYQcjs = require('./chunk-33RSZGYQ.cjs');
14
14
 
15
15
 
16
16
  var _chunkNKEOD2ADcjs = require('./chunk-NKEOD2AD.cjs');
@@ -46,7 +46,7 @@ var _chunkNKEOD2ADcjs = require('./chunk-NKEOD2AD.cjs');
46
46
 
47
47
 
48
48
 
49
- var _chunkR3TXAMMBcjs = require('./chunk-R3TXAMMB.cjs');
49
+ var _chunkPCIN3YYWcjs = require('./chunk-PCIN3YYW.cjs');
50
50
 
51
51
 
52
52
 
@@ -77,8 +77,8 @@ var _chunkKI4EGKNVcjs = require('./chunk-KI4EGKNV.cjs');
77
77
  _chunkKI4EGKNVcjs.init_cn.call(void 0, );
78
78
  var _jsxruntime = require('react/jsx-runtime');
79
79
  var DEFAULT_ENDPOINT = "/api/releases";
80
- var DEFAULT_SEARCH_PARAM_KEY = _chunkR3TXAMMBcjs.DEV_SECTION_PARAM_KEYS.search;
81
- var DEFAULT_STATUS_PARAM_KEY = _chunkR3TXAMMBcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
80
+ var DEFAULT_SEARCH_PARAM_KEY = _chunkPCIN3YYWcjs.DEV_SECTION_PARAM_KEYS.search;
81
+ var DEFAULT_STATUS_PARAM_KEY = _chunkPCIN3YYWcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
82
82
  var DEFAULT_PAGE_PARAM_KEY = "page";
83
83
  function ReleaseRow({
84
84
  release,
@@ -87,17 +87,17 @@ function ReleaseRow({
87
87
  }) {
88
88
  const runtime = _chunkCEAAOVCVcjs.useChatRuntime.call(void 0, );
89
89
  const router = _chunkSSJNN5BScjs.useRouter.call(void 0, );
90
- const cta = _chunkR3TXAMMBcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
90
+ const cta = _chunkPCIN3YYWcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
91
91
  type: "product_release",
92
92
  slug: release.slug,
93
93
  basePath,
94
94
  platforms: release.product_release_platforms
95
95
  });
96
- const { target, rel } = _chunkR3TXAMMBcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
96
+ const { target, rel } = _chunkPCIN3YYWcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
97
97
  const onClick = (e) => {
98
- if (e.defaultPrevented || _chunkR3TXAMMBcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
98
+ if (e.defaultPrevented || _chunkPCIN3YYWcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
99
99
  e.preventDefault();
100
- _chunkR3TXAMMBcjs.executeNavigationImperative.call(void 0, {
100
+ _chunkPCIN3YYWcjs.executeNavigationImperative.call(void 0, {
101
101
  runtime,
102
102
  href: cta.href,
103
103
  targetPlatform: cta.targetPlatform,
@@ -105,7 +105,7 @@ function ReleaseRow({
105
105
  });
106
106
  };
107
107
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
108
- _chunkR3TXAMMBcjs.ProductReleaseCard,
108
+ _chunkPCIN3YYWcjs.ProductReleaseCard,
109
109
  {
110
110
  size: "lg",
111
111
  title: release.title,
@@ -121,7 +121,7 @@ function ProductReleasesView({
121
121
  initialData,
122
122
  itemsPerPage = 5,
123
123
  basePath = "/releases",
124
- buildCardProps = _chunkR3TXAMMBcjs.buildProductReleaseCardProps,
124
+ buildCardProps = _chunkPCIN3YYWcjs.buildProductReleaseCardProps,
125
125
  searchParamKey = DEFAULT_SEARCH_PARAM_KEY,
126
126
  statusParamKey = DEFAULT_STATUS_PARAM_KEY,
127
127
  pageParamKey = DEFAULT_PAGE_PARAM_KEY,
@@ -159,10 +159,10 @@ function ProductReleasesView({
159
159
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
160
160
  };
161
161
  if (error) {
162
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKI4EGKNVcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
162
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKI4EGKNVcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
163
163
  }
164
164
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKI4EGKNVcjs.cn.call(void 0, "w-full flex flex-col gap-[40px]", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[600px]", children: showEmpty ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[600px] flex items-center justify-center", children: hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
165
- _chunkXL2G2HHJcjs.EmptyState,
165
+ _chunkYMXR3AFKcjs.EmptyState,
166
166
  {
167
167
  type: "search",
168
168
  title: "No releases found",
@@ -172,7 +172,7 @@ function ProductReleasesView({
172
172
  onCtaClick: resetFilters
173
173
  }
174
174
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
175
- _chunkXL2G2HHJcjs.EmptyState,
175
+ _chunkYMXR3AFKcjs.EmptyState,
176
176
  {
177
177
  type: "generic",
178
178
  title: "No releases available",
@@ -187,13 +187,13 @@ function ProductReleasesView({
187
187
  "div",
188
188
  {
189
189
  style: { visibility: isLoading || hasData ? "visible" : "hidden" },
190
- children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.ProductReleaseCardSkeleton, { size: "lg" }) : release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.ProductReleaseCardSkeleton, { size: "lg" })
190
+ children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.ProductReleaseCardSkeleton, { size: "lg" }) : release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.ProductReleaseCardSkeleton, { size: "lg" })
191
191
  },
192
192
  _nullishCoalesce(_optionalChain([release, 'optionalAccess', _5 => _5.id]), () => ( `slot-${i}`))
193
193
  );
194
194
  }) }),
195
195
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-6 md:mt-8 flex justify-center", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-12 m-3 w-64" }) : releases.length > 0 && totalPages > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
196
- _chunkCWQSUYVVcjs.PersistentPaginationWrapper,
196
+ _chunkNBWJDAPFcjs.PersistentPaginationWrapper,
197
197
  {
198
198
  isLoading: false,
199
199
  currentPage,
@@ -235,10 +235,10 @@ function MediaGalleryStrip({ items, className }) {
235
235
  mediaItem.id || index
236
236
  );
237
237
  }
238
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
238
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
239
239
  }) }),
240
240
  galleryImages.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
241
- _chunkR3TXAMMBcjs.ImageGalleryModal,
241
+ _chunkPCIN3YYWcjs.ImageGalleryModal,
242
242
  {
243
243
  images: galleryImages,
244
244
  isOpen: galleryOpen,
@@ -255,7 +255,7 @@ _chunkSSJNN5BScjs.init_next_navigation.call(void 0, );
255
255
 
256
256
  var _lucidereact = require('lucide-react');
257
257
 
258
- var DefaultMarkdownRenderer = _chunkR3TXAMMBcjs.RichMarkdownRenderer;
258
+ var DefaultMarkdownRenderer = _chunkPCIN3YYWcjs.RichMarkdownRenderer;
259
259
  function ReleaseDetailPage({
260
260
  authorHref,
261
261
  slug,
@@ -272,8 +272,8 @@ function ReleaseDetailPage({
272
272
  shell = true
273
273
  }) {
274
274
  const router = _chunkSSJNN5BScjs.useRouter.call(void 0, );
275
- const captions = _chunkR3TXAMMBcjs.useCaptions.call(void 0, );
276
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
275
+ const captions = _chunkPCIN3YYWcjs.useCaptions.call(void 0, );
276
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
277
277
  const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
278
278
  const release = initialData || fetchedRelease;
279
279
  const showBackButton = backButton !== false;
@@ -317,7 +317,7 @@ function ReleaseDetailPage({
317
317
  return renderShell(
318
318
  // Match the loaded page's top offset (TitleBlock's
319
319
  // `pt-[var(--spacing-system-l)]`) so content doesn't jump on load.
320
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5WQPOH27cjs.DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) })
320
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk33RSZGYQcjs.DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) })
321
321
  );
322
322
  }
323
323
  if (error || !release) {
@@ -356,7 +356,7 @@ function ReleaseDetailPage({
356
356
  const improvements = release.improvements;
357
357
  return renderShell(
358
358
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
359
- _chunkR3TXAMMBcjs.PageLayout,
359
+ _chunkPCIN3YYWcjs.PageLayout,
360
360
  {
361
361
  title: releaseTitle,
362
362
  subtitle: `Version: ${releaseVersion}`,
@@ -365,7 +365,7 @@ function ReleaseDetailPage({
365
365
  backButton: showBackButton ? { label: backLabel, onClick: () => router.push(backHref) } : void 0,
366
366
  children: [
367
367
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6 md:space-y-8", children: [
368
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.EntityTagBadges, { tags: release.product_release_tags }),
368
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.EntityTagBadges, { tags: release.product_release_tags }),
369
369
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
370
370
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border-b md:border-b-0 md:border-r border-ods-border p-4 flex flex-col gap-3", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
371
371
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary", children: releaseType.toLocaleUpperCase() }),
@@ -376,11 +376,11 @@ function ReleaseDetailPage({
376
376
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: "Release Status" })
377
377
  ] }) }),
378
378
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border-b md:border-b-0 md:border-r border-ods-border p-4 flex flex-col gap-3", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
379
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary", children: _chunkR3TXAMMBcjs.formatReleaseDate.call(void 0, releaseDate) }),
379
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary", children: _chunkPCIN3YYWcjs.formatReleaseDate.call(void 0, releaseDate) }),
380
380
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: "Release Date" })
381
381
  ] }) }),
382
382
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
383
- _chunkR3TXAMMBcjs.EntityMetadataAuthorCell,
383
+ _chunkPCIN3YYWcjs.EntityMetadataAuthorCell,
384
384
  {
385
385
  author: _nullishCoalesce(author, () => ( { full_name: null, avatar_url: null })),
386
386
  authorHref: _optionalChain([author, 'optionalAccess', _6 => _6.full_name]) ? authorHref : void 0
@@ -398,9 +398,9 @@ function ReleaseDetailPage({
398
398
  highlightVideoThumbnail,
399
399
  title: releaseTitle,
400
400
  videoBites,
401
- bitesTitle: _chunkR3TXAMMBcjs.DEFAULT_VIDEO_BITES_TITLE,
401
+ bitesTitle: _chunkPCIN3YYWcjs.DEFAULT_VIDEO_BITES_TITLE,
402
402
  filterPublishedBites: true,
403
- bitesProfile: _chunkR3TXAMMBcjs.toStripProfile.call(void 0, author),
403
+ bitesProfile: _chunkPCIN3YYWcjs.toStripProfile.call(void 0, author),
404
404
  bitesHref: typeof release.slug === "string" ? `/releases/${release.slug}` : void 0,
405
405
  srtContent: _optionalChain([release, 'optionalAccess', _7 => _7.srt_content]),
406
406
  captionsUrl,
@@ -408,7 +408,7 @@ function ReleaseDetailPage({
408
408
  }
409
409
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
410
410
  youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
411
- _chunkR3TXAMMBcjs.Video,
411
+ _chunkPCIN3YYWcjs.Video,
412
412
  {
413
413
  kind: "youtube",
414
414
  url: youtubeUrl,
@@ -417,7 +417,7 @@ function ReleaseDetailPage({
417
417
  }
418
418
  ),
419
419
  !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
420
- _chunkR3TXAMMBcjs.Video,
420
+ _chunkPCIN3YYWcjs.Video,
421
421
  {
422
422
  url: mainVideoUrl,
423
423
  srtContent: _optionalChain([release, 'optionalAccess', _8 => _8.srt_content]),
@@ -426,7 +426,7 @@ function ReleaseDetailPage({
426
426
  }
427
427
  ),
428
428
  highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
429
- _chunkR3TXAMMBcjs.Video,
429
+ _chunkPCIN3YYWcjs.Video,
430
430
  {
431
431
  url: highlightVideoUrl,
432
432
  poster: highlightVideoThumbnail,
@@ -436,7 +436,7 @@ function ReleaseDetailPage({
436
436
  )
437
437
  ] }),
438
438
  releaseContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: releaseContent }) }),
439
- hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.Card, { className: "border-ods-error bg-ods-error/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
439
+ hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.Card, { className: "border-ods-error bg-ods-error/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
440
440
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: "h-6 w-6 text-ods-error" }),
441
441
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
442
442
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h3 text-ods-error", children: "Breaking Changes" }),
@@ -444,7 +444,7 @@ function ReleaseDetailPage({
444
444
  ] })
445
445
  ] }) }) }),
446
446
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
447
- _chunkR3TXAMMBcjs.ReleaseChangelogSection,
447
+ _chunkPCIN3YYWcjs.ReleaseChangelogSection,
448
448
  {
449
449
  title: "Breaking Changes",
450
450
  entries: breakingChanges || [],
@@ -455,7 +455,7 @@ function ReleaseDetailPage({
455
455
  }
456
456
  ),
457
457
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
458
- _chunkR3TXAMMBcjs.ReleaseChangelogSection,
458
+ _chunkPCIN3YYWcjs.ReleaseChangelogSection,
459
459
  {
460
460
  title: "Features Added",
461
461
  entries: featuresAdded || [],
@@ -465,7 +465,7 @@ function ReleaseDetailPage({
465
465
  }
466
466
  ),
467
467
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
468
- _chunkR3TXAMMBcjs.ReleaseChangelogSection,
468
+ _chunkPCIN3YYWcjs.ReleaseChangelogSection,
469
469
  {
470
470
  title: "Bugs Fixed",
471
471
  entries: bugFixed || [],
@@ -475,7 +475,7 @@ function ReleaseDetailPage({
475
475
  }
476
476
  ),
477
477
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
478
- _chunkR3TXAMMBcjs.ReleaseChangelogSection,
478
+ _chunkPCIN3YYWcjs.ReleaseChangelogSection,
479
479
  {
480
480
  title: "Improvements",
481
481
  entries: improvements || [],
@@ -506,7 +506,7 @@ function ReleaseDetailPage({
506
506
  (() => {
507
507
  const deliveryCount = deliveryData ? deliveryData.completed.length + deliveryData.inProgress.length : 0;
508
508
  return deliveryLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
509
- _chunkR3TXAMMBcjs.FadePreview,
509
+ _chunkPCIN3YYWcjs.FadePreview,
510
510
  {
511
511
  hiddenCount: deliveryCount - 1,
512
512
  collapsedHeight: 300,
@@ -518,7 +518,7 @@ function ReleaseDetailPage({
518
518
  ] }),
519
519
  (_optionalChain([githubReleases, 'optionalAccess', _9 => _9.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _10 => _10.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
520
520
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
521
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
521
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
522
522
  githubReleases && githubReleases.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-1", children: [
523
523
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3M2MFP2Ycjs.GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
524
524
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
@@ -592,7 +592,7 @@ function ReleaseDetailPage({
592
592
  // src/components/shared/product-release/release-detail-skeleton.tsx
593
593
 
594
594
  function ReleaseDetailSkeleton() {
595
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5WQPOH27cjs.DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
595
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk33RSZGYQcjs.DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
596
596
  }
597
597
 
598
598
  // src/components/shared/roadmap/use-roadmap-voting.ts
@@ -753,10 +753,10 @@ function RoadmapGridSingle({
753
753
  // `useScrollToHash` in `roadmap-view.tsx` finds the card by id
754
754
  // and scrolls.
755
755
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
756
- _chunkR3TXAMMBcjs.RoadmapCard,
756
+ _chunkPCIN3YYWcjs.RoadmapCard,
757
757
  {
758
758
  item,
759
- id: _chunkR3TXAMMBcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
759
+ id: _chunkPCIN3YYWcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
760
760
  userVote: getVote(item.id),
761
761
  onVote: (voteType) => onVote(item.id, voteType),
762
762
  isVoting: votingTasks.has(item.id)
@@ -836,7 +836,7 @@ function RoadmapGrid({
836
836
  }, [hasActiveFilters, sortedQuartersKey, isInitialized, quartersToKeepClosed]);
837
837
  if (items.length === 0) {
838
838
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
839
- _chunkXL2G2HHJcjs.EmptyState,
839
+ _chunkYMXR3AFKcjs.EmptyState,
840
840
  {
841
841
  type: "generic",
842
842
  title: "No roadmap items",
@@ -857,7 +857,7 @@ function RoadmapGrid({
857
857
  );
858
858
  }
859
859
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
860
- _chunkR3TXAMMBcjs.Accordion,
860
+ _chunkPCIN3YYWcjs.Accordion,
861
861
  {
862
862
  type: "multiple",
863
863
  value: expandedQuarters,
@@ -867,13 +867,13 @@ function RoadmapGrid({
867
867
  const itemCount = _optionalChain([itemsByQuarter, 'access', _19 => _19[quarter], 'optionalAccess', _20 => _20.length]) || 0;
868
868
  const isExpanded = expandedQuarters.includes(quarter);
869
869
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
870
- _chunkR3TXAMMBcjs.AccordionItem,
870
+ _chunkPCIN3YYWcjs.AccordionItem,
871
871
  {
872
872
  value: quarter,
873
873
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
874
874
  className: "border-0",
875
875
  children: [
876
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:h-5 [&>svg]:w-5 [&>svg]:text-ods-text-secondary [&>svg]:ml-auto [&>svg]:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
876
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:h-5 [&>svg]:w-5 [&>svg]:text-ods-text-secondary [&>svg]:ml-auto [&>svg]:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
877
877
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
878
878
  "h3",
879
879
  {
@@ -903,7 +903,7 @@ function RoadmapGrid({
903
903
  }
904
904
  )
905
905
  ] }) }),
906
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.AccordionContent, { className: "pt-4 pb-0 overflow-hidden data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
906
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.AccordionContent, { className: "pt-4 pb-0 overflow-hidden data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
907
907
  RoadmapGridSingle,
908
908
  {
909
909
  items: itemsByQuarter[quarter],
@@ -954,8 +954,8 @@ function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
954
954
 
955
955
 
956
956
  var DEFAULT_ENDPOINT2 = "/api/roadmap";
957
- var DEFAULT_SEARCH_PARAM_KEY2 = _chunkR3TXAMMBcjs.DEV_SECTION_PARAM_KEYS.search;
958
- var DEFAULT_STATUS_PARAM_KEY2 = _chunkR3TXAMMBcjs.DEV_SECTION_PARAM_KEYS.status;
957
+ var DEFAULT_SEARCH_PARAM_KEY2 = _chunkPCIN3YYWcjs.DEV_SECTION_PARAM_KEYS.search;
958
+ var DEFAULT_STATUS_PARAM_KEY2 = _chunkPCIN3YYWcjs.DEV_SECTION_PARAM_KEYS.status;
959
959
  function RoadmapView({
960
960
  endpoint = DEFAULT_ENDPOINT2,
961
961
  initialItems,
@@ -981,7 +981,7 @@ function RoadmapView({
981
981
  const items = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _21 => _21.items]), () => ( []));
982
982
  _chunkNK3M6F5Acjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkNK3M6F5Acjs.STICKY_HEADER_OFFSET_PX });
983
983
  if (error) {
984
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
984
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
985
985
  }
986
986
  if (isLoading && !data) {
987
987
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { showLeftMargin });
@@ -1038,7 +1038,7 @@ function DeliveryTable({ items, isLoading = false }) {
1038
1038
  "div",
1039
1039
  {
1040
1040
  className: "border-b border-ods-border last:border-b-0",
1041
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGYQHUJWRcjs.DeliveryRow, { item, id: _chunkR3TXAMMBcjs.devSectionAnchorId.call(void 0, "delivery", item.id) })
1041
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXLZGBSNTcjs.DeliveryRow, { item, id: _chunkPCIN3YYWcjs.devSectionAnchorId.call(void 0, "delivery", item.id) })
1042
1042
  },
1043
1043
  item.id
1044
1044
  )
@@ -1050,8 +1050,8 @@ function DeliveryTable({ items, isLoading = false }) {
1050
1050
 
1051
1051
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
1052
1052
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
1053
- var DEFAULT_SEARCH_PARAM_KEY3 = _chunkR3TXAMMBcjs.DEV_SECTION_PARAM_KEYS.search;
1054
- var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkR3TXAMMBcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1053
+ var DEFAULT_SEARCH_PARAM_KEY3 = _chunkPCIN3YYWcjs.DEV_SECTION_PARAM_KEYS.search;
1054
+ var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkPCIN3YYWcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1055
1055
  function DeliveryLists({
1056
1056
  completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
1057
1057
  inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
@@ -1112,11 +1112,11 @@ function DeliveryLists({
1112
1112
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
1113
1113
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
1114
1114
  if (error) {
1115
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1115
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1116
1116
  }
1117
1117
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-[40px]", children: [
1118
1118
  !isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1119
- _chunkXL2G2HHJcjs.EmptyState,
1119
+ _chunkYMXR3AFKcjs.EmptyState,
1120
1120
  {
1121
1121
  type: "search",
1122
1122
  title: "No tasks found",
@@ -1131,7 +1131,7 @@ function DeliveryLists({
1131
1131
  }
1132
1132
  }
1133
1133
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1134
- _chunkXL2G2HHJcjs.EmptyState,
1134
+ _chunkYMXR3AFKcjs.EmptyState,
1135
1135
  {
1136
1136
  type: "generic",
1137
1137
  title: "No tasks available",
@@ -1233,7 +1233,7 @@ function LegalDocumentPage({
1233
1233
  initialData = null,
1234
1234
  initialLastUpdatedLabel = null,
1235
1235
  apiEndpoint,
1236
- MarkdownRenderer = _chunkR3TXAMMBcjs.RichMarkdownRenderer,
1236
+ MarkdownRenderer = _chunkPCIN3YYWcjs.RichMarkdownRenderer,
1237
1237
  backButton,
1238
1238
  shell = true
1239
1239
  }) {
@@ -1243,10 +1243,10 @@ function LegalDocumentPage({
1243
1243
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _24 => _24.label]), () => ( "Back to home")),
1244
1244
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _25 => _25.href]), () => ( "/")))
1245
1245
  };
1246
- const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _26 => _26.lastSynced]) != null ? _chunkR3TXAMMBcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1246
+ const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _26 => _26.lastSynced]) != null ? _chunkPCIN3YYWcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1247
1247
  const effectiveLastUpdatedLabel = _nullishCoalesce(initialLastUpdatedLabel, () => ( fallbackLastUpdatedLabel));
1248
1248
  const subtitle = effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription;
1249
- const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkR3TXAMMBcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: [
1249
+ const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkPCIN3YYWcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: [
1250
1250
  _optionalChain([data, 'optionalAccess', _27 => _27.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-h6 text-ods-text-secondary opacity-75", children: [
1251
1251
  "Source: ",
1252
1252
  data.sourceFile
@@ -1293,7 +1293,7 @@ function LegalDocumentPage({
1293
1293
  ] })
1294
1294
  ] }) }) }) }) })
1295
1295
  ] });
1296
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR3TXAMMBcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1296
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPCIN3YYWcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1297
1297
  }
1298
1298
 
1299
1299
 
@@ -1310,4 +1310,4 @@ function LegalDocumentPage({
1310
1310
 
1311
1311
 
1312
1312
  exports.ProductReleasesView = ProductReleasesView; exports.MediaGalleryStrip = MediaGalleryStrip; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.useRoadmapVoting = useRoadmapVoting; exports.RoadmapGrid = RoadmapGrid; exports.RoadmapGridSkeleton = RoadmapGridSkeleton; exports.RoadmapView = RoadmapView; exports.DeliveryTable = DeliveryTable; exports.DeliveryLists = DeliveryLists; exports.useLegalDocs = useLegalDocs; exports.LegalDocumentPage = LegalDocumentPage;
1313
- //# sourceMappingURL=chunk-R3OCP4A7.cjs.map
1313
+ //# sourceMappingURL=chunk-7YUCTU47.cjs.map