@flamingo-stack/openframe-frontend-core 0.0.266 → 0.0.267
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-G5GQVAPI.cjs → chunk-5QJQAFTP.cjs} +126 -57
- package/dist/chunk-5QJQAFTP.cjs.map +1 -0
- package/dist/chunk-722TTRIJ.cjs +29 -0
- package/dist/chunk-722TTRIJ.cjs.map +1 -0
- package/dist/{chunk-QXRXIHY6.cjs → chunk-AA77CC2Y.cjs} +12 -12
- package/dist/{chunk-QXRXIHY6.cjs.map → chunk-AA77CC2Y.cjs.map} +1 -1
- package/dist/{chunk-WB2JXKEI.cjs → chunk-CI5XE4LB.cjs} +37 -37
- package/dist/{chunk-WB2JXKEI.cjs.map → chunk-CI5XE4LB.cjs.map} +1 -1
- package/dist/{chunk-UUARMJJE.cjs → chunk-CICK3FUU.cjs} +100 -5
- package/dist/chunk-CICK3FUU.cjs.map +1 -0
- package/dist/{chunk-K4K4X62E.js → chunk-CYMMGPPV.js} +125 -56
- package/dist/chunk-CYMMGPPV.js.map +1 -0
- package/dist/{chunk-FRU4LQJ4.js → chunk-GJVSLS2R.js} +5 -7
- package/dist/{chunk-FRU4LQJ4.js.map → chunk-GJVSLS2R.js.map} +1 -1
- package/dist/{chunk-HTR3ARN6.js → chunk-ICOMPUMX.js} +343 -248
- package/dist/chunk-ICOMPUMX.js.map +1 -0
- package/dist/{chunk-DTJ32U7J.js → chunk-J6O57C7S.js} +8 -72
- package/dist/chunk-J6O57C7S.js.map +1 -0
- package/dist/{chunk-QAQ7AROS.cjs → chunk-O6UA475M.cjs} +302 -366
- package/dist/chunk-O6UA475M.cjs.map +1 -0
- package/dist/chunk-OO4ZGDRO.js +29 -0
- package/dist/chunk-OO4ZGDRO.js.map +1 -0
- package/dist/{chunk-TX2VP43R.js → chunk-P7JHUX4X.js} +2 -2
- package/dist/{chunk-NR535XIY.js → chunk-T2URJAX2.js} +66 -1
- package/dist/chunk-T2URJAX2.js.map +1 -0
- package/dist/{chunk-VYGS24RO.cjs → chunk-TPZI7NBN.cjs} +16 -18
- package/dist/chunk-TPZI7NBN.cjs.map +1 -0
- package/dist/{chunk-SRM7HE2A.js → chunk-XSK72QRR.js} +3 -3
- package/dist/{chunk-7VMEOFEA.cjs → chunk-Y2B6WDU6.cjs} +67 -2
- package/dist/chunk-Y2B6WDU6.cjs.map +1 -0
- package/dist/{chunk-Q52JZP3P.cjs → chunk-YV55JZAD.cjs} +27 -27
- package/dist/{chunk-Q52JZP3P.cjs.map → chunk-YV55JZAD.cjs.map} +1 -1
- package/dist/{chunk-KUYYJ2XM.js → chunk-Z6MKG53Z.js} +4 -4
- package/dist/components/chat/index.cjs +5 -5
- package/dist/components/chat/index.js +4 -4
- package/dist/components/contact/index.cjs +6 -6
- package/dist/components/contact/index.js +5 -5
- package/dist/components/faq/faq-section.d.ts +20 -23
- package/dist/components/faq/faq-section.d.ts.map +1 -1
- package/dist/components/faq/index.cjs +4 -4
- package/dist/components/faq/index.js +3 -3
- package/dist/components/faq-accordion.d.ts +0 -5
- package/dist/components/faq-accordion.d.ts.map +1 -1
- package/dist/components/features/index.cjs +7 -8
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +6 -7
- package/dist/components/index.cjs +84 -84
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +13 -13
- package/dist/components/navigation/index.cjs +5 -5
- package/dist/components/navigation/index.js +4 -4
- package/dist/components/onboarding-guides/index.cjs +24 -25
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +4 -5
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +69 -69
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +10 -10
- package/dist/components/ui/index.cjs +7 -7
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +7 -7
- package/dist/index.cjs +10 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -10
- package/package.json +1 -1
- package/src/components/faq/faq-section.tsx +212 -104
- package/src/components/faq-accordion.tsx +1 -15
- package/dist/chunk-7VMEOFEA.cjs.map +0 -1
- package/dist/chunk-DTJ32U7J.js.map +0 -1
- package/dist/chunk-FREG2KXV.js +0 -128
- package/dist/chunk-FREG2KXV.js.map +0 -1
- package/dist/chunk-G5GQVAPI.cjs.map +0 -1
- package/dist/chunk-HTR3ARN6.js.map +0 -1
- package/dist/chunk-JMU4RU5J.cjs +0 -128
- package/dist/chunk-JMU4RU5J.cjs.map +0 -1
- package/dist/chunk-K4K4X62E.js.map +0 -1
- package/dist/chunk-NR535XIY.js.map +0 -1
- package/dist/chunk-QAQ7AROS.cjs.map +0 -1
- package/dist/chunk-UUARMJJE.cjs.map +0 -1
- package/dist/chunk-VYGS24RO.cjs.map +0 -1
- /package/dist/{chunk-TX2VP43R.js.map → chunk-P7JHUX4X.js.map} +0 -0
- /package/dist/{chunk-SRM7HE2A.js.map → chunk-XSK72QRR.js.map} +0 -0
- /package/dist/{chunk-KUYYJ2XM.js.map → chunk-Z6MKG53Z.js.map} +0 -0
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from "./chunk-LXC6P2EO.js";
|
|
14
14
|
import {
|
|
15
15
|
SECTION_HEADING_CLASS
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-OO4ZGDRO.js";
|
|
17
17
|
import {
|
|
18
18
|
Button,
|
|
19
19
|
DropdownMenu,
|
|
@@ -328,6 +328,66 @@ var TabsContent = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE
|
|
|
328
328
|
));
|
|
329
329
|
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
330
330
|
|
|
331
|
+
// src/components/ui/status-badge.tsx
|
|
332
|
+
init_cn();
|
|
333
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
334
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
335
|
+
var statusBadgeVariants = cva2(
|
|
336
|
+
"inline-flex items-center justify-center rounded font-mono font-medium uppercase tracking-wide",
|
|
337
|
+
{
|
|
338
|
+
variants: {
|
|
339
|
+
variant: {
|
|
340
|
+
card: "px-3 py-1.5 text-sm",
|
|
341
|
+
button: "px-2 py-0.5 text-[10px] leading-none"
|
|
342
|
+
},
|
|
343
|
+
colorScheme: {
|
|
344
|
+
cyan: "bg-[var(--ods-flamingo-cyan-base)] text-ods-text-on-accent",
|
|
345
|
+
pink: "bg-[var(--ods-flamingo-pink-base)] text-ods-text-on-accent",
|
|
346
|
+
yellow: "bg-[var(--ods-flamingo-yellow-base)] text-ods-text-on-accent border border-[var(--ods-system-greys-black)]",
|
|
347
|
+
green: "bg-[var(--ods-flamingo-green-base)] text-ods-text-on-accent",
|
|
348
|
+
purple: "bg-[var(--ods-flamingo-purple-base)] text-ods-text-on-accent",
|
|
349
|
+
success: "bg-[var(--ods-attention-green-success-secondary)] text-[var(--ods-attention-green-success)]",
|
|
350
|
+
error: "bg-[var(--ods-attention-red-error-secondary)] text-[var(--ods-attention-red-error)]",
|
|
351
|
+
warning: "bg-[var(--ods-attention-yellow-warning-secondary)] text-[var(--ods-attention-yellow-warning)]",
|
|
352
|
+
default: "bg-ods-bg-secondary text-ods-text-primary",
|
|
353
|
+
// Border-only variants (no background) - for task type badges
|
|
354
|
+
accentBorder: "bg-transparent border-2 text-ods-accent border-ods-accent",
|
|
355
|
+
errorBorder: "bg-transparent border-2 text-[var(--ods-attention-red-error)] border-[var(--ods-attention-red-error)]",
|
|
356
|
+
whiteBorder: "bg-transparent border-2 text-ods-text-primary border-ods-text-primary"
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
defaultVariants: {
|
|
360
|
+
variant: "card",
|
|
361
|
+
colorScheme: "default"
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
);
|
|
365
|
+
function StatusBadge({
|
|
366
|
+
text,
|
|
367
|
+
variant,
|
|
368
|
+
colorScheme,
|
|
369
|
+
className,
|
|
370
|
+
singleLine,
|
|
371
|
+
...props
|
|
372
|
+
}) {
|
|
373
|
+
const renderText = () => {
|
|
374
|
+
if (singleLine) return text;
|
|
375
|
+
if (variant === "button" && text.includes(" ")) {
|
|
376
|
+
const words = text.split(" ");
|
|
377
|
+
return /* @__PURE__ */ jsx5("span", { className: "flex flex-col items-center justify-center text-center gap-0", children: words.map((word, index) => /* @__PURE__ */ jsx5("span", { className: "block", children: word }, index)) });
|
|
378
|
+
}
|
|
379
|
+
return text;
|
|
380
|
+
};
|
|
381
|
+
return /* @__PURE__ */ jsx5(
|
|
382
|
+
"span",
|
|
383
|
+
{
|
|
384
|
+
className: cn(statusBadgeVariants({ variant, colorScheme }), className),
|
|
385
|
+
...props,
|
|
386
|
+
children: renderText()
|
|
387
|
+
}
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
|
|
331
391
|
// src/components/ui/simple-markdown-renderer.tsx
|
|
332
392
|
import { useEffect, useState, useRef, useMemo, useCallback, memo } from "react";
|
|
333
393
|
import ReactMarkdown, { defaultUrlTransform } from "react-markdown";
|
|
@@ -337,7 +397,7 @@ import rehypeHighlight from "rehype-highlight";
|
|
|
337
397
|
import rehypeRaw from "rehype-raw";
|
|
338
398
|
import { visit } from "unist-util-visit";
|
|
339
399
|
init_cn();
|
|
340
|
-
import { jsx as
|
|
400
|
+
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
341
401
|
var EVENT_HANDLER_ATTR_RE = /^on[a-z]+$/i;
|
|
342
402
|
var JAVASCRIPT_URL_RE = /^[\s\x00-\x1f]*javascript:/i;
|
|
343
403
|
var DATA_URL_RE = /^[\s\x00-\x1f]*data:/i;
|
|
@@ -647,15 +707,15 @@ var MermaidDiagram = ({ chart }) => {
|
|
|
647
707
|
}, [chart, mounted]);
|
|
648
708
|
if (error) {
|
|
649
709
|
return /* @__PURE__ */ jsxs4("div", { className: "error-state bg-ods-card border border-ods-border rounded-lg p-6 my-6", children: [
|
|
650
|
-
/* @__PURE__ */
|
|
651
|
-
/* @__PURE__ */
|
|
652
|
-
/* @__PURE__ */
|
|
710
|
+
/* @__PURE__ */ jsx6("div", { className: "error-icon flex justify-center mb-4", children: /* @__PURE__ */ jsx6(AlertCircleIcon, { className: "w-12 h-12 text-ods-error" }) }),
|
|
711
|
+
/* @__PURE__ */ jsx6("div", { className: "error-title text-center font-sans font-semibold text-lg text-ods-error mb-2", children: "Diagram Error" }),
|
|
712
|
+
/* @__PURE__ */ jsx6("div", { className: "error-description text-center font-sans text-sm text-ods-text-secondary mb-4 break-words overflow-hidden max-w-full", children: /* @__PURE__ */ jsx6("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx6("pre", { className: "whitespace-pre-wrap break-words text-xs", children: error }) }) })
|
|
653
713
|
] });
|
|
654
714
|
}
|
|
655
715
|
if (isLoading || !svg) {
|
|
656
|
-
return /* @__PURE__ */
|
|
716
|
+
return /* @__PURE__ */ jsx6("div", { className: "skeleton-code bg-ods-card border border-ods-border rounded-lg p-6 min-h-[120px] flex items-center justify-center", children: /* @__PURE__ */ jsx6("div", { className: "animate-pulse text-ods-text-tertiary font-sans", children: isLoading ? "Loading diagram renderer..." : "Rendering diagram..." }) });
|
|
657
717
|
}
|
|
658
|
-
return /* @__PURE__ */
|
|
718
|
+
return /* @__PURE__ */ jsx6("div", { className: "mermaid-container rounded-lg p-4 md:p-6 lg:p-8 my-6 overflow-x-auto bg-ods-card border border-ods-border", children: /* @__PURE__ */ jsx6("div", { className: "flex justify-center items-center w-full min-h-[200px] md:min-h-[250px] lg:min-h-[300px]", children: /* @__PURE__ */ jsx6(
|
|
659
719
|
"div",
|
|
660
720
|
{
|
|
661
721
|
className: "mermaid-svg-container w-full flex justify-center max-w-full",
|
|
@@ -786,7 +846,7 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
786
846
|
const effectiveLevel = Tag2 === "h1" && demoteMarkdownH1ToH2 ? 2 : level;
|
|
787
847
|
const id = generateHeadingId(text, effectiveLevel);
|
|
788
848
|
const EffectiveTag = Tag2 === "h1" && demoteMarkdownH1ToH2 ? "h2" : Tag2;
|
|
789
|
-
return /* @__PURE__ */
|
|
849
|
+
return /* @__PURE__ */ jsx6(EffectiveTag, { id, className: headingClassName, children });
|
|
790
850
|
},
|
|
791
851
|
[generateHeadingId, demoteMarkdownH1ToH2]
|
|
792
852
|
);
|
|
@@ -796,12 +856,12 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
796
856
|
const match = /language-(\w+)/.exec(codeClassName || "");
|
|
797
857
|
const language = match ? match[1] : "";
|
|
798
858
|
if (!inline && language === "mermaid") {
|
|
799
|
-
return /* @__PURE__ */
|
|
859
|
+
return /* @__PURE__ */ jsx6(MermaidDiagram, { chart: String(children).replace(/\n$/, "") });
|
|
800
860
|
}
|
|
801
861
|
if (!inline && match) {
|
|
802
862
|
return /* @__PURE__ */ jsxs4("div", { className: "code-block-container border rounded-lg my-6 overflow-hidden bg-ods-card border-ods-border", children: [
|
|
803
|
-
/* @__PURE__ */
|
|
804
|
-
/* @__PURE__ */
|
|
863
|
+
/* @__PURE__ */ jsx6("div", { className: "code-header border-b px-4 py-2 bg-ods-card border-ods-border", children: /* @__PURE__ */ jsx6("span", { className: "font-sans text-xs uppercase tracking-wide text-ods-text-tertiary", children: language || "code" }) }),
|
|
864
|
+
/* @__PURE__ */ jsx6("div", { className: "p-4", children: /* @__PURE__ */ jsx6("pre", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx6(
|
|
805
865
|
"code",
|
|
806
866
|
{
|
|
807
867
|
className: cn(`language-${language} hljs`, textSizes.code),
|
|
@@ -816,12 +876,12 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
816
876
|
) }) })
|
|
817
877
|
] });
|
|
818
878
|
}
|
|
819
|
-
return /* @__PURE__ */
|
|
879
|
+
return /* @__PURE__ */ jsx6("code", { className: "font-mono text-[0.9em] px-1.5 py-0.5 rounded border bg-ods-card text-ods-text-primary border-ods-border", ...props, children });
|
|
820
880
|
},
|
|
821
881
|
// --- div (pass-through, overridable for embeds) ---
|
|
822
|
-
div: ({ node, className: divClassName, children, ...props }) => /* @__PURE__ */
|
|
882
|
+
div: ({ node, className: divClassName, children, ...props }) => /* @__PURE__ */ jsx6("div", { className: divClassName, ...props, children }),
|
|
823
883
|
// --- blockquote ---
|
|
824
|
-
blockquote: ({ children }) => /* @__PURE__ */
|
|
884
|
+
blockquote: ({ children }) => /* @__PURE__ */ jsx6("blockquote", { className: "border-l-4 border-ods-accent ml-0 pl-6 my-8 py-4 rounded-r-lg bg-ods-bg-secondary", children: /* @__PURE__ */ jsx6("div", { className: cn("font-sans leading-relaxed text-ods-text-secondary", textSizes.blockquote), children }) }),
|
|
825
885
|
// --- headings ---
|
|
826
886
|
h1: makeHeading("h1", 1, cn("font-sans font-bold mt-8 mb-4 first:mt-0 text-ods-text-primary", textSizes.h1)),
|
|
827
887
|
h2: makeHeading("h2", 2, cn("font-sans font-semibold mt-8 mb-4 pb-2 border-b text-ods-text-primary border-ods-border", textSizes.h2)),
|
|
@@ -830,7 +890,7 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
830
890
|
h5: makeHeading("h5", 5, cn("font-sans font-semibold mt-3 mb-2 text-ods-text-primary", textSizes.h5)),
|
|
831
891
|
h6: makeHeading("h6", 6, cn("font-sans font-semibold mt-3 mb-1 text-ods-text-primary", textSizes.h6)),
|
|
832
892
|
// --- paragraph ---
|
|
833
|
-
p: ({ children }) => /* @__PURE__ */
|
|
893
|
+
p: ({ children }) => /* @__PURE__ */ jsx6("p", { className: cn("leading-relaxed mb-4 first:mt-0 last:mb-0 text-ods-text-primary", textSizes.p), children }),
|
|
834
894
|
// --- links ---
|
|
835
895
|
a: ({ href, children, className: linkClassName }) => {
|
|
836
896
|
const isBroken = brokenLinks.includes(href);
|
|
@@ -838,12 +898,12 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
838
898
|
if (isBroken) {
|
|
839
899
|
return /* @__PURE__ */ jsxs4("span", { className: "text-ods-accent cursor-not-allowed", children: [
|
|
840
900
|
children,
|
|
841
|
-
/* @__PURE__ */
|
|
901
|
+
/* @__PURE__ */ jsx6("sup", { className: "ml-1 text-xs font-bold text-ods-attention-red-error", children: "[BROKEN]" })
|
|
842
902
|
] });
|
|
843
903
|
}
|
|
844
904
|
if (isInternalDocLink && onInternalLinkClick) {
|
|
845
905
|
const currentPath = propCurrentPath ?? "";
|
|
846
|
-
return /* @__PURE__ */
|
|
906
|
+
return /* @__PURE__ */ jsx6(
|
|
847
907
|
"span",
|
|
848
908
|
{
|
|
849
909
|
className: "text-ods-accent no-underline relative transition-colors duration-200 hover:after:w-full after:content-[''] after:absolute after:w-0 after:h-0.5 after:-bottom-0.5 after:left-0 after:bg-ods-accent after:transition-all after:duration-300 cursor-pointer",
|
|
@@ -878,7 +938,7 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
878
938
|
}
|
|
879
939
|
);
|
|
880
940
|
}
|
|
881
|
-
return /* @__PURE__ */
|
|
941
|
+
return /* @__PURE__ */ jsx6(
|
|
882
942
|
"a",
|
|
883
943
|
{
|
|
884
944
|
href,
|
|
@@ -939,7 +999,7 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
939
999
|
// (cached re-renders pop in without a perceptible shift).
|
|
940
1000
|
img: ({ src, alt }) => {
|
|
941
1001
|
if (!src || typeof src !== "string" || src.trim() === "") return null;
|
|
942
|
-
return /* @__PURE__ */
|
|
1002
|
+
return /* @__PURE__ */ jsx6(
|
|
943
1003
|
next_image_default,
|
|
944
1004
|
{
|
|
945
1005
|
src,
|
|
@@ -953,22 +1013,22 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
953
1013
|
);
|
|
954
1014
|
},
|
|
955
1015
|
// --- lists ---
|
|
956
|
-
ul: ({ children }) => /* @__PURE__ */
|
|
957
|
-
ol: ({ children }) => /* @__PURE__ */
|
|
958
|
-
li: ({ children }) => /* @__PURE__ */
|
|
1016
|
+
ul: ({ children }) => /* @__PURE__ */ jsx6("ul", { className: "list-disc list-outside my-4 ml-8 space-y-2 text-ods-text-primary", children }),
|
|
1017
|
+
ol: ({ children }) => /* @__PURE__ */ jsx6("ol", { className: "list-decimal list-outside my-4 ml-8 space-y-2 text-ods-text-primary", children }),
|
|
1018
|
+
li: ({ children }) => /* @__PURE__ */ jsx6("li", { className: cn("leading-relaxed pl-2", textSizes.li), children }),
|
|
959
1019
|
// --- tables ---
|
|
960
|
-
table: ({ children }) => /* @__PURE__ */
|
|
961
|
-
thead: ({ children }) => /* @__PURE__ */
|
|
962
|
-
th: ({ children }) => /* @__PURE__ */
|
|
963
|
-
td: ({ children }) => /* @__PURE__ */
|
|
1020
|
+
table: ({ children }) => /* @__PURE__ */ jsx6("div", { className: "table-container my-6 overflow-x-auto", children: /* @__PURE__ */ jsx6("div", { className: "min-w-full border rounded-lg border-ods-border bg-ods-card", children: /* @__PURE__ */ jsx6("table", { className: "w-full table-fixed md:table-auto", children }) }) }),
|
|
1021
|
+
thead: ({ children }) => /* @__PURE__ */ jsx6("thead", { className: "bg-ods-bg-secondary", children }),
|
|
1022
|
+
th: ({ children }) => /* @__PURE__ */ jsx6("th", { className: cn("px-2 md:px-4 py-3 text-left font-semibold text-ods-accent border-r last:border-r-0 break-words border-ods-border", textSizes.th), children }),
|
|
1023
|
+
td: ({ children }) => /* @__PURE__ */ jsx6("td", { className: cn("px-2 md:px-4 py-3 border-r last:border-r-0 border-b break-words whitespace-normal text-ods-text-primary border-ods-border", textSizes.td), children }),
|
|
964
1024
|
// --- horizontal rule ---
|
|
965
|
-
hr: () => /* @__PURE__ */
|
|
1025
|
+
hr: () => /* @__PURE__ */ jsx6("hr", { className: "border-0 border-t my-8 border-ods-border" }),
|
|
966
1026
|
// --- merge overrides ---
|
|
967
1027
|
...componentOverrides
|
|
968
1028
|
}), [makeHeading, brokenLinks, propCurrentPath, onInternalLinkClick, onResolveLink, componentOverrides, textSizes]);
|
|
969
1029
|
return /* @__PURE__ */ jsxs4("div", { className: `simple-markdown-renderer ${className}`, children: [
|
|
970
|
-
/* @__PURE__ */
|
|
971
|
-
/* @__PURE__ */
|
|
1030
|
+
/* @__PURE__ */ jsx6("style", { dangerouslySetInnerHTML: { __html: mermaidStyles } }),
|
|
1031
|
+
/* @__PURE__ */ jsx6("div", { className: "content-wrapper max-w-none break-words", children: /* @__PURE__ */ jsx6("article", { className: "prose prose-lg max-w-none", children: /* @__PURE__ */ jsx6(
|
|
972
1032
|
ReactMarkdown,
|
|
973
1033
|
{
|
|
974
1034
|
remarkPlugins: [remarkGfm, remarkBreaks, ...additionalRemarkPlugins ?? []],
|
|
@@ -1293,7 +1353,7 @@ function formatBioText(aboutHtml, fallback = "") {
|
|
|
1293
1353
|
// src/components/ui/square-avatar.tsx
|
|
1294
1354
|
import * as React4 from "react";
|
|
1295
1355
|
init_cn();
|
|
1296
|
-
import { jsx as
|
|
1356
|
+
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1297
1357
|
var SquareAvatar = React4.memo(React4.forwardRef(
|
|
1298
1358
|
({ className, src, alt, size = "md", fallback, variant = "square", initialsClassName, ...props }, ref) => {
|
|
1299
1359
|
const sizeClasses = {
|
|
@@ -1324,7 +1384,7 @@ var SquareAvatar = React4.memo(React4.forwardRef(
|
|
|
1324
1384
|
ref,
|
|
1325
1385
|
...props,
|
|
1326
1386
|
children: [
|
|
1327
|
-
/* @__PURE__ */
|
|
1387
|
+
/* @__PURE__ */ jsx7("div", { className: cn(
|
|
1328
1388
|
// Initials use `text-ods-text-primary` so they stay readable
|
|
1329
1389
|
// both on the default `bg-ods-bg` AND on accent-fill backgrounds
|
|
1330
1390
|
// (`bg-ods-flamingo-pink` for the current user, `bg-ods-flamingo-cyan`
|
|
@@ -1337,7 +1397,7 @@ var SquareAvatar = React4.memo(React4.forwardRef(
|
|
|
1337
1397
|
initialsClassName,
|
|
1338
1398
|
src && "hidden"
|
|
1339
1399
|
), children: getFirstLastInitials(fallback || alt) || "?" }),
|
|
1340
|
-
src && /* @__PURE__ */
|
|
1400
|
+
src && /* @__PURE__ */ jsx7(
|
|
1341
1401
|
next_image_default,
|
|
1342
1402
|
{
|
|
1343
1403
|
className: "absolute inset-0 h-full w-full object-cover",
|
|
@@ -1443,7 +1503,7 @@ import { Check } from "lucide-react";
|
|
|
1443
1503
|
import React7, { useCallback as useCallback3 } from "react";
|
|
1444
1504
|
init_cn();
|
|
1445
1505
|
init_button();
|
|
1446
|
-
import { Fragment, jsx as
|
|
1506
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1447
1507
|
var ROW_CLASSES = "flex flex-1 min-w-0 items-center gap-[var(--spacing-system-xsf)] p-[var(--spacing-system-s)] cursor-pointer transition-colors bg-ods-bg outline-none";
|
|
1448
1508
|
var WRAPPER_CLASSES = "relative flex items-stretch border-b border-ods-border last:border-b-0";
|
|
1449
1509
|
var SECONDARY_ACTION_CLASSES = "flex p-[var(--spacing-system-s)] shrink-0 items-center justify-center self-stretch border-l border-ods-border transition-colors hover:bg-ods-bg-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus [&_svg]:w-4 [&_svg]:h-4 md:[&_svg]:w-6 md:[&_svg]:h-6";
|
|
@@ -1464,7 +1524,7 @@ var SecondaryAction = ({ action }) => {
|
|
|
1464
1524
|
action.disabled && "cursor-not-allowed opacity-60 pointer-events-none"
|
|
1465
1525
|
);
|
|
1466
1526
|
if (action.href) {
|
|
1467
|
-
return /* @__PURE__ */
|
|
1527
|
+
return /* @__PURE__ */ jsx8(
|
|
1468
1528
|
next_link_default,
|
|
1469
1529
|
{
|
|
1470
1530
|
href: action.href,
|
|
@@ -1480,7 +1540,7 @@ var SecondaryAction = ({ action }) => {
|
|
|
1480
1540
|
}
|
|
1481
1541
|
);
|
|
1482
1542
|
}
|
|
1483
|
-
return /* @__PURE__ */
|
|
1543
|
+
return /* @__PURE__ */ jsx8(
|
|
1484
1544
|
"button",
|
|
1485
1545
|
{
|
|
1486
1546
|
type: "button",
|
|
@@ -1534,7 +1594,7 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1534
1594
|
[item, onItemClick]
|
|
1535
1595
|
);
|
|
1536
1596
|
if (item.type === "separator") {
|
|
1537
|
-
return /* @__PURE__ */
|
|
1597
|
+
return /* @__PURE__ */ jsx8("div", { className: "bg-ods-system-greys-soft-grey h-1 w-full" });
|
|
1538
1598
|
}
|
|
1539
1599
|
const itemClasses = cn(
|
|
1540
1600
|
ROW_CLASSES,
|
|
@@ -1546,7 +1606,7 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1546
1606
|
);
|
|
1547
1607
|
const renderAsLink = !!item.href && item.type !== "submenu" && item.type !== "checkbox";
|
|
1548
1608
|
const rowContent = /* @__PURE__ */ jsxs6(Fragment, { children: [
|
|
1549
|
-
item.icon && /* @__PURE__ */
|
|
1609
|
+
item.icon && /* @__PURE__ */ jsx8(
|
|
1550
1610
|
"div",
|
|
1551
1611
|
{
|
|
1552
1612
|
className: cn(
|
|
@@ -1557,7 +1617,7 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1557
1617
|
children: item.icon
|
|
1558
1618
|
}
|
|
1559
1619
|
),
|
|
1560
|
-
/* @__PURE__ */
|
|
1620
|
+
/* @__PURE__ */ jsx8(
|
|
1561
1621
|
"span",
|
|
1562
1622
|
{
|
|
1563
1623
|
className: cn(
|
|
@@ -1567,21 +1627,21 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1567
1627
|
children: item.label
|
|
1568
1628
|
}
|
|
1569
1629
|
),
|
|
1570
|
-
item.type === "checkbox" && /* @__PURE__ */
|
|
1630
|
+
item.type === "checkbox" && /* @__PURE__ */ jsx8(
|
|
1571
1631
|
"div",
|
|
1572
1632
|
{
|
|
1573
1633
|
className: cn(
|
|
1574
1634
|
"w-4 h-4 md:w-6 md:h-6 flex items-center justify-center rounded-md transition-colors",
|
|
1575
1635
|
item.checked ? "bg-ods-accent" : "border-2 border-ods-border bg-transparent"
|
|
1576
1636
|
),
|
|
1577
|
-
children: item.checked && /* @__PURE__ */
|
|
1637
|
+
children: item.checked && /* @__PURE__ */ jsx8(Check, { className: "w-3 h-3 md:w-4 md:h-4 text-ods-text-on-accent", strokeWidth: 3 })
|
|
1578
1638
|
}
|
|
1579
1639
|
),
|
|
1580
|
-
item.type === "submenu" && /* @__PURE__ */
|
|
1640
|
+
item.type === "submenu" && /* @__PURE__ */ jsx8(Chevron02RightIcon, { className: "w-4 h-4 md:w-6 md:h-6 text-ods-text-secondary" })
|
|
1581
1641
|
] });
|
|
1582
1642
|
if (renderAsLink && item.href) {
|
|
1583
1643
|
return /* @__PURE__ */ jsxs6("div", { className: WRAPPER_CLASSES, children: [
|
|
1584
|
-
/* @__PURE__ */
|
|
1644
|
+
/* @__PURE__ */ jsx8(
|
|
1585
1645
|
next_link_default,
|
|
1586
1646
|
{
|
|
1587
1647
|
href: item.href,
|
|
@@ -1593,13 +1653,13 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1593
1653
|
children: rowContent
|
|
1594
1654
|
}
|
|
1595
1655
|
),
|
|
1596
|
-
item.iconAction && /* @__PURE__ */
|
|
1656
|
+
item.iconAction && /* @__PURE__ */ jsx8(SecondaryAction, { action: item.iconAction })
|
|
1597
1657
|
] });
|
|
1598
1658
|
}
|
|
1599
1659
|
if (item.type === "submenu" && item.submenu) {
|
|
1600
1660
|
return /* @__PURE__ */ jsxs6("div", { className: WRAPPER_CLASSES, children: [
|
|
1601
1661
|
/* @__PURE__ */ jsxs6(DropdownMenuPrimitive.Sub, { children: [
|
|
1602
|
-
/* @__PURE__ */
|
|
1662
|
+
/* @__PURE__ */ jsx8(
|
|
1603
1663
|
DropdownMenuPrimitive.SubTrigger,
|
|
1604
1664
|
{
|
|
1605
1665
|
disabled: item.disabled,
|
|
@@ -1607,12 +1667,12 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1607
1667
|
children: rowContent
|
|
1608
1668
|
}
|
|
1609
1669
|
),
|
|
1610
|
-
/* @__PURE__ */
|
|
1670
|
+
/* @__PURE__ */ jsx8(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx8(
|
|
1611
1671
|
DropdownMenuPrimitive.SubContent,
|
|
1612
1672
|
{
|
|
1613
1673
|
sideOffset: 4,
|
|
1614
1674
|
className: "z-[1500] min-w-[256px] max-h-[var(--radix-popper-available-height)] bg-ods-bg border border-ods-border rounded-md shadow-xl overflow-y-auto p-0",
|
|
1615
|
-
children: item.submenu.map((subItem, index) => /* @__PURE__ */
|
|
1675
|
+
children: item.submenu.map((subItem, index) => /* @__PURE__ */ jsx8(
|
|
1616
1676
|
MenuItem,
|
|
1617
1677
|
{
|
|
1618
1678
|
item: subItem,
|
|
@@ -1623,11 +1683,11 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1623
1683
|
}
|
|
1624
1684
|
) })
|
|
1625
1685
|
] }),
|
|
1626
|
-
item.iconAction && /* @__PURE__ */
|
|
1686
|
+
item.iconAction && /* @__PURE__ */ jsx8(SecondaryAction, { action: item.iconAction })
|
|
1627
1687
|
] });
|
|
1628
1688
|
}
|
|
1629
1689
|
return /* @__PURE__ */ jsxs6("div", { className: WRAPPER_CLASSES, children: [
|
|
1630
|
-
/* @__PURE__ */
|
|
1690
|
+
/* @__PURE__ */ jsx8(
|
|
1631
1691
|
"div",
|
|
1632
1692
|
{
|
|
1633
1693
|
role: "menuitem",
|
|
@@ -1639,23 +1699,23 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1639
1699
|
children: rowContent
|
|
1640
1700
|
}
|
|
1641
1701
|
),
|
|
1642
|
-
item.iconAction && /* @__PURE__ */
|
|
1702
|
+
item.iconAction && /* @__PURE__ */ jsx8(SecondaryAction, { action: item.iconAction })
|
|
1643
1703
|
] });
|
|
1644
1704
|
};
|
|
1645
|
-
var GroupSeparator = () => /* @__PURE__ */
|
|
1705
|
+
var GroupSeparator = () => /* @__PURE__ */ jsx8("div", { className: "bg-ods-bg-surface h-[3px] w-full" });
|
|
1646
1706
|
var ActionsMenu = ({
|
|
1647
1707
|
groups,
|
|
1648
1708
|
className = "",
|
|
1649
1709
|
onItemClick
|
|
1650
1710
|
}) => {
|
|
1651
|
-
return /* @__PURE__ */
|
|
1711
|
+
return /* @__PURE__ */ jsx8(
|
|
1652
1712
|
"div",
|
|
1653
1713
|
{
|
|
1654
1714
|
className: `relative min-w-[256px] max-h-[var(--radix-popper-available-height)] bg-ods-bg border border-ods-border rounded-md shadow-lg overflow-y-auto ${className}`,
|
|
1655
1715
|
children: groups.map((group, groupIndex) => {
|
|
1656
1716
|
const groupKey = group.id || group.items.map((i) => i.id).join("|");
|
|
1657
1717
|
return /* @__PURE__ */ jsxs6(React7.Fragment, { children: [
|
|
1658
|
-
group.items.map((item, itemIndex) => /* @__PURE__ */
|
|
1718
|
+
group.items.map((item, itemIndex) => /* @__PURE__ */ jsx8(
|
|
1659
1719
|
MenuItem,
|
|
1660
1720
|
{
|
|
1661
1721
|
item,
|
|
@@ -1663,7 +1723,7 @@ var ActionsMenu = ({
|
|
|
1663
1723
|
},
|
|
1664
1724
|
item.id || `${groupKey}-${itemIndex}`
|
|
1665
1725
|
)),
|
|
1666
|
-
group.separator && groupIndex < groups.length - 1 && /* @__PURE__ */
|
|
1726
|
+
group.separator && groupIndex < groups.length - 1 && /* @__PURE__ */ jsx8(GroupSeparator, {})
|
|
1667
1727
|
] }, groupKey);
|
|
1668
1728
|
})
|
|
1669
1729
|
}
|
|
@@ -1700,17 +1760,17 @@ var ActionsMenuDropdown = ({
|
|
|
1700
1760
|
[onItemClick, setOpen]
|
|
1701
1761
|
);
|
|
1702
1762
|
return /* @__PURE__ */ jsxs6(DropdownMenu, { open, onOpenChange: setOpen, modal: false, children: [
|
|
1703
|
-
/* @__PURE__ */
|
|
1763
|
+
/* @__PURE__ */ jsx8(DropdownMenuTrigger, { asChild: true, children: customTrigger ?? /* @__PURE__ */ jsx8(
|
|
1704
1764
|
Button,
|
|
1705
1765
|
{
|
|
1706
1766
|
variant: "outline",
|
|
1707
1767
|
size: "icon",
|
|
1708
1768
|
"aria-label": triggerAriaLabel,
|
|
1709
1769
|
className: triggerClassName || "bg-ods-card border-ods-border hover:bg-ods-bg-hover flex items-center justify-center focus-visible:ring-0",
|
|
1710
|
-
leftIcon: trigger ?? /* @__PURE__ */
|
|
1770
|
+
leftIcon: trigger ?? /* @__PURE__ */ jsx8(Ellipsis01Icon, { size: 24, className: "text-ods-text-primary" })
|
|
1711
1771
|
}
|
|
1712
1772
|
) }),
|
|
1713
|
-
/* @__PURE__ */
|
|
1773
|
+
/* @__PURE__ */ jsx8(
|
|
1714
1774
|
DropdownMenuContent,
|
|
1715
1775
|
{
|
|
1716
1776
|
align,
|
|
@@ -1721,7 +1781,7 @@ var ActionsMenuDropdown = ({
|
|
|
1721
1781
|
"p-0 border-0 bg-transparent shadow-none overflow-visible",
|
|
1722
1782
|
contentClassName
|
|
1723
1783
|
),
|
|
1724
|
-
children: /* @__PURE__ */
|
|
1784
|
+
children: /* @__PURE__ */ jsx8(
|
|
1725
1785
|
ActionsMenu,
|
|
1726
1786
|
{
|
|
1727
1787
|
groups,
|
|
@@ -1863,7 +1923,7 @@ function resolveExternalNavigation(args) {
|
|
|
1863
1923
|
|
|
1864
1924
|
// src/components/chat/entity-cards/entity-author-card.tsx
|
|
1865
1925
|
init_next_link();
|
|
1866
|
-
import { jsx as
|
|
1926
|
+
import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1867
1927
|
var EMPTY_AUTHOR_PLACEHOLDER = {
|
|
1868
1928
|
full_name: "\u2014",
|
|
1869
1929
|
avatar_url: null,
|
|
@@ -1875,9 +1935,9 @@ function EntityMetadataValueCell({
|
|
|
1875
1935
|
className,
|
|
1876
1936
|
uppercase = true
|
|
1877
1937
|
}) {
|
|
1878
|
-
return /* @__PURE__ */
|
|
1879
|
-
/* @__PURE__ */
|
|
1880
|
-
/* @__PURE__ */
|
|
1938
|
+
return /* @__PURE__ */ jsx9("div", { className: `bg-ods-card p-4 flex flex-col gap-3 ${className ?? ""}`, children: /* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-0", children: [
|
|
1939
|
+
/* @__PURE__ */ jsx9("p", { className: "text-h4 text-ods-text-primary", children: uppercase ? value.toLocaleUpperCase() : value }),
|
|
1940
|
+
/* @__PURE__ */ jsx9("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: label })
|
|
1881
1941
|
] }) });
|
|
1882
1942
|
}
|
|
1883
1943
|
function EntityMetadataAuthorCell({
|
|
@@ -1889,7 +1949,7 @@ function EntityMetadataAuthorCell({
|
|
|
1889
1949
|
const trimmedName = typeof author.full_name === "string" ? author.full_name.trim() : "";
|
|
1890
1950
|
const fullName = trimmedName || "Unknown Author";
|
|
1891
1951
|
return /* @__PURE__ */ jsxs7("div", { className: `bg-ods-card p-4 flex items-center gap-3 ${className ?? ""}`, children: [
|
|
1892
|
-
/* @__PURE__ */
|
|
1952
|
+
/* @__PURE__ */ jsx9(
|
|
1893
1953
|
SquareAvatar,
|
|
1894
1954
|
{
|
|
1895
1955
|
src: author.avatar_url || "",
|
|
@@ -1900,8 +1960,8 @@ function EntityMetadataAuthorCell({
|
|
|
1900
1960
|
}
|
|
1901
1961
|
),
|
|
1902
1962
|
/* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
|
|
1903
|
-
/* @__PURE__ */
|
|
1904
|
-
/* @__PURE__ */
|
|
1963
|
+
/* @__PURE__ */ jsx9("p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", title: fullName, children: authorHref && trimmedName ? /* @__PURE__ */ jsx9(next_link_default, { href: authorHref, className: "hover:text-ods-accent transition-colors", children: fullName }) : fullName }),
|
|
1964
|
+
/* @__PURE__ */ jsx9("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: author.job_title || roleLabel })
|
|
1905
1965
|
] })
|
|
1906
1966
|
] });
|
|
1907
1967
|
}
|
|
@@ -1930,7 +1990,7 @@ function EntityAuthorCard({
|
|
|
1930
1990
|
{
|
|
1931
1991
|
className: `grid grid-cols-1 ${gridColsClass} border border-ods-border rounded-md overflow-hidden w-full ${className ?? ""}`,
|
|
1932
1992
|
children: [
|
|
1933
|
-
extras.map((cell, i) => /* @__PURE__ */
|
|
1993
|
+
extras.map((cell, i) => /* @__PURE__ */ jsx9(
|
|
1934
1994
|
EntityMetadataValueCell,
|
|
1935
1995
|
{
|
|
1936
1996
|
value: cell.value,
|
|
@@ -1940,7 +2000,7 @@ function EntityAuthorCard({
|
|
|
1940
2000
|
},
|
|
1941
2001
|
`${cell.label}-${i}`
|
|
1942
2002
|
)),
|
|
1943
|
-
showDateCell && /* @__PURE__ */
|
|
2003
|
+
showDateCell && /* @__PURE__ */ jsx9(
|
|
1944
2004
|
EntityMetadataValueCell,
|
|
1945
2005
|
{
|
|
1946
2006
|
value: dateLabel,
|
|
@@ -1949,21 +2009,21 @@ function EntityAuthorCard({
|
|
|
1949
2009
|
className: dividerClass
|
|
1950
2010
|
}
|
|
1951
2011
|
),
|
|
1952
|
-
/* @__PURE__ */
|
|
2012
|
+
/* @__PURE__ */ jsx9(EntityMetadataAuthorCell, { author: effectiveAuthor, roleLabel, authorHref })
|
|
1953
2013
|
]
|
|
1954
2014
|
}
|
|
1955
2015
|
);
|
|
1956
2016
|
}
|
|
1957
2017
|
|
|
1958
2018
|
// src/components/chat/entity-cards/blog-image-placeholder.tsx
|
|
1959
|
-
import { jsx as
|
|
2019
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1960
2020
|
function BlogImagePlaceholder({
|
|
1961
2021
|
imageUrl,
|
|
1962
2022
|
title,
|
|
1963
2023
|
className = ""
|
|
1964
2024
|
}) {
|
|
1965
2025
|
if (!imageUrl) return null;
|
|
1966
|
-
return /* @__PURE__ */
|
|
2026
|
+
return /* @__PURE__ */ jsx10("span", { className: `relative block w-full h-full overflow-hidden bg-ods-bg ${className}`, children: /* @__PURE__ */ jsx10(
|
|
1967
2027
|
"img",
|
|
1968
2028
|
{
|
|
1969
2029
|
src: imageUrl,
|
|
@@ -1989,7 +2049,7 @@ function fetchPriorityProp(priority) {
|
|
|
1989
2049
|
// src/components/features/video.tsx
|
|
1990
2050
|
import { useEffect as useEffect4, useMemo as useMemo3, useRef as useRef4, useState as useState3 } from "react";
|
|
1991
2051
|
import MuxPlayer from "@mux/mux-player-react";
|
|
1992
|
-
import { jsx as
|
|
2052
|
+
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1993
2053
|
if (typeof window !== "undefined") {
|
|
1994
2054
|
const w = window;
|
|
1995
2055
|
if (!w.chrome?.cast) {
|
|
@@ -2050,7 +2110,7 @@ function Video(props) {
|
|
|
2050
2110
|
if (!url) return null;
|
|
2051
2111
|
const effectiveKind = resolveKind(props, url);
|
|
2052
2112
|
const layout = props.layout ?? "native";
|
|
2053
|
-
const inner = effectiveKind === "youtube" ? /* @__PURE__ */
|
|
2113
|
+
const inner = effectiveKind === "youtube" ? /* @__PURE__ */ jsx11(
|
|
2054
2114
|
YouTubeFacade,
|
|
2055
2115
|
{
|
|
2056
2116
|
url,
|
|
@@ -2059,7 +2119,7 @@ function Video(props) {
|
|
|
2059
2119
|
className: props.className,
|
|
2060
2120
|
minimalControls: props.minimalControls
|
|
2061
2121
|
}
|
|
2062
|
-
) : /* @__PURE__ */
|
|
2122
|
+
) : /* @__PURE__ */ jsx11(
|
|
2063
2123
|
FilePlayer,
|
|
2064
2124
|
{
|
|
2065
2125
|
url,
|
|
@@ -2083,9 +2143,9 @@ function resolveKind(props, url) {
|
|
|
2083
2143
|
function wrapWithLayout(inner, layout) {
|
|
2084
2144
|
switch (layout) {
|
|
2085
2145
|
case "centered":
|
|
2086
|
-
return /* @__PURE__ */
|
|
2146
|
+
return /* @__PURE__ */ jsx11("div", { className: "flex justify-center w-full", children: /* @__PURE__ */ jsx11("div", { className: "w-full max-w-3xl aspect-video rounded-lg overflow-hidden border border-ods-border", children: inner }) });
|
|
2087
2147
|
case "fill":
|
|
2088
|
-
return /* @__PURE__ */
|
|
2148
|
+
return /* @__PURE__ */ jsx11("div", { className: "absolute inset-0 w-full h-full", children: inner });
|
|
2089
2149
|
case "native":
|
|
2090
2150
|
default:
|
|
2091
2151
|
return inner;
|
|
@@ -2104,7 +2164,7 @@ function FilePlayer({
|
|
|
2104
2164
|
"[Video] srtContent supplied without captionsUrl \u2014 captions will not render. Pass captionsUrl (the VTT URL) instead; raw SRT text overlays are no longer supported."
|
|
2105
2165
|
);
|
|
2106
2166
|
}
|
|
2107
|
-
return /* @__PURE__ */
|
|
2167
|
+
return /* @__PURE__ */ jsx11(
|
|
2108
2168
|
MuxPlayer,
|
|
2109
2169
|
{
|
|
2110
2170
|
src: url,
|
|
@@ -2116,7 +2176,7 @@ function FilePlayer({
|
|
|
2116
2176
|
accentColor: "var(--ods-accent, var(--color-accent-primary))",
|
|
2117
2177
|
className,
|
|
2118
2178
|
style: { width: "100%", height: "100%" },
|
|
2119
|
-
children: captionsUrl ? /* @__PURE__ */
|
|
2179
|
+
children: captionsUrl ? /* @__PURE__ */ jsx11(
|
|
2120
2180
|
"track",
|
|
2121
2181
|
{
|
|
2122
2182
|
kind: "captions",
|
|
@@ -2138,7 +2198,7 @@ function YouTubeFacade({
|
|
|
2138
2198
|
}) {
|
|
2139
2199
|
const videoId = extractYouTubeId(url);
|
|
2140
2200
|
if (!videoId) return null;
|
|
2141
|
-
return /* @__PURE__ */
|
|
2201
|
+
return /* @__PURE__ */ jsx11(YouTubeFacadeInner, { videoId, title, priority, className, minimalControls });
|
|
2142
2202
|
}
|
|
2143
2203
|
var YT_NOCOOKIE_ORIGIN = "https://www.youtube-nocookie.com";
|
|
2144
2204
|
var YT_STATE_ENDED = 0;
|
|
@@ -2224,7 +2284,7 @@ function YouTubeFacadeInner({
|
|
|
2224
2284
|
const wrapperClass = `relative w-full ${className ?? ""}`;
|
|
2225
2285
|
const wrapperStyle = { paddingBottom: "56.25%" };
|
|
2226
2286
|
if (activated) {
|
|
2227
|
-
return /* @__PURE__ */
|
|
2287
|
+
return /* @__PURE__ */ jsx11("div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ jsx11(
|
|
2228
2288
|
"iframe",
|
|
2229
2289
|
{
|
|
2230
2290
|
ref: iframeRef,
|
|
@@ -2236,7 +2296,7 @@ function YouTubeFacadeInner({
|
|
|
2236
2296
|
}
|
|
2237
2297
|
) });
|
|
2238
2298
|
}
|
|
2239
|
-
return /* @__PURE__ */
|
|
2299
|
+
return /* @__PURE__ */ jsx11("div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ jsxs8(
|
|
2240
2300
|
"button",
|
|
2241
2301
|
{
|
|
2242
2302
|
type: "button",
|
|
@@ -2245,8 +2305,8 @@ function YouTubeFacadeInner({
|
|
|
2245
2305
|
className: "group absolute inset-0 p-0 m-0 border border-ods-border rounded-lg overflow-hidden bg-ods-card cursor-pointer",
|
|
2246
2306
|
children: [
|
|
2247
2307
|
/* @__PURE__ */ jsxs8("picture", { children: [
|
|
2248
|
-
/* @__PURE__ */
|
|
2249
|
-
/* @__PURE__ */
|
|
2308
|
+
/* @__PURE__ */ jsx11("source", { type: "image/webp", srcSet: posterWebp }),
|
|
2309
|
+
/* @__PURE__ */ jsx11(
|
|
2250
2310
|
"img",
|
|
2251
2311
|
{
|
|
2252
2312
|
src: posterJpg,
|
|
@@ -2258,14 +2318,14 @@ function YouTubeFacadeInner({
|
|
|
2258
2318
|
}
|
|
2259
2319
|
)
|
|
2260
2320
|
] }),
|
|
2261
|
-
/* @__PURE__ */
|
|
2321
|
+
/* @__PURE__ */ jsx11("div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ jsx11("span", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent text-ods-text-on-accent shadow-lg transition-transform duration-200 group-hover:scale-110", children: /* @__PURE__ */ jsx11(PlayIcon, { size: 24, color: "currentColor", className: "ml-1" }) }) })
|
|
2262
2322
|
]
|
|
2263
2323
|
}
|
|
2264
2324
|
) });
|
|
2265
2325
|
}
|
|
2266
2326
|
|
|
2267
2327
|
// src/components/features/video-ratio-tabs.tsx
|
|
2268
|
-
import { Fragment as Fragment2, jsx as
|
|
2328
|
+
import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2269
2329
|
var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary";
|
|
2270
2330
|
var RATIO_GRID_CLASS = {
|
|
2271
2331
|
portrait: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
@@ -2290,17 +2350,17 @@ function RatioTabs({
|
|
|
2290
2350
|
const activeTabs = RATIO_TAB_CONFIG.filter((t) => groups[t.key].count > 0);
|
|
2291
2351
|
if (activeTabs.length <= 1) {
|
|
2292
2352
|
const active = activeTabs[0];
|
|
2293
|
-
return active ? /* @__PURE__ */
|
|
2353
|
+
return active ? /* @__PURE__ */ jsx12(Fragment2, { children: groups[active.key].render() }) : null;
|
|
2294
2354
|
}
|
|
2295
2355
|
const firstTab = defaultTab && groups[defaultTab].count > 0 ? defaultTab : activeTabs[0].key;
|
|
2296
2356
|
return /* @__PURE__ */ jsxs9(Tabs, { defaultValue: firstTab, className: `w-full ${className}`, children: [
|
|
2297
|
-
/* @__PURE__ */
|
|
2357
|
+
/* @__PURE__ */ jsx12(TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0 mb-2", children: activeTabs.map((t) => /* @__PURE__ */ jsxs9(TabsTrigger, { value: t.key, className: TAB_TRIGGER_CLASS, children: [
|
|
2298
2358
|
t.label,
|
|
2299
2359
|
" (",
|
|
2300
2360
|
groups[t.key].count,
|
|
2301
2361
|
")"
|
|
2302
2362
|
] }, t.key)) }),
|
|
2303
|
-
activeTabs.map((t) => /* @__PURE__ */
|
|
2363
|
+
activeTabs.map((t) => /* @__PURE__ */ jsx12(
|
|
2304
2364
|
TabsContent,
|
|
2305
2365
|
{
|
|
2306
2366
|
value: t.key,
|
|
@@ -2343,7 +2403,7 @@ function groupByAspectRatio(items, getAspectRatio) {
|
|
|
2343
2403
|
|
|
2344
2404
|
// src/components/features/video-bites-display.tsx
|
|
2345
2405
|
import { useMemo as useMemo4 } from "react";
|
|
2346
|
-
import { jsx as
|
|
2406
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2347
2407
|
var RATIO_TO_CSS_ASPECT = {
|
|
2348
2408
|
portrait: "9 / 16",
|
|
2349
2409
|
square: "1 / 1",
|
|
@@ -2351,7 +2411,7 @@ var RATIO_TO_CSS_ASPECT = {
|
|
|
2351
2411
|
};
|
|
2352
2412
|
function LazyBite({ ratio, children }) {
|
|
2353
2413
|
const { ref, isNear } = useNearViewport("500px");
|
|
2354
|
-
return /* @__PURE__ */
|
|
2414
|
+
return /* @__PURE__ */ jsx13("div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ jsx13("div", { className: "w-full h-full bg-ods-card rounded-md" }) });
|
|
2355
2415
|
}
|
|
2356
2416
|
function VideoBitesDisplay({
|
|
2357
2417
|
bites,
|
|
@@ -2375,26 +2435,26 @@ function VideoBitesDisplay({
|
|
|
2375
2435
|
const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
|
|
2376
2436
|
if (totalCount === 0) return null;
|
|
2377
2437
|
return /* @__PURE__ */ jsxs10("div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
2378
|
-
showTitle && /* @__PURE__ */
|
|
2379
|
-
grouped.hasMultiple ? /* @__PURE__ */
|
|
2438
|
+
showTitle && /* @__PURE__ */ jsx13("h2", { className: `${SECTION_HEADING_CLASS} break-words`, children: title }),
|
|
2439
|
+
grouped.hasMultiple ? /* @__PURE__ */ jsx13(
|
|
2380
2440
|
RatioTabs,
|
|
2381
2441
|
{
|
|
2382
2442
|
groups: {
|
|
2383
2443
|
portrait: {
|
|
2384
2444
|
count: grouped.portrait.length,
|
|
2385
|
-
render: () => /* @__PURE__ */
|
|
2445
|
+
render: () => /* @__PURE__ */ jsx13(BiteGrid, { bites: grouped.portrait, ratio: "portrait" })
|
|
2386
2446
|
},
|
|
2387
2447
|
square: {
|
|
2388
2448
|
count: grouped.square.length,
|
|
2389
|
-
render: () => /* @__PURE__ */
|
|
2449
|
+
render: () => /* @__PURE__ */ jsx13(BiteGrid, { bites: grouped.square, ratio: "square" })
|
|
2390
2450
|
},
|
|
2391
2451
|
landscape: {
|
|
2392
2452
|
count: grouped.landscape.length,
|
|
2393
|
-
render: () => /* @__PURE__ */
|
|
2453
|
+
render: () => /* @__PURE__ */ jsx13(BiteGrid, { bites: grouped.landscape, ratio: "landscape" })
|
|
2394
2454
|
}
|
|
2395
2455
|
}
|
|
2396
2456
|
}
|
|
2397
|
-
) : /* @__PURE__ */
|
|
2457
|
+
) : /* @__PURE__ */ jsx13(
|
|
2398
2458
|
BiteGrid,
|
|
2399
2459
|
{
|
|
2400
2460
|
bites: grouped.portrait.length > 0 ? grouped.portrait : grouped.square.length > 0 ? grouped.square : grouped.landscape,
|
|
@@ -2404,17 +2464,17 @@ function VideoBitesDisplay({
|
|
|
2404
2464
|
] });
|
|
2405
2465
|
}
|
|
2406
2466
|
function BiteGrid({ bites, ratio }) {
|
|
2407
|
-
return /* @__PURE__ */
|
|
2467
|
+
return /* @__PURE__ */ jsx13("div", { className: RATIO_DISPLAY_GRID_CLASS[ratio], children: bites.map((bite, index) => /* @__PURE__ */ jsx13(LazyBite, { ratio, children: /* @__PURE__ */ jsx13(VideoBiteCard, { url: bite.url, title: bite.title, thumbnailUrl: bite.thumbnail_url }) }, bite.url || index)) });
|
|
2408
2468
|
}
|
|
2409
2469
|
function VideoBiteCard({ url, title, thumbnailUrl }) {
|
|
2410
2470
|
return /* @__PURE__ */ jsxs10(Card, { className: "overflow-hidden border border-ods-border bg-ods-card hover:border-ods-accent transition-colors flex flex-col h-full", children: [
|
|
2411
|
-
/* @__PURE__ */
|
|
2412
|
-
title && /* @__PURE__ */
|
|
2471
|
+
/* @__PURE__ */ jsx13("div", { className: "relative flex-1 min-h-0", children: /* @__PURE__ */ jsx13(Video, { url, poster: thumbnailUrl || void 0, layout: "fill" }) }),
|
|
2472
|
+
title && /* @__PURE__ */ jsx13("div", { className: "p-4", children: /* @__PURE__ */ jsx13("p", { className: "text-h4 text-ods-text-primary line-clamp-2", title, children: title }) })
|
|
2413
2473
|
] });
|
|
2414
2474
|
}
|
|
2415
2475
|
|
|
2416
2476
|
// src/components/features/entity-video-section.tsx
|
|
2417
|
-
import { Fragment as Fragment3, jsx as
|
|
2477
|
+
import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2418
2478
|
function EntityVideoSection({
|
|
2419
2479
|
mainVideoUrl,
|
|
2420
2480
|
youtubeUrl,
|
|
@@ -2442,7 +2502,7 @@ function EntityVideoSection({
|
|
|
2442
2502
|
return /* @__PURE__ */ jsxs11(Fragment3, { children: [
|
|
2443
2503
|
hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */ jsxs11(Tabs, { defaultValue: "full-video", className: "w-full", children: [
|
|
2444
2504
|
/* @__PURE__ */ jsxs11(TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0", children: [
|
|
2445
|
-
/* @__PURE__ */
|
|
2505
|
+
/* @__PURE__ */ jsx14(
|
|
2446
2506
|
TabsTrigger,
|
|
2447
2507
|
{
|
|
2448
2508
|
value: "full-video",
|
|
@@ -2450,7 +2510,7 @@ function EntityVideoSection({
|
|
|
2450
2510
|
children: "Full Video"
|
|
2451
2511
|
}
|
|
2452
2512
|
),
|
|
2453
|
-
/* @__PURE__ */
|
|
2513
|
+
/* @__PURE__ */ jsx14(
|
|
2454
2514
|
TabsTrigger,
|
|
2455
2515
|
{
|
|
2456
2516
|
value: "highlights",
|
|
@@ -2459,7 +2519,7 @@ function EntityVideoSection({
|
|
|
2459
2519
|
}
|
|
2460
2520
|
)
|
|
2461
2521
|
] }),
|
|
2462
|
-
/* @__PURE__ */
|
|
2522
|
+
/* @__PURE__ */ jsx14(TabsContent, { value: "full-video", className: "mt-4", children: /* @__PURE__ */ jsx14(
|
|
2463
2523
|
Video,
|
|
2464
2524
|
{
|
|
2465
2525
|
kind: fullVideoKind,
|
|
@@ -2472,7 +2532,7 @@ function EntityVideoSection({
|
|
|
2472
2532
|
priority
|
|
2473
2533
|
}
|
|
2474
2534
|
) }),
|
|
2475
|
-
/* @__PURE__ */
|
|
2535
|
+
/* @__PURE__ */ jsx14(TabsContent, { value: "highlights", className: "mt-4", children: /* @__PURE__ */ jsx14(
|
|
2476
2536
|
Video,
|
|
2477
2537
|
{
|
|
2478
2538
|
url: highlightVideoUrl,
|
|
@@ -2480,7 +2540,7 @@ function EntityVideoSection({
|
|
|
2480
2540
|
layout: "centered"
|
|
2481
2541
|
}
|
|
2482
2542
|
) })
|
|
2483
|
-
] }) : hasFullVideo ? /* @__PURE__ */
|
|
2543
|
+
] }) : hasFullVideo ? /* @__PURE__ */ jsx14(
|
|
2484
2544
|
Video,
|
|
2485
2545
|
{
|
|
2486
2546
|
kind: fullVideoKind,
|
|
@@ -2492,7 +2552,7 @@ function EntityVideoSection({
|
|
|
2492
2552
|
layout: "centered",
|
|
2493
2553
|
priority
|
|
2494
2554
|
}
|
|
2495
|
-
) : /* @__PURE__ */
|
|
2555
|
+
) : /* @__PURE__ */ jsx14(
|
|
2496
2556
|
Video,
|
|
2497
2557
|
{
|
|
2498
2558
|
url: highlightVideoUrl,
|
|
@@ -2502,10 +2562,10 @@ function EntityVideoSection({
|
|
|
2502
2562
|
}
|
|
2503
2563
|
)),
|
|
2504
2564
|
videoSummary && MarkdownRenderer && /* @__PURE__ */ jsxs11("div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
2505
|
-
/* @__PURE__ */
|
|
2506
|
-
/* @__PURE__ */
|
|
2565
|
+
/* @__PURE__ */ jsx14("h2", { className: `${SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
|
|
2566
|
+
/* @__PURE__ */ jsx14("div", { className: "text-h4 text-ods-text-primary break-words overflow-hidden", children: /* @__PURE__ */ jsx14(MarkdownRenderer, { content: videoSummary }) })
|
|
2507
2567
|
] }),
|
|
2508
|
-
videoBites && videoBites.length > 0 && /* @__PURE__ */
|
|
2568
|
+
videoBites && videoBites.length > 0 && /* @__PURE__ */ jsx14(
|
|
2509
2569
|
VideoBitesDisplay,
|
|
2510
2570
|
{
|
|
2511
2571
|
bites: videoBites,
|
|
@@ -2590,7 +2650,7 @@ function useEntityCardPlaceholder({
|
|
|
2590
2650
|
}
|
|
2591
2651
|
|
|
2592
2652
|
// src/components/chat/entity-cards/onboarding-guide-card.tsx
|
|
2593
|
-
import { jsx as
|
|
2653
|
+
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2594
2654
|
function stripMarkdownPreview(text) {
|
|
2595
2655
|
return text.replace(/```[\s\S]*?```/g, " ").replace(/^#{1,6}\s+/gm, "").replace(/!?\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/[*_~`>]/g, "").replace(/^\s*[-+]\s+/gm, "").replace(/-{3,}/g, " ").replace(/\s+/g, " ").trim().replace(/^([\s\S]{240})[\s\S]+$/, "$1\u2026");
|
|
2596
2656
|
}
|
|
@@ -2606,35 +2666,35 @@ function OnboardingGuideCardSkeleton({ size = "default" }) {
|
|
|
2606
2666
|
if (size === "catalog") {
|
|
2607
2667
|
return /* @__PURE__ */ jsxs12("div", { className: "bg-ods-system-greys-black border border-ods-border rounded-lg overflow-hidden flex flex-col p-6 gap-4 animate-pulse", children: [
|
|
2608
2668
|
/* @__PURE__ */ jsxs12("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
2609
|
-
/* @__PURE__ */
|
|
2669
|
+
/* @__PURE__ */ jsx15("div", { className: "w-full md:w-[256px] aspect-[1200/630] bg-ods-border rounded-lg flex-shrink-0" }),
|
|
2610
2670
|
/* @__PURE__ */ jsxs12("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
2611
2671
|
/* @__PURE__ */ jsxs12("div", { className: "min-h-[60px] md:min-h-[72px] flex flex-col gap-1.5 justify-start mb-3", children: [
|
|
2612
|
-
/* @__PURE__ */
|
|
2613
|
-
/* @__PURE__ */
|
|
2672
|
+
/* @__PURE__ */ jsx15("div", { className: "h-[25px] md:h-[30px] w-3/4 bg-ods-border rounded" }),
|
|
2673
|
+
/* @__PURE__ */ jsx15("div", { className: "h-[25px] md:h-[30px] w-1/2 bg-ods-border rounded" })
|
|
2614
2674
|
] }),
|
|
2615
2675
|
/* @__PURE__ */ jsxs12("div", { className: "min-h-[46px] md:min-h-[52px] flex flex-col gap-2 justify-start", children: [
|
|
2616
|
-
/* @__PURE__ */
|
|
2617
|
-
/* @__PURE__ */
|
|
2676
|
+
/* @__PURE__ */ jsx15("div", { className: "h-3 w-full bg-ods-border/70 rounded" }),
|
|
2677
|
+
/* @__PURE__ */ jsx15("div", { className: "h-3 w-5/6 bg-ods-border/70 rounded" })
|
|
2618
2678
|
] })
|
|
2619
2679
|
] })
|
|
2620
2680
|
] }),
|
|
2621
2681
|
/* @__PURE__ */ jsxs12("div", { className: "grid grid-cols-1 md:grid-cols-3 border border-ods-border rounded-md overflow-hidden w-full", children: [
|
|
2622
|
-
[0, 1].map((i) => /* @__PURE__ */
|
|
2682
|
+
[0, 1].map((i) => /* @__PURE__ */ jsx15(
|
|
2623
2683
|
"div",
|
|
2624
2684
|
{
|
|
2625
2685
|
className: "bg-ods-card p-4 flex flex-col gap-3 border-b md:border-b-0 md:border-r border-ods-border",
|
|
2626
2686
|
children: /* @__PURE__ */ jsxs12("div", { className: "flex flex-col gap-2", children: [
|
|
2627
|
-
/* @__PURE__ */
|
|
2628
|
-
/* @__PURE__ */
|
|
2687
|
+
/* @__PURE__ */ jsx15("div", { className: "h-6 w-32 bg-ods-bg rounded" }),
|
|
2688
|
+
/* @__PURE__ */ jsx15("div", { className: "h-3 w-20 bg-ods-bg/60 rounded" })
|
|
2629
2689
|
] })
|
|
2630
2690
|
},
|
|
2631
2691
|
`cell-${i}`
|
|
2632
2692
|
)),
|
|
2633
2693
|
/* @__PURE__ */ jsxs12("div", { className: "bg-ods-card p-4 flex items-center gap-3", children: [
|
|
2634
|
-
/* @__PURE__ */
|
|
2694
|
+
/* @__PURE__ */ jsx15("div", { className: "h-10 w-10 rounded-full bg-ods-bg shrink-0" }),
|
|
2635
2695
|
/* @__PURE__ */ jsxs12("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
2636
|
-
/* @__PURE__ */
|
|
2637
|
-
/* @__PURE__ */
|
|
2696
|
+
/* @__PURE__ */ jsx15("div", { className: "h-4 w-3/4 bg-ods-bg rounded" }),
|
|
2697
|
+
/* @__PURE__ */ jsx15("div", { className: "h-3 w-1/2 bg-ods-bg/60 rounded" })
|
|
2638
2698
|
] })
|
|
2639
2699
|
] })
|
|
2640
2700
|
] })
|
|
@@ -2642,13 +2702,13 @@ function OnboardingGuideCardSkeleton({ size = "default" }) {
|
|
|
2642
2702
|
}
|
|
2643
2703
|
if (size === "sm") {
|
|
2644
2704
|
return /* @__PURE__ */ jsxs12("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
2645
|
-
/* @__PURE__ */
|
|
2705
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
2646
2706
|
/* @__PURE__ */ jsxs12("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
2647
|
-
/* @__PURE__ */
|
|
2648
|
-
/* @__PURE__ */
|
|
2649
|
-
/* @__PURE__ */
|
|
2707
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx15("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
|
|
2708
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx15("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
|
|
2709
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx15("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
|
|
2650
2710
|
] }),
|
|
2651
|
-
/* @__PURE__ */
|
|
2711
|
+
/* @__PURE__ */ jsx15("span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ jsx15("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
2652
2712
|
] });
|
|
2653
2713
|
}
|
|
2654
2714
|
const t = HORIZONTAL_SIZE_TOKENS.default;
|
|
@@ -2657,11 +2717,11 @@ function OnboardingGuideCardSkeleton({ size = "default" }) {
|
|
|
2657
2717
|
{
|
|
2658
2718
|
className: `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding} animate-pulse`,
|
|
2659
2719
|
children: [
|
|
2660
|
-
/* @__PURE__ */
|
|
2720
|
+
/* @__PURE__ */ jsx15("span", { className: `shrink-0 inline-flex items-center justify-center rounded-full bg-ods-bg ${t.step}` }),
|
|
2661
2721
|
/* @__PURE__ */ jsxs12("span", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
2662
|
-
/* @__PURE__ */
|
|
2663
|
-
/* @__PURE__ */
|
|
2664
|
-
/* @__PURE__ */
|
|
2722
|
+
/* @__PURE__ */ jsx15("span", { className: "block h-4 w-2/3 rounded bg-ods-bg" }),
|
|
2723
|
+
/* @__PURE__ */ jsx15("span", { className: "block h-3 w-1/3 rounded bg-ods-bg/70" }),
|
|
2724
|
+
/* @__PURE__ */ jsx15("span", { className: "block h-3 w-full rounded bg-ods-bg/40" })
|
|
2665
2725
|
] })
|
|
2666
2726
|
]
|
|
2667
2727
|
}
|
|
@@ -2693,7 +2753,7 @@ function OnboardingGuideCard({
|
|
|
2693
2753
|
const hasVideoCover = !!(guide.main_video_thumbnail || guide.highlight_video_thumbnail);
|
|
2694
2754
|
const stepLabel = typeof guide.step_order === "number" ? String(guide.step_order).padStart(2, "0") : "\u2014";
|
|
2695
2755
|
const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? formatDurationMMSS(Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
|
|
2696
|
-
return /* @__PURE__ */
|
|
2756
|
+
return /* @__PURE__ */ jsx15(
|
|
2697
2757
|
next_link_default,
|
|
2698
2758
|
{
|
|
2699
2759
|
href,
|
|
@@ -2711,8 +2771,8 @@ function OnboardingGuideCard({
|
|
|
2711
2771
|
"aria-label": `Open ${guide.title}`,
|
|
2712
2772
|
children: /* @__PURE__ */ jsxs12("div", { className: "flex flex-col p-6 gap-4", children: [
|
|
2713
2773
|
/* @__PURE__ */ jsxs12("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
2714
|
-
/* @__PURE__ */
|
|
2715
|
-
coverImage ? /* @__PURE__ */
|
|
2774
|
+
/* @__PURE__ */ jsx15("div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ jsxs12("div", { className: "relative rounded-lg overflow-hidden w-full aspect-[1200/630] bg-ods-bg", children: [
|
|
2775
|
+
coverImage ? /* @__PURE__ */ jsx15(
|
|
2716
2776
|
next_image_default,
|
|
2717
2777
|
{
|
|
2718
2778
|
src: coverImage,
|
|
@@ -2722,7 +2782,7 @@ function OnboardingGuideCard({
|
|
|
2722
2782
|
className: "object-cover",
|
|
2723
2783
|
unoptimized: true
|
|
2724
2784
|
}
|
|
2725
|
-
) : /* @__PURE__ */
|
|
2785
|
+
) : /* @__PURE__ */ jsx15(
|
|
2726
2786
|
BlogImagePlaceholder,
|
|
2727
2787
|
{
|
|
2728
2788
|
title: guide.title,
|
|
@@ -2730,18 +2790,18 @@ function OnboardingGuideCard({
|
|
|
2730
2790
|
className: "absolute inset-0"
|
|
2731
2791
|
}
|
|
2732
2792
|
),
|
|
2733
|
-
hasVideoCover && coverImage && /* @__PURE__ */
|
|
2793
|
+
hasVideoCover && coverImage && /* @__PURE__ */ jsx15("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx15(Play, { className: "w-10 h-10 text-white", fill: "white" }) }),
|
|
2734
2794
|
durationLabel && /* @__PURE__ */ jsxs12("span", { className: "absolute bottom-2 right-2 inline-flex items-center gap-1 px-2 py-1 rounded bg-black/60 text-white text-xs font-medium font-mono", children: [
|
|
2735
|
-
/* @__PURE__ */
|
|
2795
|
+
/* @__PURE__ */ jsx15(Clock, { className: "w-3 h-3" }),
|
|
2736
2796
|
durationLabel
|
|
2737
2797
|
] })
|
|
2738
2798
|
] }) }),
|
|
2739
2799
|
/* @__PURE__ */ jsxs12("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
2740
|
-
/* @__PURE__ */
|
|
2741
|
-
/* @__PURE__ */
|
|
2800
|
+
/* @__PURE__ */ jsx15("div", { className: "min-h-[60px] md:min-h-[72px] flex items-start mb-3", children: /* @__PURE__ */ jsx15("h3", { className: "font-['Azeret_Mono'] font-semibold text-xl md:text-2xl text-ods-text-primary leading-tight line-clamp-2", children: guide.title }) }),
|
|
2801
|
+
/* @__PURE__ */ jsx15("div", { className: "min-h-[46px] md:min-h-[52px]", children: /* @__PURE__ */ jsx15("p", { className: "font-['DM_Sans'] text-sm md:text-base text-ods-text-secondary leading-relaxed line-clamp-2", children: stripMarkdownPreview(guide.video_summary || guide.content || "") }) })
|
|
2742
2802
|
] })
|
|
2743
2803
|
] }),
|
|
2744
|
-
/* @__PURE__ */
|
|
2804
|
+
/* @__PURE__ */ jsx15(
|
|
2745
2805
|
EntityAuthorCard,
|
|
2746
2806
|
{
|
|
2747
2807
|
author: guide.author,
|
|
@@ -2773,7 +2833,7 @@ function OnboardingGuideCard({
|
|
|
2773
2833
|
].filter((s) => typeof s === "string" && s.length > 0);
|
|
2774
2834
|
return /* @__PURE__ */ jsxs12(next_link_default, { href, target, rel, prefetch: false, className: cn(COMPACT_CARD_OUTER, className), children: [
|
|
2775
2835
|
/* @__PURE__ */ jsxs12("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
|
|
2776
|
-
compactCover ? /* @__PURE__ */
|
|
2836
|
+
compactCover ? /* @__PURE__ */ jsx15(
|
|
2777
2837
|
next_image_default,
|
|
2778
2838
|
{
|
|
2779
2839
|
src: compactCover,
|
|
@@ -2783,15 +2843,15 @@ function OnboardingGuideCard({
|
|
|
2783
2843
|
className: "object-contain",
|
|
2784
2844
|
unoptimized: true
|
|
2785
2845
|
}
|
|
2786
|
-
) : /* @__PURE__ */
|
|
2787
|
-
hasVideoCover && compactCover && /* @__PURE__ */
|
|
2846
|
+
) : /* @__PURE__ */ jsx15("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ jsx15(GraduationCap, { className: "w-4 h-4" }) }),
|
|
2847
|
+
hasVideoCover && compactCover && /* @__PURE__ */ jsx15("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx15(Play, { className: "h-4 w-4 text-white", fill: "white" }) })
|
|
2788
2848
|
] }),
|
|
2789
2849
|
/* @__PURE__ */ jsxs12("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
2790
|
-
/* @__PURE__ */
|
|
2791
|
-
/* @__PURE__ */
|
|
2792
|
-
/* @__PURE__ */
|
|
2850
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx15("span", { className: cn(COMPACT_CARD_TITLE, "font-['Azeret_Mono']"), children: guide.title }) }),
|
|
2851
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx15("span", { className: "truncate text-[11px] leading-4 text-[var(--color-accent-primary)]", children: subtitleParts.join(" \xB7 ") }) }),
|
|
2852
|
+
/* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx15("span", { className: COMPACT_CARD_SUMMARY, children: summary2 || COMPACT_CARD_ROW_FILLER }) })
|
|
2793
2853
|
] }),
|
|
2794
|
-
/* @__PURE__ */
|
|
2854
|
+
/* @__PURE__ */ jsx15("span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ jsx15(ExternalLink, { className: "w-3.5 h-3.5" }) })
|
|
2795
2855
|
] });
|
|
2796
2856
|
}
|
|
2797
2857
|
const t = HORIZONTAL_SIZE_TOKENS.default;
|
|
@@ -2808,7 +2868,7 @@ function OnboardingGuideCard({
|
|
|
2808
2868
|
className
|
|
2809
2869
|
),
|
|
2810
2870
|
children: [
|
|
2811
|
-
/* @__PURE__ */
|
|
2871
|
+
/* @__PURE__ */ jsx15(
|
|
2812
2872
|
"span",
|
|
2813
2873
|
{
|
|
2814
2874
|
className: `shrink-0 inline-flex items-center justify-center rounded-full bg-ods-accent/10 text-ods-accent font-semibold ${t.step}`,
|
|
@@ -2817,12 +2877,12 @@ function OnboardingGuideCard({
|
|
|
2817
2877
|
}
|
|
2818
2878
|
),
|
|
2819
2879
|
/* @__PURE__ */ jsxs12("span", { className: "flex flex-col gap-0.5 flex-1 min-w-0", children: [
|
|
2820
|
-
/* @__PURE__ */
|
|
2880
|
+
/* @__PURE__ */ jsx15("span", { className: `block ${t.title} text-ods-text-primary truncate`, children: guide.title }),
|
|
2821
2881
|
/* @__PURE__ */ jsxs12("span", { className: "inline-flex items-center gap-1 font-['DM_Sans'] text-[12px] leading-[16px] text-ods-text-secondary", children: [
|
|
2822
|
-
/* @__PURE__ */
|
|
2823
|
-
/* @__PURE__ */
|
|
2882
|
+
/* @__PURE__ */ jsx15(GraduationCap, { className: "h-3 w-3 shrink-0" }),
|
|
2883
|
+
/* @__PURE__ */ jsx15("span", { className: "truncate", children: guide.section })
|
|
2824
2884
|
] }),
|
|
2825
|
-
summary && /* @__PURE__ */
|
|
2885
|
+
summary && /* @__PURE__ */ jsx15("span", { className: `font-['DM_Sans'] text-[14px] leading-[20px] text-ods-text-secondary ${t.summaryClamp}`, children: summary })
|
|
2826
2886
|
] })
|
|
2827
2887
|
]
|
|
2828
2888
|
}
|
|
@@ -3241,7 +3301,7 @@ function resolveSourceIcon(input, ctx = {}) {
|
|
|
3241
3301
|
init_cn();
|
|
3242
3302
|
import React11 from "react";
|
|
3243
3303
|
init_button();
|
|
3244
|
-
import { Fragment as Fragment4, jsx as
|
|
3304
|
+
import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3245
3305
|
function actionKey(action, idx) {
|
|
3246
3306
|
return `${action.label ?? action.ariaLabel ?? "action"}-${idx}`;
|
|
3247
3307
|
}
|
|
@@ -3273,7 +3333,7 @@ function actionToMenuItems(action, idx) {
|
|
|
3273
3333
|
}
|
|
3274
3334
|
function renderActionButton(action, opts = {}) {
|
|
3275
3335
|
if (action.iconAction) {
|
|
3276
|
-
return /* @__PURE__ */
|
|
3336
|
+
return /* @__PURE__ */ jsx16(
|
|
3277
3337
|
SplitButton,
|
|
3278
3338
|
{
|
|
3279
3339
|
variant: action.variant ?? void 0,
|
|
@@ -3291,18 +3351,18 @@ function renderActionButton(action, opts = {}) {
|
|
|
3291
3351
|
);
|
|
3292
3352
|
}
|
|
3293
3353
|
if (action.submenu && action.submenu.length > 0) {
|
|
3294
|
-
return /* @__PURE__ */
|
|
3354
|
+
return /* @__PURE__ */ jsx16(
|
|
3295
3355
|
ActionsMenuDropdown,
|
|
3296
3356
|
{
|
|
3297
3357
|
groups: [{ items: action.submenu }],
|
|
3298
|
-
customTrigger: /* @__PURE__ */
|
|
3358
|
+
customTrigger: /* @__PURE__ */ jsx16(
|
|
3299
3359
|
Button,
|
|
3300
3360
|
{
|
|
3301
3361
|
variant: "outline",
|
|
3302
3362
|
disabled: action.disabled,
|
|
3303
3363
|
loading: action.loading,
|
|
3304
3364
|
leftIcon: action.icon,
|
|
3305
|
-
splitIcon: /* @__PURE__ */
|
|
3365
|
+
splitIcon: /* @__PURE__ */ jsx16(Chevron02DownIcon, { className: "h-4 w-4" }),
|
|
3306
3366
|
className: opts.fullWidth ? "flex-1" : void 0,
|
|
3307
3367
|
children: action.label
|
|
3308
3368
|
}
|
|
@@ -3312,8 +3372,8 @@ function renderActionButton(action, opts = {}) {
|
|
|
3312
3372
|
}
|
|
3313
3373
|
const isIconOnly = opts.iconOnly || !action.label || action.iconOnlyOnDesktop;
|
|
3314
3374
|
if (isIconOnly) {
|
|
3315
|
-
const iconNode = action.iconOnlyOnDesktop ? /* @__PURE__ */
|
|
3316
|
-
return /* @__PURE__ */
|
|
3375
|
+
const iconNode = action.iconOnlyOnDesktop ? /* @__PURE__ */ jsx16("span", { className: "inline-flex [&_svg]:!text-ods-text-primary", children: action.icon }) : action.icon;
|
|
3376
|
+
return /* @__PURE__ */ jsx16(
|
|
3317
3377
|
Button,
|
|
3318
3378
|
{
|
|
3319
3379
|
variant: action.variant,
|
|
@@ -3329,7 +3389,7 @@ function renderActionButton(action, opts = {}) {
|
|
|
3329
3389
|
}
|
|
3330
3390
|
);
|
|
3331
3391
|
}
|
|
3332
|
-
return /* @__PURE__ */
|
|
3392
|
+
return /* @__PURE__ */ jsx16(
|
|
3333
3393
|
Button,
|
|
3334
3394
|
{
|
|
3335
3395
|
variant: action.variant,
|
|
@@ -3354,12 +3414,12 @@ function PageActions({
|
|
|
3354
3414
|
className
|
|
3355
3415
|
}) {
|
|
3356
3416
|
if (variant === "icon-buttons") {
|
|
3357
|
-
return /* @__PURE__ */
|
|
3417
|
+
return /* @__PURE__ */ jsx16(IconButtonsVariant, { actions, menuActions, selector, className });
|
|
3358
3418
|
}
|
|
3359
3419
|
if (variant === "menu-primary") {
|
|
3360
|
-
return /* @__PURE__ */
|
|
3420
|
+
return /* @__PURE__ */ jsx16(MenuPrimaryVariant, { actions, menuActions: menuActions || [], selector, className });
|
|
3361
3421
|
}
|
|
3362
|
-
return /* @__PURE__ */
|
|
3422
|
+
return /* @__PURE__ */ jsx16(PrimaryButtonsVariant, { actions, className });
|
|
3363
3423
|
}
|
|
3364
3424
|
function IconButtonsVariant({
|
|
3365
3425
|
actions,
|
|
@@ -3375,10 +3435,10 @@ function IconButtonsVariant({
|
|
|
3375
3435
|
return /* @__PURE__ */ jsxs13(Fragment4, { children: [
|
|
3376
3436
|
/* @__PURE__ */ jsxs13("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
3377
3437
|
selector,
|
|
3378
|
-
desktopActions.map((action, idx) => /* @__PURE__ */
|
|
3379
|
-
hasMenuActions && /* @__PURE__ */
|
|
3438
|
+
desktopActions.map((action, idx) => /* @__PURE__ */ jsx16(React11.Fragment, { children: renderActionButton(action) }, actionKey(action, idx))),
|
|
3439
|
+
hasMenuActions && /* @__PURE__ */ jsx16(ActionsMenuDropdown, { groups: menuActions })
|
|
3380
3440
|
] }),
|
|
3381
|
-
/* @__PURE__ */
|
|
3441
|
+
/* @__PURE__ */ jsx16("div", { className: cn("flex md:hidden", className), children: useSingleActionMobile && singleAction ? renderActionButton(singleAction, { iconOnly: true }) : /* @__PURE__ */ jsx16(
|
|
3382
3442
|
ActionsMenuDropdown,
|
|
3383
3443
|
{
|
|
3384
3444
|
groups: [
|
|
@@ -3400,8 +3460,8 @@ function PrimaryButtonsVariant({
|
|
|
3400
3460
|
});
|
|
3401
3461
|
const desktopActions = sortedActions.filter((a) => !a.showOnlyMobile);
|
|
3402
3462
|
return /* @__PURE__ */ jsxs13(Fragment4, { children: [
|
|
3403
|
-
/* @__PURE__ */
|
|
3404
|
-
/* @__PURE__ */
|
|
3463
|
+
/* @__PURE__ */ jsx16("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: desktopActions.map((action, idx) => /* @__PURE__ */ jsx16(React11.Fragment, { children: renderActionButton(action) }, `desktop-${actionKey(action, idx)}`)) }),
|
|
3464
|
+
/* @__PURE__ */ jsx16(MobileBottomActions, { actions: sortedActions })
|
|
3405
3465
|
] });
|
|
3406
3466
|
}
|
|
3407
3467
|
function MenuPrimaryVariant({
|
|
@@ -3415,10 +3475,10 @@ function MenuPrimaryVariant({
|
|
|
3415
3475
|
return /* @__PURE__ */ jsxs13(Fragment4, { children: [
|
|
3416
3476
|
/* @__PURE__ */ jsxs13("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
3417
3477
|
selector,
|
|
3418
|
-
hasMenuActions && /* @__PURE__ */
|
|
3419
|
-
desktopActions.map((action, idx) => /* @__PURE__ */
|
|
3478
|
+
hasMenuActions && /* @__PURE__ */ jsx16(ActionsMenuDropdown, { groups: menuActions }),
|
|
3479
|
+
desktopActions.map((action, idx) => /* @__PURE__ */ jsx16(React11.Fragment, { children: renderActionButton({ ...action, variant: action.variant || "accent" }) }, `desktop-${actionKey(action, idx)}`))
|
|
3420
3480
|
] }),
|
|
3421
|
-
/* @__PURE__ */
|
|
3481
|
+
/* @__PURE__ */ jsx16("div", { className: cn("flex md:hidden", className), children: /* @__PURE__ */ jsx16(
|
|
3422
3482
|
ActionsMenuDropdown,
|
|
3423
3483
|
{
|
|
3424
3484
|
groups: [
|
|
@@ -3430,12 +3490,12 @@ function MenuPrimaryVariant({
|
|
|
3430
3490
|
] });
|
|
3431
3491
|
}
|
|
3432
3492
|
function MobileBottomActions({ actions }) {
|
|
3433
|
-
return /* @__PURE__ */
|
|
3493
|
+
return /* @__PURE__ */ jsx16("div", { className: cn(
|
|
3434
3494
|
"fixed md:hidden bottom-0 left-0 right-0 z-50",
|
|
3435
3495
|
"bg-ods-card border-t border-ods-border",
|
|
3436
3496
|
"flex items-start pt-6 pb-6 px-6",
|
|
3437
3497
|
ACTIONS_GAP
|
|
3438
|
-
), children: actions.map((action, idx) => /* @__PURE__ */
|
|
3498
|
+
), children: actions.map((action, idx) => /* @__PURE__ */ jsx16(React11.Fragment, { children: renderActionButton(action, { fullWidth: !!action.label }) }, `mobile-${actionKey(action, idx)}`)) });
|
|
3439
3499
|
}
|
|
3440
3500
|
function usePageActionsBottomPadding(variant) {
|
|
3441
3501
|
return variant === "primary-buttons" || variant === "menu-primary" ? "pb-40 md:pb-0" : "";
|
|
@@ -3446,7 +3506,7 @@ init_cn();
|
|
|
3446
3506
|
|
|
3447
3507
|
// src/components/layout/back-button.tsx
|
|
3448
3508
|
init_cn();
|
|
3449
|
-
import { jsx as
|
|
3509
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3450
3510
|
function BackButton({ label = "Back", className, type = "button", ...props }) {
|
|
3451
3511
|
return /* @__PURE__ */ jsxs14(
|
|
3452
3512
|
"button",
|
|
@@ -3462,15 +3522,15 @@ function BackButton({ label = "Back", className, type = "button", ...props }) {
|
|
|
3462
3522
|
),
|
|
3463
3523
|
...props,
|
|
3464
3524
|
children: [
|
|
3465
|
-
/* @__PURE__ */
|
|
3466
|
-
/* @__PURE__ */
|
|
3525
|
+
/* @__PURE__ */ jsx17(Chevron02LeftIcon, { className: "size-6 shrink-0" }),
|
|
3526
|
+
/* @__PURE__ */ jsx17("span", { className: "text-h4", children: label })
|
|
3467
3527
|
]
|
|
3468
3528
|
}
|
|
3469
3529
|
);
|
|
3470
3530
|
}
|
|
3471
3531
|
|
|
3472
3532
|
// src/components/layout/page-container.tsx
|
|
3473
|
-
import { jsx as
|
|
3533
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3474
3534
|
function isAdvancedProps(props) {
|
|
3475
3535
|
return "variant" in props || "title" in props || "subtitle" in props || "backButton" in props || "headerActions" in props || "headerContent" in props || "showHeader" in props || "contentClassName" in props || "actions" in props || "actionsVariant" in props;
|
|
3476
3536
|
}
|
|
@@ -3492,9 +3552,9 @@ function renderLegacyPageContainer({
|
|
|
3492
3552
|
as: Component = "section",
|
|
3493
3553
|
id
|
|
3494
3554
|
}) {
|
|
3495
|
-
const content = /* @__PURE__ */
|
|
3555
|
+
const content = /* @__PURE__ */ jsx18("div", { className: cn(maxWidth, contentPadding, "mx-auto", className), children });
|
|
3496
3556
|
if (fullWidthBackground) {
|
|
3497
|
-
return /* @__PURE__ */
|
|
3557
|
+
return /* @__PURE__ */ jsx18(
|
|
3498
3558
|
Component,
|
|
3499
3559
|
{
|
|
3500
3560
|
className: cn("w-full", backgroundClassName),
|
|
@@ -3504,7 +3564,7 @@ function renderLegacyPageContainer({
|
|
|
3504
3564
|
}
|
|
3505
3565
|
);
|
|
3506
3566
|
}
|
|
3507
|
-
return /* @__PURE__ */
|
|
3567
|
+
return /* @__PURE__ */ jsx18(Component, { className: "w-full", id, children: /* @__PURE__ */ jsx18("div", { className: cn(maxWidth, contentPadding, "mx-auto", backgroundClassName, className), style: backgroundStyle, children }) });
|
|
3508
3568
|
}
|
|
3509
3569
|
function renderAdvancedPageContainer({
|
|
3510
3570
|
children,
|
|
@@ -3530,7 +3590,7 @@ function renderAdvancedPageContainer({
|
|
|
3530
3590
|
};
|
|
3531
3591
|
const renderActions = () => {
|
|
3532
3592
|
if (!actions || actions.length === 0) return null;
|
|
3533
|
-
return /* @__PURE__ */
|
|
3593
|
+
return /* @__PURE__ */ jsx18(PageActions, { variant: getActionsVariant(), actions, menuActions });
|
|
3534
3594
|
};
|
|
3535
3595
|
const needsBottomPadding = actions && actions.length > 0 && getActionsVariant() === "primary-buttons";
|
|
3536
3596
|
const paddingClasses = {
|
|
@@ -3547,14 +3607,14 @@ function renderAdvancedPageContainer({
|
|
|
3547
3607
|
const renderHeader = () => {
|
|
3548
3608
|
if (!showHeader) return null;
|
|
3549
3609
|
if (headerContent) {
|
|
3550
|
-
return /* @__PURE__ */
|
|
3610
|
+
return /* @__PURE__ */ jsx18("div", { className: cn(
|
|
3551
3611
|
"flex items-end justify-between gap-4"
|
|
3552
3612
|
), children: headerContent });
|
|
3553
3613
|
}
|
|
3554
3614
|
if (variant === "detail") {
|
|
3555
3615
|
return /* @__PURE__ */ jsxs15("div", { className: "flex items-end justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-end lg:justify-between gap-4", children: [
|
|
3556
3616
|
/* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
3557
|
-
backButton && /* @__PURE__ */
|
|
3617
|
+
backButton && /* @__PURE__ */ jsx18(
|
|
3558
3618
|
BackButton,
|
|
3559
3619
|
{
|
|
3560
3620
|
onClick: backButton.onClick,
|
|
@@ -3562,8 +3622,8 @@ function renderAdvancedPageContainer({
|
|
|
3562
3622
|
className: "hidden md:inline-flex"
|
|
3563
3623
|
}
|
|
3564
3624
|
),
|
|
3565
|
-
title && /* @__PURE__ */
|
|
3566
|
-
subtitle && /* @__PURE__ */
|
|
3625
|
+
title && /* @__PURE__ */ jsx18("h1", { className: "text-h2 tracking-[-0.64px] text-ods-text-primary", children: title }),
|
|
3626
|
+
subtitle && /* @__PURE__ */ jsx18("div", { className: "text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]", children: subtitle })
|
|
3567
3627
|
] }),
|
|
3568
3628
|
(headerActions || actions) && /* @__PURE__ */ jsxs15("div", { className: "flex gap-2 items-center shrink-0", children: [
|
|
3569
3629
|
headerActions,
|
|
@@ -3574,7 +3634,7 @@ function renderAdvancedPageContainer({
|
|
|
3574
3634
|
if (variant === "list") {
|
|
3575
3635
|
return /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-center lg:justify-between gap-4", children: [
|
|
3576
3636
|
/* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
3577
|
-
backButton && /* @__PURE__ */
|
|
3637
|
+
backButton && /* @__PURE__ */ jsx18(
|
|
3578
3638
|
BackButton,
|
|
3579
3639
|
{
|
|
3580
3640
|
onClick: backButton.onClick,
|
|
@@ -3582,8 +3642,8 @@ function renderAdvancedPageContainer({
|
|
|
3582
3642
|
className: "hidden md:inline-flex"
|
|
3583
3643
|
}
|
|
3584
3644
|
),
|
|
3585
|
-
title && /* @__PURE__ */
|
|
3586
|
-
subtitle && /* @__PURE__ */
|
|
3645
|
+
title && /* @__PURE__ */ jsx18("h1", { className: "text-h2 tracking-[-0.48px] text-ods-text-primary", children: title }),
|
|
3646
|
+
subtitle && /* @__PURE__ */ jsx18("div", { className: "text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]", children: subtitle })
|
|
3587
3647
|
] }),
|
|
3588
3648
|
(headerActions || actions) && /* @__PURE__ */ jsxs15("div", { className: "flex gap-3 items-center shrink-0", children: [
|
|
3589
3649
|
headerActions,
|
|
@@ -3594,7 +3654,7 @@ function renderAdvancedPageContainer({
|
|
|
3594
3654
|
if (variant === "form") {
|
|
3595
3655
|
return /* @__PURE__ */ jsxs15("div", { className: "flex items-end justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-end lg:justify-between gap-4", children: [
|
|
3596
3656
|
/* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-2 flex-1 min-w-0", children: [
|
|
3597
|
-
backButton && /* @__PURE__ */
|
|
3657
|
+
backButton && /* @__PURE__ */ jsx18(
|
|
3598
3658
|
BackButton,
|
|
3599
3659
|
{
|
|
3600
3660
|
onClick: backButton.onClick,
|
|
@@ -3602,7 +3662,7 @@ function renderAdvancedPageContainer({
|
|
|
3602
3662
|
className: "hidden md:inline-flex"
|
|
3603
3663
|
}
|
|
3604
3664
|
),
|
|
3605
|
-
title && /* @__PURE__ */
|
|
3665
|
+
title && /* @__PURE__ */ jsx18("h1", { className: "text-[32px] font-['Azeret_Mono:SemiBold',_sans-serif] font-semibold text-ods-text-primary tracking-[-0.64px]", children: title })
|
|
3606
3666
|
] }),
|
|
3607
3667
|
(headerActions || actions) && /* @__PURE__ */ jsxs15("div", { className: "flex gap-4 items-center shrink-0", children: [
|
|
3608
3668
|
headerActions,
|
|
@@ -3612,8 +3672,8 @@ function renderAdvancedPageContainer({
|
|
|
3612
3672
|
}
|
|
3613
3673
|
return /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between md:flex-col md:items-start md:justify-start lg:flex-row lg:items-center lg:justify-between gap-4", children: [
|
|
3614
3674
|
(title || subtitle) && /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1 flex-1 min-w-0", children: [
|
|
3615
|
-
title && /* @__PURE__ */
|
|
3616
|
-
subtitle && /* @__PURE__ */
|
|
3675
|
+
title && /* @__PURE__ */ jsx18("h1", { className: "text-h2 text-ods-text-primary", children: title }),
|
|
3676
|
+
subtitle && /* @__PURE__ */ jsx18("div", { className: "text-ods-text-secondary font-['DM_Sans'] font-medium text-[16px]", children: subtitle })
|
|
3617
3677
|
] }),
|
|
3618
3678
|
(headerActions || actions) && /* @__PURE__ */ jsxs15("div", { className: "flex gap-3 items-center shrink-0", children: [
|
|
3619
3679
|
headerActions,
|
|
@@ -3655,26 +3715,26 @@ function renderAdvancedPageContainer({
|
|
|
3655
3715
|
};
|
|
3656
3716
|
return /* @__PURE__ */ jsxs15("div", { className: getContainerClasses(), children: [
|
|
3657
3717
|
renderHeader(),
|
|
3658
|
-
/* @__PURE__ */
|
|
3718
|
+
/* @__PURE__ */ jsx18("div", { className: getContentClasses(), children })
|
|
3659
3719
|
] });
|
|
3660
3720
|
}
|
|
3661
|
-
var ListPageContainer = (props) => /* @__PURE__ */
|
|
3662
|
-
var DetailPageContainer = (props) => /* @__PURE__ */
|
|
3663
|
-
var FormPageContainer = (props) => /* @__PURE__ */
|
|
3664
|
-
var ContentPageContainer = (props) => /* @__PURE__ */
|
|
3721
|
+
var ListPageContainer = (props) => /* @__PURE__ */ jsx18(PageContainer, { ...props, variant: "list" });
|
|
3722
|
+
var DetailPageContainer = (props) => /* @__PURE__ */ jsx18(PageContainer, { ...props, variant: "detail" });
|
|
3723
|
+
var FormPageContainer = (props) => /* @__PURE__ */ jsx18(PageContainer, { ...props, variant: "form" });
|
|
3724
|
+
var ContentPageContainer = (props) => /* @__PURE__ */ jsx18(PageContainer, { ...props, variant: "content" });
|
|
3665
3725
|
|
|
3666
3726
|
// src/components/layout/article-detail-layout.tsx
|
|
3667
|
-
import { jsx as
|
|
3727
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3668
3728
|
function PageShell({ children, schemas }) {
|
|
3669
3729
|
return /* @__PURE__ */ jsxs16("main", { className: "bg-ods-bg min-h-screen", children: [
|
|
3670
3730
|
schemas,
|
|
3671
|
-
/* @__PURE__ */
|
|
3731
|
+
/* @__PURE__ */ jsx19("div", { className: "max-w-[1920px] mx-auto px-6 md:px-20 py-6 md:py-10", children })
|
|
3672
3732
|
] });
|
|
3673
3733
|
}
|
|
3674
3734
|
function ArticleDetailLayout({ children, schemas }) {
|
|
3675
3735
|
return /* @__PURE__ */ jsxs16("main", { className: "bg-ods-bg min-h-screen", children: [
|
|
3676
3736
|
schemas,
|
|
3677
|
-
/* @__PURE__ */
|
|
3737
|
+
/* @__PURE__ */ jsx19("div", { className: "max-w-[1280px] mx-auto px-6 md:px-20 py-6 md:py-10", children })
|
|
3678
3738
|
] });
|
|
3679
3739
|
}
|
|
3680
3740
|
|
|
@@ -3729,7 +3789,7 @@ function resolveContentHref(composeContentUrl, args) {
|
|
|
3729
3789
|
init_button();
|
|
3730
3790
|
init_cn();
|
|
3731
3791
|
import { AlertTriangle, RefreshCw, Home } from "lucide-react";
|
|
3732
|
-
import { jsx as
|
|
3792
|
+
import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3733
3793
|
function ErrorState({
|
|
3734
3794
|
title = "Error",
|
|
3735
3795
|
message,
|
|
@@ -3768,36 +3828,36 @@ function ErrorState({
|
|
|
3768
3828
|
}
|
|
3769
3829
|
};
|
|
3770
3830
|
const styles = getVariantStyles();
|
|
3771
|
-
return /* @__PURE__ */
|
|
3831
|
+
return /* @__PURE__ */ jsx20("div", { className: cn("p-6", containerClassName), children: /* @__PURE__ */ jsx20("div", { className: cn(
|
|
3772
3832
|
"rounded-lg p-4 border",
|
|
3773
3833
|
styles.bg,
|
|
3774
3834
|
styles.border,
|
|
3775
3835
|
className
|
|
3776
3836
|
), children: /* @__PURE__ */ jsxs17("div", { className: "flex items-start gap-3", children: [
|
|
3777
|
-
showIcon && /* @__PURE__ */
|
|
3837
|
+
showIcon && /* @__PURE__ */ jsx20(AlertTriangle, { className: cn("h-5 w-5 mt-0.5 flex-shrink-0", styles.icon) }),
|
|
3778
3838
|
/* @__PURE__ */ jsxs17("div", { className: "flex-1", children: [
|
|
3779
|
-
/* @__PURE__ */
|
|
3780
|
-
/* @__PURE__ */
|
|
3839
|
+
/* @__PURE__ */ jsx20("h3", { className: cn("font-semibold mb-1", styles.text), children: title }),
|
|
3840
|
+
/* @__PURE__ */ jsx20("p", { className: cn("text-sm", styles.text), children: message }),
|
|
3781
3841
|
(showRetry || showHome) && /* @__PURE__ */ jsxs17("div", { className: "flex gap-2 mt-3", children: [
|
|
3782
|
-
showRetry && onRetry && /* @__PURE__ */
|
|
3842
|
+
showRetry && onRetry && /* @__PURE__ */ jsx20(
|
|
3783
3843
|
Button,
|
|
3784
3844
|
{
|
|
3785
3845
|
onClick: onRetry,
|
|
3786
3846
|
variant: "outline",
|
|
3787
3847
|
size: "small-legacy",
|
|
3788
3848
|
className: "h-8",
|
|
3789
|
-
leftIcon: /* @__PURE__ */
|
|
3849
|
+
leftIcon: /* @__PURE__ */ jsx20(RefreshCw, { className: "h-4 w-4" }),
|
|
3790
3850
|
children: "Try Again"
|
|
3791
3851
|
}
|
|
3792
3852
|
),
|
|
3793
|
-
showHome && onHome && /* @__PURE__ */
|
|
3853
|
+
showHome && onHome && /* @__PURE__ */ jsx20(
|
|
3794
3854
|
Button,
|
|
3795
3855
|
{
|
|
3796
3856
|
onClick: onHome,
|
|
3797
3857
|
variant: "outline",
|
|
3798
3858
|
size: "small-legacy",
|
|
3799
3859
|
className: "h-8",
|
|
3800
|
-
leftIcon: /* @__PURE__ */
|
|
3860
|
+
leftIcon: /* @__PURE__ */ jsx20(Home, { className: "h-4 w-4" }),
|
|
3801
3861
|
children: "Go Home"
|
|
3802
3862
|
}
|
|
3803
3863
|
)
|
|
@@ -3806,7 +3866,7 @@ function ErrorState({
|
|
|
3806
3866
|
] }) }) });
|
|
3807
3867
|
}
|
|
3808
3868
|
function PageError({ message, onRetry, onHome }) {
|
|
3809
|
-
return /* @__PURE__ */
|
|
3869
|
+
return /* @__PURE__ */ jsx20(
|
|
3810
3870
|
ErrorState,
|
|
3811
3871
|
{
|
|
3812
3872
|
title: "Page Error",
|
|
@@ -3820,7 +3880,7 @@ function PageError({ message, onRetry, onHome }) {
|
|
|
3820
3880
|
);
|
|
3821
3881
|
}
|
|
3822
3882
|
function LoadError({ message, onRetry }) {
|
|
3823
|
-
return /* @__PURE__ */
|
|
3883
|
+
return /* @__PURE__ */ jsx20(
|
|
3824
3884
|
ErrorState,
|
|
3825
3885
|
{
|
|
3826
3886
|
title: "Loading Error",
|
|
@@ -3832,7 +3892,7 @@ function LoadError({ message, onRetry }) {
|
|
|
3832
3892
|
);
|
|
3833
3893
|
}
|
|
3834
3894
|
function NotFoundError({ message = "The requested item was not found", onHome }) {
|
|
3835
|
-
return /* @__PURE__ */
|
|
3895
|
+
return /* @__PURE__ */ jsx20(
|
|
3836
3896
|
ErrorState,
|
|
3837
3897
|
{
|
|
3838
3898
|
title: "Not Found",
|
|
@@ -3844,6 +3904,37 @@ function NotFoundError({ message = "The requested item was not found", onHome })
|
|
|
3844
3904
|
);
|
|
3845
3905
|
}
|
|
3846
3906
|
|
|
3907
|
+
// src/components/features/entity-tag-badges.tsx
|
|
3908
|
+
import Link from "next/link";
|
|
3909
|
+
import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
3910
|
+
var TAG_BADGE_CLASS = "bg-ods-card border border-ods-border";
|
|
3911
|
+
var BADGE_CLASS = TAG_BADGE_CLASS;
|
|
3912
|
+
function EntityTagBadges({ tags, basePath, max, className }) {
|
|
3913
|
+
const items = (tags || []).filter((t) => !!t && !!t.name);
|
|
3914
|
+
if (items.length === 0) return null;
|
|
3915
|
+
const visibleLimit = max == null ? items.length : Math.max(0, max);
|
|
3916
|
+
const shown = items.slice(0, visibleLimit);
|
|
3917
|
+
const overflow = items.length - shown.length;
|
|
3918
|
+
return /* @__PURE__ */ jsxs18("div", { className: `flex flex-wrap items-center gap-2 w-full ${className || ""}`, children: [
|
|
3919
|
+
shown.map((tag) => {
|
|
3920
|
+
const key = tag.tag_id ?? tag.id ?? tag.slug ?? tag.name;
|
|
3921
|
+
const label = (tag.name || "").toUpperCase();
|
|
3922
|
+
if (basePath && tag.slug) {
|
|
3923
|
+
return /* @__PURE__ */ jsx21(Link, { href: `${basePath}?tags=${tag.slug}`, className: "inline-flex", children: /* @__PURE__ */ jsx21(
|
|
3924
|
+
StatusBadge,
|
|
3925
|
+
{
|
|
3926
|
+
text: label,
|
|
3927
|
+
variant: "card",
|
|
3928
|
+
className: `${BADGE_CLASS} cursor-pointer transition-colors hover:border-ods-accent`
|
|
3929
|
+
}
|
|
3930
|
+
) }, key);
|
|
3931
|
+
}
|
|
3932
|
+
return /* @__PURE__ */ jsx21(StatusBadge, { text: label, variant: "card", className: BADGE_CLASS }, key);
|
|
3933
|
+
}),
|
|
3934
|
+
overflow > 0 && /* @__PURE__ */ jsx21(StatusBadge, { text: `+${overflow}`, variant: "card", className: `${BADGE_CLASS} text-ods-text-secondary` })
|
|
3935
|
+
] });
|
|
3936
|
+
}
|
|
3937
|
+
|
|
3847
3938
|
// src/components/features/mux-origins.ts
|
|
3848
3939
|
var MUX_STREAM_ORIGIN = "https://stream.mux.com";
|
|
3849
3940
|
var MUX_IMAGE_ORIGIN = "https://image.mux.com";
|
|
@@ -3917,7 +4008,7 @@ init_cn();
|
|
|
3917
4008
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
3918
4009
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
3919
4010
|
import * as React12 from "react";
|
|
3920
|
-
import { jsx as
|
|
4011
|
+
import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
3921
4012
|
var containerStyles = cn(
|
|
3922
4013
|
// Layout & spacing — matches lib Input component
|
|
3923
4014
|
"flex items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text",
|
|
@@ -4101,20 +4192,20 @@ function SearchInput({
|
|
|
4101
4192
|
const handleOpenChange = (open) => {
|
|
4102
4193
|
setIsOpen(open);
|
|
4103
4194
|
};
|
|
4104
|
-
const defaultRenderResult = (result, isHighlighted) => /* @__PURE__ */
|
|
4105
|
-
result.icon && /* @__PURE__ */
|
|
4106
|
-
/* @__PURE__ */
|
|
4107
|
-
/* @__PURE__ */
|
|
4195
|
+
const defaultRenderResult = (result, isHighlighted) => /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3 w-full min-w-0", children: [
|
|
4196
|
+
result.icon && /* @__PURE__ */ jsx22("span", { className: "flex-shrink-0 text-ods-text-secondary [&_svg]:size-4", children: result.icon }),
|
|
4197
|
+
/* @__PURE__ */ jsxs19("div", { className: "min-w-0 flex-1", children: [
|
|
4198
|
+
/* @__PURE__ */ jsx22("div", { className: cn(
|
|
4108
4199
|
"text-sm font-medium leading-5 truncate",
|
|
4109
4200
|
isHighlighted ? "text-ods-accent" : "text-ods-text-primary"
|
|
4110
4201
|
), title: result.title, children: result.title }),
|
|
4111
|
-
result.description && /* @__PURE__ */
|
|
4202
|
+
result.description && /* @__PURE__ */ jsx22("div", { className: "text-xs leading-4 text-ods-text-secondary truncate mt-0.5", title: result.description, children: result.description })
|
|
4112
4203
|
] }),
|
|
4113
|
-
result.type && /* @__PURE__ */
|
|
4204
|
+
result.type && /* @__PURE__ */ jsx22("span", { className: "flex-shrink-0 text-[11px] font-medium text-ods-text-muted uppercase tracking-wider", children: result.type })
|
|
4114
4205
|
] });
|
|
4115
4206
|
const renderRow = (result, index) => {
|
|
4116
4207
|
const isHighlighted = index === highlightedIndex;
|
|
4117
|
-
return /* @__PURE__ */
|
|
4208
|
+
return /* @__PURE__ */ jsx22(
|
|
4118
4209
|
"div",
|
|
4119
4210
|
{
|
|
4120
4211
|
role: "option",
|
|
@@ -4133,15 +4224,15 @@ function SearchInput({
|
|
|
4133
4224
|
};
|
|
4134
4225
|
const renderDropdownContent = () => {
|
|
4135
4226
|
if (isLoading) {
|
|
4136
|
-
return /* @__PURE__ */
|
|
4227
|
+
return /* @__PURE__ */ jsx22("div", { className: "px-4 py-3 text-ods-text-secondary text-[14px]", children: "Loading..." });
|
|
4137
4228
|
}
|
|
4138
4229
|
if (flatResults.length === 0) {
|
|
4139
|
-
return /* @__PURE__ */
|
|
4230
|
+
return /* @__PURE__ */ jsx22("div", { className: "px-4 py-3 text-ods-text-secondary text-[14px]", children: emptyResultsText });
|
|
4140
4231
|
}
|
|
4141
4232
|
if (groups) {
|
|
4142
4233
|
let globalIndex = 0;
|
|
4143
|
-
return Array.from(groups.entries()).map(([groupLabel, groupResults]) => /* @__PURE__ */
|
|
4144
|
-
/* @__PURE__ */
|
|
4234
|
+
return Array.from(groups.entries()).map(([groupLabel, groupResults]) => /* @__PURE__ */ jsxs19("div", { children: [
|
|
4235
|
+
/* @__PURE__ */ jsx22("div", { className: "px-4 py-2 text-[12px] font-semibold text-ods-text-secondary uppercase tracking-wide bg-ods-bg", children: groupLabel }),
|
|
4145
4236
|
groupResults.map((result) => {
|
|
4146
4237
|
const idx = globalIndex++;
|
|
4147
4238
|
return renderRow(result, idx);
|
|
@@ -4151,9 +4242,9 @@ function SearchInput({
|
|
|
4151
4242
|
return flatResults.map((result, index) => renderRow(result, index));
|
|
4152
4243
|
};
|
|
4153
4244
|
const hasValue = currentValue.length > 0;
|
|
4154
|
-
return /* @__PURE__ */
|
|
4155
|
-
/* @__PURE__ */
|
|
4156
|
-
/* @__PURE__ */
|
|
4245
|
+
return /* @__PURE__ */ jsxs19("div", { className: cn("relative", className), ref: containerRef, children: [
|
|
4246
|
+
/* @__PURE__ */ jsxs19(PopoverPrimitive.Root, { open: dropdownVisible, onOpenChange: handleOpenChange, modal: false, children: [
|
|
4247
|
+
/* @__PURE__ */ jsx22(PopoverPrimitive.Anchor, { asChild: true, children: /* @__PURE__ */ jsxs19(
|
|
4157
4248
|
"div",
|
|
4158
4249
|
{
|
|
4159
4250
|
className: cn(
|
|
@@ -4166,9 +4257,9 @@ function SearchInput({
|
|
|
4166
4257
|
setIsOpen(true);
|
|
4167
4258
|
},
|
|
4168
4259
|
children: [
|
|
4169
|
-
/* @__PURE__ */
|
|
4170
|
-
/* @__PURE__ */
|
|
4171
|
-
visibleChips.map((chip) => /* @__PURE__ */
|
|
4260
|
+
/* @__PURE__ */ jsx22("span", { className: "flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent [&_svg]:size-4 md:[&_svg]:size-6", children: startAdornment !== void 0 ? startAdornment : /* @__PURE__ */ jsx22(SearchIcon, {}) }),
|
|
4261
|
+
/* @__PURE__ */ jsxs19("div", { ref: middleRef, className: "flex-1 flex items-center gap-2 min-w-0 overflow-hidden", children: [
|
|
4262
|
+
visibleChips.map((chip) => /* @__PURE__ */ jsx22(
|
|
4172
4263
|
Tag,
|
|
4173
4264
|
{
|
|
4174
4265
|
variant: chipVariantToTagVariant(chip.variant),
|
|
@@ -4178,7 +4269,7 @@ function SearchInput({
|
|
|
4178
4269
|
},
|
|
4179
4270
|
chip.id
|
|
4180
4271
|
)),
|
|
4181
|
-
hiddenCount > 0 && /* @__PURE__ */
|
|
4272
|
+
hiddenCount > 0 && /* @__PURE__ */ jsx22("div", { ref: hiddenTagsRef, className: "shrink-0", children: /* @__PURE__ */ jsx22(
|
|
4182
4273
|
"button",
|
|
4183
4274
|
{
|
|
4184
4275
|
ref: badgeRef,
|
|
@@ -4197,7 +4288,7 @@ function SearchInput({
|
|
|
4197
4288
|
children: getLimitTagsText(hiddenCount)
|
|
4198
4289
|
}
|
|
4199
4290
|
) }),
|
|
4200
|
-
/* @__PURE__ */
|
|
4291
|
+
/* @__PURE__ */ jsx22(
|
|
4201
4292
|
"input",
|
|
4202
4293
|
{
|
|
4203
4294
|
ref: inputRef,
|
|
@@ -4214,15 +4305,15 @@ function SearchInput({
|
|
|
4214
4305
|
}
|
|
4215
4306
|
)
|
|
4216
4307
|
] }),
|
|
4217
|
-
/* @__PURE__ */
|
|
4218
|
-
hasValue && /* @__PURE__ */
|
|
4308
|
+
/* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1 shrink-0 ml-auto", children: [
|
|
4309
|
+
hasValue && /* @__PURE__ */ jsx22(
|
|
4219
4310
|
"button",
|
|
4220
4311
|
{
|
|
4221
4312
|
type: "button",
|
|
4222
4313
|
onClick: handleClear,
|
|
4223
4314
|
className: "flex items-center justify-center hover:opacity-70 transition-opacity",
|
|
4224
4315
|
"aria-label": "Clear search",
|
|
4225
|
-
children: /* @__PURE__ */
|
|
4316
|
+
children: /* @__PURE__ */ jsx22(XmarkCircleIcon, { className: "text-ods-text-secondary", size: 24 })
|
|
4226
4317
|
}
|
|
4227
4318
|
),
|
|
4228
4319
|
endAdornment
|
|
@@ -4230,7 +4321,7 @@ function SearchInput({
|
|
|
4230
4321
|
]
|
|
4231
4322
|
}
|
|
4232
4323
|
) }),
|
|
4233
|
-
/* @__PURE__ */
|
|
4324
|
+
/* @__PURE__ */ jsx22(
|
|
4234
4325
|
PopoverPrimitive.Content,
|
|
4235
4326
|
{
|
|
4236
4327
|
className: cn(
|
|
@@ -4253,14 +4344,14 @@ function SearchInput({
|
|
|
4253
4344
|
e.preventDefault();
|
|
4254
4345
|
}
|
|
4255
4346
|
},
|
|
4256
|
-
children: /* @__PURE__ */
|
|
4257
|
-
/* @__PURE__ */
|
|
4258
|
-
/* @__PURE__ */
|
|
4347
|
+
children: /* @__PURE__ */ jsxs19(ScrollAreaPrimitive.Root, { className: "overflow-hidden", children: [
|
|
4348
|
+
/* @__PURE__ */ jsx22(ScrollAreaPrimitive.Viewport, { className: "max-h-[320px] w-full", children: /* @__PURE__ */ jsx22("div", { role: "listbox", children: renderDropdownContent() }) }),
|
|
4349
|
+
/* @__PURE__ */ jsx22(ScrollAreaPrimitive.Scrollbar, { className: "hidden", orientation: "vertical", children: /* @__PURE__ */ jsx22(ScrollAreaPrimitive.Thumb, {}) })
|
|
4259
4350
|
] })
|
|
4260
4351
|
}
|
|
4261
4352
|
)
|
|
4262
4353
|
] }),
|
|
4263
|
-
showHiddenTags && hiddenCount > 0 && /* @__PURE__ */
|
|
4354
|
+
showHiddenTags && hiddenCount > 0 && /* @__PURE__ */ jsx22(
|
|
4264
4355
|
HiddenTagsPopup,
|
|
4265
4356
|
{
|
|
4266
4357
|
ref: hiddenTagsPopupRef,
|
|
@@ -4274,7 +4365,7 @@ function SearchInput({
|
|
|
4274
4365
|
}
|
|
4275
4366
|
}
|
|
4276
4367
|
),
|
|
4277
|
-
/* @__PURE__ */
|
|
4368
|
+
/* @__PURE__ */ jsx22(
|
|
4278
4369
|
"span",
|
|
4279
4370
|
{
|
|
4280
4371
|
ref: textMeasureRef,
|
|
@@ -4283,13 +4374,13 @@ function SearchInput({
|
|
|
4283
4374
|
children: currentPlaceholder
|
|
4284
4375
|
}
|
|
4285
4376
|
),
|
|
4286
|
-
/* @__PURE__ */
|
|
4377
|
+
/* @__PURE__ */ jsx22(
|
|
4287
4378
|
"div",
|
|
4288
4379
|
{
|
|
4289
4380
|
ref: measureRef,
|
|
4290
4381
|
"aria-hidden": "true",
|
|
4291
4382
|
className: "fixed -left-[9999px] top-0 flex gap-2 pointer-events-none",
|
|
4292
|
-
children: filterChips.map((chip) => /* @__PURE__ */
|
|
4383
|
+
children: filterChips.map((chip) => /* @__PURE__ */ jsx22(
|
|
4293
4384
|
Tag,
|
|
4294
4385
|
{
|
|
4295
4386
|
variant: chipVariantToTagVariant(chip.variant),
|
|
@@ -4308,7 +4399,7 @@ function SearchInput({
|
|
|
4308
4399
|
// src/components/ui/filter-pill-row.tsx
|
|
4309
4400
|
init_button();
|
|
4310
4401
|
import { Filter } from "lucide-react";
|
|
4311
|
-
import { jsx as
|
|
4402
|
+
import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4312
4403
|
function FilterPillRow({
|
|
4313
4404
|
label,
|
|
4314
4405
|
selectedValue,
|
|
@@ -4317,12 +4408,12 @@ function FilterPillRow({
|
|
|
4317
4408
|
countLabel,
|
|
4318
4409
|
children
|
|
4319
4410
|
}) {
|
|
4320
|
-
return /* @__PURE__ */
|
|
4321
|
-
/* @__PURE__ */
|
|
4322
|
-
/* @__PURE__ */
|
|
4323
|
-
/* @__PURE__ */
|
|
4411
|
+
return /* @__PURE__ */ jsxs20("div", { className: "flex flex-wrap items-center gap-3 p-4 bg-ods-card border border-ods-border rounded-lg", children: [
|
|
4412
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
|
|
4413
|
+
/* @__PURE__ */ jsx23(Filter, { className: "h-4 w-4 text-ods-accent" }),
|
|
4414
|
+
/* @__PURE__ */ jsx23("span", { className: "text-h5 text-ods-text-secondary", children: label })
|
|
4324
4415
|
] }),
|
|
4325
|
-
children || options.map((opt) => /* @__PURE__ */
|
|
4416
|
+
children || options.map((opt) => /* @__PURE__ */ jsx23(
|
|
4326
4417
|
Button,
|
|
4327
4418
|
{
|
|
4328
4419
|
type: "button",
|
|
@@ -4334,7 +4425,7 @@ function FilterPillRow({
|
|
|
4334
4425
|
},
|
|
4335
4426
|
opt.value
|
|
4336
4427
|
)),
|
|
4337
|
-
countLabel && /* @__PURE__ */
|
|
4428
|
+
countLabel && /* @__PURE__ */ jsx23("div", { className: "ml-auto text-[12px] font-['DM_Sans'] text-ods-text-secondary shrink-0", children: countLabel })
|
|
4338
4429
|
] });
|
|
4339
4430
|
}
|
|
4340
4431
|
|
|
@@ -4353,6 +4444,8 @@ export {
|
|
|
4353
4444
|
TabsList,
|
|
4354
4445
|
TabsTrigger,
|
|
4355
4446
|
TabsContent,
|
|
4447
|
+
statusBadgeVariants,
|
|
4448
|
+
StatusBadge,
|
|
4356
4449
|
SimpleMarkdownRenderer,
|
|
4357
4450
|
formatDate,
|
|
4358
4451
|
formatNumber,
|
|
@@ -4468,6 +4561,8 @@ export {
|
|
|
4468
4561
|
PageError,
|
|
4469
4562
|
LoadError,
|
|
4470
4563
|
NotFoundError,
|
|
4564
|
+
TAG_BADGE_CLASS,
|
|
4565
|
+
EntityTagBadges,
|
|
4471
4566
|
MUX_STREAM_ORIGIN,
|
|
4472
4567
|
MUX_IMAGE_ORIGIN,
|
|
4473
4568
|
useVideoOriginPreconnect,
|
|
@@ -4476,4 +4571,4 @@ export {
|
|
|
4476
4571
|
SearchInput,
|
|
4477
4572
|
FilterPillRow
|
|
4478
4573
|
};
|
|
4479
|
-
//# sourceMappingURL=chunk-
|
|
4574
|
+
//# sourceMappingURL=chunk-ICOMPUMX.js.map
|