@flamingo-stack/openframe-frontend-core 0.0.479 → 0.0.480-snapshot.20260724201901
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-A56QSYYE.js → chunk-2DIOV7BR.js} +4 -4
- package/dist/{chunk-4PIISCMH.js → chunk-4SMRQ4SN.js} +2 -2
- package/dist/{chunk-MKLZ6SRA.js → chunk-66BNAFO6.js} +4 -4
- package/dist/{chunk-PZYIEVIV.cjs → chunk-AN47EIIJ.cjs} +59 -59
- package/dist/{chunk-PZYIEVIV.cjs.map → chunk-AN47EIIJ.cjs.map} +1 -1
- package/dist/{chunk-THGA7UZZ.js → chunk-BBUEY73L.js} +235 -213
- package/dist/chunk-BBUEY73L.js.map +1 -0
- package/dist/{chunk-7URE6XMT.js → chunk-DEHZ5CTC.js} +2 -2
- package/dist/{chunk-VWHYXVRX.js → chunk-FP4H6Y5O.js} +2 -2
- package/dist/{chunk-M6NVQVZQ.cjs → chunk-H6DFCF44.cjs} +62 -62
- package/dist/{chunk-M6NVQVZQ.cjs.map → chunk-H6DFCF44.cjs.map} +1 -1
- package/dist/{chunk-LZ64BSR5.cjs → chunk-INDFIVDV.cjs} +7 -7
- package/dist/{chunk-LZ64BSR5.cjs.map → chunk-INDFIVDV.cjs.map} +1 -1
- package/dist/{chunk-46C2MVQG.cjs → chunk-JUJY3HQS.cjs} +15 -15
- package/dist/{chunk-46C2MVQG.cjs.map → chunk-JUJY3HQS.cjs.map} +1 -1
- package/dist/{chunk-LJWIWLD3.cjs → chunk-LK623WCC.cjs} +9 -9
- package/dist/{chunk-LJWIWLD3.cjs.map → chunk-LK623WCC.cjs.map} +1 -1
- package/dist/{chunk-JLRAUI7V.cjs → chunk-LNKWY74S.cjs} +5 -5
- package/dist/{chunk-JLRAUI7V.cjs.map → chunk-LNKWY74S.cjs.map} +1 -1
- package/dist/{chunk-KXUP44QJ.cjs → chunk-M7O74OWG.cjs} +31 -31
- package/dist/{chunk-KXUP44QJ.cjs.map → chunk-M7O74OWG.cjs.map} +1 -1
- package/dist/{chunk-WTH5WXOH.js → chunk-MGKCS6KS.js} +2 -2
- package/dist/{chunk-FMSKP2SZ.cjs → chunk-MMCBQJKE.cjs} +11 -11
- package/dist/{chunk-FMSKP2SZ.cjs.map → chunk-MMCBQJKE.cjs.map} +1 -1
- package/dist/{chunk-XU7AXADL.cjs → chunk-N2JZ33V7.cjs} +26 -26
- package/dist/{chunk-XU7AXADL.cjs.map → chunk-N2JZ33V7.cjs.map} +1 -1
- package/dist/{chunk-I7S4ZLHX.cjs → chunk-OWMLWJQY.cjs} +816 -794
- package/dist/chunk-OWMLWJQY.cjs.map +1 -0
- package/dist/{chunk-MXXGD6HW.cjs → chunk-OZJN54R5.cjs} +37 -37
- package/dist/{chunk-MXXGD6HW.cjs.map → chunk-OZJN54R5.cjs.map} +1 -1
- package/dist/{chunk-RYVF3SQE.js → chunk-PSPWT2Q5.js} +4 -4
- package/dist/{chunk-5VGG3W43.js → chunk-R5WJJL4V.js} +4 -4
- package/dist/{chunk-AQG6DSFV.js → chunk-VTSRDC4W.js} +2 -2
- package/dist/{chunk-UTCQZ4IP.js → chunk-Y3Y2DLNO.js} +2 -2
- package/dist/{chunk-ECF7DKWA.js → chunk-ZRANZNEA.js} +2 -2
- package/dist/{chunk-6MQIGRAR.cjs → chunk-ZV6E3U3C.cjs} +26 -26
- package/dist/{chunk-6MQIGRAR.cjs.map → chunk-ZV6E3U3C.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/hooks/use-nats-chat-adapter.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +6 -0
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/chat/types/message.types.d.ts +10 -0
- package/dist/components/chat/types/message.types.d.ts.map +1 -1
- package/dist/components/chat/types/network.types.d.ts +2 -0
- package/dist/components/chat/types/network.types.d.ts.map +1 -1
- package/dist/components/chat/utils/chunk-parser.d.ts.map +1 -1
- package/dist/components/chat/utils/extract-incomplete-message-state.d.ts.map +1 -1
- package/dist/components/chat/utils/message-segment-accumulator.d.ts.map +1 -1
- package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +130 -130
- package/dist/components/index.js +9 -9
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/chat/chat-message-enhanced.tsx +1 -0
- package/src/components/chat/hooks/use-nats-chat-adapter.ts +1 -0
- package/src/components/chat/tool-execution-display.tsx +97 -54
- package/src/components/chat/types/component.types.ts +6 -0
- package/src/components/chat/types/message.types.ts +10 -0
- package/src/components/chat/types/network.types.ts +2 -0
- package/src/components/chat/utils/chunk-parser.ts +1 -0
- package/src/components/chat/utils/extract-incomplete-message-state.ts +1 -0
- package/src/components/chat/utils/message-segment-accumulator.ts +3 -0
- package/src/components/chat/utils/process-historical-messages.ts +1 -0
- package/src/components/ui/select.tsx +4 -1
- package/dist/chunk-I7S4ZLHX.cjs.map +0 -1
- package/dist/chunk-THGA7UZZ.js.map +0 -1
- /package/dist/{chunk-A56QSYYE.js.map → chunk-2DIOV7BR.js.map} +0 -0
- /package/dist/{chunk-4PIISCMH.js.map → chunk-4SMRQ4SN.js.map} +0 -0
- /package/dist/{chunk-MKLZ6SRA.js.map → chunk-66BNAFO6.js.map} +0 -0
- /package/dist/{chunk-7URE6XMT.js.map → chunk-DEHZ5CTC.js.map} +0 -0
- /package/dist/{chunk-VWHYXVRX.js.map → chunk-FP4H6Y5O.js.map} +0 -0
- /package/dist/{chunk-WTH5WXOH.js.map → chunk-MGKCS6KS.js.map} +0 -0
- /package/dist/{chunk-RYVF3SQE.js.map → chunk-PSPWT2Q5.js.map} +0 -0
- /package/dist/{chunk-5VGG3W43.js.map → chunk-R5WJJL4V.js.map} +0 -0
- /package/dist/{chunk-AQG6DSFV.js.map → chunk-VTSRDC4W.js.map} +0 -0
- /package/dist/{chunk-UTCQZ4IP.js.map → chunk-Y3Y2DLNO.js.map} +0 -0
- /package/dist/{chunk-ECF7DKWA.js.map → chunk-ZRANZNEA.js.map} +0 -0
|
@@ -4899,23 +4899,30 @@ var formatTime = (input) => format(input, timeFmt);
|
|
|
4899
4899
|
// src/components/chat/tool-execution-display.tsx
|
|
4900
4900
|
init_cn();
|
|
4901
4901
|
import { forwardRef as forwardRef10, useMemo as useMemo5, useState as useState9 } from "react";
|
|
4902
|
-
import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4902
|
+
import { Fragment as Fragment4, jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4903
4903
|
var COMMAND_BODY_KEYS2 = new Set(COMMAND_BODY_ARG_KEYS);
|
|
4904
4904
|
var ToolExecutionDisplay = forwardRef10(
|
|
4905
|
-
({ className, message: message2, assistantType, ...props }, ref) => {
|
|
4905
|
+
({ className, message: message2, assistantType, variant = "admin", ...props }, ref) => {
|
|
4906
4906
|
const [expanded, setExpanded] = useState9(false);
|
|
4907
4907
|
const { innerRef, containerStyle } = useCollapsible({ expanded });
|
|
4908
4908
|
const isClient = assistantType === "fae";
|
|
4909
|
+
const isClientView = variant === "client";
|
|
4909
4910
|
const isExecuting = message2.type === "EXECUTING_TOOL";
|
|
4910
4911
|
const isExecuted = message2.type === "EXECUTED_TOOL";
|
|
4911
4912
|
const integratedToolType = message2.integratedToolType || "OPENFRAME";
|
|
4912
|
-
const previewText = message2.toolTitle;
|
|
4913
|
+
const previewText = variant === "client" ? message2.toolExplanation?.trim() : message2.toolTitle?.trim();
|
|
4913
4914
|
const argEntries = useMemo5(() => {
|
|
4914
4915
|
if (!message2.parameters || typeof message2.parameters !== "object") return [];
|
|
4915
|
-
|
|
4916
|
-
([
|
|
4916
|
+
const entries = Object.entries(message2.parameters).filter(
|
|
4917
|
+
([, v]) => v !== null && v !== void 0 && v !== ""
|
|
4917
4918
|
);
|
|
4918
|
-
|
|
4919
|
+
if (variant === "client") {
|
|
4920
|
+
return entries.filter(([k]) => !COMMAND_BODY_KEYS2.has(k));
|
|
4921
|
+
}
|
|
4922
|
+
const commandEntries = entries.filter(([k]) => COMMAND_BODY_KEYS2.has(k));
|
|
4923
|
+
const otherEntries = entries.filter(([k]) => !COMMAND_BODY_KEYS2.has(k));
|
|
4924
|
+
return [...commandEntries, ...otherEntries];
|
|
4925
|
+
}, [message2.parameters, variant]);
|
|
4919
4926
|
const hasResult = isExecuted && typeof message2.result === "string" && message2.result.length > 0;
|
|
4920
4927
|
const hasBody = argEntries.length > 0 || hasResult || isExecuting;
|
|
4921
4928
|
const renderStatusIcon = () => {
|
|
@@ -4924,7 +4931,22 @@ var ToolExecutionDisplay = forwardRef10(
|
|
|
4924
4931
|
if (isExecuted && message2.success === false) return /* @__PURE__ */ jsx23(XmarkCircleIcon, { className: "w-4 h-4 text-ods-error" });
|
|
4925
4932
|
return null;
|
|
4926
4933
|
};
|
|
4927
|
-
|
|
4934
|
+
const headerContent = /* @__PURE__ */ jsxs19(Fragment4, { children: [
|
|
4935
|
+
!isClient && /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx23(ToolIcon, { toolType: integratedToolType, size: 16 }) }),
|
|
4936
|
+
/* @__PURE__ */ jsx23(
|
|
4937
|
+
"div",
|
|
4938
|
+
{
|
|
4939
|
+
className: cn(
|
|
4940
|
+
"flex-1 min-w-0 text-h6",
|
|
4941
|
+
isClientView ? "text-ods-text-primary whitespace-pre-wrap break-words" : expanded ? "text-ods-text-primary whitespace-pre-wrap break-all" : "text-ods-text-secondary line-clamp-2 max-h-10 break-all"
|
|
4942
|
+
),
|
|
4943
|
+
children: previewText
|
|
4944
|
+
}
|
|
4945
|
+
),
|
|
4946
|
+
/* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: renderStatusIcon() }),
|
|
4947
|
+
!isClientView && /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx23(ExpandChevron, { expanded }) })
|
|
4948
|
+
] });
|
|
4949
|
+
return /* @__PURE__ */ jsx23(
|
|
4928
4950
|
"div",
|
|
4929
4951
|
{
|
|
4930
4952
|
ref,
|
|
@@ -4935,28 +4957,18 @@ var ToolExecutionDisplay = forwardRef10(
|
|
|
4935
4957
|
className
|
|
4936
4958
|
),
|
|
4937
4959
|
...props,
|
|
4938
|
-
children:
|
|
4939
|
-
|
|
4960
|
+
children: isClientView ? (
|
|
4961
|
+
// Client (Fae end-user): static, non-expandable row — no chevron, no
|
|
4962
|
+
// body. Just the explanation + status; command/args/result are hidden.
|
|
4963
|
+
/* @__PURE__ */ jsx23("div", { className: "flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] w-full text-left", children: headerContent })
|
|
4964
|
+
) : /* @__PURE__ */ jsxs19(Fragment4, { children: [
|
|
4965
|
+
/* @__PURE__ */ jsx23(
|
|
4940
4966
|
"button",
|
|
4941
4967
|
{
|
|
4942
4968
|
type: "button",
|
|
4943
4969
|
className: "flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] cursor-pointer text-left w-full",
|
|
4944
4970
|
onClick: () => setExpanded((prev) => !prev),
|
|
4945
|
-
children:
|
|
4946
|
-
!isClient && /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx23(ToolIcon, { toolType: integratedToolType, size: 16 }) }),
|
|
4947
|
-
/* @__PURE__ */ jsx23(
|
|
4948
|
-
"div",
|
|
4949
|
-
{
|
|
4950
|
-
className: cn(
|
|
4951
|
-
"flex-1 min-w-0 text-h6",
|
|
4952
|
-
expanded ? "text-ods-text-primary whitespace-pre-wrap break-all" : "text-ods-text-secondary line-clamp-2 max-h-10 break-all"
|
|
4953
|
-
),
|
|
4954
|
-
children: previewText
|
|
4955
|
-
}
|
|
4956
|
-
),
|
|
4957
|
-
/* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: renderStatusIcon() }),
|
|
4958
|
-
/* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ jsx23(ExpandChevron, { expanded }) })
|
|
4959
|
-
]
|
|
4971
|
+
children: headerContent
|
|
4960
4972
|
}
|
|
4961
4973
|
),
|
|
4962
4974
|
/* @__PURE__ */ jsx23("div", { className: "w-full", style: containerStyle, children: /* @__PURE__ */ jsx23("div", { ref: innerRef, children: hasBody && /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-0 items-start w-full text-h6 p-[var(--spacing-system-sf)] bg-ods-card", children: [
|
|
@@ -4982,7 +4994,7 @@ var ToolExecutionDisplay = forwardRef10(
|
|
|
4982
4994
|
}
|
|
4983
4995
|
)
|
|
4984
4996
|
] }) }) })
|
|
4985
|
-
]
|
|
4997
|
+
] })
|
|
4986
4998
|
}
|
|
4987
4999
|
);
|
|
4988
5000
|
}
|
|
@@ -5076,13 +5088,13 @@ function BlockCard(_props) {
|
|
|
5076
5088
|
|
|
5077
5089
|
// src/components/chat/chat-context-picker.tsx
|
|
5078
5090
|
import { QueryErrorResetBoundary } from "@tanstack/react-query";
|
|
5079
|
-
import { Fragment as
|
|
5091
|
+
import { Fragment as Fragment6, Suspense, useCallback as useCallback6, useEffect as useEffect5, useLayoutEffect as useLayoutEffect3, useMemo as useMemo6, useRef as useRef6, useState as useState10 } from "react";
|
|
5080
5092
|
init_cn();
|
|
5081
5093
|
|
|
5082
5094
|
// src/components/chat/context-items-list.tsx
|
|
5083
5095
|
import * as React9 from "react";
|
|
5084
5096
|
init_cn();
|
|
5085
|
-
import { Fragment as
|
|
5097
|
+
import { Fragment as Fragment5, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5086
5098
|
var itemKey = (i) => `${i.type}:${i.id}`;
|
|
5087
5099
|
var CONTEXT_ROW_CLASS = "flex w-full items-center gap-2 border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 text-left outline-none transition-colors last:border-b-0 hover:bg-ods-bg-hover focus-visible:bg-ods-bg-hover [&_svg]:size-4 md:[&_svg]:size-6";
|
|
5088
5100
|
var CONTEXT_ICON_CLASS = "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary md:size-6";
|
|
@@ -5118,7 +5130,7 @@ function ContextMenuRow({
|
|
|
5118
5130
|
);
|
|
5119
5131
|
}
|
|
5120
5132
|
function ContextItemsSkeleton({ count }) {
|
|
5121
|
-
return /* @__PURE__ */ jsx24(
|
|
5133
|
+
return /* @__PURE__ */ jsx24(Fragment5, { children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ jsx24(
|
|
5122
5134
|
"div",
|
|
5123
5135
|
{
|
|
5124
5136
|
className: "flex items-center border-b border-ods-border bg-ods-bg py-3 pl-4 pr-2 last:border-b-0",
|
|
@@ -5201,7 +5213,7 @@ var ContextErrorBoundary = class extends React9.Component {
|
|
|
5201
5213
|
};
|
|
5202
5214
|
|
|
5203
5215
|
// src/components/chat/chat-context-picker.tsx
|
|
5204
|
-
import { Fragment as
|
|
5216
|
+
import { Fragment as Fragment7, jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5205
5217
|
var CHAT_CONTEXT_ITEMS_DEFAULT_MAX = 10;
|
|
5206
5218
|
var ITEMS_SKELETON_ROWS = 10;
|
|
5207
5219
|
var SEARCH_DEBOUNCE_MS = 300;
|
|
@@ -5387,7 +5399,7 @@ function ChatContextPicker({
|
|
|
5387
5399
|
] })
|
|
5388
5400
|
) : activeType ? (
|
|
5389
5401
|
/* Level 2 — Back + search + HOST-rendered items (Figma 31:29102). */
|
|
5390
|
-
/* @__PURE__ */ jsxs21(
|
|
5402
|
+
/* @__PURE__ */ jsxs21(Fragment7, { children: [
|
|
5391
5403
|
/* @__PURE__ */ jsxs21("button", { type: "button", onClick: backToTypes, className: cn(CONTEXT_BACK_CLASS, "sticky top-0 z-10"), children: [
|
|
5392
5404
|
/* @__PURE__ */ jsx25(Chevron02LeftIcon, { size: 24, className: "shrink-0" }),
|
|
5393
5405
|
/* @__PURE__ */ jsx25("span", { className: "truncate", children: "Back" })
|
|
@@ -5458,7 +5470,7 @@ function ChatContextChipStrip({
|
|
|
5458
5470
|
// uppercase label, 16px lead icon + xmark-circle remove. Wraps to new rows.
|
|
5459
5471
|
/* @__PURE__ */ jsx25("div", { className: cn("flex flex-wrap content-center items-center gap-2", className), children: items.map((item) => {
|
|
5460
5472
|
const hostNode = renderItem?.(item);
|
|
5461
|
-
if (hostNode != null) return /* @__PURE__ */ jsx25(
|
|
5473
|
+
if (hostNode != null) return /* @__PURE__ */ jsx25(Fragment6, { children: hostNode }, itemKey2(item));
|
|
5462
5474
|
return /* @__PURE__ */ jsxs21(
|
|
5463
5475
|
"div",
|
|
5464
5476
|
{
|
|
@@ -5495,7 +5507,7 @@ function ChatContextChipStrip({
|
|
|
5495
5507
|
}
|
|
5496
5508
|
|
|
5497
5509
|
// src/components/chat/chat-message-enhanced.tsx
|
|
5498
|
-
import { Fragment as
|
|
5510
|
+
import { Fragment as Fragment8, jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5499
5511
|
var MENTION_MARKER_REGEX = /(^|[^\w@])@[a-z]+:([A-Za-z0-9_.+/=-]*[A-Za-z0-9_+/=])/g;
|
|
5500
5512
|
var CARD_MARKER_REGEX = /\[card:\/\/([a-zA-Z0-9_-]+):([a-zA-Z0-9_-]+)[\])]/g;
|
|
5501
5513
|
function formatMessageTimestamp(timestamp) {
|
|
@@ -5627,7 +5639,7 @@ var ChatMessageEnhanced = forwardRef11(
|
|
|
5627
5639
|
const marker = sepIdx === -1 ? stripped : stripped.slice(0, sepIdx);
|
|
5628
5640
|
const id = sepIdx === -1 ? "" : stripped.slice(sepIdx + 1);
|
|
5629
5641
|
const node = renderMention?.({ marker, id });
|
|
5630
|
-
if (node != null) return /* @__PURE__ */ jsx26(
|
|
5642
|
+
if (node != null) return /* @__PURE__ */ jsx26(Fragment8, { children: node });
|
|
5631
5643
|
return /* @__PURE__ */ jsx26("span", { className: "text-ods-text-secondary opacity-60", children });
|
|
5632
5644
|
}
|
|
5633
5645
|
if (typeof href === "string" && href.startsWith("card://")) {
|
|
@@ -5741,7 +5753,8 @@ var ChatMessageEnhanced = forwardRef11(
|
|
|
5741
5753
|
ToolExecutionDisplay,
|
|
5742
5754
|
{
|
|
5743
5755
|
message: segment.data,
|
|
5744
|
-
assistantType
|
|
5756
|
+
assistantType,
|
|
5757
|
+
variant: approvalVariant
|
|
5745
5758
|
},
|
|
5746
5759
|
index
|
|
5747
5760
|
);
|
|
@@ -6517,7 +6530,7 @@ function EntityIcon({
|
|
|
6517
6530
|
}
|
|
6518
6531
|
|
|
6519
6532
|
// src/components/chat/quick-action-chip.tsx
|
|
6520
|
-
import { Fragment as
|
|
6533
|
+
import { Fragment as Fragment9, jsx as jsx33, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
6521
6534
|
var AGENT_ACCENTS = { fae: "pink", mingo: "cyan" };
|
|
6522
6535
|
function getAgentAccent(slug) {
|
|
6523
6536
|
return slug === "fae" || slug === "mingo" ? AGENT_ACCENTS[slug] : void 0;
|
|
@@ -6552,7 +6565,7 @@ function renderQuickActionIcon(icon) {
|
|
|
6552
6565
|
}
|
|
6553
6566
|
function composeChipLabel(label, lozenge) {
|
|
6554
6567
|
if (!lozenge) return label;
|
|
6555
|
-
return /* @__PURE__ */ jsxs27(
|
|
6568
|
+
return /* @__PURE__ */ jsxs27(Fragment9, { children: [
|
|
6556
6569
|
/* @__PURE__ */ jsx33(
|
|
6557
6570
|
"span",
|
|
6558
6571
|
{
|
|
@@ -6583,7 +6596,7 @@ function QuickActionChipSkeleton({ labelCh = 16, icon = true, lozenge = false, s
|
|
|
6583
6596
|
size: size2,
|
|
6584
6597
|
className,
|
|
6585
6598
|
icon: icon ? /* @__PURE__ */ jsx33(ChipSkelBar, { className: size2 === "large" ? "block size-5" : "block size-4" }) : void 0,
|
|
6586
|
-
label: /* @__PURE__ */ jsxs27(
|
|
6599
|
+
label: /* @__PURE__ */ jsxs27(Fragment9, { children: [
|
|
6587
6600
|
lozenge && /* @__PURE__ */ jsx33(ChipSkelBar, { className: "mr-2 inline-block h-[16px] w-[26px] translate-y-[2px]" }),
|
|
6588
6601
|
/* @__PURE__ */ jsx33(ChipSkelBar, { className: "inline-block h-[0.9em] translate-y-[0.08em]", style: { width: `${labelCh}ch` } })
|
|
6589
6602
|
] })
|
|
@@ -6667,7 +6680,7 @@ import * as React13 from "react";
|
|
|
6667
6680
|
// src/components/ui/marquee-wall.tsx
|
|
6668
6681
|
init_cn();
|
|
6669
6682
|
import * as React12 from "react";
|
|
6670
|
-
import { Fragment as
|
|
6683
|
+
import { Fragment as Fragment10, jsx as jsx34, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
6671
6684
|
function normalizeFades(fade) {
|
|
6672
6685
|
return fade ? Array.isArray(fade) ? fade : [fade] : [];
|
|
6673
6686
|
}
|
|
@@ -6711,7 +6724,7 @@ function MarqueeWallFades({
|
|
|
6711
6724
|
fadeColor = "var(--color-bg)",
|
|
6712
6725
|
fadeSize
|
|
6713
6726
|
}) {
|
|
6714
|
-
return /* @__PURE__ */ jsx34(
|
|
6727
|
+
return /* @__PURE__ */ jsx34(Fragment10, { children: normalizeFades(fade).map((edge) => {
|
|
6715
6728
|
const size2 = (typeof fadeSize === "object" && fadeSize !== null ? fadeSize[edge] : fadeSize) ?? DEFAULT_FADE_SIZE[edge];
|
|
6716
6729
|
const px = typeof size2 === "number" ? `${size2}px` : size2;
|
|
6717
6730
|
const isY = edge === "top" || edge === "bottom";
|
|
@@ -7811,7 +7824,7 @@ function MingoChatHistory({
|
|
|
7811
7824
|
|
|
7812
7825
|
// src/components/chat/mingo-welcome.tsx
|
|
7813
7826
|
init_button2();
|
|
7814
|
-
import { Fragment as
|
|
7827
|
+
import { Fragment as Fragment11, jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
7815
7828
|
var DEFAULT_SUBTITLE = "Ready to help with your technical tasks. What can I do for you?";
|
|
7816
7829
|
var DEFAULT_PROMO = {
|
|
7817
7830
|
title: "New to OpenFrame?",
|
|
@@ -7884,7 +7897,7 @@ function MingoWelcome({
|
|
|
7884
7897
|
children: "Try again"
|
|
7885
7898
|
}
|
|
7886
7899
|
)
|
|
7887
|
-
] }) : isLoadingHistory ? /* @__PURE__ */ jsx43(MingoChatHistorySkeleton, {}) : /* @__PURE__ */ jsx43(
|
|
7900
|
+
] }) : isLoadingHistory ? /* @__PURE__ */ jsx43(MingoChatHistorySkeleton, {}) : /* @__PURE__ */ jsx43(Fragment11, { children: /* @__PURE__ */ jsxs35("div", { className: "relative flex flex-1 min-h-0 flex-col", children: [
|
|
7888
7901
|
/* @__PURE__ */ jsx43(
|
|
7889
7902
|
"div",
|
|
7890
7903
|
{
|
|
@@ -8442,7 +8455,7 @@ var ModalFooter = React23.forwardRef(
|
|
|
8442
8455
|
ModalFooter.displayName = "ModalV2Footer";
|
|
8443
8456
|
|
|
8444
8457
|
// src/components/chat/mingo-chat-modals.tsx
|
|
8445
|
-
import { Fragment as
|
|
8458
|
+
import { Fragment as Fragment12, jsx as jsx50, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
8446
8459
|
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";
|
|
8447
8460
|
var cancelBtn = cn(
|
|
8448
8461
|
footerBtn,
|
|
@@ -8533,7 +8546,7 @@ function ChatDialogModals({
|
|
|
8533
8546
|
setRestoreTarget,
|
|
8534
8547
|
onConfirmRestore
|
|
8535
8548
|
}) {
|
|
8536
|
-
return /* @__PURE__ */ jsxs41(
|
|
8549
|
+
return /* @__PURE__ */ jsxs41(Fragment12, { children: [
|
|
8537
8550
|
/* @__PURE__ */ jsx50(
|
|
8538
8551
|
RenameChatModal,
|
|
8539
8552
|
{
|
|
@@ -8757,7 +8770,7 @@ function ChatPanelHeaderMobile({
|
|
|
8757
8770
|
}
|
|
8758
8771
|
|
|
8759
8772
|
// src/components/chat/chat-panel-header.tsx
|
|
8760
|
-
import { Fragment as
|
|
8773
|
+
import { Fragment as Fragment13, jsx as jsx54, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
8761
8774
|
function ChatPanelHeader({
|
|
8762
8775
|
showBack = false,
|
|
8763
8776
|
title,
|
|
@@ -8782,7 +8795,7 @@ function ChatPanelHeader({
|
|
|
8782
8795
|
onRename && { id: "rename", label: "Rename chat", onClick: onRename },
|
|
8783
8796
|
onArchive && { id: "archive", label: "Archive chat", onClick: onArchive }
|
|
8784
8797
|
].filter(Boolean);
|
|
8785
|
-
return /* @__PURE__ */ jsxs44(
|
|
8798
|
+
return /* @__PURE__ */ jsxs44(Fragment13, { children: [
|
|
8786
8799
|
!compact && /* @__PURE__ */ jsx54(
|
|
8787
8800
|
ChatPanelHeaderMobile,
|
|
8788
8801
|
{
|
|
@@ -8941,7 +8954,7 @@ function stripChatAttachmentMarkdown(text) {
|
|
|
8941
8954
|
}
|
|
8942
8955
|
|
|
8943
8956
|
// src/components/chat/chat-attachment-bar.tsx
|
|
8944
|
-
import { Fragment as
|
|
8957
|
+
import { Fragment as Fragment14, jsx as jsx55, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
8945
8958
|
var CHAT_ATTACHMENT_MIME_TYPES = [
|
|
8946
8959
|
"image/jpeg",
|
|
8947
8960
|
"image/png",
|
|
@@ -8974,7 +8987,7 @@ function ChatAttachmentAddButton({
|
|
|
8974
8987
|
if (!canAddMore) return;
|
|
8975
8988
|
fileInputRef.current?.click();
|
|
8976
8989
|
};
|
|
8977
|
-
return /* @__PURE__ */ jsxs45(
|
|
8990
|
+
return /* @__PURE__ */ jsxs45(Fragment14, { children: [
|
|
8978
8991
|
/* @__PURE__ */ jsx55(
|
|
8979
8992
|
"input",
|
|
8980
8993
|
{
|
|
@@ -9564,7 +9577,7 @@ function ChatComposer({
|
|
|
9564
9577
|
}
|
|
9565
9578
|
|
|
9566
9579
|
// src/components/chat/chat-archive-page.tsx
|
|
9567
|
-
import { Fragment as
|
|
9580
|
+
import { Fragment as Fragment15, jsx as jsx60, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
9568
9581
|
function ChatArchivePage(props) {
|
|
9569
9582
|
const {
|
|
9570
9583
|
dialogs,
|
|
@@ -9574,7 +9587,7 @@ function ChatArchivePage(props) {
|
|
|
9574
9587
|
hasMore = false,
|
|
9575
9588
|
onLoadMore
|
|
9576
9589
|
} = props;
|
|
9577
|
-
return /* @__PURE__ */ jsxs49(
|
|
9590
|
+
return /* @__PURE__ */ jsxs49(Fragment15, { children: [
|
|
9578
9591
|
!props.embedded && /* @__PURE__ */ jsx60(
|
|
9579
9592
|
ChatPanelHeaderMobile,
|
|
9580
9593
|
{
|
|
@@ -9694,7 +9707,7 @@ var ChatSidebarSkeleton = React30.forwardRef(
|
|
|
9694
9707
|
ChatSidebarSkeleton.displayName = "ChatSidebarSkeleton";
|
|
9695
9708
|
|
|
9696
9709
|
// src/components/chat/chat-sidebar.tsx
|
|
9697
|
-
import { Fragment as
|
|
9710
|
+
import { Fragment as Fragment16, jsx as jsx62, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
9698
9711
|
var DialogListItem = forwardRef20(
|
|
9699
9712
|
({ className, dialog, isActive, onDialogSelect, onClick, ...props }, ref) => {
|
|
9700
9713
|
const handleClick = (e) => {
|
|
@@ -9823,7 +9836,7 @@ var ChatSidebar = forwardRef20(
|
|
|
9823
9836
|
},
|
|
9824
9837
|
dialog.id
|
|
9825
9838
|
)),
|
|
9826
|
-
hasNextPage && /* @__PURE__ */ jsx62("div", { ref: loadMoreRef, children: isFetchingNextPage && /* @__PURE__ */ jsxs51(
|
|
9839
|
+
hasNextPage && /* @__PURE__ */ jsx62("div", { ref: loadMoreRef, children: isFetchingNextPage && /* @__PURE__ */ jsxs51(Fragment16, { children: [
|
|
9827
9840
|
/* @__PURE__ */ jsx62(DialogListItemSkeleton, {}),
|
|
9828
9841
|
/* @__PURE__ */ jsx62(DialogListItemSkeleton, {}),
|
|
9829
9842
|
/* @__PURE__ */ jsx62(DialogListItemSkeleton, {})
|
|
@@ -10704,7 +10717,7 @@ function PlatformBadge({
|
|
|
10704
10717
|
}
|
|
10705
10718
|
|
|
10706
10719
|
// src/components/chat/entity-cards/admin-content-card.tsx
|
|
10707
|
-
import { Fragment as
|
|
10720
|
+
import { Fragment as Fragment17, jsx as jsx73, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
10708
10721
|
function AdminContentCard({
|
|
10709
10722
|
imageUrl,
|
|
10710
10723
|
placeholderUrl,
|
|
@@ -10738,7 +10751,7 @@ function AdminContentCard({
|
|
|
10738
10751
|
{
|
|
10739
10752
|
className: "relative aspect-[3/2] w-full overflow-hidden shrink-0",
|
|
10740
10753
|
style: { backgroundColor: imageBgColor },
|
|
10741
|
-
children: displayUrl ? /* @__PURE__ */ jsxs57(
|
|
10754
|
+
children: displayUrl ? /* @__PURE__ */ jsxs57(Fragment17, { children: [
|
|
10742
10755
|
!imageLoaded && /* @__PURE__ */ jsx73("div", { className: "absolute inset-0 animate-pulse bg-ods-border/20" }),
|
|
10743
10756
|
/* @__PURE__ */ jsx73(
|
|
10744
10757
|
next_image_default,
|
|
@@ -10798,7 +10811,7 @@ function getProxiedImageUrl2(imageUrl) {
|
|
|
10798
10811
|
}
|
|
10799
10812
|
|
|
10800
10813
|
// src/components/chat/entity-cards/what-i-shipped-card.tsx
|
|
10801
|
-
import { Fragment as
|
|
10814
|
+
import { Fragment as Fragment18, jsx as jsx74, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
10802
10815
|
var STATUS_BADGE_CLASS = {
|
|
10803
10816
|
published: "bg-ods-success-secondary text-ods-success",
|
|
10804
10817
|
draft: "bg-ods-warning-secondary text-ods-warning",
|
|
@@ -10820,7 +10833,7 @@ function WhatIShippedCard({ entry, placeholderUrl, actions, anchorProps, classNa
|
|
|
10820
10833
|
children: entry.status
|
|
10821
10834
|
}
|
|
10822
10835
|
) : null,
|
|
10823
|
-
meta: /* @__PURE__ */ jsxs58(
|
|
10836
|
+
meta: /* @__PURE__ */ jsxs58(Fragment18, { children: [
|
|
10824
10837
|
/* @__PURE__ */ jsxs58("span", { className: "flex items-center gap-2 min-w-0", children: [
|
|
10825
10838
|
entry.author?.avatar_url ? /* @__PURE__ */ jsx74("img", { src: getProxiedImageUrl2(entry.author.avatar_url) ?? entry.author.avatar_url, alt: "", className: "h-5 w-5 rounded-full object-cover shrink-0" }) : null,
|
|
10826
10839
|
/* @__PURE__ */ jsx74("span", { className: "truncate", children: entry.author?.full_name ?? "" })
|
|
@@ -11539,7 +11552,7 @@ init_cn();
|
|
|
11539
11552
|
import { useMemo as useMemo17, useRef as useRef19, useState as useState28, useEffect as useEffect23 } from "react";
|
|
11540
11553
|
|
|
11541
11554
|
// src/components/features/video-ratio-tabs.tsx
|
|
11542
|
-
import { Fragment as
|
|
11555
|
+
import { Fragment as Fragment19, jsx as jsx78, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
11543
11556
|
var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-h6 text-ods-text-secondary data-[state=active]:text-ods-text-primary";
|
|
11544
11557
|
var RATIO_GRID_CLASS = {
|
|
11545
11558
|
portrait: "grid grid-cols-2 md:grid-cols-3 gap-4",
|
|
@@ -11564,7 +11577,7 @@ function RatioTabs({
|
|
|
11564
11577
|
const activeTabs = RATIO_TAB_CONFIG.filter((t) => groups[t.key].count > 0);
|
|
11565
11578
|
if (activeTabs.length <= 1) {
|
|
11566
11579
|
const active = activeTabs[0];
|
|
11567
|
-
return active ? /* @__PURE__ */ jsx78(
|
|
11580
|
+
return active ? /* @__PURE__ */ jsx78(Fragment19, { children: groups[active.key].render() }) : null;
|
|
11568
11581
|
}
|
|
11569
11582
|
const firstTab = defaultTab && groups[defaultTab].count > 0 ? defaultTab : activeTabs[0].key;
|
|
11570
11583
|
return /* @__PURE__ */ jsxs60(Tabs, { defaultValue: firstTab, className: `w-full ${className}`, children: [
|
|
@@ -11638,7 +11651,7 @@ import React37, { useCallback as useCallback14, useEffect as useEffect22, useMem
|
|
|
11638
11651
|
init_button2();
|
|
11639
11652
|
|
|
11640
11653
|
// src/components/layout/page-heading.tsx
|
|
11641
|
-
import { Fragment as
|
|
11654
|
+
import { Fragment as Fragment20, jsx as jsx79, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
11642
11655
|
var PAGE_HEADING_CLASS = "text-h1 text-ods-text-primary";
|
|
11643
11656
|
var SECTION_HEADING_CLASS = "text-h2 text-ods-text-primary";
|
|
11644
11657
|
var DESCRIPTION_CLASS = "mt-6 max-w-[640px] font-body text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary";
|
|
@@ -11652,14 +11665,14 @@ function PageHeading({
|
|
|
11652
11665
|
const headingClass = className ? `${PAGE_HEADING_CLASS} ${className}` : PAGE_HEADING_CLASS;
|
|
11653
11666
|
const descClass = descriptionClassName ? `${DESCRIPTION_CLASS} ${descriptionClassName}` : DESCRIPTION_CLASS;
|
|
11654
11667
|
const hasDescription = description != null && description !== "" && typeof description !== "boolean";
|
|
11655
|
-
return /* @__PURE__ */ jsxs61(
|
|
11668
|
+
return /* @__PURE__ */ jsxs61(Fragment20, { children: [
|
|
11656
11669
|
/* @__PURE__ */ jsx79(Tag2, { className: headingClass, children }),
|
|
11657
11670
|
hasDescription && /* @__PURE__ */ jsx79("p", { className: descClass, children: description })
|
|
11658
11671
|
] });
|
|
11659
11672
|
}
|
|
11660
11673
|
|
|
11661
11674
|
// src/components/features/cards-strip.tsx
|
|
11662
|
-
import { Fragment as
|
|
11675
|
+
import { Fragment as Fragment21, jsx as jsx80, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
11663
11676
|
var TRACK_GAP_PX = 16;
|
|
11664
11677
|
var CHEVRON_SUPPRESS_MS = 4e3;
|
|
11665
11678
|
var USER_SCROLL_SUPPRESS_MS = 3e3;
|
|
@@ -12027,7 +12040,7 @@ function CardsStrip(props) {
|
|
|
12027
12040
|
) })
|
|
12028
12041
|
}
|
|
12029
12042
|
),
|
|
12030
|
-
showChevrons && overflows && /* @__PURE__ */ jsxs62(
|
|
12043
|
+
showChevrons && overflows && /* @__PURE__ */ jsxs62(Fragment21, { children: [
|
|
12031
12044
|
/* @__PURE__ */ jsx80(
|
|
12032
12045
|
Button,
|
|
12033
12046
|
{
|
|
@@ -12087,7 +12100,7 @@ function UserDisplay({ name, avatarUrl, subtitle, size: size2 = 32, shape = "squ
|
|
|
12087
12100
|
}
|
|
12088
12101
|
|
|
12089
12102
|
// src/components/features/video-bites-strip.tsx
|
|
12090
|
-
import { Fragment as
|
|
12103
|
+
import { Fragment as Fragment22, jsx as jsx82, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
12091
12104
|
function VideoBitesStrip({
|
|
12092
12105
|
bites,
|
|
12093
12106
|
title = DEFAULT_VIDEO_BITES_TITLE,
|
|
@@ -12210,7 +12223,7 @@ function VideoBiteCard({
|
|
|
12210
12223
|
if (isTouch && !isActive) activate();
|
|
12211
12224
|
};
|
|
12212
12225
|
const titleClass = "text-h6 text-ods-text-primary";
|
|
12213
|
-
const overlayContent = /* @__PURE__ */ jsxs64(
|
|
12226
|
+
const overlayContent = /* @__PURE__ */ jsxs64(Fragment22, { children: [
|
|
12214
12227
|
titleEditable ? (
|
|
12215
12228
|
// Textarea, not input: the public title wraps to two lines
|
|
12216
12229
|
// (line-clamp-2) and the editor must render identically. rows=1 +
|
|
@@ -12356,7 +12369,7 @@ function VideoBiteCard({
|
|
|
12356
12369
|
}
|
|
12357
12370
|
|
|
12358
12371
|
// src/components/features/entity-video-section.tsx
|
|
12359
|
-
import { Fragment as
|
|
12372
|
+
import { Fragment as Fragment23, jsx as jsx83, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
12360
12373
|
function EntityVideoSection({
|
|
12361
12374
|
mainVideoUrl,
|
|
12362
12375
|
youtubeUrl,
|
|
@@ -12386,7 +12399,7 @@ function EntityVideoSection({
|
|
|
12386
12399
|
}
|
|
12387
12400
|
const fullVideoUrl = youtubeUrl || mainVideoUrl || null;
|
|
12388
12401
|
const fullVideoKind = youtubeUrl ? "youtube" : "auto";
|
|
12389
|
-
return /* @__PURE__ */ jsxs65(
|
|
12402
|
+
return /* @__PURE__ */ jsxs65(Fragment23, { children: [
|
|
12390
12403
|
hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */ jsxs65(Tabs, { defaultValue: "full-video", className: "w-full", children: [
|
|
12391
12404
|
/* @__PURE__ */ jsxs65(TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0", children: [
|
|
12392
12405
|
/* @__PURE__ */ jsx83(
|
|
@@ -12584,7 +12597,7 @@ import {
|
|
|
12584
12597
|
TrendingUp as TrendingUp2,
|
|
12585
12598
|
Wrench
|
|
12586
12599
|
} from "lucide-react";
|
|
12587
|
-
import { Fragment as
|
|
12600
|
+
import { Fragment as Fragment24, jsx as jsx86, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
12588
12601
|
function ProductReleaseCard({
|
|
12589
12602
|
title,
|
|
12590
12603
|
summary,
|
|
@@ -12635,7 +12648,7 @@ function ProductReleaseCard({
|
|
|
12635
12648
|
"no-underline",
|
|
12636
12649
|
className
|
|
12637
12650
|
);
|
|
12638
|
-
const innerLayout = /* @__PURE__ */ jsxs66(
|
|
12651
|
+
const innerLayout = /* @__PURE__ */ jsxs66(Fragment24, { children: [
|
|
12639
12652
|
/* @__PURE__ */ jsxs66("div", { className: "flex flex-col md:flex-row gap-4 md:gap-6", children: [
|
|
12640
12653
|
/* @__PURE__ */ jsx86("div", { className: "w-full md:w-[256px] flex-shrink-0", children: /* @__PURE__ */ jsxs66("div", { className: "relative rounded-lg overflow-hidden w-full aspect-[1200/630] bg-ods-bg", children: [
|
|
12641
12654
|
coverImage ? /* @__PURE__ */ jsx86(
|
|
@@ -12660,7 +12673,7 @@ function ProductReleaseCard({
|
|
|
12660
12673
|
/* @__PURE__ */ jsx86("div", { className: "min-h-[68px] md:min-h-[78px]", children: /* @__PURE__ */ jsx86("p", { className: "font-['DM_Sans'] text-sm md:text-base text-ods-text-secondary leading-relaxed line-clamp-3", children: summary ?? "" }) })
|
|
12661
12674
|
] })
|
|
12662
12675
|
] }),
|
|
12663
|
-
/* @__PURE__ */ jsx86("div", { className: "border-t border-ods-border pt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 text-h6 text-ods-text-secondary", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs66(
|
|
12676
|
+
/* @__PURE__ */ jsx86("div", { className: "border-t border-ods-border pt-3 flex flex-wrap items-center gap-x-4 gap-y-1.5 text-h6 text-ods-text-secondary", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs66(Fragment24, { children: [
|
|
12664
12677
|
changelogCounts.features > 0 && /* @__PURE__ */ jsxs66("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
12665
12678
|
/* @__PURE__ */ jsx86(Sparkles, { className: "w-3.5 h-3.5" }),
|
|
12666
12679
|
changelogCounts.features,
|
|
@@ -12793,7 +12806,7 @@ function ProductReleaseCard({
|
|
|
12793
12806
|
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",
|
|
12794
12807
|
className
|
|
12795
12808
|
);
|
|
12796
|
-
const innerChildren = /* @__PURE__ */ jsxs66(
|
|
12809
|
+
const innerChildren = /* @__PURE__ */ jsxs66(Fragment24, { children: [
|
|
12797
12810
|
/* @__PURE__ */ jsxs66("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: [
|
|
12798
12811
|
coverImage ? /* @__PURE__ */ jsx86(
|
|
12799
12812
|
next_image_default,
|
|
@@ -13113,7 +13126,7 @@ function safeHref(url) {
|
|
|
13113
13126
|
}
|
|
13114
13127
|
|
|
13115
13128
|
// src/components/chat/entity-cards/blog-card.tsx
|
|
13116
|
-
import { Fragment as
|
|
13129
|
+
import { Fragment as Fragment25, jsx as jsx88, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
13117
13130
|
function BlogCardSkeleton({ size: size2 = "default" }) {
|
|
13118
13131
|
if (size2 === "sm") {
|
|
13119
13132
|
return /* @__PURE__ */ jsxs68("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -13304,7 +13317,7 @@ function BlogCard({
|
|
|
13304
13317
|
) : null,
|
|
13305
13318
|
/* @__PURE__ */ jsxs68("span", { className: "truncate", children: [
|
|
13306
13319
|
post.author_name || "Anonymous",
|
|
13307
|
-
dateStr ? /* @__PURE__ */ jsxs68(
|
|
13320
|
+
dateStr ? /* @__PURE__ */ jsxs68(Fragment25, { children: [
|
|
13308
13321
|
" \xB7 ",
|
|
13309
13322
|
dateStr
|
|
13310
13323
|
] }) : null
|
|
@@ -13478,7 +13491,7 @@ function CaseStudyCard({
|
|
|
13478
13491
|
// src/components/chat/entity-cards/customer-interview-card.tsx
|
|
13479
13492
|
init_cn();
|
|
13480
13493
|
import { Video as Video3 } from "lucide-react";
|
|
13481
|
-
import { Fragment as
|
|
13494
|
+
import { Fragment as Fragment26, jsx as jsx90, jsxs as jsxs70 } from "react/jsx-runtime";
|
|
13482
13495
|
function CustomerInterviewCardSkeleton({ size: size2 = "default" }) {
|
|
13483
13496
|
if (size2 === "sm") {
|
|
13484
13497
|
return /* @__PURE__ */ jsxs70("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -13577,7 +13590,7 @@ function CustomerInterviewCard({
|
|
|
13577
13590
|
);
|
|
13578
13591
|
}
|
|
13579
13592
|
return /* @__PURE__ */ jsx90("a", { href, target, rel, className: cn("block h-full", className), children: /* @__PURE__ */ jsxs70(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: [
|
|
13580
|
-
/* @__PURE__ */ jsx90("div", { className: "w-full aspect-[1200/630] rounded-sm overflow-hidden bg-ods-bg shrink-0 relative", children: thumbnailUrl ? /* @__PURE__ */ jsxs70(
|
|
13593
|
+
/* @__PURE__ */ jsx90("div", { className: "w-full aspect-[1200/630] rounded-sm overflow-hidden bg-ods-bg shrink-0 relative", children: thumbnailUrl ? /* @__PURE__ */ jsxs70(Fragment26, { children: [
|
|
13581
13594
|
/* @__PURE__ */ jsx90(
|
|
13582
13595
|
"img",
|
|
13583
13596
|
{
|
|
@@ -14329,7 +14342,7 @@ var HiddenTagsPopup = forwardRef25(function HiddenTagsPopup2({ items, onRemove,
|
|
|
14329
14342
|
});
|
|
14330
14343
|
|
|
14331
14344
|
// src/components/ui/autocomplete.tsx
|
|
14332
|
-
import { Fragment as
|
|
14345
|
+
import { Fragment as Fragment27, jsx as jsx98, jsxs as jsxs76 } from "react/jsx-runtime";
|
|
14333
14346
|
var innerInputStyles = cn(
|
|
14334
14347
|
"flex-1 min-w-[60px] bg-transparent border-none outline-none",
|
|
14335
14348
|
"text-h4",
|
|
@@ -14789,7 +14802,7 @@ function AutocompleteInner(props, ref) {
|
|
|
14789
14802
|
}
|
|
14790
14803
|
}
|
|
14791
14804
|
),
|
|
14792
|
-
multiple && /* @__PURE__ */ jsxs76(
|
|
14805
|
+
multiple && /* @__PURE__ */ jsxs76(Fragment27, { children: [
|
|
14793
14806
|
/* @__PURE__ */ jsx98(
|
|
14794
14807
|
"span",
|
|
14795
14808
|
{
|
|
@@ -14979,7 +14992,10 @@ var SelectTrigger = React44.forwardRef(({ className, children, invalid, label, e
|
|
|
14979
14992
|
"data-invalid": isInvalid || void 0,
|
|
14980
14993
|
className: cn(
|
|
14981
14994
|
// Layout & spacing - match Input
|
|
14982
|
-
|
|
14995
|
+
// text-left resets the <button> UA default text-align:center, which the
|
|
14996
|
+
// SelectValue span inherits and would otherwise center short values,
|
|
14997
|
+
// reading as spurious left indentation on the selected value.
|
|
14998
|
+
"flex w-full items-center justify-between gap-2 rounded-[6px] border px-3 h-11 md:h-12 outline-none text-left",
|
|
14983
14999
|
// Typography - match Input exactly
|
|
14984
15000
|
"text-h4",
|
|
14985
15001
|
// Theme palette - match Input exactly
|
|
@@ -16013,7 +16029,7 @@ function DateFilterMenu({
|
|
|
16013
16029
|
|
|
16014
16030
|
// src/components/ui/duration-input.tsx
|
|
16015
16031
|
init_cn();
|
|
16016
|
-
import { Fragment as
|
|
16032
|
+
import { Fragment as Fragment28, useEffect as useEffect26, useRef as useRef22, useState as useState32 } from "react";
|
|
16017
16033
|
import { jsx as jsx103, jsxs as jsxs81 } from "react/jsx-runtime";
|
|
16018
16034
|
var SEGMENT_META = [
|
|
16019
16035
|
{ label: "Hours", placeholder: "HH", max: 99 },
|
|
@@ -16098,7 +16114,7 @@ function DurationInput({ value, onChange, invalid, className }) {
|
|
|
16098
16114
|
invalid && "border-ods-error focus-within:border-ods-error",
|
|
16099
16115
|
className
|
|
16100
16116
|
),
|
|
16101
|
-
children: SEGMENT_META.map((meta, i) => /* @__PURE__ */ jsxs81(
|
|
16117
|
+
children: SEGMENT_META.map((meta, i) => /* @__PURE__ */ jsxs81(Fragment28, { children: [
|
|
16102
16118
|
i > 0 && /* @__PURE__ */ jsx103("span", { className: "text-ods-text-secondary", children: ":" }),
|
|
16103
16119
|
/* @__PURE__ */ jsx103(
|
|
16104
16120
|
"input",
|
|
@@ -16577,12 +16593,12 @@ function DefaultAssigneeDropdown({
|
|
|
16577
16593
|
}
|
|
16578
16594
|
|
|
16579
16595
|
// src/components/ui/info-section.tsx
|
|
16580
|
-
import { Fragment as
|
|
16596
|
+
import { Fragment as Fragment29, jsx as jsx109, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
16581
16597
|
function TextValue({ value }) {
|
|
16582
16598
|
const { text, imageSrc, imageFallback, imageVariant = "round", icon, onClick, href, openInNewTab } = value;
|
|
16583
16599
|
const hasImage = imageSrc !== void 0 || imageFallback !== void 0;
|
|
16584
16600
|
const interactiveClass = "truncate text-left text-h4 text-ods-text-primary transition-colors hover:text-ods-accent";
|
|
16585
|
-
return /* @__PURE__ */ jsxs85(
|
|
16601
|
+
return /* @__PURE__ */ jsxs85(Fragment29, { children: [
|
|
16586
16602
|
icon && /* @__PURE__ */ jsx109("span", { className: "flex size-4 shrink-0 items-center justify-center text-ods-text-secondary", children: icon }),
|
|
16587
16603
|
href ? /* @__PURE__ */ jsx109(
|
|
16588
16604
|
next_link_default,
|
|
@@ -16619,7 +16635,7 @@ function RowValue({ value }) {
|
|
|
16619
16635
|
return /* @__PURE__ */ jsx109(TicketStatusTag, { ...props });
|
|
16620
16636
|
}
|
|
16621
16637
|
case "custom":
|
|
16622
|
-
return /* @__PURE__ */ jsx109(
|
|
16638
|
+
return /* @__PURE__ */ jsx109(Fragment29, { children: value.content });
|
|
16623
16639
|
default:
|
|
16624
16640
|
return /* @__PURE__ */ jsx109(TextValue, { value });
|
|
16625
16641
|
}
|
|
@@ -19150,7 +19166,7 @@ function TabContent({
|
|
|
19150
19166
|
init_next_navigation();
|
|
19151
19167
|
init_cn();
|
|
19152
19168
|
import { useState as useState41, useEffect as useEffect34, useMemo as useMemo23, useRef as useRef26, useCallback as useCallback19 } from "react";
|
|
19153
|
-
import { Fragment as
|
|
19169
|
+
import { Fragment as Fragment30, jsx as jsx135, jsxs as jsxs107 } from "react/jsx-runtime";
|
|
19154
19170
|
function TabNavigation({
|
|
19155
19171
|
activeTab: controlledActiveTab,
|
|
19156
19172
|
onTabChange: controlledOnTabChange,
|
|
@@ -19266,7 +19282,7 @@ function TabNavigation({
|
|
|
19266
19282
|
}
|
|
19267
19283
|
return { background: c };
|
|
19268
19284
|
})();
|
|
19269
|
-
return /* @__PURE__ */ jsxs107(
|
|
19285
|
+
return /* @__PURE__ */ jsxs107(Fragment30, { children: [
|
|
19270
19286
|
/* @__PURE__ */ jsxs107("div", { className: cn("relative w-full", className), children: [
|
|
19271
19287
|
/* @__PURE__ */ jsx135("div", { ref: scrollRef, className: "flex gap-[var(--spacing-system-xxs)] items-center justify-start h-full overflow-x-auto overflow-y-hidden scrollbar-hide", children: tabs.map((tab) => {
|
|
19272
19288
|
const isActive = activeTab === tab.id;
|
|
@@ -19394,7 +19410,7 @@ function AIGeneratedBadge({ className }) {
|
|
|
19394
19410
|
// src/components/ui/fade-preview.tsx
|
|
19395
19411
|
import { useState as useState42, useRef as useRef27, useEffect as useEffect35 } from "react";
|
|
19396
19412
|
import { ChevronDown as ChevronDown4 } from "lucide-react";
|
|
19397
|
-
import { Fragment as
|
|
19413
|
+
import { Fragment as Fragment31, jsx as jsx138, jsxs as jsxs109 } from "react/jsx-runtime";
|
|
19398
19414
|
function FadePreview({
|
|
19399
19415
|
hiddenCount,
|
|
19400
19416
|
collapsedHeight = 120,
|
|
@@ -19407,7 +19423,7 @@ function FadePreview({
|
|
|
19407
19423
|
setExpanded(false);
|
|
19408
19424
|
}, [resetKey]);
|
|
19409
19425
|
const needsFade = hiddenCount > 0;
|
|
19410
|
-
if (!needsFade) return /* @__PURE__ */ jsx138(
|
|
19426
|
+
if (!needsFade) return /* @__PURE__ */ jsx138(Fragment31, { children });
|
|
19411
19427
|
return /* @__PURE__ */ jsxs109("div", { className: "relative", children: [
|
|
19412
19428
|
/* @__PURE__ */ jsx138(
|
|
19413
19429
|
"div",
|
|
@@ -19764,7 +19780,7 @@ var socialCache = SocialEmbedCache.getInstance();
|
|
|
19764
19780
|
init_cn();
|
|
19765
19781
|
import { useState as useState43, useRef as useRef28, useEffect as useEffect36, memo as memo4, useCallback as useCallback20 } from "react";
|
|
19766
19782
|
init_button2();
|
|
19767
|
-
import { Fragment as
|
|
19783
|
+
import { Fragment as Fragment32, jsx as jsx140, jsxs as jsxs110 } from "react/jsx-runtime";
|
|
19768
19784
|
var ChevronLeftIcon = () => /* @__PURE__ */ jsx140("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx140("polyline", { points: "15,18 9,12 15,6" }) });
|
|
19769
19785
|
var ChevronRightIcon = () => /* @__PURE__ */ jsx140("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx140("polyline", { points: "9,18 15,12 9,6" }) });
|
|
19770
19786
|
var MediaCarousel = memo4(function MediaCarousel2({
|
|
@@ -19948,7 +19964,7 @@ var MediaCarousel = memo4(function MediaCarousel2({
|
|
|
19948
19964
|
"aria-label": media.length > 1 ? "Media carousel, use arrow keys to navigate" : void 0,
|
|
19949
19965
|
children: [
|
|
19950
19966
|
renderMainMedia(currentItem, currentIndex),
|
|
19951
|
-
showArrows && media.length > 1 && /* @__PURE__ */ jsxs110(
|
|
19967
|
+
showArrows && media.length > 1 && /* @__PURE__ */ jsxs110(Fragment32, { children: [
|
|
19952
19968
|
/* @__PURE__ */ jsx140(
|
|
19953
19969
|
Button,
|
|
19954
19970
|
{
|
|
@@ -21070,7 +21086,7 @@ function toFigmaOriginalUrl(url) {
|
|
|
21070
21086
|
|
|
21071
21087
|
// src/components/embeds/embed-iframe.tsx
|
|
21072
21088
|
import { useState as useState48, useCallback as useCallback21, useRef as useRef31, useEffect as useEffect40 } from "react";
|
|
21073
|
-
import { Fragment as
|
|
21089
|
+
import { Fragment as Fragment33, jsx as jsx147, jsxs as jsxs115 } from "react/jsx-runtime";
|
|
21074
21090
|
function EmbedLoadingSkeleton({ height }) {
|
|
21075
21091
|
return /* @__PURE__ */ jsx147(
|
|
21076
21092
|
"div",
|
|
@@ -21108,7 +21124,7 @@ function EmbedIframe({
|
|
|
21108
21124
|
};
|
|
21109
21125
|
}, [src]);
|
|
21110
21126
|
const resolvedHeight = height || "calc(100vh - 250px)";
|
|
21111
|
-
return /* @__PURE__ */ jsxs115(
|
|
21127
|
+
return /* @__PURE__ */ jsxs115(Fragment33, { children: [
|
|
21112
21128
|
!isLoaded && /* @__PURE__ */ jsx147(EmbedLoadingSkeleton, { height: resolvedHeight }),
|
|
21113
21129
|
/* @__PURE__ */ jsx147(
|
|
21114
21130
|
"div",
|
|
@@ -22193,7 +22209,7 @@ function ChangelogEntryList({
|
|
|
22193
22209
|
|
|
22194
22210
|
// src/components/ui/stacked-rows-panel.tsx
|
|
22195
22211
|
init_cn();
|
|
22196
|
-
import { Fragment as
|
|
22212
|
+
import { Fragment as Fragment34, jsx as jsx152, jsxs as jsxs119 } from "react/jsx-runtime";
|
|
22197
22213
|
var ALIGN_CLASS = {
|
|
22198
22214
|
left: "justify-start items-start",
|
|
22199
22215
|
center: "justify-center items-center",
|
|
@@ -22219,7 +22235,7 @@ function CellValue({ column }) {
|
|
|
22219
22235
|
children: column.value
|
|
22220
22236
|
}
|
|
22221
22237
|
);
|
|
22222
|
-
return /* @__PURE__ */ jsxs119(
|
|
22238
|
+
return /* @__PURE__ */ jsxs119(Fragment34, { children: [
|
|
22223
22239
|
/* @__PURE__ */ jsxs119("div", { className: "flex items-center gap-[var(--spacing-system-xxs)] min-w-0", children: [
|
|
22224
22240
|
column.icon && /* @__PURE__ */ jsx152("span", { className: "shrink-0", children: column.icon }),
|
|
22225
22241
|
column.href ? /* @__PURE__ */ jsx152(
|
|
@@ -22325,7 +22341,7 @@ function StatusIndicator({ status, label, href }) {
|
|
|
22325
22341
|
|
|
22326
22342
|
// src/components/ui/hover-dropdown.tsx
|
|
22327
22343
|
import { useState as useState53, useRef as useRef33, useCallback as useCallback23 } from "react";
|
|
22328
|
-
import { Fragment as
|
|
22344
|
+
import { Fragment as Fragment35, jsx as jsx155, jsxs as jsxs122 } from "react/jsx-runtime";
|
|
22329
22345
|
function DefaultAnchor({
|
|
22330
22346
|
href,
|
|
22331
22347
|
className,
|
|
@@ -22351,7 +22367,7 @@ function HoverDropdown({
|
|
|
22351
22367
|
const hide = useCallback23(() => {
|
|
22352
22368
|
timeoutRef.current = setTimeout(() => setOpen(false), hideDelay);
|
|
22353
22369
|
}, [hideDelay]);
|
|
22354
|
-
if (items.length === 0) return /* @__PURE__ */ jsx155(
|
|
22370
|
+
if (items.length === 0) return /* @__PURE__ */ jsx155(Fragment35, { children });
|
|
22355
22371
|
const toggle = useCallback23((e) => {
|
|
22356
22372
|
e.stopPropagation();
|
|
22357
22373
|
clearTimeout(timeoutRef.current);
|
|
@@ -22398,7 +22414,7 @@ function HoverDropdown({
|
|
|
22398
22414
|
}
|
|
22399
22415
|
},
|
|
22400
22416
|
children: items.map((item, i) => {
|
|
22401
|
-
const content = /* @__PURE__ */ jsxs122(
|
|
22417
|
+
const content = /* @__PURE__ */ jsxs122(Fragment35, { children: [
|
|
22402
22418
|
item.icon && /* @__PURE__ */ jsx155("span", { className: "flex-shrink-0 [&_svg]:size-3.5", children: item.icon }),
|
|
22403
22419
|
/* @__PURE__ */ jsx155("span", { className: "truncate flex-1 min-w-0", children: item.label })
|
|
22404
22420
|
] });
|
|
@@ -22629,7 +22645,7 @@ function TagKeyValueFilter({
|
|
|
22629
22645
|
}
|
|
22630
22646
|
|
|
22631
22647
|
// src/components/ui/filter-modal.tsx
|
|
22632
|
-
import { Fragment as
|
|
22648
|
+
import { Fragment as Fragment36, jsx as jsx159, jsxs as jsxs126 } from "react/jsx-runtime";
|
|
22633
22649
|
function FilterModal({
|
|
22634
22650
|
isOpen,
|
|
22635
22651
|
onClose,
|
|
@@ -22721,7 +22737,7 @@ function FilterModal({
|
|
|
22721
22737
|
ref: scrollRef,
|
|
22722
22738
|
onScroll: updateFade,
|
|
22723
22739
|
className: "flex-1 min-h-0 overflow-y-auto flex flex-col gap-4 md:py-3",
|
|
22724
|
-
children: isLoading ? /* @__PURE__ */ jsx159(
|
|
22740
|
+
children: isLoading ? /* @__PURE__ */ jsx159(Fragment36, { children: [0, 1].map((group) => /* @__PURE__ */ jsxs126("div", { className: "flex flex-col gap-1", children: [
|
|
22725
22741
|
/* @__PURE__ */ jsx159(Skeleton, { className: "h-5 w-24" }),
|
|
22726
22742
|
/* @__PURE__ */ jsx159("div", { className: "rounded-md border border-ods-border overflow-hidden", children: [0, 1, 2].map((row) => /* @__PURE__ */ jsxs126(
|
|
22727
22743
|
"div",
|
|
@@ -22741,7 +22757,7 @@ function FilterModal({
|
|
|
22741
22757
|
/* @__PURE__ */ jsx159("p", { className: "text-h4", children: emptyStateTitle }),
|
|
22742
22758
|
/* @__PURE__ */ jsx159("p", { className: "text-h6", children: emptyStateDescription })
|
|
22743
22759
|
] })
|
|
22744
|
-
] }) : /* @__PURE__ */ jsxs126(
|
|
22760
|
+
] }) : /* @__PURE__ */ jsxs126(Fragment36, { children: [
|
|
22745
22761
|
sortConfig && sortConfig.columns.length > 0 && /* @__PURE__ */ jsxs126("div", { className: "flex flex-col gap-1", children: [
|
|
22746
22762
|
/* @__PURE__ */ jsx159("span", { className: "text-h5 text-ods-text-secondary", children: sortConfig.title || "Sort By" }),
|
|
22747
22763
|
/* @__PURE__ */ jsx159("div", { className: "rounded-md border border-ods-border overflow-hidden", children: sortConfig.columns.map((column) => /* @__PURE__ */ jsx159(
|
|
@@ -22820,7 +22836,7 @@ init_cn();
|
|
|
22820
22836
|
init_cn();
|
|
22821
22837
|
import React79 from "react";
|
|
22822
22838
|
init_button2();
|
|
22823
|
-
import { Fragment as
|
|
22839
|
+
import { Fragment as Fragment37, jsx as jsx160, jsxs as jsxs127 } from "react/jsx-runtime";
|
|
22824
22840
|
function actionKey(action, idx) {
|
|
22825
22841
|
return `${action.label ?? action.ariaLabel ?? "action"}-${idx}`;
|
|
22826
22842
|
}
|
|
@@ -22964,7 +22980,7 @@ function IconButtonsVariant({
|
|
|
22964
22980
|
...menuActions ?? []
|
|
22965
22981
|
];
|
|
22966
22982
|
const hasMobileMenuItems = mobileMenuGroups.some((g) => g.items.length > 0);
|
|
22967
|
-
return /* @__PURE__ */ jsxs127(
|
|
22983
|
+
return /* @__PURE__ */ jsxs127(Fragment37, { children: [
|
|
22968
22984
|
/* @__PURE__ */ jsxs127("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
22969
22985
|
selector,
|
|
22970
22986
|
desktopActions.map((action, idx) => /* @__PURE__ */ jsx160(React79.Fragment, { children: renderActionButton(action) }, actionKey(action, idx))),
|
|
@@ -22983,7 +22999,7 @@ function PrimaryButtonsVariant({
|
|
|
22983
22999
|
return 0;
|
|
22984
23000
|
});
|
|
22985
23001
|
const desktopActions = sortedActions.filter((a) => !a.showOnlyMobile);
|
|
22986
|
-
return /* @__PURE__ */ jsxs127(
|
|
23002
|
+
return /* @__PURE__ */ jsxs127(Fragment37, { children: [
|
|
22987
23003
|
/* @__PURE__ */ jsx160("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: desktopActions.map((action, idx) => /* @__PURE__ */ jsx160(React79.Fragment, { children: renderActionButton(action) }, `desktop-${actionKey(action, idx)}`)) }),
|
|
22988
23004
|
/* @__PURE__ */ jsx160(MobileBottomActions, { actions: sortedActions })
|
|
22989
23005
|
] });
|
|
@@ -23001,7 +23017,7 @@ function MenuPrimaryVariant({
|
|
|
23001
23017
|
...menuActions
|
|
23002
23018
|
];
|
|
23003
23019
|
const hasMobileMenuItems = mobileMenuGroups.some((g) => g.items.length > 0);
|
|
23004
|
-
return /* @__PURE__ */ jsxs127(
|
|
23020
|
+
return /* @__PURE__ */ jsxs127(Fragment37, { children: [
|
|
23005
23021
|
/* @__PURE__ */ jsxs127("div", { className: cn("hidden md:flex items-center", ACTIONS_GAP, className), children: [
|
|
23006
23022
|
selector,
|
|
23007
23023
|
hasMenuActions && /* @__PURE__ */ jsx160(ActionsMenuDropdown, { groups: menuActions }),
|
|
@@ -25567,7 +25583,7 @@ import {
|
|
|
25567
25583
|
safePolygon,
|
|
25568
25584
|
arrow
|
|
25569
25585
|
} from "@floating-ui/react";
|
|
25570
|
-
import { Fragment as
|
|
25586
|
+
import { Fragment as Fragment38, jsx as jsx177, jsxs as jsxs139 } from "react/jsx-runtime";
|
|
25571
25587
|
function parseColoredText(text) {
|
|
25572
25588
|
if (typeof text !== "string") return text;
|
|
25573
25589
|
const parts = [];
|
|
@@ -25592,7 +25608,7 @@ function parseColoredText(text) {
|
|
|
25592
25608
|
const remainingText = text.slice(lastIndex);
|
|
25593
25609
|
parts.push(/* @__PURE__ */ jsx177("span", { children: remainingText }, `text-${keyIndex++}`));
|
|
25594
25610
|
}
|
|
25595
|
-
return parts.length > 0 ? /* @__PURE__ */ jsx177(
|
|
25611
|
+
return parts.length > 0 ? /* @__PURE__ */ jsx177(Fragment38, { children: parts }) : text;
|
|
25596
25612
|
}
|
|
25597
25613
|
function FloatingTooltip({
|
|
25598
25614
|
content,
|
|
@@ -25656,7 +25672,7 @@ function FloatingTooltip({
|
|
|
25656
25672
|
bottom: "top",
|
|
25657
25673
|
left: "right"
|
|
25658
25674
|
}[placement.split("-")[0]];
|
|
25659
|
-
return /* @__PURE__ */ jsxs139(
|
|
25675
|
+
return /* @__PURE__ */ jsxs139(Fragment38, { children: [
|
|
25660
25676
|
/* @__PURE__ */ jsx177("div", { ref: refs.setReference, ...getReferenceProps(), children }),
|
|
25661
25677
|
/* @__PURE__ */ jsx177(FloatingPortal, { children: isOpen && /* @__PURE__ */ jsxs139(
|
|
25662
25678
|
"div",
|
|
@@ -25706,7 +25722,7 @@ function FloatingTooltip({
|
|
|
25706
25722
|
}
|
|
25707
25723
|
|
|
25708
25724
|
// src/components/ui/dashboard-info-card.tsx
|
|
25709
|
-
import { Fragment as
|
|
25725
|
+
import { Fragment as Fragment39, jsx as jsx178, jsxs as jsxs140 } from "react/jsx-runtime";
|
|
25710
25726
|
function DashboardInfoCard({
|
|
25711
25727
|
title,
|
|
25712
25728
|
titleSlot,
|
|
@@ -25759,7 +25775,7 @@ function DashboardInfoCard({
|
|
|
25759
25775
|
if (lg !== void 0) {
|
|
25760
25776
|
rings.push({ key: "lg", size: lg, className: "hidden lg:block" });
|
|
25761
25777
|
}
|
|
25762
|
-
return /* @__PURE__ */ jsx178(
|
|
25778
|
+
return /* @__PURE__ */ jsx178(Fragment39, { children: rings.map((ring) => /* @__PURE__ */ jsx178(
|
|
25763
25779
|
CircularProgress,
|
|
25764
25780
|
{
|
|
25765
25781
|
...common,
|
|
@@ -25770,7 +25786,7 @@ function DashboardInfoCard({
|
|
|
25770
25786
|
ring.key
|
|
25771
25787
|
)) });
|
|
25772
25788
|
};
|
|
25773
|
-
const cardContent = /* @__PURE__ */ jsxs140(
|
|
25789
|
+
const cardContent = /* @__PURE__ */ jsxs140(Fragment39, { children: [
|
|
25774
25790
|
icon && /* @__PURE__ */ jsx178("div", { className: "shrink-0 size-8 md:size-14 p-[var(--spacing-system-xxs)] bg-ods-bg border border-ods-border rounded-sm flex items-center justify-center text-ods-text-primary", children: /* @__PURE__ */ jsx178("span", { className: "size-4 md:size-6 flex items-center justify-center [&>*]:size-full", children: icon }) }),
|
|
25775
25791
|
/* @__PURE__ */ jsxs140("div", { className: "flex-1 min-w-0 flex flex-col", children: [
|
|
25776
25792
|
/* @__PURE__ */ jsxs140("div", { className: "flex items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
@@ -26022,7 +26038,7 @@ function DeviceCard({
|
|
|
26022
26038
|
|
|
26023
26039
|
// src/components/ui/device-card-compact.tsx
|
|
26024
26040
|
init_cn();
|
|
26025
|
-
import { Fragment as
|
|
26041
|
+
import { Fragment as Fragment40, jsx as jsx182, jsxs as jsxs144 } from "react/jsx-runtime";
|
|
26026
26042
|
function DeviceCardCompact({
|
|
26027
26043
|
deviceName,
|
|
26028
26044
|
organization,
|
|
@@ -26032,7 +26048,7 @@ function DeviceCardCompact({
|
|
|
26032
26048
|
const hasName = deviceName && deviceName !== "-" && deviceName !== "null";
|
|
26033
26049
|
const hasOrg = organization && organization !== "-" && organization !== "null";
|
|
26034
26050
|
if (!hasName && !hasOrg) {
|
|
26035
|
-
return /* @__PURE__ */ jsx182(
|
|
26051
|
+
return /* @__PURE__ */ jsx182(Fragment40, {});
|
|
26036
26052
|
}
|
|
26037
26053
|
return /* @__PURE__ */ jsxs144(
|
|
26038
26054
|
"div",
|
|
@@ -26446,7 +26462,7 @@ function DropdownButton({
|
|
|
26446
26462
|
init_next_link();
|
|
26447
26463
|
init_cn();
|
|
26448
26464
|
init_button2();
|
|
26449
|
-
import { Fragment as
|
|
26465
|
+
import { Fragment as Fragment41, jsx as jsx189, jsxs as jsxs149 } from "react/jsx-runtime";
|
|
26450
26466
|
function MoreActionsMenu({
|
|
26451
26467
|
items,
|
|
26452
26468
|
align = "end",
|
|
@@ -26484,7 +26500,7 @@ function MoreActionsMenu({
|
|
|
26484
26500
|
),
|
|
26485
26501
|
children: items.map((item, idx) => {
|
|
26486
26502
|
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";
|
|
26487
|
-
const content = /* @__PURE__ */ jsxs149(
|
|
26503
|
+
const content = /* @__PURE__ */ jsxs149(Fragment41, { children: [
|
|
26488
26504
|
item.icon && /* @__PURE__ */ jsx189("div", { className: cn(item.danger ? "text-ods-error" : "text-ods-text-secondary", "[&_svg]:size-6 [&_svg]:shrink-0"), children: item.icon }),
|
|
26489
26505
|
/* @__PURE__ */ jsx189("span", { className: "text-h4 text-ods-text-primary", children: item.label })
|
|
26490
26506
|
] });
|
|
@@ -27067,7 +27083,7 @@ function SsoProviderButtons({
|
|
|
27067
27083
|
}
|
|
27068
27084
|
|
|
27069
27085
|
// src/components/features/auth/complete-account-form.tsx
|
|
27070
|
-
import { Fragment as
|
|
27086
|
+
import { Fragment as Fragment42, jsx as jsx200, jsxs as jsxs155 } from "react/jsx-runtime";
|
|
27071
27087
|
function CompleteAccountForm({
|
|
27072
27088
|
firstName,
|
|
27073
27089
|
lastName,
|
|
@@ -27116,7 +27132,7 @@ function CompleteAccountForm({
|
|
|
27116
27132
|
/* @__PURE__ */ jsx200("h1", { className: "text-h2 text-ods-text-primary tracking-[-0.64px]", children: title }),
|
|
27117
27133
|
/* @__PURE__ */ jsx200("p", { className: "text-h4 text-ods-text-secondary", children: subtitle })
|
|
27118
27134
|
] }),
|
|
27119
|
-
ssoProviders && ssoProviders.length > 0 && /* @__PURE__ */ jsxs155(
|
|
27135
|
+
ssoProviders && ssoProviders.length > 0 && /* @__PURE__ */ jsxs155(Fragment42, { children: [
|
|
27120
27136
|
/* @__PURE__ */ jsx200(
|
|
27121
27137
|
SsoProviderButtons,
|
|
27122
27138
|
{
|
|
@@ -27257,7 +27273,7 @@ function TermsAgreementLabel({ termsUrl = "#", privacyPolicyUrl = "#" }) {
|
|
|
27257
27273
|
}
|
|
27258
27274
|
|
|
27259
27275
|
// src/components/features/auth/create-organization-form.tsx
|
|
27260
|
-
import { Fragment as
|
|
27276
|
+
import { Fragment as Fragment43, jsx as jsx202, jsxs as jsxs157 } from "react/jsx-runtime";
|
|
27261
27277
|
function CreateOrganizationForm({
|
|
27262
27278
|
email,
|
|
27263
27279
|
organizationName,
|
|
@@ -27379,7 +27395,7 @@ function CreateOrganizationForm({
|
|
|
27379
27395
|
children: submitLabel
|
|
27380
27396
|
}
|
|
27381
27397
|
),
|
|
27382
|
-
hasSso && /* @__PURE__ */ jsxs157(
|
|
27398
|
+
hasSso && /* @__PURE__ */ jsxs157(Fragment43, { children: [
|
|
27383
27399
|
/* @__PURE__ */ jsxs157("div", { className: "flex items-center gap-[var(--spacing-system-s)]", children: [
|
|
27384
27400
|
/* @__PURE__ */ jsx202("div", { className: "h-px flex-1 bg-ods-border" }),
|
|
27385
27401
|
/* @__PURE__ */ jsx202("span", { className: "text-h6 text-ods-text-secondary", children: dividerLabel }),
|
|
@@ -30499,7 +30515,7 @@ SelectButton.displayName = "SelectButton";
|
|
|
30499
30515
|
// src/components/features/seo-editor-preview.tsx
|
|
30500
30516
|
import { useState as useState70 } from "react";
|
|
30501
30517
|
import { Globe as Globe3, ExternalLink as ExternalLink6, Upload as Upload3, X as X6, Loader2 as Loader25 } from "lucide-react";
|
|
30502
|
-
import { Fragment as
|
|
30518
|
+
import { Fragment as Fragment44, jsx as jsx231, jsxs as jsxs181 } from "react/jsx-runtime";
|
|
30503
30519
|
function SEOEditorPreview({
|
|
30504
30520
|
seoTitle,
|
|
30505
30521
|
seoDescription,
|
|
@@ -30552,7 +30568,7 @@ function SEOEditorPreview({
|
|
|
30552
30568
|
/* @__PURE__ */ jsxs181("div", { className: "space-y-2", children: [
|
|
30553
30569
|
/* @__PURE__ */ jsxs181("div", { className: "flex items-center gap-2", children: [
|
|
30554
30570
|
/* @__PURE__ */ jsx231(Label, { className: "text-h6 text-ods-text-primary", children: "SEO Title" }),
|
|
30555
|
-
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs181(
|
|
30571
|
+
aiConfidenceSeoTitle !== void 0 && /* @__PURE__ */ jsxs181(Fragment44, { children: [
|
|
30556
30572
|
/* @__PURE__ */ jsx231(AIGeneratedBadge, {}),
|
|
30557
30573
|
/* @__PURE__ */ jsx231(
|
|
30558
30574
|
ConfidenceBadge,
|
|
@@ -30599,7 +30615,7 @@ function SEOEditorPreview({
|
|
|
30599
30615
|
/* @__PURE__ */ jsxs181("div", { className: "space-y-2", children: [
|
|
30600
30616
|
/* @__PURE__ */ jsxs181("div", { className: "flex items-center gap-2", children: [
|
|
30601
30617
|
/* @__PURE__ */ jsx231(Label, { className: "text-h6 text-ods-text-primary", children: "SEO Keywords" }),
|
|
30602
|
-
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs181(
|
|
30618
|
+
aiConfidenceSeoKeywords !== void 0 && /* @__PURE__ */ jsxs181(Fragment44, { children: [
|
|
30603
30619
|
/* @__PURE__ */ jsx231(AIGeneratedBadge, {}),
|
|
30604
30620
|
/* @__PURE__ */ jsx231(
|
|
30605
30621
|
ConfidenceBadge,
|
|
@@ -30628,7 +30644,7 @@ function SEOEditorPreview({
|
|
|
30628
30644
|
/* @__PURE__ */ jsxs181("div", { className: "space-y-2 flex flex-col h-full", children: [
|
|
30629
30645
|
/* @__PURE__ */ jsxs181("div", { className: "flex items-center gap-2", children: [
|
|
30630
30646
|
/* @__PURE__ */ jsx231(Label, { className: "text-h6 text-ods-text-primary", children: "SEO Description" }),
|
|
30631
|
-
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs181(
|
|
30647
|
+
aiConfidenceSeoDescription !== void 0 && /* @__PURE__ */ jsxs181(Fragment44, { children: [
|
|
30632
30648
|
/* @__PURE__ */ jsx231(AIGeneratedBadge, {}),
|
|
30633
30649
|
/* @__PURE__ */ jsx231(
|
|
30634
30650
|
ConfidenceBadge,
|
|
@@ -30718,7 +30734,7 @@ function SEOEditorPreview({
|
|
|
30718
30734
|
{
|
|
30719
30735
|
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",
|
|
30720
30736
|
onClick: () => onOgImageUpload && fileInputRef?.click(),
|
|
30721
|
-
children: isUploading ? /* @__PURE__ */ jsx231(Loader25, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs181(
|
|
30737
|
+
children: isUploading ? /* @__PURE__ */ jsx231(Loader25, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs181(Fragment44, { children: [
|
|
30722
30738
|
/* @__PURE__ */ jsx231(Upload3, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
|
|
30723
30739
|
/* @__PURE__ */ jsx231("span", { className: "text-h6 text-ods-text-secondary", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
|
|
30724
30740
|
] })
|
|
@@ -32750,7 +32766,7 @@ init_cn();
|
|
|
32750
32766
|
import { useEffect as useEffect54, useState as useState74 } from "react";
|
|
32751
32767
|
import { ChevronDown as ChevronDown8, Shield as Shield2 } from "lucide-react";
|
|
32752
32768
|
init_button2();
|
|
32753
|
-
import { Fragment as
|
|
32769
|
+
import { Fragment as Fragment45, jsx as jsx256, jsxs as jsxs200 } from "react/jsx-runtime";
|
|
32754
32770
|
var approvalLevelLabels = {
|
|
32755
32771
|
ALLOW: "Allow",
|
|
32756
32772
|
ASK_USER: "Ask User",
|
|
@@ -32831,7 +32847,7 @@ var CategorySection = ({
|
|
|
32831
32847
|
}) => {
|
|
32832
32848
|
const { innerRef, containerStyle } = useCollapsible({ expanded: isExpanded, durationMs: 300 });
|
|
32833
32849
|
const handleBulkChange = (level) => onBulkLevelChange(category.id, level);
|
|
32834
|
-
return /* @__PURE__ */ jsxs200(
|
|
32850
|
+
return /* @__PURE__ */ jsxs200(Fragment45, { children: [
|
|
32835
32851
|
/* @__PURE__ */ jsxs200(
|
|
32836
32852
|
"div",
|
|
32837
32853
|
{
|
|
@@ -33067,7 +33083,7 @@ function CountryOption({ country }) {
|
|
|
33067
33083
|
init_cn();
|
|
33068
33084
|
import { getCountries as getCountries2 } from "libphonenumber-js";
|
|
33069
33085
|
import { useEffect as useEffect56, useState as useState76 } from "react";
|
|
33070
|
-
import { Fragment as
|
|
33086
|
+
import { Fragment as Fragment46, jsx as jsx258, jsxs as jsxs202 } from "react/jsx-runtime";
|
|
33071
33087
|
function WaitlistForm({
|
|
33072
33088
|
id = "waitlist-form",
|
|
33073
33089
|
className,
|
|
@@ -33212,7 +33228,7 @@ function WaitlistForm({
|
|
|
33212
33228
|
error: showConsentError ? "Please agree to SMS notifications to continue." : void 0,
|
|
33213
33229
|
disabled: isSubmitting,
|
|
33214
33230
|
label: smsCheckboxLabel,
|
|
33215
|
-
description: /* @__PURE__ */ jsxs202(
|
|
33231
|
+
description: /* @__PURE__ */ jsxs202(Fragment46, { children: [
|
|
33216
33232
|
consentText,
|
|
33217
33233
|
" View our ",
|
|
33218
33234
|
/* @__PURE__ */ jsx258(
|
|
@@ -34138,7 +34154,7 @@ function NotificationTile({
|
|
|
34138
34154
|
}
|
|
34139
34155
|
|
|
34140
34156
|
// src/components/features/notifications/notification-drawer.tsx
|
|
34141
|
-
import { Fragment as
|
|
34157
|
+
import { Fragment as Fragment47, jsx as jsx262, jsxs as jsxs205 } from "react/jsx-runtime";
|
|
34142
34158
|
function NotificationDrawer({
|
|
34143
34159
|
className,
|
|
34144
34160
|
liveDurationMs,
|
|
@@ -34171,7 +34187,7 @@ function NotificationDrawer({
|
|
|
34171
34187
|
} = ctx;
|
|
34172
34188
|
const renderTile = renderTileProp ?? ctxRenderTile;
|
|
34173
34189
|
const unreadNotifications = notifications.filter((n) => !n.read);
|
|
34174
|
-
const content = /* @__PURE__ */ jsxs205(
|
|
34190
|
+
const content = /* @__PURE__ */ jsxs205(Fragment47, { children: [
|
|
34175
34191
|
/* @__PURE__ */ jsx262("div", { className: "px-[var(--spacing-system-m)] pt-[var(--spacing-system-m)]", children: /* @__PURE__ */ jsx262(
|
|
34176
34192
|
DrawerTitle,
|
|
34177
34193
|
{
|
|
@@ -34281,7 +34297,7 @@ function DrawerScrollList({
|
|
|
34281
34297
|
{
|
|
34282
34298
|
ref: scrollRef,
|
|
34283
34299
|
className: "flex flex-1 flex-col gap-[var(--spacing-system-xs)] overflow-y-auto px-[var(--spacing-system-m)]",
|
|
34284
|
-
children: isEmpty && !isLoadingMore ? /* @__PURE__ */ jsx262(EmptyState, {}) : /* @__PURE__ */ jsxs205(
|
|
34300
|
+
children: isEmpty && !isLoadingMore ? /* @__PURE__ */ jsx262(EmptyState, {}) : /* @__PURE__ */ jsxs205(Fragment47, { children: [
|
|
34285
34301
|
unreadNotifications.map((n) => {
|
|
34286
34302
|
const custom = renderTile?.(n, { onComplete, onSettle, liveDurationMs });
|
|
34287
34303
|
if (custom) return /* @__PURE__ */ jsx262("div", { children: custom }, n.id);
|
|
@@ -34303,7 +34319,7 @@ function DrawerScrollList({
|
|
|
34303
34319
|
);
|
|
34304
34320
|
}
|
|
34305
34321
|
function DrawerLoadingTiles() {
|
|
34306
|
-
return /* @__PURE__ */ jsxs205(
|
|
34322
|
+
return /* @__PURE__ */ jsxs205(Fragment47, { children: [
|
|
34307
34323
|
/* @__PURE__ */ jsx262(
|
|
34308
34324
|
"div",
|
|
34309
34325
|
{
|
|
@@ -34686,7 +34702,7 @@ function approvalMetaToBatchData(approval) {
|
|
|
34686
34702
|
}
|
|
34687
34703
|
|
|
34688
34704
|
// src/components/features/notifications/approval-request-notification-tile.tsx
|
|
34689
|
-
import { Fragment as
|
|
34705
|
+
import { Fragment as Fragment48, jsx as jsx264, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
34690
34706
|
function ApprovalRequestNotificationTile({
|
|
34691
34707
|
notification,
|
|
34692
34708
|
onApprove,
|
|
@@ -34736,7 +34752,7 @@ function ApprovalRequestNotificationTile({
|
|
|
34736
34752
|
className,
|
|
34737
34753
|
paused: pinned || processing,
|
|
34738
34754
|
actions: /* @__PURE__ */ jsxs206("div", { className: "flex w-full items-center gap-[var(--spacing-system-xs)]", children: [
|
|
34739
|
-
status === "pending" ? /* @__PURE__ */ jsxs206(
|
|
34755
|
+
status === "pending" ? /* @__PURE__ */ jsxs206(Fragment48, { children: [
|
|
34740
34756
|
/* @__PURE__ */ jsx264(Button, { variant: "accent", size: "small", onClick: () => resolve("approved", onApprove), disabled: processing, children: "Approve" }),
|
|
34741
34757
|
/* @__PURE__ */ jsx264(Button, { variant: "outline", size: "small", onClick: () => resolve("rejected", onReject), disabled: processing, children: "Reject" })
|
|
34742
34758
|
] }) : /* @__PURE__ */ jsxs206("span", { className: "flex min-w-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
@@ -35156,7 +35172,7 @@ function HeaderButton({
|
|
|
35156
35172
|
}
|
|
35157
35173
|
|
|
35158
35174
|
// src/components/features/time-tracker/time-tracker-header-button.tsx
|
|
35159
|
-
import { Fragment as
|
|
35175
|
+
import { Fragment as Fragment49, jsx as jsx268, jsxs as jsxs208 } from "react/jsx-runtime";
|
|
35160
35176
|
function TimeTrackerHeaderButton({ className, disabled }) {
|
|
35161
35177
|
const ctx = useOptionalTimeTracker();
|
|
35162
35178
|
const elapsedLabel = useTrackerClock({
|
|
@@ -35202,7 +35218,7 @@ function TimeTrackerHeaderButton({ className, disabled }) {
|
|
|
35202
35218
|
isActive && "w-auto gap-[var(--spacing-system-xsf)] px-[var(--spacing-system-sf)] md:w-auto",
|
|
35203
35219
|
className
|
|
35204
35220
|
),
|
|
35205
|
-
icon: /* @__PURE__ */ jsxs208(
|
|
35221
|
+
icon: /* @__PURE__ */ jsxs208(Fragment49, { children: [
|
|
35206
35222
|
/* @__PURE__ */ jsx268(
|
|
35207
35223
|
ClockHistoryIcon,
|
|
35208
35224
|
{
|
|
@@ -35444,7 +35460,7 @@ function BoardTicketApproval({ pendingApproval, onApprove, onReject }) {
|
|
|
35444
35460
|
}
|
|
35445
35461
|
|
|
35446
35462
|
// src/components/features/board/ticket-card.tsx
|
|
35447
|
-
import { Fragment as
|
|
35463
|
+
import { Fragment as Fragment50, jsx as jsx271, jsxs as jsxs211 } from "react/jsx-runtime";
|
|
35448
35464
|
var PRIORITY_COLOR_CLASS = {
|
|
35449
35465
|
low: "text-ods-text-secondary",
|
|
35450
35466
|
medium: "text-ods-info",
|
|
@@ -35488,7 +35504,7 @@ function TicketCardBody({ ticket, columnColor, renderAssignSlot, onApprove, onRe
|
|
|
35488
35504
|
] }) : null;
|
|
35489
35505
|
const timestampLabel = ticket.createdAt ? formatTicketRelativeTime(ticket.createdAt) : null;
|
|
35490
35506
|
const tooltipLabel = ticket.createdAt ? formatTicketFullTimestamp(ticket.createdAt) : null;
|
|
35491
|
-
return /* @__PURE__ */ jsxs211(
|
|
35507
|
+
return /* @__PURE__ */ jsxs211(Fragment50, { children: [
|
|
35492
35508
|
/* @__PURE__ */ jsxs211("div", { className: "flex items-start gap-[var(--spacing-system-sf)]", children: [
|
|
35493
35509
|
/* @__PURE__ */ jsxs211("div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-zero)]", title: ticket.title, children: [
|
|
35494
35510
|
/* @__PURE__ */ jsx271("p", { className: "text-h3 truncate text-ods-text-primary", children: ticket.title }),
|
|
@@ -35654,7 +35670,7 @@ var TicketCardSkeleton = React105.forwardRef(
|
|
|
35654
35670
|
TicketCardSkeleton.displayName = "TicketCardSkeleton";
|
|
35655
35671
|
|
|
35656
35672
|
// src/components/features/board/board-column.tsx
|
|
35657
|
-
import { Fragment as
|
|
35673
|
+
import { Fragment as Fragment51, jsx as jsx273, jsxs as jsxs213 } from "react/jsx-runtime";
|
|
35658
35674
|
function BoardColumn({
|
|
35659
35675
|
column,
|
|
35660
35676
|
collapsed = false,
|
|
@@ -35693,7 +35709,7 @@ function BoardColumn({
|
|
|
35693
35709
|
onArchive: !collapsed && column.archivable && onArchive ? () => onArchive(column.id) : void 0
|
|
35694
35710
|
}
|
|
35695
35711
|
),
|
|
35696
|
-
!collapsed && /* @__PURE__ */ jsxs213(
|
|
35712
|
+
!collapsed && /* @__PURE__ */ jsxs213(Fragment51, { children: [
|
|
35697
35713
|
/* @__PURE__ */ jsx273("div", { "aria-hidden": true, className: "-mx-[var(--spacing-system-sf)] h-px shrink-0 bg-ods-border" }),
|
|
35698
35714
|
/* @__PURE__ */ jsx273(
|
|
35699
35715
|
ColumnBody,
|
|
@@ -35786,7 +35802,7 @@ function SkeletonStack({ count = 4 }) {
|
|
|
35786
35802
|
() => Array.from({ length: count }, () => Math.random().toString(36).slice(2)),
|
|
35787
35803
|
[count]
|
|
35788
35804
|
);
|
|
35789
|
-
return /* @__PURE__ */ jsx273(
|
|
35805
|
+
return /* @__PURE__ */ jsx273(Fragment51, { children: keys.map((k) => /* @__PURE__ */ jsx273(TicketCardSkeleton, {}, k)) });
|
|
35790
35806
|
}
|
|
35791
35807
|
function EmptyState2() {
|
|
35792
35808
|
return /* @__PURE__ */ jsxs213("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: [
|
|
@@ -36208,7 +36224,7 @@ import { useRef as useRef48 } from "react";
|
|
|
36208
36224
|
import { usePreventScroll as usePreventScroll3 } from "@react-aria/overlays";
|
|
36209
36225
|
init_button2();
|
|
36210
36226
|
import { X as X10 } from "lucide-react";
|
|
36211
|
-
import { Fragment as
|
|
36227
|
+
import { Fragment as Fragment53, jsx as jsx276, jsxs as jsxs215 } from "react/jsx-runtime";
|
|
36212
36228
|
var MOBILE_NAV_PANEL_ID = "mobile-nav-panel";
|
|
36213
36229
|
function MobileNavPanel({ isOpen, config }) {
|
|
36214
36230
|
const panelRef = useRef48(null);
|
|
@@ -36264,7 +36280,7 @@ function MobileNavPanel({ isOpen, config }) {
|
|
|
36264
36280
|
item.id
|
|
36265
36281
|
);
|
|
36266
36282
|
};
|
|
36267
|
-
return /* @__PURE__ */ jsxs215(
|
|
36283
|
+
return /* @__PURE__ */ jsxs215(Fragment53, { children: [
|
|
36268
36284
|
/* @__PURE__ */ jsx276(
|
|
36269
36285
|
"div",
|
|
36270
36286
|
{
|
|
@@ -36367,7 +36383,7 @@ function MingoAiButton({ source, icon, label = "Mingo AI", className, onClick, .
|
|
|
36367
36383
|
}
|
|
36368
36384
|
|
|
36369
36385
|
// src/components/navigation/header.tsx
|
|
36370
|
-
import { Fragment as
|
|
36386
|
+
import { Fragment as Fragment54, jsx as jsx278, jsxs as jsxs217 } from "react/jsx-runtime";
|
|
36371
36387
|
function Header2({ config, platform }) {
|
|
36372
36388
|
const [show, setShow] = useState87(true);
|
|
36373
36389
|
const [lastScrollY, setLastScrollY] = useState87(0);
|
|
@@ -36512,7 +36528,7 @@ function Header2({ config, platform }) {
|
|
|
36512
36528
|
},
|
|
36513
36529
|
child.id
|
|
36514
36530
|
)) }),
|
|
36515
|
-
item.dropdownContent && /* @__PURE__ */ jsxs217(
|
|
36531
|
+
item.dropdownContent && /* @__PURE__ */ jsxs217(Fragment54, { children: [
|
|
36516
36532
|
item.showDropdownDivider !== false && /* @__PURE__ */ jsx278("div", { className: "h-px my-2 mx-2 bg-ods-border" }),
|
|
36517
36533
|
/* @__PURE__ */ jsx278("div", { className: "px-2 pb-2", children: item.dropdownContent })
|
|
36518
36534
|
] })
|
|
@@ -36714,7 +36730,7 @@ import { useState as useState89, useEffect as useEffect68, useRef as useRef50 }
|
|
|
36714
36730
|
import { motion as motion2, AnimatePresence, useReducedMotion } from "framer-motion";
|
|
36715
36731
|
import { usePreventScroll as usePreventScroll4 } from "@react-aria/overlays";
|
|
36716
36732
|
init_button2();
|
|
36717
|
-
import { Fragment as
|
|
36733
|
+
import { Fragment as Fragment55, jsx as jsx281, jsxs as jsxs219 } from "react/jsx-runtime";
|
|
36718
36734
|
function SlidingSidebar({ config }) {
|
|
36719
36735
|
const [expandedItems, setExpandedItems] = useState89(/* @__PURE__ */ new Set());
|
|
36720
36736
|
const [mounted, setMounted] = useState89(false);
|
|
@@ -36840,7 +36856,7 @@ function SlidingSidebar({ config }) {
|
|
|
36840
36856
|
if (!mounted) {
|
|
36841
36857
|
return null;
|
|
36842
36858
|
}
|
|
36843
|
-
return /* @__PURE__ */ jsxs219(
|
|
36859
|
+
return /* @__PURE__ */ jsxs219(Fragment55, { children: [
|
|
36844
36860
|
/* @__PURE__ */ jsx281(AnimatePresence, { children: config.isOpen && /* @__PURE__ */ jsx281(
|
|
36845
36861
|
motion2.div,
|
|
36846
36862
|
{
|
|
@@ -37141,7 +37157,7 @@ function NavigationSidebarToggle({
|
|
|
37141
37157
|
}
|
|
37142
37158
|
|
|
37143
37159
|
// src/components/navigation/navigation-sidebar.tsx
|
|
37144
|
-
import { Fragment as
|
|
37160
|
+
import { Fragment as Fragment56, jsx as jsx286, jsxs as jsxs224 } from "react/jsx-runtime";
|
|
37145
37161
|
var MINIMIZED_WIDTH = 56;
|
|
37146
37162
|
var EXPANDED_WIDTH = 224;
|
|
37147
37163
|
var STORAGE_KEY = "of.navigationSidebar.minimized";
|
|
@@ -37206,7 +37222,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
37206
37222
|
return () => cancelAnimationFrame(id);
|
|
37207
37223
|
}
|
|
37208
37224
|
}, [isHydrated, transitionsEnabled]);
|
|
37209
|
-
return /* @__PURE__ */ jsxs224(
|
|
37225
|
+
return /* @__PURE__ */ jsxs224(Fragment56, { children: [
|
|
37210
37226
|
/* @__PURE__ */ jsx286(
|
|
37211
37227
|
"div",
|
|
37212
37228
|
{
|
|
@@ -37245,7 +37261,7 @@ function NavigationSidebar({ config, disabled = false }) {
|
|
|
37245
37261
|
),
|
|
37246
37262
|
style: { width: sidebarWidth },
|
|
37247
37263
|
"aria-label": "Main navigation sidebar",
|
|
37248
|
-
children: isHydrated && /* @__PURE__ */ jsxs224(
|
|
37264
|
+
children: isHydrated && /* @__PURE__ */ jsxs224(Fragment56, { children: [
|
|
37249
37265
|
/* @__PURE__ */ jsx286(NavigationSidebarHeader, { minimized }),
|
|
37250
37266
|
/* @__PURE__ */ jsxs224("div", { className: "flex-1 flex flex-col justify-between py-4 overflow-y-auto", children: [
|
|
37251
37267
|
/* @__PURE__ */ jsx286("nav", { className: "flex flex-col", "aria-label": "Primary navigation", children: primaryItems.map((item) => /* @__PURE__ */ jsx286(
|
|
@@ -37658,7 +37674,7 @@ import { Suspense as Suspense2, useCallback as useCallback38, useMemo as useMemo
|
|
|
37658
37674
|
// src/components/navigation/mobile-burger-menu.tsx
|
|
37659
37675
|
import React115, { useCallback as useCallback37, useRef as useRef52 } from "react";
|
|
37660
37676
|
import { usePreventScroll as usePreventScroll5 } from "@react-aria/overlays";
|
|
37661
|
-
import { Fragment as
|
|
37677
|
+
import { Fragment as Fragment57, jsx as jsx291, jsxs as jsxs229 } from "react/jsx-runtime";
|
|
37662
37678
|
var HEADER_HEIGHT = 48;
|
|
37663
37679
|
var MobileBurgerMenu = React115.memo(function MobileBurgerMenu2({
|
|
37664
37680
|
isOpen,
|
|
@@ -37718,7 +37734,7 @@ var MobileBurgerMenu = React115.memo(function MobileBurgerMenu2({
|
|
|
37718
37734
|
);
|
|
37719
37735
|
};
|
|
37720
37736
|
const renderNavigationGrid = (items) => /* @__PURE__ */ jsx291("div", { className: "grid grid-cols-2 gap-3", children: items.map((item) => /* @__PURE__ */ jsx291(React115.Fragment, { children: renderNavigationItem(item, true) }, item.id)) });
|
|
37721
|
-
return /* @__PURE__ */ jsxs229(
|
|
37737
|
+
return /* @__PURE__ */ jsxs229(Fragment57, { children: [
|
|
37722
37738
|
/* @__PURE__ */ jsx291(
|
|
37723
37739
|
"div",
|
|
37724
37740
|
{
|
|
@@ -38482,7 +38498,7 @@ import React117, { useRef as useRef54, useCallback as useCallback39 } from "reac
|
|
|
38482
38498
|
import React116 from "react";
|
|
38483
38499
|
init_button2();
|
|
38484
38500
|
init_cn();
|
|
38485
|
-
import { Fragment as
|
|
38501
|
+
import { Fragment as Fragment58, jsx as jsx301, jsxs as jsxs239 } from "react/jsx-runtime";
|
|
38486
38502
|
function OnboardingStepCard({
|
|
38487
38503
|
step,
|
|
38488
38504
|
isCompleted,
|
|
@@ -38524,10 +38540,10 @@ function OnboardingStepCard({
|
|
|
38524
38540
|
/* @__PURE__ */ jsx301("h3", { className: "text-h4 text-ods-text-primary truncate", title: step.title, children: step.title }),
|
|
38525
38541
|
/* @__PURE__ */ jsx301("p", { className: "text-h6 text-ods-text-secondary truncate h-[20px]", title: step.description, children: step.description })
|
|
38526
38542
|
] }),
|
|
38527
|
-
/* @__PURE__ */ jsx301("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__ */ jsxs239(
|
|
38543
|
+
/* @__PURE__ */ jsx301("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__ */ jsxs239(Fragment58, { children: [
|
|
38528
38544
|
/* @__PURE__ */ jsx301("div", { className: "h-[32px] w-[100px] bg-ods-border rounded-[6px] animate-pulse" }),
|
|
38529
38545
|
/* @__PURE__ */ jsx301("div", { className: "h-[32px] w-[120px] bg-ods-border rounded-[6px] animate-pulse" })
|
|
38530
|
-
] }) : isCompleted ? /* @__PURE__ */ jsxs239(
|
|
38546
|
+
] }) : isCompleted ? /* @__PURE__ */ jsxs239(Fragment58, { children: [
|
|
38531
38547
|
/* @__PURE__ */ jsx301(
|
|
38532
38548
|
StatusBadge,
|
|
38533
38549
|
{
|
|
@@ -38546,14 +38562,14 @@ function OnboardingStepCard({
|
|
|
38546
38562
|
children: step.completedText
|
|
38547
38563
|
}
|
|
38548
38564
|
)
|
|
38549
|
-
] }) : isSkipped ? /* @__PURE__ */ jsx301(
|
|
38565
|
+
] }) : isSkipped ? /* @__PURE__ */ jsx301(Fragment58, { children: /* @__PURE__ */ jsx301(
|
|
38550
38566
|
StatusBadge,
|
|
38551
38567
|
{
|
|
38552
38568
|
text: "SKIPPED",
|
|
38553
38569
|
variant: "card",
|
|
38554
38570
|
colorScheme: "default"
|
|
38555
38571
|
}
|
|
38556
|
-
) }) : /* @__PURE__ */ jsxs239(
|
|
38572
|
+
) }) : /* @__PURE__ */ jsxs239(Fragment58, { children: [
|
|
38557
38573
|
/* @__PURE__ */ jsx301(
|
|
38558
38574
|
Button,
|
|
38559
38575
|
{
|
|
@@ -39513,7 +39529,7 @@ function getHideClasses(hideAt) {
|
|
|
39513
39529
|
}
|
|
39514
39530
|
|
|
39515
39531
|
// src/components/ui/table/table-header.tsx
|
|
39516
|
-
import { Fragment as
|
|
39532
|
+
import { Fragment as Fragment59, jsx as jsx314, jsxs as jsxs249 } from "react/jsx-runtime";
|
|
39517
39533
|
function TableHeader({
|
|
39518
39534
|
columns,
|
|
39519
39535
|
className,
|
|
@@ -39624,10 +39640,10 @@ function TableHeader({
|
|
|
39624
39640
|
column.sortable && "cursor-pointer hover:text-ods-text-primary transition-colors"
|
|
39625
39641
|
),
|
|
39626
39642
|
onClick: () => handleSort(column),
|
|
39627
|
-
children: column.renderHeader ? /* @__PURE__ */ jsxs249(
|
|
39643
|
+
children: column.renderHeader ? /* @__PURE__ */ jsxs249(Fragment59, { children: [
|
|
39628
39644
|
column.renderHeader(),
|
|
39629
39645
|
getSortIcon(column)
|
|
39630
|
-
] }) : /* @__PURE__ */ jsxs249(
|
|
39646
|
+
] }) : /* @__PURE__ */ jsxs249(Fragment59, { children: [
|
|
39631
39647
|
/* @__PURE__ */ jsx314("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap", children: column.label }),
|
|
39632
39648
|
getSortIcon(column)
|
|
39633
39649
|
] })
|
|
@@ -39682,7 +39698,7 @@ function TableCell({
|
|
|
39682
39698
|
|
|
39683
39699
|
// src/components/ui/table/table-skeleton.tsx
|
|
39684
39700
|
init_cn();
|
|
39685
|
-
import { Fragment as
|
|
39701
|
+
import { Fragment as Fragment60, jsx as jsx316, jsxs as jsxs250 } from "react/jsx-runtime";
|
|
39686
39702
|
var ROW_HEIGHT_DESKTOP = "h-[68px] md:h-[80px]";
|
|
39687
39703
|
var ROW_HEIGHT_MOBILE = "h-[68px]";
|
|
39688
39704
|
function TableCardSkeleton({
|
|
@@ -39694,7 +39710,7 @@ function TableCardSkeleton({
|
|
|
39694
39710
|
rowClassName
|
|
39695
39711
|
}) {
|
|
39696
39712
|
const primaryKey = (columns.find((c) => /flex-(1|\[)/.test(c.width || "")) ?? columns[0])?.key;
|
|
39697
|
-
return /* @__PURE__ */ jsx316(
|
|
39713
|
+
return /* @__PURE__ */ jsx316(Fragment60, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs250(
|
|
39698
39714
|
"div",
|
|
39699
39715
|
{
|
|
39700
39716
|
className: cn(
|
|
@@ -39873,7 +39889,7 @@ function useTableMotion(enabled) {
|
|
|
39873
39889
|
}
|
|
39874
39890
|
|
|
39875
39891
|
// src/components/ui/table/table.tsx
|
|
39876
|
-
import { Fragment as
|
|
39892
|
+
import { Fragment as Fragment61, jsx as jsx318, jsxs as jsxs252 } from "react/jsx-runtime";
|
|
39877
39893
|
function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
|
|
39878
39894
|
const hasActions = Boolean(rowActions?.length) || Boolean(renderRowActions);
|
|
39879
39895
|
const result = [...columns];
|
|
@@ -40075,7 +40091,7 @@ function Table({
|
|
|
40075
40091
|
hasActions: Boolean(rowActions) && rowActions.length > 0,
|
|
40076
40092
|
hasChevron: Boolean(rowHref)
|
|
40077
40093
|
}
|
|
40078
|
-
) : data.length === 0 ? /* @__PURE__ */ jsx318(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs252(
|
|
40094
|
+
) : data.length === 0 ? /* @__PURE__ */ jsx318(TableEmptyState, { message: emptyMessage }) : /* @__PURE__ */ jsxs252(Fragment61, { children: [
|
|
40079
40095
|
(() => {
|
|
40080
40096
|
const rows = data.map((item, index) => /* @__PURE__ */ jsx318(
|
|
40081
40097
|
TableRow,
|
|
@@ -40702,7 +40718,7 @@ function DataTableColumnFilter({
|
|
|
40702
40718
|
}
|
|
40703
40719
|
|
|
40704
40720
|
// src/components/ui/data-table/data-table-header.tsx
|
|
40705
|
-
import { Fragment as
|
|
40721
|
+
import { Fragment as Fragment62, jsx as jsx327, jsxs as jsxs259 } from "react/jsx-runtime";
|
|
40706
40722
|
function DataTableHeader({
|
|
40707
40723
|
className,
|
|
40708
40724
|
stickyHeader,
|
|
@@ -40798,7 +40814,7 @@ function HeaderLabel({ header }) {
|
|
|
40798
40814
|
if (typeof headerDef === "string") {
|
|
40799
40815
|
return /* @__PURE__ */ jsx327("span", { className: "text-h5 text-ods-text-secondary uppercase whitespace-nowrap transition-colors duration-200 group-hover:text-ods-text-primary", children: headerDef });
|
|
40800
40816
|
}
|
|
40801
|
-
return /* @__PURE__ */ jsx327(
|
|
40817
|
+
return /* @__PURE__ */ jsx327(Fragment62, { children: flexRender(headerDef, header.getContext()) });
|
|
40802
40818
|
}
|
|
40803
40819
|
function SortIcon({ sorted }) {
|
|
40804
40820
|
if (sorted === "asc") return /* @__PURE__ */ jsx327(Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" });
|
|
@@ -40837,7 +40853,7 @@ import { flexRender as flexRender2 } from "@tanstack/react-table";
|
|
|
40837
40853
|
|
|
40838
40854
|
// src/components/ui/data-table/data-table-skeleton.tsx
|
|
40839
40855
|
init_cn();
|
|
40840
|
-
import { Fragment as
|
|
40856
|
+
import { Fragment as Fragment63, jsx as jsx329, jsxs as jsxs260 } from "react/jsx-runtime";
|
|
40841
40857
|
var ROW_HEIGHT_DESKTOP2 = "h-[68px] md:h-[80px]";
|
|
40842
40858
|
var ROW_HEIGHT_MOBILE2 = "h-[68px]";
|
|
40843
40859
|
function DataTableSkeleton({
|
|
@@ -40848,7 +40864,7 @@ function DataTableSkeleton({
|
|
|
40848
40864
|
const table = useDataTableContext();
|
|
40849
40865
|
const columns = table.getVisibleFlatColumns();
|
|
40850
40866
|
const firstColumnId = columns[0]?.id;
|
|
40851
|
-
return /* @__PURE__ */ jsx329(
|
|
40867
|
+
return /* @__PURE__ */ jsx329(Fragment63, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ jsxs260(
|
|
40852
40868
|
"div",
|
|
40853
40869
|
{
|
|
40854
40870
|
className: cn(
|
|
@@ -40904,7 +40920,7 @@ function DataTableSkeleton({
|
|
|
40904
40920
|
}
|
|
40905
40921
|
|
|
40906
40922
|
// src/components/ui/data-table/data-table-row.tsx
|
|
40907
|
-
import { Fragment as
|
|
40923
|
+
import { Fragment as Fragment64, jsx as jsx330, jsxs as jsxs261 } from "react/jsx-runtime";
|
|
40908
40924
|
function DataTableRowImpl({
|
|
40909
40925
|
row,
|
|
40910
40926
|
onClick,
|
|
@@ -41006,7 +41022,7 @@ function CellContent({ children }) {
|
|
|
41006
41022
|
if (typeof children === "string" || typeof children === "number") {
|
|
41007
41023
|
return /* @__PURE__ */ jsx330("span", { className: "text-h4 text-ods-text-primary truncate", title: String(children), children });
|
|
41008
41024
|
}
|
|
41009
|
-
return /* @__PURE__ */ jsx330(
|
|
41025
|
+
return /* @__PURE__ */ jsx330(Fragment64, { children });
|
|
41010
41026
|
}
|
|
41011
41027
|
|
|
41012
41028
|
// src/components/ui/data-table/data-table-body.tsx
|
|
@@ -41086,7 +41102,7 @@ function DataTableBody({
|
|
|
41086
41102
|
|
|
41087
41103
|
// src/components/ui/data-table/data-table-infinite-footer.tsx
|
|
41088
41104
|
import { useEffect as useEffect73, useRef as useRef60 } from "react";
|
|
41089
|
-
import { Fragment as
|
|
41105
|
+
import { Fragment as Fragment65, jsx as jsx332, jsxs as jsxs263 } from "react/jsx-runtime";
|
|
41090
41106
|
function DataTableInfiniteFooter({
|
|
41091
41107
|
hasNextPage,
|
|
41092
41108
|
isFetchingNextPage,
|
|
@@ -41110,7 +41126,7 @@ function DataTableInfiniteFooter({
|
|
|
41110
41126
|
observer.observe(sentinel);
|
|
41111
41127
|
return () => observer.disconnect();
|
|
41112
41128
|
}, [hasNextPage, isFetchingNextPage, rootMargin]);
|
|
41113
|
-
return /* @__PURE__ */ jsxs263(
|
|
41129
|
+
return /* @__PURE__ */ jsxs263(Fragment65, { children: [
|
|
41114
41130
|
isFetchingNextPage && /* @__PURE__ */ jsx332(DataTableSkeleton, { rows: skeletonRows }),
|
|
41115
41131
|
hasNextPage && /* @__PURE__ */ jsx332("div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" })
|
|
41116
41132
|
] });
|
|
@@ -42520,7 +42536,7 @@ function FileUpload({
|
|
|
42520
42536
|
import * as React128 from "react";
|
|
42521
42537
|
import { Loader2 as Loader210 } from "lucide-react";
|
|
42522
42538
|
init_cn();
|
|
42523
|
-
import { Fragment as
|
|
42539
|
+
import { Fragment as Fragment67, jsx as jsx339, jsxs as jsxs270 } from "react/jsx-runtime";
|
|
42524
42540
|
var DEFAULT_MAX_SIZE = 25 * 1024 * 1024;
|
|
42525
42541
|
function formatSize(bytes) {
|
|
42526
42542
|
const mb = bytes / (1024 * 1024);
|
|
@@ -42649,7 +42665,7 @@ function ImageUploader({
|
|
|
42649
42665
|
!hasImage && !interactive && "cursor-not-allowed",
|
|
42650
42666
|
dropzoneClassName
|
|
42651
42667
|
),
|
|
42652
|
-
children: hasImage ? /* @__PURE__ */ jsxs270(
|
|
42668
|
+
children: hasImage ? /* @__PURE__ */ jsxs270(Fragment67, { children: [
|
|
42653
42669
|
/* @__PURE__ */ jsx339("div", { className: "relative min-h-0 w-full flex-1 overflow-hidden rounded-md", children: resolvedValue && /* @__PURE__ */ jsx339(
|
|
42654
42670
|
"img",
|
|
42655
42671
|
{
|
|
@@ -42686,7 +42702,7 @@ function ImageUploader({
|
|
|
42686
42702
|
)
|
|
42687
42703
|
] }),
|
|
42688
42704
|
loading && /* @__PURE__ */ jsx339("div", { className: "absolute inset-0 flex items-center justify-center rounded-md bg-ods-overlay", children: /* @__PURE__ */ jsx339(Loader210, { className: "size-8 animate-spin text-ods-text-on-dark" }) })
|
|
42689
|
-
] }) : loading ? /* @__PURE__ */ jsx339(Loader210, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs270(
|
|
42705
|
+
] }) : loading ? /* @__PURE__ */ jsx339(Loader210, { className: "size-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ jsxs270(Fragment67, { children: [
|
|
42690
42706
|
/* @__PURE__ */ jsx339("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__ */ jsx339(ImagePlusIcon, { className: "size-6 text-ods-text-primary" }) }),
|
|
42691
42707
|
/* @__PURE__ */ jsxs270("div", { className: "flex w-full flex-col items-center text-center", children: [
|
|
42692
42708
|
/* @__PURE__ */ jsx339("p", { className: "text-h4 text-ods-text-primary", children: label }),
|
|
@@ -42756,7 +42772,7 @@ PopoverContent.displayName = PopoverPrimitive7.Content.displayName;
|
|
|
42756
42772
|
|
|
42757
42773
|
// src/components/ui/color-preset-select.tsx
|
|
42758
42774
|
init_cn();
|
|
42759
|
-
import { Fragment as
|
|
42775
|
+
import { Fragment as Fragment68, jsx as jsx341, jsxs as jsxs271 } from "react/jsx-runtime";
|
|
42760
42776
|
var TICKET_STATUS_COLOR_PRESETS = [
|
|
42761
42777
|
{ key: "green", label: "Green", color: "#5ea62e" },
|
|
42762
42778
|
{ key: "lime", label: "Lime", color: "#8bc34a" },
|
|
@@ -42907,7 +42923,7 @@ function RgbInputs({ value, onChange }) {
|
|
|
42907
42923
|
const b = next.b ?? rgb.b;
|
|
42908
42924
|
onChange(rgbToHex(r, g, b));
|
|
42909
42925
|
};
|
|
42910
|
-
return /* @__PURE__ */ jsxs271(
|
|
42926
|
+
return /* @__PURE__ */ jsxs271(Fragment68, { children: [
|
|
42911
42927
|
/* @__PURE__ */ jsx341(ChannelInput, { value: rgb.r, min: 0, max: 255, ariaLabel: "Red", onCommit: (r) => update({ r }) }),
|
|
42912
42928
|
/* @__PURE__ */ jsx341(ChannelInput, { value: rgb.g, min: 0, max: 255, ariaLabel: "Green", onCommit: (g) => update({ g }) }),
|
|
42913
42929
|
/* @__PURE__ */ jsx341(ChannelInput, { value: rgb.b, min: 0, max: 255, ariaLabel: "Blue", onCommit: (b) => update({ b }) })
|
|
@@ -42923,7 +42939,7 @@ function HslInputs({ value, onChange }) {
|
|
|
42923
42939
|
const out = hslToRgb(h, s, l);
|
|
42924
42940
|
onChange(rgbToHex(out.r, out.g, out.b));
|
|
42925
42941
|
};
|
|
42926
|
-
return /* @__PURE__ */ jsxs271(
|
|
42942
|
+
return /* @__PURE__ */ jsxs271(Fragment68, { children: [
|
|
42927
42943
|
/* @__PURE__ */ jsx341(ChannelInput, { value: hsl.h, min: 0, max: 360, ariaLabel: "Hue", onCommit: (h) => update({ h }) }),
|
|
42928
42944
|
/* @__PURE__ */ jsx341(ChannelInput, { value: hsl.s, min: 0, max: 100, ariaLabel: "Saturation", onCommit: (s) => update({ s }) }),
|
|
42929
42945
|
/* @__PURE__ */ jsx341(ChannelInput, { value: hsl.l, min: 0, max: 100, ariaLabel: "Lightness", onCommit: (l) => update({ l }) })
|
|
@@ -43220,7 +43236,7 @@ init_cn();
|
|
|
43220
43236
|
// src/components/ui/ticket-note-card.tsx
|
|
43221
43237
|
import * as React132 from "react";
|
|
43222
43238
|
init_cn();
|
|
43223
|
-
import { Fragment as
|
|
43239
|
+
import { Fragment as Fragment69, jsx as jsx345, jsxs as jsxs275 } from "react/jsx-runtime";
|
|
43224
43240
|
function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
43225
43241
|
const [isEditing, setIsEditing] = React132.useState(false);
|
|
43226
43242
|
const [editText, setEditText] = React132.useState(note.text);
|
|
@@ -43294,7 +43310,7 @@ function TicketNoteCard({ note, onEdit, onDelete, className }) {
|
|
|
43294
43310
|
children: /* @__PURE__ */ jsx345(XmarkIcon, { className: "size-5" })
|
|
43295
43311
|
}
|
|
43296
43312
|
)
|
|
43297
|
-
] }) : /* @__PURE__ */ jsxs275(
|
|
43313
|
+
] }) : /* @__PURE__ */ jsxs275(Fragment69, { children: [
|
|
43298
43314
|
/* @__PURE__ */ jsx345("p", { className: "text-h4 text-ods-text-primary", children: note.text }),
|
|
43299
43315
|
/* @__PURE__ */ jsxs275(
|
|
43300
43316
|
"p",
|
|
@@ -43401,7 +43417,7 @@ function TicketNotesSection({
|
|
|
43401
43417
|
}
|
|
43402
43418
|
|
|
43403
43419
|
// src/components/ui/ticket-info-section.tsx
|
|
43404
|
-
import { Fragment as
|
|
43420
|
+
import { Fragment as Fragment70, jsx as jsx347, jsxs as jsxs277 } from "react/jsx-runtime";
|
|
43405
43421
|
function InfoCell2({ value, label, icon, onClick }) {
|
|
43406
43422
|
return /* @__PURE__ */ jsx347("div", { className: "flex-1 min-w-0 overflow-hidden", children: /* @__PURE__ */ jsxs277("div", { className: "flex flex-col justify-center", children: [
|
|
43407
43423
|
/* @__PURE__ */ jsxs277("div", { className: "flex items-center gap-1 w-full min-w-0", children: [
|
|
@@ -43526,7 +43542,7 @@ function TicketInfoSection({
|
|
|
43526
43542
|
)
|
|
43527
43543
|
] })
|
|
43528
43544
|
] }),
|
|
43529
|
-
expanded && /* @__PURE__ */ jsxs277(
|
|
43545
|
+
expanded && /* @__PURE__ */ jsxs277(Fragment70, { children: [
|
|
43530
43546
|
createdAt && /* @__PURE__ */ jsx347("div", { className: "grid grid-cols-2 gap-4 px-4 py-3 bg-ods-bg border-b border-ods-border items-center", children: /* @__PURE__ */ jsx347(InfoCell2, { value: createdAt, label: "Created" }) }),
|
|
43531
43547
|
/* @__PURE__ */ jsxs277("div", { className: "flex flex-col gap-4 p-4 bg-ods-bg border-b border-ods-border", children: [
|
|
43532
43548
|
description && /* @__PURE__ */ jsx347(SimpleMarkdownRenderer, { content: description }),
|
|
@@ -43584,7 +43600,7 @@ function FilterPillRow({
|
|
|
43584
43600
|
|
|
43585
43601
|
// src/components/ui/image-gallery-modal.tsx
|
|
43586
43602
|
import { ChevronLeft as ChevronLeft4, ChevronRight as ChevronRight8 } from "lucide-react";
|
|
43587
|
-
import { Fragment as
|
|
43603
|
+
import { Fragment as Fragment71, jsx as jsx349, jsxs as jsxs279 } from "react/jsx-runtime";
|
|
43588
43604
|
function ImageGalleryModal({
|
|
43589
43605
|
images,
|
|
43590
43606
|
isOpen,
|
|
@@ -43640,7 +43656,7 @@ function ImageGalleryModal({
|
|
|
43640
43656
|
onClose,
|
|
43641
43657
|
className: "max-w-[95vw]",
|
|
43642
43658
|
children: /* @__PURE__ */ jsxs279("div", { className: "relative flex items-center justify-center bg-black rounded-lg", children: [
|
|
43643
|
-
images.length > 1 && /* @__PURE__ */ jsxs279(
|
|
43659
|
+
images.length > 1 && /* @__PURE__ */ jsxs279(Fragment71, { children: [
|
|
43644
43660
|
selectedImageIndex > 0 && /* @__PURE__ */ jsx349("div", { className: "absolute left-4 top-1/2 -translate-y-1/2 z-[10000]", children: /* @__PURE__ */ jsx349(
|
|
43645
43661
|
Button,
|
|
43646
43662
|
{
|
|
@@ -43758,7 +43774,7 @@ function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
|
|
|
43758
43774
|
}
|
|
43759
43775
|
|
|
43760
43776
|
// src/components/chat/entity-cards/roadmap-card.tsx
|
|
43761
|
-
import { Fragment as
|
|
43777
|
+
import { Fragment as Fragment72, jsx as jsx351, jsxs as jsxs280 } from "react/jsx-runtime";
|
|
43762
43778
|
function RoadmapCardSkeleton({ size: size2 = "default" }) {
|
|
43763
43779
|
if (size2 === "sm") {
|
|
43764
43780
|
return /* @__PURE__ */ jsxs280("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -43820,7 +43836,7 @@ function RoadmapCard({
|
|
|
43820
43836
|
const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
|
|
43821
43837
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
43822
43838
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
43823
|
-
const body = /* @__PURE__ */ jsxs280(
|
|
43839
|
+
const body = /* @__PURE__ */ jsxs280(Fragment72, { children: [
|
|
43824
43840
|
/* @__PURE__ */ jsx351(
|
|
43825
43841
|
"span",
|
|
43826
43842
|
{
|
|
@@ -44012,7 +44028,7 @@ function RoadmapCard({
|
|
|
44012
44028
|
// src/components/chat/entity-cards/github-activity-card.tsx
|
|
44013
44029
|
import React135 from "react";
|
|
44014
44030
|
import { GitPullRequest, Eye as Eye4, ExternalLink as ExternalLink8 } from "lucide-react";
|
|
44015
|
-
import { Fragment as
|
|
44031
|
+
import { Fragment as Fragment73, jsx as jsx352, jsxs as jsxs281 } from "react/jsx-runtime";
|
|
44016
44032
|
function parseRepoFromUrl(url) {
|
|
44017
44033
|
if (!url) return null;
|
|
44018
44034
|
try {
|
|
@@ -44144,7 +44160,7 @@ function GitHubActivityCard({ item, variant = "compact", className, anchorProps
|
|
|
44144
44160
|
if (repo) metaParts.push(/* @__PURE__ */ jsx352("span", { className: "font-mono truncate", children: repo }, "repo"));
|
|
44145
44161
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx352("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
44146
44162
|
const href = safeHref(item.url);
|
|
44147
|
-
const body = /* @__PURE__ */ jsxs281(
|
|
44163
|
+
const body = /* @__PURE__ */ jsxs281(Fragment73, { children: [
|
|
44148
44164
|
/* @__PURE__ */ jsx352("span", { className: COMPACT_CARD_ICON_SLOT, children: kindIcon(kind, "h-5 w-5") }),
|
|
44149
44165
|
/* @__PURE__ */ jsxs281("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
44150
44166
|
/* @__PURE__ */ jsxs281("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-1.5`, children: [
|
|
@@ -44199,7 +44215,7 @@ function GitHubActivityCardSkeleton({ variant = "compact", className }) {
|
|
|
44199
44215
|
// src/components/chat/entity-cards/slack-message-card.tsx
|
|
44200
44216
|
import React136 from "react";
|
|
44201
44217
|
import { ExternalLink as ExternalLink9, Hash } from "lucide-react";
|
|
44202
|
-
import { Fragment as
|
|
44218
|
+
import { Fragment as Fragment74, jsx as jsx353, jsxs as jsxs282 } from "react/jsx-runtime";
|
|
44203
44219
|
function parseChannelFromUrl(url) {
|
|
44204
44220
|
if (!url) return null;
|
|
44205
44221
|
try {
|
|
@@ -44238,7 +44254,7 @@ function SlackMessageCard({ item, variant = "compact", className, anchorProps })
|
|
|
44238
44254
|
}
|
|
44239
44255
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx353("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
44240
44256
|
const href = safeHref(item.url);
|
|
44241
|
-
const body = /* @__PURE__ */ jsxs282(
|
|
44257
|
+
const body = /* @__PURE__ */ jsxs282(Fragment74, { children: [
|
|
44242
44258
|
/* @__PURE__ */ jsx353("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx353(SlackIcon, { className: "h-5 w-5" }) }),
|
|
44243
44259
|
/* @__PURE__ */ jsxs282("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
44244
44260
|
/* @__PURE__ */ jsx353("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx353("span", { className: COMPACT_CARD_TITLE, children: item.title }) }),
|
|
@@ -44288,7 +44304,7 @@ function SlackMessageCardSkeleton({ variant = "compact", className }) {
|
|
|
44288
44304
|
// src/components/chat/entity-cards/hubspot-ticket-card.tsx
|
|
44289
44305
|
import React137 from "react";
|
|
44290
44306
|
import { ExternalLink as ExternalLink10 } from "lucide-react";
|
|
44291
|
-
import { Fragment as
|
|
44307
|
+
import { Fragment as Fragment75, jsx as jsx354, jsxs as jsxs283 } from "react/jsx-runtime";
|
|
44292
44308
|
function formatToken(token) {
|
|
44293
44309
|
if (!token) return null;
|
|
44294
44310
|
const lower = token.toLowerCase().replace(/_/g, " ");
|
|
@@ -44327,7 +44343,7 @@ function HubspotTicketCard({ item, variant = "compact", className, anchorProps }
|
|
|
44327
44343
|
}
|
|
44328
44344
|
if (dateText) metaParts.push(/* @__PURE__ */ jsx354("span", { className: "whitespace-nowrap", children: dateText }, "date"));
|
|
44329
44345
|
const href = safeHref(item.url);
|
|
44330
|
-
const body = /* @__PURE__ */ jsxs283(
|
|
44346
|
+
const body = /* @__PURE__ */ jsxs283(Fragment75, { children: [
|
|
44331
44347
|
/* @__PURE__ */ jsxs283("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
44332
44348
|
/* @__PURE__ */ jsxs283("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
44333
44349
|
/* @__PURE__ */ jsx354("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -44407,9 +44423,9 @@ function HubspotTicketCardSkeleton({ variant = "compact", className }) {
|
|
|
44407
44423
|
|
|
44408
44424
|
// src/components/chat/entity-cards/data-room-doc-card.tsx
|
|
44409
44425
|
import { ExternalLink as ExternalLink11 } from "lucide-react";
|
|
44410
|
-
import { Fragment as
|
|
44426
|
+
import { Fragment as Fragment76, jsx as jsx355, jsxs as jsxs284 } from "react/jsx-runtime";
|
|
44411
44427
|
function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
|
|
44412
|
-
const body = /* @__PURE__ */ jsxs284(
|
|
44428
|
+
const body = /* @__PURE__ */ jsxs284(Fragment76, { children: [
|
|
44413
44429
|
/* @__PURE__ */ jsxs284("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
44414
44430
|
/* @__PURE__ */ jsxs284("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
44415
44431
|
/* @__PURE__ */ jsx355("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -46019,7 +46035,7 @@ function cleanEscapedString(input) {
|
|
|
46019
46035
|
init_button();
|
|
46020
46036
|
import { ExternalLink as ExternalLink12, Clock as Clock2, Play as Play4, Video as Video5 } from "lucide-react";
|
|
46021
46037
|
init_cn();
|
|
46022
|
-
import { Fragment as
|
|
46038
|
+
import { Fragment as Fragment77, jsx as jsx356, jsxs as jsxs285 } from "react/jsx-runtime";
|
|
46023
46039
|
function formatUtc(date, fmt) {
|
|
46024
46040
|
return format2(new Date(date.getTime() + date.getTimezoneOffset() * 6e4), fmt);
|
|
46025
46041
|
}
|
|
@@ -46094,7 +46110,7 @@ function MediaGallery({ images, title }) {
|
|
|
46094
46110
|
setIsModalOpen(false);
|
|
46095
46111
|
setSelectedImageIndex(null);
|
|
46096
46112
|
};
|
|
46097
|
-
return /* @__PURE__ */ jsxs285(
|
|
46113
|
+
return /* @__PURE__ */ jsxs285(Fragment77, { children: [
|
|
46098
46114
|
/* @__PURE__ */ jsx356("div", { className: "p-6 pt-4", children: /* @__PURE__ */ jsx356("div", { className: "overflow-x-auto mb-4", children: /* @__PURE__ */ jsx356("div", { className: "flex gap-3 pb-2", style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsxs285(
|
|
46099
46115
|
"div",
|
|
46100
46116
|
{
|
|
@@ -46236,7 +46252,7 @@ function ProgramCard({
|
|
|
46236
46252
|
const dateFormat = formatUtc(itemDate, "EEEE d MMMM");
|
|
46237
46253
|
const defaultRenderMeta = () => {
|
|
46238
46254
|
if (config.type === "podcast" && "duration_seconds" in item && !isScheduled) {
|
|
46239
|
-
return /* @__PURE__ */ jsxs285(
|
|
46255
|
+
return /* @__PURE__ */ jsxs285(Fragment77, { children: [
|
|
46240
46256
|
/* @__PURE__ */ jsx356(Clock2, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
46241
46257
|
/* @__PURE__ */ jsx356("span", { className: "font-body text-ods-text-secondary", children: formatDurationCompact(item.duration_seconds) })
|
|
46242
46258
|
] });
|
|
@@ -46247,7 +46263,7 @@ function ProgramCard({
|
|
|
46247
46263
|
if (config.type === "webinar" && "start_at" in item) {
|
|
46248
46264
|
const webinarItem = item;
|
|
46249
46265
|
const duration = formatDurationFromRange(webinarItem.start_at, webinarItem.end_at);
|
|
46250
|
-
return /* @__PURE__ */ jsxs285(
|
|
46266
|
+
return /* @__PURE__ */ jsxs285(Fragment77, { children: [
|
|
46251
46267
|
/* @__PURE__ */ jsx356(Video5, { className: "w-4 h-4 text-ods-text-secondary" }),
|
|
46252
46268
|
/* @__PURE__ */ jsxs285("span", { className: "font-body text-ods-text-secondary", children: [
|
|
46253
46269
|
formatTimeWithTimezone(webinarItem.start_at, webinarItem.timezone ?? null),
|
|
@@ -46281,10 +46297,10 @@ function ProgramCard({
|
|
|
46281
46297
|
/* @__PURE__ */ jsx356("h3", { className: "text-h2 text-ods-text-primary mb-3 min-h-[3rem] md:min-h-[3.5rem] line-clamp-2 flex items-center", children: item.title }),
|
|
46282
46298
|
/* @__PURE__ */ jsxs285("div", { className: "flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-4", children: [
|
|
46283
46299
|
/* @__PURE__ */ jsx356("span", { className: "text-h6", style: { color: accentColor }, children: dateFormat }),
|
|
46284
|
-
renderMeta ? /* @__PURE__ */ jsxs285(
|
|
46300
|
+
renderMeta ? /* @__PURE__ */ jsxs285(Fragment77, { children: [
|
|
46285
46301
|
/* @__PURE__ */ jsx356("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
46286
46302
|
renderMeta(item)
|
|
46287
|
-
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs285(
|
|
46303
|
+
] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs285(Fragment77, { children: [
|
|
46288
46304
|
/* @__PURE__ */ jsx356("span", { className: "hidden md:inline text-ods-text-secondary", children: "\u2022" }),
|
|
46289
46305
|
/* @__PURE__ */ jsx356("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
|
|
46290
46306
|
] })
|
|
@@ -46361,10 +46377,10 @@ function ProgramCard({
|
|
|
46361
46377
|
|
|
46362
46378
|
// src/components/chat/entity-cards/campaign-card-admin.tsx
|
|
46363
46379
|
import { Megaphone as Megaphone3 } from "lucide-react";
|
|
46364
|
-
import { Fragment as
|
|
46380
|
+
import { Fragment as Fragment78, jsx as jsx357, jsxs as jsxs286 } from "react/jsx-runtime";
|
|
46365
46381
|
function CampaignCardAdmin({ campaign, className, anchorProps }) {
|
|
46366
46382
|
const goalsCount = campaign.goals?.length || 0;
|
|
46367
|
-
const innerChildren = /* @__PURE__ */ jsxs286(
|
|
46383
|
+
const innerChildren = /* @__PURE__ */ jsxs286(Fragment78, { children: [
|
|
46368
46384
|
/* @__PURE__ */ jsx357("span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ jsx357(Megaphone3, { className: "h-5 w-5" }) }),
|
|
46369
46385
|
/* @__PURE__ */ jsxs286("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
46370
46386
|
/* @__PURE__ */ jsx357("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx357("span", { className: COMPACT_CARD_TITLE, children: campaign.name }) }),
|
|
@@ -46394,11 +46410,11 @@ function CampaignCardAdminSkeleton({ className }) {
|
|
|
46394
46410
|
|
|
46395
46411
|
// src/components/chat/entity-cards/generic-entity-card.tsx
|
|
46396
46412
|
import { ExternalLink as ExternalLink13 } from "lucide-react";
|
|
46397
|
-
import { Fragment as
|
|
46413
|
+
import { Fragment as Fragment79, jsx as jsx358, jsxs as jsxs287 } from "react/jsx-runtime";
|
|
46398
46414
|
function GenericEntityCard({ item, className, anchorProps }) {
|
|
46399
46415
|
const href = safeHref(item.url);
|
|
46400
46416
|
const dateText = formatDateUTC(item.dateUpdated, { fallback: "", timezone: "local" });
|
|
46401
|
-
const body = /* @__PURE__ */ jsxs287(
|
|
46417
|
+
const body = /* @__PURE__ */ jsxs287(Fragment79, { children: [
|
|
46402
46418
|
/* @__PURE__ */ jsxs287("span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
46403
46419
|
/* @__PURE__ */ jsxs287("span", { className: "flex flex-wrap items-center gap-1.5 min-w-0", children: [
|
|
46404
46420
|
/* @__PURE__ */ jsx358("span", { className: `${COMPACT_CARD_TITLE} shrink min-w-0`, children: item.title }),
|
|
@@ -46583,7 +46599,7 @@ function resolveSourceIcon(input, ctx = {}) {
|
|
|
46583
46599
|
|
|
46584
46600
|
// src/components/chat/mingo-info-card.tsx
|
|
46585
46601
|
init_cn();
|
|
46586
|
-
import { Fragment as
|
|
46602
|
+
import { Fragment as Fragment80, jsx as jsx359, jsxs as jsxs288 } from "react/jsx-runtime";
|
|
46587
46603
|
function CardMedia({
|
|
46588
46604
|
imageSrc,
|
|
46589
46605
|
imageAlt,
|
|
@@ -46627,7 +46643,7 @@ function MingoInfoCard({
|
|
|
46627
46643
|
const hasMenu = !!menuGroups && menuGroups.length > 0;
|
|
46628
46644
|
const isAnchor = !!anchorProps;
|
|
46629
46645
|
const isInteractive = isAnchor || !!onClick;
|
|
46630
|
-
const content = /* @__PURE__ */ jsxs288(
|
|
46646
|
+
const content = /* @__PURE__ */ jsxs288(Fragment80, { children: [
|
|
46631
46647
|
hasMedia && /* @__PURE__ */ jsx359(CardMedia, { imageSrc, imageAlt, icon }),
|
|
46632
46648
|
/* @__PURE__ */ jsxs288("span", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
46633
46649
|
/* @__PURE__ */ jsx359("span", { className: "truncate text-h4 text-ods-text-primary", children: title }),
|
|
@@ -46676,7 +46692,7 @@ function MingoInfoCard({
|
|
|
46676
46692
|
}
|
|
46677
46693
|
|
|
46678
46694
|
// src/components/chat/entity-cards/dispatch.tsx
|
|
46679
|
-
import { Fragment as
|
|
46695
|
+
import { Fragment as Fragment81, jsx as jsx360, jsxs as jsxs289 } from "react/jsx-runtime";
|
|
46680
46696
|
function githubKindIcon(kind) {
|
|
46681
46697
|
switch (kind) {
|
|
46682
46698
|
case "pull_request":
|
|
@@ -47644,10 +47660,10 @@ function ChatCardLoader({
|
|
|
47644
47660
|
}
|
|
47645
47661
|
);
|
|
47646
47662
|
}
|
|
47647
|
-
if (isLoading) return /* @__PURE__ */ jsx360(
|
|
47663
|
+
if (isLoading) return /* @__PURE__ */ jsx360(Fragment81, { children: entry.skeleton() });
|
|
47648
47664
|
if (!item) return null;
|
|
47649
47665
|
if (entry.bareInline) {
|
|
47650
|
-
return /* @__PURE__ */ jsx360(
|
|
47666
|
+
return /* @__PURE__ */ jsx360(Fragment81, { children: navWrap(entry.render(item, finalChatRef, renderOpts)) });
|
|
47651
47667
|
}
|
|
47652
47668
|
return /* @__PURE__ */ jsx360(
|
|
47653
47669
|
ChatCardWithDiscuss,
|
|
@@ -48570,6 +48586,7 @@ function parseChunkToAction(chunk) {
|
|
|
48570
48586
|
integratedToolType: data.integratedToolType || "",
|
|
48571
48587
|
toolFunction: data.toolFunction || "",
|
|
48572
48588
|
toolTitle: typeof data.title === "string" ? data.title : void 0,
|
|
48589
|
+
toolExplanation: typeof data.toolExplanation === "string" ? data.toolExplanation : void 0,
|
|
48573
48590
|
parameters: data.parameters,
|
|
48574
48591
|
toolExecutionRequestId: typeof data.toolExecutionRequestId === "string" ? data.toolExecutionRequestId : void 0
|
|
48575
48592
|
}
|
|
@@ -48820,6 +48837,7 @@ var MessageSegmentAccumulator = class {
|
|
|
48820
48837
|
integratedToolType: toolData.integratedToolType,
|
|
48821
48838
|
toolFunction: toolData.toolFunction,
|
|
48822
48839
|
toolTitle: toolData.toolTitle,
|
|
48840
|
+
toolExplanation: toolData.toolExplanation,
|
|
48823
48841
|
parameters: toolData.parameters
|
|
48824
48842
|
});
|
|
48825
48843
|
this.segments.push(segment);
|
|
@@ -48834,6 +48852,7 @@ var MessageSegmentAccumulator = class {
|
|
|
48834
48852
|
data: {
|
|
48835
48853
|
...toolData,
|
|
48836
48854
|
toolTitle: toolData.toolTitle ?? existingExecuting?.data.toolTitle ?? executingTool?.toolTitle,
|
|
48855
|
+
toolExplanation: toolData.toolExplanation ?? existingExecuting?.data.toolExplanation ?? executingTool?.toolExplanation,
|
|
48837
48856
|
parameters: toolData.parameters || executingTool?.parameters
|
|
48838
48857
|
}
|
|
48839
48858
|
};
|
|
@@ -51118,6 +51137,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
|
|
|
51118
51137
|
integratedToolType: data.integratedToolType || "",
|
|
51119
51138
|
toolFunction: data.toolFunction || "",
|
|
51120
51139
|
toolTitle: typeof data.title === "string" ? data.title : void 0,
|
|
51140
|
+
toolExplanation: typeof data.toolExplanation === "string" ? data.toolExplanation : void 0,
|
|
51121
51141
|
parameters: data.parameters,
|
|
51122
51142
|
toolExecutionRequestId: data.toolExecutionRequestId
|
|
51123
51143
|
}
|
|
@@ -51416,6 +51436,7 @@ function extractIncompleteMessageState(lastMessage) {
|
|
|
51416
51436
|
integratedToolType: segment.data.integratedToolType,
|
|
51417
51437
|
toolFunction: segment.data.toolFunction,
|
|
51418
51438
|
toolTitle: segment.data.toolTitle,
|
|
51439
|
+
toolExplanation: segment.data.toolExplanation,
|
|
51419
51440
|
parameters: segment.data.parameters
|
|
51420
51441
|
});
|
|
51421
51442
|
hasIncompleteState = true;
|
|
@@ -51572,6 +51593,7 @@ function applyToolExecutionToMessages(prev, segment) {
|
|
|
51572
51593
|
data: {
|
|
51573
51594
|
...toolData,
|
|
51574
51595
|
toolTitle: toolData.toolTitle ?? seg.data.toolTitle,
|
|
51596
|
+
toolExplanation: toolData.toolExplanation ?? seg.data.toolExplanation,
|
|
51575
51597
|
parameters: toolData.parameters || seg.data.parameters
|
|
51576
51598
|
}
|
|
51577
51599
|
};
|
|
@@ -53000,7 +53022,7 @@ function useChatDialogManager({
|
|
|
53000
53022
|
|
|
53001
53023
|
// src/components/chat/embeddable-chat.tsx
|
|
53002
53024
|
init_next_navigation();
|
|
53003
|
-
import { Fragment as
|
|
53025
|
+
import { Fragment as Fragment82, jsx as jsx364, jsxs as jsxs290 } from "react/jsx-runtime";
|
|
53004
53026
|
var DRAWER_DEFAULT_WIDTH_RATIO = 0.5;
|
|
53005
53027
|
var DRAWER_WIDTH_KEY = "mingo-chat-width-v3";
|
|
53006
53028
|
var DRAWER_DEFAULT_WIDTH_PX = 750;
|
|
@@ -53172,7 +53194,7 @@ function SourceChip({
|
|
|
53172
53194
|
);
|
|
53173
53195
|
}
|
|
53174
53196
|
const displayName = src.name || formatRelativePath(src.path);
|
|
53175
|
-
const chipBody = (label) => /* @__PURE__ */ jsxs290(
|
|
53197
|
+
const chipBody = (label) => /* @__PURE__ */ jsxs290(Fragment82, { children: [
|
|
53176
53198
|
icon,
|
|
53177
53199
|
/* @__PURE__ */ jsxs290("span", { className: "truncate max-w-[160px]", children: [
|
|
53178
53200
|
"[",
|
|
@@ -53979,7 +54001,7 @@ function EmbeddableChatInner({
|
|
|
53979
54001
|
// renders in the rail below); the chat block is untouched.
|
|
53980
54002
|
// Back is a full-height leading cell, matching the other
|
|
53981
54003
|
// header cells (not a small inline chevron).
|
|
53982
|
-
/* @__PURE__ */ jsxs290(
|
|
54004
|
+
/* @__PURE__ */ jsxs290(Fragment82, { children: [
|
|
53983
54005
|
/* @__PURE__ */ jsx364(
|
|
53984
54006
|
ChatHeaderIconButton,
|
|
53985
54007
|
{
|
|
@@ -53996,7 +54018,7 @@ function EmbeddableChatInner({
|
|
|
53996
54018
|
// search + archive controls. When search is open the
|
|
53997
54019
|
// inline field takes over the title area in place
|
|
53998
54020
|
// (Figma 116:51217) and the magnifier toggle is hidden.
|
|
53999
|
-
/* @__PURE__ */ jsxs290(
|
|
54021
|
+
/* @__PURE__ */ jsxs290(Fragment82, { children: [
|
|
54000
54022
|
railSearchOpen && mingoCaps.onSearchChange ? /* @__PURE__ */ jsx364(
|
|
54001
54023
|
ChatHeaderSearchField,
|
|
54002
54024
|
{
|
|
@@ -54004,7 +54026,7 @@ function EmbeddableChatInner({
|
|
|
54004
54026
|
onSearchChange: mingoCaps.onSearchChange,
|
|
54005
54027
|
onCollapse: () => setRailSearchOpen(false)
|
|
54006
54028
|
}
|
|
54007
|
-
) : /* @__PURE__ */ jsxs290(
|
|
54029
|
+
) : /* @__PURE__ */ jsxs290(Fragment82, { children: [
|
|
54008
54030
|
/* @__PURE__ */ jsx364("div", { className: "flex min-w-0 flex-1 items-center px-[var(--spacing-system-mf)]", children: /* @__PURE__ */ jsx364("span", { className: "min-w-0 flex-1 truncate text-h3 text-ods-text-primary", children: "Current Chats" }) }),
|
|
54009
54031
|
mingoCaps.onSearchChange && /* @__PURE__ */ jsx364(
|
|
54010
54032
|
ChatHeaderIconButton,
|
|
@@ -54150,7 +54172,7 @@ function EmbeddableChatInner({
|
|
|
54150
54172
|
onRetry: reloadDialogs
|
|
54151
54173
|
}
|
|
54152
54174
|
)
|
|
54153
|
-
) : /* @__PURE__ */ jsxs290(
|
|
54175
|
+
) : /* @__PURE__ */ jsxs290(Fragment82, { children: [
|
|
54154
54176
|
/* @__PURE__ */ jsx364(
|
|
54155
54177
|
"div",
|
|
54156
54178
|
{
|
|
@@ -54396,7 +54418,7 @@ function EmbeddableChatInner({
|
|
|
54396
54418
|
]
|
|
54397
54419
|
}
|
|
54398
54420
|
) }) });
|
|
54399
|
-
return /* @__PURE__ */ jsxs290(
|
|
54421
|
+
return /* @__PURE__ */ jsxs290(Fragment82, { children: [
|
|
54400
54422
|
showInternalTrigger && !shellLess && /* @__PURE__ */ jsx364(
|
|
54401
54423
|
"div",
|
|
54402
54424
|
{
|
|
@@ -55416,4 +55438,4 @@ export {
|
|
|
55416
55438
|
LogsList,
|
|
55417
55439
|
assets
|
|
55418
55440
|
};
|
|
55419
|
-
//# sourceMappingURL=chunk-
|
|
55441
|
+
//# sourceMappingURL=chunk-BBUEY73L.js.map
|