@flamingo-stack/openframe-frontend-core 0.0.769 → 0.0.771

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 (167) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-MZLWB5AH.cjs → chunk-2LTJ4457.cjs} +5 -4
  3. package/dist/{chunk-D45Q3WEP.cjs → chunk-4AF5E6E5.cjs} +3 -3
  4. package/dist/{chunk-UIXWG2IW.cjs → chunk-4DMYDHCD.cjs} +24 -24
  5. package/dist/{chunk-2MND64QJ.cjs → chunk-5HBGBLJT.cjs} +50 -63
  6. package/dist/{chunk-4EJU462O.cjs → chunk-5V7BIUGA.cjs} +2 -2
  7. package/dist/{chunk-QC47HVA4.cjs → chunk-62P4Q4Q3.cjs} +72 -80
  8. package/dist/{chunk-L5WSNX4H.cjs → chunk-ALNP25TX.cjs} +713 -695
  9. package/dist/{chunk-MYA6NR2C.cjs → chunk-CTRJNTYU.cjs} +2 -2
  10. package/dist/{chunk-HQF62LAU.cjs → chunk-FPCGKH5K.cjs} +28 -28
  11. package/dist/{chunk-VVBRYOSI.cjs → chunk-FT5NPAZY.cjs} +17 -17
  12. package/dist/{chunk-BIHMMGRP.cjs → chunk-GX3JUXYX.cjs} +96 -91
  13. package/dist/{chunk-2TS3FEPQ.cjs → chunk-HFNWBNLE.cjs} +4 -4
  14. package/dist/{chunk-ZXFOMNI5.cjs → chunk-ILZEXCJH.cjs} +99 -99
  15. package/dist/{chunk-BLTNKLAX.cjs → chunk-JJNOAYD4.cjs} +4 -4
  16. package/dist/{chunk-3AZZFTT6.cjs → chunk-JPOIEEFO.cjs} +6 -6
  17. package/dist/{chunk-QS4G7CHU.cjs → chunk-KSCEAIBS.cjs} +2 -2
  18. package/dist/{chunk-IEPWXEA6.cjs → chunk-L5QJZBZK.cjs} +33 -33
  19. package/dist/{chunk-5HWBW7WU.cjs → chunk-NQ4WRB3Y.cjs} +12 -12
  20. package/dist/{chunk-GGORS7G6.cjs → chunk-REFL3YNE.cjs} +13 -13
  21. package/dist/{chunk-SV6K7ZLA.cjs → chunk-SETDVBMW.cjs} +41 -41
  22. package/dist/{chunk-YTPEJIAO.cjs → chunk-TGPHB7PC.cjs} +3 -3
  23. package/dist/{chunk-EZTHTSWZ.cjs → chunk-UG263H4A.cjs} +37 -37
  24. package/dist/{chunk-DEJB5WHZ.cjs → chunk-WT5XF66W.cjs} +24 -24
  25. package/dist/{chunk-ZVNL5OK6.cjs → chunk-X5Z4HRH7.cjs} +2 -2
  26. package/dist/{chunk-UBPSA3RM.cjs → chunk-YI3CDGKM.cjs} +70 -70
  27. package/dist/{chunk-5O6PHVKO.cjs → chunk-ZYGC2A7G.cjs} +4 -4
  28. package/dist/{cloud-tenants-3BEIT4LX.cjs → cloud-tenants-XRXWTUGP.cjs} +8 -8
  29. package/dist/components/case-studies/index.cjs +32 -30
  30. package/dist/components/case-studies/quote-cards-strip.d.ts +7 -2
  31. package/dist/components/case-studies/quote-cards-strip.d.ts.map +1 -1
  32. package/dist/components/case-studies/quote-cards-strip.js +7 -5
  33. package/dist/components/categories-cart.d.ts +9 -2
  34. package/dist/components/categories-cart.d.ts.map +1 -1
  35. package/dist/components/categories-cart.js +9 -4
  36. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts +5 -1
  37. package/dist/components/chat/entity-cards/admin-content-card-grid.d.ts.map +1 -1
  38. package/dist/components/chat/entity-cards/program-card.d.ts.map +1 -1
  39. package/dist/components/chat/entity-cards/program-card.js +2 -2
  40. package/dist/components/chat/index.cjs +5 -5
  41. package/dist/components/contact/index.cjs +9 -9
  42. package/dist/components/docs/index.cjs +12 -12
  43. package/dist/components/embeds/index.cjs +9 -9
  44. package/dist/components/faq/faq-section.d.ts +7 -4
  45. package/dist/components/faq/faq-section.d.ts.map +1 -1
  46. package/dist/components/faq/index.cjs +10 -10
  47. package/dist/components/faq-accordion.d.ts +2 -4
  48. package/dist/components/faq-accordion.d.ts.map +1 -1
  49. package/dist/components/features/capability-explorer.d.ts +8 -2
  50. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  51. package/dist/components/features/capability-explorer.js +7 -3
  52. package/dist/components/features/cards-strip.d.ts +2 -2
  53. package/dist/components/features/index.cjs +8 -8
  54. package/dist/components/features/model-token-rates.js +2 -2
  55. package/dist/components/features/remote-session/remote-desktop-chat-panel.js +2 -2
  56. package/dist/components/help-center-pages/index.cjs +94 -103
  57. package/dist/components/help-center-pages/trust-center-page.d.ts +1 -1
  58. package/dist/components/help-center-pages/trust-center-sections.d.ts +7 -4
  59. package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
  60. package/dist/components/help-center-pages/trust-center-sections.js +5 -14
  61. package/dist/components/index.cjs +66 -61
  62. package/dist/components/logs-list.d.ts.map +1 -1
  63. package/dist/components/logs-list.js +3 -2
  64. package/dist/components/meeting-scheduler/index.cjs +47 -47
  65. package/dist/components/navigation/index.cjs +11 -11
  66. package/dist/components/navigation/multi-level-navigation.d.ts +6 -7
  67. package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -1
  68. package/dist/components/onboarding-guides/index.cjs +11 -11
  69. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +5 -5
  70. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
  71. package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.js +3 -3
  72. package/dist/components/product-demo/index.cjs +18 -18
  73. package/dist/components/related-content/index.cjs +5 -5
  74. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  75. package/dist/components/related-content/related-content-section.js +4 -17
  76. package/dist/components/shared/dev-section/dev-card-row.d.ts +3 -3
  77. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  78. package/dist/components/shared/product-release/release-detail-page.js +2 -2
  79. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts +6 -1
  80. package/dist/components/shared/roadmap/roadmap-grid-skeleton.d.ts.map +1 -1
  81. package/dist/components/shared/roadmap/roadmap-grid-skeleton.js +4 -2
  82. package/dist/components/shared/roadmap/roadmap-grid.d.ts +10 -3
  83. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  84. package/dist/components/shared/roadmap/roadmap-grid.js +12 -8
  85. package/dist/components/tickets/help-center-list.js +4 -4
  86. package/dist/components/tickets/hooks/use-tickets-list.d.ts +2 -0
  87. package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
  88. package/dist/components/tickets/hooks/use-tickets-list.js +3 -2
  89. package/dist/components/tickets/index.cjs +14 -14
  90. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  91. package/dist/components/tickets/ticket-center.js +3 -9
  92. package/dist/components/ui/autocomplete.d.ts +5 -0
  93. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  94. package/dist/components/ui/autocomplete.js +3 -2
  95. package/dist/components/ui/data-table/data-table-body.d.ts +5 -2
  96. package/dist/components/ui/data-table/data-table-body.d.ts.map +1 -1
  97. package/dist/components/ui/data-table/data-table-body.js +3 -1
  98. package/dist/components/ui/data-table/data-table-infinite-footer.d.ts +5 -2
  99. package/dist/components/ui/data-table/data-table-infinite-footer.d.ts.map +1 -1
  100. package/dist/components/ui/data-table/data-table-infinite-footer.js +5 -2
  101. package/dist/components/ui/data-table/utils.d.ts +21 -0
  102. package/dist/components/ui/data-table/utils.d.ts.map +1 -1
  103. package/dist/components/ui/data-table/utils.js +7 -0
  104. package/dist/components/ui/index.cjs +8 -8
  105. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  106. package/dist/components/ui/markdown/engine.js +1 -1
  107. package/dist/components/ui/search-input.d.ts +3 -1
  108. package/dist/components/ui/search-input.d.ts.map +1 -1
  109. package/dist/components/ui/search-input.js +3 -2
  110. package/dist/components/ui/searchable-select.d.ts +2 -0
  111. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  112. package/dist/components/ui/searchable-select.js +10 -6
  113. package/dist/components/ui/table/table-skeleton.d.ts +2 -2
  114. package/dist/components/ui/table/table.d.ts +1 -1
  115. package/dist/components/ui/table/table.d.ts.map +1 -1
  116. package/dist/components/ui/table/table.js +2 -1
  117. package/dist/components/ui/table/types.d.ts +1 -0
  118. package/dist/components/ui/table/types.d.ts.map +1 -1
  119. package/dist/{devices-ZCOK24D4.cjs → devices-L4ER34X7.cjs} +9 -9
  120. package/dist/{embeddable-chat-BXEK3SPJ.cjs → embeddable-chat-CEAP424I.cjs} +73 -73
  121. package/dist/index.cjs +15 -14
  122. package/dist/{knowledge-W47QGTEK.cjs → knowledge-PZYA65GL.cjs} +9 -9
  123. package/dist/{logs-3DMPE2TM.cjs → logs-GYTZWHDP.cjs} +16 -16
  124. package/dist/{policies-UWHW765K.cjs → policies-OIK7NWJ7.cjs} +12 -12
  125. package/dist/{remote-session-WVORQV7V.cjs → remote-session-3HFVODOT.cjs} +4 -4
  126. package/dist/{scripts-BH7V2ZC4.cjs → scripts-K4L3STNZ.cjs} +15 -15
  127. package/dist/{software-update-W6AAGJ2H.cjs → software-update-RWV2RI5C.cjs} +12 -12
  128. package/dist/types/category.d.ts +5 -0
  129. package/dist/types/category.d.ts.map +1 -1
  130. package/dist/types/logs.types.d.ts +2 -0
  131. package/dist/types/logs.types.d.ts.map +1 -1
  132. package/package.json +1 -1
  133. package/src/components/case-studies/quote-cards-strip.tsx +16 -7
  134. package/src/components/categories-cart.tsx +16 -5
  135. package/src/components/chat/entity-cards/admin-content-card-grid.tsx +5 -1
  136. package/src/components/chat/entity-cards/program-card.tsx +6 -3
  137. package/src/components/faq/faq-section.tsx +7 -4
  138. package/src/components/faq-accordion.tsx +2 -4
  139. package/src/components/features/capability-explorer.tsx +16 -4
  140. package/src/components/features/cards-strip.tsx +3 -3
  141. package/src/components/features/model-token-rates.tsx +4 -4
  142. package/src/components/features/remote-session/remote-desktop-chat-panel.tsx +4 -4
  143. package/src/components/help-center-pages/trust-center-page.tsx +1 -1
  144. package/src/components/help-center-pages/trust-center-sections.tsx +15 -22
  145. package/src/components/logs-list.tsx +6 -5
  146. package/src/components/navigation/multi-level-navigation.tsx +6 -7
  147. package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +6 -6
  148. package/src/components/related-content/related-content-section.tsx +6 -27
  149. package/src/components/shared/dev-section/dev-card-row.tsx +3 -3
  150. package/src/components/shared/product-release/release-detail-page.tsx +2 -2
  151. package/src/components/shared/roadmap/roadmap-grid-skeleton.tsx +11 -3
  152. package/src/components/shared/roadmap/roadmap-grid.tsx +27 -13
  153. package/src/components/tickets/help-center-list.tsx +4 -4
  154. package/src/components/tickets/hooks/use-tickets-list.ts +3 -2
  155. package/src/components/tickets/ticket-center.tsx +4 -13
  156. package/src/components/ui/autocomplete.tsx +12 -3
  157. package/src/components/ui/data-table/data-table-body.tsx +8 -2
  158. package/src/components/ui/data-table/data-table-infinite-footer.tsx +10 -3
  159. package/src/components/ui/data-table/utils.ts +18 -0
  160. package/src/components/ui/markdown/engine.tsx +6 -1
  161. package/src/components/ui/search-input.tsx +9 -3
  162. package/src/components/ui/searchable-select.tsx +18 -9
  163. package/src/components/ui/table/table-skeleton.tsx +2 -2
  164. package/src/components/ui/table/table.tsx +4 -1
  165. package/src/components/ui/table/types.ts +2 -1
  166. package/src/types/category.ts +5 -0
  167. package/src/types/logs.types.ts +2 -0
