@flamingo-stack/openframe-frontend-core 0.0.272 → 0.0.273

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.
@@ -2703,14 +2703,14 @@ function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height = 300, o
2703
2703
  ] }) : /* @__PURE__ */ jsx17(
2704
2704
  "div",
2705
2705
  {
2706
- 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`,
2707
2707
  style: { height: heightStyle },
2708
2708
  onClick: openDialog,
2709
2709
  children: uploading ? /* @__PURE__ */ jsx17(Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs12(Fragment4, { children: [
2710
2710
  /* @__PURE__ */ jsx17(ImageIcon2, { className: "h-12 w-12 text-ods-text-secondary" }),
2711
2711
  /* @__PURE__ */ jsx17("span", { className: "text-ods-text-primary font-['DM_Sans'] text-[16px] font-medium mt-2", children: "Upload cover image" }),
2712
2712
  /* @__PURE__ */ jsx17("span", { className: "text-ods-text-secondary font-['DM_Sans'] text-[14px] mt-1", children: "Click to upload or drag and drop" }),
2713
- /* @__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" })
2714
2714
  ] })
2715
2715
  }
2716
2716
  ),
@@ -5830,11 +5830,58 @@ function ProductReleasesView({
5830
5830
  // src/components/shared/product-release/release-detail-page.tsx
5831
5831
  init_next_link();
5832
5832
  init_next_navigation();
5833
- import { useState as useState7, useEffect as useEffect6 } from "react";
5834
- 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";
5835
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";
5836
5883
  function DefaultMarkdownRenderer({ content }) {
5837
- return /* @__PURE__ */ jsx52("div", { className: "whitespace-pre-wrap", children: content });
5884
+ return /* @__PURE__ */ jsx53("div", { className: "whitespace-pre-wrap", children: content });
5838
5885
  }
5839
5886
  function ReleaseDetailPage({
5840
5887
  authorHref,
@@ -5853,15 +5900,13 @@ function ReleaseDetailPage({
5853
5900
  const router = useRouter();
5854
5901
  const { data: fetchedRelease, error, isLoading } = useRelease(initialData ? void 0 : slug);
5855
5902
  const release = initialData || fetchedRelease;
5856
- const [galleryOpen, setGalleryOpen] = useState7(false);
5857
- const [galleryIndex, setGalleryIndex] = useState7(0);
5858
5903
  const showBackButton = backButton !== false;
5859
5904
  const backLabel = (backButton ? backButton.label : void 0) ?? "Back to home";
5860
5905
  const backHref = (backButton ? backButton.href : void 0) ?? "/";
5861
- const [roadmapTasks, setRoadmapTasks] = useState7([]);
5862
- const [deliveryData, setDeliveryData] = useState7(null);
5863
- const [roadmapLoading, setRoadmapLoading] = useState7(false);
5864
- 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);
5865
5910
  useEffect6(() => {
5866
5911
  async function fetchLinkedTasks() {
5867
5912
  if (!release) return;
@@ -5893,12 +5938,12 @@ function ReleaseDetailPage({
5893
5938
  fetchLinkedTasks();
5894
5939
  }, [release, RoadmapSection, DeliverySection, roadmapApiEndpoint, deliveryApiEndpoint]);
5895
5940
  if (!initialData && isLoading) {
5896
- return /* @__PURE__ */ jsx52(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
5941
+ return /* @__PURE__ */ jsx53(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
5897
5942
  }
5898
5943
  if (error || !release) {
5899
- return /* @__PURE__ */ jsxs42("div", { className: "text-center py-16", children: [
5900
- /* @__PURE__ */ jsx52("h1", { className: "text-4xl font-bold text-ods-text-primary mb-4", children: "Release Not Found" }),
5901
- /* @__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." })
5902
5947
  ] });
5903
5948
  }
5904
5949
  const hasBreakingChanges = Array.isArray(release.breaking_changes) && release.breaking_changes.length > 0;
@@ -5924,8 +5969,8 @@ function ReleaseDetailPage({
5924
5969
  const featuresAdded = release.features_added;
5925
5970
  const bugFixed = release.bugs_fixed;
5926
5971
  const improvements = release.improvements;
5927
- return /* @__PURE__ */ jsxs42(PageShell, { children: [
5928
- showBackButton && /* @__PURE__ */ jsx52(
5972
+ return /* @__PURE__ */ jsxs43(PageShell, { children: [
5973
+ showBackButton && /* @__PURE__ */ jsx53(
5929
5974
  BackButton,
5930
5975
  {
5931
5976
  label: backLabel,
@@ -5933,29 +5978,29 @@ function ReleaseDetailPage({
5933
5978
  className: "hidden md:inline-flex mb-4"
5934
5979
  }
5935
5980
  ),
5936
- /* @__PURE__ */ jsxs42("div", { className: "space-y-6 md:space-y-8", children: [
5937
- /* @__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: [
5938
- /* @__PURE__ */ jsx52("h1", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary", children: releaseTitle }),
5939
- /* @__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: [
5940
5985
  "Version: ",
5941
5986
  releaseVersion
5942
5987
  ] })
5943
5988
  ] }) }),
5944
- /* @__PURE__ */ jsx52(EntityTagBadges, { tags: release.product_release_tags }),
5945
- /* @__PURE__ */ jsxs42("div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
5946
- /* @__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: [
5947
- /* @__PURE__ */ jsx52("p", { className: "text-h4 text-ods-text-primary", children: releaseType.toLocaleUpperCase() }),
5948
- /* @__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" })
5949
5994
  ] }) }),
5950
- /* @__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: [
5951
- /* @__PURE__ */ jsx52("p", { className: "text-h4 text-ods-text-primary", children: releaseStatus.toLocaleUpperCase() }),
5952
- /* @__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" })
5953
5998
  ] }) }),
5954
- /* @__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: [
5955
- /* @__PURE__ */ jsx52("p", { className: "text-h4 text-ods-text-primary", children: formatReleaseDate(releaseDate) }),
5956
- /* @__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" })
5957
6002
  ] }) }),
5958
- /* @__PURE__ */ jsx52(
6003
+ /* @__PURE__ */ jsx53(
5959
6004
  EntityMetadataAuthorCell,
5960
6005
  {
5961
6006
  author: author ?? { full_name: null, avatar_url: null },
@@ -5963,22 +6008,9 @@ function ReleaseDetailPage({
5963
6008
  }
5964
6009
  )
5965
6010
  ] }),
5966
- 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(
5967
- "div",
5968
- {
5969
- className: "shrink-0 w-[240px] h-[200px] rounded-md overflow-hidden border border-ods-border bg-black cursor-pointer hover:opacity-80 transition-opacity",
5970
- onClick: () => {
5971
- if (mediaItem.media_type !== "video" && mediaItem.media_type !== "demo") {
5972
- setGalleryIndex(index);
5973
- setGalleryOpen(true);
5974
- }
5975
- },
5976
- 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" })
5977
- },
5978
- mediaItem.id || index
5979
- )) }),
5980
- releaseSummary && /* @__PURE__ */ jsx52("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx52("p", { children: releaseSummary }) }),
5981
- 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(
5982
6014
  VideoDisplaySection,
5983
6015
  {
5984
6016
  mainVideoUrl,
@@ -5992,8 +6024,8 @@ function ReleaseDetailPage({
5992
6024
  srtContent: release?.srt_content,
5993
6025
  captionsUrl: release?.captionsUrl
5994
6026
  }
5995
- ) : /* @__PURE__ */ jsxs42(Fragment10, { children: [
5996
- youtubeUrl && /* @__PURE__ */ jsx52(
6027
+ ) : /* @__PURE__ */ jsxs43(Fragment11, { children: [
6028
+ youtubeUrl && /* @__PURE__ */ jsx53(
5997
6029
  Video,
5998
6030
  {
5999
6031
  kind: "youtube",
@@ -6002,7 +6034,7 @@ function ReleaseDetailPage({
6002
6034
  layout: "native"
6003
6035
  }
6004
6036
  ),
6005
- !youtubeUrl && mainVideoUrl && /* @__PURE__ */ jsx52(
6037
+ !youtubeUrl && mainVideoUrl && /* @__PURE__ */ jsx53(
6006
6038
  Video,
6007
6039
  {
6008
6040
  url: mainVideoUrl,
@@ -6011,7 +6043,7 @@ function ReleaseDetailPage({
6011
6043
  layout: "centered"
6012
6044
  }
6013
6045
  ),
6014
- highlightVideoUrl && /* @__PURE__ */ jsx52(
6046
+ highlightVideoUrl && /* @__PURE__ */ jsx53(
6015
6047
  Video,
6016
6048
  {
6017
6049
  url: highlightVideoUrl,
@@ -6020,56 +6052,56 @@ function ReleaseDetailPage({
6020
6052
  }
6021
6053
  )
6022
6054
  ] }),
6023
- releaseContent && /* @__PURE__ */ jsx52("div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ jsx52(MarkdownRenderer, { content: releaseContent }) }),
6024
- 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: [
6025
- /* @__PURE__ */ jsx52(AlertTriangle, { className: "h-6 w-6 text-red-500" }),
6026
- /* @__PURE__ */ jsxs42("div", { children: [
6027
- /* @__PURE__ */ jsx52("h3", { className: "font-bold text-red-500 text-lg", children: "Breaking Changes" }),
6028
- /* @__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." })
6029
6061
  ] })
6030
6062
  ] }) }) }),
6031
- /* @__PURE__ */ jsx52(
6063
+ /* @__PURE__ */ jsx53(
6032
6064
  ReleaseChangelogSection,
6033
6065
  {
6034
6066
  title: "Breaking Changes",
6035
6067
  entries: breakingChanges || [],
6036
6068
  isBreaking: true,
6037
6069
  hideTitle: true,
6038
- icon: /* @__PURE__ */ jsx52(AlertTriangle, { className: "h-6 w-6" }),
6070
+ icon: /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6" }),
6039
6071
  SimpleMarkdownRenderer: MarkdownRenderer
6040
6072
  }
6041
6073
  ),
6042
- /* @__PURE__ */ jsx52(
6074
+ /* @__PURE__ */ jsx53(
6043
6075
  ReleaseChangelogSection,
6044
6076
  {
6045
6077
  title: "Features Added",
6046
6078
  entries: featuresAdded || [],
6047
- icon: /* @__PURE__ */ jsx52(Sparkles2, { className: "h-6 w-6" }),
6079
+ icon: /* @__PURE__ */ jsx53(Sparkles2, { className: "h-6 w-6" }),
6048
6080
  previewFirst: true,
6049
6081
  SimpleMarkdownRenderer: MarkdownRenderer
6050
6082
  }
6051
6083
  ),
6052
- /* @__PURE__ */ jsx52(
6084
+ /* @__PURE__ */ jsx53(
6053
6085
  ReleaseChangelogSection,
6054
6086
  {
6055
6087
  title: "Bugs Fixed",
6056
6088
  entries: bugFixed || [],
6057
- icon: /* @__PURE__ */ jsx52(Wrench, { className: "h-6 w-6" }),
6089
+ icon: /* @__PURE__ */ jsx53(Wrench, { className: "h-6 w-6" }),
6058
6090
  previewFirst: true,
6059
6091
  SimpleMarkdownRenderer: MarkdownRenderer
6060
6092
  }
6061
6093
  ),
6062
- /* @__PURE__ */ jsx52(
6094
+ /* @__PURE__ */ jsx53(
6063
6095
  ReleaseChangelogSection,
6064
6096
  {
6065
6097
  title: "Improvements",
6066
6098
  entries: improvements || [],
6067
- icon: /* @__PURE__ */ jsx52(TrendingUp, { className: "h-6 w-6" }),
6099
+ icon: /* @__PURE__ */ jsx53(TrendingUp, { className: "h-6 w-6" }),
6068
6100
  previewFirst: true,
6069
6101
  SimpleMarkdownRenderer: MarkdownRenderer
6070
6102
  }
6071
6103
  ),
6072
- !VideoDisplaySection && VideoSection && videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx52(
6104
+ !VideoDisplaySection && VideoSection && videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx53(
6073
6105
  VideoSection,
6074
6106
  {
6075
6107
  bites: videoBites,
@@ -6077,9 +6109,9 @@ function ReleaseDetailPage({
6077
6109
  filterPublished: true
6078
6110
  }
6079
6111
  ),
6080
- RoadmapSection && (roadmapLoading || roadmapTasks.length > 0) && /* @__PURE__ */ jsxs42("div", { className: "space-y-4 w-full", children: [
6081
- /* @__PURE__ */ jsx52("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Roadmap Items" }),
6082
- /* @__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(
6083
6115
  RoadmapSection,
6084
6116
  {
6085
6117
  items: roadmapTasks,
@@ -6094,9 +6126,9 @@ function ReleaseDetailPage({
6094
6126
  }
6095
6127
  )
6096
6128
  ] }),
6097
- DeliverySection && (deliveryLoading || deliveryData && (deliveryData.completed.length > 0 || deliveryData.inProgress.length > 0)) && /* @__PURE__ */ jsxs42("div", { className: "w-full space-y-4", children: [
6098
- /* @__PURE__ */ jsx52("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Enhancements and Bug-fixes" }),
6099
- /* @__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(
6100
6132
  DeliverySection,
6101
6133
  {
6102
6134
  data: deliveryData,
@@ -6104,13 +6136,13 @@ function ReleaseDetailPage({
6104
6136
  }
6105
6137
  )
6106
6138
  ] }),
6107
- (githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs42("div", { className: "space-y-1 w-full", children: [
6108
- /* @__PURE__ */ jsx52("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
6109
- /* @__PURE__ */ jsx52(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs42("div", { className: "space-y-4", children: [
6110
- githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx52(Fragment10, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6111
- /* @__PURE__ */ jsx52(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
6112
- /* @__PURE__ */ jsx52("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
6113
- /* @__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(
6114
6146
  "a",
6115
6147
  {
6116
6148
  href: ghRelease.github_release_url,
@@ -6120,15 +6152,15 @@ function ReleaseDetailPage({
6120
6152
  children: ghRelease.github_release_url.split("/").pop()
6121
6153
  }
6122
6154
  ),
6123
- /* @__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" })
6124
6156
  ] }, ghRelease.id)) }),
6125
- knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx52(Fragment10, { children: knowledgeBaseLinks.map((linkObj) => {
6157
+ knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx53(Fragment11, { children: knowledgeBaseLinks.map((linkObj) => {
6126
6158
  const path = typeof linkObj === "string" ? linkObj : linkObj.kb_article_path;
6127
6159
  const linkId = typeof linkObj === "string" ? path : linkObj.id || path;
6128
- return /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6129
- /* @__PURE__ */ jsx52(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6130
- /* @__PURE__ */ jsx52("span", { className: "text-h4 text-ods-text-primary", children: "Knowledge Base" }),
6131
- /* @__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(
6132
6164
  next_link_default,
6133
6165
  {
6134
6166
  href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
@@ -6136,12 +6168,12 @@ function ReleaseDetailPage({
6136
6168
  children: path.replace(/^\//, "").split("/").pop()?.replace(/-/g, " ") || "View Article"
6137
6169
  }
6138
6170
  ),
6139
- /* @__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" })
6140
6172
  ] }, linkId);
6141
6173
  }) }),
6142
- migrationGuideUrl && /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6143
- /* @__PURE__ */ jsx52(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6144
- /* @__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(
6145
6177
  "a",
6146
6178
  {
6147
6179
  href: migrationGuideUrl,
@@ -6151,11 +6183,11 @@ function ReleaseDetailPage({
6151
6183
  children: "\u{1F4D6} Migration Guide"
6152
6184
  }
6153
6185
  ),
6154
- /* @__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" })
6155
6187
  ] }),
6156
- documentationUrl && /* @__PURE__ */ jsxs42("div", { className: "flex items-start gap-1", children: [
6157
- /* @__PURE__ */ jsx52(BookMarked, { className: "h-6 w-6 text-ods-text-secondary shrink-0" }),
6158
- /* @__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(
6159
6191
  "a",
6160
6192
  {
6161
6193
  href: documentationUrl,
@@ -6165,41 +6197,32 @@ function ReleaseDetailPage({
6165
6197
  children: "\u{1F4DA} Documentation"
6166
6198
  }
6167
6199
  ),
6168
- /* @__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" })
6169
6201
  ] })
6170
6202
  ] }) })
6171
6203
  ] })
6172
- ] }),
6173
- releaseMedia && releaseMedia.filter((m) => m.media_type !== "video" && m.media_type !== "demo").length > 0 && /* @__PURE__ */ jsx52(
6174
- ImageGalleryModal,
6175
- {
6176
- images: releaseMedia.filter((m) => m.media_type !== "video" && m.media_type !== "demo").map((m) => m.media_url),
6177
- isOpen: galleryOpen,
6178
- onClose: () => setGalleryOpen(false),
6179
- initialIndex: galleryIndex
6180
- }
6181
- )
6204
+ ] })
6182
6205
  ] });
6183
6206
  }
6184
6207
 
6185
6208
  // src/components/shared/product-release/release-detail-skeleton.tsx
6186
- import { jsx as jsx53 } from "react/jsx-runtime";
6209
+ import { jsx as jsx54 } from "react/jsx-runtime";
6187
6210
  function ReleaseDetailSkeleton() {
6188
- return /* @__PURE__ */ jsx53(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
6211
+ return /* @__PURE__ */ jsx54(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
6189
6212
  }
6190
6213
 
6191
6214
  // src/components/shared/roadmap/roadmap-grid.tsx
6192
- 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";
6193
6216
 
6194
6217
  // src/components/shared/roadmap/use-roadmap-voting.ts
6195
- 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";
6196
6219
  var DEFAULT_VOTE_ENDPOINT = "/api/roadmap/vote";
6197
6220
  var DEFAULT_STORAGE_KEY = "roadmap_votes_v1";
6198
6221
  function useRoadmapVoting(options = {}) {
6199
6222
  const voteApiEndpoint = options.voteApiEndpoint ?? DEFAULT_VOTE_ENDPOINT;
6200
6223
  const storageKey = options.storageKey ?? DEFAULT_STORAGE_KEY;
6201
- const [votes, setVotes] = useState8({});
6202
- const [isLoading, setIsLoading] = useState8(true);
6224
+ const [votes, setVotes] = useState9({});
6225
+ const [isLoading, setIsLoading] = useState9(true);
6203
6226
  useEffect7(() => {
6204
6227
  setIsLoading(true);
6205
6228
  setVotes({});
@@ -6292,7 +6315,7 @@ function useRoadmapVoting(options = {}) {
6292
6315
 
6293
6316
  // src/components/shared/roadmap/roadmap-grid.tsx
6294
6317
  init_cn();
6295
- import { jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
6318
+ import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
6296
6319
  var DEFAULT_BUILD_REFRESH_URL = (taskId) => `/api/roadmap/${taskId}`;
6297
6320
  var BACKLOG = "Backlog";
6298
6321
  function getStatusPriority(status) {
@@ -6341,7 +6364,7 @@ function RoadmapGridSingle({
6341
6364
  onVote,
6342
6365
  votingTasks
6343
6366
  }) {
6344
- 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(
6345
6368
  RoadmapCard,
6346
6369
  {
6347
6370
  item,
@@ -6363,7 +6386,7 @@ function RoadmapGrid({
6363
6386
  quartersToKeepClosed = 2
6364
6387
  }) {
6365
6388
  const { getVote, toggleVote } = useRoadmapVoting(votingOptions);
6366
- const [votingTasks, setVotingTasks] = useState9(/* @__PURE__ */ new Set());
6389
+ const [votingTasks, setVotingTasks] = useState10(/* @__PURE__ */ new Set());
6367
6390
  const handleVote = async (taskId, voteType) => {
6368
6391
  if (votingTasks.has(taskId)) return;
6369
6392
  setVotingTasks((prev) => new Set(prev).add(taskId));
@@ -6400,8 +6423,8 @@ function RoadmapGrid({
6400
6423
  return compareQuarters(aD, bD);
6401
6424
  });
6402
6425
  const sortedQuartersKey = sortedQuarters.join(",");
6403
- const [expandedQuarters, setExpandedQuarters] = useState9([]);
6404
- const [isInitialized, setIsInitialized] = useState9(false);
6426
+ const [expandedQuarters, setExpandedQuarters] = useState10([]);
6427
+ const [isInitialized, setIsInitialized] = useState10(false);
6405
6428
  const hasSetInitialState = useRef5(false);
6406
6429
  const prevItemsLength = useRef5(0);
6407
6430
  useEffect8(() => {
@@ -6422,7 +6445,7 @@ function RoadmapGrid({
6422
6445
  );
6423
6446
  }, [hasActiveFilters, sortedQuartersKey, isInitialized, quartersToKeepClosed]);
6424
6447
  if (items.length === 0) {
6425
- return /* @__PURE__ */ jsx54(
6448
+ return /* @__PURE__ */ jsx55(
6426
6449
  EmptyState,
6427
6450
  {
6428
6451
  type: "generic",
@@ -6432,7 +6455,7 @@ function RoadmapGrid({
6432
6455
  );
6433
6456
  }
6434
6457
  if (!groupByQuarter) {
6435
- return /* @__PURE__ */ jsx54(
6458
+ return /* @__PURE__ */ jsx55(
6436
6459
  RoadmapGridSingle,
6437
6460
  {
6438
6461
  items,
@@ -6443,7 +6466,7 @@ function RoadmapGrid({
6443
6466
  }
6444
6467
  );
6445
6468
  }
6446
- return /* @__PURE__ */ jsx54(
6469
+ return /* @__PURE__ */ jsx55(
6447
6470
  Accordion,
6448
6471
  {
6449
6472
  type: "multiple",
@@ -6453,15 +6476,15 @@ function RoadmapGrid({
6453
6476
  children: sortedQuarters.map((quarter) => {
6454
6477
  const itemCount = itemsByQuarter[quarter]?.length || 0;
6455
6478
  const isExpanded = expandedQuarters.includes(quarter);
6456
- return /* @__PURE__ */ jsxs43(
6479
+ return /* @__PURE__ */ jsxs44(
6457
6480
  AccordionItem,
6458
6481
  {
6459
6482
  value: quarter,
6460
6483
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
6461
6484
  className: "border-0",
6462
6485
  children: [
6463
- /* @__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: [
6464
- /* @__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(
6465
6488
  "h3",
6466
6489
  {
6467
6490
  className: cn(
@@ -6470,11 +6493,11 @@ function RoadmapGrid({
6470
6493
  ),
6471
6494
  children: [
6472
6495
  quarter,
6473
- /* @__PURE__ */ jsx54("span", { className: "text-ods-accent", children: ":" })
6496
+ /* @__PURE__ */ jsx55("span", { className: "text-ods-accent", children: ":" })
6474
6497
  ]
6475
6498
  }
6476
6499
  ),
6477
- /* @__PURE__ */ jsxs43(
6500
+ /* @__PURE__ */ jsxs44(
6478
6501
  "span",
6479
6502
  {
6480
6503
  className: cn(
@@ -6485,12 +6508,12 @@ function RoadmapGrid({
6485
6508
  itemCount,
6486
6509
  " ",
6487
6510
  itemCount === 1 ? "item" : "items",
6488
- 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" })
6489
6512
  ]
6490
6513
  }
6491
6514
  )
6492
6515
  ] }) }),
6493
- /* @__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(
6494
6517
  RoadmapGridSingle,
6495
6518
  {
6496
6519
  items: itemsByQuarter[quarter],
@@ -6510,36 +6533,36 @@ function RoadmapGrid({
6510
6533
  }
6511
6534
 
6512
6535
  // src/components/shared/roadmap/roadmap-grid-skeleton.tsx
6513
- import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
6536
+ import { jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
6514
6537
  function RoadmapCardSkeleton2() {
6515
- 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: [
6516
- /* @__PURE__ */ jsx55("div", { className: "absolute top-[24px] right-[24px]", children: /* @__PURE__ */ jsx55("div", { className: "h-[20px] w-[80px] bg-ods-border rounded animate-pulse" }) }),
6517
- /* @__PURE__ */ jsxs44("div", { className: "flex items-center gap-[16px] pr-[120px]", children: [
6518
- /* @__PURE__ */ jsx55("div", { className: "w-[80px] h-[80px] bg-ods-border rounded-lg flex-shrink-0 animate-pulse" }),
6519
- /* @__PURE__ */ jsxs44("div", { className: "flex-1 min-w-0 flex flex-col gap-1", children: [
6520
- /* @__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" }) }),
6521
- /* @__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" }) })
6522
6545
  ] })
6523
6546
  ] }),
6524
- /* @__PURE__ */ jsx55("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsxs44("div", { className: "w-full space-y-2", children: [
6525
- /* @__PURE__ */ jsx55("div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
6526
- /* @__PURE__ */ jsx55("div", { className: "h-[24px] bg-ods-border rounded animate-pulse" }),
6527
- /* @__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" })
6528
6551
  ] }) }),
6529
- /* @__PURE__ */ jsx55("div", { className: "flex-1" }),
6530
- /* @__PURE__ */ jsxs44("div", { className: "flex items-center justify-between", children: [
6531
- /* @__PURE__ */ jsx55("div", { className: "h-[48px] w-[120px] bg-ods-border rounded animate-pulse" }),
6532
- /* @__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" })
6533
6556
  ] })
6534
6557
  ] });
6535
6558
  }
6536
6559
  function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
6537
- 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)) });
6538
6561
  }
6539
6562
 
6540
6563
  // src/components/shared/roadmap/roadmap-view.tsx
6541
6564
  import { useMemo as useMemo2 } from "react";
6542
- import { jsx as jsx56 } from "react/jsx-runtime";
6565
+ import { jsx as jsx57 } from "react/jsx-runtime";
6543
6566
  var DEFAULT_ENDPOINT2 = "/api/roadmap";
6544
6567
  var DEFAULT_SEARCH_PARAM_KEY2 = DEV_SECTION_PARAM_KEYS.search;
6545
6568
  var DEFAULT_STATUS_PARAM_KEY2 = DEV_SECTION_PARAM_KEYS.status;
@@ -6567,12 +6590,12 @@ function RoadmapView({
6567
6590
  );
6568
6591
  const items = data?.items ?? [];
6569
6592
  if (error) {
6570
- return /* @__PURE__ */ jsx56(LoadError, { message: "Failed to load roadmap.", onRetry: reload });
6593
+ return /* @__PURE__ */ jsx57(LoadError, { message: "Failed to load roadmap.", onRetry: reload });
6571
6594
  }
6572
6595
  if (isLoading && !data) {
6573
- return /* @__PURE__ */ jsx56(RoadmapGridSkeleton, { showLeftMargin });
6596
+ return /* @__PURE__ */ jsx57(RoadmapGridSkeleton, { showLeftMargin });
6574
6597
  }
6575
- return /* @__PURE__ */ jsx56(
6598
+ return /* @__PURE__ */ jsx57(
6576
6599
  RoadmapGrid,
6577
6600
  {
6578
6601
  items,
@@ -6589,46 +6612,46 @@ function RoadmapView({
6589
6612
  }
6590
6613
 
6591
6614
  // src/components/shared/delivery/delivery-lists.tsx
6592
- import { useEffect as useEffect9, useState as useState10 } from "react";
6615
+ import { useEffect as useEffect9, useState as useState11 } from "react";
6593
6616
 
6594
6617
  // src/components/shared/delivery/delivery-table.tsx
6595
- import { jsx as jsx57, jsxs as jsxs45 } from "react/jsx-runtime";
6618
+ import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
6596
6619
  function SkeletonRow() {
6597
- 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: [
6598
- /* @__PURE__ */ jsxs45("div", { className: "flex-1 min-w-0 w-full md:w-auto flex flex-col gap-[12px] md:gap-[16px]", children: [
6599
- /* @__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" }) }),
6600
- /* @__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" }) }),
6601
- /* @__PURE__ */ jsx57("div", { className: "min-h-[72px] flex items-center", children: /* @__PURE__ */ jsxs45("div", { className: "flex-1 space-y-1", children: [
6602
- /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
6603
- /* @__PURE__ */ jsx57("div", { className: "h-[20px] bg-ods-border rounded animate-pulse w-full" }),
6604
- /* @__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" })
6605
6628
  ] }) })
6606
6629
  ] }),
6607
- /* @__PURE__ */ jsxs45("div", { className: "flex-shrink-0 self-start flex flex-col gap-2", children: [
6608
- /* @__PURE__ */ jsx57("div", { className: "h-[32px] w-[100px] bg-ods-border rounded animate-pulse" }),
6609
- /* @__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" })
6610
6633
  ] })
6611
6634
  ] }) });
6612
6635
  }
6613
6636
  function DeliveryTable({ items, isLoading = false }) {
6614
6637
  if (isLoading) {
6615
- 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)) }) });
6616
6639
  }
6617
6640
  if (items.length === 0) {
6618
- 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" }) });
6619
6642
  }
6620
- 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(
6621
6644
  "div",
6622
6645
  {
6623
6646
  className: "border-b border-ods-border last:border-b-0",
6624
- children: /* @__PURE__ */ jsx57(DeliveryRow, { item })
6647
+ children: /* @__PURE__ */ jsx58(DeliveryRow, { item })
6625
6648
  },
6626
6649
  item.id
6627
6650
  )) }) });
6628
6651
  }
6629
6652
 
6630
6653
  // src/components/shared/delivery/delivery-lists.tsx
6631
- import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
6654
+ import { jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
6632
6655
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
6633
6656
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
6634
6657
  var DEFAULT_SEARCH_PARAM_KEY3 = DEV_SECTION_PARAM_KEYS.search;
@@ -6642,9 +6665,9 @@ function DeliveryLists({
6642
6665
  const searchParams = useSearchParams();
6643
6666
  const router = useRouter();
6644
6667
  const pathname = usePathname();
6645
- const [data, setData] = useState10(null);
6646
- const [isLoading, setIsLoading] = useState10(true);
6647
- const [error, setError] = useState10(null);
6668
+ const [data, setData] = useState11(null);
6669
+ const [isLoading, setIsLoading] = useState11(true);
6670
+ const [error, setError] = useState11(null);
6648
6671
  const searchQuery = searchParams.get(searchParamKey) || "";
6649
6672
  const taskTypeFilter = searchParams.get(taskTypeParamKey) || "all";
6650
6673
  useEffect9(() => {
@@ -6692,10 +6715,10 @@ function DeliveryLists({
6692
6715
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
6693
6716
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
6694
6717
  if (error) {
6695
- 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() }) });
6696
6719
  }
6697
- return /* @__PURE__ */ jsxs46("div", { className: "w-full flex flex-col gap-[40px]", children: [
6698
- !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(
6699
6722
  EmptyState,
6700
6723
  {
6701
6724
  type: "search",
@@ -6710,7 +6733,7 @@ function DeliveryLists({
6710
6733
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
6711
6734
  }
6712
6735
  }
6713
- ) : /* @__PURE__ */ jsx58(
6736
+ ) : /* @__PURE__ */ jsx59(
6714
6737
  EmptyState,
6715
6738
  {
6716
6739
  type: "generic",
@@ -6719,12 +6742,12 @@ function DeliveryLists({
6719
6742
  showCTA: false
6720
6743
  }
6721
6744
  )),
6722
- showCompleted && (hasResults || isLoading) && /* @__PURE__ */ jsxs46("div", { className: "w-full", children: [
6723
- /* @__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: [
6724
6747
  "Recently Completed",
6725
- /* @__PURE__ */ jsx58("span", { className: "text-ods-accent", children: ":" })
6748
+ /* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: ":" })
6726
6749
  ] }),
6727
- /* @__PURE__ */ jsx58(
6750
+ /* @__PURE__ */ jsx59(
6728
6751
  DeliveryTable,
6729
6752
  {
6730
6753
  items: filteredCompleted,
@@ -6732,12 +6755,12 @@ function DeliveryLists({
6732
6755
  }
6733
6756
  )
6734
6757
  ] }),
6735
- showInProgress && (hasResults || isLoading) && /* @__PURE__ */ jsxs46("div", { className: "w-full", children: [
6736
- /* @__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: [
6737
6760
  "Active Tasks",
6738
- /* @__PURE__ */ jsx58("span", { className: "text-ods-accent", children: ":" })
6761
+ /* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: ":" })
6739
6762
  ] }),
6740
- /* @__PURE__ */ jsx58(
6763
+ /* @__PURE__ */ jsx59(
6741
6764
  DeliveryTable,
6742
6765
  {
6743
6766
  items: filteredInProgress,
@@ -6752,13 +6775,13 @@ function DeliveryLists({
6752
6775
  init_next_navigation();
6753
6776
 
6754
6777
  // src/components/shared/legal-document/use-legal-docs.ts
6755
- 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";
6756
6779
  function useLegalDocs(docType, options = {}) {
6757
6780
  const { initialData = null, apiEndpoint } = options;
6758
6781
  const effectiveEndpoint = apiEndpoint ?? `/api/legal/${docType}`;
6759
- const [data, setData] = useState11(initialData ?? null);
6760
- const [isLoading, setIsLoading] = useState11(!initialData);
6761
- const [error, setError] = useState11(null);
6782
+ const [data, setData] = useState12(initialData ?? null);
6783
+ const [isLoading, setIsLoading] = useState12(!initialData);
6784
+ const [error, setError] = useState12(null);
6762
6785
  const fetchDocument = useCallback5(async () => {
6763
6786
  try {
6764
6787
  setIsLoading(true);
@@ -6803,7 +6826,7 @@ function useLegalDocs(docType, options = {}) {
6803
6826
  }
6804
6827
 
6805
6828
  // src/components/shared/legal-document/legal-document-page.tsx
6806
- import { jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
6829
+ import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
6807
6830
  function LegalDocumentPage({
6808
6831
  docType,
6809
6832
  title,
@@ -6826,58 +6849,58 @@ function LegalDocumentPage({
6826
6849
  };
6827
6850
  const fallbackLastUpdatedLabel = data?.lastSynced != null ? formatLegalDate(data.lastSynced) : null;
6828
6851
  const effectiveLastUpdatedLabel = initialLastUpdatedLabel ?? fallbackLastUpdatedLabel;
6829
- const customTitle = /* @__PURE__ */ jsxs47("div", { className: "flex flex-col gap-4", children: [
6830
- /* @__PURE__ */ jsxs47(PageHeading, { children: [
6831
- /* @__PURE__ */ jsx59("span", { children: title }),
6832
- /* @__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: "." })
6833
6856
  ] }),
6834
- /* @__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: [
6835
6858
  effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription,
6836
- 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: [
6837
6860
  "Source: ",
6838
6861
  data.sourceFile
6839
6862
  ] })
6840
6863
  ] })
6841
6864
  ] });
6842
- return /* @__PURE__ */ jsx59(PageShell, { children: /* @__PURE__ */ jsxs47(PageLayout, { backButton: backCfg, children: [
6843
- /* @__PURE__ */ jsx59("div", { className: "flex flex-col gap-4", children: customTitle }),
6844
- /* @__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 ? (
6845
6868
  // Loading skeleton matching Knowledge Hub pattern
6846
- /* @__PURE__ */ jsxs47("div", { className: "space-y-6", children: [
6847
- /* @__PURE__ */ jsx59("div", { className: "h-10 bg-ods-skeleton rounded-lg w-3/4 animate-pulse" }),
6848
- /* @__PURE__ */ jsxs47("div", { className: "space-y-4", children: [
6849
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6850
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6851
- /* @__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" })
6852
6875
  ] }),
6853
- /* @__PURE__ */ jsx59("div", { className: "h-32 bg-ods-card border border-ods-border rounded-lg animate-pulse" }),
6854
- /* @__PURE__ */ jsxs47("div", { className: "space-y-4", children: [
6855
- /* @__PURE__ */ jsx59("div", { className: "h-4 bg-ods-skeleton rounded w-full animate-pulse" }),
6856
- /* @__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" })
6857
6880
  ] })
6858
6881
  ] })
6859
- ) : error ? /* @__PURE__ */ jsxs47("div", { className: "text-center space-y-4", children: [
6860
- /* @__PURE__ */ jsxs47("div", { className: "bg-red-900/20 border border-red-700 rounded-lg p-6", children: [
6861
- /* @__PURE__ */ jsx59("p", { className: "text-red-400 mb-2", children: errorTitle }),
6862
- /* @__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 })
6863
6886
  ] }),
6864
- /* @__PURE__ */ jsxs47("div", { className: "text-ods-text-secondary", children: [
6865
- /* @__PURE__ */ jsx59("p", { children: errorContactPrompt }),
6866
- /* @__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 })
6867
6890
  ] })
6868
- ] }) : data ? /* @__PURE__ */ jsx59(
6891
+ ] }) : data ? /* @__PURE__ */ jsx60(
6869
6892
  MarkdownRenderer,
6870
6893
  {
6871
6894
  content: data.content,
6872
6895
  sectionIds: data.sections || [],
6873
6896
  demoteMarkdownH1ToH2: true
6874
6897
  }
6875
- ) : /* @__PURE__ */ jsxs47("div", { className: "text-center text-ods-text-secondary py-16", children: [
6876
- /* @__PURE__ */ jsx59("p", { className: "text-xl", children: emptyStateMessage }),
6877
- /* @__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: [
6878
6901
  "Please contact",
6879
6902
  " ",
6880
- /* @__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 }),
6881
6904
  " ",
6882
6905
  "for more information."
6883
6906
  ] })
@@ -6887,7 +6910,7 @@ function LegalDocumentPage({
6887
6910
 
6888
6911
  // src/components/authors/author-detail-view.tsx
6889
6912
  init_cn();
6890
- import { jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
6913
+ import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
6891
6914
  function AuthorDetailView({
6892
6915
  author,
6893
6916
  proxyImageUrl,
@@ -6902,9 +6925,9 @@ function AuthorDetailView({
6902
6925
  }) ?? author.avatarUrl : null;
6903
6926
  const subtitle = [author.jobTitle, author.company].filter(Boolean).join(" @ ");
6904
6927
  const bioText = formatBioText(author.about);
6905
- return /* @__PURE__ */ jsxs48("div", { className: cn("flex flex-col gap-5 md:gap-6", className), children: [
6906
- /* @__PURE__ */ jsxs48("div", { className: "flex gap-6 w-full items-start", children: [
6907
- /* @__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(
6908
6931
  next_image_default,
6909
6932
  {
6910
6933
  src: proxiedAvatar,
@@ -6913,12 +6936,12 @@ function AuthorDetailView({
6913
6936
  className: "object-cover",
6914
6937
  unoptimized: true
6915
6938
  }
6916
- ) : /* @__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() }) }) }),
6917
- /* @__PURE__ */ jsxs48("div", { className: "min-w-0 flex flex-col justify-center gap-2", children: [
6918
- /* @__PURE__ */ jsx60("p", { className: "text-h2 text-ods-text-primary leading-none truncate", children: author.fullName }),
6919
- 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 }),
6920
6943
  author.socialLinks.length > 0 && // Ghost compact row (transparent 32px) — metadata, not CTAs.
6921
- /* @__PURE__ */ jsx60(
6944
+ /* @__PURE__ */ jsx61(
6922
6945
  SocialIconRow,
6923
6946
  {
6924
6947
  compact: true,
@@ -6931,8 +6954,8 @@ function AuthorDetailView({
6931
6954
  )
6932
6955
  ] })
6933
6956
  ] }),
6934
- bioText && /* @__PURE__ */ jsx60("p", { className: "font-body text-base leading-relaxed text-ods-text-secondary", children: bioText }),
6935
- 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)) }),
6936
6959
  children
6937
6960
  ] });
6938
6961
  }
@@ -7376,6 +7399,7 @@ export {
7376
7399
  MarkdownEditor,
7377
7400
  MediaCarousel,
7378
7401
  MediaGalleryManager,
7402
+ MediaGalleryStrip,
7379
7403
  MediaSkeleton,
7380
7404
  MediaTypeSelector,
7381
7405
  MenuIcon,