@flamingo-stack/openframe-frontend-core 0.0.271 → 0.0.272-snapshot.20260616051826

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 (87) hide show
  1. package/dist/{chunk-3DYASQEL.js → chunk-4SNHFZQT.js} +3 -3
  2. package/dist/{chunk-CICK3FUU.cjs → chunk-7NJUPRN6.cjs} +7 -2
  3. package/dist/chunk-7NJUPRN6.cjs.map +1 -0
  4. package/dist/{chunk-ICOMPUMX.js → chunk-BSOHVQ7X.js} +6 -1
  5. package/dist/chunk-BSOHVQ7X.js.map +1 -0
  6. package/dist/{chunk-YH74UZRG.cjs → chunk-EEMZBQ7O.cjs} +25 -25
  7. package/dist/{chunk-YH74UZRG.cjs.map → chunk-EEMZBQ7O.cjs.map} +1 -1
  8. package/dist/{chunk-FC6YVRUW.cjs → chunk-IXRPEMZP.cjs} +15 -15
  9. package/dist/{chunk-FC6YVRUW.cjs.map → chunk-IXRPEMZP.cjs.map} +1 -1
  10. package/dist/{chunk-J35EWU2W.js → chunk-MCCYGAPE.js} +2 -2
  11. package/dist/{chunk-P7JHUX4X.js → chunk-N5MCKGAB.js} +2 -2
  12. package/dist/{chunk-5CTV435G.cjs → chunk-Q32JUFIK.cjs} +880 -810
  13. package/dist/chunk-Q32JUFIK.cjs.map +1 -0
  14. package/dist/{chunk-56V4MC32.js → chunk-UQCB2CP7.js} +35 -6
  15. package/dist/chunk-UQCB2CP7.js.map +1 -0
  16. package/dist/{chunk-LELTRQZV.cjs → chunk-V5OZQF4B.cjs} +69 -40
  17. package/dist/chunk-V5OZQF4B.cjs.map +1 -0
  18. package/dist/{chunk-BCPLTDRW.js → chunk-VFMMVGA4.js} +3280 -3210
  19. package/dist/chunk-VFMMVGA4.js.map +1 -0
  20. package/dist/{chunk-AA77CC2Y.cjs → chunk-XDGDCO3I.cjs} +12 -12
  21. package/dist/{chunk-AA77CC2Y.cjs.map → chunk-XDGDCO3I.cjs.map} +1 -1
  22. package/dist/components/chat/entity-cards/index.d.ts +2 -0
  23. package/dist/components/chat/entity-cards/index.d.ts.map +1 -1
  24. package/dist/components/chat/entity-cards/what-i-shipped-card.d.ts +43 -0
  25. package/dist/components/chat/entity-cards/what-i-shipped-card.d.ts.map +1 -0
  26. package/dist/components/chat/index.cjs +7 -3
  27. package/dist/components/chat/index.cjs.map +1 -1
  28. package/dist/components/chat/index.js +6 -2
  29. package/dist/components/contact/index.cjs +4 -4
  30. package/dist/components/contact/index.js +3 -3
  31. package/dist/components/features/index.cjs +3 -3
  32. package/dist/components/features/index.js +2 -2
  33. package/dist/components/form.d.ts +3 -1
  34. package/dist/components/form.d.ts.map +1 -1
  35. package/dist/components/index.cjs +138 -124
  36. package/dist/components/index.cjs.map +1 -1
  37. package/dist/components/index.d.ts +1 -0
  38. package/dist/components/index.d.ts.map +1 -1
  39. package/dist/components/index.js +262 -248
  40. package/dist/components/index.js.map +1 -1
  41. package/dist/components/navigation/index.cjs +3 -3
  42. package/dist/components/navigation/index.js +2 -2
  43. package/dist/components/onboarding-guides/index.cjs +22 -22
  44. package/dist/components/onboarding-guides/index.js +2 -2
  45. package/dist/components/related-content/index.cjs +4 -4
  46. package/dist/components/related-content/index.js +3 -3
  47. package/dist/components/related-content/related-content-section.d.ts +13 -1
  48. package/dist/components/related-content/related-content-section.d.ts.map +1 -1
  49. package/dist/components/shared/media-gallery-strip.d.ts +26 -0
  50. package/dist/components/shared/media-gallery-strip.d.ts.map +1 -0
  51. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  52. package/dist/components/tickets/index.cjs +62 -62
  53. package/dist/components/tickets/index.js +4 -4
  54. package/dist/components/ui/index.cjs +7 -3
  55. package/dist/components/ui/index.cjs.map +1 -1
  56. package/dist/components/ui/index.js +6 -2
  57. package/dist/index.cjs +9 -3
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.js +8 -2
  60. package/dist/utils/format.d.ts +8 -0
  61. package/dist/utils/format.d.ts.map +1 -1
  62. package/dist/utils/index.cjs +5 -0
  63. package/dist/utils/index.cjs.map +1 -1
  64. package/dist/utils/index.d.ts +1 -1
  65. package/dist/utils/index.d.ts.map +1 -1
  66. package/dist/utils/index.js +5 -1
  67. package/dist/utils/index.js.map +1 -1
  68. package/package.json +1 -1
  69. package/src/components/chat/chat-container.tsx +1 -1
  70. package/src/components/chat/entity-cards/index.ts +2 -0
  71. package/src/components/chat/entity-cards/what-i-shipped-card.tsx +109 -0
  72. package/src/components/hero-image-uploader.tsx +2 -2
  73. package/src/components/index.ts +5 -0
  74. package/src/components/related-content/related-content-section.tsx +70 -4
  75. package/src/components/shared/media-gallery-strip.tsx +93 -0
  76. package/src/components/shared/product-release/release-detail-page.tsx +3 -36
  77. package/src/utils/format.ts +15 -0
  78. package/src/utils/index.ts +1 -0
  79. package/dist/chunk-56V4MC32.js.map +0 -1
  80. package/dist/chunk-5CTV435G.cjs.map +0 -1
  81. package/dist/chunk-BCPLTDRW.js.map +0 -1
  82. package/dist/chunk-CICK3FUU.cjs.map +0 -1
  83. package/dist/chunk-ICOMPUMX.js.map +0 -1
  84. package/dist/chunk-LELTRQZV.cjs.map +0 -1
  85. /package/dist/{chunk-3DYASQEL.js.map → chunk-4SNHFZQT.js.map} +0 -0
  86. /package/dist/{chunk-J35EWU2W.js.map → chunk-MCCYGAPE.js.map} +0 -0
  87. /package/dist/{chunk-P7JHUX4X.js.map → chunk-N5MCKGAB.js.map} +0 -0
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  GROUP_PAGE_SIZE,
9
9
  RelatedContentSection
10
- } from "../chunk-56V4MC32.js";
10
+ } from "../chunk-UQCB2CP7.js";
11
11
  import {
12
12
  DeliveryRow,
13
13
  DevCardRowContent,
@@ -19,7 +19,7 @@ import {
19
19
  UnifiedPagination,
20
20
  init_unified_pagination,
21
21
  unified_pagination_exports
22
- } from "../chunk-3DYASQEL.js";
22
+ } from "../chunk-4SNHFZQT.js";
23
23
  import {
24
24
  ArticleAuthorByline,
25
25
  DetailPageSkeleton,
@@ -29,7 +29,7 @@ import {
29
29
  mapDocSearchResults,
30
30
  resolveSearchResultAction,
31
31
  useDocSearch
32
- } from "../chunk-P7JHUX4X.js";
32
+ } from "../chunk-N5MCKGAB.js";
33
33
  import {
34
34
  useSelfFetch
35
35
  } from "../chunk-L4LAAA5Q.js";