@@ -4,15 +4,15 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkDEJB5WHZcjs = require('./chunk-DEJB5WHZ.cjs');
7
+ var _chunkWT5XF66Wcjs = require('./chunk-WT5XF66W.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunkBLTNKLAXcjs = require('./chunk-BLTNKLAX.cjs');
11
+ var _chunkJJNOAYD4cjs = require('./chunk-JJNOAYD4.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkGGORS7G6cjs = require('./chunk-GGORS7G6.cjs');
15
+ var _chunkREFL3YNEcjs = require('./chunk-REFL3YNE.cjs');
16
16
 
17
17
 
18
18
 
@@ -26,10 +26,10 @@ var _chunkGGORS7G6cjs = require('./chunk-GGORS7G6.cjs');
26
26
 
27
27
 
28
28
 
29
- var _chunkL5WSNX4Hcjs = require('./chunk-L5WSNX4H.cjs');
29
+ var _chunkALNP25TXcjs = require('./chunk-ALNP25TX.cjs');
30
30
 
31
31
 
32
- var _chunkMZLWB5AHcjs = require('./chunk-MZLWB5AH.cjs');
32
+ var _chunk2LTJ4457cjs = require('./chunk-2LTJ4457.cjs');
33
33
 
34
34
 
35
35
 
@@ -38,12 +38,12 @@ var _chunkXVFM6SJAcjs = require('./chunk-XVFM6SJA.cjs');
38
38
 
39
39
 
40
40
 
41
- var _chunkUBPSA3RMcjs = require('./chunk-UBPSA3RM.cjs');
41
+ var _chunkYI3CDGKMcjs = require('./chunk-YI3CDGKM.cjs');
42
42
 
43
43
 
44
44
 
45
45
 
46
- var _chunkZXFOMNI5cjs = require('./chunk-ZXFOMNI5.cjs');
46
+ var _chunkILZEXCJHcjs = require('./chunk-ILZEXCJH.cjs');
47
47
 
48
48
 
49
49
  var _chunkEWCFJLNUcjs = require('./chunk-EWCFJLNU.cjs');
@@ -58,7 +58,7 @@ var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
58
58
 
59
59
 
60
60
 
61
- var _chunkHQF62LAUcjs = require('./chunk-HQF62LAU.cjs');
61
+ var _chunkFPCGKH5Kcjs = require('./chunk-FPCGKH5K.cjs');
62
62
 
63
63
 
64
64
 
@@ -75,7 +75,7 @@ var _chunkHQF62LAUcjs = require('./chunk-HQF62LAU.cjs');
75
75
 
76
76
 
77
77
 
78
- var _chunk4EJU462Ocjs = require('./chunk-4EJU462O.cjs');
78
+ var _chunk5V7BIUGAcjs = require('./chunk-5V7BIUGA.cjs');
79
79
 
80
80
 
81
81
 
@@ -109,8 +109,8 @@ var _chunk65VVJSQZcjs = require('./chunk-65VVJSQZ.cjs');
109
109
  var _jsxruntime = require('react/jsx-runtime');
110
110
  var DEFAULT_ENDPOINT = "/api/releases";
111
111
  var PAGER_ROW_CLASS = "flex w-full justify-center";
112
- var DEFAULT_SEARCH_PARAM_KEY = _chunkUBPSA3RMcjs.DEV_SECTION_PARAM_KEYS.search;
113
- var DEFAULT_STATUS_PARAM_KEY = _chunkUBPSA3RMcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
112
+ var DEFAULT_SEARCH_PARAM_KEY = _chunkYI3CDGKMcjs.DEV_SECTION_PARAM_KEYS.search;
113
+ var DEFAULT_STATUS_PARAM_KEY = _chunkYI3CDGKMcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
114
114
  var DEFAULT_PAGE_PARAM_KEY = "page";
115
115
  function ReleaseRow({
116
116
  release,
@@ -119,17 +119,17 @@ function ReleaseRow({
119
119
  }) {
120
120
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
121
121
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
122
- const cta = _chunkUBPSA3RMcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
122
+ const cta = _chunkYI3CDGKMcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
123
123
  type: "product_release",
124
124
  slug: release.slug,
125
125
  basePath,
126
126
  platforms: release.product_release_platforms
127
127
  });
128
- const { target, rel } = _chunk4EJU462Ocjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
128
+ const { target, rel } = _chunk5V7BIUGAcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
129
129
  const onClick = (e) => {
130
- if (e.defaultPrevented || _chunk4EJU462Ocjs.isModifierClick.call(void 0, e) || target === "_blank") return;
130
+ if (e.defaultPrevented || _chunk5V7BIUGAcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
131
131
  e.preventDefault();
132
- _chunkZXFOMNI5cjs.executeNavigationImperative.call(void 0, {
132
+ _chunkILZEXCJHcjs.executeNavigationImperative.call(void 0, {
133
133
  runtime,
134
134
  href: cta.href,
135
135
  targetPlatform: cta.targetPlatform,
@@ -137,7 +137,7 @@ function ReleaseRow({
137
137
  });
138
138
  };
139
139
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
140
- _chunkHQF62LAUcjs.ProductReleaseCard,
140
+ _chunkFPCGKH5Kcjs.ProductReleaseCard,
141
141
  {
142
142
  size: "lg",
143
143
  title: release.title,
@@ -153,7 +153,7 @@ function ProductReleasesView({
153
153
  initialData,
154
154
  itemsPerPage = 5,
155
155
  basePath = "/releases",
156
- buildCardProps = _chunk4EJU462Ocjs.buildProductReleaseCardProps,
156
+ buildCardProps = _chunk5V7BIUGAcjs.buildProductReleaseCardProps,
157
157
  searchParamKey = DEFAULT_SEARCH_PARAM_KEY,
158
158
  statusParamKey = DEFAULT_STATUS_PARAM_KEY,
159
159
  pageParamKey = DEFAULT_PAGE_PARAM_KEY,
@@ -175,11 +175,11 @@ function ProductReleasesView({
175
175
  isLoading: fetching,
176
176
  error,
177
177
  reload
178
- } = _chunkHQF62LAUcjs.useSelfFetch.call(void 0, inScope ? null : `${endpoint}?${listParams.toString()}`, {
178
+ } = _chunkFPCGKH5Kcjs.useSelfFetch.call(void 0, inScope ? null : `${endpoint}?${listParams.toString()}`, {
179
179
  initialData
180
180
  });
181
181
  const isLoading = inScope || fetching;
182
- _chunkDEJB5WHZcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _3 => _3.sync]), isLoading && !data);
182
+ _chunkWT5XF66Wcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _3 => _3.sync]), isLoading && !data);
183
183
  const releases = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _4 => _4.data]), () => ( []));
184
184
  const totalCount = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _5 => _5.count]), () => ( 0));
185
185
  const totalPages = _chunkBLH2SFOOcjs.pageCount.call(void 0, totalCount, itemsPerPage);
@@ -198,10 +198,10 @@ function ProductReleasesView({
198
198
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
199
199
  };
200
200
  if (error) {
201
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
201
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
202
202
  }
203
203
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "flex w-full 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: "flex h-[600px] items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
204
- _chunkDEJB5WHZcjs.ListEmptyState,
204
+ _chunkWT5XF66Wcjs.ListEmptyState,
205
205
  {
206
206
  isFiltered: hasActiveFilters,
207
207
  filtered: {
@@ -222,14 +222,14 @@ function ProductReleasesView({
222
222
  style: { visibility: isLoading || hasData ? "visible" : "hidden" },
223
223
  children: !isLoading && release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : (
224
224
  // Read, or a hidden slot past the page's last release: the card draws its own skeleton.
225
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQF62LAUcjs.ProductReleaseCard, { loading: true, size: "lg", title: "", version: "", formattedDate: "" })
225
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFPCGKH5Kcjs.ProductReleaseCard, { loading: true, size: "lg", title: "", version: "", formattedDate: "" })
226
226
  )
227
227
  },
228
228
  _nullishCoalesce(_optionalChain([release, 'optionalAccess', _6 => _6.id]), () => ( `slot-${i}`))
229
229
  );
230
230
  }) }),
