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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/{chunk-XDGDCO3I.cjs → chunk-5LOLBUZG.cjs} +45 -44
  2. package/dist/chunk-5LOLBUZG.cjs.map +1 -0
  3. package/dist/{chunk-4YKGXZ7W.js → chunk-7AH75KFQ.js} +1 -1
  4. package/dist/chunk-7AH75KFQ.js.map +1 -0
  5. package/dist/{chunk-CYMMGPPV.js → chunk-CTBL56EC.js} +41 -5
  6. package/dist/chunk-CTBL56EC.js.map +1 -0
  7. package/dist/{chunk-2KHFSSFZ.cjs → chunk-DBJZF2OV.cjs} +15 -15
  8. package/dist/{chunk-2KHFSSFZ.cjs.map → chunk-DBJZF2OV.cjs.map} +1 -1
  9. package/dist/{chunk-4DYXV3E7.cjs → chunk-DEAWHNYW.cjs} +1177 -1223
  10. package/dist/chunk-DEAWHNYW.cjs.map +1 -0
  11. package/dist/{chunk-WU6PMH5L.cjs → chunk-E6RCVOQG.cjs} +41 -43
  12. package/dist/chunk-E6RCVOQG.cjs.map +1 -0
  13. package/dist/{chunk-FLIWL6V4.js → chunk-EINXNG5D.js} +4 -4
  14. package/dist/{chunk-OPSZNW3I.js → chunk-EKWPIEHH.js} +3031 -3077
  15. package/dist/chunk-EKWPIEHH.js.map +1 -0
  16. package/dist/{chunk-N5MCKGAB.js → chunk-FDHKJJPK.js} +34 -33
  17. package/dist/{chunk-N5MCKGAB.js.map → chunk-FDHKJJPK.js.map} +1 -1
  18. package/dist/{chunk-BSOHVQ7X.js → chunk-GHWOQUB4.js} +366 -391
  19. package/dist/chunk-GHWOQUB4.js.map +1 -0
  20. package/dist/{chunk-T7AJBKZP.cjs → chunk-GVSTRN36.cjs} +5 -2
  21. package/dist/chunk-GVSTRN36.cjs.map +1 -0
  22. package/dist/{chunk-L4LAAA5Q.js → chunk-IMNGGLKL.js} +5 -2
  23. package/dist/chunk-IMNGGLKL.js.map +1 -0
  24. package/dist/{chunk-VASNLWPZ.js → chunk-NY7OG2OJ.js} +5 -7
  25. package/dist/{chunk-VASNLWPZ.js.map → chunk-NY7OG2OJ.js.map} +1 -1
  26. package/dist/{chunk-5QJQAFTP.cjs → chunk-OKDCUJOZ.cjs} +48 -12
  27. package/dist/chunk-OKDCUJOZ.cjs.map +1 -0
  28. package/dist/{chunk-MEAR2WHS.cjs → chunk-PC7YOZ4I.cjs} +1 -1
  29. package/dist/chunk-PC7YOZ4I.cjs.map +1 -0
  30. package/dist/{chunk-QLWBBCI5.cjs → chunk-Q2ITV3NY.cjs} +5 -4
  31. package/dist/chunk-Q2ITV3NY.cjs.map +1 -0
  32. package/dist/chunk-RGALV4UX.js +433 -0
  33. package/dist/chunk-RGALV4UX.js.map +1 -0
  34. package/dist/{chunk-W5KBDFCR.cjs → chunk-SA4ZTD3G.cjs} +30 -30
  35. package/dist/{chunk-W5KBDFCR.cjs.map → chunk-SA4ZTD3G.cjs.map} +1 -1
  36. package/dist/{chunk-GL5X6VVC.js → chunk-T4XXYAYY.js} +4 -4
  37. package/dist/{chunk-ZMFT5XOB.js → chunk-UXJCZOLA.js} +4 -3
  38. package/dist/chunk-UXJCZOLA.js.map +1 -0
  39. package/dist/{chunk-7NJUPRN6.cjs → chunk-XCPBD2PG.cjs} +183 -208
  40. package/dist/chunk-XCPBD2PG.cjs.map +1 -0
  41. package/dist/chunk-ZSUNQJRO.cjs +433 -0
  42. package/dist/chunk-ZSUNQJRO.cjs.map +1 -0
  43. package/dist/components/chat/chat-message-row.d.ts +1 -1
  44. package/dist/components/chat/chat-message-row.d.ts.map +1 -1
  45. package/dist/components/chat/index.cjs +10 -11
  46. package/dist/components/chat/index.cjs.map +1 -1
  47. package/dist/components/chat/index.js +12 -13
  48. package/dist/components/contact/index.cjs +7 -9
  49. package/dist/components/contact/index.cjs.map +1 -1
  50. package/dist/components/contact/index.js +6 -8
  51. package/dist/components/faq/faq-document-page.d.ts +21 -0
  52. package/dist/components/faq/faq-document-page.d.ts.map +1 -0
  53. package/dist/components/faq/index.cjs +22 -5
  54. package/dist/components/faq/index.cjs.map +1 -1
  55. package/dist/components/faq/index.d.ts +1 -0
  56. package/dist/components/faq/index.d.ts.map +1 -1
  57. package/dist/components/faq/index.js +21 -4
  58. package/dist/components/features/index.cjs +6 -8
  59. package/dist/components/features/index.cjs.map +1 -1
  60. package/dist/components/features/index.js +5 -7
  61. package/dist/components/index.cjs +304 -309
  62. package/dist/components/index.cjs.map +1 -1
  63. package/dist/components/index.js +249 -254
  64. package/dist/components/index.js.map +1 -1
  65. package/dist/components/layout/article-detail-layout.d.ts +21 -9
  66. package/dist/components/layout/article-detail-layout.d.ts.map +1 -1
  67. package/dist/components/navigation/index.cjs +6 -8
  68. package/dist/components/navigation/index.cjs.map +1 -1
  69. package/dist/components/navigation/index.js +5 -7
  70. package/dist/components/onboarding-guides/index.cjs +33 -46
  71. package/dist/components/onboarding-guides/index.cjs.map +1 -1
  72. package/dist/components/onboarding-guides/index.js +11 -24
  73. package/dist/components/onboarding-guides/index.js.map +1 -1
  74. package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
  75. package/dist/components/related-content/index.cjs +8 -10
  76. package/dist/components/related-content/index.cjs.map +1 -1
  77. package/dist/components/related-content/index.js +7 -9
  78. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  79. package/dist/components/shared/detail-page-skeleton.d.ts +6 -1
  80. package/dist/components/shared/detail-page-skeleton.d.ts.map +1 -1
  81. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  82. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  83. package/dist/components/shared/roadmap/roadmap-grid.d.ts.map +1 -1
  84. package/dist/components/shared/roadmap/use-roadmap-voting.d.ts.map +1 -1
  85. package/dist/components/tickets/help-center-list.d.ts +9 -1
  86. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  87. package/dist/components/tickets/hooks/use-ticket-actions.d.ts.map +1 -1
  88. package/dist/components/tickets/hooks/use-ticket-engagements.d.ts.map +1 -1
  89. package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
  90. package/dist/components/tickets/index.cjs +81 -76
  91. package/dist/components/tickets/index.cjs.map +1 -1
  92. package/dist/components/tickets/index.js +27 -22
  93. package/dist/components/tickets/index.js.map +1 -1
  94. package/dist/components/ui/index.cjs +12 -15
  95. package/dist/components/ui/index.cjs.map +1 -1
  96. package/dist/components/ui/index.js +24 -27
  97. package/dist/contexts/chat-runtime-context.d.ts +9 -0
  98. package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
  99. package/dist/contexts/index.cjs +2 -2
  100. package/dist/contexts/index.js +1 -1
  101. package/dist/hooks/index.cjs +3 -3
  102. package/dist/hooks/index.js +2 -2
  103. package/dist/hooks/use-contact-submission.d.ts.map +1 -1
  104. package/dist/hooks/use-self-fetch.d.ts.map +1 -1
  105. package/dist/index.cjs +11 -15
  106. package/dist/index.cjs.map +1 -1
  107. package/dist/index.js +32 -36
  108. package/dist/utils/embed-authed-fetch.d.ts +7 -0
  109. package/dist/utils/embed-authed-fetch.d.ts.map +1 -1
  110. package/dist/utils/embed-content-fetch.d.ts +2 -0
  111. package/dist/utils/embed-content-fetch.d.ts.map +1 -0
  112. package/dist/utils/index.cjs.map +1 -1
  113. package/dist/utils/index.js.map +1 -1
  114. package/package.json +1 -1
  115. package/src/components/chat/chat-message-row.tsx +12 -2
  116. package/src/components/faq/faq-document-page.tsx +69 -0
  117. package/src/components/faq/index.ts +1 -0
  118. package/src/components/layout/article-detail-layout.tsx +24 -11
  119. package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +21 -16
  120. package/src/components/shared/delivery/delivery-lists.tsx +3 -2
  121. package/src/components/shared/detail-page-skeleton.tsx +18 -10
  122. package/src/components/shared/legal-document/use-legal-docs.ts +2 -1
  123. package/src/components/shared/product-release/release-detail-page.tsx +27 -17
  124. package/src/components/shared/roadmap/roadmap-grid.tsx +2 -1
  125. package/src/components/shared/roadmap/use-roadmap-voting.ts +3 -2
  126. package/src/components/tickets/help-center-list.tsx +12 -4
  127. package/src/components/tickets/hooks/use-ticket-actions.ts +7 -2
  128. package/src/components/tickets/hooks/use-ticket-engagements.ts +6 -1
  129. package/src/components/tickets/hooks/use-tickets-list.ts +7 -1
  130. package/src/components/tickets/ticket-detail-drawer.tsx +1 -0
  131. package/src/contexts/chat-runtime-context.tsx +9 -0
  132. package/src/hooks/use-contact-submission.ts +2 -1
  133. package/src/hooks/use-self-fetch.ts +2 -1
  134. package/src/styles/index.css +1 -0
  135. package/src/styles/ods-page-shell.css +29 -0
  136. package/src/utils/embed-authed-fetch.ts +10 -0
  137. package/src/utils/embed-content-fetch.ts +30 -0
  138. package/dist/chunk-4DYXV3E7.cjs.map +0 -1
  139. package/dist/chunk-4YKGXZ7W.js.map +0 -1
  140. package/dist/chunk-5QJQAFTP.cjs.map +0 -1
  141. package/dist/chunk-722TTRIJ.cjs +0 -29
  142. package/dist/chunk-722TTRIJ.cjs.map +0 -1
  143. package/dist/chunk-7NJUPRN6.cjs.map +0 -1
  144. package/dist/chunk-BSOHVQ7X.js.map +0 -1
  145. package/dist/chunk-CYMMGPPV.js.map +0 -1
  146. package/dist/chunk-DAAFVOTL.cjs +0 -172
  147. package/dist/chunk-DAAFVOTL.cjs.map +0 -1
  148. package/dist/chunk-L4LAAA5Q.js.map +0 -1
  149. package/dist/chunk-MEAR2WHS.cjs.map +0 -1
  150. package/dist/chunk-OO4ZGDRO.js +0 -29
  151. package/dist/chunk-OO4ZGDRO.js.map +0 -1
  152. package/dist/chunk-OPSZNW3I.js.map +0 -1
  153. package/dist/chunk-QLWBBCI5.cjs.map +0 -1
  154. package/dist/chunk-T2URJAX2.js +0 -169
  155. package/dist/chunk-T2URJAX2.js.map +0 -1
  156. package/dist/chunk-T7AJBKZP.cjs.map +0 -1
  157. package/dist/chunk-WU6PMH5L.cjs.map +0 -1
  158. package/dist/chunk-XDGDCO3I.cjs.map +0 -1
  159. package/dist/chunk-Y2B6WDU6.cjs +0 -169
  160. package/dist/chunk-Y2B6WDU6.cjs.map +0 -1
  161. package/dist/chunk-ZMFT5XOB.js.map +0 -1
  162. package/dist/chunk-ZXZJSTNV.js +0 -172
  163. package/dist/chunk-ZXZJSTNV.js.map +0 -1
  164. /package/dist/{chunk-FLIWL6V4.js.map → chunk-EINXNG5D.js.map} +0 -0
  165. /package/dist/{chunk-GL5X6VVC.js.map → chunk-T4XXYAYY.js.map} +0 -0
