@flamingo-stack/openframe-frontend-core 0.0.190 → 0.0.191
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-B63T5HEJ.cjs → chunk-LVBPFEK2.cjs} +89 -65
- package/dist/chunk-LVBPFEK2.cjs.map +1 -0
- package/dist/{chunk-6RHO5QK3.js → chunk-QAXTP73H.js} +133 -109
- package/dist/chunk-QAXTP73H.js.map +1 -0
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +30 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +2 -2
- package/dist/components/index.js +1 -1
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/shared/product-release/product-release-card.d.ts +35 -2
- package/dist/components/shared/product-release/product-release-card.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/chat-message-enhanced.tsx +28 -33
- package/src/components/chat/chat-message-list.tsx +3 -0
- package/src/components/chat/types/component.types.ts +30 -0
- package/src/components/shared/product-release/product-release-card.tsx +144 -30
- package/dist/chunk-6RHO5QK3.js.map +0 -1
- package/dist/chunk-B63T5HEJ.cjs.map +0 -1
|
@@ -5110,7 +5110,7 @@ function normalizeContent(content) {
|
|
|
5110
5110
|
return content;
|
|
5111
5111
|
}
|
|
5112
5112
|
var ChatMessageEnhanced = forwardRef20(
|
|
5113
|
-
({ className, role, content, name, avatar, isTyping = false, timestamp, showAvatar = true, assistantType, authorType: authorTypeProp, assistantIcon, chatRefs, renderEntityCard, ...props }, ref) => {
|
|
5113
|
+
({ className, role, content, name, avatar, isTyping = false, timestamp, showAvatar = true, assistantType, authorType: authorTypeProp, assistantIcon, chatRefs, renderEntityCard, NavLinkAnchor, ...props }, ref) => {
|
|
5114
5114
|
const isUser = role === "user";
|
|
5115
5115
|
const isError = role === "error";
|
|
5116
5116
|
const authorType = authorTypeProp ?? (isUser ? "user" : assistantType === "mingo" ? "mingo" : "fae");
|
|
@@ -5194,30 +5194,13 @@ var ChatMessageEnhanced = forwardRef20(
|
|
|
5194
5194
|
return /* @__PURE__ */ jsx30("span", { className: "text-ods-text-primary", children: fallbackTitle });
|
|
5195
5195
|
}
|
|
5196
5196
|
}
|
|
5197
|
-
|
|
5198
|
-
|
|
5199
|
-
if (typeof href === "string" && href.length > 0 && !isAnchorOnly && !(href.startsWith("/") && !href.startsWith("//")) && typeof window !== "undefined") {
|
|
5200
|
-
try {
|
|
5201
|
-
const u = new URL(href, window.location.origin);
|
|
5202
|
-
isCrossOrigin = u.origin !== window.location.origin;
|
|
5203
|
-
} catch {
|
|
5204
|
-
isCrossOrigin = false;
|
|
5205
|
-
}
|
|
5197
|
+
if (typeof href === "string" && NavLinkAnchor && !href.startsWith("#")) {
|
|
5198
|
+
return /* @__PURE__ */ jsx30(NavLinkAnchor, { href, className: linkClassName, ...rest, children });
|
|
5206
5199
|
}
|
|
5207
|
-
return /* @__PURE__ */ jsx30(
|
|
5208
|
-
"a",
|
|
5209
|
-
{
|
|
5210
|
-
href,
|
|
5211
|
-
className: linkClassName,
|
|
5212
|
-
target: isCrossOrigin ? "_blank" : void 0,
|
|
5213
|
-
rel: isCrossOrigin ? "noopener noreferrer" : void 0,
|
|
5214
|
-
...rest,
|
|
5215
|
-
children
|
|
5216
|
-
}
|
|
5217
|
-
);
|
|
5200
|
+
return /* @__PURE__ */ jsx30("a", { href, className: linkClassName, ...rest, children });
|
|
5218
5201
|
}
|
|
5219
5202
|
};
|
|
5220
|
-
}, [hasMarkerSupport, chatRefs, renderingPlan]);
|
|
5203
|
+
}, [hasMarkerSupport, chatRefs, renderingPlan, NavLinkAnchor]);
|
|
5221
5204
|
const getAvatarProps = () => {
|
|
5222
5205
|
const displayName = name || (isUser ? "User" : assistantType === "mingo" ? "Mingo" : "Fae");
|
|
5223
5206
|
const initials = displayName.split(" ").map((n) => n[0]).join("").toUpperCase();
|
|
@@ -5369,7 +5352,7 @@ var MemoizedChatMessageEnhanced = memo2(ChatMessageEnhanced, (prevProps, nextPro
|
|
|
5369
5352
|
// re-use the same Record instance per turn; mutations create a new map.
|
|
5370
5353
|
// Without this check, a parent re-render with a new (but equivalent)
|
|
5371
5354
|
// refs object would force a full markdown re-render every keystroke.
|
|
5372
|
-
prevProps.chatRefs === nextProps.chatRefs && prevProps.renderEntityCard === nextProps.renderEntityCard;
|
|
5355
|
+
prevProps.chatRefs === nextProps.chatRefs && prevProps.renderEntityCard === nextProps.renderEntityCard && prevProps.NavLinkAnchor === nextProps.NavLinkAnchor;
|
|
5373
5356
|
});
|
|
5374
5357
|
MemoizedChatMessageEnhanced.displayName = "MemoizedChatMessageEnhanced";
|
|
5375
5358
|
|
|
@@ -5569,6 +5552,7 @@ var ChatMessageList = forwardRef21(
|
|
|
5569
5552
|
isFetchingNextPage,
|
|
5570
5553
|
onLoadMore,
|
|
5571
5554
|
renderEntityCard,
|
|
5555
|
+
NavLinkAnchor,
|
|
5572
5556
|
...props
|
|
5573
5557
|
}, ref) => {
|
|
5574
5558
|
const { scrollRef, contentRef, scrollToBottom } = useStickToBottom({
|
|
@@ -5713,7 +5697,8 @@ var ChatMessageList = forwardRef21(
|
|
|
5713
5697
|
authorType: message.authorType,
|
|
5714
5698
|
assistantIcon: message.role !== "user" ? assistantIcon : void 0,
|
|
5715
5699
|
chatRefs: message.chatRefs,
|
|
5716
|
-
renderEntityCard
|
|
5700
|
+
renderEntityCard,
|
|
5701
|
+
NavLinkAnchor
|
|
5717
5702
|
},
|
|
5718
5703
|
message.id
|
|
5719
5704
|
))
|
|
@@ -5752,6 +5737,7 @@ var ChatMessageList = forwardRef21(
|
|
|
5752
5737
|
showAvatar: showAvatars,
|
|
5753
5738
|
assistantType,
|
|
5754
5739
|
assistantIcon,
|
|
5740
|
+
NavLinkAnchor,
|
|
5755
5741
|
className: "py-3"
|
|
5756
5742
|
}
|
|
5757
5743
|
) })
|
|
@@ -16838,13 +16824,14 @@ function OnboardingWalkthrough({
|
|
|
16838
16824
|
// src/components/shared/product-release/product-release-card.tsx
|
|
16839
16825
|
init_cn();
|
|
16840
16826
|
import { ChevronRight as ChevronRight6, Package as Package3 } from "lucide-react";
|
|
16841
|
-
import { jsx as jsx138, jsxs as jsxs110 } from "react/jsx-runtime";
|
|
16827
|
+
import { Fragment as Fragment20, jsx as jsx138, jsxs as jsxs110 } from "react/jsx-runtime";
|
|
16842
16828
|
function ProductReleaseCard({
|
|
16843
16829
|
title,
|
|
16844
16830
|
summary,
|
|
16845
16831
|
version,
|
|
16846
16832
|
formattedDate,
|
|
16847
16833
|
onClick,
|
|
16834
|
+
anchorProps,
|
|
16848
16835
|
className,
|
|
16849
16836
|
size = "default"
|
|
16850
16837
|
}) {
|
|
@@ -16856,38 +16843,75 @@ function ProductReleaseCard({
|
|
|
16856
16843
|
onClick();
|
|
16857
16844
|
}
|
|
16858
16845
|
};
|
|
16859
|
-
|
|
16846
|
+
const isInteractive = !!anchorProps || !!onClick;
|
|
16847
|
+
const outerClassName = cn(
|
|
16848
|
+
// The base frame (`my-1.5 flex … no-underline`) mirrors the
|
|
16849
|
+
// hub's `COMPACT_CARD_OUTER` in `components/shared/compact-
|
|
16850
|
+
// card/compact-card-classes.ts` byte-for-byte. The OSS lib
|
|
16851
|
+
// can't import from the consumer, so the two strings are
|
|
16852
|
+
// kept identical by hand — if you edit one, edit the other.
|
|
16853
|
+
//
|
|
16854
|
+
// The interactive branch ADDS `cursor-pointer` + a focus-
|
|
16855
|
+
// visible ring. The `<a>` form would normally get focus styling
|
|
16856
|
+
// from the browser, but `no-underline` strips the default
|
|
16857
|
+
// affordance, so explicit ring styles match the `<span role>` form.
|
|
16858
|
+
"my-1.5 flex items-start gap-3 w-full p-2",
|
|
16859
|
+
"rounded-lg border border-ods-border bg-ods-card no-underline",
|
|
16860
|
+
isInteractive ? "transition-colors hover:border-ods-text-secondary/40 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card" : "cursor-default",
|
|
16861
|
+
className
|
|
16862
|
+
);
|
|
16863
|
+
const innerChildren = /* @__PURE__ */ jsxs110(Fragment20, { children: [
|
|
16864
|
+
/* @__PURE__ */ jsx138("span", { className: "flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center rounded-md bg-ods-bg text-ods-accent", children: /* @__PURE__ */ jsx138(Package3, { className: "h-5 w-5" }) }),
|
|
16865
|
+
/* @__PURE__ */ jsxs110("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14", children: [
|
|
16866
|
+
/* @__PURE__ */ jsxs110("span", { className: "flex items-center gap-2 min-w-0 h-5", children: [
|
|
16867
|
+
/* @__PURE__ */ jsx138("span", { className: "truncate text-sm font-semibold leading-5 text-ods-text-primary min-w-0", children: title }),
|
|
16868
|
+
version ? /* @__PURE__ */ jsx138("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 font-mono text-[10px] font-medium text-ods-accent", children: version }) : null
|
|
16869
|
+
] }),
|
|
16870
|
+
/* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary", children: formattedDate || "Product release" }) }),
|
|
16871
|
+
/* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary/80", children: summary || "\xA0" }) })
|
|
16872
|
+
] })
|
|
16873
|
+
] });
|
|
16874
|
+
if (anchorProps) {
|
|
16875
|
+
return /* @__PURE__ */ jsx138("a", { ...anchorProps, className: outerClassName, children: innerChildren });
|
|
16876
|
+
}
|
|
16877
|
+
return /* @__PURE__ */ jsx138(
|
|
16860
16878
|
"span",
|
|
16861
16879
|
{
|
|
16862
16880
|
role: onClick ? "button" : void 0,
|
|
16863
16881
|
tabIndex: onClick ? 0 : void 0,
|
|
16864
16882
|
onClick,
|
|
16865
16883
|
onKeyDown: onClick ? handleKey : void 0,
|
|
16884
|
+
className: outerClassName,
|
|
16885
|
+
children: innerChildren
|
|
16886
|
+
}
|
|
16887
|
+
);
|
|
16888
|
+
}
|
|
16889
|
+
if (anchorProps) {
|
|
16890
|
+
return /* @__PURE__ */ jsxs110(
|
|
16891
|
+
"a",
|
|
16892
|
+
{
|
|
16893
|
+
...anchorProps,
|
|
16866
16894
|
className: cn(
|
|
16867
|
-
|
|
16868
|
-
|
|
16869
|
-
|
|
16870
|
-
|
|
16871
|
-
|
|
16872
|
-
|
|
16873
|
-
|
|
16874
|
-
// visible ring because this outer is a `<span role="button">`
|
|
16875
|
-
// (not an `<a>`), so it needs explicit keyboard-focus
|
|
16876
|
-
// styling that the hub's anchor variants get for free.
|
|
16877
|
-
"my-1.5 flex items-start gap-3 w-full p-2",
|
|
16878
|
-
"rounded-lg border border-ods-border bg-ods-card no-underline",
|
|
16879
|
-
onClick ? "transition-colors hover:border-ods-text-secondary/40 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card" : "cursor-default",
|
|
16895
|
+
"bg-ods-card border border-ods-border rounded-[6px]",
|
|
16896
|
+
"flex flex-col md:flex-row",
|
|
16897
|
+
"items-start md:items-center",
|
|
16898
|
+
"gap-3 md:gap-4",
|
|
16899
|
+
"p-4 no-underline",
|
|
16900
|
+
"transition-colors hover:border-ods-text-secondary/40",
|
|
16901
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card",
|
|
16880
16902
|
className
|
|
16881
16903
|
),
|
|
16882
16904
|
children: [
|
|
16883
|
-
/* @__PURE__ */
|
|
16884
|
-
|
|
16885
|
-
/* @__PURE__ */
|
|
16886
|
-
|
|
16887
|
-
|
|
16905
|
+
/* @__PURE__ */ jsxs110("div", { className: "flex-1 w-full md:w-auto min-w-0 flex flex-col justify-center gap-2", children: [
|
|
16906
|
+
/* @__PURE__ */ jsx138("div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ jsx138("h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] line-clamp-2", children: title }) }),
|
|
16907
|
+
/* @__PURE__ */ jsx138("p", { className: "text-h4 text-ods-text-secondary line-clamp-3", children: summary || " " })
|
|
16908
|
+
] }),
|
|
16909
|
+
/* @__PURE__ */ jsxs110("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", children: [
|
|
16910
|
+
/* @__PURE__ */ jsxs110("div", { className: "w-[200px] flex flex-col justify-center gap-2", children: [
|
|
16911
|
+
/* @__PURE__ */ jsx138("p", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] truncate", children: version }),
|
|
16912
|
+
/* @__PURE__ */ jsx138("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: formattedDate })
|
|
16888
16913
|
] }),
|
|
16889
|
-
/* @__PURE__ */ jsx138("
|
|
16890
|
-
/* @__PURE__ */ jsx138("span", { className: "flex items-center min-w-0 h-4", children: /* @__PURE__ */ jsx138("span", { className: "truncate text-[11px] leading-4 text-ods-text-secondary/80", children: summary || "\xA0" }) })
|
|
16914
|
+
/* @__PURE__ */ jsx138("div", { className: "flex items-center justify-center p-3 shrink-0", children: /* @__PURE__ */ jsx138(ChevronRight6, { className: "h-6 w-6 text-ods-text-primary" }) })
|
|
16891
16915
|
] })
|
|
16892
16916
|
]
|
|
16893
16917
|
}
|
|
@@ -17091,7 +17115,7 @@ function ReleaseChangelogSection({
|
|
|
17091
17115
|
import { useState as useState33, useEffect as useEffect25 } from "react";
|
|
17092
17116
|
import { ChevronLeft as ChevronLeft3, ChevronRight as ChevronRight7 } from "lucide-react";
|
|
17093
17117
|
import Image8 from "next/image";
|
|
17094
|
-
import { Fragment as
|
|
17118
|
+
import { Fragment as Fragment21, jsx as jsx143, jsxs as jsxs114 } from "react/jsx-runtime";
|
|
17095
17119
|
function ImageGalleryModal({
|
|
17096
17120
|
images,
|
|
17097
17121
|
isOpen,
|
|
@@ -17147,7 +17171,7 @@ function ImageGalleryModal({
|
|
|
17147
17171
|
onClose,
|
|
17148
17172
|
className: "max-w-[95vw]",
|
|
17149
17173
|
children: /* @__PURE__ */ jsxs114("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
17150
|
-
images.length > 1 && /* @__PURE__ */ jsxs114(
|
|
17174
|
+
images.length > 1 && /* @__PURE__ */ jsxs114(Fragment21, { children: [
|
|
17151
17175
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx143("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx143(
|
|
17152
17176
|
Button,
|
|
17153
17177
|
{
|
|
@@ -17226,7 +17250,7 @@ import Link3 from "next/link";
|
|
|
17226
17250
|
import React47, { useCallback as useCallback18, useState as useState34 } from "react";
|
|
17227
17251
|
init_cn();
|
|
17228
17252
|
init_button2();
|
|
17229
|
-
import { Fragment as
|
|
17253
|
+
import { Fragment as Fragment22, jsx as jsx144, jsxs as jsxs115 } from "react/jsx-runtime";
|
|
17230
17254
|
var ROW_CLASSES = "flex flex-1 min-w-0 items-center gap-2 px-3 py-3 cursor-pointer transition-colors bg-ods-bg outline-none";
|
|
17231
17255
|
var WRAPPER_CLASSES = "relative flex items-stretch border-b border-ods-border last:border-b-0";
|
|
17232
17256
|
var SECONDARY_ACTION_CLASSES = "flex w-10 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";
|
|
@@ -17328,7 +17352,7 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
17328
17352
|
"data-[state=open]:bg-[#2b2b2b] focus:bg-ods-bg-hover"
|
|
17329
17353
|
);
|
|
17330
17354
|
const renderAsLink = !!item.href && item.type !== "submenu" && item.type !== "checkbox";
|
|
17331
|
-
const rowContent = /* @__PURE__ */ jsxs115(
|
|
17355
|
+
const rowContent = /* @__PURE__ */ jsxs115(Fragment22, { children: [
|
|
17332
17356
|
item.icon && /* @__PURE__ */ jsx144(
|
|
17333
17357
|
"div",
|
|
17334
17358
|
{
|
|
@@ -17510,7 +17534,7 @@ var ActionsMenuDropdown = ({
|
|
|
17510
17534
|
|
|
17511
17535
|
// src/components/ui/page-actions.tsx
|
|
17512
17536
|
init_button2();
|
|
17513
|
-
import { Fragment as
|
|
17537
|
+
import { Fragment as Fragment23, jsx as jsx145, jsxs as jsxs116 } from "react/jsx-runtime";
|
|
17514
17538
|
function actionKey(action, idx) {
|
|
17515
17539
|
return `${action.label ?? action.ariaLabel ?? "action"}-${idx}`;
|
|
17516
17540
|
}
|
|
@@ -17641,7 +17665,7 @@ function IconButtonsVariant({
|
|
|
17641
17665
|
const isSingleAction = actions.length === 1 && !actions[0].submenu?.length;
|
|
17642
17666
|
const singleAction = isSingleAction ? actions[0] : null;
|
|
17643
17667
|
const useSingleActionMobile = isSingleAction && !hasMenuActions;
|
|
17644
|
-
return /* @__PURE__ */ jsxs116(
|
|
17668
|
+
return /* @__PURE__ */ jsxs116(Fragment23, { children: [
|
|
17645
17669
|
/* @__PURE__ */ jsxs116("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
17646
17670
|
selector,
|
|
17647
17671
|
desktopActions.map((action, idx) => /* @__PURE__ */ jsx145(React48.Fragment, { children: renderActionButton(action) }, actionKey(action, idx))),
|
|
@@ -17668,7 +17692,7 @@ function PrimaryButtonsVariant({
|
|
|
17668
17692
|
return 0;
|
|
17669
17693
|
});
|
|
17670
17694
|
const desktopActions = sortedActions.filter((a) => !a.showOnlyMobile);
|
|
17671
|
-
return /* @__PURE__ */ jsxs116(
|
|
17695
|
+
return /* @__PURE__ */ jsxs116(Fragment23, { children: [
|
|
17672
17696
|
/* @__PURE__ */ jsx145("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: desktopActions.map((action, idx) => /* @__PURE__ */ jsx145(React48.Fragment, { children: renderActionButton(action) }, `desktop-${actionKey(action, idx)}`)) }),
|
|
17673
17697
|
/* @__PURE__ */ jsx145(MobileBottomActions, { actions: sortedActions })
|
|
17674
17698
|
] });
|
|
@@ -17681,7 +17705,7 @@ function MenuPrimaryVariant({
|
|
|
17681
17705
|
}) {
|
|
17682
17706
|
const desktopActions = actions.filter((a) => !a.showOnlyMobile);
|
|
17683
17707
|
const hasMenuActions = menuActions.some((g) => g.items.length > 0);
|
|
17684
|
-
return /* @__PURE__ */ jsxs116(
|
|
17708
|
+
return /* @__PURE__ */ jsxs116(Fragment23, { children: [
|
|
17685
17709
|
/* @__PURE__ */ jsxs116("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
17686
17710
|
selector,
|
|
17687
17711
|
hasMenuActions && /* @__PURE__ */ jsx145(ActionsMenuDropdown, { groups: menuActions }),
|
|
@@ -17969,7 +17993,7 @@ function DetailPageSkeleton({
|
|
|
17969
17993
|
}
|
|
17970
17994
|
|
|
17971
17995
|
// src/components/shared/product-release/release-detail-page.tsx
|
|
17972
|
-
import { Fragment as
|
|
17996
|
+
import { Fragment as Fragment24, jsx as jsx149, jsxs as jsxs120 } from "react/jsx-runtime";
|
|
17973
17997
|
function DefaultMarkdownRenderer({ content }) {
|
|
17974
17998
|
return /* @__PURE__ */ jsx149("div", { className: "whitespace-pre-wrap", children: content });
|
|
17975
17999
|
}
|
|
@@ -18136,7 +18160,7 @@ function ReleaseDetailPage({
|
|
|
18136
18160
|
srtContent: release?.srt_content,
|
|
18137
18161
|
captionsUrl: release?.captionsUrl
|
|
18138
18162
|
}
|
|
18139
|
-
) : /* @__PURE__ */ jsxs120(
|
|
18163
|
+
) : /* @__PURE__ */ jsxs120(Fragment24, { children: [
|
|
18140
18164
|
youtubeUrl && /* @__PURE__ */ jsx149(
|
|
18141
18165
|
Video2,
|
|
18142
18166
|
{
|
|
@@ -18244,7 +18268,7 @@ function ReleaseDetailPage({
|
|
|
18244
18268
|
(githubReleases?.length || knowledgeBaseLinks?.length || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ jsxs120("div", { className: "space-y-1 w-full", children: [
|
|
18245
18269
|
/* @__PURE__ */ jsx149("p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
|
|
18246
18270
|
/* @__PURE__ */ jsx149(Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ jsxs120("div", { className: "space-y-4", children: [
|
|
18247
|
-
githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx149(
|
|
18271
|
+
githubReleases && githubReleases.length > 0 && /* @__PURE__ */ jsx149(Fragment24, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ jsxs120("div", { className: "flex items-start gap-1", children: [
|
|
18248
18272
|
/* @__PURE__ */ jsx149(GitHubIcon, { className: "shrink-0", width: 24, height: 24, color: "var(--color-text-secondary)" }),
|
|
18249
18273
|
/* @__PURE__ */ jsx149("span", { className: "text-h4 text-ods-text-primary", children: "Github Release" }),
|
|
18250
18274
|
/* @__PURE__ */ jsx149(
|
|
@@ -18259,7 +18283,7 @@ function ReleaseDetailPage({
|
|
|
18259
18283
|
),
|
|
18260
18284
|
/* @__PURE__ */ jsx149(ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
|
|
18261
18285
|
] }, ghRelease.id)) }),
|
|
18262
|
-
knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx149(
|
|
18286
|
+
knowledgeBaseLinks && knowledgeBaseLinks.length > 0 && /* @__PURE__ */ jsx149(Fragment24, { children: knowledgeBaseLinks.map((linkObj) => {
|
|
18263
18287
|
const path = typeof linkObj === "string" ? linkObj : linkObj.kb_article_path;
|
|
18264
18288
|
const linkId = typeof linkObj === "string" ? path : linkObj.id || path;
|
|
18265
18289
|
return /* @__PURE__ */ jsxs120("div", { className: "flex items-start gap-1", children: [
|
|
@@ -20135,7 +20159,7 @@ function TabContent({
|
|
|
20135
20159
|
init_cn();
|
|
20136
20160
|
import { useState as useState40, useEffect as useEffect31, useMemo as useMemo14, useRef as useRef23, useCallback as useCallback20 } from "react";
|
|
20137
20161
|
import { useSearchParams as useSearchParams3, useRouter as useRouter5, usePathname as usePathname3 } from "next/navigation";
|
|
20138
|
-
import { Fragment as
|
|
20162
|
+
import { Fragment as Fragment25, jsx as jsx171, jsxs as jsxs139 } from "react/jsx-runtime";
|
|
20139
20163
|
function TabNavigation({
|
|
20140
20164
|
activeTab: controlledActiveTab,
|
|
20141
20165
|
onTabChange: controlledOnTabChange,
|
|
@@ -20222,7 +20246,7 @@ function TabNavigation({
|
|
|
20222
20246
|
}
|
|
20223
20247
|
return { background: c };
|
|
20224
20248
|
})();
|
|
20225
|
-
return /* @__PURE__ */ jsxs139(
|
|
20249
|
+
return /* @__PURE__ */ jsxs139(Fragment25, { children: [
|
|
20226
20250
|
/* @__PURE__ */ jsxs139("div", { className: cn("relative w-full", className), children: [
|
|
20227
20251
|
/* @__PURE__ */ jsx171("div", { ref: scrollRef, className: "flex gap-[var(--spacing-system-xxs)] items-center justify-start h-full overflow-x-auto overflow-y-hidden", children: tabs.map((tab) => {
|
|
20228
20252
|
const isActive = activeTab === tab.id;
|
|
@@ -20562,7 +20586,7 @@ function TagKeyValueFilter({
|
|
|
20562
20586
|
}
|
|
20563
20587
|
|
|
20564
20588
|
// src/components/ui/filter-modal.tsx
|
|
20565
|
-
import { Fragment as
|
|
20589
|
+
import { Fragment as Fragment26, jsx as jsx178, jsxs as jsxs144 } from "react/jsx-runtime";
|
|
20566
20590
|
function FilterModal({
|
|
20567
20591
|
isOpen,
|
|
20568
20592
|
onClose,
|
|
@@ -20638,7 +20662,7 @@ function FilterModal({
|
|
|
20638
20662
|
"flex-1 min-h-0 flex flex-col",
|
|
20639
20663
|
!isEmpty && "md:bg-ods-bg md:border md:border-ods-border md:rounded-md md:px-3"
|
|
20640
20664
|
),
|
|
20641
|
-
children: /* @__PURE__ */ jsx178("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3", children: isLoading ? /* @__PURE__ */ jsx178(
|
|
20665
|
+
children: /* @__PURE__ */ jsx178("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3", children: isLoading ? /* @__PURE__ */ jsx178(Fragment26, { children: [0, 1].map((group) => /* @__PURE__ */ jsxs144("div", { className: "flex flex-col gap-1", children: [
|
|
20642
20666
|
/* @__PURE__ */ jsx178(Skeleton, { className: "h-5 w-24" }),
|
|
20643
20667
|
/* @__PURE__ */ jsx178("div", { className: "rounded-md border border-ods-border overflow-hidden", children: [0, 1, 2].map((row) => /* @__PURE__ */ jsxs144(
|
|
20644
20668
|
"div",
|
|
@@ -20658,7 +20682,7 @@ function FilterModal({
|
|
|
20658
20682
|
/* @__PURE__ */ jsx178("p", { className: "text-h4", children: emptyStateTitle }),
|
|
20659
20683
|
/* @__PURE__ */ jsx178("p", { className: "text-h6", children: emptyStateDescription })
|
|
20660
20684
|
] })
|
|
20661
|
-
] }) : /* @__PURE__ */ jsxs144(
|
|
20685
|
+
] }) : /* @__PURE__ */ jsxs144(Fragment26, { children: [
|
|
20662
20686
|
sortConfig && sortConfig.columns.length > 0 && /* @__PURE__ */ jsxs144("div", { className: "flex flex-col gap-1", children: [
|
|
20663
20687
|
/* @__PURE__ */ jsx178("span", { className: "text-h5 text-ods-text-secondary", children: sortConfig.title || "Sort By" }),
|
|
20664
20688
|
/* @__PURE__ */ jsx178("div", { className: "rounded-md border border-ods-border overflow-hidden", children: sortConfig.columns.map((column) => /* @__PURE__ */ jsx178(
|
|
@@ -21320,7 +21344,7 @@ import {
|
|
|
21320
21344
|
safePolygon,
|
|
21321
21345
|
arrow
|
|
21322
21346
|
} from "@floating-ui/react";
|
|
21323
|
-
import { Fragment as
|
|
21347
|
+
import { Fragment as Fragment27, jsx as jsx189, jsxs as jsxs152 } from "react/jsx-runtime";
|
|
21324
21348
|
function parseColoredText(text) {
|
|
21325
21349
|
if (typeof text !== "string") return text;
|
|
21326
21350
|
const parts = [];
|
|
@@ -21345,7 +21369,7 @@ function parseColoredText(text) {
|
|
|
21345
21369
|
const remainingText = text.slice(lastIndex);
|
|
21346
21370
|
parts.push(/* @__PURE__ */ jsx189("span", { children: remainingText }, `text-${keyIndex++}`));
|
|
21347
21371
|
}
|
|
21348
|
-
return parts.length > 0 ? /* @__PURE__ */ jsx189(
|
|
21372
|
+
return parts.length > 0 ? /* @__PURE__ */ jsx189(Fragment27, { children: parts }) : text;
|
|
21349
21373
|
}
|
|
21350
21374
|
function FloatingTooltip({
|
|
21351
21375
|
content,
|
|
@@ -21397,7 +21421,7 @@ function FloatingTooltip({
|
|
|
21397
21421
|
bottom: "top",
|
|
21398
21422
|
left: "right"
|
|
21399
21423
|
}[placement.split("-")[0]];
|
|
21400
|
-
return /* @__PURE__ */ jsxs152(
|
|
21424
|
+
return /* @__PURE__ */ jsxs152(Fragment27, { children: [
|
|
21401
21425
|
/* @__PURE__ */ jsx189("div", { ref: refs.setReference, ...getReferenceProps(), children }),
|
|
21402
21426
|
/* @__PURE__ */ jsx189(FloatingPortal, { children: isOpen && /* @__PURE__ */ jsxs152(
|
|
21403
21427
|
"div",
|
|
@@ -21448,7 +21472,7 @@ function FloatingTooltip({
|
|
|
21448
21472
|
}
|
|
21449
21473
|
|
|
21450
21474
|
// src/components/ui/dashboard-info-card.tsx
|
|
21451
|
-
import { Fragment as
|
|
21475
|
+
import { Fragment as Fragment28, jsx as jsx190, jsxs as jsxs153 } from "react/jsx-runtime";
|
|
21452
21476
|
function DashboardInfoCard({
|
|
21453
21477
|
title,
|
|
21454
21478
|
value,
|
|
@@ -21462,7 +21486,7 @@ function DashboardInfoCard({
|
|
|
21462
21486
|
valueClassName
|
|
21463
21487
|
}) {
|
|
21464
21488
|
const formattedValue = typeof value === "number" ? value.toLocaleString() : value;
|
|
21465
|
-
const cardContent = /* @__PURE__ */ jsxs153(
|
|
21489
|
+
const cardContent = /* @__PURE__ */ jsxs153(Fragment28, { children: [
|
|
21466
21490
|
/* @__PURE__ */ jsxs153("div", { className: "flex-1 flex flex-col", children: [
|
|
21467
21491
|
/* @__PURE__ */ jsx190("p", { className: "text-h5 text-ods-text-secondary", children: title }),
|
|
21468
21492
|
/* @__PURE__ */ jsxs153("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
@@ -21681,7 +21705,7 @@ function DeviceCard({
|
|
|
21681
21705
|
|
|
21682
21706
|
// src/components/ui/device-card-compact.tsx
|
|
21683
21707
|
init_cn();
|
|
21684
|
-
import { Fragment as
|
|
21708
|
+
import { Fragment as Fragment29, jsx as jsx193, jsxs as jsxs156 } from "react/jsx-runtime";
|
|
21685
21709
|
function DeviceCardCompact({
|
|
21686
21710
|
deviceName,
|
|
21687
21711
|
organization,
|
|
@@ -21691,7 +21715,7 @@ function DeviceCardCompact({
|
|
|
21691
21715
|
const hasName = deviceName && deviceName !== "-" && deviceName !== "null";
|
|
21692
21716
|
const hasOrg = organization && organization !== "-" && organization !== "null";
|
|
21693
21717
|
if (!hasName && !hasOrg) {
|
|
21694
|
-
return /* @__PURE__ */ jsx193(
|
|
21718
|
+
return /* @__PURE__ */ jsx193(Fragment29, {});
|
|
21695
21719
|
}
|
|
21696
21720
|
return /* @__PURE__ */ jsxs156(
|
|
21697
21721
|
"div",
|
|
@@ -21970,7 +21994,7 @@ import React77 from "react";
|
|
|
21970
21994
|
init_cn();
|
|
21971
21995
|
import Link7 from "next/link";
|
|
21972
21996
|
init_button2();
|
|
21973
|
-
import { Fragment as
|
|
21997
|
+
import { Fragment as Fragment30, jsx as jsx198, jsxs as jsxs160 } from "react/jsx-runtime";
|
|
21974
21998
|
function MoreActionsMenu({
|
|
21975
21999
|
items,
|
|
21976
22000
|
align = "end",
|
|
@@ -22002,7 +22026,7 @@ function MoreActionsMenu({
|
|
|
22002
22026
|
className: "bg-ods-card border border-ods-border p-0 rounded-[4px] min-w-[200px]",
|
|
22003
22027
|
children: items.map((item, idx) => {
|
|
22004
22028
|
const itemClassName = "flex items-center gap-2 px-4 py-3 bg-ods-bg hover:bg-ods-bg-hover focus:bg-ods-bg-hover border-b border-ods-border last:border-b-0 rounded-none cursor-pointer data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed";
|
|
22005
|
-
const content = /* @__PURE__ */ jsxs160(
|
|
22029
|
+
const content = /* @__PURE__ */ jsxs160(Fragment30, { children: [
|
|
22006
22030
|
item.icon && /* @__PURE__ */ jsx198("div", { className: cn(item.danger ? "text-ods-error" : "text-ods-text-secondary", "[&_svg]:size-6 [&_svg]:shrink-0"), children: item.icon }),
|
|
22007
22031
|
/* @__PURE__ */ jsx198("span", { className: "font-medium text-[18px] leading-6 text-ods-text-primary", children: item.label })
|
|
22008
22032
|
] });
|
|
@@ -23201,7 +23225,7 @@ function getHideClasses(hideAt) {
|
|
|
23201
23225
|
}
|
|
23202
23226
|
|
|
23203
23227
|
// src/components/ui/table/table-header.tsx
|
|
23204
|
-
import { Fragment as
|
|
23228
|
+
import { Fragment as Fragment31, jsx as jsx213, jsxs as jsxs173 } from "react/jsx-runtime";
|
|
23205
23229
|
function TableHeader({
|
|
23206
23230
|
columns,
|
|
23207
23231
|
className,
|
|
@@ -23312,10 +23336,10 @@ function TableHeader({
|
|
|
23312
23336
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
23313
23337
|
),
|
|
23314
23338
|
onClick: () => handleSort(column),
|
|
23315
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs173(
|
|
23339
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs173(Fragment31, { children: [
|
|
23316
23340
|
column.renderHeader(),
|
|
23317
23341
|
getSortIcon(column)
|
|
23318
|
-
] }) : /* @__PURE__ */ jsxs173(
|
|
23342
|
+
] }) : /* @__PURE__ */ jsxs173(Fragment31, { children: [
|
|
23319
23343
|
/* @__PURE__ */ jsx213("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
23320
23344
|
getSortIcon(column)
|
|
23321
23345
|
] })
|
|
@@ -23370,7 +23394,7 @@ function TableCell({
|
|
|
23370
23394
|
|
|
23371
23395
|
// src/components/ui/table/table-skeleton.tsx
|
|
23372
23396
|
init_cn();
|
|
23373
|
-
import { Fragment as
|
|
23397
|
+
import { Fragment as Fragment32, jsx as jsx215, jsxs as jsxs174 } from "react/jsx-runtime";
|
|
23374
23398
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
23375
23399
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
23376
23400
|
function TableCardSkeleton({
|
|
@@ -23381,7 +23405,7 @@ function TableCardSkeleton({
|
|
|
23381
23405
|
className,
|
|
23382
23406
|
rowClassName
|
|
23383
23407
|
}) {
|
|
23384
|
-
return /* @__PURE__ */ jsx215(
|
|
23408
|
+
return /* @__PURE__ */ jsx215(Fragment32, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs174(
|
|
23385
23409
|
"div",
|
|
23386
23410
|
{
|
|
23387
23411
|
className: cn(
|
|
@@ -23536,7 +23560,7 @@ function TableRow({
|
|
|
23536
23560
|
}
|
|
23537
23561
|
|
|
23538
23562
|
// src/components/ui/table/table.tsx
|
|
23539
|
-
import { Fragment as
|
|
23563
|
+
import { Fragment as Fragment33, jsx as jsx217, jsxs as jsxs176 } from "react/jsx-runtime";
|
|
23540
23564
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
23541
23565
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
23542
23566
|
const result = [...columns];
|
|
@@ -23736,7 +23760,7 @@ function Table({
|
|
|
23736
23760
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
23737
23761
|
hasChevron: Boolean(rowHref)
|
|
23738
23762
|
}
|
|
23739
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx217(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs176(
|
|
23763
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx217(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs176(Fragment33, { children: [
|
|
23740
23764
|
data.map((item, index) => /* @__PURE__ */ jsx217(
|
|
23741
23765
|
TableRow,
|
|
23742
23766
|
{
|
|
@@ -24357,7 +24381,7 @@ function DataTableColumnFilter({
|
|
|
24357
24381
|
}
|
|
24358
24382
|
|
|
24359
24383
|
// src/components/ui/data-table/data-table-header.tsx
|
|
24360
|
-
import { Fragment as
|
|
24384
|
+
import { Fragment as Fragment34, jsx as jsx226, jsxs as jsxs183 } from "react/jsx-runtime";
|
|
24361
24385
|
function DataTableHeader({
|
|
24362
24386
|
className,
|
|
24363
24387
|
stickyHeader,
|
|
@@ -24451,7 +24475,7 @@ function HeaderLabel({ header }) {
|
|
|
24451
24475
|
if (typeof headerDef === "string") {
|
|
24452
24476
|
return /* @__PURE__ */ jsx226("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
|
|
24453
24477
|
}
|
|
24454
|
-
return /* @__PURE__ */ jsx226(
|
|
24478
|
+
return /* @__PURE__ */ jsx226(Fragment34, { children: flexRender(headerDef, header.getContext()) });
|
|
24455
24479
|
}
|
|
24456
24480
|
function SortIcon({ sorted }) {
|
|
24457
24481
|
if (sorted === "asc") return /* @__PURE__ */ jsx226(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -24509,7 +24533,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
24509
24533
|
|
|
24510
24534
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
24511
24535
|
init_cn();
|
|
24512
|
-
import { Fragment as
|
|
24536
|
+
import { Fragment as Fragment35, jsx as jsx228, jsxs as jsxs185 } from "react/jsx-runtime";
|
|
24513
24537
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
24514
24538
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
24515
24539
|
function DataTableSkeleton({
|
|
@@ -24520,7 +24544,7 @@ function DataTableSkeleton({
|
|
|
24520
24544
|
const table = useDataTableContext();
|
|
24521
24545
|
const columns = table.getVisibleFlatColumns();
|
|
24522
24546
|
const firstColumnId = columns[0]?.id;
|
|
24523
|
-
return /* @__PURE__ */ jsx228(
|
|
24547
|
+
return /* @__PURE__ */ jsx228(Fragment35, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs185(
|
|
24524
24548
|
"div",
|
|
24525
24549
|
{
|
|
24526
24550
|
className: cn(
|
|
@@ -24576,7 +24600,7 @@ function DataTableSkeleton({
|
|
|
24576
24600
|
}
|
|
24577
24601
|
|
|
24578
24602
|
// src/components/ui/data-table/data-table-row.tsx
|
|
24579
|
-
import { Fragment as
|
|
24603
|
+
import { Fragment as Fragment36, jsx as jsx229, jsxs as jsxs186 } from "react/jsx-runtime";
|
|
24580
24604
|
function DataTableRowImpl({
|
|
24581
24605
|
row,
|
|
24582
24606
|
onClick,
|
|
@@ -24648,7 +24672,7 @@ function CellContent({ children }) {
|
|
|
24648
24672
|
if (typeof children === "string" || typeof children === "number") {
|
|
24649
24673
|
return /* @__PURE__ */ jsx229("span", { className: "text-h4 text-ods-text-primary truncate", children });
|
|
24650
24674
|
}
|
|
24651
|
-
return /* @__PURE__ */ jsx229(
|
|
24675
|
+
return /* @__PURE__ */ jsx229(Fragment36, { children });
|
|
24652
24676
|
}
|
|
24653
24677
|
|
|
24654
24678
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -24723,7 +24747,7 @@ function DataTableBody({
|
|
|
24723
24747
|
|
|
24724
24748
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
24725
24749
|
import { useEffect as useEffect35, useRef as useRef29 } from "react";
|
|
24726
|
-
import { Fragment as
|
|
24750
|
+
import { Fragment as Fragment37, jsx as jsx231, jsxs as jsxs188 } from "react/jsx-runtime";
|
|
24727
24751
|
function DataTableInfiniteFooter({
|
|
24728
24752
|
hasNextPage,
|
|
24729
24753
|
isFetchingNextPage,
|
|
@@ -24747,7 +24771,7 @@ function DataTableInfiniteFooter({
|
|
|
24747
24771
|
observer.observe(sentinel);
|
|
24748
24772
|
return () => observer.disconnect();
|
|
24749
24773
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
24750
|
-
return /* @__PURE__ */ jsxs188(
|
|
24774
|
+
return /* @__PURE__ */ jsxs188(Fragment37, { children: [
|
|
24751
24775
|
isFetchingNextPage && /* @__PURE__ */ jsx231(DataTableSkeleton, { rows: skeletonRows }),
|
|
24752
24776
|
hasNextPage && /* @__PURE__ */ jsx231("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
24753
24777
|
] });
|
|
@@ -26253,7 +26277,7 @@ function FileUpload({
|
|
|
26253
26277
|
import * as React87 from "react";
|
|
26254
26278
|
import { Loader2 as Loader25 } from "lucide-react";
|
|
26255
26279
|
init_cn();
|
|
26256
|
-
import { Fragment as
|
|
26280
|
+
import { Fragment as Fragment39, jsx as jsx239, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
26257
26281
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
26258
26282
|
function formatSize(bytes) {
|
|
26259
26283
|
const mb = bytes / (1024 * 1024);
|
|
@@ -26379,7 +26403,7 @@ function ImageUploader({
|
|
|
26379
26403
|
!interactive && "opacity-60",
|
|
26380
26404
|
!hasImage && !interactive && "cursor-not-allowed"
|
|
26381
26405
|
),
|
|
26382
|
-
children: hasImage ? /* @__PURE__ */ jsxs196(
|
|
26406
|
+
children: hasImage ? /* @__PURE__ */ jsxs196(Fragment39, { children: [
|
|
26383
26407
|
/* @__PURE__ */ jsx239("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx239(
|
|
26384
26408
|
"img",
|
|
26385
26409
|
{
|
|
@@ -26416,7 +26440,7 @@ function ImageUploader({
|
|
|
26416
26440
|
)
|
|
26417
26441
|
] }),
|
|
26418
26442
|
loading && /* @__PURE__ */ jsx239("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
|
|
26419
|
-
] }) : loading ? /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs196(
|
|
26443
|
+
] }) : loading ? /* @__PURE__ */ jsx239(Loader25, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs196(Fragment39, { children: [
|
|
26420
26444
|
/* @__PURE__ */ jsx239("div", { className: "flex shrink-0 items-center justify-center rounded-full border border-ods-border bg-ods-card p-[var(--spacing-system-s)]", children: /* @__PURE__ */ jsx239(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
26421
26445
|
/* @__PURE__ */ jsxs196("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
26422
26446
|
/* @__PURE__ */ jsx239("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -26758,7 +26782,7 @@ init_cn();
|
|
|
26758
26782
|
// src/components/ui/ticket-note-card.tsx
|
|
26759
26783
|
import * as React89 from "react";
|
|
26760
26784
|
init_cn();
|
|
26761
|
-
import { Fragment as
|
|
26785
|
+
import { Fragment as Fragment40, jsx as jsx243, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
26762
26786
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
26763
26787
|
const [isEditing, setIsEditing] = React89.useState(false);
|
|
26764
26788
|
const [editText, setEditText] = React89.useState(note.text);
|
|
@@ -26832,7 +26856,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
26832
26856
|
children: /* @__PURE__ */ jsx243(XmarkIcon, { className: "size-5" })
|
|
26833
26857
|
}
|
|
26834
26858
|
)
|
|
26835
|
-
] }) : /* @__PURE__ */ jsxs200(
|
|
26859
|
+
] }) : /* @__PURE__ */ jsxs200(Fragment40, { children: [
|
|
26836
26860
|
/* @__PURE__ */ jsx243("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
26837
26861
|
/* @__PURE__ */ jsxs200("p", { className: "text-h6 text-ods-text-secondary truncate", children: [
|
|
26838
26862
|
note.authorName,
|
|
@@ -26932,7 +26956,7 @@ function TicketNotesSection({
|
|
|
26932
26956
|
}
|
|
26933
26957
|
|
|
26934
26958
|
// src/components/ui/ticket-info-section.tsx
|
|
26935
|
-
import { Fragment as
|
|
26959
|
+
import { Fragment as Fragment41, jsx as jsx245, jsxs as jsxs202 } from "react/jsx-runtime";
|
|
26936
26960
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
26937
26961
|
return /* @__PURE__ */ jsx245("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs202("div", { className: "flex flex-col justify-center", children: [
|
|
26938
26962
|
/* @__PURE__ */ jsxs202("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -27041,7 +27065,7 @@ function TicketInfoSection({
|
|
|
27041
27065
|
)
|
|
27042
27066
|
] })
|
|
27043
27067
|
] }),
|
|
27044
|
-
expanded && /* @__PURE__ */ jsxs202(
|
|
27068
|
+
expanded && /* @__PURE__ */ jsxs202(Fragment41, { children: [
|
|
27045
27069
|
createdAt && /* @__PURE__ */ jsx245("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx245(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
27046
27070
|
/* @__PURE__ */ jsxs202("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
27047
27071
|
description && /* @__PURE__ */ jsx245(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -29922,7 +29946,7 @@ SelectButton.displayName = "SelectButton";
|
|
|
29922
29946
|
import { useState as useState65 } from "react";
|
|
29923
29947
|
import { Globe as Globe3, ExternalLink as ExternalLink5, Upload as Upload5, X as X11, Loader2 as Loader29, Sparkles as Sparkles2 } from "lucide-react";
|
|
29924
29948
|
import Image14 from "next/image";
|
|
29925
|
-
import { Fragment as
|
|
29949
|
+
import { Fragment as Fragment42, jsx as jsx269, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
29926
29950
|
function SEOEditorPreview({
|
|
29927
29951
|
seoTitle,
|
|
29928
29952
|
seoDescription,
|
|
@@ -29971,7 +29995,7 @@ function SEOEditorPreview({
|
|
|
29971
29995
|
/* @__PURE__ */ jsxs221("div", { className: "space-y-2", children: [
|
|
29972
29996
|
/* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-2", children: [
|
|
29973
29997
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Title" }),
|
|
29974
|
-
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs221(
|
|
29998
|
+
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
29975
29999
|
/* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
29976
30000
|
/* @__PURE__ */ jsx269(Sparkles2, { className: "h-3 w-3" }),
|
|
29977
30001
|
"AI Generated"
|
|
@@ -30002,7 +30026,7 @@ function SEOEditorPreview({
|
|
|
30002
30026
|
/* @__PURE__ */ jsxs221("div", { className: "space-y-2", children: [
|
|
30003
30027
|
/* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-2", children: [
|
|
30004
30028
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Keywords" }),
|
|
30005
|
-
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs221(
|
|
30029
|
+
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
30006
30030
|
/* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30007
30031
|
/* @__PURE__ */ jsx269(Sparkles2, { className: "h-3 w-3" }),
|
|
30008
30032
|
"AI Generated"
|
|
@@ -30034,7 +30058,7 @@ function SEOEditorPreview({
|
|
|
30034
30058
|
/* @__PURE__ */ jsxs221("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
30035
30059
|
/* @__PURE__ */ jsxs221("div", { className: "flex items-center gap-2", children: [
|
|
30036
30060
|
/* @__PURE__ */ jsx269(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Description" }),
|
|
30037
|
-
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs221(
|
|
30061
|
+
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
30038
30062
|
/* @__PURE__ */ jsxs221(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
30039
30063
|
/* @__PURE__ */ jsx269(Sparkles2, { className: "h-3 w-3" }),
|
|
30040
30064
|
"AI Generated"
|
|
@@ -30108,7 +30132,7 @@ function SEOEditorPreview({
|
|
|
30108
30132
|
{
|
|
30109
30133
|
className: "h-full min-h-[280px] border-2 border-dashed border-ods-border rounded-lg flex flex-col items-center justify-center cursor-pointer hover:border-ods-accent transition-colors bg-ods-bg-hover",
|
|
30110
30134
|
onClick: () => onOgImageUpload && fileInputRef?.click(),
|
|
30111
|
-
children: isUploading ? /* @__PURE__ */ jsx269(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs221(
|
|
30135
|
+
children: isUploading ? /* @__PURE__ */ jsx269(Loader29, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs221(Fragment42, { children: [
|
|
30112
30136
|
/* @__PURE__ */ jsx269(Upload5, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
30113
30137
|
/* @__PURE__ */ jsx269("span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
|
|
30114
30138
|
] })
|
|
@@ -32230,7 +32254,7 @@ var DropdownMenuShortcut = ({
|
|
|
32230
32254
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
32231
32255
|
|
|
32232
32256
|
// src/components/features/policy-configuration-panel.tsx
|
|
32233
|
-
import { Fragment as
|
|
32257
|
+
import { Fragment as Fragment43, jsx as jsx293, jsxs as jsxs240 } from "react/jsx-runtime";
|
|
32234
32258
|
var approvalLevelOptions = [
|
|
32235
32259
|
{ value: "ALLOW", label: "Allow" },
|
|
32236
32260
|
{ value: "ASK_USER", label: "Ask User" },
|
|
@@ -32292,7 +32316,7 @@ var CategorySection = ({
|
|
|
32292
32316
|
onPolicyPermissionChange
|
|
32293
32317
|
}) => {
|
|
32294
32318
|
const { contentRef, height } = useAnimatedHeight(category.isExpanded);
|
|
32295
|
-
return /* @__PURE__ */ jsxs240(
|
|
32319
|
+
return /* @__PURE__ */ jsxs240(Fragment43, { children: [
|
|
32296
32320
|
/* @__PURE__ */ jsxs240(
|
|
32297
32321
|
"div",
|
|
32298
32322
|
{
|
|
@@ -32433,7 +32457,7 @@ init_button2();
|
|
|
32433
32457
|
init_cn();
|
|
32434
32458
|
import { getCountries as getCountries2 } from "libphonenumber-js";
|
|
32435
32459
|
import { useEffect as useEffect49, useState as useState70 } from "react";
|
|
32436
|
-
import { Fragment as
|
|
32460
|
+
import { Fragment as Fragment44, jsx as jsx294, jsxs as jsxs241 } from "react/jsx-runtime";
|
|
32437
32461
|
function WaitlistForm({
|
|
32438
32462
|
id = "waitlist-form",
|
|
32439
32463
|
className,
|
|
@@ -32575,7 +32599,7 @@ function WaitlistForm({
|
|
|
32575
32599
|
error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
|
|
32576
32600
|
disabled: isSubmitting,
|
|
32577
32601
|
label: smsCheckboxLabel,
|
|
32578
|
-
description: /* @__PURE__ */ jsxs241(
|
|
32602
|
+
description: /* @__PURE__ */ jsxs241(Fragment44, { children: [
|
|
32579
32603
|
consentText,
|
|
32580
32604
|
" View our ",
|
|
32581
32605
|
/* @__PURE__ */ jsx294(
|
|
@@ -32744,7 +32768,7 @@ import { CSS } from "@dnd-kit/utilities";
|
|
|
32744
32768
|
import Link11 from "next/link";
|
|
32745
32769
|
import * as React99 from "react";
|
|
32746
32770
|
init_cn();
|
|
32747
|
-
import { Fragment as
|
|
32771
|
+
import { Fragment as Fragment45, jsx as jsx296, jsxs as jsxs243 } from "react/jsx-runtime";
|
|
32748
32772
|
var PRIORITY_COLOR_CLASS = {
|
|
32749
32773
|
low: "text-ods-text-secondary",
|
|
32750
32774
|
medium: "text-ods-info",
|
|
@@ -32809,7 +32833,7 @@ function TicketCard({
|
|
|
32809
32833
|
] })
|
|
32810
32834
|
] }) : null
|
|
32811
32835
|
] }) : null;
|
|
32812
|
-
const body = /* @__PURE__ */ jsxs243(
|
|
32836
|
+
const body = /* @__PURE__ */ jsxs243(Fragment45, { children: [
|
|
32813
32837
|
/* @__PURE__ */ jsxs243("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
32814
32838
|
/* @__PURE__ */ jsxs243("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
32815
32839
|
/* @__PURE__ */ jsx296("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
@@ -32903,7 +32927,7 @@ var TicketCardSkeleton = React100.forwardRef(
|
|
|
32903
32927
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
32904
32928
|
|
|
32905
32929
|
// src/components/features/board/board-column.tsx
|
|
32906
|
-
import { Fragment as
|
|
32930
|
+
import { Fragment as Fragment46, jsx as jsx298, jsxs as jsxs245 } from "react/jsx-runtime";
|
|
32907
32931
|
function BoardColumn({
|
|
32908
32932
|
column,
|
|
32909
32933
|
collapsed = false,
|
|
@@ -32938,7 +32962,7 @@ function BoardColumn({
|
|
|
32938
32962
|
onAddTicket: !collapsed && onAddTicket ? () => onAddTicket(column.id) : void 0
|
|
32939
32963
|
}
|
|
32940
32964
|
),
|
|
32941
|
-
!collapsed && /* @__PURE__ */ jsxs245(
|
|
32965
|
+
!collapsed && /* @__PURE__ */ jsxs245(Fragment46, { children: [
|
|
32942
32966
|
/* @__PURE__ */ jsx298("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
32943
32967
|
/* @__PURE__ */ jsx298(
|
|
32944
32968
|
ColumnBody,
|
|
@@ -33026,7 +33050,7 @@ function SkeletonStack({ count = 4 }) {
|
|
|
33026
33050
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
33027
33051
|
[count]
|
|
33028
33052
|
);
|
|
33029
|
-
return /* @__PURE__ */ jsx298(
|
|
33053
|
+
return /* @__PURE__ */ jsx298(Fragment46, { children: keys.map((k) => /* @__PURE__ */ jsx298(TicketCardSkeleton, {}, k)) });
|
|
33030
33054
|
}
|
|
33031
33055
|
function EmptyState3() {
|
|
33032
33056
|
return /* @__PURE__ */ jsxs245("div", { className: "flex flex-1 flex-col items-center justify-center gap-[var(--spacing-system-lf)] p-[var(--spacing-system-lf)] text-center text-ods-text-secondary", children: [
|
|
@@ -33932,4 +33956,4 @@ export {
|
|
|
33932
33956
|
TMCG_SOCIAL_PLATFORMS,
|
|
33933
33957
|
assets
|
|
33934
33958
|
};
|
|
33935
|
-
//# sourceMappingURL=chunk-
|
|
33959
|
+
//# sourceMappingURL=chunk-QAXTP73H.js.map
|