231
231
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-6 flex justify-center content-md:mt-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
232
- _chunkBLTNKLAXcjs.UnifiedPagination,
232
+ _chunkJJNOAYD4cjs.UnifiedPagination,
233
233
  {
234
234
  loading: isLoading,
235
235
  currentPage,
@@ -287,10 +287,10 @@ function MediaGalleryStrip({ items, className }) {
287
287
  mediaItem.id || index
288
288
  );
289
289
  }
290
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
290
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
291
291
  }) }),
292
292
  galleryImages.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
293
- _chunk4EJU462Ocjs.ImageGalleryModal,
293
+ _chunk5V7BIUGAcjs.ImageGalleryModal,
294
294
  {
295
295
  images: galleryImages,
296
296
  isOpen: galleryOpen,
@@ -314,13 +314,13 @@ function MediaGalleryStripSkeleton({
314
314
  var _lucidereact = require('lucide-react');
315
315
 
316
316
 
317
- var DefaultMarkdownRenderer = _chunkL5WSNX4Hcjs.RichMarkdownRenderer;
317
+ var DefaultMarkdownRenderer = _chunkALNP25TXcjs.RichMarkdownRenderer;
318
318
  var CONTENT_STACK_CLASS = "space-y-6 content-md:space-y-8";
319
319
  var RELEASE_TITLE_SKELETON_LINES = { phone: 7, md: 4, lg: 2 };
320
320
  var METADATA_GRID_CLASS = "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border content-md:grid-cols-4";
321
321
  var METADATA_CELL_EDGE_CLASS = "border-b border-ods-border bg-ods-card content-md:border-b-0 content-md:border-r";
322
322
  var SUMMARY_CLASS = "text-ods-text-primary text-h4";
323
- var RELEASE_TAG_ROW_FOLD = 3;
323
+ var RELEASE_TAG_ROW_MAX = 3;
324
324
  var RELEASE_TAG_SKELETON_WIDTH_CLASS = "w-[10ch]";
325
325
  var RELEASE_TYPE_LABEL = "Release Type";
326
326
  var RELEASE_STATUS_LABEL = "Release Status";
@@ -363,14 +363,14 @@ function ReleaseDetailPage({
363
363
  shell = true
364
364
  }) {
365
365
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
366
- const captions = _chunkZXFOMNI5cjs.useCaptions.call(void 0, );
367
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
366
+ const captions = _chunkILZEXCJHcjs.useCaptions.call(void 0, );
367
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
368
368
  const seed = initialData == null ? void 0 : initialData;
369
369
  const {
370
370
  data: release,
371
371
  isLoading,
372
372
  error
373
- } = _chunkHQF62LAUcjs.useSelfFetch.call(void 0, slug ? `${endpoint}/${encodeURIComponent(slug)}` : null, {
373
+ } = _chunkFPCGKH5Kcjs.useSelfFetch.call(void 0, slug ? `${endpoint}/${encodeURIComponent(slug)}` : null, {
374
374
  initialData: seed
375
375
  });
376
376
  const showBackButton = backButton !== false;
@@ -457,7 +457,7 @@ function ReleaseDetailPage({
457
457
  const bugFixed = view.bugs_fixed;
458
458
  const improvements = view.improvements;
459
459
  const page = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
460
- _chunkMZLWB5AHcjs.PageLayout,
460
+ _chunk2LTJ4457cjs.PageLayout,
461
461
  {
462
462
  title: releaseTitle,
463
463
  subtitle: loading ? void 0 : `Version: ${releaseVersion}`,
@@ -470,16 +470,16 @@ function ReleaseDetailPage({
470
470
  children: [
471
471
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: CONTENT_STACK_CLASS, children: [
472
472
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
473
- _chunkL5WSNX4Hcjs.EntityTagBadges,
473
+ _chunkALNP25TXcjs.EntityTagBadges,
474
474
  {
475
475
  tags: view.product_release_tags,
476
- max: RELEASE_TAG_ROW_FOLD,
476
+ max: RELEASE_TAG_ROW_MAX,
477
477
  skeletonItemClassName: RELEASE_TAG_SKELETON_WIDTH_CLASS
478
478
  }
479
479
  ),
480
480
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: METADATA_GRID_CLASS, children: [
481
481
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
482
- _chunk4EJU462Ocjs.EntityMetadataValueCell,
482
+ _chunk5V7BIUGAcjs.EntityMetadataValueCell,
483
483
  {
484
484
  value: releaseType,
485
485
  label: RELEASE_TYPE_LABEL,
@@ -487,7 +487,7 @@ function ReleaseDetailPage({
487
487
  }
488
488
  ),
489
489
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
490
- _chunk4EJU462Ocjs.EntityMetadataValueCell,
490
+ _chunk5V7BIUGAcjs.EntityMetadataValueCell,
491
491
  {
492
492
  value: releaseStatus,
493
493
  label: RELEASE_STATUS_LABEL,
@@ -495,16 +495,16 @@ function ReleaseDetailPage({
495
495
  }
496
496
  ),
497
497
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
498
- _chunk4EJU462Ocjs.EntityMetadataValueCell,
498
+ _chunk5V7BIUGAcjs.EntityMetadataValueCell,
499
499
  {
500
- value: releaseDate ? _chunk4EJU462Ocjs.formatReleaseDate.call(void 0, releaseDate) : "",
500
+ value: releaseDate ? _chunk5V7BIUGAcjs.formatReleaseDate.call(void 0, releaseDate) : "",
501
501
  label: RELEASE_DATE_LABEL,
502
502
  className: METADATA_CELL_EDGE_CLASS,
503
503
  uppercase: false
504
504
  }
505
505
  ),
506
506
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
507
- _chunk4EJU462Ocjs.EntityMetadataAuthorCell,
507
+ _chunk5V7BIUGAcjs.EntityMetadataAuthorCell,
508
508
  {
509
509
  author: _nullishCoalesce(author, () => ( { full_name: null, avatar_url: null })),
510
510
  authorHref: _optionalChain([author, 'optionalAccess', _9 => _9.full_name]) ? authorHref : void 0
@@ -522,18 +522,18 @@ function ReleaseDetailPage({
522
522
  highlightVideoThumbnail,
523
523
  title: releaseTitle,
524
524
  videoBites,
525
- bitesTitle: _chunk4EJU462Ocjs.DEFAULT_VIDEO_BITES_TITLE,
525
+ bitesTitle: _chunk5V7BIUGAcjs.DEFAULT_VIDEO_BITES_TITLE,
526
526
  filterPublishedBites: true,
527
- bitesProfile: _chunk4EJU462Ocjs.toStripProfile.call(void 0, author),
527
+ bitesProfile: _chunk5V7BIUGAcjs.toStripProfile.call(void 0, author),
528
528
  bitesHref: typeof view.slug === "string" ? `/releases/${view.slug}` : void 0,
529
529
  captionsUrl,
530
530
  highlightCaptionsUrl
531
531
  }
532
532
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
533
- youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.Video, { kind: "youtube", url: youtubeUrl, title: `${releaseTitle} - Video`, layout: "native" }),
534
- !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.Video, { url: mainVideoUrl, captionsUrl, layout: "centered" }),
533
+ youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.Video, { kind: "youtube", url: youtubeUrl, title: `${releaseTitle} - Video`, layout: "native" }),
534
+ !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.Video, { url: mainVideoUrl, captionsUrl, layout: "centered" }),
535
535
  highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
536
- _chunk4EJU462Ocjs.Video,
536
+ _chunk5V7BIUGAcjs.Video,
537
537
  {
538
538
  url: highlightVideoUrl,
539
539
  poster: highlightVideoThumbnail,
@@ -543,7 +543,7 @@ function ReleaseDetailPage({
543
543
  )
544
544
  ] }) }),
545
545
  releaseContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-primary text-h4", "data-loading-optional": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: releaseContent }) }),
546
- hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.Card, { className: "border-ods-error bg-ods-error/10", "data-loading-optional": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
546
+ hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.Card, { className: "border-ods-error bg-ods-error/10", "data-loading-optional": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
547
547
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: "h-6 w-6 text-ods-error" }),
548
548
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
549
549
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-ods-error text-h3", children: "Breaking Changes" }),
@@ -551,7 +551,7 @@ function ReleaseDetailPage({
551
551
  ] })
552
552
  ] }) }) }),
