@flamingo-stack/openframe-frontend-core 0.0.540 → 0.0.541

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 (102) hide show
  1. package/dist/{chunk-AQO2DWL2.js → chunk-2MO4NEIR.js} +2 -2
  2. package/dist/{chunk-5W4R3BUR.js → chunk-3KEAUJUU.js} +2 -2
  3. package/dist/{chunk-5ZRO72K4.cjs → chunk-4JL2WTIC.cjs} +9 -9
  4. package/dist/{chunk-5ZRO72K4.cjs.map → chunk-4JL2WTIC.cjs.map} +1 -1
  5. package/dist/{chunk-4PZEGH6E.cjs → chunk-52FXIY2M.cjs} +5 -5
  6. package/dist/{chunk-4PZEGH6E.cjs.map → chunk-52FXIY2M.cjs.map} +1 -1
  7. package/dist/{chunk-DC23N4XW.cjs → chunk-57K53PKB.cjs} +26 -26
  8. package/dist/{chunk-DC23N4XW.cjs.map → chunk-57K53PKB.cjs.map} +1 -1
  9. package/dist/{chunk-PV6L6F3T.cjs → chunk-6B6RCBVM.cjs} +87 -87
  10. package/dist/{chunk-PV6L6F3T.cjs.map → chunk-6B6RCBVM.cjs.map} +1 -1
  11. package/dist/{chunk-MKDOZF4C.js → chunk-A5USNYZA.js} +2 -2
  12. package/dist/{chunk-NQSGY5HW.js → chunk-BYKPDIVC.js} +780 -719
  13. package/dist/chunk-BYKPDIVC.js.map +1 -0
  14. package/dist/{chunk-YPTOQDCY.cjs → chunk-COZAC2RY.cjs} +4 -4
  15. package/dist/{chunk-YPTOQDCY.cjs.map → chunk-COZAC2RY.cjs.map} +1 -1
  16. package/dist/{chunk-IHGRWAUC.cjs → chunk-EVJ7DVCI.cjs} +61 -61
  17. package/dist/{chunk-IHGRWAUC.cjs.map → chunk-EVJ7DVCI.cjs.map} +1 -1
  18. package/dist/{chunk-4RXV54PY.cjs → chunk-FESVTVRZ.cjs} +11 -11
  19. package/dist/{chunk-4RXV54PY.cjs.map → chunk-FESVTVRZ.cjs.map} +1 -1
  20. package/dist/{chunk-TBMMC4GS.cjs → chunk-FUF6YX7H.cjs} +7 -7
  21. package/dist/{chunk-TBMMC4GS.cjs.map → chunk-FUF6YX7H.cjs.map} +1 -1
  22. package/dist/{chunk-XPGB6J75.js → chunk-HUXNMQD7.js} +6 -6
  23. package/dist/{chunk-F5R4IMRF.js → chunk-ITUVIG7K.js} +2 -2
  24. package/dist/{chunk-Y5TDZNWA.js → chunk-J6F4342G.js} +2 -2
  25. package/dist/{chunk-WA3IEPEY.js → chunk-JOQBVXM3.js} +2 -2
  26. package/dist/{chunk-6PBD57IZ.cjs → chunk-JWSWACXB.cjs} +14 -14
  27. package/dist/{chunk-6PBD57IZ.cjs.map → chunk-JWSWACXB.cjs.map} +1 -1
  28. package/dist/{chunk-IRTAZKWK.cjs → chunk-KJZVKS7X.cjs} +3 -3
  29. package/dist/{chunk-IRTAZKWK.cjs.map → chunk-KJZVKS7X.cjs.map} +1 -1
  30. package/dist/{chunk-IP4IZ4PB.js → chunk-KRXQVZRX.js} +5 -5
  31. package/dist/{chunk-N24ZUZZZ.cjs → chunk-NJ42DNRT.cjs} +31 -31
  32. package/dist/{chunk-N24ZUZZZ.cjs.map → chunk-NJ42DNRT.cjs.map} +1 -1
  33. package/dist/{chunk-GRU75FOX.cjs → chunk-NJ7QTEJM.cjs} +26 -26
  34. package/dist/{chunk-GRU75FOX.cjs.map → chunk-NJ7QTEJM.cjs.map} +1 -1
  35. package/dist/{chunk-VYQLCGFR.js → chunk-QZEEP2FO.js} +4 -4
  36. package/dist/{chunk-X5VMEFIA.js → chunk-RNVMGZSM.js} +2 -2
  37. package/dist/{chunk-2BKR65LQ.js → chunk-RZWZCDBG.js} +2 -2
  38. package/dist/{chunk-VUVKZBDO.js → chunk-T2NU3GZ7.js} +4 -4
  39. package/dist/{chunk-75W6ETMW.cjs → chunk-T7ZTT7TO.cjs} +66 -5
  40. package/dist/chunk-T7ZTT7TO.cjs.map +1 -0
  41. package/dist/{chunk-MXKY67SV.cjs → chunk-VKBGJGYF.cjs} +37 -37
  42. package/dist/{chunk-MXKY67SV.cjs.map → chunk-VKBGJGYF.cjs.map} +1 -1
  43. package/dist/{chunk-6WUUZ43M.js → chunk-XFYSYVXN.js} +2 -2
  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 +2 -2
  57. package/dist/components/features/index.js +1 -1
  58. package/dist/components/help-center-pages/index.cjs +22 -22
  59. package/dist/components/help-center-pages/index.js +13 -13
  60. package/dist/components/index.cjs +134 -132
  61. package/dist/components/index.cjs.map +1 -1
  62. package/dist/components/index.js +13 -11
  63. package/dist/components/index.js.map +1 -1
  64. package/dist/components/meeting-scheduler/index.cjs +34 -34
  65. package/dist/components/meeting-scheduler/index.js +3 -3
  66. package/dist/components/navigation/index.cjs +2 -2
  67. package/dist/components/navigation/index.js +1 -1
  68. package/dist/components/onboarding-guides/index.cjs +5 -5
  69. package/dist/components/onboarding-guides/index.js +4 -4
  70. package/dist/components/related-content/index.cjs +3 -3
  71. package/dist/components/related-content/index.js +2 -2
  72. package/dist/components/tickets/index.cjs +6 -6
  73. package/dist/components/tickets/index.js +5 -5
  74. package/dist/components/ui/index.cjs +4 -2
  75. package/dist/components/ui/index.cjs.map +1 -1
  76. package/dist/components/ui/index.d.ts +1 -0
  77. package/dist/components/ui/index.d.ts.map +1 -1
  78. package/dist/components/ui/index.js +3 -1
  79. package/dist/components/ui/reopen-ticket-request-modal.d.ts +33 -0
  80. package/dist/components/ui/reopen-ticket-request-modal.d.ts.map +1 -0
  81. package/dist/index.cjs +4 -2
  82. package/dist/index.cjs.map +1 -1
  83. package/dist/index.js +3 -1
  84. package/package.json +1 -1
  85. package/src/components/ui/index.ts +1 -0
  86. package/src/components/ui/reopen-ticket-request-modal.tsx +112 -0
  87. package/src/stories/ReopenTicketRequestModal.stories.tsx +90 -0
  88. package/dist/chunk-75W6ETMW.cjs.map +0 -1
  89. package/dist/chunk-NQSGY5HW.js.map +0 -1
  90. /package/dist/{chunk-AQO2DWL2.js.map → chunk-2MO4NEIR.js.map} +0 -0
  91. /package/dist/{chunk-5W4R3BUR.js.map → chunk-3KEAUJUU.js.map} +0 -0
  92. /package/dist/{chunk-MKDOZF4C.js.map → chunk-A5USNYZA.js.map} +0 -0
  93. /package/dist/{chunk-XPGB6J75.js.map → chunk-HUXNMQD7.js.map} +0 -0
  94. /package/dist/{chunk-F5R4IMRF.js.map → chunk-ITUVIG7K.js.map} +0 -0
  95. /package/dist/{chunk-Y5TDZNWA.js.map → chunk-J6F4342G.js.map} +0 -0
  96. /package/dist/{chunk-WA3IEPEY.js.map → chunk-JOQBVXM3.js.map} +0 -0
  97. /package/dist/{chunk-IP4IZ4PB.js.map → chunk-KRXQVZRX.js.map} +0 -0
  98. /package/dist/{chunk-VYQLCGFR.js.map → chunk-QZEEP2FO.js.map} +0 -0
  99. /package/dist/{chunk-X5VMEFIA.js.map → chunk-RNVMGZSM.js.map} +0 -0
  100. /package/dist/{chunk-2BKR65LQ.js.map → chunk-RZWZCDBG.js.map} +0 -0
  101. /package/dist/{chunk-VUVKZBDO.js.map → chunk-T2NU3GZ7.js.map} +0 -0
  102. /package/dist/{chunk-6WUUZ43M.js.map → chunk-XFYSYVXN.js.map} +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk75W6ETMWcjs = require('./chunk-75W6ETMW.cjs');
