@flamingo-stack/openframe-frontend-core 0.0.291 → 0.0.292
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-EL5GCMPU.cjs → chunk-2BMVBPC7.cjs} +9 -9
- package/dist/{chunk-EL5GCMPU.cjs.map → chunk-2BMVBPC7.cjs.map} +1 -1
- package/dist/{chunk-ZYBUFVQV.cjs → chunk-2NJ44RTT.cjs} +27 -27
- package/dist/{chunk-ZYBUFVQV.cjs.map → chunk-2NJ44RTT.cjs.map} +1 -1
- package/dist/{chunk-Z2EOXZBW.js → chunk-5FK7X3EE.js} +258 -159
- package/dist/chunk-5FK7X3EE.js.map +1 -0
- package/dist/{chunk-3SDBXXDP.cjs → chunk-5PELVUFT.cjs} +26 -26
- package/dist/{chunk-3SDBXXDP.cjs.map → chunk-5PELVUFT.cjs.map} +1 -1
- package/dist/{chunk-BVNYQDZE.cjs → chunk-5R5OODNE.cjs} +40 -40
- package/dist/{chunk-BVNYQDZE.cjs.map → chunk-5R5OODNE.cjs.map} +1 -1
- package/dist/{chunk-ODR6A6FC.js → chunk-6FHO73AP.js} +22 -10
- package/dist/{chunk-ODR6A6FC.js.map → chunk-6FHO73AP.js.map} +1 -1
- package/dist/{chunk-EGSAB76W.js → chunk-B2U6INNO.js} +3 -3
- package/dist/{chunk-RSIFEDZX.js → chunk-C667P6LZ.js} +5 -5
- package/dist/{chunk-VMRPM24G.cjs → chunk-CDJOKNCS.cjs} +17 -17
- package/dist/{chunk-VMRPM24G.cjs.map → chunk-CDJOKNCS.cjs.map} +1 -1
- package/dist/{chunk-7NM7DEUK.js → chunk-CUQH4SHH.js} +2 -2
- package/dist/{chunk-ZLN6SM2U.js → chunk-DUIWR7RQ.js} +3 -3
- package/dist/{chunk-AGRSALEN.js → chunk-E2YXRSDG.js} +5 -5
- package/dist/{chunk-Z4GAFSNM.cjs → chunk-FFP2A77V.cjs} +10 -10
- package/dist/{chunk-Z4GAFSNM.cjs.map → chunk-FFP2A77V.cjs.map} +1 -1
- package/dist/{chunk-D4R2MUPA.js → chunk-HTYUZXQP.js} +5 -5
- package/dist/{chunk-CSL3ECOF.js → chunk-IXDTNQF4.js} +3 -3
- package/dist/{chunk-I6ZPGKZ2.cjs → chunk-JC5RN7ZS.cjs} +6 -6
- package/dist/{chunk-I6ZPGKZ2.cjs.map → chunk-JC5RN7ZS.cjs.map} +1 -1
- package/dist/{chunk-2YSC3API.cjs → chunk-MDLWEJAV.cjs} +1060 -961
- package/dist/chunk-MDLWEJAV.cjs.map +1 -0
- package/dist/{chunk-R2KT5GDD.js → chunk-N45M3TK3.js} +14 -4
- package/dist/chunk-N45M3TK3.js.map +1 -0
- package/dist/{chunk-EI4WALN2.cjs → chunk-OXOTKEYY.cjs} +39 -29
- package/dist/chunk-OXOTKEYY.cjs.map +1 -0
- package/dist/{chunk-6BWZFRUG.cjs → chunk-PZZGDS5I.cjs} +17 -17
- package/dist/{chunk-6BWZFRUG.cjs.map → chunk-PZZGDS5I.cjs.map} +1 -1
- package/dist/{chunk-VRSXJ5QJ.js → chunk-SLP4KXP6.js} +3 -2
- package/dist/chunk-SLP4KXP6.js.map +1 -0
- package/dist/{chunk-7EYWERFT.js → chunk-VK4B6UGU.js} +4 -4
- package/dist/{chunk-D6RK5YXX.cjs → chunk-Z6BK4XHH.cjs} +22 -10
- package/dist/chunk-Z6BK4XHH.cjs.map +1 -0
- package/dist/{chunk-Y4JNA4W6.cjs → chunk-ZHNL2IPK.cjs} +3 -2
- package/dist/chunk-ZHNL2IPK.cjs.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/embeddable-chat.d.ts +15 -0
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-realtime-chunk-processor.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +7 -5
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.d.ts +1 -0
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +6 -4
- package/dist/components/chat/remark-mention-chips.d.ts +30 -0
- package/dist/components/chat/remark-mention-chips.d.ts.map +1 -0
- package/dist/components/chat/types/api.types.d.ts +4 -0
- package/dist/components/chat/types/api.types.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +24 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/chat/types/context-item.types.d.ts +5 -0
- package/dist/components/chat/types/context-item.types.d.ts.map +1 -1
- package/dist/components/chat/types/processing.types.d.ts +4 -0
- package/dist/components/chat/types/processing.types.d.ts.map +1 -1
- package/dist/components/chat/utils/chunk-parser.d.ts.map +1 -1
- package/dist/components/chat/utils/nav-anchor-props.d.ts +8 -3
- package/dist/components/chat/utils/nav-anchor-props.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +6 -6
- package/dist/components/contact/index.js +5 -5
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +6 -6
- package/dist/components/embeds/index.js +5 -5
- package/dist/components/faq/index.cjs +6 -6
- package/dist/components/faq/index.js +5 -5
- package/dist/components/features/index.cjs +5 -5
- package/dist/components/features/index.js +4 -4
- package/dist/components/index.cjs +178 -176
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +13 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +5 -5
- package/dist/components/navigation/index.js +4 -4
- package/dist/components/onboarding-guides/index.cjs +24 -24
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/related-content/index.js +5 -5
- package/dist/components/tickets/index.cjs +63 -63
- package/dist/components/tickets/index.js +6 -6
- package/dist/components/ui/index.cjs +7 -5
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +6 -4
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/components/ui/tag.d.ts +10 -1
- package/dist/components/ui/tag.d.ts.map +1 -1
- package/dist/index.cjs +7 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -4
- package/dist/utils/index.cjs +21 -9
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js +21 -9
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/scroll-into-view.d.ts +12 -0
- package/dist/utils/scroll-into-view.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/chat-message-enhanced.tsx +71 -9
- package/src/components/chat/chat-message-list.tsx +2 -0
- package/src/components/chat/embeddable-chat.tsx +50 -6
- package/src/components/chat/hooks/use-realtime-chunk-processor.ts +1 -0
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/remark-mention-chips.ts +72 -0
- package/src/components/chat/types/api.types.ts +1 -1
- package/src/components/chat/types/component.types.ts +18 -0
- package/src/components/chat/types/context-item.types.ts +5 -0
- package/src/components/chat/types/processing.types.ts +8 -1
- package/src/components/chat/utils/chunk-parser.ts +11 -0
- package/src/components/chat/utils/nav-anchor-props.ts +22 -4
- package/src/components/chat/utils/process-historical-messages.ts +22 -0
- package/src/components/ui/simple-markdown-renderer.tsx +14 -11
- package/src/components/ui/tag.tsx +12 -2
- package/src/utils/scroll-into-view.ts +51 -9
- package/dist/chunk-2YSC3API.cjs.map +0 -1
- package/dist/chunk-D6RK5YXX.cjs.map +0 -1
- package/dist/chunk-EI4WALN2.cjs.map +0 -1
- package/dist/chunk-R2KT5GDD.js.map +0 -1
- package/dist/chunk-VRSXJ5QJ.js.map +0 -1
- package/dist/chunk-Y4JNA4W6.cjs.map +0 -1
- package/dist/chunk-Z2EOXZBW.js.map +0 -1
- /package/dist/{chunk-EGSAB76W.js.map → chunk-B2U6INNO.js.map} +0 -0
- /package/dist/{chunk-RSIFEDZX.js.map → chunk-C667P6LZ.js.map} +0 -0
- /package/dist/{chunk-7NM7DEUK.js.map → chunk-CUQH4SHH.js.map} +0 -0
- /package/dist/{chunk-ZLN6SM2U.js.map → chunk-DUIWR7RQ.js.map} +0 -0
- /package/dist/{chunk-AGRSALEN.js.map → chunk-E2YXRSDG.js.map} +0 -0
- /package/dist/{chunk-D4R2MUPA.js.map → chunk-HTYUZXQP.js.map} +0 -0
- /package/dist/{chunk-CSL3ECOF.js.map → chunk-IXDTNQF4.js.map} +0 -0
- /package/dist/{chunk-7EYWERFT.js.map → chunk-VK4B6UGU.js.map} +0 -0
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
rgbToHsl,
|
|
45
45
|
sanitizeTitleForChat,
|
|
46
46
|
validatePhoneNumber
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-6FHO73AP.js";
|
|
48
48
|
import {
|
|
49
49
|
ToolIcon,
|
|
50
50
|
dotColorByVariant,
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
useControllableState,
|
|
94
94
|
useEntityCardLink,
|
|
95
95
|
useEntityCardPlaceholder
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-N45M3TK3.js";
|
|
97
97
|
import {
|
|
98
98
|
COMPACT_CARD_ICON_SLOT,
|
|
99
99
|
COMPACT_CARD_IMAGE_SLOT,
|
|
@@ -133,7 +133,7 @@ import {
|
|
|
133
133
|
sourceRowCtxFromRuntime,
|
|
134
134
|
stripSameOriginToPath,
|
|
135
135
|
tagVariants
|
|
136
|
-
} from "./chunk-
|
|
136
|
+
} from "./chunk-SLP4KXP6.js";
|
|
137
137
|
import {
|
|
138
138
|
embedAuthedFetch,
|
|
139
139
|
getEmbedProxyAuth,
|
|
@@ -2673,6 +2673,46 @@ var remarkCardLinks = () => {
|
|
|
2673
2673
|
};
|
|
2674
2674
|
};
|
|
2675
2675
|
|
|
2676
|
+
// src/components/chat/remark-mention-chips.ts
|
|
2677
|
+
import { visit as visit2, SKIP as SKIP2 } from "unist-util-visit";
|
|
2678
|
+
var MENTION_REGEX = /(^|\s)@([a-z]+):([A-Za-z0-9_.+/=-]+)/g;
|
|
2679
|
+
var remarkMentionChips = () => {
|
|
2680
|
+
return (tree) => {
|
|
2681
|
+
visit2(tree, "text", (node, index, parent) => {
|
|
2682
|
+
if (!parent || typeof index !== "number") return;
|
|
2683
|
+
const text = node.value;
|
|
2684
|
+
if (!text || !text.includes("@")) return;
|
|
2685
|
+
const parts = [];
|
|
2686
|
+
let lastIndex = 0;
|
|
2687
|
+
MENTION_REGEX.lastIndex = 0;
|
|
2688
|
+
let match2;
|
|
2689
|
+
while ((match2 = MENTION_REGEX.exec(text)) !== null) {
|
|
2690
|
+
const lead = match2[1];
|
|
2691
|
+
const marker = match2[2];
|
|
2692
|
+
const id = match2[3];
|
|
2693
|
+
const tokenStart = match2.index + lead.length;
|
|
2694
|
+
if (tokenStart > lastIndex) {
|
|
2695
|
+
parts.push({ type: "text", value: text.slice(lastIndex, tokenStart) });
|
|
2696
|
+
}
|
|
2697
|
+
parts.push({
|
|
2698
|
+
type: "link",
|
|
2699
|
+
url: `mention://${marker}:${id}`,
|
|
2700
|
+
// Keep the raw token as the visible children so an unresolved mention
|
|
2701
|
+
// (no matching context item) falls back to the literal text.
|
|
2702
|
+
children: [{ type: "text", value: `@${marker}:${id}` }]
|
|
2703
|
+
});
|
|
2704
|
+
lastIndex = match2.index + match2[0].length;
|
|
2705
|
+
}
|
|
2706
|
+
if (lastIndex === 0) return;
|
|
2707
|
+
if (lastIndex < text.length) {
|
|
2708
|
+
parts.push({ type: "text", value: text.slice(lastIndex) });
|
|
2709
|
+
}
|
|
2710
|
+
parent.children.splice(index, 1, ...parts);
|
|
2711
|
+
return [SKIP2, index + parts.length];
|
|
2712
|
+
});
|
|
2713
|
+
};
|
|
2714
|
+
};
|
|
2715
|
+
|
|
2676
2716
|
// src/components/chat/entity-cards/block-card.tsx
|
|
2677
2717
|
function BlockCard(_props) {
|
|
2678
2718
|
return null;
|
|
@@ -3047,7 +3087,8 @@ function ChatContextChipStrip({
|
|
|
3047
3087
|
}
|
|
3048
3088
|
|
|
3049
3089
|
// src/components/chat/chat-message-enhanced.tsx
|
|
3050
|
-
import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3090
|
+
import { Fragment as Fragment4, jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3091
|
+
var MENTION_MARKER_REGEX = /(^|\s)@[a-z]+:([A-Za-z0-9_.+/=-]+)/g;
|
|
3051
3092
|
var CARD_MARKER_REGEX = /\[card:\/\/([a-zA-Z0-9_-]+):([a-zA-Z0-9_-]+)[\])]/g;
|
|
3052
3093
|
function normalizeContent(content) {
|
|
3053
3094
|
if (typeof content === "string") {
|
|
@@ -3056,16 +3097,33 @@ function normalizeContent(content) {
|
|
|
3056
3097
|
return content;
|
|
3057
3098
|
}
|
|
3058
3099
|
var ChatMessageEnhanced = forwardRef11(
|
|
3059
|
-
({ className, role, content, name, avatar, isTyping = false, timestamp, showAvatar = true, assistantType, authorType: authorTypeProp, assistantIcon, chatRefs, contextItems, resolveContextIcon, renderEntityCard, NavLinkAnchor, ...props }, ref) => {
|
|
3100
|
+
({ className, role, content, name, avatar, isTyping = false, timestamp, showAvatar = true, assistantType, authorType: authorTypeProp, assistantIcon, chatRefs, contextItems, resolveContextIcon, renderMention, renderEntityCard, NavLinkAnchor, ...props }, ref) => {
|
|
3060
3101
|
const isUser = role === "user";
|
|
3061
3102
|
const isError = role === "error";
|
|
3062
3103
|
const authorType = authorTypeProp ?? (isUser ? "user" : assistantType === "mingo" ? "mingo" : "fae");
|
|
3063
3104
|
const hasMarkerSupport = !!chatRefs || !!renderEntityCard;
|
|
3105
|
+
const segments = useMemo4(() => normalizeContent(content), [content]);
|
|
3106
|
+
const hasMentionSupport = !!renderMention;
|
|
3107
|
+
const inlineMentionIds = useMemo4(() => {
|
|
3108
|
+
const ids = /* @__PURE__ */ new Set();
|
|
3109
|
+
if (!hasMentionSupport) return ids;
|
|
3110
|
+
for (const seg of segments) {
|
|
3111
|
+
if (seg.type !== "text" || !seg.text || !seg.text.includes("@")) continue;
|
|
3112
|
+
for (const mm of seg.text.matchAll(MENTION_MARKER_REGEX)) ids.add(mm[2]);
|
|
3113
|
+
}
|
|
3114
|
+
return ids;
|
|
3115
|
+
}, [hasMentionSupport, segments]);
|
|
3116
|
+
const stripContextItems = useMemo4(
|
|
3117
|
+
() => inlineMentionIds.size > 0 && contextItems ? contextItems.filter((it) => !inlineMentionIds.has(it.id)) : contextItems,
|
|
3118
|
+
[contextItems, inlineMentionIds]
|
|
3119
|
+
);
|
|
3064
3120
|
const cardRemarkPlugins = useMemo4(
|
|
3065
|
-
() =>
|
|
3066
|
-
|
|
3121
|
+
() => [
|
|
3122
|
+
...hasMarkerSupport ? [remarkCardLinks] : [],
|
|
3123
|
+
...hasMentionSupport ? [remarkMentionChips] : []
|
|
3124
|
+
],
|
|
3125
|
+
[hasMarkerSupport, hasMentionSupport]
|
|
3067
3126
|
);
|
|
3068
|
-
const segments = useMemo4(() => normalizeContent(content), [content]);
|
|
3069
3127
|
const renderedCardNodeCache = useRef3(
|
|
3070
3128
|
/* @__PURE__ */ new Map()
|
|
3071
3129
|
);
|
|
@@ -3141,7 +3199,7 @@ var ChatMessageEnhanced = forwardRef11(
|
|
|
3141
3199
|
return { inlineByKey, partsBySegment };
|
|
3142
3200
|
}, [hasMarkerSupport, chatRefs, renderEntityCard, segments]);
|
|
3143
3201
|
const cardComponentOverrides = useMemo4(() => {
|
|
3144
|
-
if (!hasMarkerSupport) return void 0;
|
|
3202
|
+
if (!hasMarkerSupport && !hasMentionSupport) return void 0;
|
|
3145
3203
|
const refs = chatRefs ?? {};
|
|
3146
3204
|
const inlineByKey = renderingPlan?.inlineByKey;
|
|
3147
3205
|
return {
|
|
@@ -3151,6 +3209,15 @@ var ChatMessageEnhanced = forwardRef11(
|
|
|
3151
3209
|
// paragraph as siblings — the inline pill stays at the marker
|
|
3152
3210
|
// position. Other href schemes pass through unchanged.
|
|
3153
3211
|
a: ({ href, children, className: linkClassName, ...rest }) => {
|
|
3212
|
+
if (typeof href === "string" && href.startsWith("mention://")) {
|
|
3213
|
+
const stripped = href.slice("mention://".length);
|
|
3214
|
+
const sepIdx = stripped.indexOf(":");
|
|
3215
|
+
const marker = sepIdx === -1 ? stripped : stripped.slice(0, sepIdx);
|
|
3216
|
+
const id = sepIdx === -1 ? "" : stripped.slice(sepIdx + 1);
|
|
3217
|
+
const node = renderMention?.({ marker, id });
|
|
3218
|
+
if (node != null) return /* @__PURE__ */ jsx21(Fragment4, { children: node });
|
|
3219
|
+
return /* @__PURE__ */ jsx21("span", { className: "text-ods-text-secondary opacity-60", children });
|
|
3220
|
+
}
|
|
3154
3221
|
if (typeof href === "string" && href.startsWith("card://")) {
|
|
3155
3222
|
const stripped = href.slice("card://".length);
|
|
3156
3223
|
const sepIdx = stripped.lastIndexOf(":");
|
|
@@ -3173,7 +3240,7 @@ var ChatMessageEnhanced = forwardRef11(
|
|
|
3173
3240
|
return /* @__PURE__ */ jsx21("a", { href, className: linkClassName, ...rest, children });
|
|
3174
3241
|
}
|
|
3175
3242
|
};
|
|
3176
|
-
}, [hasMarkerSupport, chatRefs, renderingPlan, NavLinkAnchor]);
|
|
3243
|
+
}, [hasMarkerSupport, hasMentionSupport, renderMention, chatRefs, renderingPlan, NavLinkAnchor]);
|
|
3177
3244
|
const getAvatarProps = () => {
|
|
3178
3245
|
const displayName = name || (isUser ? "User" : assistantType === "mingo" ? "Mingo" : "Fae");
|
|
3179
3246
|
const isMingo = assistantType === "mingo";
|
|
@@ -3318,10 +3385,10 @@ var ChatMessageEnhanced = forwardRef11(
|
|
|
3318
3385
|
}
|
|
3319
3386
|
return null;
|
|
3320
3387
|
}) }),
|
|
3321
|
-
|
|
3388
|
+
stripContextItems && stripContextItems.length > 0 && /* @__PURE__ */ jsx21(
|
|
3322
3389
|
ChatContextChipStrip,
|
|
3323
3390
|
{
|
|
3324
|
-
items:
|
|
3391
|
+
items: stripContextItems,
|
|
3325
3392
|
resolveIcon: resolveContextIcon,
|
|
3326
3393
|
className: "mt-2"
|
|
3327
3394
|
}
|
|
@@ -3339,7 +3406,9 @@ var MemoizedChatMessageEnhanced = memo(ChatMessageEnhanced, (prevProps, nextProp
|
|
|
3339
3406
|
// refs object would force a full markdown re-render every keystroke.
|
|
3340
3407
|
prevProps.chatRefs === nextProps.chatRefs && // Reference equality — the host re-uses the same array instance per
|
|
3341
3408
|
// message (it's set once on the optimistic send and never mutated).
|
|
3342
|
-
prevProps.contextItems === nextProps.contextItems && prevProps.resolveContextIcon === nextProps.resolveContextIcon &&
|
|
3409
|
+
prevProps.contextItems === nextProps.contextItems && prevProps.resolveContextIcon === nextProps.resolveContextIcon && // Host keeps this stable (module const / useCallback), so reference
|
|
3410
|
+
// equality holds across streaming chunks.
|
|
3411
|
+
prevProps.renderMention === nextProps.renderMention && prevProps.renderEntityCard === nextProps.renderEntityCard && prevProps.NavLinkAnchor === nextProps.NavLinkAnchor;
|
|
3343
3412
|
});
|
|
3344
3413
|
MemoizedChatMessageEnhanced.displayName = "MemoizedChatMessageEnhanced";
|
|
3345
3414
|
|
|
@@ -3542,6 +3611,7 @@ var ChatMessageList = forwardRef12(
|
|
|
3542
3611
|
onLoadMore,
|
|
3543
3612
|
renderEntityCard,
|
|
3544
3613
|
resolveContextIcon,
|
|
3614
|
+
renderMention,
|
|
3545
3615
|
NavLinkAnchor,
|
|
3546
3616
|
...props
|
|
3547
3617
|
}, ref) => {
|
|
@@ -3767,6 +3837,7 @@ var ChatMessageList = forwardRef12(
|
|
|
3767
3837
|
chatRefs: message2.chatRefs,
|
|
3768
3838
|
contextItems: message2.contextItems,
|
|
3769
3839
|
resolveContextIcon,
|
|
3840
|
+
renderMention,
|
|
3770
3841
|
renderEntityCard,
|
|
3771
3842
|
NavLinkAnchor
|
|
3772
3843
|
},
|
|
@@ -4546,7 +4617,7 @@ function MingoChatHistory({
|
|
|
4546
4617
|
|
|
4547
4618
|
// src/components/chat/mingo-welcome.tsx
|
|
4548
4619
|
init_button2();
|
|
4549
|
-
import { Fragment as
|
|
4620
|
+
import { Fragment as Fragment5, jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
4550
4621
|
var DEFAULT_SUBTITLE = "Ready to help with your technical tasks. What can I do for you?";
|
|
4551
4622
|
var DEFAULT_FEATURE_CARDS = [
|
|
4552
4623
|
{
|
|
@@ -4660,7 +4731,7 @@ function MingoWelcome({
|
|
|
4660
4731
|
children: "Try again"
|
|
4661
4732
|
}
|
|
4662
4733
|
)
|
|
4663
|
-
] }) : isLoadingHistory ? /* @__PURE__ */ jsx32(MingoChatHistorySkeleton, {}) : /* @__PURE__ */ jsx32(
|
|
4734
|
+
] }) : isLoadingHistory ? /* @__PURE__ */ jsx32(MingoChatHistorySkeleton, {}) : /* @__PURE__ */ jsx32(Fragment5, { children: /* @__PURE__ */ jsxs28("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
|
|
4664
4735
|
/* @__PURE__ */ jsxs28(
|
|
4665
4736
|
"div",
|
|
4666
4737
|
{
|
|
@@ -5103,7 +5174,7 @@ var ModalFooter = React13.forwardRef(
|
|
|
5103
5174
|
ModalFooter.displayName = "ModalV2Footer";
|
|
5104
5175
|
|
|
5105
5176
|
// src/components/chat/mingo-chat-modals.tsx
|
|
5106
|
-
import { Fragment as
|
|
5177
|
+
import { Fragment as Fragment6, jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
5107
5178
|
var footerBtn = "flex-1 min-w-0 rounded-md px-[var(--spacing-system-m)] py-[var(--spacing-system-sf)] text-h3 transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent disabled:opacity-50 disabled:cursor-not-allowed";
|
|
5108
5179
|
var cancelBtn = cn(
|
|
5109
5180
|
footerBtn,
|
|
@@ -5194,7 +5265,7 @@ function ChatDialogModals({
|
|
|
5194
5265
|
setRestoreTarget,
|
|
5195
5266
|
onConfirmRestore
|
|
5196
5267
|
}) {
|
|
5197
|
-
return /* @__PURE__ */ jsxs32(
|
|
5268
|
+
return /* @__PURE__ */ jsxs32(Fragment6, { children: [
|
|
5198
5269
|
/* @__PURE__ */ jsx37(
|
|
5199
5270
|
RenameChatModal,
|
|
5200
5271
|
{
|
|
@@ -5303,7 +5374,7 @@ function ChatPanelHeaderMobile({
|
|
|
5303
5374
|
}
|
|
5304
5375
|
|
|
5305
5376
|
// src/components/chat/chat-panel-header.tsx
|
|
5306
|
-
import { Fragment as
|
|
5377
|
+
import { Fragment as Fragment7, jsx as jsx40, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
5307
5378
|
var COMPACT_HEADER_BUTTON = "inline-flex shrink-0 items-center justify-center size-8 rounded-md text-ods-text-secondary transition-colors hover:bg-ods-bg-hover hover:text-ods-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent";
|
|
5308
5379
|
function ChatPanelHeader({
|
|
5309
5380
|
showBack = false,
|
|
@@ -5321,7 +5392,7 @@ function ChatPanelHeader({
|
|
|
5321
5392
|
onRename && { id: "rename", label: "Rename chat", onClick: onRename },
|
|
5322
5393
|
onArchive && { id: "archive", label: "Archive chat", onClick: onArchive }
|
|
5323
5394
|
].filter(Boolean);
|
|
5324
|
-
return /* @__PURE__ */ jsxs34(
|
|
5395
|
+
return /* @__PURE__ */ jsxs34(Fragment7, { children: [
|
|
5325
5396
|
/* @__PURE__ */ jsx40(
|
|
5326
5397
|
ChatPanelHeaderMobile,
|
|
5327
5398
|
{
|
|
@@ -5339,7 +5410,7 @@ function ChatPanelHeader({
|
|
|
5339
5410
|
}
|
|
5340
5411
|
),
|
|
5341
5412
|
/* @__PURE__ */ jsxs34("div", { className: "hidden md:flex flex-shrink-0 h-14 w-full overflow-hidden border-b border-ods-border bg-ods-card", children: [
|
|
5342
|
-
/* @__PURE__ */ jsx40("div", { className: "flex flex-1 min-w-0 items-center gap-2 px-4 py-3", children: showBack ? /* @__PURE__ */ jsxs34(
|
|
5413
|
+
/* @__PURE__ */ jsx40("div", { className: "flex flex-1 min-w-0 items-center gap-2 px-4 py-3", children: showBack ? /* @__PURE__ */ jsxs34(Fragment7, { children: [
|
|
5343
5414
|
/* @__PURE__ */ jsx40(
|
|
5344
5415
|
"button",
|
|
5345
5416
|
{
|
|
@@ -5375,7 +5446,7 @@ import * as React18 from "react";
|
|
|
5375
5446
|
import { useEffect as useEffect10, useRef as useRef9, useState as useState17 } from "react";
|
|
5376
5447
|
init_button2();
|
|
5377
5448
|
init_cn();
|
|
5378
|
-
import { Fragment as
|
|
5449
|
+
import { Fragment as Fragment8, jsx as jsx41, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
5379
5450
|
var CHAT_ATTACHMENT_MIME_TYPES = [
|
|
5380
5451
|
"image/jpeg",
|
|
5381
5452
|
"image/png",
|
|
@@ -5408,7 +5479,7 @@ function ChatAttachmentAddButton({
|
|
|
5408
5479
|
if (!canAddMore) return;
|
|
5409
5480
|
fileInputRef.current?.click();
|
|
5410
5481
|
};
|
|
5411
|
-
return /* @__PURE__ */ jsxs35(
|
|
5482
|
+
return /* @__PURE__ */ jsxs35(Fragment8, { children: [
|
|
5412
5483
|
/* @__PURE__ */ jsx41(
|
|
5413
5484
|
"input",
|
|
5414
5485
|
{
|
|
@@ -5870,7 +5941,7 @@ function ChatComposer({
|
|
|
5870
5941
|
}
|
|
5871
5942
|
|
|
5872
5943
|
// src/components/chat/chat-archive-page.tsx
|
|
5873
|
-
import { Fragment as
|
|
5944
|
+
import { Fragment as Fragment9, jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
5874
5945
|
function ChatArchivePage({
|
|
5875
5946
|
dialogs,
|
|
5876
5947
|
onSelectDialog,
|
|
@@ -5880,7 +5951,7 @@ function ChatArchivePage({
|
|
|
5880
5951
|
hasMore = false,
|
|
5881
5952
|
onLoadMore
|
|
5882
5953
|
}) {
|
|
5883
|
-
return /* @__PURE__ */ jsxs38(
|
|
5954
|
+
return /* @__PURE__ */ jsxs38(Fragment9, { children: [
|
|
5884
5955
|
/* @__PURE__ */ jsx45(
|
|
5885
5956
|
ChatPanelHeaderMobile,
|
|
5886
5957
|
{
|
|
@@ -6012,7 +6083,7 @@ var ChatSidebarSkeleton = React19.forwardRef(
|
|
|
6012
6083
|
ChatSidebarSkeleton.displayName = "ChatSidebarSkeleton";
|
|
6013
6084
|
|
|
6014
6085
|
// src/components/chat/chat-sidebar.tsx
|
|
6015
|
-
import { Fragment as
|
|
6086
|
+
import { Fragment as Fragment10, jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
6016
6087
|
var DialogListItem = forwardRef21(
|
|
6017
6088
|
({ className, dialog, isActive, onDialogSelect, onClick, ...props }, ref) => {
|
|
6018
6089
|
const handleClick = (e) => {
|
|
@@ -6141,7 +6212,7 @@ var ChatSidebar = forwardRef21(
|
|
|
6141
6212
|
},
|
|
6142
6213
|
dialog.id
|
|
6143
6214
|
)),
|
|
6144
|
-
hasNextPage && /* @__PURE__ */ jsx47("div", { ref: loadMoreRef, children: isFetchingNextPage && /* @__PURE__ */ jsxs40(
|
|
6215
|
+
hasNextPage && /* @__PURE__ */ jsx47("div", { ref: loadMoreRef, children: isFetchingNextPage && /* @__PURE__ */ jsxs40(Fragment10, { children: [
|
|
6145
6216
|
/* @__PURE__ */ jsx47(DialogListItemSkeleton, {}),
|
|
6146
6217
|
/* @__PURE__ */ jsx47(DialogListItemSkeleton, {}),
|
|
6147
6218
|
/* @__PURE__ */ jsx47(DialogListItemSkeleton, {})
|
|
@@ -6516,7 +6587,7 @@ function PlatformBadge({
|
|
|
6516
6587
|
}
|
|
6517
6588
|
|
|
6518
6589
|
// src/components/chat/entity-cards/admin-content-card.tsx
|
|
6519
|
-
import { Fragment as
|
|
6590
|
+
import { Fragment as Fragment11, jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
6520
6591
|
function AdminContentCard({
|
|
6521
6592
|
imageUrl,
|
|
6522
6593
|
placeholderUrl,
|
|
@@ -6550,7 +6621,7 @@ function AdminContentCard({
|
|
|
6550
6621
|
{
|
|
6551
6622
|
className: "relative aspect-[3/2] w-full overflow-hidden shrink-0",
|
|
6552
6623
|
style: { backgroundColor: imageBgColor },
|
|
6553
|
-
children: displayUrl ? /* @__PURE__ */ jsxs43(
|
|
6624
|
+
children: displayUrl ? /* @__PURE__ */ jsxs43(Fragment11, { children: [
|
|
6554
6625
|
!imageLoaded && /* @__PURE__ */ jsx53("div", { className: "absolute inset-0 animate-pulse bg-ods-border/20" }),
|
|
6555
6626
|
/* @__PURE__ */ jsx53(
|
|
6556
6627
|
next_image_default,
|
|
@@ -6610,7 +6681,7 @@ function getProxiedImageUrl2(imageUrl) {
|
|
|
6610
6681
|
}
|
|
6611
6682
|
|
|
6612
6683
|
// src/components/chat/entity-cards/what-i-shipped-card.tsx
|
|
6613
|
-
import { Fragment as
|
|
6684
|
+
import { Fragment as Fragment12, jsx as jsx54, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
6614
6685
|
var STATUS_BADGE_CLASS = {
|
|
6615
6686
|
published: "bg-ods-success-secondary text-ods-success",
|
|
6616
6687
|
draft: "bg-ods-warning-secondary text-ods-warning",
|
|
@@ -6632,7 +6703,7 @@ function WhatIShippedCard({ entry, placeholderUrl, actions, anchorProps, classNa
|
|
|
6632
6703
|
children: entry.status
|
|
6633
6704
|
}
|
|
6634
6705
|
) : null,
|
|
6635
|
-
meta: /* @__PURE__ */ jsxs44(
|
|
6706
|
+
meta: /* @__PURE__ */ jsxs44(Fragment12, { children: [
|
|
6636
6707
|
/* @__PURE__ */ jsxs44("span", { className: "flex items-center gap-2 min-w-0", children: [
|
|
6637
6708
|
entry.author?.avatar_url ? /* @__PURE__ */ jsx54("img", { src: getProxiedImageUrl2(entry.author.avatar_url) ?? entry.author.avatar_url, alt: "", className: "h-5 w-5 rounded-full object-cover shrink-0" }) : null,
|
|
6638
6709
|
/* @__PURE__ */ jsx54("span", { className: "truncate", children: entry.author?.full_name ?? "" })
|
|
@@ -6776,7 +6847,7 @@ import {
|
|
|
6776
6847
|
TrendingUp,
|
|
6777
6848
|
Wrench
|
|
6778
6849
|
} from "lucide-react";
|
|
6779
|
-
import { Fragment as
|
|
6850
|
+
import { Fragment as Fragment13, jsx as jsx57, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
6780
6851
|
function ProductReleaseCard({
|
|
6781
6852
|
title,
|
|
6782
6853
|
summary,
|
|
@@ -6827,7 +6898,7 @@ function ProductReleaseCard({
|
|
|
6827
6898
|
"no-underline",
|
|
6828
6899
|
className
|
|
6829
6900
|
);
|
|
6830
|
-
const innerLayout = /* @__PURE__ */ jsxs45(
|
|
6901
|
+
const innerLayout = /* @__PURE__ */ jsxs45(Fragment13, { children: [
|
|
6831
6902
|
/* @__PURE__ */ jsxs45("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
6832
6903
|
/* @__PURE__ */ jsx57("div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ jsxs45("div", { className: "relative rounded-lg overflow-hidden w-full aspect-[1200/630] bg-ods-bg", children: [
|
|
6833
6904
|
coverImage ? /* @__PURE__ */ jsx57(
|
|
@@ -6852,7 +6923,7 @@ function ProductReleaseCard({
|
|
|
6852
6923
|
/* @__PURE__ */ jsx57("div", { className: "min-h-[68px] md:min-h-[78px]", children: /* @__PURE__ */ jsx57("p", { className: "font-['DM_Sans'] text-sm md:text-base text-ods-text-secondary leading-relaxed line-clamp-3", children: summary ?? "" }) })
|
|
6853
6924
|
] })
|
|
6854
6925
|
] }),
|
|
6855
|
-
/* @__PURE__ */ jsx57("div", { className: "border-t border-ods-border pt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 font-['DM_Sans'] text-sm text-ods-text-secondary", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs45(
|
|
6926
|
+
/* @__PURE__ */ jsx57("div", { className: "border-t border-ods-border pt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 font-['DM_Sans'] text-sm text-ods-text-secondary", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs45(Fragment13, { children: [
|
|
6856
6927
|
changelogCounts.features > 0 && /* @__PURE__ */ jsxs45("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
6857
6928
|
/* @__PURE__ */ jsx57(Sparkles, { className: "w-3.5 h-3.5" }),
|
|
6858
6929
|
changelogCounts.features,
|
|
@@ -6985,7 +7056,7 @@ function ProductReleaseCard({
|
|
|
6985
7056
|
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",
|
|
6986
7057
|
className
|
|
6987
7058
|
);
|
|
6988
|
-
const innerChildren = /* @__PURE__ */ jsxs45(
|
|
7059
|
+
const innerChildren = /* @__PURE__ */ jsxs45(Fragment13, { children: [
|
|
6989
7060
|
/* @__PURE__ */ jsxs45("span", { className: "relative flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center overflow-hidden rounded-md bg-ods-bg text-ods-accent", children: [
|
|
6990
7061
|
coverImage ? /* @__PURE__ */ jsx57(
|
|
6991
7062
|
next_image_default,
|
|
@@ -7162,7 +7233,7 @@ function buildProductReleaseCardProps(item) {
|
|
|
7162
7233
|
import { useState as useState19 } from "react";
|
|
7163
7234
|
import { Eye as Eye2 } from "lucide-react";
|
|
7164
7235
|
init_cn();
|
|
7165
|
-
import { Fragment as
|
|
7236
|
+
import { Fragment as Fragment14, jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
7166
7237
|
function BlogCardSkeleton({ size = "default" }) {
|
|
7167
7238
|
if (size === "sm") {
|
|
7168
7239
|
return /* @__PURE__ */ jsxs47("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -7334,7 +7405,7 @@ function BlogCard({
|
|
|
7334
7405
|
) : null,
|
|
7335
7406
|
/* @__PURE__ */ jsxs47("span", { className: "truncate", children: [
|
|
7336
7407
|
post.author_name || "Anonymous",
|
|
7337
|
-
dateStr ? /* @__PURE__ */ jsxs47(
|
|
7408
|
+
dateStr ? /* @__PURE__ */ jsxs47(Fragment14, { children: [
|
|
7338
7409
|
" \xB7 ",
|
|
7339
7410
|
dateStr
|
|
7340
7411
|
] }) : null
|
|
@@ -7489,7 +7560,7 @@ function CaseStudyCard({
|
|
|
7489
7560
|
// src/components/chat/entity-cards/customer-interview-card.tsx
|
|
7490
7561
|
init_cn();
|
|
7491
7562
|
import { Video } from "lucide-react";
|
|
7492
|
-
import { Fragment as
|
|
7563
|
+
import { Fragment as Fragment15, jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
7493
7564
|
var hideOnError2 = (e) => {
|
|
7494
7565
|
;
|
|
7495
7566
|
e.currentTarget.style.display = "none";
|
|
@@ -7569,7 +7640,7 @@ function CustomerInterviewCard({
|
|
|
7569
7640
|
] });
|
|
7570
7641
|
}
|
|
7571
7642
|
return /* @__PURE__ */ jsx61("a", { href, target, rel, className: cn("block h-full", className), children: /* @__PURE__ */ jsxs49(Card, { className: "bg-ods-card border border-ods-border hover:border-ods-accent transition-colors p-6 flex flex-col gap-6 overflow-hidden", children: [
|
|
7572
|
-
/* @__PURE__ */ jsx61("div", { className: "w-full aspect-[1200/630] rounded-sm overflow-hidden bg-ods-bg shrink-0 relative", children: thumbnailUrl ? /* @__PURE__ */ jsxs49(
|
|
7643
|
+
/* @__PURE__ */ jsx61("div", { className: "w-full aspect-[1200/630] rounded-sm overflow-hidden bg-ods-bg shrink-0 relative", children: thumbnailUrl ? /* @__PURE__ */ jsxs49(Fragment15, { children: [
|
|
7573
7644
|
/* @__PURE__ */ jsx61(
|
|
7574
7645
|
"img",
|
|
7575
7646
|
{
|
|
@@ -7939,7 +8010,7 @@ import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
|
7939
8010
|
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
7940
8011
|
init_cn();
|
|
7941
8012
|
import { Loader2 } from "lucide-react";
|
|
7942
|
-
import { Fragment as
|
|
8013
|
+
import { Fragment as Fragment16, jsx as jsx66, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
7943
8014
|
var innerInputStyles = cn(
|
|
7944
8015
|
"flex-1 min-w-[60px] bg-transparent border-none outline-none",
|
|
7945
8016
|
"text-h4",
|
|
@@ -8375,7 +8446,7 @@ function AutocompleteInner(props, ref) {
|
|
|
8375
8446
|
}
|
|
8376
8447
|
}
|
|
8377
8448
|
),
|
|
8378
|
-
multiple && /* @__PURE__ */ jsxs52(
|
|
8449
|
+
multiple && /* @__PURE__ */ jsxs52(Fragment16, { children: [
|
|
8379
8450
|
/* @__PURE__ */ jsx66(
|
|
8380
8451
|
"span",
|
|
8381
8452
|
{
|
|
@@ -11739,7 +11810,7 @@ function TabContent({
|
|
|
11739
11810
|
init_next_navigation();
|
|
11740
11811
|
init_cn();
|
|
11741
11812
|
import { useState as useState29, useEffect as useEffect19, useMemo as useMemo11, useRef as useRef16, useCallback as useCallback12 } from "react";
|
|
11742
|
-
import { Fragment as
|
|
11813
|
+
import { Fragment as Fragment17, jsx as jsx97, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
11743
11814
|
function TabNavigation({
|
|
11744
11815
|
activeTab: controlledActiveTab,
|
|
11745
11816
|
onTabChange: controlledOnTabChange,
|
|
@@ -11826,7 +11897,7 @@ function TabNavigation({
|
|
|
11826
11897
|
}
|
|
11827
11898
|
return { background: c };
|
|
11828
11899
|
})();
|
|
11829
|
-
return /* @__PURE__ */ jsxs78(
|
|
11900
|
+
return /* @__PURE__ */ jsxs78(Fragment17, { children: [
|
|
11830
11901
|
/* @__PURE__ */ jsxs78("div", { className: cn("relative w-full", className), children: [
|
|
11831
11902
|
/* @__PURE__ */ jsx97("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) => {
|
|
11832
11903
|
const isActive = activeTab === tab.id;
|
|
@@ -12102,7 +12173,7 @@ function StatusIndicator({ status, label, href }) {
|
|
|
12102
12173
|
|
|
12103
12174
|
// src/components/ui/hover-dropdown.tsx
|
|
12104
12175
|
import { useState as useState31, useRef as useRef18, useCallback as useCallback13 } from "react";
|
|
12105
|
-
import { Fragment as
|
|
12176
|
+
import { Fragment as Fragment18, jsx as jsx102, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
12106
12177
|
function DefaultAnchor({
|
|
12107
12178
|
href,
|
|
12108
12179
|
className,
|
|
@@ -12128,7 +12199,7 @@ function HoverDropdown({
|
|
|
12128
12199
|
const hide = useCallback13(() => {
|
|
12129
12200
|
timeoutRef.current = setTimeout(() => setOpen(false), hideDelay);
|
|
12130
12201
|
}, [hideDelay]);
|
|
12131
|
-
if (items.length === 0) return /* @__PURE__ */ jsx102(
|
|
12202
|
+
if (items.length === 0) return /* @__PURE__ */ jsx102(Fragment18, { children });
|
|
12132
12203
|
const toggle = useCallback13((e) => {
|
|
12133
12204
|
e.stopPropagation();
|
|
12134
12205
|
clearTimeout(timeoutRef.current);
|
|
@@ -12175,7 +12246,7 @@ function HoverDropdown({
|
|
|
12175
12246
|
}
|
|
12176
12247
|
},
|
|
12177
12248
|
children: items.map((item, i) => {
|
|
12178
|
-
const content = /* @__PURE__ */ jsxs81(
|
|
12249
|
+
const content = /* @__PURE__ */ jsxs81(Fragment18, { children: [
|
|
12179
12250
|
item.icon && /* @__PURE__ */ jsx102("span", { className: "flex-shrink-0 [&_svg]:size-3.5", children: item.icon }),
|
|
12180
12251
|
/* @__PURE__ */ jsx102("span", { className: "truncate flex-1 min-w-0", children: item.label })
|
|
12181
12252
|
] });
|
|
@@ -12406,7 +12477,7 @@ function TagKeyValueFilter({
|
|
|
12406
12477
|
}
|
|
12407
12478
|
|
|
12408
12479
|
// src/components/ui/filter-modal.tsx
|
|
12409
|
-
import { Fragment as
|
|
12480
|
+
import { Fragment as Fragment19, jsx as jsx106, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
12410
12481
|
function FilterModal({
|
|
12411
12482
|
isOpen,
|
|
12412
12483
|
onClose,
|
|
@@ -12482,7 +12553,7 @@ function FilterModal({
|
|
|
12482
12553
|
"flex-1 min-h-0 flex flex-col",
|
|
12483
12554
|
!isEmpty && "md:bg-ods-bg md:border md:border-ods-border md:rounded-md md:px-3"
|
|
12484
12555
|
),
|
|
12485
|
-
children: /* @__PURE__ */ jsx106("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3", children: isLoading ? /* @__PURE__ */ jsx106(
|
|
12556
|
+
children: /* @__PURE__ */ jsx106("div", { className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3", children: isLoading ? /* @__PURE__ */ jsx106(Fragment19, { children: [0, 1].map((group) => /* @__PURE__ */ jsxs85("div", { className: "flex flex-col gap-1", children: [
|
|
12486
12557
|
/* @__PURE__ */ jsx106(Skeleton, { className: "h-5 w-24" }),
|
|
12487
12558
|
/* @__PURE__ */ jsx106("div", { className: "rounded-md border border-ods-border overflow-hidden", children: [0, 1, 2].map((row) => /* @__PURE__ */ jsxs85(
|
|
12488
12559
|
"div",
|
|
@@ -12502,7 +12573,7 @@ function FilterModal({
|
|
|
12502
12573
|
/* @__PURE__ */ jsx106("p", { className: "text-h4", children: emptyStateTitle }),
|
|
12503
12574
|
/* @__PURE__ */ jsx106("p", { className: "text-h6", children: emptyStateDescription })
|
|
12504
12575
|
] })
|
|
12505
|
-
] }) : /* @__PURE__ */ jsxs85(
|
|
12576
|
+
] }) : /* @__PURE__ */ jsxs85(Fragment19, { children: [
|
|
12506
12577
|
sortConfig && sortConfig.columns.length > 0 && /* @__PURE__ */ jsxs85("div", { className: "flex flex-col gap-1", children: [
|
|
12507
12578
|
/* @__PURE__ */ jsx106("span", { className: "text-h5 text-ods-text-secondary", children: sortConfig.title || "Sort By" }),
|
|
12508
12579
|
/* @__PURE__ */ jsx106("div", { className: "rounded-md border border-ods-border overflow-hidden", children: sortConfig.columns.map((column) => /* @__PURE__ */ jsx106(
|
|
@@ -13277,7 +13348,7 @@ import {
|
|
|
13277
13348
|
safePolygon,
|
|
13278
13349
|
arrow
|
|
13279
13350
|
} from "@floating-ui/react";
|
|
13280
|
-
import { Fragment as
|
|
13351
|
+
import { Fragment as Fragment20, jsx as jsx118, jsxs as jsxs93 } from "react/jsx-runtime";
|
|
13281
13352
|
function parseColoredText(text) {
|
|
13282
13353
|
if (typeof text !== "string") return text;
|
|
13283
13354
|
const parts = [];
|
|
@@ -13302,7 +13373,7 @@ function parseColoredText(text) {
|
|
|
13302
13373
|
const remainingText = text.slice(lastIndex);
|
|
13303
13374
|
parts.push(/* @__PURE__ */ jsx118("span", { children: remainingText }, `text-${keyIndex++}`));
|
|
13304
13375
|
}
|
|
13305
|
-
return parts.length > 0 ? /* @__PURE__ */ jsx118(
|
|
13376
|
+
return parts.length > 0 ? /* @__PURE__ */ jsx118(Fragment20, { children: parts }) : text;
|
|
13306
13377
|
}
|
|
13307
13378
|
function FloatingTooltip({
|
|
13308
13379
|
content,
|
|
@@ -13356,7 +13427,7 @@ function FloatingTooltip({
|
|
|
13356
13427
|
bottom: "top",
|
|
13357
13428
|
left: "right"
|
|
13358
13429
|
}[placement.split("-")[0]];
|
|
13359
|
-
return /* @__PURE__ */ jsxs93(
|
|
13430
|
+
return /* @__PURE__ */ jsxs93(Fragment20, { children: [
|
|
13360
13431
|
/* @__PURE__ */ jsx118("div", { ref: refs.setReference, ...getReferenceProps(), children }),
|
|
13361
13432
|
/* @__PURE__ */ jsx118(FloatingPortal, { children: isOpen && /* @__PURE__ */ jsxs93(
|
|
13362
13433
|
"div",
|
|
@@ -13407,7 +13478,7 @@ function FloatingTooltip({
|
|
|
13407
13478
|
}
|
|
13408
13479
|
|
|
13409
13480
|
// src/components/ui/dashboard-info-card.tsx
|
|
13410
|
-
import { Fragment as
|
|
13481
|
+
import { Fragment as Fragment21, jsx as jsx119, jsxs as jsxs94 } from "react/jsx-runtime";
|
|
13411
13482
|
function DashboardInfoCard({
|
|
13412
13483
|
title,
|
|
13413
13484
|
titleSlot,
|
|
@@ -13422,7 +13493,7 @@ function DashboardInfoCard({
|
|
|
13422
13493
|
valueClassName
|
|
13423
13494
|
}) {
|
|
13424
13495
|
const formattedValue = typeof value === "number" ? value.toLocaleString() : value;
|
|
13425
|
-
const cardContent = /* @__PURE__ */ jsxs94(
|
|
13496
|
+
const cardContent = /* @__PURE__ */ jsxs94(Fragment21, { children: [
|
|
13426
13497
|
/* @__PURE__ */ jsxs94("div", { className: "flex-1 flex flex-col", children: [
|
|
13427
13498
|
titleSlot ?? /* @__PURE__ */ jsx119("p", { className: "text-h5 text-ods-text-secondary", children: title }),
|
|
13428
13499
|
/* @__PURE__ */ jsxs94("div", { className: "flex items-center gap-[var(--spacing-system-xs)]", children: [
|
|
@@ -13640,7 +13711,7 @@ function DeviceCard({
|
|
|
13640
13711
|
|
|
13641
13712
|
// src/components/ui/device-card-compact.tsx
|
|
13642
13713
|
init_cn();
|
|
13643
|
-
import { Fragment as
|
|
13714
|
+
import { Fragment as Fragment22, jsx as jsx122, jsxs as jsxs97 } from "react/jsx-runtime";
|
|
13644
13715
|
function DeviceCardCompact({
|
|
13645
13716
|
deviceName,
|
|
13646
13717
|
organization,
|
|
@@ -13650,7 +13721,7 @@ function DeviceCardCompact({
|
|
|
13650
13721
|
const hasName = deviceName && deviceName !== "-" && deviceName !== "null";
|
|
13651
13722
|
const hasOrg = organization && organization !== "-" && organization !== "null";
|
|
13652
13723
|
if (!hasName && !hasOrg) {
|
|
13653
|
-
return /* @__PURE__ */ jsx122(
|
|
13724
|
+
return /* @__PURE__ */ jsx122(Fragment22, {});
|
|
13654
13725
|
}
|
|
13655
13726
|
return /* @__PURE__ */ jsxs97(
|
|
13656
13727
|
"div",
|
|
@@ -14064,7 +14135,7 @@ function DropdownButton({
|
|
|
14064
14135
|
init_next_link();
|
|
14065
14136
|
init_cn();
|
|
14066
14137
|
init_button2();
|
|
14067
|
-
import { Fragment as
|
|
14138
|
+
import { Fragment as Fragment23, jsx as jsx129, jsxs as jsxs102 } from "react/jsx-runtime";
|
|
14068
14139
|
function MoreActionsMenu({
|
|
14069
14140
|
items,
|
|
14070
14141
|
align = "end",
|
|
@@ -14102,7 +14173,7 @@ function MoreActionsMenu({
|
|
|
14102
14173
|
),
|
|
14103
14174
|
children: items.map((item, idx) => {
|
|
14104
14175
|
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";
|
|
14105
|
-
const content = /* @__PURE__ */ jsxs102(
|
|
14176
|
+
const content = /* @__PURE__ */ jsxs102(Fragment23, { children: [
|
|
14106
14177
|
item.icon && /* @__PURE__ */ jsx129("div", { className: cn(item.danger ? "text-ods-error" : "text-ods-text-secondary", "[&_svg]:size-6 [&_svg]:shrink-0"), children: item.icon }),
|
|
14107
14178
|
/* @__PURE__ */ jsx129("span", { className: "font-medium text-[18px] leading-6 text-ods-text-primary", children: item.label })
|
|
14108
14179
|
] });
|
|
@@ -17064,7 +17135,7 @@ SelectButton.displayName = "SelectButton";
|
|
|
17064
17135
|
// src/components/features/seo-editor-preview.tsx
|
|
17065
17136
|
import { useState as useState47 } from "react";
|
|
17066
17137
|
import { Globe as Globe2, ExternalLink as ExternalLink3, Upload as Upload3, X as X6, Loader2 as Loader25, Sparkles as Sparkles2 } from "lucide-react";
|
|
17067
|
-
import { Fragment as
|
|
17138
|
+
import { Fragment as Fragment24, jsx as jsx155, jsxs as jsxs121 } from "react/jsx-runtime";
|
|
17068
17139
|
function SEOEditorPreview({
|
|
17069
17140
|
seoTitle,
|
|
17070
17141
|
seoDescription,
|
|
@@ -17113,7 +17184,7 @@ function SEOEditorPreview({
|
|
|
17113
17184
|
/* @__PURE__ */ jsxs121("div", { className: "space-y-2", children: [
|
|
17114
17185
|
/* @__PURE__ */ jsxs121("div", { className: "flex items-center gap-2", children: [
|
|
17115
17186
|
/* @__PURE__ */ jsx155(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Title" }),
|
|
17116
|
-
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs121(
|
|
17187
|
+
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs121(Fragment24, { children: [
|
|
17117
17188
|
/* @__PURE__ */ jsxs121(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
17118
17189
|
/* @__PURE__ */ jsx155(Sparkles2, { className: "h-3 w-3" }),
|
|
17119
17190
|
"AI Generated"
|
|
@@ -17144,7 +17215,7 @@ function SEOEditorPreview({
|
|
|
17144
17215
|
/* @__PURE__ */ jsxs121("div", { className: "space-y-2", children: [
|
|
17145
17216
|
/* @__PURE__ */ jsxs121("div", { className: "flex items-center gap-2", children: [
|
|
17146
17217
|
/* @__PURE__ */ jsx155(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Keywords" }),
|
|
17147
|
-
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs121(
|
|
17218
|
+
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs121(Fragment24, { children: [
|
|
17148
17219
|
/* @__PURE__ */ jsxs121(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
17149
17220
|
/* @__PURE__ */ jsx155(Sparkles2, { className: "h-3 w-3" }),
|
|
17150
17221
|
"AI Generated"
|
|
@@ -17176,7 +17247,7 @@ function SEOEditorPreview({
|
|
|
17176
17247
|
/* @__PURE__ */ jsxs121("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
17177
17248
|
/* @__PURE__ */ jsxs121("div", { className: "flex items-center gap-2", children: [
|
|
17178
17249
|
/* @__PURE__ */ jsx155(Label, { className: "font-['DM_Sans'] text-[14px] font-medium text-ods-text-primary", children: "SEO Description" }),
|
|
17179
|
-
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs121(
|
|
17250
|
+
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs121(Fragment24, { children: [
|
|
17180
17251
|
/* @__PURE__ */ jsxs121(Badge, { variant: "secondary", className: "flex items-center gap-1", children: [
|
|
17181
17252
|
/* @__PURE__ */ jsx155(Sparkles2, { className: "h-3 w-3" }),
|
|
17182
17253
|
"AI Generated"
|
|
@@ -17250,7 +17321,7 @@ function SEOEditorPreview({
|
|
|
17250
17321
|
{
|
|
17251
17322
|
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",
|
|
17252
17323
|
onClick: () => onOgImageUpload && fileInputRef?.click(),
|
|
17253
|
-
children: isUploading ? /* @__PURE__ */ jsx155(Loader25, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs121(
|
|
17324
|
+
children: isUploading ? /* @__PURE__ */ jsx155(Loader25, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs121(Fragment24, { children: [
|
|
17254
17325
|
/* @__PURE__ */ jsx155(Upload3, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
17255
17326
|
/* @__PURE__ */ jsx155("span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
|
|
17256
17327
|
] })
|
|
@@ -19406,7 +19477,7 @@ var DropdownMenuShortcut = ({
|
|
|
19406
19477
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
19407
19478
|
|
|
19408
19479
|
// src/components/features/policy-configuration-panel.tsx
|
|
19409
|
-
import { Fragment as
|
|
19480
|
+
import { Fragment as Fragment25, jsx as jsx179, jsxs as jsxs140 } from "react/jsx-runtime";
|
|
19410
19481
|
var approvalLevelOptions = [
|
|
19411
19482
|
{ value: "ALLOW", label: "Allow" },
|
|
19412
19483
|
{ value: "ASK_USER", label: "Ask User" },
|
|
@@ -19468,7 +19539,7 @@ var CategorySection = ({
|
|
|
19468
19539
|
onPolicyPermissionChange
|
|
19469
19540
|
}) => {
|
|
19470
19541
|
const { contentRef, height } = useAnimatedHeight(category.isExpanded);
|
|
19471
|
-
return /* @__PURE__ */ jsxs140(
|
|
19542
|
+
return /* @__PURE__ */ jsxs140(Fragment25, { children: [
|
|
19472
19543
|
/* @__PURE__ */ jsxs140(
|
|
19473
19544
|
"div",
|
|
19474
19545
|
{
|
|
@@ -19711,7 +19782,7 @@ function CountryOption({ country }) {
|
|
|
19711
19782
|
init_cn();
|
|
19712
19783
|
import { getCountries } from "libphonenumber-js";
|
|
19713
19784
|
import { useEffect as useEffect35, useState as useState53 } from "react";
|
|
19714
|
-
import { Fragment as
|
|
19785
|
+
import { Fragment as Fragment26, jsx as jsx181, jsxs as jsxs142 } from "react/jsx-runtime";
|
|
19715
19786
|
function WaitlistForm({
|
|
19716
19787
|
id = "waitlist-form",
|
|
19717
19788
|
className,
|
|
@@ -19856,7 +19927,7 @@ function WaitlistForm({
|
|
|
19856
19927
|
error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
|
|
19857
19928
|
disabled: isSubmitting,
|
|
19858
19929
|
label: smsCheckboxLabel,
|
|
19859
|
-
description: /* @__PURE__ */ jsxs142(
|
|
19930
|
+
description: /* @__PURE__ */ jsxs142(Fragment26, { children: [
|
|
19860
19931
|
consentText,
|
|
19861
19932
|
" View our ",
|
|
19862
19933
|
/* @__PURE__ */ jsx181(
|
|
@@ -20234,7 +20305,7 @@ function NotificationTile({
|
|
|
20234
20305
|
}
|
|
20235
20306
|
|
|
20236
20307
|
// src/components/features/notifications/notification-drawer.tsx
|
|
20237
|
-
import { Fragment as
|
|
20308
|
+
import { Fragment as Fragment27, jsx as jsx184, jsxs as jsxs144 } from "react/jsx-runtime";
|
|
20238
20309
|
function NotificationDrawer({
|
|
20239
20310
|
className,
|
|
20240
20311
|
liveDurationMs,
|
|
@@ -20362,7 +20433,7 @@ function DrawerScrollList({
|
|
|
20362
20433
|
{
|
|
20363
20434
|
ref: scrollRef,
|
|
20364
20435
|
className: "flex flex-1 flex-col gap-[var(--spacing-system-xs)] overflow-y-auto px-[var(--spacing-system-m)]",
|
|
20365
|
-
children: isEmpty && !isLoadingMore ? /* @__PURE__ */ jsx184(EmptyState, {}) : /* @__PURE__ */ jsxs144(
|
|
20436
|
+
children: isEmpty && !isLoadingMore ? /* @__PURE__ */ jsx184(EmptyState, {}) : /* @__PURE__ */ jsxs144(Fragment27, { children: [
|
|
20366
20437
|
unreadNotifications.map((n) => {
|
|
20367
20438
|
const custom = renderTile?.(n, { onComplete, onSettle, liveDurationMs });
|
|
20368
20439
|
if (custom) return /* @__PURE__ */ jsx184("div", { children: custom }, n.id);
|
|
@@ -20384,7 +20455,7 @@ function DrawerScrollList({
|
|
|
20384
20455
|
);
|
|
20385
20456
|
}
|
|
20386
20457
|
function DrawerLoadingTiles() {
|
|
20387
|
-
return /* @__PURE__ */ jsxs144(
|
|
20458
|
+
return /* @__PURE__ */ jsxs144(Fragment27, { children: [
|
|
20388
20459
|
/* @__PURE__ */ jsx184(
|
|
20389
20460
|
"div",
|
|
20390
20461
|
{
|
|
@@ -21136,7 +21207,7 @@ function HeaderButton({
|
|
|
21136
21207
|
}
|
|
21137
21208
|
|
|
21138
21209
|
// src/components/features/time-tracker/time-tracker-header-button.tsx
|
|
21139
|
-
import { Fragment as
|
|
21210
|
+
import { Fragment as Fragment28, jsx as jsx190, jsxs as jsxs147 } from "react/jsx-runtime";
|
|
21140
21211
|
function TimeTrackerHeaderButton({ className, disabled }) {
|
|
21141
21212
|
const ctx = useOptionalTimeTracker();
|
|
21142
21213
|
const elapsedLabel = useTrackerClock({
|
|
@@ -21159,7 +21230,7 @@ function TimeTrackerHeaderButton({ className, disabled }) {
|
|
|
21159
21230
|
isActive && "w-auto gap-[var(--spacing-system-xsf)] px-[var(--spacing-system-sf)] md:w-auto",
|
|
21160
21231
|
className
|
|
21161
21232
|
),
|
|
21162
|
-
icon: /* @__PURE__ */ jsxs147(
|
|
21233
|
+
icon: /* @__PURE__ */ jsxs147(Fragment28, { children: [
|
|
21163
21234
|
/* @__PURE__ */ jsx190(
|
|
21164
21235
|
ClockHistoryIcon,
|
|
21165
21236
|
{
|
|
@@ -21388,7 +21459,7 @@ function BoardTicketApproval({ pendingApproval, onApprove, onReject }) {
|
|
|
21388
21459
|
}
|
|
21389
21460
|
|
|
21390
21461
|
// src/components/features/board/ticket-card.tsx
|
|
21391
|
-
import { Fragment as
|
|
21462
|
+
import { Fragment as Fragment29, jsx as jsx193, jsxs as jsxs150 } from "react/jsx-runtime";
|
|
21392
21463
|
var PRIORITY_COLOR_CLASS = {
|
|
21393
21464
|
low: "text-ods-text-secondary",
|
|
21394
21465
|
medium: "text-ods-info",
|
|
@@ -21461,7 +21532,7 @@ function TicketCard({
|
|
|
21461
21532
|
] }) : null;
|
|
21462
21533
|
const timestampLabel = ticket.createdAt ? formatTicketRelativeTime(ticket.createdAt) : null;
|
|
21463
21534
|
const tooltipLabel = ticket.createdAt ? formatTicketFullTimestamp(ticket.createdAt) : null;
|
|
21464
|
-
const body = /* @__PURE__ */ jsxs150(
|
|
21535
|
+
const body = /* @__PURE__ */ jsxs150(Fragment29, { children: [
|
|
21465
21536
|
/* @__PURE__ */ jsxs150("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
21466
21537
|
/* @__PURE__ */ jsxs150("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-zero)]", title: ticket.title, children: [
|
|
21467
21538
|
/* @__PURE__ */ jsx193("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
@@ -21589,7 +21660,7 @@ var TicketCardSkeleton = React78.forwardRef(
|
|
|
21589
21660
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
21590
21661
|
|
|
21591
21662
|
// src/components/features/board/board-column.tsx
|
|
21592
|
-
import { Fragment as
|
|
21663
|
+
import { Fragment as Fragment30, jsx as jsx195, jsxs as jsxs152 } from "react/jsx-runtime";
|
|
21593
21664
|
function BoardColumn({
|
|
21594
21665
|
column,
|
|
21595
21666
|
collapsed = false,
|
|
@@ -21628,7 +21699,7 @@ function BoardColumn({
|
|
|
21628
21699
|
onArchive: !collapsed && column.archivable && onArchive ? () => onArchive(column.id) : void 0
|
|
21629
21700
|
}
|
|
21630
21701
|
),
|
|
21631
|
-
!collapsed && /* @__PURE__ */ jsxs152(
|
|
21702
|
+
!collapsed && /* @__PURE__ */ jsxs152(Fragment30, { children: [
|
|
21632
21703
|
/* @__PURE__ */ jsx195("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
21633
21704
|
/* @__PURE__ */ jsx195(
|
|
21634
21705
|
ColumnBody,
|
|
@@ -21721,7 +21792,7 @@ function SkeletonStack({ count = 4 }) {
|
|
|
21721
21792
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
21722
21793
|
[count]
|
|
21723
21794
|
);
|
|
21724
|
-
return /* @__PURE__ */ jsx195(
|
|
21795
|
+
return /* @__PURE__ */ jsx195(Fragment30, { children: keys.map((k) => /* @__PURE__ */ jsx195(TicketCardSkeleton, {}, k)) });
|
|
21725
21796
|
}
|
|
21726
21797
|
function EmptyState2() {
|
|
21727
21798
|
return /* @__PURE__ */ jsxs152("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: [
|
|
@@ -22133,7 +22204,7 @@ function SortableRow({
|
|
|
22133
22204
|
init_next_link();
|
|
22134
22205
|
import React82, { useEffect as useEffect43, useRef as useRef32, useState as useState62 } from "react";
|
|
22135
22206
|
init_button2();
|
|
22136
|
-
import { Fragment as
|
|
22207
|
+
import { Fragment as Fragment32, jsx as jsx198, jsxs as jsxs154 } from "react/jsx-runtime";
|
|
22137
22208
|
function Header2({ config, platform }) {
|
|
22138
22209
|
const [show, setShow] = useState62(true);
|
|
22139
22210
|
const [lastScrollY, setLastScrollY] = useState62(0);
|
|
@@ -22278,7 +22349,7 @@ function Header2({ config, platform }) {
|
|
|
22278
22349
|
},
|
|
22279
22350
|
child.id
|
|
22280
22351
|
)) }),
|
|
22281
|
-
item.dropdownContent && /* @__PURE__ */ jsxs154(
|
|
22352
|
+
item.dropdownContent && /* @__PURE__ */ jsxs154(Fragment32, { children: [
|
|
22282
22353
|
item.showDropdownDivider !== false && /* @__PURE__ */ jsx198("div", { className: "h-px my-2 mx-2 bg-ods-border" }),
|
|
22283
22354
|
/* @__PURE__ */ jsx198("div", { className: "px-2 pb-2", children: item.dropdownContent })
|
|
22284
22355
|
] })
|
|
@@ -22461,7 +22532,7 @@ function ClientOnlyHeader({ config, skeleton }) {
|
|
|
22461
22532
|
import { useEffect as useEffect45, useRef as useRef33 } from "react";
|
|
22462
22533
|
init_button2();
|
|
22463
22534
|
import { X as X10 } from "lucide-react";
|
|
22464
|
-
import { Fragment as
|
|
22535
|
+
import { Fragment as Fragment33, jsx as jsx201, jsxs as jsxs156 } from "react/jsx-runtime";
|
|
22465
22536
|
function MobileNavPanel({ isOpen, config }) {
|
|
22466
22537
|
const panelRef = useRef33(null);
|
|
22467
22538
|
useEffect45(() => {
|
|
@@ -22534,7 +22605,7 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
22534
22605
|
item.id
|
|
22535
22606
|
);
|
|
22536
22607
|
};
|
|
22537
|
-
return /* @__PURE__ */ jsxs156(
|
|
22608
|
+
return /* @__PURE__ */ jsxs156(Fragment33, { children: [
|
|
22538
22609
|
/* @__PURE__ */ jsx201(
|
|
22539
22610
|
"div",
|
|
22540
22611
|
{
|
|
@@ -22585,7 +22656,7 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
22585
22656
|
import { useState as useState64, useEffect as useEffect46 } from "react";
|
|
22586
22657
|
import { motion as motion2, AnimatePresence } from "framer-motion";
|
|
22587
22658
|
init_button2();
|
|
22588
|
-
import { Fragment as
|
|
22659
|
+
import { Fragment as Fragment34, jsx as jsx202, jsxs as jsxs157 } from "react/jsx-runtime";
|
|
22589
22660
|
function SlidingSidebar({ config }) {
|
|
22590
22661
|
const [expandedItems, setExpandedItems] = useState64(/* @__PURE__ */ new Set());
|
|
22591
22662
|
const [mounted, setMounted] = useState64(false);
|
|
@@ -22707,7 +22778,7 @@ function SlidingSidebar({ config }) {
|
|
|
22707
22778
|
if (!mounted) {
|
|
22708
22779
|
return null;
|
|
22709
22780
|
}
|
|
22710
|
-
return /* @__PURE__ */ jsxs157(
|
|
22781
|
+
return /* @__PURE__ */ jsxs157(Fragment34, { children: [
|
|
22711
22782
|
/* @__PURE__ */ jsx202(AnimatePresence, { children: config.isOpen && /* @__PURE__ */ jsx202(
|
|
22712
22783
|
motion2.div,
|
|
22713
22784
|
{
|
|
@@ -22899,7 +22970,7 @@ function NavigationSidebarToggle({
|
|
|
22899
22970
|
}
|
|
22900
22971
|
|
|
22901
22972
|
// src/components/navigation/navigation-sidebar.tsx
|
|
22902
|
-
import { Fragment as
|
|
22973
|
+
import { Fragment as Fragment35, jsx as jsx206, jsxs as jsxs161 } from "react/jsx-runtime";
|
|
22903
22974
|
var MINIMIZED_WIDTH = 56;
|
|
22904
22975
|
var EXPANDED_WIDTH = 224;
|
|
22905
22976
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
@@ -22964,7 +23035,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
22964
23035
|
return () => cancelAnimationFrame(id);
|
|
22965
23036
|
}
|
|
22966
23037
|
}, [isHydrated, transitionsEnabled]);
|
|
22967
|
-
return /* @__PURE__ */ jsxs161(
|
|
23038
|
+
return /* @__PURE__ */ jsxs161(Fragment35, { children: [
|
|
22968
23039
|
/* @__PURE__ */ jsx206(
|
|
22969
23040
|
"div",
|
|
22970
23041
|
{
|
|
@@ -22998,7 +23069,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
22998
23069
|
),
|
|
22999
23070
|
style: { width: sidebarWidth },
|
|
23000
23071
|
"aria-label": "Main navigation sidebar",
|
|
23001
|
-
children: isHydrated && /* @__PURE__ */ jsxs161(
|
|
23072
|
+
children: isHydrated && /* @__PURE__ */ jsxs161(Fragment35, { children: [
|
|
23002
23073
|
/* @__PURE__ */ jsx206(NavigationSidebarHeader, { minimized }),
|
|
23003
23074
|
/* @__PURE__ */ jsxs161("div", { className: "flex-1 flex flex-col justify-between py-4 overflow-y-auto", children: [
|
|
23004
23075
|
/* @__PURE__ */ jsx206("nav", { className: "flex flex-col", "aria-label": "Primary navigation", children: primaryItems.map((item) => /* @__PURE__ */ jsx206(
|
|
@@ -23407,7 +23478,7 @@ import { createContext as createContext8, Suspense as Suspense2, useCallback as
|
|
|
23407
23478
|
|
|
23408
23479
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
23409
23480
|
import React87, { useCallback as useCallback25, useEffect as useEffect48 } from "react";
|
|
23410
|
-
import { Fragment as
|
|
23481
|
+
import { Fragment as Fragment36, jsx as jsx211, jsxs as jsxs166 } from "react/jsx-runtime";
|
|
23411
23482
|
var HEADER_HEIGHT = 48;
|
|
23412
23483
|
var MobileBurgerMenu = React87.memo(function MobileBurgerMenu2({
|
|
23413
23484
|
isOpen,
|
|
@@ -23493,7 +23564,7 @@ var MobileBurgerMenu = React87.memo(function MobileBurgerMenu2({
|
|
|
23493
23564
|
row.length === 1 && /* @__PURE__ */ jsx211("div", { className: "flex-1" })
|
|
23494
23565
|
] }, rowIndex)) });
|
|
23495
23566
|
};
|
|
23496
|
-
return /* @__PURE__ */ jsxs166(
|
|
23567
|
+
return /* @__PURE__ */ jsxs166(Fragment36, { children: [
|
|
23497
23568
|
/* @__PURE__ */ jsx211(
|
|
23498
23569
|
"div",
|
|
23499
23570
|
{
|
|
@@ -24467,7 +24538,7 @@ import React90, { useRef as useRef35, useCallback as useCallback28 } from "react
|
|
|
24467
24538
|
import React89 from "react";
|
|
24468
24539
|
init_button2();
|
|
24469
24540
|
init_cn();
|
|
24470
|
-
import { Fragment as
|
|
24541
|
+
import { Fragment as Fragment37, jsx as jsx221, jsxs as jsxs176 } from "react/jsx-runtime";
|
|
24471
24542
|
function OnboardingStepCard({
|
|
24472
24543
|
step,
|
|
24473
24544
|
isCompleted,
|
|
@@ -24509,10 +24580,10 @@ function OnboardingStepCard({
|
|
|
24509
24580
|
/* @__PURE__ */ jsx221("h3", { className: "text-h4 text-ods-text-primary truncate", title: step.title, children: step.title }),
|
|
24510
24581
|
/* @__PURE__ */ jsx221("p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate h-[20px]", title: step.description, children: step.description })
|
|
24511
24582
|
] }),
|
|
24512
|
-
/* @__PURE__ */ jsx221("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", onClick: (e) => e.stopPropagation(), children: isCheckingCompletion ? /* @__PURE__ */ jsxs176(
|
|
24583
|
+
/* @__PURE__ */ jsx221("div", { className: "flex items-center gap-2 w-full md:w-auto justify-start md:justify-end shrink-0", onClick: (e) => e.stopPropagation(), children: isCheckingCompletion ? /* @__PURE__ */ jsxs176(Fragment37, { children: [
|
|
24513
24584
|
/* @__PURE__ */ jsx221("div", { className: "h-[32px] w-[100px] bg-ods-border rounded-[6px] animate-pulse" }),
|
|
24514
24585
|
/* @__PURE__ */ jsx221("div", { className: "h-[32px] w-[120px] bg-ods-border rounded-[6px] animate-pulse" })
|
|
24515
|
-
] }) : isCompleted ? /* @__PURE__ */ jsxs176(
|
|
24586
|
+
] }) : isCompleted ? /* @__PURE__ */ jsxs176(Fragment37, { children: [
|
|
24516
24587
|
/* @__PURE__ */ jsx221(
|
|
24517
24588
|
StatusBadge,
|
|
24518
24589
|
{
|
|
@@ -24531,14 +24602,14 @@ function OnboardingStepCard({
|
|
|
24531
24602
|
children: step.completedText
|
|
24532
24603
|
}
|
|
24533
24604
|
)
|
|
24534
|
-
] }) : isSkipped ? /* @__PURE__ */ jsx221(
|
|
24605
|
+
] }) : isSkipped ? /* @__PURE__ */ jsx221(Fragment37, { children: /* @__PURE__ */ jsx221(
|
|
24535
24606
|
StatusBadge,
|
|
24536
24607
|
{
|
|
24537
24608
|
text: "SKIPPED",
|
|
24538
24609
|
variant: "card",
|
|
24539
24610
|
colorScheme: "default"
|
|
24540
24611
|
}
|
|
24541
|
-
) }) : /* @__PURE__ */ jsxs176(
|
|
24612
|
+
) }) : /* @__PURE__ */ jsxs176(Fragment37, { children: [
|
|
24542
24613
|
/* @__PURE__ */ jsx221(
|
|
24543
24614
|
Button,
|
|
24544
24615
|
{
|
|
@@ -25423,7 +25494,7 @@ function getHideClasses(hideAt) {
|
|
|
25423
25494
|
}
|
|
25424
25495
|
|
|
25425
25496
|
// src/components/ui/table/table-header.tsx
|
|
25426
|
-
import { Fragment as
|
|
25497
|
+
import { Fragment as Fragment38, jsx as jsx234, jsxs as jsxs186 } from "react/jsx-runtime";
|
|
25427
25498
|
function TableHeader({
|
|
25428
25499
|
columns,
|
|
25429
25500
|
className,
|
|
@@ -25534,10 +25605,10 @@ function TableHeader({
|
|
|
25534
25605
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
25535
25606
|
),
|
|
25536
25607
|
onClick: () => handleSort(column),
|
|
25537
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs186(
|
|
25608
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs186(Fragment38, { children: [
|
|
25538
25609
|
column.renderHeader(),
|
|
25539
25610
|
getSortIcon(column)
|
|
25540
|
-
] }) : /* @__PURE__ */ jsxs186(
|
|
25611
|
+
] }) : /* @__PURE__ */ jsxs186(Fragment38, { children: [
|
|
25541
25612
|
/* @__PURE__ */ jsx234("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
25542
25613
|
getSortIcon(column)
|
|
25543
25614
|
] })
|
|
@@ -25592,7 +25663,7 @@ function TableCell({
|
|
|
25592
25663
|
|
|
25593
25664
|
// src/components/ui/table/table-skeleton.tsx
|
|
25594
25665
|
init_cn();
|
|
25595
|
-
import { Fragment as
|
|
25666
|
+
import { Fragment as Fragment39, jsx as jsx236, jsxs as jsxs187 } from "react/jsx-runtime";
|
|
25596
25667
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
25597
25668
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
25598
25669
|
function TableCardSkeleton({
|
|
@@ -25603,7 +25674,7 @@ function TableCardSkeleton({
|
|
|
25603
25674
|
className,
|
|
25604
25675
|
rowClassName
|
|
25605
25676
|
}) {
|
|
25606
|
-
return /* @__PURE__ */ jsx236(
|
|
25677
|
+
return /* @__PURE__ */ jsx236(Fragment39, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs187(
|
|
25607
25678
|
"div",
|
|
25608
25679
|
{
|
|
25609
25680
|
className: cn(
|
|
@@ -25758,7 +25829,7 @@ function TableRow({
|
|
|
25758
25829
|
}
|
|
25759
25830
|
|
|
25760
25831
|
// src/components/ui/table/table.tsx
|
|
25761
|
-
import { Fragment as
|
|
25832
|
+
import { Fragment as Fragment40, jsx as jsx238, jsxs as jsxs189 } from "react/jsx-runtime";
|
|
25762
25833
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
25763
25834
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
25764
25835
|
const result = [...columns];
|
|
@@ -25958,7 +26029,7 @@ function Table({
|
|
|
25958
26029
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
25959
26030
|
hasChevron: Boolean(rowHref)
|
|
25960
26031
|
}
|
|
25961
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx238(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs189(
|
|
26032
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx238(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs189(Fragment40, { children: [
|
|
25962
26033
|
data.map((item, index) => /* @__PURE__ */ jsx238(
|
|
25963
26034
|
TableRow,
|
|
25964
26035
|
{
|
|
@@ -26579,7 +26650,7 @@ function DataTableColumnFilter({
|
|
|
26579
26650
|
}
|
|
26580
26651
|
|
|
26581
26652
|
// src/components/ui/data-table/data-table-header.tsx
|
|
26582
|
-
import { Fragment as
|
|
26653
|
+
import { Fragment as Fragment41, jsx as jsx247, jsxs as jsxs196 } from "react/jsx-runtime";
|
|
26583
26654
|
function DataTableHeader({
|
|
26584
26655
|
className,
|
|
26585
26656
|
stickyHeader,
|
|
@@ -26673,7 +26744,7 @@ function HeaderLabel({ header }) {
|
|
|
26673
26744
|
if (typeof headerDef === "string") {
|
|
26674
26745
|
return /* @__PURE__ */ jsx247("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
|
|
26675
26746
|
}
|
|
26676
|
-
return /* @__PURE__ */ jsx247(
|
|
26747
|
+
return /* @__PURE__ */ jsx247(Fragment41, { children: flexRender(headerDef, header.getContext()) });
|
|
26677
26748
|
}
|
|
26678
26749
|
function SortIcon({ sorted }) {
|
|
26679
26750
|
if (sorted === "asc") return /* @__PURE__ */ jsx247(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -26712,7 +26783,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
26712
26783
|
|
|
26713
26784
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
26714
26785
|
init_cn();
|
|
26715
|
-
import { Fragment as
|
|
26786
|
+
import { Fragment as Fragment42, jsx as jsx249, jsxs as jsxs197 } from "react/jsx-runtime";
|
|
26716
26787
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
26717
26788
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
26718
26789
|
function DataTableSkeleton({
|
|
@@ -26723,7 +26794,7 @@ function DataTableSkeleton({
|
|
|
26723
26794
|
const table = useDataTableContext();
|
|
26724
26795
|
const columns = table.getVisibleFlatColumns();
|
|
26725
26796
|
const firstColumnId = columns[0]?.id;
|
|
26726
|
-
return /* @__PURE__ */ jsx249(
|
|
26797
|
+
return /* @__PURE__ */ jsx249(Fragment42, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs197(
|
|
26727
26798
|
"div",
|
|
26728
26799
|
{
|
|
26729
26800
|
className: cn(
|
|
@@ -26779,7 +26850,7 @@ function DataTableSkeleton({
|
|
|
26779
26850
|
}
|
|
26780
26851
|
|
|
26781
26852
|
// src/components/ui/data-table/data-table-row.tsx
|
|
26782
|
-
import { Fragment as
|
|
26853
|
+
import { Fragment as Fragment43, jsx as jsx250, jsxs as jsxs198 } from "react/jsx-runtime";
|
|
26783
26854
|
function DataTableRowImpl({
|
|
26784
26855
|
row,
|
|
26785
26856
|
onClick,
|
|
@@ -26880,7 +26951,7 @@ function CellContent({ children }) {
|
|
|
26880
26951
|
if (typeof children === "string" || typeof children === "number") {
|
|
26881
26952
|
return /* @__PURE__ */ jsx250("span", { className: "text-h4 text-ods-text-primary truncate", title: String(children), children });
|
|
26882
26953
|
}
|
|
26883
|
-
return /* @__PURE__ */ jsx250(
|
|
26954
|
+
return /* @__PURE__ */ jsx250(Fragment43, { children });
|
|
26884
26955
|
}
|
|
26885
26956
|
|
|
26886
26957
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -26958,7 +27029,7 @@ function DataTableBody({
|
|
|
26958
27029
|
|
|
26959
27030
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
26960
27031
|
import { useEffect as useEffect51, useRef as useRef41 } from "react";
|
|
26961
|
-
import { Fragment as
|
|
27032
|
+
import { Fragment as Fragment44, jsx as jsx252, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
26962
27033
|
function DataTableInfiniteFooter({
|
|
26963
27034
|
hasNextPage,
|
|
26964
27035
|
isFetchingNextPage,
|
|
@@ -26982,7 +27053,7 @@ function DataTableInfiniteFooter({
|
|
|
26982
27053
|
observer.observe(sentinel);
|
|
26983
27054
|
return () => observer.disconnect();
|
|
26984
27055
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
26985
|
-
return /* @__PURE__ */ jsxs200(
|
|
27056
|
+
return /* @__PURE__ */ jsxs200(Fragment44, { children: [
|
|
26986
27057
|
isFetchingNextPage && /* @__PURE__ */ jsx252(DataTableSkeleton, { rows: skeletonRows }),
|
|
26987
27058
|
hasNextPage && /* @__PURE__ */ jsx252("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
26988
27059
|
] });
|
|
@@ -28007,7 +28078,7 @@ function FileUpload({
|
|
|
28007
28078
|
import * as React100 from "react";
|
|
28008
28079
|
import { Loader2 as Loader211 } from "lucide-react";
|
|
28009
28080
|
init_cn();
|
|
28010
|
-
import { Fragment as
|
|
28081
|
+
import { Fragment as Fragment46, jsx as jsx258, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
28011
28082
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
28012
28083
|
function formatSize(bytes) {
|
|
28013
28084
|
const mb = bytes / (1024 * 1024);
|
|
@@ -28133,7 +28204,7 @@ function ImageUploader({
|
|
|
28133
28204
|
!interactive && "opacity-60",
|
|
28134
28205
|
!hasImage && !interactive && "cursor-not-allowed"
|
|
28135
28206
|
),
|
|
28136
|
-
children: hasImage ? /* @__PURE__ */ jsxs206(
|
|
28207
|
+
children: hasImage ? /* @__PURE__ */ jsxs206(Fragment46, { children: [
|
|
28137
28208
|
/* @__PURE__ */ jsx258("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: /* @__PURE__ */ jsx258(
|
|
28138
28209
|
"img",
|
|
28139
28210
|
{
|
|
@@ -28170,7 +28241,7 @@ function ImageUploader({
|
|
|
28170
28241
|
)
|
|
28171
28242
|
] }),
|
|
28172
28243
|
loading && /* @__PURE__ */ jsx258("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx258(Loader211, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
|
|
28173
|
-
] }) : loading ? /* @__PURE__ */ jsx258(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs206(
|
|
28244
|
+
] }) : loading ? /* @__PURE__ */ jsx258(Loader211, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs206(Fragment46, { children: [
|
|
28174
28245
|
/* @__PURE__ */ jsx258("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__ */ jsx258(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
28175
28246
|
/* @__PURE__ */ jsxs206("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
28176
28247
|
/* @__PURE__ */ jsx258("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -28240,7 +28311,7 @@ PopoverContent.displayName = PopoverPrimitive4.Content.displayName;
|
|
|
28240
28311
|
|
|
28241
28312
|
// src/components/ui/color-preset-select.tsx
|
|
28242
28313
|
init_cn();
|
|
28243
|
-
import { Fragment as
|
|
28314
|
+
import { Fragment as Fragment47, jsx as jsx260, jsxs as jsxs207 } from "react/jsx-runtime";
|
|
28244
28315
|
var TICKET_STATUS_COLOR_PRESETS = [
|
|
28245
28316
|
{ key: "green", label: "Green", color: "#5ea62e" },
|
|
28246
28317
|
{ key: "lime", label: "Lime", color: "#8bc34a" },
|
|
@@ -28391,7 +28462,7 @@ function RgbInputs({ value, onChange }) {
|
|
|
28391
28462
|
const b = next.b ?? rgb.b;
|
|
28392
28463
|
onChange(rgbToHex(r, g, b));
|
|
28393
28464
|
};
|
|
28394
|
-
return /* @__PURE__ */ jsxs207(
|
|
28465
|
+
return /* @__PURE__ */ jsxs207(Fragment47, { children: [
|
|
28395
28466
|
/* @__PURE__ */ jsx260(ChannelInput, { value: rgb.r, min: 0, max: 255, ariaLabel: "Red", onCommit: (r) => update({ r }) }),
|
|
28396
28467
|
/* @__PURE__ */ jsx260(ChannelInput, { value: rgb.g, min: 0, max: 255, ariaLabel: "Green", onCommit: (g) => update({ g }) }),
|
|
28397
28468
|
/* @__PURE__ */ jsx260(ChannelInput, { value: rgb.b, min: 0, max: 255, ariaLabel: "Blue", onCommit: (b) => update({ b }) })
|
|
@@ -28407,7 +28478,7 @@ function HslInputs({ value, onChange }) {
|
|
|
28407
28478
|
const out = hslToRgb(h, s, l);
|
|
28408
28479
|
onChange(rgbToHex(out.r, out.g, out.b));
|
|
28409
28480
|
};
|
|
28410
|
-
return /* @__PURE__ */ jsxs207(
|
|
28481
|
+
return /* @__PURE__ */ jsxs207(Fragment47, { children: [
|
|
28411
28482
|
/* @__PURE__ */ jsx260(ChannelInput, { value: hsl.h, min: 0, max: 360, ariaLabel: "Hue", onCommit: (h) => update({ h }) }),
|
|
28412
28483
|
/* @__PURE__ */ jsx260(ChannelInput, { value: hsl.s, min: 0, max: 100, ariaLabel: "Saturation", onCommit: (s) => update({ s }) }),
|
|
28413
28484
|
/* @__PURE__ */ jsx260(ChannelInput, { value: hsl.l, min: 0, max: 100, ariaLabel: "Lightness", onCommit: (l) => update({ l }) })
|
|
@@ -28937,7 +29008,7 @@ init_cn();
|
|
|
28937
29008
|
// src/components/ui/ticket-note-card.tsx
|
|
28938
29009
|
import * as React105 from "react";
|
|
28939
29010
|
init_cn();
|
|
28940
|
-
import { Fragment as
|
|
29011
|
+
import { Fragment as Fragment48, jsx as jsx265, jsxs as jsxs212 } from "react/jsx-runtime";
|
|
28941
29012
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
28942
29013
|
const [isEditing, setIsEditing] = React105.useState(false);
|
|
28943
29014
|
const [editText, setEditText] = React105.useState(note.text);
|
|
@@ -29011,7 +29082,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
29011
29082
|
children: /* @__PURE__ */ jsx265(XmarkIcon, { className: "size-5" })
|
|
29012
29083
|
}
|
|
29013
29084
|
)
|
|
29014
|
-
] }) : /* @__PURE__ */ jsxs212(
|
|
29085
|
+
] }) : /* @__PURE__ */ jsxs212(Fragment48, { children: [
|
|
29015
29086
|
/* @__PURE__ */ jsx265("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
29016
29087
|
/* @__PURE__ */ jsxs212(
|
|
29017
29088
|
"p",
|
|
@@ -29118,7 +29189,7 @@ function TicketNotesSection({
|
|
|
29118
29189
|
}
|
|
29119
29190
|
|
|
29120
29191
|
// src/components/ui/ticket-info-section.tsx
|
|
29121
|
-
import { Fragment as
|
|
29192
|
+
import { Fragment as Fragment49, jsx as jsx267, jsxs as jsxs214 } from "react/jsx-runtime";
|
|
29122
29193
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
29123
29194
|
return /* @__PURE__ */ jsx267("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs214("div", { className: "flex flex-col justify-center", children: [
|
|
29124
29195
|
/* @__PURE__ */ jsxs214("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -29243,7 +29314,7 @@ function TicketInfoSection({
|
|
|
29243
29314
|
)
|
|
29244
29315
|
] })
|
|
29245
29316
|
] }),
|
|
29246
|
-
expanded && /* @__PURE__ */ jsxs214(
|
|
29317
|
+
expanded && /* @__PURE__ */ jsxs214(Fragment49, { children: [
|
|
29247
29318
|
createdAt && /* @__PURE__ */ jsx267("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx267(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
29248
29319
|
/* @__PURE__ */ jsxs214("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
29249
29320
|
description && /* @__PURE__ */ jsx267(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -29268,7 +29339,7 @@ function TicketInfoSection({
|
|
|
29268
29339
|
|
|
29269
29340
|
// src/components/ui/image-gallery-modal.tsx
|
|
29270
29341
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight9 } from "lucide-react";
|
|
29271
|
-
import { Fragment as
|
|
29342
|
+
import { Fragment as Fragment50, jsx as jsx268, jsxs as jsxs215 } from "react/jsx-runtime";
|
|
29272
29343
|
function ImageGalleryModal({
|
|
29273
29344
|
images,
|
|
29274
29345
|
isOpen,
|
|
@@ -29324,7 +29395,7 @@ function ImageGalleryModal({
|
|
|
29324
29395
|
onClose,
|
|
29325
29396
|
className: "max-w-[95vw]",
|
|
29326
29397
|
children: /* @__PURE__ */ jsxs215("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
29327
|
-
images.length > 1 && /* @__PURE__ */ jsxs215(
|
|
29398
|
+
images.length > 1 && /* @__PURE__ */ jsxs215(Fragment50, { children: [
|
|
29328
29399
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx268("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx268(
|
|
29329
29400
|
Button,
|
|
29330
29401
|
{
|
|
@@ -29442,7 +29513,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
|
29442
29513
|
}
|
|
29443
29514
|
|
|
29444
29515
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
29445
|
-
import { Fragment as
|
|
29516
|
+
import { Fragment as Fragment51, jsx as jsx270, jsxs as jsxs216 } from "react/jsx-runtime";
|
|
29446
29517
|
function RoadmapCardSkeleton({ size = "default" }) {
|
|
29447
29518
|
if (size === "sm") {
|
|
29448
29519
|
return /* @__PURE__ */ jsxs216("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -29503,7 +29574,7 @@ function RoadmapCard({
|
|
|
29503
29574
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
29504
29575
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
29505
29576
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
29506
|
-
const body = /* @__PURE__ */ jsxs216(
|
|
29577
|
+
const body = /* @__PURE__ */ jsxs216(Fragment51, { children: [
|
|
29507
29578
|
/* @__PURE__ */ jsx270(
|
|
29508
29579
|
"span",
|
|
29509
29580
|
{
|
|
@@ -29695,7 +29766,7 @@ function RoadmapCard({
|
|
|
29695
29766
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
29696
29767
|
import React108 from "react";
|
|
29697
29768
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink5 } from "lucide-react";
|
|
29698
|
-
import { Fragment as
|
|
29769
|
+
import { Fragment as Fragment52, jsx as jsx271, jsxs as jsxs217 } from "react/jsx-runtime";
|
|
29699
29770
|
function parseRepoFromUrl(url) {
|
|
29700
29771
|
if (!url) return null;
|
|
29701
29772
|
try {
|
|
@@ -29827,7 +29898,7 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
29827
29898
|
if (repo) metaParts.push(/* @__PURE__ */ jsx271("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
29828
29899
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx271("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
29829
29900
|
const href = safeHref(item.url);
|
|
29830
|
-
const body = /* @__PURE__ */ jsxs217(
|
|
29901
|
+
const body = /* @__PURE__ */ jsxs217(Fragment52, { children: [
|
|
29831
29902
|
/* @__PURE__ */ jsx271("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
29832
29903
|
/* @__PURE__ */ jsxs217("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
29833
29904
|
/* @__PURE__ */ jsxs217("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
@@ -29882,7 +29953,7 @@ function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
|
29882
29953
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
29883
29954
|
import React109 from "react";
|
|
29884
29955
|
import { ExternalLink as ExternalLink6, Hash } from "lucide-react";
|
|
29885
|
-
import { Fragment as
|
|
29956
|
+
import { Fragment as Fragment53, jsx as jsx272, jsxs as jsxs218 } from "react/jsx-runtime";
|
|
29886
29957
|
function parseChannelFromUrl(url) {
|
|
29887
29958
|
if (!url) return null;
|
|
29888
29959
|
try {
|
|
@@ -29921,7 +29992,7 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
29921
29992
|
}
|
|
29922
29993
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx272("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
29923
29994
|
const href = safeHref(item.url);
|
|
29924
|
-
const body = /* @__PURE__ */ jsxs218(
|
|
29995
|
+
const body = /* @__PURE__ */ jsxs218(Fragment53, { children: [
|
|
29925
29996
|
/* @__PURE__ */ jsx272("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx272(SlackIcon, { className: "h-5 w-5" }) }),
|
|
29926
29997
|
/* @__PURE__ */ jsxs218("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
29927
29998
|
/* @__PURE__ */ jsx272("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx272("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
@@ -29971,7 +30042,7 @@ function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
|
29971
30042
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
29972
30043
|
import React110 from "react";
|
|
29973
30044
|
import { ExternalLink as ExternalLink7 } from "lucide-react";
|
|
29974
|
-
import { Fragment as
|
|
30045
|
+
import { Fragment as Fragment54, jsx as jsx273, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
29975
30046
|
function formatToken(token) {
|
|
29976
30047
|
if (!token) return null;
|
|
29977
30048
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -30010,7 +30081,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
30010
30081
|
}
|
|
30011
30082
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx273("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
30012
30083
|
const href = safeHref(item.url);
|
|
30013
|
-
const body = /* @__PURE__ */ jsxs219(
|
|
30084
|
+
const body = /* @__PURE__ */ jsxs219(Fragment54, { children: [
|
|
30014
30085
|
/* @__PURE__ */ jsxs219("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
30015
30086
|
/* @__PURE__ */ jsxs219("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
30016
30087
|
/* @__PURE__ */ jsx273("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -30090,9 +30161,9 @@ function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
|
30090
30161
|
|
|
30091
30162
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
30092
30163
|
import { ExternalLink as ExternalLink8 } from "lucide-react";
|
|
30093
|
-
import { Fragment as
|
|
30164
|
+
import { Fragment as Fragment55, jsx as jsx274, jsxs as jsxs220 } from "react/jsx-runtime";
|
|
30094
30165
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
30095
|
-
const body = /* @__PURE__ */ jsxs220(
|
|
30166
|
+
const body = /* @__PURE__ */ jsxs220(Fragment55, { children: [
|
|
30096
30167
|
/* @__PURE__ */ jsxs220("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
30097
30168
|
/* @__PURE__ */ jsxs220("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
30098
30169
|
/* @__PURE__ */ jsx274("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -31702,7 +31773,7 @@ function cleanEscapedString(input) {
|
|
|
31702
31773
|
init_button();
|
|
31703
31774
|
import { ExternalLink as ExternalLink9, Clock, Play as Play2, Video as Video6 } from "lucide-react";
|
|
31704
31775
|
init_cn();
|
|
31705
|
-
import { Fragment as
|
|
31776
|
+
import { Fragment as Fragment56, jsx as jsx275, jsxs as jsxs221 } from "react/jsx-runtime";
|
|
31706
31777
|
function ProgramCardSkeleton({ size = "default" }) {
|
|
31707
31778
|
if (size === "sm") {
|
|
31708
31779
|
return /* @__PURE__ */ jsxs221("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -31774,7 +31845,7 @@ function MediaGallery({ images, title }) {
|
|
|
31774
31845
|
setIsModalOpen(false);
|
|
31775
31846
|
setSelectedImageIndex(null);
|
|
31776
31847
|
};
|
|
31777
|
-
return /* @__PURE__ */ jsxs221(
|
|
31848
|
+
return /* @__PURE__ */ jsxs221(Fragment56, { children: [
|
|
31778
31849
|
/* @__PURE__ */ jsx275("div", { className: "p-6 pt-4", children: /* @__PURE__ */ jsx275("div", { className: "overflow-x-auto mb-4", children: /* @__PURE__ */ jsx275("div", { className: "flex gap-3 pb-2", style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsxs221(
|
|
31779
31850
|
"div",
|
|
31780
31851
|
{
|
|
@@ -31891,7 +31962,7 @@ function ProgramCard({
|
|
|
31891
31962
|
const dateFormat = format(itemDate, "EEEE d MMMM");
|
|
31892
31963
|
const defaultRenderMeta = () => {
|
|
31893
31964
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
31894
|
-
return /* @__PURE__ */ jsxs221(
|
|
31965
|
+
return /* @__PURE__ */ jsxs221(Fragment56, { children: [
|
|
31895
31966
|
/* @__PURE__ */ jsx275(Clock, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
31896
31967
|
/* @__PURE__ */ jsx275("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
31897
31968
|
] });
|
|
@@ -31902,7 +31973,7 @@ function ProgramCard({
|
|
|
31902
31973
|
if (config.type === "webinar" && "start_at" in item) {
|
|
31903
31974
|
const webinarItem = item;
|
|
31904
31975
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
31905
|
-
return /* @__PURE__ */ jsxs221(
|
|
31976
|
+
return /* @__PURE__ */ jsxs221(Fragment56, { children: [
|
|
31906
31977
|
/* @__PURE__ */ jsx275(Video6, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
31907
31978
|
/* @__PURE__ */ jsxs221("span", { className: "font-['DM_Sans'] text-ods-text-secondary", children: [
|
|
31908
31979
|
formatTimeWithTimezone(webinarItem.start_at, null),
|
|
@@ -31936,10 +32007,10 @@ function ProgramCard({
|
|
|
31936
32007
|
/* @__PURE__ */ jsx275("h3", { className: "font-['Azeret_Mono'] font-semibold text-xl md:text-2xl text-ods-text-primary leading-tight mb-3 min-h-[3rem] md:min-h-[3.5rem] line-clamp-2 flex items-center", children: item.title }),
|
|
31937
32008
|
/* @__PURE__ */ jsxs221("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
31938
32009
|
/* @__PURE__ */ jsx275("span", { className: "font-['DM_Sans'] font-medium", style: { color: accentColor }, children: dateFormat }),
|
|
31939
|
-
renderMeta ? /* @__PURE__ */ jsxs221(
|
|
32010
|
+
renderMeta ? /* @__PURE__ */ jsxs221(Fragment56, { children: [
|
|
31940
32011
|
/* @__PURE__ */ jsx275("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
31941
32012
|
renderMeta(item)
|
|
31942
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs221(
|
|
32013
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs221(Fragment56, { children: [
|
|
31943
32014
|
/* @__PURE__ */ jsx275("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
31944
32015
|
/* @__PURE__ */ jsx275("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
31945
32016
|
] })
|
|
@@ -32016,10 +32087,10 @@ function ProgramCard({
|
|
|
32016
32087
|
|
|
32017
32088
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
32018
32089
|
import { Megaphone } from "lucide-react";
|
|
32019
|
-
import { Fragment as
|
|
32090
|
+
import { Fragment as Fragment57, jsx as jsx276, jsxs as jsxs222 } from "react/jsx-runtime";
|
|
32020
32091
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
32021
32092
|
const goalsCount = campaign.goals?.length || 0;
|
|
32022
|
-
const innerChildren = /* @__PURE__ */ jsxs222(
|
|
32093
|
+
const innerChildren = /* @__PURE__ */ jsxs222(Fragment57, { children: [
|
|
32023
32094
|
/* @__PURE__ */ jsx276("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx276(Megaphone, { className: "h-5 w-5" }) }),
|
|
32024
32095
|
/* @__PURE__ */ jsxs222("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
32025
32096
|
/* @__PURE__ */ jsx276("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx276("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
@@ -32049,11 +32120,11 @@ function CampaignCardAdminSkeleton({ className }) {
|
|
|
32049
32120
|
|
|
32050
32121
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
32051
32122
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
32052
|
-
import { Fragment as
|
|
32123
|
+
import { Fragment as Fragment58, jsx as jsx277, jsxs as jsxs223 } from "react/jsx-runtime";
|
|
32053
32124
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
32054
32125
|
const href = safeHref(item.url);
|
|
32055
32126
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
32056
|
-
const body = /* @__PURE__ */ jsxs223(
|
|
32127
|
+
const body = /* @__PURE__ */ jsxs223(Fragment58, { children: [
|
|
32057
32128
|
/* @__PURE__ */ jsxs223("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
32058
32129
|
/* @__PURE__ */ jsxs223("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
32059
32130
|
/* @__PURE__ */ jsx277("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -32148,7 +32219,7 @@ function useChatCardItem(type, id) {
|
|
|
32148
32219
|
|
|
32149
32220
|
// src/components/chat/mingo-info-card.tsx
|
|
32150
32221
|
init_cn();
|
|
32151
|
-
import { Fragment as
|
|
32222
|
+
import { Fragment as Fragment59, jsx as jsx278, jsxs as jsxs224 } from "react/jsx-runtime";
|
|
32152
32223
|
function CardMedia({
|
|
32153
32224
|
imageSrc,
|
|
32154
32225
|
imageAlt,
|
|
@@ -32192,7 +32263,7 @@ function MingoInfoCard({
|
|
|
32192
32263
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
32193
32264
|
const isAnchor = !!anchorProps;
|
|
32194
32265
|
const isInteractive = isAnchor || !!onClick;
|
|
32195
|
-
const content = /* @__PURE__ */ jsxs224(
|
|
32266
|
+
const content = /* @__PURE__ */ jsxs224(Fragment59, { children: [
|
|
32196
32267
|
hasMedia && /* @__PURE__ */ jsx278(CardMedia, { imageSrc, imageAlt, icon }),
|
|
32197
32268
|
/* @__PURE__ */ jsxs224("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
32198
32269
|
/* @__PURE__ */ jsx278("span", { className: "truncate text-h4 font-medium text-ods-text-primary", children: title }),
|
|
@@ -32241,7 +32312,7 @@ function MingoInfoCard({
|
|
|
32241
32312
|
}
|
|
32242
32313
|
|
|
32243
32314
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
32244
|
-
import { Fragment as
|
|
32315
|
+
import { Fragment as Fragment60, jsx as jsx279, jsxs as jsxs225 } from "react/jsx-runtime";
|
|
32245
32316
|
function githubKindIcon(kind) {
|
|
32246
32317
|
switch (kind) {
|
|
32247
32318
|
case "pull_request":
|
|
@@ -33209,10 +33280,10 @@ function ChatCardLoader({
|
|
|
33209
33280
|
}
|
|
33210
33281
|
);
|
|
33211
33282
|
}
|
|
33212
|
-
if (isLoading) return /* @__PURE__ */ jsx279(
|
|
33283
|
+
if (isLoading) return /* @__PURE__ */ jsx279(Fragment60, { children: entry.skeleton() });
|
|
33213
33284
|
if (!item) return null;
|
|
33214
33285
|
if (entry.bareInline) {
|
|
33215
|
-
return /* @__PURE__ */ jsx279(
|
|
33286
|
+
return /* @__PURE__ */ jsx279(Fragment60, { children: navWrap(entry.render(item, finalChatRef, renderOpts)) });
|
|
33216
33287
|
}
|
|
33217
33288
|
return /* @__PURE__ */ jsx279(
|
|
33218
33289
|
ChatCardWithDiscuss,
|
|
@@ -34096,7 +34167,14 @@ function parseChunkToAction(chunk) {
|
|
|
34096
34167
|
text: String(data.text || ""),
|
|
34097
34168
|
ownerType: typeof data.ownerType === "string" ? data.ownerType : void 0,
|
|
34098
34169
|
displayName: typeof data.displayName === "string" ? data.displayName : void 0,
|
|
34099
|
-
userId: typeof data.userId === "string" ? data.userId : void 0
|
|
34170
|
+
userId: typeof data.userId === "string" ? data.userId : void 0,
|
|
34171
|
+
// Entity-context refs the user attached to this message (backend
|
|
34172
|
+
// `MESSAGE_REQUEST` chunk → `contextItems: [{ type, id }]`). The wire
|
|
34173
|
+
// shape carries no label; the host resolves display text + icon. `label`
|
|
34174
|
+
// is REQUIRED on `ChatContextItem`, so fall back to the id (same as the
|
|
34175
|
+
// historical path in `process-historical-messages.ts`) — keeps both
|
|
34176
|
+
// message sources producing an identical shape.
|
|
34177
|
+
contextItems: Array.isArray(data.contextItems) ? data.contextItems.filter((it) => typeof it?.type === "string" && typeof it?.id === "string").map((it) => ({ type: it.type, id: it.id, label: it.id })) : void 0
|
|
34100
34178
|
};
|
|
34101
34179
|
case MESSAGE_TYPE.TOKEN_USAGE:
|
|
34102
34180
|
return {
|
|
@@ -34851,7 +34929,8 @@ function useRealtimeChunkProcessor(options) {
|
|
|
34851
34929
|
ownerType: action.ownerType,
|
|
34852
34930
|
displayName: action.displayName,
|
|
34853
34931
|
userId: action.userId,
|
|
34854
|
-
streamSeq
|
|
34932
|
+
streamSeq,
|
|
34933
|
+
contextItems: action.contextItems
|
|
34855
34934
|
});
|
|
34856
34935
|
break;
|
|
34857
34936
|
case "token_usage":
|
|
@@ -36430,6 +36509,8 @@ function processHistoricalMessages(messages, options = {}) {
|
|
|
36430
36509
|
const userAuthorType = msg.owner?.type === OWNER_TYPE.ADMIN ? "admin" : "user";
|
|
36431
36510
|
messageDataArray.forEach((data) => {
|
|
36432
36511
|
if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
|
|
36512
|
+
const rawContext = data.contextItems;
|
|
36513
|
+
const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof c?.type === "string" && typeof c?.id === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
|
|
36433
36514
|
processedMessages.push({
|
|
36434
36515
|
id: msg.id,
|
|
36435
36516
|
role: "user",
|
|
@@ -36437,7 +36518,8 @@ function processHistoricalMessages(messages, options = {}) {
|
|
|
36437
36518
|
name: getOwnerDisplayName(msg.owner),
|
|
36438
36519
|
avatar: getOwnerAvatar(msg.owner),
|
|
36439
36520
|
authorType: userAuthorType,
|
|
36440
|
-
timestamp: new Date(msg.createdAt)
|
|
36521
|
+
timestamp: new Date(msg.createdAt),
|
|
36522
|
+
...contextItems && contextItems.length > 0 ? { contextItems } : {}
|
|
36441
36523
|
});
|
|
36442
36524
|
}
|
|
36443
36525
|
});
|
|
@@ -36715,6 +36797,8 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
|
|
|
36715
36797
|
const userAuthorType = msg.owner?.type === OWNER_TYPE.ADMIN ? "admin" : "user";
|
|
36716
36798
|
messageDataArray.forEach((data) => {
|
|
36717
36799
|
if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
|
|
36800
|
+
const rawContext = data.contextItems;
|
|
36801
|
+
const contextItems = Array.isArray(rawContext) ? rawContext.filter((c) => typeof c?.type === "string" && typeof c?.id === "string").map((c) => ({ type: c.type, id: c.id, label: c.id })) : void 0;
|
|
36718
36802
|
processedMessages.push({
|
|
36719
36803
|
id: msg.id,
|
|
36720
36804
|
role: "user",
|
|
@@ -36722,7 +36806,8 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
|
|
|
36722
36806
|
name: getOwnerDisplayName(msg.owner),
|
|
36723
36807
|
avatar: getOwnerAvatar(msg.owner),
|
|
36724
36808
|
authorType: userAuthorType,
|
|
36725
|
-
timestamp: new Date(msg.createdAt)
|
|
36809
|
+
timestamp: new Date(msg.createdAt),
|
|
36810
|
+
...contextItems && contextItems.length > 0 ? { contextItems } : {}
|
|
36726
36811
|
});
|
|
36727
36812
|
}
|
|
36728
36813
|
});
|
|
@@ -37875,8 +37960,14 @@ function useChatDialogManager({
|
|
|
37875
37960
|
|
|
37876
37961
|
// src/components/chat/embeddable-chat.tsx
|
|
37877
37962
|
init_next_navigation();
|
|
37878
|
-
import { Fragment as
|
|
37963
|
+
import { Fragment as Fragment61, jsx as jsx283, jsxs as jsxs226 } from "react/jsx-runtime";
|
|
37879
37964
|
var formatRelativePath = (p) => p.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
37965
|
+
var mentionTokenOf = (key, markerByType) => {
|
|
37966
|
+
const ci = key.indexOf(":");
|
|
37967
|
+
const type = ci === -1 ? key : key.slice(0, ci);
|
|
37968
|
+
const id = ci === -1 ? "" : key.slice(ci + 1);
|
|
37969
|
+
return `${markerByType.get(type) ?? type.toLowerCase()}:${id}`;
|
|
37970
|
+
};
|
|
37880
37971
|
var FALLBACK_TOP_RETRIEVED = 3;
|
|
37881
37972
|
var SKELETON_ROW_VARIANTS = [
|
|
37882
37973
|
{ titleWidth: "w-32", slashWidth: "w-20", descriptionLines: 2 },
|
|
@@ -37988,7 +38079,7 @@ function SourceChip({
|
|
|
37988
38079
|
);
|
|
37989
38080
|
}
|
|
37990
38081
|
const displayName = src.name || formatRelativePath(src.path);
|
|
37991
|
-
const chipBody = (label) => /* @__PURE__ */ jsxs226(
|
|
38082
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs226(Fragment61, { children: [
|
|
37992
38083
|
icon,
|
|
37993
38084
|
/* @__PURE__ */ jsxs226("span", { className: "truncate max-w-[160px]", children: [
|
|
37994
38085
|
"[",
|
|
@@ -38147,7 +38238,8 @@ function EmbeddableChatInner({
|
|
|
38147
38238
|
shell = "drawer",
|
|
38148
38239
|
mingoWelcome,
|
|
38149
38240
|
guideWelcome,
|
|
38150
|
-
contextPicker
|
|
38241
|
+
contextPicker,
|
|
38242
|
+
renderMention
|
|
38151
38243
|
}) {
|
|
38152
38244
|
const shellLess = shell === "none";
|
|
38153
38245
|
const runtime = useRequiredChatRuntime();
|
|
@@ -38318,6 +38410,11 @@ function EmbeddableChatInner({
|
|
|
38318
38410
|
setMentionQuery(null);
|
|
38319
38411
|
mentionKeyRef.current = null;
|
|
38320
38412
|
}, [activeDialogId, activeMode]);
|
|
38413
|
+
const mentionMarkerByType = useMemo33(() => {
|
|
38414
|
+
const m = /* @__PURE__ */ new Map();
|
|
38415
|
+
for (const t of contextPicker?.entityTypes ?? []) if (t.marker) m.set(t.type, t.marker);
|
|
38416
|
+
return m;
|
|
38417
|
+
}, [contextPicker?.entityTypes]);
|
|
38321
38418
|
const toggleContextItem = useCallback46(
|
|
38322
38419
|
(item) => {
|
|
38323
38420
|
const key = `${item.type}:${item.id}`;
|
|
@@ -38327,7 +38424,7 @@ function EmbeddableChatInner({
|
|
|
38327
38424
|
);
|
|
38328
38425
|
const grows = !alreadySelected && !mentionKeyRef.current;
|
|
38329
38426
|
if (grows && contextItems.length >= contextMaxItems) return;
|
|
38330
|
-
chatInputRef.current?.commitMention(key);
|
|
38427
|
+
chatInputRef.current?.commitMention(mentionTokenOf(key, mentionMarkerByType));
|
|
38331
38428
|
setContextItems((prev) => {
|
|
38332
38429
|
const withoutPrevMention = mentionKeyRef.current ? prev.filter((p) => `${p.type}:${p.id}` !== mentionKeyRef.current) : prev;
|
|
38333
38430
|
const deduped = withoutPrevMention.filter(
|
|
@@ -38345,7 +38442,7 @@ function EmbeddableChatInner({
|
|
|
38345
38442
|
return [...prev, item];
|
|
38346
38443
|
});
|
|
38347
38444
|
},
|
|
38348
|
-
[contextMaxItems, contextItems]
|
|
38445
|
+
[contextMaxItems, contextItems, mentionMarkerByType]
|
|
38349
38446
|
);
|
|
38350
38447
|
const removeContextItem = useCallback46((item) => {
|
|
38351
38448
|
const key = `${item.type}:${item.id}`;
|
|
@@ -38353,18 +38450,18 @@ function EmbeddableChatInner({
|
|
|
38353
38450
|
if (mentionKeyRef.current === key) {
|
|
38354
38451
|
mentionKeyRef.current = null;
|
|
38355
38452
|
const cur = chatInputRef.current?.getValue() ?? "";
|
|
38356
|
-
const next = cur.replace(`@${key}`, "").replace(/\s{2,}/g, " ").trimStart();
|
|
38453
|
+
const next = cur.replace(`@${mentionTokenOf(key, mentionMarkerByType)}`, "").replace(/\s{2,}/g, " ").trimStart();
|
|
38357
38454
|
chatInputRef.current?.setValue(next);
|
|
38358
38455
|
}
|
|
38359
|
-
}, []);
|
|
38456
|
+
}, [mentionMarkerByType]);
|
|
38360
38457
|
const handleContextValueChange = useCallback46((value) => {
|
|
38361
38458
|
const key = mentionKeyRef.current;
|
|
38362
38459
|
if (!key) return;
|
|
38363
|
-
if (!value.includes(`@${key}`)) {
|
|
38460
|
+
if (!value.includes(`@${mentionTokenOf(key, mentionMarkerByType)}`)) {
|
|
38364
38461
|
setContextItems((prev) => prev.filter((p) => `${p.type}:${p.id}` !== key));
|
|
38365
38462
|
mentionKeyRef.current = null;
|
|
38366
38463
|
}
|
|
38367
|
-
}, []);
|
|
38464
|
+
}, [mentionMarkerByType]);
|
|
38368
38465
|
const openContextPicker = useCallback46(() => {
|
|
38369
38466
|
setMentionQuery(null);
|
|
38370
38467
|
setContextPickerOpen(true);
|
|
@@ -38652,6 +38749,7 @@ function EmbeddableChatInner({
|
|
|
38652
38749
|
assistantIcon: mingoAssistantIcon,
|
|
38653
38750
|
renderEntityCard,
|
|
38654
38751
|
resolveContextIcon,
|
|
38752
|
+
renderMention,
|
|
38655
38753
|
NavLinkAnchor: NavLinkAnchorViaRuntime,
|
|
38656
38754
|
className: "flex-1",
|
|
38657
38755
|
contentClassName: "max-w-none pb-0",
|
|
@@ -38859,7 +38957,7 @@ function EmbeddableChatInner({
|
|
|
38859
38957
|
]
|
|
38860
38958
|
}
|
|
38861
38959
|
) }) });
|
|
38862
|
-
return /* @__PURE__ */ jsxs226(
|
|
38960
|
+
return /* @__PURE__ */ jsxs226(Fragment61, { children: [
|
|
38863
38961
|
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx283(
|
|
38864
38962
|
"div",
|
|
38865
38963
|
{
|
|
@@ -39057,6 +39155,7 @@ export {
|
|
|
39057
39155
|
ChatInput,
|
|
39058
39156
|
ToolExecutionDisplay,
|
|
39059
39157
|
remarkCardLinks,
|
|
39158
|
+
remarkMentionChips,
|
|
39060
39159
|
BlockCard,
|
|
39061
39160
|
CONTEXT_ROW_CLASS,
|
|
39062
39161
|
CONTEXT_ICON_CLASS,
|
|
@@ -39461,4 +39560,4 @@ export {
|
|
|
39461
39560
|
LogsList,
|
|
39462
39561
|
assets
|
|
39463
39562
|
};
|
|
39464
|
-
//# sourceMappingURL=chunk-
|
|
39563
|
+
//# sourceMappingURL=chunk-5FK7X3EE.js.map
|