553
553
  loading ? null : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
554
- _chunkL5WSNX4Hcjs.ReleaseChangelogSection,
554
+ _chunkALNP25TXcjs.ReleaseChangelogSection,
555
555
  {
556
556
  title: "Breaking Changes",
557
557
  entries: breakingChanges || [],
@@ -563,7 +563,7 @@ function ReleaseDetailPage({
563
563
  }
564
564
  ),
565
565
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
566
- _chunkL5WSNX4Hcjs.ReleaseChangelogSection,
566
+ _chunkALNP25TXcjs.ReleaseChangelogSection,
567
567
  {
568
568
  title: "Features Added",
569
569
  entries: featuresAdded || [],
@@ -573,7 +573,7 @@ function ReleaseDetailPage({
573
573
  }
574
574
  ),
575
575
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
576
- _chunkL5WSNX4Hcjs.ReleaseChangelogSection,
576
+ _chunkALNP25TXcjs.ReleaseChangelogSection,
577
577
  {
578
578
  title: "Bugs Fixed",
579
579
  entries: bugFixed || [],
@@ -583,7 +583,7 @@ function ReleaseDetailPage({
583
583
  }
584
584
  ),
585
585
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
586
- _chunkL5WSNX4Hcjs.ReleaseChangelogSection,
586
+ _chunkALNP25TXcjs.ReleaseChangelogSection,
587
587
  {
588
588
  title: "Improvements",
589
589
  entries: improvements || [],
@@ -612,9 +612,9 @@ function ReleaseDetailPage({
612
612
  return deliveryLoading ? (
613
613
  // The loaded preview's frame, its height written into the markup (`fixedHeight`), so the tables'
614
614
  // loading state takes the collapsed preview's place, toggle row included. Inert: nothing to open yet.
615
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { inert: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.FadePreview, { fixedHeight: true, collapsedHeight: DELIVERY_PREVIEW_HEIGHT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DELIVERY_TABLES_STACK_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) }) }) })
615
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { inert: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.FadePreview, { fixedHeight: true, collapsedHeight: DELIVERY_PREVIEW_HEIGHT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: DELIVERY_TABLES_STACK_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) }) }) })
616
616
  ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