5
+ var _chunkT7ZTT7TOcjs = require('./chunk-T7ZTT7TO.cjs');
6
6
 
7
7
 
8
8
 
@@ -52,7 +52,7 @@ function UnifiedPagination({
52
52
  };
53
53
  if (totalPages <= 1) return null;
54
54
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
55
- _chunk75W6ETMWcjs.Pagination,
55
+ _chunkT7ZTT7TOcjs.Pagination,
56
56
  {
57
57
  currentPage,
58
58
  totalPages,
@@ -65,7 +65,7 @@ var init_unified_pagination = _chunkVRHGVLSLcjs.__esm.call(void 0, {
65
65
  "use strict";
66
66
  "use client";
67
67
  _chunkSSJNN5BScjs.init_next_navigation.call(void 0, );
68
- _chunk75W6ETMWcjs.init_pagination.call(void 0, );
68
+ _chunkT7ZTT7TOcjs.init_pagination.call(void 0, );
69
69
  }
70
70
  });
71
71
 
@@ -210,4 +210,4 @@ function EmptyState({
210
210
 
211
211
 
212
212
  exports.EmptyState = EmptyState; exports.UnifiedPagination = UnifiedPagination; exports.unified_pagination_exports = unified_pagination_exports; exports.init_unified_pagination = init_unified_pagination;
213
- //# sourceMappingURL=chunk-YPTOQDCY.cjs.map
213
+ //# sourceMappingURL=chunk-COZAC2RY.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-YPTOQDCY.cjs","../src/components/unified-pagination.tsx","../src/components/empty-state.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACA;ACpBA,IAAA,2BAAA,EAAA,CAAA,CAAA;AAAA,wCAAA,0BAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,GAAA;AAAA,CAAA,CAAA;AAqDM,+CAAA;AAzCC,SAAS,iBAAA,CAAkB;AAAA,EAChC,WAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA,EAAY;AACd,CAAA,EAA2B;AACzB,EAAA,MAAM,OAAA,EAAS,yCAAA,CAAU;AACzB,EAAA,MAAM,aAAA,EAAe,+CAAA,CAAgB;AACrC,EAAA,MAAM,SAAA,EAAW,2CAAA,CAAY;AAE7B,EAAA,MAAM,iBAAA,EAAmB,CAAC,IAAA,EAAA,GAAiB;AAEzC,IAAA,MAAM,eAAA,EAAiB,MAAA,CAAO,OAAA;AAG9B,IAAA,GAAA,CAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,IAAI,CAAA;AAAA,IACnB;AAGA,IAAA,MAAM,OAAA,EAAS,IAAI,eAAA,CAAgB,YAAA,CAAa,QAAA,CAAS,CAAC,CAAA;AAC1D,IAAA,MAAA,CAAO,GAAA,CAAI,MAAA,EAAQ,IAAA,CAAK,QAAA,CAAS,CAAC,CAAA;AAGlC,IAAA,MAAM,OAAA,EAAS,CAAA,EAAA;AACA,IAAA;AAGJ,IAAA;AACF,MAAA;AACA,QAAA;AACK,QAAA;AAAA;AACX,MAAA;AACC,IAAA;AACN,EAAA;AAGkB,EAAA;AAGhB,EAAA;AACG,IAAA;AAAA,IAAA;AACC,MAAA;AACA,MAAA;AACc,MAAA;AAAA,IAAA;AAElB,EAAA;AAEJ;AA5DA;AAAA,EAAA;AAAA,IAAA;AAAA,IAAA;AAEA,IAAA;AACA,IAAA;AAAA,EAAA;AAAA;ADmEoB;AACA;AEpEpB;AACA;AAFiB;AAqKb;AA5IuB;AACzB,EAAA;AACA,EAAA;AACA,EAAA;AACiB,EAAA;AACjB,EAAA;AACiB,EAAA;AACP,EAAA;AACV,EAAA;AACA,EAAA;AACA,EAAA;AACa,EAAA;AACK;AACH,EAAA;AAGT,EAAA;AACU,IAAA;AACP,MAAA;AACI,QAAA;AACC,UAAA;AACC,UAAA;AACP,UAAA;AACF,QAAA;AACG,MAAA;AACI,QAAA;AACC,UAAA;AACC,UAAA;AACP,UAAA;AACF,QAAA;AACG,MAAA;AACI,QAAA;AACC,UAAA;AACC,UAAA;AACP,UAAA;AACF,QAAA;AACF,MAAA;AACS,QAAA;AACC,UAAA;AACC,UAAA;AACP,UAAA;AACF,QAAA;AACJ,IAAA;AACF,EAAA;AAGM,EAAA;AAEW,IAAA;AACN,MAAA;AACC,QAAA;AACE,QAAA;AACV,MAAA;AACF,IAAA;AAGM,IAAA;AACA,IAAA;AAOA,IAAA;AACW,MAAA;AACT,MAAA;AACK,MAAA;AACL,MAAA;AAGO,MAAA;AACN,MAAA;AACK,QAAA;AACA,QAAA;AACZ,MAAA;AACF,IAAA;AAGc,IAAA;AACP,MAAA;AACI,QAAA;AACC,UAAA;AACE,UAAA;AACV,QAAA;AACG,MAAA;AAEC,QAAA;AACK,UAAA;AACC,YAAA;AACE,YAAA;AACV,UAAA;AACS,QAAA;AACF,UAAA;AACC,YAAA;AACE,YAAA;AACV,UAAA;AACF,QAAA;AACO,QAAA;AACC,UAAA;AACE,UAAA;AACV,QAAA;AACG,MAAA;AAEC,QAAA;AACK,UAAA;AACC,YAAA;AACE,YAAA;AACV,UAAA;AACS,QAAA;AACF,UAAA;AACC,YAAA;AACE,YAAA;AACV,UAAA;AACF,QAAA;AACO,QAAA;AACC,UAAA;AACE,UAAA;AACV,QAAA;AACF,MAAA;AACS,QAAA;AACC,UAAA;AACE,UAAA;AACV,QAAA;AACJ,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AACA,EAAA;AAKW,EAAA;AACX,EAAA;AAKJ,EAAA;AAEE,oBAAA;AASA,oBAAA;AAKA,oBAAA;AAKY,IAAA;AASC,IAAA;AASZ,IAAA;AAEI,MAAA;AAAA,MAAA;AACU,QAAA;AACD,QAAA;AACE,QAAA;AAET,QAAA;AAAA,MAAA;AAEL,IAAA;AAEJ,EAAA;AAEJ;AFdoB;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-YPTOQDCY.cjs","sourcesContent":[null,"\"use client\"\n\nimport { useRouter, useSearchParams, usePathname } from \"../embed-shims/next-navigation\"\nimport { Pagination } from \"./pagination\"\n\ninterface UnifiedPaginationProps {\n currentPage: number\n totalPages: number\n onPageChange?: (page: number) => void\n className?: string\n}\n\nexport function UnifiedPagination({ \n currentPage, \n totalPages, \n onPageChange,\n className = \"mt-8 flex justify-center w-full\"\n}: UnifiedPaginationProps) {\n const router = useRouter()\n const searchParams = useSearchParams()\n const pathname = usePathname()\n\n const handlePageChange = (page: number) => {\n // Preserve current scroll position\n const currentScrollY = window.scrollY\n \n // Call the callback to update local state (prevents reload)\n if (onPageChange) {\n onPageChange(page)\n }\n \n // Update URL for bookmarking without navigation\n const params = new URLSearchParams(searchParams.toString())\n params.set(\"page\", page.toString())\n \n // Update URL without navigation (for bookmarking support)\n const newUrl = `${pathname}?${params.toString()}`\n window.history.replaceState(null, '', newUrl)\n \n // Restore scroll position after a brief delay to allow content to render\n setTimeout(() => {\n window.scrollTo({\n top: currentScrollY,\n behavior: 'instant' // Instant to prevent any scroll animation\n })\n }, 0)\n }\n\n // Don't render pagination if there's only one page\n if (totalPages <= 1) return null\n\n return (\n <div className={className}>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n )\n} ","\"use client\";\n\nimport { Search, FileText, Package } from \"lucide-react\"\nimport { Button } from \"./ui/button\"\nimport { useRouter } from \"../embed-shims/next-navigation\"\n\nexport interface EmptyStateProps {\n type: 'vendors' | 'posts' | 'search' | 'generic'\n title?: string\n description?: string\n showBackButton?: boolean\n onGoBack?: () => void\n backButtonText?: string\n // New CTA properties\n showCTA?: boolean\n ctaText?: string\n onCtaClick?: () => void\n /**\n * Link-CTA mode: render the CTA as a navigation link (`href` — plain or\n * `mailto:`). Wins over `onCtaClick`, and SHORT-CIRCUITS the smart-CTA\n * path-sniffing below (which reads `window.location.pathname` — an\n * SSR/client divergence server-rendered pages must never enter).\n */\n ctaHref?: string\n ctaVariant?: 'primary' | 'secondary'\n}\n\nexport function EmptyState({\n type,\n title,\n description,\n showBackButton = false,\n onGoBack,\n backButtonText = \"Go Back\",\n showCTA = true,\n ctaText,\n onCtaClick,\n ctaHref,\n ctaVariant = 'primary'\n}: EmptyStateProps) {\n const router = useRouter()\n\n // Default content based on type\n const getDefaultContent = () => {\n switch (type) {\n case 'vendors':\n return {\n icon: <Package className=\"w-full h-full\" />,\n title: \"No vendors found\",\n description: \"We couldn't find any vendors matching your criteria. Try adjusting your filters or search terms.\"\n }\n case 'posts':\n return {\n icon: <FileText className=\"w-full h-full\" />,\n title: \"No articles found\",\n description: \"We couldn't find any articles matching your criteria. Try different categories, tags, or search terms.\"\n }\n case 'search':\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"No results found\",\n description: \"Your search didn't return any results. Try different keywords or browse our categories.\"\n }\n default:\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"Nothing found\",\n description: \"We couldn't find what you're looking for. Try adjusting your search or filters.\"\n }\n }\n }\n\n // Smart CTA logic based on context\n const getSmartCTA = () => {\n // If custom CTA is provided, use it\n if (ctaText && onCtaClick) {\n return {\n text: ctaText,\n action: onCtaClick\n }\n }\n\n // Check if we're on the client side\n const isClient = typeof window !== 'undefined'\n const currentPath = isClient ? window.location.pathname : ''\n\n // Surgical filter reset (promoted from the hub's diverged clone during\n // the EmptyState convergence): delete ONLY the filter params the surface\n // owns — nuking the whole query string threw away unrelated state — and\n // use `replace` with `scroll: false` so resetting filters neither adds a\n // history entry nor jumps the page.\n const resetParams = (paramsToDelete: string[]) => {\n if (!isClient) return\n const params = new URLSearchParams(window.location.search)\n for (const p of paramsToDelete) params.delete(p)\n const queryString = params.toString()\n // Keep the hash — a filter reset must not clear an unrelated\n // deep-link anchor (e.g. #delivery-123).\n const hash = window.location.hash\n router.replace(\n `${window.location.pathname}${queryString ? `?${queryString}` : ''}${hash}`,\n { scroll: false },\n )\n }\n\n // Smart defaults based on type and context\n switch (type) {\n case 'search':\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page'])\n }\n case 'posts':\n // Blog-style listing pages (blog, case studies) reset their filters\n if (currentPath.includes('/blog') || currentPath.includes('/case-studies')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'tags'])\n }\n } else if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n return {\n text: \"View All Posts\",\n action: () => router.push('/blog')\n }\n case 'vendors':\n // If we're in profile or other pages, direct to main content\n if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n } else if (currentPath.includes('/vendors') || currentPath.includes('/margin-increase/compare')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'subcategory'])\n }\n }\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n default:\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n }\n\n const defaultContent = getDefaultContent()\n const displayTitle = title || defaultContent.title\n const displayDescription = description || defaultContent.description\n // ctaHref short-circuits BEFORE getSmartCTA(): the smart defaults read\n // window.location.pathname (SSR-empty, client-real), so a server-rendered\n // page with a link CTA must never enter that branch. Existing callers\n // without ctaHref keep today's smart-default behavior unchanged.\n const smartCTA = ctaHref ? null : getSmartCTA()\n const ctaClassName = ctaVariant === 'primary'\n ? \"w-full bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover transition-all duration-150 font-body font-medium\"\n : \"w-full bg-transparent border border-ods-border text-ods-text-primary hover:border-ods-accent hover:text-ods-accent transition-all duration-150 font-body font-medium\"\n\n return (\n <div className=\"flex flex-col items-center justify-center py-6 md:py-16 px-6 text-center\">\n {/* Icon */}\n <div className=\"mb-3 md:mb-6 flex items-center justify-center\">\n <div className=\"rounded-full bg-ods-card p-3 md:p-6 border border-ods-border\">\n <div className=\"w-8 h-8 md:w-16 md:h-16 text-ods-text-secondary flex items-center justify-center\">\n {defaultContent.icon}\n </div>\n </div>\n </div>\n\n {/* Title */}\n <h2 className=\"mb-2 md:mb-3 text-h3 text-ods-text-primary\">\n {displayTitle}\n </h2>\n\n {/* Description */}\n <p className=\"mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary\">\n {displayDescription}\n </p>\n\n {/* Link CTA (ctaHref) — SSR-safe, no path sniffing */}\n {showCTA && ctaHref && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button href={ctaHref} className={ctaClassName}>\n {ctaText || 'Contact us'}\n </Button>\n </div>\n )}\n\n {/* Smart CTA Button */}\n {showCTA && !ctaHref && smartCTA && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button onClick={smartCTA.action} className={ctaClassName}>\n {smartCTA.text}\n </Button>\n </div>\n )}\n\n {/* Optional Back Button */}\n {showBackButton && onGoBack && (\n <div className=\"w-full max-w-xs\">\n <Button\n onClick={onGoBack}\n variant=\"outline\"\n className=\"w-full transition-all duration-150 font-body font-medium\"\n >\n {backButtonText}\n </Button>\n </div>\n )}\n </div>\n )\n} "]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-COZAC2RY.cjs","../src/components/unified-pagination.tsx","../src/components/empty-state.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-COZAC2RY.cjs","sourcesContent":[null,"\"use client\"\n\nimport { useRouter, useSearchParams, usePathname } from \"../embed-shims/next-navigation\"\nimport { Pagination } from \"./pagination\"\n\ninterface UnifiedPaginationProps {\n currentPage: number\n totalPages: number\n onPageChange?: (page: number) => void\n className?: string\n}\n\nexport function UnifiedPagination({ \n currentPage, \n totalPages, \n onPageChange,\n className = \"mt-8 flex justify-center w-full\"\n}: UnifiedPaginationProps) {\n const router = useRouter()\n const searchParams = useSearchParams()\n const pathname = usePathname()\n\n const handlePageChange = (page: number) => {\n // Preserve current scroll position\n const currentScrollY = window.scrollY\n \n // Call the callback to update local state (prevents reload)\n if (onPageChange) {\n onPageChange(page)\n }\n \n // Update URL for bookmarking without navigation\n const params = new URLSearchParams(searchParams.toString())\n params.set(\"page\", page.toString())\n \n // Update URL without navigation (for bookmarking support)\n const newUrl = `${pathname}?${params.toString()}`\n window.history.replaceState(null, '', newUrl)\n \n // Restore scroll position after a brief delay to allow content to render\n setTimeout(() => {\n window.scrollTo({\n top: currentScrollY,\n behavior: 'instant' // Instant to prevent any scroll animation\n })\n }, 0)\n }\n\n // Don't render pagination if there's only one page\n if (totalPages <= 1) return null\n\n return (\n <div className={className}>\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n />\n </div>\n )\n} ","\"use client\";\n\nimport { Search, FileText, Package } from \"lucide-react\"\nimport { Button } from \"./ui/button\"\nimport { useRouter } from \"../embed-shims/next-navigation\"\n\nexport interface EmptyStateProps {\n type: 'vendors' | 'posts' | 'search' | 'generic'\n title?: string\n description?: string\n showBackButton?: boolean\n onGoBack?: () => void\n backButtonText?: string\n // New CTA properties\n showCTA?: boolean\n ctaText?: string\n onCtaClick?: () => void\n /**\n * Link-CTA mode: render the CTA as a navigation link (`href` — plain or\n * `mailto:`). Wins over `onCtaClick`, and SHORT-CIRCUITS the smart-CTA\n * path-sniffing below (which reads `window.location.pathname` — an\n * SSR/client divergence server-rendered pages must never enter).\n */\n ctaHref?: string\n ctaVariant?: 'primary' | 'secondary'\n}\n\nexport function EmptyState({\n type,\n title,\n description,\n showBackButton = false,\n onGoBack,\n backButtonText = \"Go Back\",\n showCTA = true,\n ctaText,\n onCtaClick,\n ctaHref,\n ctaVariant = 'primary'\n}: EmptyStateProps) {\n const router = useRouter()\n\n // Default content based on type\n const getDefaultContent = () => {\n switch (type) {\n case 'vendors':\n return {\n icon: <Package className=\"w-full h-full\" />,\n title: \"No vendors found\",\n description: \"We couldn't find any vendors matching your criteria. Try adjusting your filters or search terms.\"\n }\n case 'posts':\n return {\n icon: <FileText className=\"w-full h-full\" />,\n title: \"No articles found\",\n description: \"We couldn't find any articles matching your criteria. Try different categories, tags, or search terms.\"\n }\n case 'search':\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"No results found\",\n description: \"Your search didn't return any results. Try different keywords or browse our categories.\"\n }\n default:\n return {\n icon: <Search className=\"w-full h-full\" />,\n title: \"Nothing found\",\n description: \"We couldn't find what you're looking for. Try adjusting your search or filters.\"\n }\n }\n }\n\n // Smart CTA logic based on context\n const getSmartCTA = () => {\n // If custom CTA is provided, use it\n if (ctaText && onCtaClick) {\n return {\n text: ctaText,\n action: onCtaClick\n }\n }\n\n // Check if we're on the client side\n const isClient = typeof window !== 'undefined'\n const currentPath = isClient ? window.location.pathname : ''\n\n // Surgical filter reset (promoted from the hub's diverged clone during\n // the EmptyState convergence): delete ONLY the filter params the surface\n // owns — nuking the whole query string threw away unrelated state — and\n // use `replace` with `scroll: false` so resetting filters neither adds a\n // history entry nor jumps the page.\n const resetParams = (paramsToDelete: string[]) => {\n if (!isClient) return\n const params = new URLSearchParams(window.location.search)\n for (const p of paramsToDelete) params.delete(p)\n const queryString = params.toString()\n // Keep the hash — a filter reset must not clear an unrelated\n // deep-link anchor (e.g. #delivery-123).\n const hash = window.location.hash\n router.replace(\n `${window.location.pathname}${queryString ? `?${queryString}` : ''}${hash}`,\n { scroll: false },\n )\n }\n\n // Smart defaults based on type and context\n switch (type) {\n case 'search':\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page'])\n }\n case 'posts':\n // Blog-style listing pages (blog, case studies) reset their filters\n if (currentPath.includes('/blog') || currentPath.includes('/case-studies')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'tags'])\n }\n } else if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n return {\n text: \"View All Posts\",\n action: () => router.push('/blog')\n }\n case 'vendors':\n // If we're in profile or other pages, direct to main content\n if (currentPath.includes('/profile')) {\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n } else if (currentPath.includes('/vendors') || currentPath.includes('/margin-increase/compare')) {\n return {\n text: \"Reset Filters\",\n action: () => resetParams(['search', 'page', 'category', 'subcategory'])\n }\n }\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n default:\n return {\n text: \"Browse Vendors\",\n action: () => router.push('/vendors')\n }\n }\n }\n\n const defaultContent = getDefaultContent()\n const displayTitle = title || defaultContent.title\n const displayDescription = description || defaultContent.description\n // ctaHref short-circuits BEFORE getSmartCTA(): the smart defaults read\n // window.location.pathname (SSR-empty, client-real), so a server-rendered\n // page with a link CTA must never enter that branch. Existing callers\n // without ctaHref keep today's smart-default behavior unchanged.\n const smartCTA = ctaHref ? null : getSmartCTA()\n const ctaClassName = ctaVariant === 'primary'\n ? \"w-full bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover transition-all duration-150 font-body font-medium\"\n : \"w-full bg-transparent border border-ods-border text-ods-text-primary hover:border-ods-accent hover:text-ods-accent transition-all duration-150 font-body font-medium\"\n\n return (\n <div className=\"flex flex-col items-center justify-center py-6 md:py-16 px-6 text-center\">\n {/* Icon */}\n <div className=\"mb-3 md:mb-6 flex items-center justify-center\">\n <div className=\"rounded-full bg-ods-card p-3 md:p-6 border border-ods-border\">\n <div className=\"w-8 h-8 md:w-16 md:h-16 text-ods-text-secondary flex items-center justify-center\">\n {defaultContent.icon}\n </div>\n </div>\n </div>\n\n {/* Title */}\n <h2 className=\"mb-2 md:mb-3 text-h3 text-ods-text-primary\">\n {displayTitle}\n </h2>\n\n {/* Description */}\n <p className=\"mb-4 md:mb-8 max-w-md text-h6 text-ods-text-secondary\">\n {displayDescription}\n </p>\n\n {/* Link CTA (ctaHref) — SSR-safe, no path sniffing */}\n {showCTA && ctaHref && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button href={ctaHref} className={ctaClassName}>\n {ctaText || 'Contact us'}\n </Button>\n </div>\n )}\n\n {/* Smart CTA Button */}\n {showCTA && !ctaHref && smartCTA && (\n <div className=\"w-full max-w-xs mb-3\">\n <Button onClick={smartCTA.action} className={ctaClassName}>\n {smartCTA.text}\n </Button>\n </div>\n )}\n\n {/* Optional Back Button */}\n {showBackButton && onGoBack && (\n <div className=\"w-full max-w-xs\">\n <Button\n onClick={onGoBack}\n variant=\"outline\"\n className=\"w-full transition-all duration-150 font-body font-medium\"\n >\n {backButtonText}\n </Button>\n </div>\n )}\n </div>\n )\n} "]}
@@ -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 _chunkIRTAZKWKcjs = require('./chunk-IRTAZKWK.cjs');
4
+ var _chunkKJZVKS7Xcjs = require('./chunk-KJZVKS7X.cjs');
5
5
 
6
6
 
7
- var _chunk6PBD57IZcjs = require('./chunk-6PBD57IZ.cjs');
7
+ var _chunkJWSWACXBcjs = require('./chunk-JWSWACXB.cjs');
8
8
 
9
9
 
10
- var _chunkYPTOQDCYcjs = require('./chunk-YPTOQDCY.cjs');
10
+ var _chunkCOZAC2RYcjs = require('./chunk-COZAC2RY.cjs');
11
11
 
12
12
 
13
- var _chunk4PZEGH6Ecjs = require('./chunk-4PZEGH6E.cjs');
13
+ var _chunk52FXIY2Mcjs = require('./chunk-52FXIY2M.cjs');
14
14
 
15
15
 
16
16
  var _chunk4QYUNDS3cjs = require('./chunk-4QYUNDS3.cjs');
@@ -45,7 +45,7 @@ var _chunk4QYUNDS3cjs = require('./chunk-4QYUNDS3.cjs');
45
45
 
46
46
 
47
47
 
48
- var _chunk75W6ETMWcjs = require('./chunk-75W6ETMW.cjs');
48
+ var _chunkT7ZTT7TOcjs = require('./chunk-T7ZTT7TO.cjs');
49
49
 
50
50
 
51
51
 
@@ -76,8 +76,8 @@ var _chunkKI4EGKNVcjs = require('./chunk-KI4EGKNV.cjs');
76
76
  _chunkKI4EGKNVcjs.init_cn.call(void 0, );
77
77
  var _jsxruntime = require('react/jsx-runtime');
78
78
  var DEFAULT_ENDPOINT = "/api/releases";
79
- var DEFAULT_SEARCH_PARAM_KEY = _chunk75W6ETMWcjs.DEV_SECTION_PARAM_KEYS.search;
80
- var DEFAULT_STATUS_PARAM_KEY = _chunk75W6ETMWcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
79
+ var DEFAULT_SEARCH_PARAM_KEY = _chunkT7ZTT7TOcjs.DEV_SECTION_PARAM_KEYS.search;
80
+ var DEFAULT_STATUS_PARAM_KEY = _chunkT7ZTT7TOcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
81
81
  var DEFAULT_PAGE_PARAM_KEY = "page";
82
82
  function ReleaseRow({
83
83
  release,
@@ -86,17 +86,17 @@ function ReleaseRow({
86
86
  }) {
87
87
  const runtime = _chunk7OPWSWEJcjs.useChatRuntime.call(void 0, );
88
88
  const router = _chunkSSJNN5BScjs.useRouter.call(void 0, );
89
- const cta = _chunk75W6ETMWcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
89
+ const cta = _chunkT7ZTT7TOcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
90
90
  type: "product_release",
91
91
  slug: release.slug,
92
92
  basePath,
93
93
  platforms: release.product_release_platforms
94
94
  });
95
- const { target, rel } = _chunk75W6ETMWcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
95
+ const { target, rel } = _chunkT7ZTT7TOcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
96
96
  const onClick = (e) => {
97
- if (e.defaultPrevented || _chunk75W6ETMWcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
97
+ if (e.defaultPrevented || _chunkT7ZTT7TOcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
98
98
  e.preventDefault();
99
- _chunk75W6ETMWcjs.executeNavigationImperative.call(void 0, {
99
+ _chunkT7ZTT7TOcjs.executeNavigationImperative.call(void 0, {
100
100
  runtime,
101
101
  href: cta.href,
102
102
  targetPlatform: cta.targetPlatform,
@@ -104,7 +104,7 @@ function ReleaseRow({
104
104
  });
105
105
  };
106
106
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
107
- _chunk75W6ETMWcjs.ProductReleaseCard,
107
+ _chunkT7ZTT7TOcjs.ProductReleaseCard,
108
108
  {
109
109
  size: "lg",
110
110
  title: release.title,
@@ -120,7 +120,7 @@ function ProductReleasesView({
120
120
  initialData,
121
121
  itemsPerPage = 5,
122
122
  basePath = "/releases",
123
- buildCardProps = _chunk75W6ETMWcjs.buildProductReleaseCardProps,
123
+ buildCardProps = _chunkT7ZTT7TOcjs.buildProductReleaseCardProps,
124
124
  searchParamKey = DEFAULT_SEARCH_PARAM_KEY,
125
125
  statusParamKey = DEFAULT_STATUS_PARAM_KEY,
126
126
  pageParamKey = DEFAULT_PAGE_PARAM_KEY,
@@ -158,10 +158,10 @@ function ProductReleasesView({
158
158
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
159
159
  };
160
160
  if (error) {
161
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKI4EGKNVcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
161
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKI4EGKNVcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
162
162
  }
163
163
  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,
164
- _chunkYPTOQDCYcjs.EmptyState,
164
+ _chunkCOZAC2RYcjs.EmptyState,
165
165
  {
166
166
  type: "search",
167
167
  title: "No releases found",
@@ -171,7 +171,7 @@ function ProductReleasesView({
171
171
  onCtaClick: resetFilters
172
172
  }
173
173
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
174
- _chunkYPTOQDCYcjs.EmptyState,
174
+ _chunkCOZAC2RYcjs.EmptyState,
175
175
  {
176
176
  type: "generic",
177
177
  title: "No releases available",
@@ -186,13 +186,13 @@ function ProductReleasesView({
186
186
  "div",
187
187
  {
188
188
  style: { visibility: isLoading || hasData ? "visible" : "hidden" },
189
- children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.ProductReleaseCardSkeleton, { size: "lg" }) : release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.ProductReleaseCardSkeleton, { size: "lg" })
189
+ children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.ProductReleaseCardSkeleton, { size: "lg" }) : release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.ProductReleaseCardSkeleton, { size: "lg" })
190
190
  },
191
191
  _nullishCoalesce(_optionalChain([release, 'optionalAccess', _5 => _5.id]), () => ( `slot-${i}`))
192
192
  );
193
193
  }) }),
194
194
  /* @__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,
195
- _chunkIRTAZKWKcjs.PersistentPaginationWrapper,
195
+ _chunkKJZVKS7Xcjs.PersistentPaginationWrapper,
196
196
  {
197
197
  isLoading: false,
198
198
  currentPage,
@@ -234,10 +234,10 @@ function MediaGalleryStrip({ items, className }) {
234
234
  mediaItem.id || index
235
235
  );
236
236
  }
237
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
237
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
238
238
  }) }),
239
239
  galleryImages.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
240
- _chunk75W6ETMWcjs.ImageGalleryModal,
240
+ _chunkT7ZTT7TOcjs.ImageGalleryModal,
241
241
  {
242
242
  images: galleryImages,
243
243
  isOpen: galleryOpen,
@@ -254,7 +254,7 @@ _chunkSSJNN5BScjs.init_next_navigation.call(void 0, );
254
254
 
255
255
  var _lucidereact = require('lucide-react');
256
256
 
257
- var DefaultMarkdownRenderer = _chunk75W6ETMWcjs.RichMarkdownRenderer;
257
+ var DefaultMarkdownRenderer = _chunkT7ZTT7TOcjs.RichMarkdownRenderer;
258
258
  function ReleaseDetailPage({
259
259
  authorHref,
260
260
  slug,
@@ -271,7 +271,7 @@ function ReleaseDetailPage({
271
271
  shell = true
272
272
  }) {
273
273
  const router = _chunkSSJNN5BScjs.useRouter.call(void 0, );
274
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
274
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
275
275
  const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
276
276
  const release = initialData || fetchedRelease;
277
277
  const showBackButton = backButton !== false;
@@ -315,7 +315,7 @@ function ReleaseDetailPage({
315
315
  return renderShell(
316
316
  // Match the loaded page's top offset (TitleBlock's
317
317
  // `pt-[var(--spacing-system-l)]`) so content doesn't jump on load.
318
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4PZEGH6Ecjs.DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) })
318
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk52FXIY2Mcjs.DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) })
319
319
  );
320
320
  }
321
321
  if (error || !release) {
@@ -351,7 +351,7 @@ function ReleaseDetailPage({
351
351
  const improvements = release.improvements;
352
352
  return renderShell(
353
353
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
354
- _chunk75W6ETMWcjs.PageLayout,
354
+ _chunkT7ZTT7TOcjs.PageLayout,
355
355
  {
356
356
  title: releaseTitle,
357
357
  subtitle: `Version: ${releaseVersion}`,
@@ -360,7 +360,7 @@ function ReleaseDetailPage({
360
360
  backButton: showBackButton ? { label: backLabel, onClick: () => router.push(backHref) } : void 0,
361
361
  children: [
362
362
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6 md:space-y-8", children: [
363
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.EntityTagBadges, { tags: release.product_release_tags }),
363
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.EntityTagBadges, { tags: release.product_release_tags }),
364
364
  /* @__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: [
365
365
  /* @__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: [
366
366
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary", children: releaseType.toLocaleUpperCase() }),
@@ -371,11 +371,11 @@ function ReleaseDetailPage({
371
371
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: "Release Status" })
372
372
  ] }) }),
373
373
  /* @__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: [
374
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary", children: _chunk75W6ETMWcjs.formatReleaseDate.call(void 0, releaseDate) }),
374
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary", children: _chunkT7ZTT7TOcjs.formatReleaseDate.call(void 0, releaseDate) }),
375
375
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: "Release Date" })
376
376
  ] }) }),
377
377
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
378
- _chunk75W6ETMWcjs.EntityMetadataAuthorCell,
378
+ _chunkT7ZTT7TOcjs.EntityMetadataAuthorCell,
379
379
  {
380
380
  author: _nullishCoalesce(author, () => ( { full_name: null, avatar_url: null })),
381
381
  authorHref: _optionalChain([author, 'optionalAccess', _6 => _6.full_name]) ? authorHref : void 0
@@ -393,16 +393,16 @@ function ReleaseDetailPage({
393
393
  highlightVideoThumbnail,
394
394
  title: releaseTitle,
395
395
  videoBites,
396
- bitesTitle: _chunk75W6ETMWcjs.DEFAULT_VIDEO_BITES_TITLE,
396
+ bitesTitle: _chunkT7ZTT7TOcjs.DEFAULT_VIDEO_BITES_TITLE,
397
397
  filterPublishedBites: true,
398
- bitesProfile: _chunk75W6ETMWcjs.toStripProfile.call(void 0, author),
398
+ bitesProfile: _chunkT7ZTT7TOcjs.toStripProfile.call(void 0, author),
399
399
  bitesHref: typeof release.slug === "string" ? `/releases/${release.slug}` : void 0,
400
400
  srtContent: _optionalChain([release, 'optionalAccess', _7 => _7.srt_content]),
401
401
  captionsUrl: _optionalChain([release, 'optionalAccess', _8 => _8.captionsUrl])
402
402
  }
403
403
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
404
404
  youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
405
- _chunk75W6ETMWcjs.Video,
405
+ _chunkT7ZTT7TOcjs.Video,
406
406
  {
407
407
  kind: "youtube",
408
408
  url: youtubeUrl,
@@ -411,7 +411,7 @@ function ReleaseDetailPage({
411
411
  }
412
412
  ),
413
413
  !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
414
- _chunk75W6ETMWcjs.Video,
414
+ _chunkT7ZTT7TOcjs.Video,
415
415
  {
416
416
  url: mainVideoUrl,
417
417
  srtContent: _optionalChain([release, 'optionalAccess', _9 => _9.srt_content]),
@@ -420,7 +420,7 @@ function ReleaseDetailPage({
420
420
  }
421
421
  ),
422
422
  highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
423
- _chunk75W6ETMWcjs.Video,
423
+ _chunkT7ZTT7TOcjs.Video,
424
424
  {
425
425
  url: highlightVideoUrl,
426
426
  poster: highlightVideoThumbnail,
@@ -429,7 +429,7 @@ function ReleaseDetailPage({
429
429
  )
430
430
  ] }),
431
431
  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 }) }),
432
- hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.Card, { className: "border-ods-error bg-ods-error/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
432
+ hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.Card, { className: "border-ods-error bg-ods-error/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
433
433
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: "h-6 w-6 text-ods-error" }),
434
434
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
435
435
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h3 text-ods-error", children: "Breaking Changes" }),
@@ -437,7 +437,7 @@ function ReleaseDetailPage({
437
437
  ] })
438
438
  ] }) }) }),
439
439
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
440
- _chunk75W6ETMWcjs.ReleaseChangelogSection,
440
+ _chunkT7ZTT7TOcjs.ReleaseChangelogSection,
441
441
  {
442
442
  title: "Breaking Changes",
443
443
  entries: breakingChanges || [],
@@ -448,7 +448,7 @@ function ReleaseDetailPage({
448
448
  }
449
449
  ),
450
450
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
451
- _chunk75W6ETMWcjs.ReleaseChangelogSection,
451
+ _chunkT7ZTT7TOcjs.ReleaseChangelogSection,
452
452
  {
453
453
  title: "Features Added",
454
454
  entries: featuresAdded || [],
@@ -458,7 +458,7 @@ function ReleaseDetailPage({
458
458
  }
459
459
  ),
460
460
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
461
- _chunk75W6ETMWcjs.ReleaseChangelogSection,
461
+ _chunkT7ZTT7TOcjs.ReleaseChangelogSection,
462
462
  {
463
463
  title: "Bugs Fixed",
464
464
  entries: bugFixed || [],
@@ -468,7 +468,7 @@ function ReleaseDetailPage({
468
468
  }
469
469
  ),
470
470
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
471
- _chunk75W6ETMWcjs.ReleaseChangelogSection,
471
+ _chunkT7ZTT7TOcjs.ReleaseChangelogSection,
472
472
  {
473
473
  title: "Improvements",
474
474
  entries: improvements || [],
@@ -499,7 +499,7 @@ function ReleaseDetailPage({
499
499
  (() => {
500
500
  const deliveryCount = deliveryData ? deliveryData.completed.length + deliveryData.inProgress.length : 0;
501
501
  return deliveryLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
502
- _chunk75W6ETMWcjs.FadePreview,
502
+ _chunkT7ZTT7TOcjs.FadePreview,
503
503
  {
504
504
  hiddenCount: deliveryCount - 1,
505
505
  collapsedHeight: 300,
@@ -511,7 +511,7 @@ function ReleaseDetailPage({
511
511
  ] }),
512
512
  (_optionalChain([githubReleases, 'optionalAccess', _11 => _11.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _12 => _12.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
513
513
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
514
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
514
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
515
515
  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: [
516
516
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3M2MFP2Ycjs.GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
517
517
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
@@ -585,7 +585,7 @@ function ReleaseDetailPage({
585
585
  // src/components/shared/product-release/release-detail-skeleton.tsx
586
586
 
587
587
  function ReleaseDetailSkeleton() {
588
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4PZEGH6Ecjs.DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
588
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk52FXIY2Mcjs.DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
589
589
  }
590
590
 
591
591
  // src/components/shared/roadmap/use-roadmap-voting.ts
@@ -746,10 +746,10 @@ function RoadmapGridSingle({
746
746
  // `useScrollToHash` in `roadmap-view.tsx` finds the card by id
747
747
  // and scrolls.
748
748
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
749
- _chunk75W6ETMWcjs.RoadmapCard,
749
+ _chunkT7ZTT7TOcjs.RoadmapCard,
750
750
  {
751
751
  item,
752
- id: _chunk75W6ETMWcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
752
+ id: _chunkT7ZTT7TOcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
753
753
  userVote: getVote(item.id),
754
754
  onVote: (voteType) => onVote(item.id, voteType),
755
755
  isVoting: votingTasks.has(item.id)
@@ -829,7 +829,7 @@ function RoadmapGrid({
829
829
  }, [hasActiveFilters, sortedQuartersKey, isInitialized, quartersToKeepClosed]);
830
830
  if (items.length === 0) {
831
831
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
832
- _chunkYPTOQDCYcjs.EmptyState,
832
+ _chunkCOZAC2RYcjs.EmptyState,
833
833
  {
834
834
  type: "generic",
835
835
  title: "No roadmap items",
@@ -850,7 +850,7 @@ function RoadmapGrid({
850
850
  );
851
851
  }
852
852
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
853
- _chunk75W6ETMWcjs.Accordion,
853
+ _chunkT7ZTT7TOcjs.Accordion,
854
854
  {
855
855
  type: "multiple",
856
856
  value: expandedQuarters,
@@ -860,13 +860,13 @@ function RoadmapGrid({
860
860
  const itemCount = _optionalChain([itemsByQuarter, 'access', _21 => _21[quarter], 'optionalAccess', _22 => _22.length]) || 0;
861
861
  const isExpanded = expandedQuarters.includes(quarter);
862
862
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
863
- _chunk75W6ETMWcjs.AccordionItem,
863
+ _chunkT7ZTT7TOcjs.AccordionItem,
864
864
  {
865
865
  value: quarter,
866
866
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
867
867
  className: "border-0",
868
868
  children: [
869
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.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: [
869
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.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: [
870
870
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
871
871
  "h3",
872
872
  {
@@ -896,7 +896,7 @@ function RoadmapGrid({
896
896
  }
897
897
  )
898
898
  ] }) }),
899
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.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,
899
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.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,
900
900
  RoadmapGridSingle,
901
901
  {
902
902
  items: itemsByQuarter[quarter],
@@ -947,8 +947,8 @@ function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
947
947
 
948
948
 
949
949
  var DEFAULT_ENDPOINT2 = "/api/roadmap";
950
- var DEFAULT_SEARCH_PARAM_KEY2 = _chunk75W6ETMWcjs.DEV_SECTION_PARAM_KEYS.search;
951
- var DEFAULT_STATUS_PARAM_KEY2 = _chunk75W6ETMWcjs.DEV_SECTION_PARAM_KEYS.status;
950
+ var DEFAULT_SEARCH_PARAM_KEY2 = _chunkT7ZTT7TOcjs.DEV_SECTION_PARAM_KEYS.search;
951
+ var DEFAULT_STATUS_PARAM_KEY2 = _chunkT7ZTT7TOcjs.DEV_SECTION_PARAM_KEYS.status;
952
952
  function RoadmapView({
953
953
  endpoint = DEFAULT_ENDPOINT2,
954
954
  initialItems,
@@ -974,7 +974,7 @@ function RoadmapView({
974
974
  const items = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _23 => _23.items]), () => ( []));
975
975
  _chunk5RJUHUCIcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunk5RJUHUCIcjs.STICKY_HEADER_OFFSET_PX });
976
976
  if (error) {
977
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
977
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
978
978
  }
979
979
  if (isLoading && !data) {
980
980
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { showLeftMargin });
@@ -1031,7 +1031,7 @@ function DeliveryTable({ items, isLoading = false }) {
1031
1031
  "div",
1032
1032
  {
1033
1033
  className: "border-b border-ods-border last:border-b-0",
1034
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6PBD57IZcjs.DeliveryRow, { item, id: _chunk75W6ETMWcjs.devSectionAnchorId.call(void 0, "delivery", item.id) })
1034
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJWSWACXBcjs.DeliveryRow, { item, id: _chunkT7ZTT7TOcjs.devSectionAnchorId.call(void 0, "delivery", item.id) })
1035
1035
  },
1036
1036
  item.id
1037
1037
  )
@@ -1043,8 +1043,8 @@ function DeliveryTable({ items, isLoading = false }) {
1043
1043
 
1044
1044
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
1045
1045
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
1046
- var DEFAULT_SEARCH_PARAM_KEY3 = _chunk75W6ETMWcjs.DEV_SECTION_PARAM_KEYS.search;
1047
- var DEFAULT_TASK_TYPE_PARAM_KEY = _chunk75W6ETMWcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1046
+ var DEFAULT_SEARCH_PARAM_KEY3 = _chunkT7ZTT7TOcjs.DEV_SECTION_PARAM_KEYS.search;
1047
+ var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkT7ZTT7TOcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1048
1048
  function DeliveryLists({
1049
1049
  completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
1050
1050
  inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
@@ -1105,11 +1105,11 @@ function DeliveryLists({
1105
1105
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
1106
1106
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
1107
1107
  if (error) {
1108
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1108
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1109
1109
  }
1110
1110
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-[40px]", children: [
1111
1111
  !isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1112
- _chunkYPTOQDCYcjs.EmptyState,
1112
+ _chunkCOZAC2RYcjs.EmptyState,
1113
1113
  {
1114
1114
  type: "search",
1115
1115
  title: "No tasks found",
@@ -1124,7 +1124,7 @@ function DeliveryLists({
1124
1124
  }
1125
1125
  }
1126
1126
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1127
- _chunkYPTOQDCYcjs.EmptyState,
1127
+ _chunkCOZAC2RYcjs.EmptyState,
1128
1128
  {
1129
1129
  type: "generic",
1130
1130
  title: "No tasks available",
@@ -1226,7 +1226,7 @@ function LegalDocumentPage({
1226
1226
  initialData = null,
1227
1227
  initialLastUpdatedLabel = null,
1228
1228
  apiEndpoint,
1229
- MarkdownRenderer = _chunk75W6ETMWcjs.RichMarkdownRenderer,
1229
+ MarkdownRenderer = _chunkT7ZTT7TOcjs.RichMarkdownRenderer,
1230
1230
  backButton,
1231
1231
  shell = true
1232
1232
  }) {
@@ -1236,10 +1236,10 @@ function LegalDocumentPage({
1236
1236
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _26 => _26.label]), () => ( "Back to home")),
1237
1237
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _27 => _27.href]), () => ( "/")))
1238
1238
  };
1239
- const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _28 => _28.lastSynced]) != null ? _chunk75W6ETMWcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1239
+ const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _28 => _28.lastSynced]) != null ? _chunkT7ZTT7TOcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1240
1240
  const effectiveLastUpdatedLabel = _nullishCoalesce(initialLastUpdatedLabel, () => ( fallbackLastUpdatedLabel));
1241
1241
  const subtitle = effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription;
1242
- const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk75W6ETMWcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: [
1242
+ const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkT7ZTT7TOcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: [
1243
1243
  _optionalChain([data, 'optionalAccess', _29 => _29.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-h6 text-ods-text-secondary opacity-75", children: [
1244
1244
  "Source: ",
1245
1245
  data.sourceFile
@@ -1286,7 +1286,7 @@ function LegalDocumentPage({
1286
1286
  ] })
1287
1287
  ] }) }) }) }) })
1288
1288
  ] });
1289
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk75W6ETMWcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1289
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT7ZTT7TOcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1290
1290
  }
1291
1291
 
1292
1292
 
@@ -1303,4 +1303,4 @@ function LegalDocumentPage({
1303
1303
 
1304
1304
 
1305
1305
  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;
1306
- //# sourceMappingURL=chunk-IHGRWAUC.cjs.map
1306
+ //# sourceMappingURL=chunk-EVJ7DVCI.cjs.map