@@ -2,12 +2,13 @@
2
2
  "use client";
3
3
  import {
4
4
  FaqAccordion,
5
+ FaqDocumentPage,
5
6
  FaqSection
6
- } from "../chunk-CYMMGPPV.js";
7
+ } from "../chunk-CTBL56EC.js";
7
8
  import {
8
9
  GROUP_PAGE_SIZE,
9
10
  RelatedContentSection
10
- } from "../chunk-VASNLWPZ.js";
11
+ } from "../chunk-NY7OG2OJ.js";
11
12
  import {
12
13
  DeliveryRow,
13
14
  DevCardRowContent,
@@ -19,7 +20,7 @@ import {
19
20
  UnifiedPagination,
20
21
  init_unified_pagination,
21
22
  unified_pagination_exports
22
- } from "../chunk-GL5X6VVC.js";
23
+ } from "../chunk-T4XXYAYY.js";
23
24
  import {
24
25
  ArticleAuthorByline,
25
26
  DetailPageSkeleton,
@@ -29,10 +30,10 @@ import {
29
30
  mapDocSearchResults,
30
31
  resolveSearchResultAction,
31
32
  useDocSearch
32
- } from "../chunk-N5MCKGAB.js";
33
+ } from "../chunk-FDHKJJPK.js";
33
34
  import {
34
35
  useSelfFetch
35
- } from "../chunk-L4LAAA5Q.js";
36
+ } from "../chunk-IMNGGLKL.js";
36
37
  import "../chunk-4XLJWX2N.js";