617
- _chunkL5WSNX4Hcjs.FadePreview,
617
+ _chunkALNP25TXcjs.FadePreview,
618
618
  {
619
619
  hiddenCount: deliveryCount - 1,
620
620
  collapsedHeight: DELIVERY_PREVIEW_HEIGHT,
@@ -626,7 +626,7 @@ function ReleaseDetailPage({
626
626
  ] }),
627
627
  (_optionalChain([githubReleases, 'optionalAccess', _10 => _10.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _11 => _11.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full space-y-1", "data-loading-optional": true, children: [
628
628
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "tracking-[-0.28px] text-ods-text-secondary text-h5", children: "Related Links" }),
629
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.Card, { className: "border-ods-border bg-ods-card p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
629
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.Card, { className: "border-ods-border bg-ods-card p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
630
630
  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: [
631
631
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEWCFJLNUcjs.GithubClassicIcon, { className: "shrink-0", size: 24, color: "var(--color-text-secondary)" }),
632
632
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: "Github Release" }),
@@ -704,13 +704,14 @@ function ReleaseDetailPage({
704
704
  function roadmapGridClass(columns, showLeftMargin) {
705
705
  return `grid grid-cols-1 gap-6 ${columns === 2 ? "content-md:grid-cols-2" : ""} ${showLeftMargin ? "content-md:ml-[120px]" : ""}`;
706
706
  }
707
+ var ROADMAP_GRID_SKELETON_CARDS = 4;
707
708
  function RoadmapGridSkeleton({
708
709
  region = true,
709
- count = 4,
710
+ count = ROADMAP_GRID_SKELETON_CARDS,
710
711
  showLeftMargin = true,
711
712
  columns = 2
712
713
  }) {
713
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { label: "Loading the roadmap", announce: region, className: roadmapGridClass(columns, showLeftMargin), children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4EJU462Ocjs.RoadmapCardSkeleton, {}, i)) });
714
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { label: "Loading the roadmap", announce: region, className: roadmapGridClass(columns, showLeftMargin), children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", "data-loading-item": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5V7BIUGAcjs.RoadmapCardSkeleton, {}) }, i)) });
714
715
  }
715
716
 
716
717
  // src/components/shared/roadmap/use-roadmap-voting.ts
@@ -733,7 +734,7 @@ function useRoadmapVoting(options = {}) {
733
734
  const { getSignals } = _chunkXVFM6SJAcjs.useHumanitySignals.call(void 0, );
734
735
  const [votes, setVotes] = _react.useState.call(void 0, NO_VOTES);
735
736
  const [loadedKey, setLoadedKey] = _react.useState.call(void 0, null);
736
- const hydrated = _chunkZXFOMNI5cjs.useIsHydrated.call(void 0, );
737
+ const hydrated = _chunkILZEXCJHcjs.useIsHydrated.call(void 0, );
737
738
  if (hydrated && loadedKey !== storageKey) {
738
739
  setLoadedKey(storageKey);
739
740
  setVotes(readStoredVotes(storageKey));
@@ -874,17 +875,17 @@ function RoadmapGridSingle({
874
875
  // `buildDevSectionUrl('roadmap', <id>)` → `#roadmap-<external_id>`;
875
876
  // `useScrollToHash` in `roadmap-view.tsx` finds the card by id
876
877
  // and scrolls.
877
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
878
- _chunk4EJU462Ocjs.RoadmapCard,
878
+ // `data-loading-item`: how many items a quarter holds is read data (the loading-state gate measures it as a list).
879
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", "data-loading-item": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
880
+ _chunk5V7BIUGAcjs.RoadmapCard,
879
881
  {
880
882
  item,
881
- id: _chunkUBPSA3RMcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
883
+ id: _chunkYI3CDGKMcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
882
884
  userVote: getVote(item.id),
883
885
  onVote: (voteType) => onVote(item.id, voteType),
884
886
  isVoting: votingTasks.has(item.id)
885
- },
886
- item.id
887
- )
887
+ }
888
+ ) }, item.id)
888
889
  )) });
