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