37
38
  import {
38
39
  ADMIN_APPROVAL_REQUEST_CONTEXT_TYPE,
@@ -155,6 +156,7 @@ import {
155
156
  CheckIcon,
156
157
  CheckboxBlock,
157
158
  CheckboxWithDescription,
159
+ ChevronButton,
158
160
  CircularProgress,
159
161
  ClickUpTasksManager,
160
162
  ClientOnlyHeader,
@@ -165,6 +167,7 @@ import {
165
167
  CompactPageLoader,
166
168
  ConfidenceBadge,
167
169
  ContentLoader,
170
+ ContentPageContainer,
168
171
  ContextCompactionDisplay,
169
172
  CursorPagination,
170
173
  CursorPaginationSimple,
@@ -191,6 +194,7 @@ import {
191
194
  DatePickerInput,
192
195
  DatePickerInputSimple,
193
196
  DetailLoader,
197
+ DetailPageContainer,
194
198
  DeviceCard,
195
199
  DeviceCardCompact,
196
200
  Dialog,
@@ -218,7 +222,6 @@ import {
218
222
  DropdownButton,
219
223
  DynamicThemeProvider,
220
224
  EmbeddableChat,
221
- EntityImage,
222
225
  EntitySummaryEditor,
223
226
  ErrorBoundary,
224
227
  ErrorMessageDisplay,
@@ -235,6 +238,7 @@ import {
235
238
  FlamingoLogo as FlamingoLogo2,
236
239
  FloatingTooltip,
237
240
  FormLoader,
241
+ FormPageContainer,
238
242
  GenericEntityCard,
239
243
  GenericEntityCardSkeleton,
240
244
  GitHubActivityCard,
@@ -274,6 +278,7 @@ import {
274
278
  KnowledgeBaseLinksManager,
275
279
  Label,
276
280
  ListLoader,
281
+ ListPageContainer,
277
282
  ListPageLayout,
278
283
  LoadingProvider,
279
284
  MESSAGE_ROLE,
@@ -350,7 +355,7 @@ import {
350
355
  OnboardingWalkthrough,
351
356
  OpenmspLogo as OpenmspLogo2,
352
357
  OrganizationCard,
353
- PageLayout,
358
+ PageContainer,
354
359
  PageLoader,
355
360
  Pagination,
356
361
  PaginationContent,
@@ -467,7 +472,6 @@ import {
467
472
  TicketStatusConfigList,
468
473
  TicketStatusConfigRow,
469
474
  TicketStatusTag,
470
- TitleBlock,
471
475
  TitleContentBlock,
472
476
  Toggle,
473
477
  ToggleGroup,
@@ -492,7 +496,6 @@ import {
492
496
  XCircleIcon,
493
497
  XIcon as XIcon2,
494
498
  alignJustify,
495
- applyProxyAuth,
496
499
  approvalMetaToBatchData,
497
500
  badgeVariants,
498
501
  buildAutoContinuationDirective,
@@ -502,7 +505,6 @@ import {
502
505
  buildNatsWsUrl,
503
506
  buildProductReleaseCardProps,
504
507
  chatChipClass,
505
- clearEmbedProxyAuth,
506
508
  clickupTaskUrl,
507
509
  columnFromTicketStatus,
508
510
  computeHistoryPrepend,
@@ -510,7 +512,6 @@ import {
510
512
  createMessageSegmentAccumulator,
511
513
  defaultBuildProductReleaseCardProps,
512
514
  deriveColumns,
513
- embedAuthedFetch,
514
515
  escapeMarkdownInline,
515
516
  executeNavigation,
516
517
  executeNavigationImperative,
@@ -528,11 +529,9 @@ import {
528
529
  formatRelativeTime,
529
530
  formatReleaseDate,
530
531
  formatSingularLookupInvocation,
531
- getAppType,
532
532
  getApprovalMeta,
533
533
  getCommandText,
534
534
  getCoreRowModel,
535
- getEmbedProxyAuth,
536
535
  getExpandedRowModel,
537
536
  getFacetedRowModel,
538
537
  getFacetedUniqueValues,
@@ -541,7 +540,6 @@ import {
541
540
  getHideClasses,
542
541
  getOpenFramePaths,
543
542
  getPaginationRowModel,
544
- getPersistedProxyEmail,
545
543
  getProxiedImageUrl as getProxiedImageUrl2,
546
544
  getSortedRowModel,
547
545
  getStatusColorScheme,
@@ -577,7 +575,6 @@ import {
577
575
  resolveStatusTagProps,
578
576
  resolveTicketStatus,
579
577
  sanitizeTitleForChat,
580
- setEmbedProxyAuth,
581
578
  stripChatAttachmentMarkdown,
582
579
  tintOnDark,
583
580
  toggleVariants,
@@ -615,7 +612,7 @@ import {
615
612
  useThemeToggle,
616
613
  useUnifiedChat,
617
614
  usesCanonicalStatusStyle
618
- } from "../chunk-OPSZNW3I.js";
615
+ } from "../chunk-EKWPIEHH.js";
619
616
  import {
620
617
  CommandApprovalToast,
621
618
  ToastCard,
@@ -626,13 +623,10 @@ import {
626
623
  showToast,
627
624
  useOnboardingState,
628
625
  useToast
629
- } from "../chunk-ZMFT5XOB.js";
626
+ } from "../chunk-UXJCZOLA.js";
630
627
  import {
631
628
  useEndpointsRuntime
632
629
  } from "../chunk-MJNXIEV2.js";
633
- import {
634
- ChevronButton
635
- } from "../chunk-T2URJAX2.js";
636
630
  import {
637
631
  Checkbox,
638
632
  FieldWrapper,
@@ -651,7 +645,6 @@ import {
651
645
  ActionsMenu,
652
646
  ActionsMenuDropdown,
653
647
  ArticleDetailLayout,
654
- BackButton,
655
648
  BlogImagePlaceholder,
656
649
  COMPACT_CARD_ICON_SLOT,
657
650
  COMPACT_CARD_IMAGE_SLOT,
@@ -674,21 +667,18 @@ import {
674
667
  CardHeader,
675
668
  CardHorizontal,
676
669
  CardTitle,
677
- ContentPageContainer,
678
670
  DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID,
679
- DetailPageContainer,
680
671
  EMPTY_AUTHOR_PLACEHOLDER,
681
672
  EntityAuthorCard,
673
+ EntityImage,
682
674
  EntityMetadataAuthorCell,
683
675
  EntityMetadataValueCell,
684
676
  EntityTagBadges,
685
677
  EntityVideoSection,
686
678
  ErrorState,
687
679
  FilterPillRow,
688
- FormPageContainer,
689
680
  HiddenTagsPopup,
690
681
  ICON_REGISTRY,
691
- ListPageContainer,
692
682
  LoadError,
693
683
  MUX_IMAGE_ORIGIN,
694
684
  MUX_STREAM_ORIGIN,
@@ -696,13 +686,16 @@ import {
696
686
  NotFoundError,
697
687
  OnboardingGuideCard,
698
688
  OnboardingGuideCardSkeleton,
689
+ PAGE_HEADING_CLASS,
699
690
  PageActions,
700
- PageContainer,
701
691
  PageError,
692
+ PageHeading,
693
+ PageLayout,
702
694
  PageShell,
703
695
  RATIO_DISPLAY_GRID_CLASS,
704
696
  RATIO_GRID_CLASS,
705
697
  RatioTabs,
698
+ SECTION_HEADING_CLASS,
706
699
  SOURCE_ICON_NAMES,
707
700
  SOURCE_LABELS_BY_TABLE,
708
701
  SearchInput,
@@ -715,6 +708,7 @@ import {
715
708
  TabsList,
716
709
  TabsTrigger,
717
710
  Tag,
711
+ TitleBlock,
718
712
  Video,
719
713
  VideoBiteCard,
720
714
  VideoBitesDisplay,
@@ -750,11 +744,20 @@ import {
750
744
  usePageActionsBottomPadding,
751
745
  useVideoOriginPreconnect,
752
746
  useVideoWarmup
753
- } from "../chunk-BSOHVQ7X.js";
754
- import "../chunk-ZXZJSTNV.js";
747
+ } from "../chunk-GHWOQUB4.js";
748
+ import {
749
+ applyProxyAuth,
750
+ clearEmbedProxyAuth,
751
+ contentFetch,
752
+ embedAuthedFetch,
753
+ getAppType,
754
+ getEmbedProxyAuth,
755
+ getPersistedProxyEmail,
756
+ setEmbedProxyAuth
757
+ } from "../chunk-RGALV4UX.js";
755
758
  import {
756
759
  useChatRuntime
757
- } from "../chunk-4YKGXZ7W.js";
760
+ } from "../chunk-7AH75KFQ.js";
758
761
  import {
759
762
  next_image_default
760
763
  } from "../chunk-LXC6P2EO.js";
@@ -765,11 +768,6 @@ import {
765
768
  useRouter,
766
769
  useSearchParams
767
770
  } from "../chunk-PLJLE4A4.js";
768
- import {
769
- PAGE_HEADING_CLASS,
770
- PageHeading,
771
- SECTION_HEADING_CLASS
772
- } from "../chunk-OO4ZGDRO.js";
773
771
  import {
774
772
  Button,
775
773
  DropdownMenu,
@@ -5914,7 +5912,7 @@ function ReleaseDetailPage({
5914
5912
  if (roadmapTasksData && roadmapTasksData.length > 0 && RoadmapSection) {
5915
5913
  setRoadmapLoading(true);
5916
5914
  const roadmapIds = roadmapTasksData.map((t) => t.clickup_task_id).join(",");
5917
- const roadmapResponse = await fetch(`${roadmapApiEndpoint}?task_ids=${roadmapIds}`);
5915
+ const roadmapResponse = await contentFetch(`${roadmapApiEndpoint}?task_ids=${roadmapIds}`);
5918
5916
  const roadmapData = await roadmapResponse.json();
5919
5917
  setRoadmapTasks(roadmapData.items || []);
5920
5918
  setRoadmapLoading(false);
@@ -5923,7 +5921,7 @@ function ReleaseDetailPage({
5923
5921
  if (deliveryTasksData && deliveryTasksData.length > 0 && DeliverySection) {
5924
5922
  setDeliveryLoading(true);
5925
5923
  const deliveryIds = deliveryTasksData.map((t) => t.clickup_task_id).join(",");
5926
- const deliveryResponse = await fetch(`${deliveryApiEndpoint}?task_ids=${deliveryIds}`);
5924
+ const deliveryResponse = await contentFetch(`${deliveryApiEndpoint}?task_ids=${deliveryIds}`);
5927
5925
  const deliveryResponseData = await deliveryResponse.json();
5928
5926
  setDeliveryData(deliveryResponseData);
5929
5927
  setDeliveryLoading(false);
@@ -5937,13 +5935,13 @@ function ReleaseDetailPage({
5937
5935
  fetchLinkedTasks();
5938
5936
  }, [release, RoadmapSection, DeliverySection, roadmapApiEndpoint, deliveryApiEndpoint]);
5939
5937
  if (!initialData && isLoading) {
5940
- return /* @__PURE__ */ jsx53(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
5938
+ return /* @__PURE__ */ jsx53(PageShell, { children: /* @__PURE__ */ jsx53("div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ jsx53(DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) }) });
5941
5939
  }
5942
5940
  if (error || !release) {
5943
- return /* @__PURE__ */ jsxs43("div", { className: "text-center py-16", children: [
5941
+ return /* @__PURE__ */ jsx53(PageShell, { children: /* @__PURE__ */ jsxs43("div", { className: "text-center py-16", children: [
5944
5942
  /* @__PURE__ */ jsx53("h1", { className: "text-4xl font-bold text-ods-text-primary mb-4", children: "Release Not Found" }),
5945
5943
  /* @__PURE__ */ jsx53("p", { className: "text-xl text-ods-text-secondary", children: "The release you're looking for doesn't exist." })
5946
- ] });
5944
+ ] }) });
5947
5945
  }
5948
5946
  const hasBreakingChanges = Array.isArray(release.breaking_changes) && release.breaking_changes.length > 0;
5949
5947
  const releaseTitle = release.title;
@@ -5968,240 +5966,236 @@ function ReleaseDetailPage({
5968
5966
  const featuresAdded = release.features_added;
5969
5967
  const bugFixed = release.bugs_fixed;
5970
5968
  const improvements = release.improvements;
5971
- return /* @__PURE__ */ jsxs43(PageShell, { children: [
5972
- showBackButton && /* @__PURE__ */ jsx53(
5973
- BackButton,
5974
- {
5975
- label: backLabel,
5976
- onClick: () => router.push(backHref),
5977
- className: "hidden md:inline-flex mb-4"
5978
- }
5979
- ),
5980
- /* @__PURE__ */ jsxs43("div", { className: "space-y-6 md:space-y-8", children: [
5981
- /* @__PURE__ */ jsx53("div", { className: "flex flex-col md:flex-row md:items-end gap-4 w-full", children: /* @__PURE__ */ jsxs43("div", { className: "flex-1 flex flex-col gap-2", children: [
5982
- /* @__PURE__ */ jsx53("h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
5983
- /* @__PURE__ */ jsxs43("p", { className: "text-h4 text-ods-text-secondary", children: [
5984
- "Version: ",
5985
- releaseVersion
5986
- ] })
5987
- ] }) }),
5988
- /* @__PURE__ */ jsx53(EntityTagBadges, { tags: release.product_release_tags }),
5989
- /* @__PURE__ */ jsxs43("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
5990
- /* @__PURE__ */ jsx53("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__ */ jsxs43("div", { className: "flex flex-col gap-0", children: [
5991
- /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: releaseType.toLocaleUpperCase() }),
5992
- /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Type" })
5993
- ] }) }),
5994
- /* @__PURE__ */ jsx53("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__ */ jsxs43("div", { className: "flex flex-col gap-0", children: [
5995
- /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: releaseStatus.toLocaleUpperCase() }),
5996
- /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Status" })
5997
- ] }) }),
5998
- /* @__PURE__ */ jsx53("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__ */ jsxs43("div", { className: "flex flex-col gap-0", children: [
5999
- /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: formatReleaseDate(releaseDate) }),
6000
- /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Date" })
5969
+ return /* @__PURE__ */ jsx53(PageShell, { children: /* @__PURE__ */ jsx53(
5970
+ PageLayout,
5971
+ {
5972
+ backButton: showBackButton ? { label: backLabel, onClick: () => router.push(backHref) } : void 0,
5973
+ children: /* @__PURE__ */ jsxs43("div", { className: "space-y-6 md:space-y-8", children: [
5974
+ /* @__PURE__ */ jsx53("div", { className: "flex flex-col md:flex-row md:items-end gap-4 w-full", children: /* @__PURE__ */ jsxs43("div", { className: "flex-1 flex flex-col gap-2", children: [
5975
+ /* @__PURE__ */ jsx53("h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
5976
+ /* @__PURE__ */ jsxs43("p", { className: "text-h4 text-ods-text-secondary", children: [
5977
+ "Version: ",
5978
+ releaseVersion
5979
+ ] })
6001
5980
  ] }) }),
6002
- /* @__PURE__ */ jsx53(
6003
- EntityMetadataAuthorCell,
5981
+ /* @__PURE__ */ jsx53(EntityTagBadges, { tags: release.product_release_tags }),
5982
+ /* @__PURE__ */ jsxs43("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
5983
+ /* @__PURE__ */ jsx53("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__ */ jsxs43("div", { className: "flex flex-col gap-0", children: [
5984
+ /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: releaseType.toLocaleUpperCase() }),
5985
+ /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Type" })
5986
+ ] }) }),
5987
+ /* @__PURE__ */ jsx53("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__ */ jsxs43("div", { className: "flex flex-col gap-0", children: [
5988
+ /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: releaseStatus.toLocaleUpperCase() }),
5989
+ /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Status" })
5990
+ ] }) }),
5991
+ /* @__PURE__ */ jsx53("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__ */ jsxs43("div", { className: "flex flex-col gap-0", children: [
5992
+ /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: formatReleaseDate(releaseDate) }),
5993
+ /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Date" })
5994
+ ] }) }),
5995
+ /* @__PURE__ */ jsx53(
5996
+ EntityMetadataAuthorCell,
5997
+ {
5998
+ author: author ?? { full_name: null, avatar_url: null },
5999
+ authorHref: author?.full_name ? authorHref : void 0
6000
+ }
6001
+ )
6002
+ ] }),
6003
+ /* @__PURE__ */ jsx53(MediaGalleryStrip, { items: releaseMedia ?? [], maxDisplay: 5 }),
6004
+ releaseSummary && /* @__PURE__ */ jsx53("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx53("p", { children: releaseSummary }) }),
6005
+ VideoDisplaySection ? /* @__PURE__ */ jsx53(
6006
+ VideoDisplaySection,
6004
6007
  {
6005
- author: author ?? { full_name: null, avatar_url: null },
6006
- authorHref: author?.full_name ? authorHref : void 0
6008
+ mainVideoUrl,
6009
+ youtubeUrl,
6010
+ highlightVideoUrl,
6011
+ highlightVideoThumbnail,
6012
+ title: releaseTitle,
6013
+ videoBites,
6014
+ bitesTitle: "Video Clips",
6015
+ filterPublishedBites: true,
6016
+ srtContent: release?.srt_content,
6017
+ captionsUrl: release?.captionsUrl
6007
6018
  }
6008
- )
6009
- ] }),
6010
- /* @__PURE__ */ jsx53(MediaGalleryStrip, { items: releaseMedia ?? [], maxDisplay: 5 }),
6011
- releaseSummary && /* @__PURE__ */ jsx53("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx53("p", { children: releaseSummary }) }),
6012
- VideoDisplaySection ? /* @__PURE__ */ jsx53(
6013
- VideoDisplaySection,
6014
- {
6015
- mainVideoUrl,
6016
- youtubeUrl,
6017
- highlightVideoUrl,
6018
- highlightVideoThumbnail,
6019
- title: releaseTitle,
6020
- videoBites,
6021
- bitesTitle: "Video Clips",
6022
- filterPublishedBites: true,
6023
- srtContent: release?.srt_content,
6024
- captionsUrl: release?.captionsUrl
6025
- }
6026
- ) : /* @__PURE__ */ jsxs43(Fragment11, { children: [
6027
- youtubeUrl && /* @__PURE__ */ jsx53(
6028
- Video,
6019
+ ) : /* @__PURE__ */ jsxs43(Fragment11, { children: [
6020
+ youtubeUrl && /* @__PURE__ */ jsx53(
6021
+ Video,
6022
+ {
6023
+ kind: "youtube",
6024
+ url: youtubeUrl,
6025
+ title: `${releaseTitle} - Video`,
6026
+ layout: "native"
6027
+ }
6028
+ ),
6029
+ !youtubeUrl && mainVideoUrl && /* @__PURE__ */ jsx53(
6030
+ Video,
6031
+ {
6032
+ url: mainVideoUrl,
6033
+ srtContent: release?.srt_content,
6034
+ captionsUrl: release?.captionsUrl,
6035
+ layout: "centered"
6036
+ }
6037
+ ),
6038
+ highlightVideoUrl && /* @__PURE__ */ jsx53(
6039
+ Video,
6040
+ {
6041
+ url: highlightVideoUrl,
6042
+ poster: highlightVideoThumbnail,
6043
+ layout: "centered"
6044
+ }
6045
+ )
6046
+ ] }),
6047
+ releaseContent && /* @__PURE__ */ jsx53("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx53(MarkdownRenderer, { content: releaseContent }) }),
6048
+ hasBreakingChanges && /* @__PURE__ */ jsx53(Card, { className: "border-red-500 bg-red-500/10", children: /* @__PURE__ */ jsx53(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-3", children: [
6049
+ /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6 text-red-500" }),
6050
+ /* @__PURE__ */ jsxs43("div", { children: [
6051
+ /* @__PURE__ */ jsx53("h3", { className: "font-bold text-red-500 text-lg", children: "Breaking Changes" }),
6052
+ /* @__PURE__ */ jsx53("p", { className: "text-ods-text-secondary", children: "This release contains breaking changes. Review carefully before upgrading." })
6053
+ ] })
6054
+ ] }) }) }),
6055
+ /* @__PURE__ */ jsx53(
6056
+ ReleaseChangelogSection,
6029
6057
  {
6030
- kind: "youtube",
6031
- url: youtubeUrl,
6032
- title: `${releaseTitle} - Video`,
6033
- layout: "native"
6058
+ title: "Breaking Changes",
6059
+ entries: breakingChanges || [],
6060
+ isBreaking: true,
6061
+ hideTitle: true,
6062
+ icon: /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6" }),
6063
+ SimpleMarkdownRenderer: MarkdownRenderer
6034
6064
  }
6035
6065
  ),
6036
- !youtubeUrl && mainVideoUrl && /* @__PURE__ */ jsx53(
6037
- Video,
6066
+ /* @__PURE__ */ jsx53(
6067
+ ReleaseChangelogSection,
6038
6068
  {
6039
- url: mainVideoUrl,
6040
- srtContent: release?.srt_content,
6041
- captionsUrl: release?.captionsUrl,
6042
- layout: "centered"
6069
+ title: "Features Added",
6070
+ entries: featuresAdded || [],
6071
+ icon: /* @__PURE__ */ jsx53(Sparkles2, { className: "h-6 w-6" }),
6072
+ previewFirst: true,
6073
+ SimpleMarkdownRenderer: MarkdownRenderer
6043
6074
  }
6044
6075
  ),
6045
- highlightVideoUrl && /* @__PURE__ */ jsx53(
6046
- Video,
6076
+ /* @__PURE__ */ jsx53(
6077
+ ReleaseChangelogSection,
6047
6078
  {
6048
- url: highlightVideoUrl,
6049
- poster: highlightVideoThumbnail,
6050
- layout: "centered"
6079
+ title: "Bugs Fixed",
6080
+ entries: bugFixed || [],
6081
+ icon: /* @__PURE__ */ jsx53(Wrench, { className: "h-6 w-6" }),
6082
+ previewFirst: true,
6083
+ SimpleMarkdownRenderer: MarkdownRenderer
6051
6084
  }
6052
- )
6053
- ] }),
6054
- releaseContent && /* @__PURE__ */ jsx53("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx53(MarkdownRenderer, { content: releaseContent }) }),
6055
- hasBreakingChanges && /* @__PURE__ */ jsx53(Card, { className: "border-red-500 bg-red-500/10", children: /* @__PURE__ */ jsx53(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-3", children: [
6056
- /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6 text-red-500" }),
6057
- /* @__PURE__ */ jsxs43("div", { children: [
6058
- /* @__PURE__ */ jsx53("h3", { className: "font-bold text-red-500 text-lg", children: "Breaking Changes" }),
6059
- /* @__PURE__ */ jsx53("p", { className: "text-ods-text-secondary", children: "This release contains breaking changes. Review carefully before upgrading." })
6060
- ] })
6061
- ] }) }) }),
6062
- /* @__PURE__ */ jsx53(
6063
- ReleaseChangelogSection,
6064
- {
6065
- title: "Breaking Changes",
6066
- entries: breakingChanges || [],
6067
- isBreaking: true,
6068
- hideTitle: true,
6069
- icon: /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6" }),
6070
- SimpleMarkdownRenderer: MarkdownRenderer
6071
- }
6072
- ),
6073
- /* @__PURE__ */ jsx53(
6074
- ReleaseChangelogSection,
6075
- {
6076
- title: "Features Added",
6077
- entries: featuresAdded || [],
6078
- icon: /* @__PURE__ */ jsx53(Sparkles2, { className: "h-6 w-6" }),
6079
- previewFirst: true,
6080
- SimpleMarkdownRenderer: MarkdownRenderer
6081
- }
6082
- ),
6083
- /* @__PURE__ */ jsx53(
6084
- ReleaseChangelogSection,
6085
- {
6086
- title: "Bugs Fixed",
6087
- entries: bugFixed || [],
6088
- icon: /* @__PURE__ */ jsx53(Wrench, { className: "h-6 w-6" }),
6089
- previewFirst: true,
6090
- SimpleMarkdownRenderer: MarkdownRenderer
6091
- }
6092
- ),
6093
- /* @__PURE__ */ jsx53(
6094
- ReleaseChangelogSection,
6095
- {
6096
- title: "Improvements",
6097
- entries: improvements || [],
6098
- icon: /* @__PURE__ */ jsx53(TrendingUp, { className: "h-6 w-6" }),
6099
- previewFirst: true,
6100
- SimpleMarkdownRenderer: MarkdownRenderer
6101
- }
6102
- ),
6103
- !VideoDisplaySection && VideoSection && videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx53(
6104
- VideoSection,
6105
- {
6106
- bites: videoBites,
6107
- title: "Video Clips",
6108
- filterPublished: true
6109
- }
6110
- ),
6111
- RoadmapSection && (roadmapLoading || roadmapTasks.length > 0) && /* @__PURE__ */ jsxs43("div", { className: "space-y-4 w-full", children: [
6112
- /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Roadmap Items" }),
6085
+ ),
6113
6086
  /* @__PURE__ */ jsx53(
6114
- RoadmapSection,
6087
+ ReleaseChangelogSection,
6115
6088
  {
6116
- items: roadmapTasks,
6117
- isLoading: roadmapLoading,
6118
- onItemUpdate: (updatedItem) => {
6119
- setRoadmapTasks(
6120
- (prevTasks) => prevTasks.map(
6121
- (task) => task.id === updatedItem.id ? updatedItem : task
6122
- )
6123
- );
6124
- }
6089
+ title: "Improvements",
6090
+ entries: improvements || [],
6091
+ icon: /* @__PURE__ */ jsx53(TrendingUp, { className: "h-6 w-6" }),
6092
+ previewFirst: true,
6093
+ SimpleMarkdownRenderer: MarkdownRenderer
6125
6094
  }
6126
- )
6127
- ] }),
6128
- DeliverySection && (deliveryLoading || deliveryData && (deliveryData.completed.length > 0 || deliveryData.inProgress.length > 0)) && /* @__PURE__ */ jsxs43("div", { className: "w-full space-y-4", children: [
6129
- /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Enhancements and Bug-fixes" }),
6130
- /* @__PURE__ */ jsx53(
6131
- DeliverySection,
6095
+ ),
6096
+ !VideoDisplaySection && VideoSection && videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx53(
6097
+ VideoSection,
6132
6098
  {
6133
- data: deliveryData,
6134
- isLoading: deliveryLoading
6099
+ bites: videoBites,
6100
+ title: "Video Clips",
6101
+ filterPublished: true
6135
6102
  }
6136
- )
6137
- ] }),
6138
- (githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs43("div", { className: "space-y-1 w-full", children: [
6139
- /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
6140
- /* @__PURE__ */ jsx53(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs43("div", { className: "space-y-4", children: [
6141
- githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6142
- /* @__PURE__ */ jsx53(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
6143
- /* @__PURE__ */ jsx53("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
6144
- /* @__PURE__ */ jsx53(
6145
- "a",
6146
- {
6147
- href: ghRelease.github_release_url,
6148
- target: "_blank",
6149
- rel: "noopener noreferrer",
6150
- className: "text-h4 text-[#ffc008] hover:underline",
6151
- children: ghRelease.github_release_url.split("/").pop()
6103
+ ),
6104
+ RoadmapSection && (roadmapLoading || roadmapTasks.length > 0) && /* @__PURE__ */ jsxs43("div", { className: "space-y-4 w-full", children: [
6105
+ /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Roadmap Items" }),
6106
+ /* @__PURE__ */ jsx53(
6107
+ RoadmapSection,
6108
+ {
6109
+ items: roadmapTasks,
6110
+ isLoading: roadmapLoading,
6111
+ onItemUpdate: (updatedItem) => {
6112
+ setRoadmapTasks(
6113
+ (prevTasks) => prevTasks.map(
6114
+ (task) => task.id === updatedItem.id ? updatedItem : task
6115
+ )
6116
+ );
6152
6117
  }
6153
- ),
6154
- /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6155
- ] }, ghRelease.id)) }),
6156
- knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: knowledgeBaseLinks.map((linkObj) => {
6157
- const path = typeof linkObj === "string" ? linkObj : linkObj.kb_article_path;
6158
- const linkId = typeof linkObj === "string" ? path : linkObj.id || path;
6159
- return /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6118
+ }
6119
+ )
6120
+ ] }),
6121
+ DeliverySection && (deliveryLoading || deliveryData && (deliveryData.completed.length > 0 || deliveryData.inProgress.length > 0)) && /* @__PURE__ */ jsxs43("div", { className: "w-full space-y-4", children: [
6122
+ /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Enhancements and Bug-fixes" }),
6123
+ /* @__PURE__ */ jsx53(
6124
+ DeliverySection,
6125
+ {
6126
+ data: deliveryData,
6127
+ isLoading: deliveryLoading
6128
+ }
6129
+ )
6130
+ ] }),
6131
+ (githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs43("div", { className: "space-y-1 w-full", children: [
6132
+ /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
6133
+ /* @__PURE__ */ jsx53(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs43("div", { className: "space-y-4", children: [
6134
+ githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6135
+ /* @__PURE__ */ jsx53(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
6136
+ /* @__PURE__ */ jsx53("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
6137
+ /* @__PURE__ */ jsx53(
6138
+ "a",
6139
+ {
6140
+ href: ghRelease.github_release_url,
6141
+ target: "_blank",
6142
+ rel: "noopener noreferrer",
6143
+ className: "text-h4 text-[#ffc008] hover:underline",
6144
+ children: ghRelease.github_release_url.split("/").pop()
6145
+ }
6146
+ ),
6147
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6148
+ ] }, ghRelease.id)) }),
6149
+ knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: knowledgeBaseLinks.map((linkObj) => {
6150
+ const path = typeof linkObj === "string" ? linkObj : linkObj.kb_article_path;
6151
+ const linkId = typeof linkObj === "string" ? path : linkObj.id || path;
6152
+ return /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6153
+ /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6154
+ /* @__PURE__ */ jsx53("span", { className: "text-h4 text-ods-text-primary", children: "Knowledge Base" }),
6155
+ /* @__PURE__ */ jsx53(
6156
+ next_link_default,
6157
+ {
6158
+ href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
6159
+ className: "text-h4 text-[#ffc008] hover:underline",
6160
+ children: path.replace(/^\//, "").split("/").pop()?.replace(/-/g, " ") || "View Article"
6161
+ }
6162
+ ),
6163
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6164
+ ] }, linkId);
6165
+ }) }),
6166
+ migrationGuideUrl && /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6160
6167
  /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6161
- /* @__PURE__ */ jsx53("span", { className: "text-h4 text-ods-text-primary", children: "Knowledge Base" }),
6162
6168
  /* @__PURE__ */ jsx53(
6163
- next_link_default,
6169
+ "a",
6164
6170
  {
6165
- href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
6171
+ href: migrationGuideUrl,
6172
+ target: "_blank",
6173
+ rel: "noopener noreferrer",
6166
6174
  className: "text-h4 text-[#ffc008] hover:underline",
6167
- children: path.replace(/^\//, "").split("/").pop()?.replace(/-/g, " ") || "View Article"
6175
+ children: "\u{1F4D6} Migration Guide"
6168
6176
  }
6169
6177
  ),
6170
6178
  /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6171
- ] }, linkId);
6172
- }) }),
6173
- migrationGuideUrl && /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6174
- /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6175
- /* @__PURE__ */ jsx53(
6176
- "a",
6177
- {
6178
- href: migrationGuideUrl,
6179
- target: "_blank",
6180
- rel: "noopener noreferrer",
6181
- className: "text-h4 text-[#ffc008] hover:underline",
6182
- children: "\u{1F4D6} Migration Guide"
6183
- }
6184
- ),
6185
- /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6186
- ] }),
6187
- documentationUrl && /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6188
- /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6189
- /* @__PURE__ */ jsx53(
6190
- "a",
6191
- {
6192
- href: documentationUrl,
6193
- target: "_blank",
6194
- rel: "noopener noreferrer",
6195
- className: "text-h4 text-[#ffc008] hover:underline",
6196
- children: "\u{1F4DA} Documentation"
6197
- }
6198
- ),
6199
- /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6200
- ] })
6201
- ] }) })
6179
+ ] }),
6180
+ documentationUrl && /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6181
+ /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6182
+ /* @__PURE__ */ jsx53(
6183
+ "a",
6184
+ {
6185
+ href: documentationUrl,
6186
+ target: "_blank",
6187
+ rel: "noopener noreferrer",
6188
+ className: "text-h4 text-[#ffc008] hover:underline",
6189
+ children: "\u{1F4DA} Documentation"
6190
+ }
6191
+ ),
6192
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6193
+ ] })
6194
+ ] }) })
6195
+ ] })
6202
6196
  ] })