889
890
  }
890
891
  var QUARTER_LIST_CLASS = "flex flex-col gap-10";
@@ -893,14 +894,15 @@ var QUARTER_CONTENT_CLASS = "pt-4";
893
894
  var QUARTER_CONTENT_INNER_CLASS = "pb-4";
894
895
  function RoadmapGridQuarterSkeleton({
895
896
  showLeftMargin = true,
896
- columns = 2
897
+ columns = 2,
898
+ count
897
899
  }) {
898
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: QUARTER_LIST_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
900
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: QUARTER_LIST_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", "data-loading-item": true, children: [
899
901
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: QUARTER_HEAD_CLASS, children: [
900
902
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h2", className: "w-40" }),
901
903
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXFRBEXQNcjs.TextLineSkeleton, { type: "h6", className: "w-16" })
902
904
  ] }),
903
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: QUARTER_CONTENT_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: QUARTER_CONTENT_INNER_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { region: false, showLeftMargin, columns }) }) })
905
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: QUARTER_CONTENT_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: QUARTER_CONTENT_INNER_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { region: false, count, showLeftMargin, columns }) }) })
904
906
  ] }) });
905
907
  }
906
908
  function RoadmapGrid({
@@ -914,8 +916,10 @@ function RoadmapGrid({
914
916
  hasActiveFilters = false,
915
917
  quartersToKeepClosed = 2,
916
918
  isLoading = false,
919
+ skeletonCount,
917
920
  fold
918
921
  }) {
922
+ const skeletonCards = _nullishCoalesce(skeletonCount, () => ( fold));
919
923
  const { getVote, toggleVote } = useRoadmapVoting(votingOptions);
920
924
  const inScope = _chunkXFRBEXQNcjs.useLoadingScope.call(void 0, );
921
925
  const [votingTasks, setVotingTasks] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
@@ -987,11 +991,11 @@ function RoadmapGrid({
987
991
  );
988
992
  }, [hasActiveFilters, sortedQuartersKey, isInitialized, quartersToKeepClosed]);
989
993
  if (inScope || isLoading) {
990
- return groupByQuarter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridQuarterSkeleton, { showLeftMargin, columns }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { region: !inScope, count: fold, showLeftMargin, columns });
994
+ return groupByQuarter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridQuarterSkeleton, { showLeftMargin, columns, count: skeletonCards }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { region: !inScope, count: skeletonCards, showLeftMargin, columns });
991
995
  }