@@ -487,6 +487,8 @@ import {
487
487
  VideoSourceSelector,
488
488
  ViewToggle,
489
489
  WaitlistForm,
490
+ WhatIShippedCard,
491
+ WhatIShippedCardSkeleton,
490
492
  XCircleIcon,
491
493
  XIcon as XIcon2,
492
494
  alignJustify,
@@ -540,6 +542,7 @@ import {
540
542
  getOpenFramePaths,
541
543
  getPaginationRowModel,
542
544
  getPersistedProxyEmail,
545
+ getProxiedImageUrl as getProxiedImageUrl2,
543
546
  getSortedRowModel,
544
547
  getStatusColorScheme,
545
548
  getTabById,
@@ -613,7 +616,7 @@ import {
613
616
  useThemeToggle,
614
617
  useUnifiedChat,
615
618
  usesCanonicalStatusStyle
616
- } from "../chunk-BCPLTDRW.js";
619
+ } from "../chunk-VFMMVGA4.js";
617
620
  import {
618
621
  CommandApprovalToast,
619
622
  ToastCard,
@@ -748,7 +751,7 @@ import {
748
751
  usePageActionsBottomPadding,
749
752
  useVideoOriginPreconnect,
750
753
  useVideoWarmup
751
- } from "../chunk-ICOMPUMX.js";
754
+ } from "../chunk-BSOHVQ7X.js";
752
755
  import "../chunk-ZXZJSTNV.js";
753
756
  import {
754
757
  useChatRuntime
@@ -1273,21 +1276,6 @@ function getVendorLogo(vendor) {
1273
1276
  return null;
1274
1277
  }
1275
1278
 
1276
- // src/utils/image-proxy-stub.ts
1277
- function getProxiedImageUrl2(imageUrl) {
1278
- if (!imageUrl) return null;
1279
- if (imageUrl.startsWith("http://") || imageUrl.startsWith("https://")) {
1280
- if (imageUrl.includes("/api/image-proxy")) {
1281
- return imageUrl;
1282
- }
1283
- if (imageUrl.includes("openmsp.ai")) {
1284
- return imageUrl;
1285
- }
1286
- return `/api/image-proxy?url=${encodeURIComponent(imageUrl)}`;
1287
- }
1288
- return imageUrl;
1289
- }
1290
-
1291
1279
  // src/components/vendor-icon.tsx
1292
1280
  import { jsx as jsx4 } from "react/jsx-runtime";
1293
1281
  var sizeClasses = {
@@ -2715,14 +2703,14 @@ function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height = 300, o
2715
2703
  ] }) : /* @__PURE__ */ jsx17(
2716
2704
  "div",
2717
2705
  {
2718
- className: `w-full h-full border-2 border-dashed ${uploading ? "border-[#FFC008]" : "border-ods-border hover:border-[#FFC008]"} rounded-lg flex flex-col items-center justify-center cursor-pointer bg-[#1A1A1A]`,
2706
+ className: `w-full h-full border-2 border-dashed ${uploading ? "border-ods-accent" : "border-ods-border hover:border-ods-accent"} rounded-lg flex flex-col items-center justify-center cursor-pointer bg-ods-bg`,
2719
2707
  style: { height: heightStyle },
2720
2708
  onClick: openDialog,
2721
2709
  children: uploading ? /* @__PURE__ */ jsx17(Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs12(Fragment4, { children: [
2722
2710
  /* @__PURE__ */ jsx17(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary" }),
2723
2711
  /* @__PURE__ */ jsx17("span", { className: "text-ods-text-primary font-['DM_Sans'] text-[16px] font-medium mt-2", children: "Upload cover image" }),
2724
2712
  /* @__PURE__ */ jsx17("span", { className: "text-ods-text-secondary font-['DM_Sans'] text-[14px] mt-1", children: "Click to upload or drag and drop" }),
2725
- /* @__PURE__ */ jsx17("span", { className: "text-[#666666] font-['DM_Sans'] text-[12px]", children: "PNG, JPEG, WebP, GIF up to 5MB" })
2713
+ /* @__PURE__ */ jsx17("span", { className: "text-ods-text-secondary font-['DM_Sans'] text-[12px]", children: "PNG, JPEG, WebP, GIF up to 5MB" })
2726
2714
  ] })
2727
2715
  }
2728
2716
  ),
@@ -5842,11 +5830,58 @@ function ProductReleasesView({
5842
5830
  // src/components/shared/product-release/release-detail-page.tsx
5843
5831
  init_next_link();
5844
5832
  init_next_navigation();
5845
- import { useState as useState7, useEffect as useEffect6 } from "react";
5846
- import { AlertTriangle, ExternalLink, BookMarked, Sparkles as Sparkles2, TrendingUp, Wrench } from "lucide-react";
5833
+ import { useState as useState8, useEffect as useEffect6 } from "react";
5834
+
5835
+ // src/components/shared/media-gallery-strip.tsx
5836
+ import { useState as useState7 } from "react";
5847
5837
  import { Fragment as Fragment10, jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
5838
+ function isGalleryImage(mediaType) {
5839
+ return mediaType !== "video" && mediaType !== "demo";
5840
+ }
5841
+ function MediaGalleryStrip({ items, maxDisplay, className }) {
5842
+ const [galleryOpen, setGalleryOpen] = useState7(false);
5843
+ const [galleryIndex, setGalleryIndex] = useState7(0);
5844
+ if (!items || items.length === 0) return null;
5845
+ const display = typeof maxDisplay === "number" ? items.slice(0, Math.max(0, maxDisplay)) : items;
5846
+ const galleryImages = display.filter((m) => isGalleryImage(m.media_type)).map((m) => m.media_url);
5847
+ const tileClass = "shrink-0 w-[240px] h-[200px] rounded-md overflow-hidden border border-ods-border bg-black transition-opacity";
5848
+ return /* @__PURE__ */ jsxs42(Fragment10, { children: [
5849
+ /* @__PURE__ */ jsx52("div", { className: `flex gap-6 overflow-x-auto w-full ${className ?? ""}`, children: display.map((mediaItem, index) => {
5850
+ if (isGalleryImage(mediaItem.media_type)) {
5851
+ return /* @__PURE__ */ jsx52(
5852
+ "button",
5853
+ {
5854
+ type: "button",
5855
+ className: `${tileClass} cursor-pointer hover:opacity-80`,
5856
+ "aria-label": `Open ${mediaItem.title || `media ${index + 1}`} in gallery`,
5857
+ onClick: () => {
5858
+ setGalleryIndex(display.slice(0, index).filter((m) => isGalleryImage(m.media_type)).length);
5859
+ setGalleryOpen(true);
5860
+ },
5861
+ children: /* @__PURE__ */ jsx52("img", { src: mediaItem.media_url, alt: mediaItem.title || `Media ${index + 1}`, className: "w-full h-full object-cover" })
5862
+ },
5863
+ mediaItem.id || index
5864
+ );
5865
+ }
5866
+ return /* @__PURE__ */ jsx52("div", { className: tileClass, children: /* @__PURE__ */ jsx52(Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
5867
+ }) }),
5868
+ galleryImages.length > 0 && /* @__PURE__ */ jsx52(
5869
+ ImageGalleryModal,
5870
+ {
5871
+ images: galleryImages,
5872
+ isOpen: galleryOpen,
5873
+ onClose: () => setGalleryOpen(false),
5874
+ initialIndex: galleryIndex
5875
+ }
5876
+ )
5877
+ ] });
5878
+ }
5879
+
5880
+ // src/components/shared/product-release/release-detail-page.tsx
5881
+ import { AlertTriangle, ExternalLink, BookMarked, Sparkles as Sparkles2, TrendingUp, Wrench } from "lucide-react";
5882
+ import { Fragment as Fragment11, jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
5848
5883
  function DefaultMarkdownRenderer({ content }) {
5849
- return /* @__PURE__ */ jsx52("div", { className: "whitespace-pre-wrap", children: content });
5884
+ return /* @__PURE__ */ jsx53("div", { className: "whitespace-pre-wrap", children: content });
5850
5885
  }
5851
5886
  function ReleaseDetailPage({
5852
5887
  authorHref,
@@ -5865,15 +5900,13 @@ function ReleaseDetailPage({
5865
5900
  const router = useRouter();
5866
5901
  const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
5867
5902
  const release = initialData || fetchedRelease;
5868
- const [galleryOpen, setGalleryOpen] = useState7(false);
5869
- const [galleryIndex, setGalleryIndex] = useState7(0);
5870
5903
  const showBackButton = backButton !== false;
5871
5904
  const backLabel = (backButton ? backButton.label : void 0) ?? "Back to home";
5872
5905
  const backHref = (backButton ? backButton.href : void 0) ?? "/";
5873
- const [roadmapTasks, setRoadmapTasks] = useState7([]);
5874
- const [deliveryData, setDeliveryData] = useState7(null);
5875
- const [roadmapLoading, setRoadmapLoading] = useState7(false);
5876
- const [deliveryLoading, setDeliveryLoading] = useState7(false);
5906
+ const [roadmapTasks, setRoadmapTasks] = useState8([]);
5907
+ const [deliveryData, setDeliveryData] = useState8(null);
5908
+ const [roadmapLoading, setRoadmapLoading] = useState8(false);
5909
+ const [deliveryLoading, setDeliveryLoading] = useState8(false);
5877
5910
  useEffect6(() => {
5878
5911
  async function fetchLinkedTasks() {
5879
5912
  if (!release) return;
@@ -5905,12 +5938,12 @@ function ReleaseDetailPage({
5905
5938
  fetchLinkedTasks();
5906
5939
  }, [release, RoadmapSection, DeliverySection, roadmapApiEndpoint, deliveryApiEndpoint]);
5907
5940
  if (!initialData && isLoading) {
5908
- return /* @__PURE__ */ jsx52(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
5941
+ return /* @__PURE__ */ jsx53(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
5909
5942
  }
5910
5943
  if (error || !release) {
5911
- return /* @__PURE__ */ jsxs42("div", { className: "text-center py-16", children: [
5912
- /* @__PURE__ */ jsx52("h1", { className: "text-4xl font-bold text-ods-text-primary mb-4", children: "Release Not Found" }),
5913
- /* @__PURE__ */ jsx52("p", { className: "text-xl text-ods-text-secondary", children: "The release you're looking for doesn't exist." })
5944
+ return /* @__PURE__ */ jsxs43("div", { className: "text-center py-16", children: [
5945
+ /* @__PURE__ */ jsx53("h1", { className: "text-4xl font-bold text-ods-text-primary mb-4", children: "Release Not Found" }),
5946
+ /* @__PURE__ */ jsx53("p", { className: "text-xl text-ods-text-secondary", children: "The release you're looking for doesn't exist." })
5914
5947
  ] });
5915
5948
  }
5916
5949
  const hasBreakingChanges = Array.isArray(release.breaking_changes) && release.breaking_changes.length > 0;
@@ -5936,8 +5969,8 @@ function ReleaseDetailPage({
5936
5969
  const featuresAdded = release.features_added;
5937
5970
  const bugFixed = release.bugs_fixed;
5938
5971
  const improvements = release.improvements;
5939
- return /* @__PURE__ */ jsxs42(PageShell, { children: [
5940
- showBackButton && /* @__PURE__ */ jsx52(
5972
+ return /* @__PURE__ */ jsxs43(PageShell, { children: [
5973
+ showBackButton && /* @__PURE__ */ jsx53(
5941
5974
  BackButton,
5942
5975
  {
5943
5976
  label: backLabel,
@@ -5945,29 +5978,29 @@ function ReleaseDetailPage({
5945
5978
  className: "hidden md:inline-flex mb-4"
5946
5979
  }
5947
5980
  ),
5948
- /* @__PURE__ */ jsxs42("div", { className: "space-y-6 md:space-y-8", children: [
5949
- /* @__PURE__ */ jsx52("div", { className: "flex flex-col md:flex-row md:items-end gap-4 w-full", children: /* @__PURE__ */ jsxs42("div", { className: "flex-1 flex flex-col gap-2", children: [
5950
- /* @__PURE__ */ jsx52("h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
5951
- /* @__PURE__ */ jsxs42("p", { className: "text-h4 text-ods-text-secondary", children: [
5981
+ /* @__PURE__ */ jsxs43("div", { className: "space-y-6 md:space-y-8", children: [
5982
+ /* @__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: [
5983
+ /* @__PURE__ */ jsx53("h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
5984
+ /* @__PURE__ */ jsxs43("p", { className: "text-h4 text-ods-text-secondary", children: [
5952
5985
  "Version: ",
5953
5986
  releaseVersion
5954
5987
  ] })
5955
5988
  ] }) }),
5956
- /* @__PURE__ */ jsx52(EntityTagBadges, { tags: release.product_release_tags }),
5957
- /* @__PURE__ */ jsxs42("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
5958
- /* @__PURE__ */ jsx52("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__ */ jsxs42("div", { className: "flex flex-col gap-0", children: [
5959
- /* @__PURE__ */ jsx52("p", { className: "text-h4 text-ods-text-primary", children: releaseType.toLocaleUpperCase() }),
5960
- /* @__PURE__ */ jsx52("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Type" })
5989
+ /* @__PURE__ */ jsx53(EntityTagBadges, { tags: release.product_release_tags }),
5990
+ /* @__PURE__ */ jsxs43("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
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: releaseType.toLocaleUpperCase() }),
5993
+ /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Type" })
5961
5994
  ] }) }),
5962
- /* @__PURE__ */ jsx52("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__ */ jsxs42("div", { className: "flex flex-col gap-0", children: [
5963
- /* @__PURE__ */ jsx52("p", { className: "text-h4 text-ods-text-primary", children: releaseStatus.toLocaleUpperCase() }),
5964
- /* @__PURE__ */ jsx52("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Status" })
5995
+ /* @__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: [
5996
+ /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: releaseStatus.toLocaleUpperCase() }),
5997
+ /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Status" })
5965
5998
  ] }) }),
5966
- /* @__PURE__ */ jsx52("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__ */ jsxs42("div", { className: "flex flex-col gap-0", children: [
5967
- /* @__PURE__ */ jsx52("p", { className: "text-h4 text-ods-text-primary", children: formatReleaseDate(releaseDate) }),
5968
- /* @__PURE__ */ jsx52("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Date" })
5999
+ /* @__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: [
6000
+ /* @__PURE__ */ jsx53("p", { className: "text-h4 text-ods-text-primary", children: formatReleaseDate(releaseDate) }),
6001
+ /* @__PURE__ */ jsx53("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Release Date" })
5969
6002
  ] }) }),
5970
- /* @__PURE__ */ jsx52(
6003
+ /* @__PURE__ */ jsx53(
5971
6004
  EntityMetadataAuthorCell,
5972
6005
  {
5973
6006
  author: author ?? { full_name: null, avatar_url: null },
@@ -5975,22 +6008,9 @@ function ReleaseDetailPage({
5975
6008
  }
5976
6009
  )
5977
6010
  ] }),
5978
- releaseMedia && releaseMedia.length > 0 && /* @__PURE__ */ jsx52("div", { className: "flex gap-6 overflow-x-auto w-full", children: releaseMedia.slice(0, 5).map((mediaItem, index) => /* @__PURE__ */ jsx52(
5979
- "div",
5980
- {
5981
- className: "shrink-0 w-[240px] h-[200px] rounded-md overflow-hidden border border-ods-border bg-black cursor-pointer hover:opacity-80 transition-opacity",
5982
- onClick: () => {
5983
- if (mediaItem.media_type !== "video" && mediaItem.media_type !== "demo") {
5984
- setGalleryIndex(index);
5985
- setGalleryOpen(true);
5986
- }
5987
- },
5988
- children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ jsx52(Video, { url: mediaItem.media_url, layout: "native" }) : /* @__PURE__ */ jsx52("img", { src: mediaItem.media_url, alt: mediaItem.title || `Media ${index + 1}`, className: "w-full h-full object-cover" })
5989
- },
5990
- mediaItem.id || index
5991
- )) }),
5992
- releaseSummary && /* @__PURE__ */ jsx52("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx52("p", { children: releaseSummary }) }),
5993
- VideoDisplaySection ? /* @__PURE__ */ jsx52(
6011
+ /* @__PURE__ */ jsx53(MediaGalleryStrip, { items: releaseMedia ?? [], maxDisplay: 5 }),
6012
+ releaseSummary && /* @__PURE__ */ jsx53("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx53("p", { children: releaseSummary }) }),
6013
+ VideoDisplaySection ? /* @__PURE__ */ jsx53(
5994
6014
  VideoDisplaySection,
5995
6015
  {
5996
6016
  mainVideoUrl,
@@ -6004,8 +6024,8 @@ function ReleaseDetailPage({
6004
6024
  srtContent: release?.srt_content,
6005
6025
  captionsUrl: release?.captionsUrl
6006
6026
  }
6007
- ) : /* @__PURE__ */ jsxs42(Fragment10, { children: [
6008
- youtubeUrl && /* @__PURE__ */ jsx52(
6027
+ ) : /* @__PURE__ */ jsxs43(Fragment11, { children: [
6028
+ youtubeUrl && /* @__PURE__ */ jsx53(
6009
6029
  Video,
6010
6030
  {
6011
6031
  kind: "youtube",
@@ -6014,7 +6034,7 @@ function ReleaseDetailPage({
6014
6034
  layout: "native"
6015
6035
  }
6016
6036
  ),
6017
- !youtubeUrl && mainVideoUrl && /* @__PURE__ */ jsx52(
6037
+ !youtubeUrl && mainVideoUrl && /* @__PURE__ */ jsx53(
6018
6038
  Video,
6019
6039
  {
6020
6040
  url: mainVideoUrl,
@@ -6023,7 +6043,7 @@ function ReleaseDetailPage({
6023
6043
  layout: "centered"
6024
6044
  }
6025
6045
  ),
6026
- highlightVideoUrl && /* @__PURE__ */ jsx52(
6046
+ highlightVideoUrl && /* @__PURE__ */ jsx53(
6027
6047
  Video,
6028
6048
  {
6029
6049
  url: highlightVideoUrl,
@@ -6032,56 +6052,56 @@ function ReleaseDetailPage({
6032
6052
  }
6033
6053
  )
6034
6054
  ] }),
6035
- releaseContent && /* @__PURE__ */ jsx52("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx52(MarkdownRenderer, { content: releaseContent }) }),
6036
- hasBreakingChanges && /* @__PURE__ */ jsx52(Card, { className: "border-red-500 bg-red-500/10", children: /* @__PURE__ */ jsx52(CardContent, { className: "p-6", children: /* @__PURE__ */ jsxs42("div", { className: "flex items-center gap-3", children: [
6037
- /* @__PURE__ */ jsx52(AlertTriangle, { className: "h-6 w-6 text-red-500" }),
6038
- /* @__PURE__ */ jsxs42("div", { children: [
6039
- /* @__PURE__ */ jsx52("h3", { className: "font-bold text-red-500 text-lg", children: "Breaking Changes" }),
6040
- /* @__PURE__ */ jsx52("p", { className: "text-ods-text-secondary", children: "This release contains breaking changes. Review carefully before upgrading." })
6055
+ releaseContent && /* @__PURE__ */ jsx53("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx53(MarkdownRenderer, { content: releaseContent }) }),
6056
+ 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: [
6057
+ /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6 text-red-500" }),
6058
+ /* @__PURE__ */ jsxs43("div", { children: [
6059
+ /* @__PURE__ */ jsx53("h3", { className: "font-bold text-red-500 text-lg", children: "Breaking Changes" }),
6060
+ /* @__PURE__ */ jsx53("p", { className: "text-ods-text-secondary", children: "This release contains breaking changes. Review carefully before upgrading." })
6041
6061
  ] })
6042
6062
  ] }) }) }),
6043
- /* @__PURE__ */ jsx52(
6063
+ /* @__PURE__ */ jsx53(
6044
6064
  ReleaseChangelogSection,
6045
6065
  {
6046
6066
  title: "Breaking Changes",
6047
6067
  entries: breakingChanges || [],
6048
6068
  isBreaking: true,
6049
6069
  hideTitle: true,
6050
- icon: /* @__PURE__ */ jsx52(AlertTriangle, { className: "h-6 w-6" }),
6070
+ icon: /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6" }),
6051
6071
  SimpleMarkdownRenderer: MarkdownRenderer
6052
6072
  }
6053
6073
  ),
6054
- /* @__PURE__ */ jsx52(
6074
+ /* @__PURE__ */ jsx53(
6055
6075
  ReleaseChangelogSection,
6056
6076
  {
6057
6077
  title: "Features Added",
6058
6078
  entries: featuresAdded || [],
6059
- icon: /* @__PURE__ */ jsx52(Sparkles2, { className: "h-6 w-6" }),
6079
+ icon: /* @__PURE__ */ jsx53(Sparkles2, { className: "h-6 w-6" }),
6060
6080
  previewFirst: true,
6061
6081
  SimpleMarkdownRenderer: MarkdownRenderer
6062
6082
  }
6063
6083
  ),
6064
- /* @__PURE__ */ jsx52(
6084
+ /* @__PURE__ */ jsx53(
6065
6085
  ReleaseChangelogSection,
6066
6086
  {
6067
6087
  title: "Bugs Fixed",
6068
6088
  entries: bugFixed || [],
6069
- icon: /* @__PURE__ */ jsx52(Wrench, { className: "h-6 w-6" }),
6089
+ icon: /* @__PURE__ */ jsx53(Wrench, { className: "h-6 w-6" }),
6070
6090
  previewFirst: true,
6071
6091
  SimpleMarkdownRenderer: MarkdownRenderer
6072
6092
  }
6073
6093
  ),
6074
- /* @__PURE__ */ jsx52(
6094
+ /* @__PURE__ */ jsx53(
6075
6095
  ReleaseChangelogSection,
6076
6096
  {
6077
6097
  title: "Improvements",
6078
6098
  entries: improvements || [],
6079
- icon: /* @__PURE__ */ jsx52(TrendingUp, { className: "h-6 w-6" }),
6099
+ icon: /* @__PURE__ */ jsx53(TrendingUp, { className: "h-6 w-6" }),
6080
6100
  previewFirst: true,
6081
6101
  SimpleMarkdownRenderer: MarkdownRenderer
6082
6102
  }
6083
6103
  ),
6084
- !VideoDisplaySection && VideoSection && videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx52(
6104
+ !VideoDisplaySection && VideoSection && videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx53(
6085
6105
  VideoSection,
6086
6106
  {
6087
6107
  bites: videoBites,
@@ -6089,9 +6109,9 @@ function ReleaseDetailPage({
6089
6109
  filterPublished: true
6090
6110
  }
6091
6111
  ),
6092
- RoadmapSection && (roadmapLoading || roadmapTasks.length > 0) && /* @__PURE__ */ jsxs42("div", { className: "space-y-4 w-full", children: [
6093
- /* @__PURE__ */ jsx52("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Roadmap Items" }),
6094
- /* @__PURE__ */ jsx52(
6112
+ RoadmapSection && (roadmapLoading || roadmapTasks.length > 0) && /* @__PURE__ */ jsxs43("div", { className: "space-y-4 w-full", children: [
6113
+ /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Roadmap Items" }),
6114
+ /* @__PURE__ */ jsx53(
6095
6115
  RoadmapSection,
6096
6116
  {
6097
6117
  items: roadmapTasks,
@@ -6106,9 +6126,9 @@ function ReleaseDetailPage({
6106
6126
  }
6107
6127
  )
6108
6128
  ] }),
6109
- DeliverySection && (deliveryLoading || deliveryData && (deliveryData.completed.length > 0 || deliveryData.inProgress.length > 0)) && /* @__PURE__ */ jsxs42("div", { className: "w-full space-y-4", children: [
6110
- /* @__PURE__ */ jsx52("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Enhancements and Bug-fixes" }),
6111
- /* @__PURE__ */ jsx52(
6129
+ DeliverySection && (deliveryLoading || deliveryData && (deliveryData.completed.length > 0 || deliveryData.inProgress.length > 0)) && /* @__PURE__ */ jsxs43("div", { className: "w-full space-y-4", children: [
6130
+ /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Enhancements and Bug-fixes" }),
6131
+ /* @__PURE__ */ jsx53(
6112
6132
  DeliverySection,
6113
6133
  {
6114
6134
  data: deliveryData,
@@ -6116,13 +6136,13 @@ function ReleaseDetailPage({
6116
6136
  }
6117
6137
  )
6118
6138
  ] }),
6119
- (githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs42("div", { className: "space-y-1 w-full", children: [
6120
- /* @__PURE__ */ jsx52("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
6121
- /* @__PURE__ */ jsx52(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs42("div", { className: "space-y-4", children: [
6122
- githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx52(Fragment10, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6123
- /* @__PURE__ */ jsx52(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
6124
- /* @__PURE__ */ jsx52("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
6125
- /* @__PURE__ */ jsx52(
6139
+ (githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs43("div", { className: "space-y-1 w-full", children: [
6140
+ /* @__PURE__ */ jsx53("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
6141
+ /* @__PURE__ */ jsx53(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs43("div", { className: "space-y-4", children: [
6142
+ githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6143
+ /* @__PURE__ */ jsx53(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
6144
+ /* @__PURE__ */ jsx53("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
6145
+ /* @__PURE__ */ jsx53(
6126
6146
  "a",
6127
6147
  {
6128
6148
  href: ghRelease.github_release_url,
@@ -6132,15 +6152,15 @@ function ReleaseDetailPage({
6132
6152
  children: ghRelease.github_release_url.split("/").pop()
6133
6153
  }
6134
6154
  ),
6135
- /* @__PURE__ */ jsx52(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6155
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6136
6156
  ] }, ghRelease.id)) }),
6137
- knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx52(Fragment10, { children: knowledgeBaseLinks.map((linkObj) => {
6157
+ knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: knowledgeBaseLinks.map((linkObj) => {
6138
6158
  const path = typeof linkObj === "string" ? linkObj : linkObj.kb_article_path;
6139
6159
  const linkId = typeof linkObj === "string" ? path : linkObj.id || path;
6140
- return /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6141
- /* @__PURE__ */ jsx52(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6142
- /* @__PURE__ */ jsx52("span", { className: "text-h4 text-ods-text-primary", children: "Knowledge Base" }),
6143
- /* @__PURE__ */ jsx52(
6160
+ return /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6161
+ /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6162
+ /* @__PURE__ */ jsx53("span", { className: "text-h4 text-ods-text-primary", children: "Knowledge Base" }),
6163
+ /* @__PURE__ */ jsx53(
6144
6164
  next_link_default,
6145
6165
  {
6146
6166
  href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
@@ -6148,12 +6168,12 @@ function ReleaseDetailPage({
6148
6168
  children: path.replace(/^\//, "").split("/").pop()?.replace(/-/g, " ") || "View Article"
6149
6169
  }
6150
6170
  ),
6151
- /* @__PURE__ */ jsx52(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6171
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6152
6172
  ] }, linkId);
6153
6173
  }) }),
6154
- migrationGuideUrl && /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6155
- /* @__PURE__ */ jsx52(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6156
- /* @__PURE__ */ jsx52(
6174
+ migrationGuideUrl && /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6175
+ /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6176
+ /* @__PURE__ */ jsx53(
6157
6177
  "a",
6158
6178
  {
6159
6179
  href: migrationGuideUrl,
@@ -6163,11 +6183,11 @@ function ReleaseDetailPage({
6163
6183
  children: "\u{1F4D6} Migration Guide"
6164
6184
  }
6165
6185
  ),
6166
- /* @__PURE__ */ jsx52(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6186
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6167
6187
  ] }),
6168
- documentationUrl && /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6169
- /* @__PURE__ */ jsx52(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6170
- /* @__PURE__ */ jsx52(
6188
+ documentationUrl && /* @__PURE__ */ jsxs43("div", { className: "flex items-start gap-1", children: [
6189
+ /* @__PURE__ */ jsx53(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6190
+ /* @__PURE__ */ jsx53(
6171
6191
  "a",
6172
6192
  {
6173
6193
  href: documentationUrl,
@@ -6177,41 +6197,32 @@ function ReleaseDetailPage({
6177
6197
  children: "\u{1F4DA} Documentation"
6178
6198
  }
6179
6199
  ),
6180
- /* @__PURE__ */ jsx52(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6200
+ /* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
6181
6201
  ] })
6182
6202
  ] }) })
6183
6203
  ] })
6184
- ] }),
6185
- releaseMedia && releaseMedia.filter((m) => m.media_type !== "video" && m.media_type !== "demo").length > 0 && /* @__PURE__ */ jsx52(
6186
- ImageGalleryModal,
6187
- {
6188
- images: releaseMedia.filter((m) => m.media_type !== "video" && m.media_type !== "demo").map((m) => m.media_url),
6189
- isOpen: galleryOpen,
6190
- onClose: () => setGalleryOpen(false),
6191
- initialIndex: galleryIndex
6192
- }
6193
- )
6204
+ ] })
6194
6205
  ] });
6195
6206
  }
6196
6207
 
6197
6208
  // src/components/shared/product-release/release-detail-skeleton.tsx
6198
- import { jsx as jsx53 } from "react/jsx-runtime";
6209
+ import { jsx as jsx54 } from "react/jsx-runtime";
6199
6210
  function ReleaseDetailSkeleton() {
6200
- return /* @__PURE__ */ jsx53(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
6211
+ return /* @__PURE__ */ jsx54(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
6201
6212
  }
6202
6213
 
6203
6214
  // src/components/shared/roadmap/roadmap-grid.tsx
6204
- import { useEffect as useEffect8, useRef as useRef5, useState as useState9 } from "react";
6215
+ import { useEffect as useEffect8, useRef as useRef5, useState as useState10 } from "react";
6205
6216
 
6206
6217
  // src/components/shared/roadmap/use-roadmap-voting.ts
6207
- import { useState as useState8, useEffect as useEffect7, useCallback as useCallback4 } from "react";
6218
+ import { useState as useState9, useEffect as useEffect7, useCallback as useCallback4 } from "react";
6208
6219
  var DEFAULT_VOTE_ENDPOINT = "/api/roadmap/vote";
6209
6220
  var DEFAULT_STORAGE_KEY = "roadmap_votes_v1";
6210
6221
  function useRoadmapVoting(options = {}) {
6211
6222
  const voteApiEndpoint = options.voteApiEndpoint ?? DEFAULT_VOTE_ENDPOINT;
6212
6223
  const storageKey = options.storageKey ?? DEFAULT_STORAGE_KEY;
6213
- const [votes, setVotes] = useState8({});
6214
- const [isLoading, setIsLoading] = useState8(true);
6224
+ const [votes, setVotes] = useState9({});
6225
+ const [isLoading, setIsLoading] = useState9(true);
6215
6226
  useEffect7(() => {
6216
6227
  setIsLoading(true);
6217
6228
  setVotes({});
@@ -6304,7 +6315,7 @@ function useRoadmapVoting(options = {}) {
6304
6315
 
6305
6316
  // src/components/shared/roadmap/roadmap-grid.tsx
6306
6317
  init_cn();
6307
- import { jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
6318
+ import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
6308
6319
  var DEFAULT_BUILD_REFRESH_URL = (taskId) => `/api/roadmap/${taskId}`;
6309
6320
  var BACKLOG = "Backlog";
6310
6321
  function getStatusPriority(status) {
@@ -6353,7 +6364,7 @@ function RoadmapGridSingle({
6353
6364
  onVote,
6354
6365
  votingTasks
6355
6366
  }) {
6356
- return /* @__PURE__ */ jsx54("div", { className: `grid grid-cols-1 md:grid-cols-2 gap-6 ${showLeftMargin ? "md:ml-[120px]" : ""}`, children: items.map((item) => /* @__PURE__ */ jsx54(
6367
+ return /* @__PURE__ */ jsx55("div", { className: `grid grid-cols-1 md:grid-cols-2 gap-6 ${showLeftMargin ? "md:ml-[120px]" : ""}`, children: items.map((item) => /* @__PURE__ */ jsx55(
6357
6368
  RoadmapCard,
6358
6369
  {
6359
6370
  item,
@@ -6375,7 +6386,7 @@ function RoadmapGrid({
6375
6386
  quartersToKeepClosed = 2
6376
6387
  }) {
6377
6388
  const { getVote, toggleVote } = useRoadmapVoting(votingOptions);
6378
- const [votingTasks, setVotingTasks] = useState9(/* @__PURE__ */ new Set());
6389
+ const [votingTasks, setVotingTasks] = useState10(/* @__PURE__ */ new Set());
6379
6390
  const handleVote = async (taskId, voteType) => {
6380
6391
  if (votingTasks.has(taskId)) return;
6381
6392
  setVotingTasks((prev) => new Set(prev).add(taskId));
@@ -6412,8 +6423,8 @@ function RoadmapGrid({
6412
6423
  return compareQuarters(aD, bD);
6413
6424
  });
6414
6425
  const sortedQuartersKey = sortedQuarters.join(",");
6415
- const [expandedQuarters, setExpandedQuarters] = useState9([]);
6416
- const [isInitialized, setIsInitialized] = useState9(false);
6426
+ const [expandedQuarters, setExpandedQuarters] = useState10([]);
6427
+ const [isInitialized, setIsInitialized] = useState10(false);
6417
6428
  const hasSetInitialState = useRef5(false);
6418
6429
  const prevItemsLength = useRef5(0);
6419
6430
  useEffect8(() => {
@@ -6434,7 +6445,7 @@ function RoadmapGrid({
6434
6445
  );
6435
6446
  }, [hasActiveFilters, sortedQuartersKey, isInitialized, quartersToKeepClosed]);
6436
6447
  if (items.length === 0) {
6437
- return /* @__PURE__ */ jsx54(
6448
+ return /* @__PURE__ */ jsx55(
6438
6449
  EmptyState,
6439
6450
  {
6440
6451
  type: "generic",
@@ -6444,7 +6455,7 @@ function RoadmapGrid({
6444
6455
  );
6445
6456
  }
6446
6457
  if (!groupByQuarter) {
6447
- return /* @__PURE__ */ jsx54(
6458
+ return /* @__PURE__ */ jsx55(
6448
6459
  RoadmapGridSingle,
6449
6460
  {
6450
6461
  items,
@@ -6455,7 +6466,7 @@ function RoadmapGrid({
6455
6466
  }
6456
6467
  );
6457
6468
  }
6458
- return /* @__PURE__ */ jsx54(
6469
+ return /* @__PURE__ */ jsx55(
6459
6470
  Accordion,
6460
6471
  {
6461
6472
  type: "multiple",
@@ -6465,15 +6476,15 @@ function RoadmapGrid({
6465
6476
  children: sortedQuarters.map((quarter) => {
6466
6477
  const itemCount = itemsByQuarter[quarter]?.length || 0;
6467
6478
  const isExpanded = expandedQuarters.includes(quarter);
6468
- return /* @__PURE__ */ jsxs43(
6479
+ return /* @__PURE__ */ jsxs44(
6469
6480
  AccordionItem,
6470
6481
  {
6471
6482
  value: quarter,
6472
6483
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
6473
6484
  className: "border-0",
6474
6485
  children: [
6475
- /* @__PURE__ */ jsx54(AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:h-5 [&>svg]:w-5 [&>svg]:text-ods-text-secondary [&>svg]:ml-auto [&>svg]:shrink-0", children: /* @__PURE__ */ jsxs43("div", { className: "flex items-center gap-3", children: [
6476
- /* @__PURE__ */ jsxs43(
6486
+ /* @__PURE__ */ jsx55(AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:h-5 [&>svg]:w-5 [&>svg]:text-ods-text-secondary [&>svg]:ml-auto [&>svg]:shrink-0", children: /* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-3", children: [
6487
+ /* @__PURE__ */ jsxs44(
6477
6488
  "h3",
6478
6489
  {
6479
6490
  className: cn(
@@ -6482,11 +6493,11 @@ function RoadmapGrid({
6482
6493
  ),
6483
6494
  children: [
6484
6495
  quarter,
6485
- /* @__PURE__ */ jsx54("span", { className: "text-ods-accent", children: ":" })
6496
+ /* @__PURE__ */ jsx55("span", { className: "text-ods-accent", children: ":" })
6486
6497
  ]
6487
6498
  }
6488
6499
  ),
6489
- /* @__PURE__ */ jsxs43(
6500
+ /* @__PURE__ */ jsxs44(
6490
6501
  "span",
6491
6502
  {
6492
6503
  className: cn(
@@ -6497,12 +6508,12 @@ function RoadmapGrid({
6497
6508
  itemCount,
6498
6509
  " ",
6499
6510
  itemCount === 1 ? "item" : "items",
6500
- isInitialized && !isExpanded && /* @__PURE__ */ jsx54("span", { className: "ml-2 text-ods-accent", children: "Click to expand" })
6511
+ isInitialized && !isExpanded && /* @__PURE__ */ jsx55("span", { className: "ml-2 text-ods-accent", children: "Click to expand" })
6501
6512
  ]
6502
6513
  }
6503
6514
  )
6504
6515
  ] }) }),
6505
- /* @__PURE__ */ jsx54(AccordionContent, { className: "pt-4 pb-0 overflow-hidden data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ jsx54(
6516
+ /* @__PURE__ */ jsx55(AccordionContent, { className: "pt-4 pb-0 overflow-hidden data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ jsx55(
6506
6517
  RoadmapGridSingle,
6507
6518
  {
6508
6519
  items: itemsByQuarter[quarter],
@@ -6522,36 +6533,36 @@ function RoadmapGrid({
6522
6533
  }
6523
6534
 
6524
6535
  // src/components/shared/roadmap/roadmap-grid-skeleton.tsx
6525
- import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
6536
+ import { jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
6526
6537
  function RoadmapCardSkeleton2() {
6527
- return /* @__PURE__ */ jsxs44("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[24px] flex flex-col gap-[16px] min-h-[340px] relative", children: [
6528
- /* @__PURE__ */ jsx55("div", { className: "absolute top-[24px] right-[24px]", children: /* @__PURE__ */ jsx55("div", { className: "h-[20px] w-[80px] bg-ods-border rounded animate-pulse" }) }),
6529
- /* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-[16px] pr-[120px]", children: [
6530
- /* @__PURE__ */ jsx55("div", { className: "w-[80px] h-[80px] bg-ods-border rounded-lg flex-shrink-0 animate-pulse" }),
6531
- /* @__PURE__ */ jsxs44("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
6532
- /* @__PURE__ */ jsx55("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx55("div", { className: "h-[24px] w-full bg-ods-border rounded animate-pulse" }) }),
6533
- /* @__PURE__ */ jsx55("div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ jsx55("div", { className: "h-[14px] w-1/2 bg-ods-border rounded animate-pulse" }) })
6538
+ return /* @__PURE__ */ jsxs45("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[24px] flex flex-col gap-[16px] min-h-[340px] relative", children: [
6539
+ /* @__PURE__ */ jsx56("div", { className: "absolute top-[24px] right-[24px]", children: /* @__PURE__ */ jsx56("div", { className: "h-[20px] w-[80px] bg-ods-border rounded animate-pulse" }) }),
6540
+ /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-[16px] pr-[120px]", children: [
6541
+ /* @__PURE__ */ jsx56("div", { className: "w-[80px] h-[80px] bg-ods-border rounded-lg flex-shrink-0 animate-pulse" }),
6542
+ /* @__PURE__ */ jsxs45("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
6543
+ /* @__PURE__ */ jsx56("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx56("div", { className: "h-[24px] w-full bg-ods-border rounded animate-pulse" }) }),
6544
+ /* @__PURE__ */ jsx56("div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ jsx56("div", { className: "h-[14px] w-1/2 bg-ods-border rounded animate-pulse" }) })
6534
6545
  ] })
6535
6546
  ] }),
6536
- /* @__PURE__ */ jsx55("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsxs44("div", { className: "w-full space-y-2", children: [
6537
- /* @__PURE__ */ jsx55("div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
6538
- /* @__PURE__ */ jsx55("div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
6539
- /* @__PURE__ */ jsx55("div", { className: "h-[24px] w-4/5 bg-ods-border rounded animate-pulse" })
6547
+ /* @__PURE__ */ jsx56("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsxs45("div", { className: "w-full space-y-2", children: [
6548
+ /* @__PURE__ */ jsx56("div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
6549
+ /* @__PURE__ */ jsx56("div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
6550
+ /* @__PURE__ */ jsx56("div", { className: "h-[24px] w-4/5 bg-ods-border rounded animate-pulse" })
6540
6551
  ] }) }),
6541
- /* @__PURE__ */ jsx55("div", { className: "flex-1" }),
6542
- /* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between", children: [
6543
- /* @__PURE__ */ jsx55("div", { className: "h-[48px] w-[120px] bg-ods-border rounded animate-pulse" }),
6544
- /* @__PURE__ */ jsx55("div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" })
6552
+ /* @__PURE__ */ jsx56("div", { className: "flex-1" }),
6553
+ /* @__PURE__ */ jsxs45("div", { className: "flex items-center justify-between", children: [
6554
+ /* @__PURE__ */ jsx56("div", { className: "h-[48px] w-[120px] bg-ods-border rounded animate-pulse" }),
6555
+ /* @__PURE__ */ jsx56("div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" })
6545
6556
  ] })
6546
6557
  ] });
6547
6558
  }
6548
6559
  function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
6549
- return /* @__PURE__ */ jsx55("div", { className: `grid grid-cols-1 md:grid-cols-2 gap-6 ${showLeftMargin ? "md:ml-[120px]" : ""}`, children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx55(RoadmapCardSkeleton2, {}, i)) });
6560
+ return /* @__PURE__ */ jsx56("div", { className: `grid grid-cols-1 md:grid-cols-2 gap-6 ${showLeftMargin ? "md:ml-[120px]" : ""}`, children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsx56(RoadmapCardSkeleton2, {}, i)) });
6550
6561
  }
6551
6562
 
6552
6563
  // src/components/shared/roadmap/roadmap-view.tsx
6553
6564
  import { useMemo as useMemo2 } from "react";
6554
- import { jsx as jsx56 } from "react/jsx-runtime";
6565
+ import { jsx as jsx57 } from "react/jsx-runtime";
6555
6566
  var DEFAULT_ENDPOINT2 = "/api/roadmap";
6556
6567
  var DEFAULT_SEARCH_PARAM_KEY2 = DEV_SECTION_PARAM_KEYS.search;
6557
6568
  var DEFAULT_STATUS_PARAM_KEY2 = DEV_SECTION_PARAM_KEYS.status;
@@ -6579,12 +6590,12 @@ function RoadmapView({
6579
6590
  );
6580
6591
  const items = data?.items ?? [];
6581
6592
  if (error) {
6582
- return /* @__PURE__ */ jsx56(LoadError, { message: "Failed to load roadmap.", onRetry: reload });
6593
+ return /* @__PURE__ */ jsx57(LoadError, { message: "Failed to load roadmap.", onRetry: reload });
6583
6594
  }
6584
6595
  if (isLoading && !data) {
6585
- return /* @__PURE__ */ jsx56(RoadmapGridSkeleton, { showLeftMargin });
6596
+ return /* @__PURE__ */ jsx57(RoadmapGridSkeleton, { showLeftMargin });
6586
6597
  }
6587
- return /* @__PURE__ */ jsx56(
6598
+ return /* @__PURE__ */ jsx57(
6588
6599
  RoadmapGrid,
6589
6600
  {
6590
6601
  items,
@@ -6601,46 +6612,46 @@ function RoadmapView({
6601
6612
  }
6602
6613
 
6603
6614
  // src/components/shared/delivery/delivery-lists.tsx
6604
- import { useEffect as useEffect9, useState as useState10 } from "react";
6615
+ import { useEffect as useEffect9, useState as useState11 } from "react";
6605
6616
 
6606
6617
  // src/components/shared/delivery/delivery-table.tsx
6607
- import { jsx as jsx57, jsxs as jsxs45 } from "react/jsx-runtime";
6618
+ import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
6608
6619
  function SkeletonRow() {
6609
- return /* @__PURE__ */ jsx57("div", { className: "border-b border-ods-border last:border-b-0 p-[12px] md:p-[16px]", children: /* @__PURE__ */ jsxs45("div", { className: "flex flex-col md:flex-row items-start justify-between gap-[12px] md:gap-[16px] w-full", children: [
6610
- /* @__PURE__ */ jsxs45("div", { className: "flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]", children: [
6611
- /* @__PURE__ */ jsx57("div", { className: "min-h-[24px] flex items-center", children: /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }) }),
6612
- /* @__PURE__ */ jsx57("div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-1/2" }) }),
6613
- /* @__PURE__ */ jsx57("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsxs45("div", { className: "flex-1 space-y-1", children: [
6614
- /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
6615
- /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
6616
- /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-2/3" })
6620
+ return /* @__PURE__ */ jsx58("div", { className: "border-b border-ods-border last:border-b-0 p-[12px] md:p-[16px]", children: /* @__PURE__ */ jsxs46("div", { className: "flex flex-col md:flex-row items-start justify-between gap-[12px] md:gap-[16px] w-full", children: [
6621
+ /* @__PURE__ */ jsxs46("div", { className: "flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]", children: [
6622
+ /* @__PURE__ */ jsx58("div", { className: "min-h-[24px] flex items-center", children: /* @__PURE__ */ jsx58("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }) }),
6623
+ /* @__PURE__ */ jsx58("div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ jsx58("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-1/2" }) }),
6624
+ /* @__PURE__ */ jsx58("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsxs46("div", { className: "flex-1 space-y-1", children: [
6625
+ /* @__PURE__ */ jsx58("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
6626
+ /* @__PURE__ */ jsx58("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
6627
+ /* @__PURE__ */ jsx58("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-2/3" })
6617
6628
  ] }) })
6618
6629
  ] }),
6619
- /* @__PURE__ */ jsxs45("div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
6620
- /* @__PURE__ */ jsx57("div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" }),
6621
- /* @__PURE__ */ jsx57("div", { className: "h-[32px] w-[120px] bg-ods-border rounded animate-pulse" })
6630
+ /* @__PURE__ */ jsxs46("div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
6631
+ /* @__PURE__ */ jsx58("div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" }),
6632
+ /* @__PURE__ */ jsx58("div", { className: "h-[32px] w-[120px] bg-ods-border rounded animate-pulse" })
6622
6633
  ] })
6623
6634
  ] }) });
6624
6635
  }
6625
6636
  function DeliveryTable({ items, isLoading = false }) {
6626
6637
  if (isLoading) {
6627
- return /* @__PURE__ */ jsx57("div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full", children: /* @__PURE__ */ jsx57("div", { className: "w-full", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsx57(SkeletonRow, {}, i)) }) });
6638
+ return /* @__PURE__ */ jsx58("div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full", children: /* @__PURE__ */ jsx58("div", { className: "w-full", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ jsx58(SkeletonRow, {}, i)) }) });
6628
6639
  }
6629
6640
  if (items.length === 0) {
6630
- return /* @__PURE__ */ jsx57("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[40px] text-center w-full", children: /* @__PURE__ */ jsx57("p", { className: "text-ods-text-secondary text-[14px] font-['DM_Sans'] font-medium", children: "No tasks available" }) });
6641
+ return /* @__PURE__ */ jsx58("div", { className: "bg-ods-card border border-ods-border rounded-[6px] p-[40px] text-center w-full", children: /* @__PURE__ */ jsx58("p", { className: "text-ods-text-secondary text-[14px] font-['DM_Sans'] font-medium", children: "No tasks available" }) });
6631
6642
  }
6632
- return /* @__PURE__ */ jsx57("div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full", children: /* @__PURE__ */ jsx57("div", { className: "w-full", children: items.map((item) => /* @__PURE__ */ jsx57(
6643
+ return /* @__PURE__ */ jsx58("div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full", children: /* @__PURE__ */ jsx58("div", { className: "w-full", children: items.map((item) => /* @__PURE__ */ jsx58(
6633
6644
  "div",
6634
6645
  {
6635
6646
  className: "border-b border-ods-border last:border-b-0",
6636
- children: /* @__PURE__ */ jsx57(DeliveryRow, { item })
6647
+ children: /* @__PURE__ */ jsx58(DeliveryRow, { item })
6637
6648
  },
6638
6649
  item.id
6639
6650
  )) }) });
6640
6651
  }
6641
6652
 
6642
6653
  // src/components/shared/delivery/delivery-lists.tsx
6643
- import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
6654
+ import { jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
6644
6655
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
6645
6656
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
6646
6657
  var DEFAULT_SEARCH_PARAM_KEY3 = DEV_SECTION_PARAM_KEYS.search;
@@ -6654,9 +6665,9 @@ function DeliveryLists({
6654
6665
  const searchParams = useSearchParams();
6655
6666
  const router = useRouter();
6656
6667
  const pathname = usePathname();
6657
- const [data, setData] = useState10(null);
6658
- const [isLoading, setIsLoading] = useState10(true);
6659
- const [error, setError] = useState10(null);
6668
+ const [data, setData] = useState11(null);
6669
+ const [isLoading, setIsLoading] = useState11(true);
6670
+ const [error, setError] = useState11(null);
6660
6671
  const searchQuery = searchParams.get(searchParamKey) || "";
6661
6672
  const taskTypeFilter = searchParams.get(taskTypeParamKey) || "all";
6662
6673
  useEffect9(() => {
@@ -6704,10 +6715,10 @@ function DeliveryLists({
6704
6715
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
6705
6716
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
6706
6717
  if (error) {
6707
- return /* @__PURE__ */ jsx58("div", { className: "w-full", children: /* @__PURE__ */ jsx58(LoadError, { message: error, onRetry: () => window.location.reload() }) });
6718
+ return /* @__PURE__ */ jsx59("div", { className: "w-full", children: /* @__PURE__ */ jsx59(LoadError, { message: error, onRetry: () => window.location.reload() }) });
6708
6719
  }
6709
- return /* @__PURE__ */ jsxs46("div", { className: "w-full flex flex-col gap-[40px]", children: [
6710
- !isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */ jsx58(
6720
+ return /* @__PURE__ */ jsxs47("div", { className: "w-full flex flex-col gap-[40px]", children: [
6721
+ !isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */ jsx59(
6711
6722
  EmptyState,
6712
6723
  {
6713
6724
  type: "search",
@@ -6722,7 +6733,7 @@ function DeliveryLists({
6722
6733
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
6723
6734
  }
6724
6735
  }
6725
- ) : /* @__PURE__ */ jsx58(
6736
+ ) : /* @__PURE__ */ jsx59(
6726
6737
  EmptyState,
6727
6738
  {
6728
6739
  type: "generic",
@@ -6731,12 +6742,12 @@ function DeliveryLists({
6731
6742
  showCTA: false
6732
6743
  }
6733
6744
  )),
6734
- showCompleted && (hasResults || isLoading) && /* @__PURE__ */ jsxs46("div", { className: "w-full", children: [
6735
- /* @__PURE__ */ jsxs46("h3", { className: "text-h2 text-ods-text-primary tracking-[-0.48px] md:tracking-[-0.56px] lg:tracking-[-0.64px] mb-4", children: [
6745
+ showCompleted && (hasResults || isLoading) && /* @__PURE__ */ jsxs47("div", { className: "w-full", children: [
6746
+ /* @__PURE__ */ jsxs47("h3", { className: "text-h2 text-ods-text-primary tracking-[-0.48px] md:tracking-[-0.56px] lg:tracking-[-0.64px] mb-4", children: [
6736
6747
  "Recently Completed",
6737
- /* @__PURE__ */ jsx58("span", { className: "text-ods-accent", children: ":" })
6748
+ /* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: ":" })
6738
6749
  ] }),
6739
- /* @__PURE__ */ jsx58(
6750
+ /* @__PURE__ */ jsx59(
6740
6751
  DeliveryTable,
6741
6752
  {
6742
6753
  items: filteredCompleted,
@@ -6744,12 +6755,12 @@ function DeliveryLists({
6744
6755
  }
6745
6756
  )
6746
6757
  ] }),
6747
- showInProgress && (hasResults || isLoading) && /* @__PURE__ */ jsxs46("div", { className: "w-full", children: [
6748
- /* @__PURE__ */ jsxs46("h3", { className: "text-h2 text-ods-text-primary tracking-[-0.48px] md:tracking-[-0.56px] lg:tracking-[-0.64px] mb-4", children: [
6758
+ showInProgress && (hasResults || isLoading) && /* @__PURE__ */ jsxs47("div", { className: "w-full", children: [
6759
+ /* @__PURE__ */ jsxs47("h3", { className: "text-h2 text-ods-text-primary tracking-[-0.48px] md:tracking-[-0.56px] lg:tracking-[-0.64px] mb-4", children: [
6749
6760
  "Active Tasks",
6750
- /* @__PURE__ */ jsx58("span", { className: "text-ods-accent", children: ":" })
6761
+ /* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: ":" })
6751
6762
  ] }),
6752
- /* @__PURE__ */ jsx58(
6763
+ /* @__PURE__ */ jsx59(
6753
6764
  DeliveryTable,
6754
6765
  {
6755
6766
  items: filteredInProgress,
@@ -6764,13 +6775,13 @@ function DeliveryLists({
6764
6775
  init_next_navigation();
6765
6776
 
6766
6777
  // src/components/shared/legal-document/use-legal-docs.ts
6767
- import { useState as useState11, useEffect as useEffect10, useCallback as useCallback5 } from "react";
6778
+ import { useState as useState12, useEffect as useEffect10, useCallback as useCallback5 } from "react";
6768
6779
  function useLegalDocs(docType, options = {}) {
6769
6780
  const { initialData = null, apiEndpoint } = options;
6770
6781
  const effectiveEndpoint = apiEndpoint ?? `/api/legal/${docType}`;
6771
- const [data, setData] = useState11(initialData ?? null);
6772
- const [isLoading, setIsLoading] = useState11(!initialData);
6773
- const [error, setError] = useState11(null);
6782
+ const [data, setData] = useState12(initialData ?? null);
6783
+ const [isLoading, setIsLoading] = useState12(!initialData);
6784
+ const [error, setError] = useState12(null);
6774
6785
  const fetchDocument = useCallback5(async () => {
6775
6786
  try {
6776
6787
  setIsLoading(true);
@@ -6815,7 +6826,7 @@ function useLegalDocs(docType, options = {}) {
6815
6826
  }
6816
6827
 
6817
6828
  // src/components/shared/legal-document/legal-document-page.tsx
6818
- import { jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
6829
+ import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
6819
6830
  function LegalDocumentPage({
6820
6831
  docType,
6821
6832
  title,
@@ -6838,58 +6849,58 @@ function LegalDocumentPage({
6838
6849
  };
6839
6850
  const fallbackLastUpdatedLabel = data?.lastSynced != null ? formatLegalDate(data.lastSynced) : null;
6840
6851
  const effectiveLastUpdatedLabel = initialLastUpdatedLabel ?? fallbackLastUpdatedLabel;
6841
- const customTitle = /* @__PURE__ */ jsxs47("div", { className: "flex flex-col gap-4", children: [
6842
- /* @__PURE__ */ jsxs47(PageHeading, { children: [
6843
- /* @__PURE__ */ jsx59("span", { children: title }),
6844
- /* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: "." })
6852
+ const customTitle = /* @__PURE__ */ jsxs48("div", { className: "flex flex-col gap-4", children: [
6853
+ /* @__PURE__ */ jsxs48(PageHeading, { children: [
6854
+ /* @__PURE__ */ jsx60("span", { children: title }),
6855
+ /* @__PURE__ */ jsx60("span", { className: "text-ods-accent", children: "." })
6845
6856
  ] }),
6846
- /* @__PURE__ */ jsxs47("p", { className: "font-['DM_Sans'] text-base md:text-lg text-ods-text-secondary max-w-2xl", children: [
6857
+ /* @__PURE__ */ jsxs48("p", { className: "font-['DM_Sans'] text-base md:text-lg text-ods-text-secondary max-w-2xl", children: [
6847
6858
  effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription,
6848
- data?.sourceFile && /* @__PURE__ */ jsxs47("span", { className: "block text-sm mt-1 opacity-75", children: [
6859
+ data?.sourceFile && /* @__PURE__ */ jsxs48("span", { className: "block text-sm mt-1 opacity-75", children: [
6849
6860
  "Source: ",
6850
6861
  data.sourceFile
6851
6862
  ] })
6852
6863
  ] })
6853
6864
  ] });
6854
- return /* @__PURE__ */ jsx59(PageShell, { children: /* @__PURE__ */ jsxs47(PageLayout, { backButton: backCfg, children: [
6855
- /* @__PURE__ */ jsx59("div", { className: "flex flex-col gap-4", children: customTitle }),
6856
- /* @__PURE__ */ jsx59("div", { className: "flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1", children: /* @__PURE__ */ jsx59("div", { className: "flex-1", children: /* @__PURE__ */ jsx59("div", { className: "w-full", children: /* @__PURE__ */ jsx59("article", { className: "space-y-2", children: isLoading ? (
6865
+ return /* @__PURE__ */ jsx60(PageShell, { children: /* @__PURE__ */ jsxs48(PageLayout, { backButton: backCfg, children: [
6866
+ /* @__PURE__ */ jsx60("div", { className: "flex flex-col gap-4", children: customTitle }),
6867
+ /* @__PURE__ */ jsx60("div", { className: "flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1", children: /* @__PURE__ */ jsx60("div", { className: "flex-1", children: /* @__PURE__ */ jsx60("div", { className: "w-full", children: /* @__PURE__ */ jsx60("article", { className: "space-y-2", children: isLoading ? (
6857
6868
  // Loading skeleton matching Knowledge Hub pattern
6858
- /* @__PURE__ */ jsxs47("div", { className: "space-y-6", children: [
6859
- /* @__PURE__ */ jsx59("div", { className: "h-10 bg-ods-skeleton rounded-lg w-3/4 animate-pulse" }),
6860
- /* @__PURE__ */ jsxs47("div", { className: "space-y-4", children: [
6861
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6862
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6863
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-5/6 animate-pulse" })
6869
+ /* @__PURE__ */ jsxs48("div", { className: "space-y-6", children: [
6870
+ /* @__PURE__ */ jsx60("div", { className: "h-10 bg-ods-skeleton rounded-lg w-3/4 animate-pulse" }),
6871
+ /* @__PURE__ */ jsxs48("div", { className: "space-y-4", children: [
6872
+ /* @__PURE__ */ jsx60("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6873
+ /* @__PURE__ */ jsx60("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6874
+ /* @__PURE__ */ jsx60("div", { className: "h-4 bg-ods-skeleton rounded w-5/6 animate-pulse" })
6864
6875
  ] }),
6865
- /* @__PURE__ */ jsx59("div", { className: "h-32 bg-ods-card border border-ods-border rounded-lg animate-pulse" }),
6866
- /* @__PURE__ */ jsxs47("div", { className: "space-y-4", children: [
6867
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6868
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-4/5 animate-pulse" })
6876
+ /* @__PURE__ */ jsx60("div", { className: "h-32 bg-ods-card border border-ods-border rounded-lg animate-pulse" }),
6877
+ /* @__PURE__ */ jsxs48("div", { className: "space-y-4", children: [
6878
+ /* @__PURE__ */ jsx60("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6879
+ /* @__PURE__ */ jsx60("div", { className: "h-4 bg-ods-skeleton rounded w-4/5 animate-pulse" })
6869
6880
  ] })
6870
6881
  ] })
6871
- ) : error ? /* @__PURE__ */ jsxs47("div", { className: "text-center space-y-4", children: [
6872
- /* @__PURE__ */ jsxs47("div", { className: "bg-red-900/20 border border-red-700 rounded-lg p-6", children: [
6873
- /* @__PURE__ */ jsx59("p", { className: "text-red-400 mb-2", children: errorTitle }),
6874
- /* @__PURE__ */ jsx59("p", { className: "text-red-300 text-sm", children: error })
6882
+ ) : error ? /* @__PURE__ */ jsxs48("div", { className: "text-center space-y-4", children: [
6883
+ /* @__PURE__ */ jsxs48("div", { className: "bg-red-900/20 border border-red-700 rounded-lg p-6", children: [
6884
+ /* @__PURE__ */ jsx60("p", { className: "text-red-400 mb-2", children: errorTitle }),
6885
+ /* @__PURE__ */ jsx60("p", { className: "text-red-300 text-sm", children: error })
6875
6886
  ] }),
6876
- /* @__PURE__ */ jsxs47("div", { className: "text-ods-text-secondary", children: [
6877
- /* @__PURE__ */ jsx59("p", { children: errorContactPrompt }),
6878
- /* @__PURE__ */ jsx59("a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail })
6887
+ /* @__PURE__ */ jsxs48("div", { className: "text-ods-text-secondary", children: [
6888
+ /* @__PURE__ */ jsx60("p", { children: errorContactPrompt }),
6889
+ /* @__PURE__ */ jsx60("a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail })
6879
6890
  ] })
6880
- ] }) : data ? /* @__PURE__ */ jsx59(
6891
+ ] }) : data ? /* @__PURE__ */ jsx60(
6881
6892
  MarkdownRenderer,
6882
6893
  {
6883
6894
  content: data.content,
6884
6895
  sectionIds: data.sections || [],
6885
6896
  demoteMarkdownH1ToH2: true
6886
6897
  }
6887
- ) : /* @__PURE__ */ jsxs47("div", { className: "text-center text-ods-text-secondary py-16", children: [
6888
- /* @__PURE__ */ jsx59("p", { className: "text-xl", children: emptyStateMessage }),
6889
- /* @__PURE__ */ jsxs47("p", { className: "mt-2", children: [
6898
+ ) : /* @__PURE__ */ jsxs48("div", { className: "text-center text-ods-text-secondary py-16", children: [
6899
+ /* @__PURE__ */ jsx60("p", { className: "text-xl", children: emptyStateMessage }),
6900
+ /* @__PURE__ */ jsxs48("p", { className: "mt-2", children: [
6890
6901
  "Please contact",
6891
6902
  " ",
6892
- /* @__PURE__ */ jsx59("a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail }),
6903
+ /* @__PURE__ */ jsx60("a", { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail }),
6893
6904
  " ",
6894
6905
  "for more information."
6895
6906
  ] })
@@ -6899,7 +6910,7 @@ function LegalDocumentPage({
6899
6910
 
6900
6911
  // src/components/authors/author-detail-view.tsx
6901
6912
  init_cn();
6902
- import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
6913
+ import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
6903
6914
  function AuthorDetailView({
6904
6915
  author,
6905
6916
  proxyImageUrl,
@@ -6914,9 +6925,9 @@ function AuthorDetailView({
6914
6925
  }) ?? author.avatarUrl : null;
6915
6926
  const subtitle = [author.jobTitle, author.company].filter(Boolean).join(" @ ");
6916
6927
  const bioText = formatBioText(author.about);
6917
- return /* @__PURE__ */ jsxs48("div", { className: cn("flex flex-col gap-5 md:gap-6", className), children: [
6918
- /* @__PURE__ */ jsxs48("div", { className: "flex gap-6 w-full items-start", children: [
6919
- /* @__PURE__ */ jsx60("div", { className: "relative shrink-0 h-24 w-24", children: /* @__PURE__ */ jsx60("div", { className: "rounded-full overflow-hidden bg-ods-bg-secondary border border-ods-border w-full h-full relative", children: proxiedAvatar ? /* @__PURE__ */ jsx60(
6928
+ return /* @__PURE__ */ jsxs49("div", { className: cn("flex flex-col gap-5 md:gap-6", className), children: [
6929
+ /* @__PURE__ */ jsxs49("div", { className: "flex gap-6 w-full items-start", children: [
6930
+ /* @__PURE__ */ jsx61("div", { className: "relative shrink-0 h-24 w-24", children: /* @__PURE__ */ jsx61("div", { className: "rounded-full overflow-hidden bg-ods-bg-secondary border border-ods-border w-full h-full relative", children: proxiedAvatar ? /* @__PURE__ */ jsx61(
6920
6931
  next_image_default,
6921
6932
  {
6922
6933
  src: proxiedAvatar,
@@ -6925,12 +6936,12 @@ function AuthorDetailView({
6925
6936
  className: "object-cover",
6926
6937
  unoptimized: true
6927
6938
  }
6928
- ) : /* @__PURE__ */ jsx60("div", { className: "flex items-center justify-center h-full w-full text-3xl text-ods-text-secondary font-['Azeret_Mono']", children: author.fullName.charAt(0).toUpperCase() }) }) }),
6929
- /* @__PURE__ */ jsxs48("div", { className: "min-w-0 flex flex-col justify-center gap-2", children: [
6930
- /* @__PURE__ */ jsx60("p", { className: "text-h2 text-ods-text-primary leading-none truncate", children: author.fullName }),
6931
- subtitle && /* @__PURE__ */ jsx60("p", { className: "font-body text-lg text-ods-text-secondary leading-none truncate", children: subtitle }),
6939
+ ) : /* @__PURE__ */ jsx61("div", { className: "flex items-center justify-center h-full w-full text-3xl text-ods-text-secondary font-['Azeret_Mono']", children: author.fullName.charAt(0).toUpperCase() }) }) }),
6940
+ /* @__PURE__ */ jsxs49("div", { className: "min-w-0 flex flex-col justify-center gap-2", children: [
6941
+ /* @__PURE__ */ jsx61("p", { className: "text-h2 text-ods-text-primary leading-none truncate", children: author.fullName }),
6942
+ subtitle && /* @__PURE__ */ jsx61("p", { className: "font-body text-lg text-ods-text-secondary leading-none truncate", children: subtitle }),
6932
6943
  author.socialLinks.length > 0 && // Ghost compact row (transparent 32px) — metadata, not CTAs.
6933
- /* @__PURE__ */ jsx60(
6944
+ /* @__PURE__ */ jsx61(
6934
6945
  SocialIconRow,
6935
6946
  {
6936
6947
  compact: true,
@@ -6943,8 +6954,8 @@ function AuthorDetailView({
6943
6954
  )
6944
6955
  ] })
6945
6956
  ] }),
6946
- bioText && /* @__PURE__ */ jsx60("p", { className: "font-body text-base leading-relaxed text-ods-text-secondary", children: bioText }),
6947
- author.knowsAbout.length > 0 && /* @__PURE__ */ jsx60("div", { className: "flex flex-wrap gap-2", children: author.knowsAbout.map((topic) => /* @__PURE__ */ jsx60(StatusBadge, { text: topic, variant: "button", colorScheme: "cyan", singleLine: true }, topic)) }),
6957
+ bioText && /* @__PURE__ */ jsx61("p", { className: "font-body text-base leading-relaxed text-ods-text-secondary", children: bioText }),
6958
+ author.knowsAbout.length > 0 && /* @__PURE__ */ jsx61("div", { className: "flex flex-wrap gap-2", children: author.knowsAbout.map((topic) => /* @__PURE__ */ jsx61(StatusBadge, { text: topic, variant: "button", colorScheme: "cyan", singleLine: true }, topic)) }),
6948
6959
  children
6949
6960
  ] });
6950
6961
  }
@@ -7388,6 +7399,7 @@ export {
7388
7399
  MarkdownEditor,
7389
7400
  MediaCarousel,
7390
7401
  MediaGalleryManager,
7402
+ MediaGalleryStrip,
7391
7403
  MediaSkeleton,
7392
7404
  MediaTypeSelector,
7393
7405
  MenuIcon,
@@ -7750,6 +7762,8 @@ export {
7750
7762
  VideoSourceSelector,
7751
7763
  ViewToggle,
7752
7764
  WaitlistForm,
7765
+ WhatIShippedCard,
7766
+ WhatIShippedCardSkeleton,
7753
7767
  WhatsAppIcon,
7754
7768
  WindowsIcon,
7755
7769
  WizardLayoutSkeleton,