@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.
- package/dist/components/index.cjs +53 -29
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +252 -228
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/media-gallery-strip.d.ts +26 -0
- package/dist/components/shared/media-gallery-strip.d.ts.map +1 -0
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/hero-image-uploader.tsx +2 -2
- package/src/components/index.ts +5 -0
- package/src/components/shared/media-gallery-strip.tsx +93 -0
- package/src/components/shared/product-release/release-detail-page.tsx +3 -36
package/dist/components/index.js
CHANGED
|
@@ -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-
|
|
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-
|
|
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
|
|
5834
|
-
|
|
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__ */
|
|
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] =
|
|
5862
|
-
const [deliveryData, setDeliveryData] =
|
|
5863
|
-
const [roadmapLoading, setRoadmapLoading] =
|
|
5864
|
-
const [deliveryLoading, setDeliveryLoading] =
|
|
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__ */
|
|
5941
|
+
return /* @__PURE__ */ jsx53(DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
|
|
5897
5942
|
}
|
|
5898
5943
|
if (error || !release) {
|
|
5899
|
-
return /* @__PURE__ */
|
|
5900
|
-
/* @__PURE__ */
|
|
5901
|
-
/* @__PURE__ */
|
|
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__ */
|
|
5928
|
-
showBackButton && /* @__PURE__ */
|
|
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__ */
|
|
5937
|
-
/* @__PURE__ */
|
|
5938
|
-
/* @__PURE__ */
|
|
5939
|
-
/* @__PURE__ */
|
|
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__ */
|
|
5945
|
-
/* @__PURE__ */
|
|
5946
|
-
/* @__PURE__ */
|
|
5947
|
-
/* @__PURE__ */
|
|
5948
|
-
/* @__PURE__ */
|
|
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__ */
|
|
5951
|
-
/* @__PURE__ */
|
|
5952
|
-
/* @__PURE__ */
|
|
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__ */
|
|
5955
|
-
/* @__PURE__ */
|
|
5956
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
-
|
|
5967
|
-
|
|
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__ */
|
|
5996
|
-
youtubeUrl && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
6024
|
-
hasBreakingChanges && /* @__PURE__ */
|
|
6025
|
-
/* @__PURE__ */
|
|
6026
|
-
/* @__PURE__ */
|
|
6027
|
-
/* @__PURE__ */
|
|
6028
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
6070
|
+
icon: /* @__PURE__ */ jsx53(AlertTriangle, { className: "h-6 w-6" }),
|
|
6039
6071
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
6040
6072
|
}
|
|
6041
6073
|
),
|
|
6042
|
-
/* @__PURE__ */
|
|
6074
|
+
/* @__PURE__ */ jsx53(
|
|
6043
6075
|
ReleaseChangelogSection,
|
|
6044
6076
|
{
|
|
6045
6077
|
title: "Features Added",
|
|
6046
6078
|
entries: featuresAdded || [],
|
|
6047
|
-
icon: /* @__PURE__ */
|
|
6079
|
+
icon: /* @__PURE__ */ jsx53(Sparkles2, { className: "h-6 w-6" }),
|
|
6048
6080
|
previewFirst: true,
|
|
6049
6081
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
6050
6082
|
}
|
|
6051
6083
|
),
|
|
6052
|
-
/* @__PURE__ */
|
|
6084
|
+
/* @__PURE__ */ jsx53(
|
|
6053
6085
|
ReleaseChangelogSection,
|
|
6054
6086
|
{
|
|
6055
6087
|
title: "Bugs Fixed",
|
|
6056
6088
|
entries: bugFixed || [],
|
|
6057
|
-
icon: /* @__PURE__ */
|
|
6089
|
+
icon: /* @__PURE__ */ jsx53(Wrench, { className: "h-6 w-6" }),
|
|
6058
6090
|
previewFirst: true,
|
|
6059
6091
|
SimpleMarkdownRenderer: MarkdownRenderer
|
|
6060
6092
|
}
|
|
6061
6093
|
),
|
|
6062
|
-
/* @__PURE__ */
|
|
6094
|
+
/* @__PURE__ */ jsx53(
|
|
6063
6095
|
ReleaseChangelogSection,
|
|
6064
6096
|
{
|
|
6065
6097
|
title: "Improvements",
|
|
6066
6098
|
entries: improvements || [],
|
|
6067
|
-
icon: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
6081
|
-
/* @__PURE__ */
|
|
6082
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6098
|
-
/* @__PURE__ */
|
|
6099
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6108
|
-
/* @__PURE__ */
|
|
6109
|
-
/* @__PURE__ */
|
|
6110
|
-
githubReleases && githubReleases.length > 0 && /* @__PURE__ */
|
|
6111
|
-
/* @__PURE__ */
|
|
6112
|
-
/* @__PURE__ */
|
|
6113
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6155
|
+
/* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
6124
6156
|
] }, ghRelease.id)) }),
|
|
6125
|
-
knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */
|
|
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__ */
|
|
6129
|
-
/* @__PURE__ */
|
|
6130
|
-
/* @__PURE__ */
|
|
6131
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6171
|
+
/* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
6140
6172
|
] }, linkId);
|
|
6141
6173
|
}) }),
|
|
6142
|
-
migrationGuideUrl && /* @__PURE__ */
|
|
6143
|
-
/* @__PURE__ */
|
|
6144
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6186
|
+
/* @__PURE__ */ jsx53(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
6155
6187
|
] }),
|
|
6156
|
-
documentationUrl && /* @__PURE__ */
|
|
6157
|
-
/* @__PURE__ */
|
|
6158
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
6209
|
+
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
6187
6210
|
function ReleaseDetailSkeleton() {
|
|
6188
|
-
return /* @__PURE__ */
|
|
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
|
|
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
|
|
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] =
|
|
6202
|
-
const [isLoading, setIsLoading] =
|
|
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
|
|
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__ */
|
|
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] =
|
|
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] =
|
|
6404
|
-
const [isInitialized, setIsInitialized] =
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
6464
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6496
|
+
/* @__PURE__ */ jsx55("span", { className: "text-ods-accent", children: ":" })
|
|
6474
6497
|
]
|
|
6475
6498
|
}
|
|
6476
6499
|
),
|
|
6477
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
6536
|
+
import { jsx as jsx56, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
6514
6537
|
function RoadmapCardSkeleton2() {
|
|
6515
|
-
return /* @__PURE__ */
|
|
6516
|
-
/* @__PURE__ */
|
|
6517
|
-
/* @__PURE__ */
|
|
6518
|
-
/* @__PURE__ */
|
|
6519
|
-
/* @__PURE__ */
|
|
6520
|
-
/* @__PURE__ */
|
|
6521
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6525
|
-
/* @__PURE__ */
|
|
6526
|
-
/* @__PURE__ */
|
|
6527
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6530
|
-
/* @__PURE__ */
|
|
6531
|
-
/* @__PURE__ */
|
|
6532
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
6593
|
+
return /* @__PURE__ */ jsx57(LoadError, { message: "Failed to load roadmap.", onRetry: reload });
|
|
6571
6594
|
}
|
|
6572
6595
|
if (isLoading && !data) {
|
|
6573
|
-
return /* @__PURE__ */
|
|
6596
|
+
return /* @__PURE__ */ jsx57(RoadmapGridSkeleton, { showLeftMargin });
|
|
6574
6597
|
}
|
|
6575
|
-
return /* @__PURE__ */
|
|
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
|
|
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
|
|
6618
|
+
import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
6596
6619
|
function SkeletonRow() {
|
|
6597
|
-
return /* @__PURE__ */
|
|
6598
|
-
/* @__PURE__ */
|
|
6599
|
-
/* @__PURE__ */
|
|
6600
|
-
/* @__PURE__ */
|
|
6601
|
-
/* @__PURE__ */
|
|
6602
|
-
/* @__PURE__ */
|
|
6603
|
-
/* @__PURE__ */
|
|
6604
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6608
|
-
/* @__PURE__ */
|
|
6609
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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] =
|
|
6646
|
-
const [isLoading, setIsLoading] =
|
|
6647
|
-
const [error, setError] =
|
|
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__ */
|
|
6718
|
+
return /* @__PURE__ */ jsx59("div", { className: "w-full", children: /* @__PURE__ */ jsx59(LoadError, { message: error, onRetry: () => window.location.reload() }) });
|
|
6696
6719
|
}
|
|
6697
|
-
return /* @__PURE__ */
|
|
6698
|
-
!isLoading && !hasResults && (hasActiveFilters ? /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
6723
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6748
|
+
/* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: ":" })
|
|
6726
6749
|
] }),
|
|
6727
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6736
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6761
|
+
/* @__PURE__ */ jsx59("span", { className: "text-ods-accent", children: ":" })
|
|
6739
6762
|
] }),
|
|
6740
|
-
/* @__PURE__ */
|
|
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
|
|
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] =
|
|
6760
|
-
const [isLoading, setIsLoading] =
|
|
6761
|
-
const [error, setError] =
|
|
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
|
|
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__ */
|
|
6830
|
-
/* @__PURE__ */
|
|
6831
|
-
/* @__PURE__ */
|
|
6832
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
6843
|
-
/* @__PURE__ */
|
|
6844
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6847
|
-
/* @__PURE__ */
|
|
6848
|
-
/* @__PURE__ */
|
|
6849
|
-
/* @__PURE__ */
|
|
6850
|
-
/* @__PURE__ */
|
|
6851
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6854
|
-
/* @__PURE__ */
|
|
6855
|
-
/* @__PURE__ */
|
|
6856
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6860
|
-
/* @__PURE__ */
|
|
6861
|
-
/* @__PURE__ */
|
|
6862
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6865
|
-
/* @__PURE__ */
|
|
6866
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
6876
|
-
/* @__PURE__ */
|
|
6877
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
6906
|
-
/* @__PURE__ */
|
|
6907
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6917
|
-
/* @__PURE__ */
|
|
6918
|
-
/* @__PURE__ */
|
|
6919
|
-
subtitle && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
6935
|
-
author.knowsAbout.length > 0 && /* @__PURE__ */
|
|
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,
|