992
996
  if (items.length === 0) {
993
997
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
994
- _chunkBLTNKLAXcjs.EmptyState,
998
+ _chunkJJNOAYD4cjs.EmptyState,
995
999
  {
996
1000
  type: "generic",
997
1001
  title: "No roadmap items",
@@ -1013,7 +1017,7 @@ function RoadmapGrid({
1013
1017
  );
1014
1018
  }
1015
1019
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1016
- _chunkL5WSNX4Hcjs.Accordion,
1020
+ _chunkALNP25TXcjs.Accordion,
1017
1021
  {
1018
1022
  type: "multiple",
1019
1023
  value: expandedQuarters,
@@ -1023,13 +1027,14 @@ function RoadmapGrid({
1023
1027
  const itemCount = _optionalChain([itemsByQuarter, 'access', _20 => _20[quarter], 'optionalAccess', _21 => _21.length]) || 0;
1024
1028
  const isExpanded = expandedQuarters.includes(quarter);
1025
1029
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1026
- _chunkL5WSNX4Hcjs.AccordionItem,
1030
+ _chunkALNP25TXcjs.AccordionItem,
1027
1031
  {
1028
1032
  value: quarter,
1029
1033
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
1030
1034
  className: "border-0",
1035
+ "data-loading-item": true,
1031
1036
  children: [
1032
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:ml-auto [&>svg]:h-5 [&>svg]:w-5 [&>svg]:shrink-0 [&>svg]:text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: QUARTER_HEAD_CLASS, children: [
1037
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:ml-auto [&>svg]:h-5 [&>svg]:w-5 [&>svg]:shrink-0 [&>svg]:text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: QUARTER_HEAD_CLASS, children: [
1033
1038
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1034
1039
  "h3",
1035
1040
  {
@@ -1059,7 +1064,7 @@ function RoadmapGrid({
1059
1064
  }
1060
1065
  )
1061
1066
  ] }) }),
1062
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.AccordionContent, { className: "overflow-hidden pb-0 pt-4 data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1067
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.AccordionContent, { className: "overflow-hidden pb-0 pt-4 data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1063
1068
  RoadmapGridSingle,
1064
1069
  {
1065
1070
  items: itemsByQuarter[quarter],
@@ -1084,8 +1089,8 @@ function RoadmapGrid({
1084
1089
 
1085
1090
  var DEFAULT_ENDPOINT3 = "/api/roadmap";
1086
1091
  var SYNCED_LIST_CLASS = "flex w-full flex-col gap-[var(--spacing-system-lf)]";
1087
- var DEFAULT_SEARCH_PARAM_KEY2 = _chunkUBPSA3RMcjs.DEV_SECTION_PARAM_KEYS.search;
1088
- var DEFAULT_STATUS_PARAM_KEY2 = _chunkUBPSA3RMcjs.DEV_SECTION_PARAM_KEYS.status;
1092
+ var DEFAULT_SEARCH_PARAM_KEY2 = _chunkYI3CDGKMcjs.DEV_SECTION_PARAM_KEYS.search;
1093
+ var DEFAULT_STATUS_PARAM_KEY2 = _chunkYI3CDGKMcjs.DEV_SECTION_PARAM_KEYS.status;
1089
1094
  function RoadmapView({
1090
1095
  endpoint = DEFAULT_ENDPOINT3,
1091
1096
  initialItems,
@@ -1104,23 +1109,23 @@ function RoadmapView({
1104
1109
  const qs = listParams.toString();
1105
1110
  const url = qs ? `${endpoint}?${qs}` : endpoint;
1106
1111
  const initialData = _react.useMemo.call(void 0, () => initialItems ? { items: initialItems } : void 0, [initialItems]);
1107
- const { data, setData, isLoading, error, reload } = _chunkHQF62LAUcjs.useSelfFetch.call(void 0, url, {
1112
+ const { data, setData, isLoading, error, reload } = _chunkFPCGKH5Kcjs.useSelfFetch.call(void 0, url, {
1108
1113
  initialData
1109
1114
  });
1110
1115
  const items = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _22 => _22.items]), () => ( []));
1111
1116
  _chunkXVFM6SJAcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkXXJL5GY3cjs.STICKY_HEADER_OFFSET_PX });
1112
- const syncInPage = _chunkDEJB5WHZcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _23 => _23.sync]), isLoading && !data);
1117
+ const syncInPage = _chunkWT5XF66Wcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _23 => _23.sync]), isLoading && !data);
1113
1118
  if (error) {
1114
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1119
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1115
1120
  }
1116
1121
  if (isLoading && !data) {
1117
1122
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: SYNCED_LIST_CLASS, children: [
1118
- !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.DataSyncLine, { loading: true }),
1123
+ !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.DataSyncLine, { loading: true }),
1119
1124
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridQuarterSkeleton, { showLeftMargin })
1120
1125
  ] });
1121
1126
  }
1122
1127
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: SYNCED_LIST_CLASS, children: [
1123
- !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.DataSyncLine, { sync: _optionalChain([data, 'optionalAccess', _24 => _24.sync]) }),
1128
+ !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.DataSyncLine, { sync: _optionalChain([data, 'optionalAccess', _24 => _24.sync]) }),
1124
1129
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1125
1130
  RoadmapGrid,
1126
1131
  {
@@ -1140,11 +1145,11 @@ function RoadmapView({
1140
1145
 
1141
1146
  // src/components/shared/delivery/delivery-table.tsx
1142
1147
 
1143
- var TABLE_FRAME_CLASS = `w-full ${_chunk4EJU462Ocjs.CONTENT_CARD_SKELETON_FRAME_CLASS}`;
1148
+ var TABLE_FRAME_CLASS = `w-full ${_chunk5V7BIUGAcjs.CONTENT_CARD_SKELETON_FRAME_CLASS}`;
1144
1149
  var ROW_SEPARATOR_CLASS = "border-b border-ods-border last:border-b-0";
1145
1150
  var DELIVERY_TABLE_SKELETON_ROWS = 5;
1146
1151
  function DeliveryTableSkeleton() {
1147
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TABLE_FRAME_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: Array.from({ length: DELIVERY_TABLE_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDEJB5WHZcjs.DeliveryRowSkeleton, {}) }, i)) }) });
1152
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TABLE_FRAME_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: Array.from({ length: DELIVERY_TABLE_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5XF66Wcjs.DeliveryRowSkeleton, {}) }, i)) }) });
1148
1153
  }