6203
- ] })
6204
- ] });
6197
+ }
6198
+ ) });
6205
6199
  }
6206
6200
 
6207
6201
  // src/components/shared/product-release/release-detail-skeleton.tsx
@@ -6261,7 +6255,7 @@ function useRoadmapVoting(options = {}) {
6261
6255
  action = "remove";
6262
6256
  } else {
6263
6257
  if (currentVote) {
6264
- await fetch(voteApiEndpoint, {
6258
+ await contentFetch(voteApiEndpoint, {
6265
6259
  method: "POST",
6266
6260
  headers: { "Content-Type": "application/json" },
6267
6261
  body: JSON.stringify({
@@ -6279,7 +6273,7 @@ function useRoadmapVoting(options = {}) {
6279
6273
  [taskId]: newVote
6280
6274
  }));
6281
6275
  try {
6282
- const response = await fetch(voteApiEndpoint, {
6276
+ const response = await contentFetch(voteApiEndpoint, {
6283
6277
  method: "POST",
6284
6278
  headers: { "Content-Type": "application/json" },
6285
6279
  body: JSON.stringify({ taskId, voteType, action })
@@ -6392,7 +6386,7 @@ function RoadmapGrid({
6392
6386
  try {
6393
6387
  const result = await toggleVote(taskId, voteType);
6394
6388
  if (result.success) {
6395
- const response = await fetch(buildRefreshUrl(taskId));
6389
+ const response = await contentFetch(buildRefreshUrl(taskId));
6396
6390
  if (response.ok) {
6397
6391
  const data = await response.json();
6398
6392
  if (data.item && onItemUpdate) onItemUpdate(data.item);
@@ -6684,8 +6678,8 @@ function DeliveryLists({
6684
6678
  const queryString = params.toString();
6685
6679
  const queryParam = queryString ? `?${queryString}` : "";
6686
6680
  const [completedResponse, inProgressResponse] = await Promise.all([
6687
- fetch(`${completedApiEndpoint}${queryParam}`),
6688
- fetch(`${inProgressApiEndpoint}${queryParam}`)
6681
+ contentFetch(`${completedApiEndpoint}${queryParam}`),
6682
+ contentFetch(`${inProgressApiEndpoint}${queryParam}`)
6689
6683
  ]);
6690
6684
  if (!completedResponse.ok || !inProgressResponse.ok) {
6691
6685
  throw new Error("Failed to fetch delivery items");
@@ -6785,7 +6779,7 @@ function useLegalDocs(docType, options = {}) {
6785
6779
  try {
6786
6780
  setIsLoading(true);
6787
6781
  setError(null);
6788
- const response = await fetch(effectiveEndpoint);
6782
+ const response = await contentFetch(effectiveEndpoint);
6789
6783
  if (!response.ok) {
6790
6784
  throw new Error(
6791
6785
  `Failed to fetch ${docType} document: ${response.status} ${response.statusText}`
@@ -7280,6 +7274,7 @@ export {
7280
7274
  FLAMINGO_LOGO_VIEWBOX,
7281
7275
  FacebookIcon,
7282
7276
  FaqAccordion,
7277
+ FaqDocumentPage,
7283
7278
  FaqSection,
7284
7279
  FeatureCardGrid,
7285
7280
  FeatureList,