1149
1154
  function DeliveryTable({ items, isLoading = false }) {
1150
1155
  if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliveryTableSkeleton, {});
@@ -1157,7 +1162,7 @@ function DeliveryTable({ items, isLoading = false }) {
1157
1162
  // → `#delivery-<external_id>`; `useScrollToHash` in
1158
1163
  // `delivery-lists.tsx` finds the row by id and scrolls. The
1159
1164
  // outer wrapper here ONLY exists for the row separators.
1160
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDEJB5WHZcjs.DeliveryRow, { item, id: _chunkUBPSA3RMcjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
1165
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: ROW_SEPARATOR_CLASS, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5XF66Wcjs.DeliveryRow, { item, id: _chunkYI3CDGKMcjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
1161
1166
  )) }) });
1162
1167
  }
1163
1168
 
@@ -1166,8 +1171,8 @@ function DeliveryTable({ items, isLoading = false }) {
1166
1171
 
1167
1172
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
1168
1173
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
1169
- var DEFAULT_SEARCH_PARAM_KEY3 = _chunkUBPSA3RMcjs.DEV_SECTION_PARAM_KEYS.search;
1170
- var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkUBPSA3RMcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1174
+ var DEFAULT_SEARCH_PARAM_KEY3 = _chunkYI3CDGKMcjs.DEV_SECTION_PARAM_KEYS.search;
1175
+ var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkYI3CDGKMcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1171
1176
  function DeliveryLists({
1172
1177
  completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
1173
1178
  inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
@@ -1242,18 +1247,18 @@ function DeliveryLists({
1242
1247
  const filteredCompleted = _optionalChain([data, 'optionalAccess', _25 => _25.completed]) || [];
1243
1248
  const filteredInProgress = _optionalChain([data, 'optionalAccess', _26 => _26.inProgress]) || [];
1244
1249
  _chunkXVFM6SJAcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkXXJL5GY3cjs.STICKY_HEADER_OFFSET_PX });
1245
- const syncInPage = _chunkDEJB5WHZcjs.usePageDataSync.call(void 0, sync, isLoading && !data);
1250
+ const syncInPage = _chunkWT5XF66Wcjs.usePageDataSync.call(void 0, sync, isLoading && !data);
1246
1251
  const showCompleted = true;
1247
1252
  const showInProgress = true;
1248
1253
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
1249
1254
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
1250
1255
  if (error) {
1251
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1256
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1252
1257
  }
1253
1258
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[40px]", children: [
1254
- !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.DataSyncLine, { sync, loading: isLoading && !data }),
1259
+ !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.DataSyncLine, { sync, loading: isLoading && !data }),
1255
1260
  !isLoading && !hasResults && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1256
- _chunkDEJB5WHZcjs.ListEmptyState,
1261
+ _chunkWT5XF66Wcjs.ListEmptyState,
1257
1262
  {
1258
1263
  isFiltered: hasActiveFilters,
1259
1264
  filtered: {
@@ -1478,7 +1483,7 @@ function legalDocumentStampLabel(doc) {
1478
1483
  }
1479
1484
  var LEGAL_DOCUMENT_SKELETON_SECTIONS = 3;
1480
1485
  function LegalDocumentSkeleton({ sections = LEGAL_DOCUMENT_SKELETON_SECTIONS }) {
1481
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { label: "Loading the document", className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.RichMarkdownRendererSkeleton, { title: true, sections }) });
1486
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWEANWBJHcjs.LoadingRegion, { label: "Loading the document", className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.RichMarkdownRendererSkeleton, { title: true, sections }) });
1482
1487
  }
1483
1488
  function LegalDocumentPage({
1484
1489
  docType,
@@ -1490,7 +1495,7 @@ function LegalDocumentPage({
1490
1495
  emptyStateMessage: emptyStateMessageProp,
1491
1496
  initialData = null,
1492
1497
  apiEndpoint,
1493
- MarkdownRenderer = _chunkL5WSNX4Hcjs.RichMarkdownRenderer,
1498
+ MarkdownRenderer = _chunkALNP25TXcjs.RichMarkdownRenderer,
1494
1499
  documentsEndpoint,
1495
1500
  backButton,
1496
1501
  faq,
@@ -1512,7 +1517,7 @@ function LegalDocumentPage({
1512
1517
  const emptyStateMessage = _nullishCoalesce(emptyStateMessageProp, () => ( `${title} is not available at this time.`));
1513
1518
  const subtitle = isLoading ? void 0 : _nullishCoalesce(legalDocumentStampLabel(data), () => ( fallbackDescription));
1514
1519
  const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
1515
- _chunkMZLWB5AHcjs.PageLayout,
1520
+ _chunk2LTJ4457cjs.PageLayout,
1516
1521
  {
1517
1522
  title,
1518
1523
  subtitle,
@@ -1521,7 +1526,7 @@ function LegalDocumentPage({
1521
1526
  titleSize: "h1",
1522
1527
  titleWrap: true,
1523
1528
  children: [
1524
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.DataSyncLine, { sync: data ? { source: "github", syncedAt: data.lastSynced } : null, loading: isLoading }),
1529
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.DataSyncLine, { sync: data ? { source: "github", syncedAt: data.lastSynced } : null, loading: isLoading }),
1525
1530
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-1 flex-col items-start gap-6 lg:flex-row lg:gap-10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk65VVJSQZcjs.cn.call(void 0, "flex-1", isLoading && "w-full"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: "space-y-2", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LegalDocumentSkeleton, {}) : error ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4 text-center", children: [
1526
1531
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rounded-lg border border-ods-error bg-ods-error-secondary p-6", children: [
1527
1532
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "mb-2 text-ods-error", children: errorTitle }),
@@ -1541,11 +1546,11 @@ function LegalDocumentPage({
1541
1546
  "for more information."
1542
1547
  ] })
1543
1548
  ] }) }) }) }) }),
1544
- faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGGORS7G6cjs.FaqSection, { ..._chunkGGORS7G6cjs.pageFaqProps.call(void 0, faqSlot) })
1549
+ faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkREFL3YNEcjs.FaqSection, { ..._chunkREFL3YNEcjs.pageFaqProps.call(void 0, faqSlot) })
1545
1550
  ]
1546
1551
  }
1547
1552
  );
1548
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL5WSNX4Hcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1553
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkALNP25TXcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1549
1554
  }
1550
1555
 
1551
1556